PageSourceSearch

https://www.snap.com/hls.min.1.5.18.js

js snap.com collected 2026-10-01 08:28:04 UTC 860,934 bytes, 22,189 lines download raw bytes

1!(function t(e) {
2  var r, i;
3  (r = this),
4    (i = function () {
5      'use strict';
6      function r(t, e) {
7        var r = Object.keys(t);
8        if (Object.getOwnPropertySymbols) {
9          var i = Object.getOwnPropertySymbols(t);
10          e &&
11            (i = i.filter(function (e) {
12              return Object.getOwnPropertyDescriptor(t, e).enumerable;
13            })),
14            r.push.apply(r, i);
15        }
16        return r;
17      }
18      function i(t) {
19        for (var e = 1; e < arguments.length; e++) {
20          var i = null != arguments[e] ? arguments[e] : {};
21          e % 2
22            ? r(Object(i), !0).forEach(function (e) {
23                var r, a, s;
24                (r = t),
25                  (a = e),
26                  (s = i[e]),
27                  (a = n(a)) in r
28                    ? Object.defineProperty(r, a, {
29                        value: s,
30                        enumerable: !0,
31                        configurable: !0,
32                        writable: !0,
33                      })
34                    : (r[a] = s);
35              })
36            : Object.getOwnPropertyDescriptors
37            ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(i))
38            : r(Object(i)).forEach(function (e) {
39                Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(i, e));
40              });
41        }
42        return t;
43      }
44      function n(t) {
45        var e = (function (t, e) {
46          if ('object' != typeof t || !t) return t;
47          var r = t[Symbol.toPrimitive];
48          if (void 0 !== r) {
49            var i = r.call(t, e || 'default');
50            if ('object' != typeof i) return i;
51            throw new TypeError('@@toPrimitive must return a primitive value.');
52          }
53          return ('string' === e ? String : Number)(t);
54        })(t, 'string');
55        return 'symbol' == typeof e ? e : String(e);
56      }
57      function a(t, e) {
58        for (var r = 0; r < e.length; r++) {
59          var i = e[r];
60          (i.enumerable = i.enumerable || !1),
61            (i.configurable = !0),
62            'value' in i && (i.writable = !0),
63            Object.defineProperty(t, n(i.key), i);
64        }
65      }
66      function s(t, e, r) {
67        return (
68          e && a(t.prototype, e),
69          r && a(t, r),
70          Object.defineProperty(t, 'prototype', { writable: !1 }),
71          t
72        );
73      }
74      function o() {
75        return (
76          (o = Object.assign
77            ? Object.assign.bind()
78            : function (t) {
79                for (var e = 1; e < arguments.length; e++) {
80                  var r = arguments[e];
81                  for (var i in r) Object.prototype.hasOwnProperty.call(r, i) && (t[i] = r[i]);
82                }
83                return t;
84              }),
85          o.apply(this, arguments)
86        );
87      }
88      function l(t, e) {
89        (t.prototype = Object.create(e.prototype)), (t.prototype.constructor = t), h(t, e);
90      }
91      function u(t) {
92        return (
93          (u = Object.setPrototypeOf
94            ? Object.getPrototypeOf.bind()
95            : function (t) {
96                return t.__proto__ || Object.getPrototypeOf(t);
97              }),
98          u(t)
99        );
100      }
101      function h(t, e) {
102        return (
103          (h = Object.setPrototypeOf
104            ? Object.setPrototypeOf.bind()
105            : function (t, e) {
106                return (t.__proto__ = e), t;
107              }),
108          h(t, e)
109        );
110      }
111      function d(t, e, r) {
112        return (
113          (d = (function () {
114            if ('undefined' == typeof Reflect || !Reflect.construct) return !1;
115            if (Reflect.construct.sham) return !1;
116            if ('function' == typeof Proxy) return !0;
117            try {
118              return (
119                Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0
120              );
121            } catch (t) {
122              return !1;
123            }
124          })()
125            ? Reflect.construct.bind()
126            : function (t, e, r) {
127                var i = [null];
128                i.push.apply(i, e);
129                var n = new (Function.bind.apply(t, i))();
130                return r && h(n, r.prototype), n;
131              }),
132          d.apply(null, arguments)
133        );
134      }
135      function c(t) {
136        var e = 'function' == typeof Map ? new Map() : void 0;
137        return (
138          (c = function (t) {
139            if (
140              null === t ||
141              !(function (t) {
142                try {
143                  return -1 !== Function.toString.call(t).indexOf('[native code]');
144                } catch (e) {
145                  return 'function' == typeof t;
146                }
147              })(t)
148            )
149              return t;
150            if ('function' != typeof t)
151              throw new TypeError('Super expression must either be null or a function');
152            if (void 0 !== e) {
153              if (e.has(t)) return e.get(t);
154              e.set(t, r);
155            }
156            function r() {
157              return d(t, arguments, u(this).constructor);
158            }
159            return (
160              (r.prototype = Object.create(t.prototype, {
161                constructor: { value: r, enumerable: !1, writable: !0, configurable: !0 },
162              })),
163              h(r, t)
164            );
165          }),
166          c(t)
167        );
168      }
169      function f(t, e) {
170        (null == e || e > t.length) && (e = t.length);
171        for (var r = 0, i = new Array(e); r < e; r++) i[r] = t[r];
172        return i;
173      }
174      function g(t, e) {
175        var r = ('undefined' != typeof Symbol && t[Symbol.iterator]) || t['@@iterator'];
176        if (r) return (r = r.call(t)).next.bind(r);
177        if (
178          Array.isArray(t) ||
179          (r = (function (t, e) {
180            if (t) {
181              if ('string' == typeof t) return f(t, e);
182              var r = Object.prototype.toString.call(t).slice(8, -1);
183              return (
184                'Object' === r && t.constructor && (r = t.constructor.name),
185                'Map' === r || 'Set' === r
186                  ? Array.from(t)
187                  : 'Arguments' === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)
188                  ? f(t, e)
189                  : void 0
190              );
191            }
192          })(t)) ||
193          (e && t && 'number' == typeof t.length)
194        ) {
195          r && (t = r);
196          var i = 0;
197          return function () {
198            return i >= t.length ? { done: !0 } : { done: !1, value: t[i++] };
199          };
200        }
201        throw new TypeError(
202          'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
203        );
204      }
205      function v(t) {
206        return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, 'default')
207          ? t.default
208          : t;
209      }
210      var m = { exports: {} };
211      !(function (t, e) {
212        var r, i, n, a, s;
213        (r =
214          /^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/),
215          (i = /^(?=([^\/?#]*))\1([^]*)$/),
216          (n = /(?:\/|^)\.(?=\/)/g),
217          (a = /(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g),
218          (s = {
219            buildAbsoluteURL: function (t, e, r) {
220              if (((r = r || {}), (t = t.trim()), !(e = e.trim()))) {
221                if (!r.alwaysNormalize) return t;
222                var n = s.parseURL(t);
223                if (!n) throw new Error('Error trying to parse base URL.');
224                return (n.path = s.normalizePath(n.path)), s.buildURLFromParts(n);
225              }
226              var a = s.parseURL(e);
227              if (!a) throw new Error('Error trying to parse relative URL.');
228              if (a.scheme)
229                return r.alwaysNormalize
230                  ? ((a.path = s.normalizePath(a.path)), s.buildURLFromParts(a))
231                  : e;
232              var o = s.parseURL(t);
233              if (!o) throw new Error('Error trying to parse base URL.');
234              if (!o.netLoc && o.path && '/' !== o.path[0]) {
235                var l = i.exec(o.path);
236                (o.netLoc = l[1]), (o.path = l[2]);
237              }
238              o.netLoc && !o.path && (o.path = '/');
239              var u = {
240                scheme: o.scheme,
241                netLoc: a.netLoc,
242                path: null,
243                params: a.params,
244                query: a.query,
245                fragment: a.fragment,
246              };
247              if (!a.netLoc && ((u.netLoc = o.netLoc), '/' !== a.path[0]))
248                if (a.path) {
249                  var h = o.path,
250                    d = h.substring(0, h.lastIndexOf('/') + 1) + a.path;
251                  u.path = s.normalizePath(d);
252                } else
253                  (u.path = o.path),
254                    a.params || ((u.params = o.params), a.query || (u.query = o.query));
255              return (
256                null === u.path && (u.path = r.alwaysNormalize ? s.normalizePath(a.path) : a.path),
257                s.buildURLFromParts(u)
258              );
259            },
260            parseURL: function (t) {
261              var e = r.exec(t);
262              return e
263                ? {
264                    scheme: e[1] || '',
265                    netLoc: e[2] || '',
266                    path: e[3] || '',
267                    params: e[4] || '',
268                    query: e[5] || '',
269                    fragment: e[6] || '',
270                  }
271                : null;
272            },
273            normalizePath: function (t) {
274              for (
275                t = t.split('').reverse().join('').replace(n, '');
276                t.length !== (t = t.replace(a, '')).length;
277
278              );
279              return t.split('').reverse().join('');
280            },
281            buildURLFromParts: function (t) {
282              return t.scheme + t.netLoc + t.path + t.params + t.query + t.fragment;
283            },
284          }),
285          (t.exports = s);
286      })(m);
287      var p = m.exports,
288        y =
289          Number.isFinite ||
290          function (t) {
291            return 'number' == typeof t && isFinite(t);
292          },
293        E =
294          Number.isSafeInteger ||
295          function (t) {
296            return 'number' == typeof t && Math.abs(t) <= T;
297          },
298        T = Number.MAX_SAFE_INTEGER || 9007199254740991,
299        S = (function (t) {
300          return (
301            (t.MEDIA_ATTACHING = 'hlsMediaAttaching'),
302            (t.MEDIA_ATTACHED = 'hlsMediaAttached'),
303            (t.MEDIA_DETACHING = 'hlsMediaDetaching'),
304            (t.MEDIA_DETACHED = 'hlsMediaDetached'),
305            (t.BUFFER_RESET = 'hlsBufferReset'),
306            (t.BUFFER_CODECS = 'hlsBufferCodecs'),
307            (t.BUFFER_CREATED = 'hlsBufferCreated'),
308            (t.BUFFER_APPENDING = 'hlsBufferAppending'),
309            (t.BUFFER_APPENDED = 'hlsBufferAppended'),
310            (t.BUFFER_EOS = 'hlsBufferEos'),
311            (t.BUFFER_FLUSHING = 'hlsBufferFlushing'),
312            (t.BUFFER_FLUSHED = 'hlsBufferFlushed'),
313            (t.MANIFEST_LOADING = 'hlsManifestLoading'),
314            (t.MANIFEST_LOADED = 'hlsManifestLoaded'),
315            (t.MANIFEST_PARSED = 'hlsManifestParsed'),
316            (t.LEVEL_SWITCHING = 'hlsLevelSwitching'),
317            (t.LEVEL_SWITCHED = 'hlsLevelSwitched'),
318            (t.LEVEL_LOADING = 'hlsLevelLoading'),
319            (t.LEVEL_LOADED = 'hlsLevelLoaded'),
320            (t.LEVEL_UPDATED = 'hlsLevelUpdated'),
321            (t.LEVEL_PTS_UPDATED = 'hlsLevelPtsUpdated'),
322            (t.LEVELS_UPDATED = 'hlsLevelsUpdated'),
323            (t.AUDIO_TRACKS_UPDATED = 'hlsAudioTracksUpdated'),
324            (t.AUDIO_TRACK_SWITCHING = 'hlsAudioTrackSwitching'),
325            (t.AUDIO_TRACK_SWITCHED = 'hlsAudioTrackSwitched'),
326            (t.AUDIO_TRACK_LOADING = 'hlsAudioTrackLoading'),
327            (t.AUDIO_TRACK_LOADED = 'hlsAudioTrackLoaded'),
328            (t.SUBTITLE_TRACKS_UPDATED = 'hlsSubtitleTracksUpdated'),
329            (t.SUBTITLE_TRACKS_CLEARED = 'hlsSubtitleTracksCleared'),
330            (t.SUBTITLE_TRACK_SWITCH = 'hlsSubtitleTrackSwitch'),
331            (t.SUBTITLE_TRACK_LOADING = 'hlsSubtitleTrackLoading'),
332            (t.SUBTITLE_TRACK_LOADED = 'hlsSubtitleTrackLoaded'),
333            (t.SUBTITLE_FRAG_PROCESSED = 'hlsSubtitleFragProcessed'),
334            (t.CUES_PARSED = 'hlsCuesParsed'),
335            (t.NON_NATIVE_TEXT_TRACKS_FOUND = 'hlsNonNativeTextTracksFound'),
336            (t.INIT_PTS_FOUND = 'hlsInitPtsFound'),
337            (t.FRAG_LOADING = 'hlsFragLoading'),
338            (t.FRAG_LOAD_EMERGENCY_ABORTED = 'hlsFragLoadEmergencyAborted'),
339            (t.FRAG_LOADED = 'hlsFragLoaded'),
340            (t.FRAG_DECRYPTED = 'hlsFragDecrypted'),
341            (t.FRAG_PARSING_INIT_SEGMENT = 'hlsFragParsingInitSegment'),
342            (t.FRAG_PARSING_USERDATA = 'hlsFragParsingUserdata'),
343            (t.FRAG_PARSING_METADATA = 'hlsFragParsingMetadata'),
344            (t.FRAG_PARSED = 'hlsFragParsed'),
345            (t.FRAG_BUFFERED = 'hlsFragBuffered'),
346            (t.FRAG_CHANGED = 'hlsFragChanged'),
347            (t.FPS_DROP = 'hlsFpsDrop'),
348            (t.FPS_DROP_LEVEL_CAPPING = 'hlsFpsDropLevelCapping'),
349            (t.MAX_AUTO_LEVEL_UPDATED = 'hlsMaxAutoLevelUpdated'),
350            (t.ERROR = 'hlsError'),
351            (t.DESTROYING = 'hlsDestroying'),
352            (t.KEY_LOADING = 'hlsKeyLoading'),
353            (t.KEY_LOADED = 'hlsKeyLoaded'),
354            (t.LIVE_BACK_BUFFER_REACHED = 'hlsLiveBackBufferReached'),
355            (t.BACK_BUFFER_REACHED = 'hlsBackBufferReached'),
356            (t.STEERING_MANIFEST_LOADED = 'hlsSteeringManifestLoaded'),
357            t
358          );
359        })({}),
360        L = (function (t) {
361          return (
362            (t.NETWORK_ERROR = 'networkError'),
363            (t.MEDIA_ERROR = 'mediaError'),
364            (t.KEY_SYSTEM_ERROR = 'keySystemError'),
365            (t.MUX_ERROR = 'muxError'),
366            (t.OTHER_ERROR = 'otherError'),
367            t
368          );
369        })({}),
370        A = (function (t) {
371          return (
372            (t.KEY_SYSTEM_NO_KEYS = 'keySystemNoKeys'),
373            (t.KEY_SYSTEM_NO_ACCESS = 'keySystemNoAccess'),
374            (t.KEY_SYSTEM_NO_SESSION = 'keySystemNoSession'),
375            (t.KEY_SYSTEM_NO_CONFIGURED_LICENSE = 'keySystemNoConfiguredLicense'),
376            (t.KEY_SYSTEM_LICENSE_REQUEST_FAILED = 'keySystemLicenseRequestFailed'),
377            (t.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED =
378              'keySystemServerCertificateRequestFailed'),
379            (t.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED =
380              'keySystemServerCertificateUpdateFailed'),
381            (t.KEY_SYSTEM_SESSION_UPDATE_FAILED = 'keySystemSessionUpdateFailed'),
382            (t.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED = 'keySystemStatusOutputRestricted'),
383            (t.KEY_SYSTEM_STATUS_INTERNAL_ERROR = 'keySystemStatusInternalError'),
384            (t.MANIFEST_LOAD_ERROR = 'manifestLoadError'),
385            (t.MANIFEST_LOAD_TIMEOUT = 'manifestLoadTimeOut'),
386            (t.MANIFEST_PARSING_ERROR = 'manifestParsingError'),
387            (t.MANIFEST_INCOMPATIBLE_CODECS_ERROR = 'manifestIncompatibleCodecsError'),
388            (t.LEVEL_EMPTY_ERROR = 'levelEmptyError'),
389            (t.LEVEL_LOAD_ERROR = 'levelLoadError'),
390            (t.LEVEL_LOAD_TIMEOUT = 'levelLoadTimeOut'),
391            (t.LEVEL_PARSING_ERROR = 'levelParsingError'),
392            (t.LEVEL_SWITCH_ERROR = 'levelSwitchError'),
393            (t.AUDIO_TRACK_LOAD_ERROR = 'audioTrackLoadError'),
394            (t.AUDIO_TRACK_LOAD_TIMEOUT = 'audioTrackLoadTimeOut'),
395            (t.SUBTITLE_LOAD_ERROR = 'subtitleTrackLoadError'),
396            (t.SUBTITLE_TRACK_LOAD_TIMEOUT = 'subtitleTrackLoadTimeOut'),
397            (t.FRAG_LOAD_ERROR = 'fragLoadError'),
398            (t.FRAG_LOAD_TIMEOUT = 'fragLoadTimeOut'),
399            (t.FRAG_DECRYPT_ERROR = 'fragDecryptError'),
400            (t.FRAG_PARSING_ERROR = 'fragParsingError'),
401            (t.FRAG_GAP = 'fragGap'),
402            (t.REMUX_ALLOC_ERROR = 'remuxAllocError'),
403            (t.KEY_LOAD_ERROR = 'keyLoadError'),
404            (t.KEY_LOAD_TIMEOUT = 'keyLoadTimeOut'),
405            (t.BUFFER_ADD_CODEC_ERROR = 'bufferAddCodecError'),
406            (t.BUFFER_INCOMPATIBLE_CODECS_ERROR = 'bufferIncompatibleCodecsError'),
407            (t.BUFFER_APPEND_ERROR = 'bufferAppendError'),
408            (t.BUFFER_APPENDING_ERROR = 'bufferAppendingError'),
409            (t.BUFFER_STALLED_ERROR = 'bufferStalledError'),
410            (t.BUFFER_FULL_ERROR = 'bufferFullError'),
411            (t.BUFFER_SEEK_OVER_HOLE = 'bufferSeekOverHole'),
412            (t.BUFFER_NUDGE_ON_STALL = 'bufferNudgeOnStall'),
413            (t.INTERNAL_EXCEPTION = 'internalException'),
414            (t.INTERNAL_ABORTED = 'aborted'),
415            (t.UNKNOWN = 'unknown'),
416            t
417          );
418        })({}),
419        R = function () {},
420        b = { trace: R, debug: R, log: R, warn: R, info: R, error: R },
421        k = b;
422      function D(t) {
423        for (var e = arguments.length, r = new Array(e > 1 ? e - 1 : 0), i = 1; i < e; i++)
424          r[i - 1] = arguments[i];
425        r.forEach(function (e) {
426          k[e] = t[e]
427            ? t[e].bind(t)
428            : (function (t) {
429                var e = self.console[t];
430                return e ? e.bind(self.console, '[' + t + '] >') : R;
431              })(e);
432        });
433      }
434      function I(t, e) {
435        if (('object' == typeof console && !0 === t) || 'object' == typeof t) {
436          D(t, 'debug', 'log', 'info', 'warn', 'error');
437          try {
438            k.log('Debug logs enabled for "' + e + '" in hls.js version 1.5.18');
439          } catch (t) {
440            k = b;
441          }
442        } else k = b;
443      }
444      var w = k,
445        C = /^(\d+)x(\d+)$/,
446        _ = /(.+?)=(".*?"|.*?)(?:,|$)/g,
447        x = (function () {
448          function t(e) {
449            'string' == typeof e && (e = t.parseAttrList(e)), o(this, e);
450          }
451          var e = t.prototype;
452          return (
453            (e.decimalInteger = function (t) {
454              var e = parseInt(this[t], 10);
455              return e > Number.MAX_SAFE_INTEGER ? 1 / 0 : e;
456            }),
457            (e.hexadecimalInteger = function (t) {
458              if (this[t]) {
459                var e = (this[t] || '0x').slice(2);
460                e = (1 & e.length ? '0' : '') + e;
461                for (var r = new Uint8Array(e.length / 2), i = 0; i < e.length / 2; i++)
462                  r[i] = parseInt(e.slice(2 * i, 2 * i + 2), 16);
463                return r;
464              }
465              return null;
466            }),
467            (e.hexadecimalIntegerAsNumber = function (t) {
468              var e = parseInt(this[t], 16);
469              return e > Number.MAX_SAFE_INTEGER ? 1 / 0 : e;
470            }),
471            (e.decimalFloatingPoint = function (t) {
472              return parseFloat(this[t]);
473            }),
474            (e.optionalFloat = function (t, e) {
475              var r = this[t];
476              return r ? parseFloat(r) : e;
477            }),
478            (e.enumeratedString = function (t) {
479              return this[t];
480            }),
481            (e.bool = function (t) {
482              return 'YES' === this[t];
483            }),
484            (e.decimalResolution = function (t) {
485              var e = C.exec(this[t]);
486              if (null !== e) return { width: parseInt(e[1], 10), height: parseInt(e[2], 10) };
487            }),
488            (t.parseAttrList = function (t) {
489              var e,
490                r = {};
491              for (_.lastIndex = 0; null !== (e = _.exec(t)); ) {
492                var i = e[2];
493                0 === i.indexOf('"') && i.lastIndexOf('"') === i.length - 1 && (i = i.slice(1, -1)),
494                  (r[e[1].trim()] = i);
495              }
496              return r;
497            }),
498            s(t, [
499              {
500                key: 'clientAttrs',
501                get: function () {
502                  return Object.keys(this).filter(function (t) {
503                    return 'X-' === t.substring(0, 2);
504                  });
505                },
506              },
507            ]),
508            t
509          );
510        })();
511      function P(t) {
512        return 'SCTE35-OUT' === t || 'SCTE35-IN' === t;
513      }
514      var F = (function () {
515          function t(t, e) {
516            if (
517              ((this.attr = void 0),
518              (this._startDate = void 0),
519              (this._endDate = void 0),
520              (this._badValueForSameId = void 0),
521              e)
522            ) {
523              var r = e.attr;
524              for (var i in r)
525                if (Object.prototype.hasOwnProperty.call(t, i) && t[i] !== r[i]) {
526                  w.warn(
527                    'DATERANGE tag attribute: "' +
528                      i +
529                      '" does not match for tags with ID: "' +
530                      t.ID +
531                      '"'
532                  ),
533                    (this._badValueForSameId = i);
534                  break;
535                }
536              t = o(new x({}), r, t);
537            }
538            if (
539              ((this.attr = t),
540              (this._startDate = new Date(t['START-DATE'])),
541              'END-DATE' in this.attr)
542            ) {
543              var n = new Date(this.attr['END-DATE']);
544              y(n.getTime()) && (this._endDate = n);
545            }
546          }
547          return (
548            s(t, [
549              {
550                key: 'id',
551                get: function () {
552                  return this.attr.ID;
553                },
554              },
555              {
556                key: 'class',
557                get: function () {
558                  return this.attr.CLASS;
559                },
560              },
561              {
562                key: 'startDate',
563                get: function () {
564                  return this._startDate;
565                },
566              },
567              {
568                key: 'endDate',
569                get: function () {
570                  if (this._endDate) return this._endDate;
571                  var t = this.duration;
572                  return null !== t ? new Date(this._startDate.getTime() + 1e3 * t) : null;
573                },
574              },
575              {
576                key: 'duration',
577                get: function () {
578                  if ('DURATION' in this.attr) {
579                    var t = this.attr.decimalFloatingPoint('DURATION');
580                    if (y(t)) return t;
581                  } else if (this._endDate)
582                    return (this._endDate.getTime() - this._startDate.getTime()) / 1e3;
583                  return null;
584                },
585              },
586              {
587                key: 'plannedDuration',
588                get: function () {
589                  return 'PLANNED-DURATION' in this.attr
590                    ? this.attr.decimalFloatingPoint('PLANNED-DURATION')
591                    : null;
592                },
593              },
594              {
595                key: 'endOnNext',
596                get: function () {
597                  return this.attr.bool('END-ON-NEXT');
598                },
599              },
600              {
601                key: 'isValid',
602                get: function () {
603                  return (
604                    !!this.id &&
605                    !this._badValueForSameId &&
606                    y(this.startDate.getTime()) &&
607                    (null === this.duration || this.duration >= 0) &&
608                    (!this.endOnNext || !!this.class)
609                  );
610                },
611              },
612            ]),
613            t
614          );
615        })(),
616        M = function () {
617          (this.aborted = !1),
618            (this.loaded = 0),
619            (this.retry = 0),
620            (this.total = 0),
621            (this.chunkCount = 0),
622            (this.bwEstimate = 0),
623            (this.loading = { start: 0, first: 0, end: 0 }),
624            (this.parsing = { start: 0, end: 0 }),
625            (this.buffering = { start: 0, first: 0, end: 0 });
626        },
627        O = 'audio',
628        N = 'video',
629        U = 'audiovideo',
630        B = (function () {
631          function t(t) {
632            var e;
633            (this._byteRange = null),
634              (this._url = null),
635              (this.baseurl = void 0),
636              (this.relurl = void 0),
637              (this.elementaryStreams = (((e = {})[O] = null), (e[N] = null), (e[U] = null), e)),
638              (this.baseurl = t);
639          }
640          return (
641            (t.prototype.setByteRange = function (t, e) {
642              var r,
643                i = t.split('@', 2);
644              (r =
645                1 === i.length ? (null == e ? void 0 : e.byteRangeEndOffset) || 0 : parseInt(i[1])),
646                (this._byteRange = [r, parseInt(i[0]) + r]);
647            }),
648            s(t, [
649              {
650                key: 'byteRange',
651                get: function () {
652                  return this._byteRange ? this._byteRange : [];
653                },
654              },
655              {
656                key: 'byteRangeStartOffset',
657                get: function () {
658                  return this.byteRange[0];
659                },
660              },
661              {
662                key: 'byteRangeEndOffset',
663                get: function () {
664                  return this.byteRange[1];
665                },
666              },
667              {
668                key: 'url',
669                get: function () {
670                  return (
671                    !this._url &&
672                      this.baseurl &&
673                      this.relurl &&
674                      (this._url = p.buildAbsoluteURL(this.baseurl, this.relurl, {
675                        alwaysNormalize: !0,
676                      })),
677                    this._url || ''
678                  );
679                },
680                set: function (t) {
681                  this._url = t;
682                },
683              },
684            ]),
685            t
686          );
687        })(),
688        G = (function (t) {
689          function e(e, r) {
690            var i;
691            return (
692              ((i = t.call(this, r) || this)._decryptdata = null),
693              (i.rawProgramDateTime = null),
694              (i.programDateTime = null),
695              (i.tagList = []),
696              (i.duration = 0),
697              (i.sn = 0),
698              (i.levelkeys = void 0),
699              (i.type = void 0),
700              (i.loader = null),
701              (i.keyLoader = null),
702              (i.level = -1),
703              (i.cc = 0),
704              (i.startPTS = void 0),
705              (i.endPTS = void 0),
706              (i.startDTS = void 0),
707              (i.endDTS = void 0),
708              (i.start = 0),
709              (i.deltaPTS = void 0),
710              (i.maxStartPTS = void 0),
711              (i.minEndPTS = void 0),
712              (i.stats = new M()),
713              (i.data = void 0),
714              (i.bitrateTest = !1),
715              (i.title = null),
716              (i.initSegment = null),
717              (i.endList = void 0),
718              (i.gap = void 0),
719              (i.urlId = 0),
720              (i.type = e),
721              i
722            );
723          }
724          l(e, t);
725          var r = e.prototype;
726          return (
727            (r.setKeyFormat = function (t) {
728              if (this.levelkeys) {
729                var e = this.levelkeys[t];
730                e && !this._decryptdata && (this._decryptdata = e.getDecryptData(this.sn));
731              }
732            }),
733            (r.abortRequests = function () {
734              var t, e;
735              null == (t = this.loader) || t.abort(), null == (e = this.keyLoader) || e.abort();
736            }),
737            (r.setElementaryStreamInfo = function (t, e, r, i, n, a) {
738              void 0 === a && (a = !1);
739              var s = this.elementaryStreams,
740                o = s[t];
741              o
742                ? ((o.startPTS = Math.min(o.startPTS, e)),
743                  (o.endPTS = Math.max(o.endPTS, r)),
744                  (o.startDTS = Math.min(o.startDTS, i)),
745                  (o.endDTS = Math.max(o.endDTS, n)))
746                : (s[t] = { startPTS: e, endPTS: r, startDTS: i, endDTS: n, partial: a });
747            }),
748            (r.clearElementaryStreamInfo = function () {
749              var t = this.elementaryStreams;
750              (t[O] = null), (t[N] = null), (t[U] = null);
751            }),
752            s(e, [
753              {
754                key: 'decryptdata',
755                get: function () {
756                  if (!this.levelkeys && !this._decryptdata) return null;
757                  if (!this._decryptdata && this.levelkeys && !this.levelkeys.NONE) {
758                    var t = this.levelkeys.identity;
759                    if (t) this._decryptdata = t.getDecryptData(this.sn);
760                    else {
761                      var e = Object.keys(this.levelkeys);
762                      if (1 === e.length)
763                        return (this._decryptdata = this.levelkeys[e[0]].getDecryptData(this.sn));
764                    }
765                  }
766                  return this._decryptdata;
767                },
768              },
769              {
770                key: 'end',
771                get: function () {
772                  return this.start + this.duration;
773                },
774              },
775              {
776                key: 'endProgramDateTime',
777                get: function () {
778                  if (null === this.programDateTime) return null;
779                  if (!y(this.programDateTime)) return null;
780                  var t = y(this.duration) ? this.duration : 0;
781                  return this.programDateTime + 1e3 * t;
782                },
783              },
784              {
785                key: 'encrypted',
786                get: function () {
787                  var t;
788                  if (null != (t = this._decryptdata) && t.encrypted) return !0;
789                  if (this.levelkeys) {
790                    var e = Object.keys(this.levelkeys),
791                      r = e.length;
792                    if (r > 1 || (1 === r && this.levelkeys[e[0]].encrypted)) return !0;
793                  }
794                  return !1;
795                },
796              },
797            ]),
798            e
799          );
800        })(B),
801        K = (function (t) {
802          function e(e, r, i, n, a) {
803            var s;
804            ((s = t.call(this, i) || this).fragOffset = 0),
805              (s.duration = 0),
806              (s.gap = !1),
807              (s.independent = !1),
808              (s.relurl = void 0),
809              (s.fragment = void 0),
810              (s.index = void 0),
811              (s.stats = new M()),
812              (s.duration = e.decimalFloatingPoint('DURATION')),
813              (s.gap = e.bool('GAP')),
814              (s.independent = e.bool('INDEPENDENT')),
815              (s.relurl = e.enumeratedString('URI')),
816              (s.fragment = r),
817              (s.index = n);
818            var o = e.enumeratedString('BYTERANGE');
819            return o && s.setByteRange(o, a), a && (s.fragOffset = a.fragOffset + a.duration), s;
820          }
821          return (
822            l(e, t),
823            s(e, [
824              {
825                key: 'start',
826                get: function () {
827                  return this.fragment.start + this.fragOffset;
828                },
829              },
830              {
831                key: 'end',
832                get: function () {
833                  return this.start + this.duration;
834                },
835              },
836              {
837                key: 'loaded',
838                get: function () {
839                  var t = this.elementaryStreams;
840                  return !!(t.audio || t.video || t.audiovideo);
841                },
842              },
843            ]),
844            e
845          );
846        })(B),
847        H = (function () {
848          function t(t) {
849            (this.PTSKnown = !1),
850              (this.alignedSliding = !1),
851              (this.averagetargetduration = void 0),
852              (this.endCC = 0),
853              (this.endSN = 0),
854              (this.fragments = void 0),
855              (this.fragmentHint = void 0),
856              (this.partList = null),
857              (this.dateRanges = void 0),
858              (this.live = !0),
859              (this.ageHeader = 0),
860              (this.advancedDateTime = void 0),
861              (this.updated = !0),
862              (this.advanced = !0),
863              (this.availabilityDelay = void 0),
864              (this.misses = 0),
865              (this.startCC = 0),
866              (this.startSN = 0),
867              (this.startTimeOffset = null),
868              (this.targetduration = 0),
869              (this.totalduration = 0),
870              (this.type = null),
871              (this.url = void 0),
872              (this.m3u8 = ''),
873              (this.version = null),
874              (this.canBlockReload = !1),
875              (this.canSkipUntil = 0),
876              (this.canSkipDateRanges = !1),
877              (this.skippedSegments = 0),
878              (this.recentlyRemovedDateranges = void 0),
879              (this.partHoldBack = 0),
880              (this.holdBack = 0),
881              (this.partTarget = 0),
882              (this.preloadHint = void 0),
883              (this.renditionReports = void 0),
884              (this.tuneInGoal = 0),
885              (this.deltaUpdateFailed = void 0),
886              (this.driftStartTime = 0),
887              (this.driftEndTime = 0),
888              (this.driftStart = 0),
889              (this.driftEnd = 0),
890              (this.encryptedFragments = void 0),
891              (this.playlistParsingError = null),
892              (this.variableList = null),
893              (this.hasVariableRefs = !1),
894              (this.fragments = []),
895              (this.encryptedFragments = []),
896              (this.dateRanges = {}),
897              (this.url = t);
898          }
899          return (
900            (t.prototype.reloaded = function (t) {
901              if (!t) return (this.advanced = !0), void (this.updated = !0);
902              var e = this.lastPartSn - t.lastPartSn,
903                r = this.lastPartIndex - t.lastPartIndex;
904              (this.updated = this.endSN !== t.endSN || !!r || !!e || !this.live),
905                (this.advanced = this.endSN > t.endSN || e > 0 || (0 === e && r > 0)),
906                this.updated || this.advanced
907                  ? (this.misses = Math.floor(0.6 * t.misses))
908                  : (this.misses = t.misses + 1),
909                (this.availabilityDelay = t.availabilityDelay);
910            }),
911            s(t, [
912              {
913                key: 'hasProgramDateTime',
914                get: function () {
915                  return (
916                    !!this.fragments.length &&
917                    y(this.fragments[this.fragments.length - 1].programDateTime)
918                  );
919                },
920              },
921              {
922                key: 'levelTargetDuration',
923                get: function () {
924                  return this.averagetargetduration || this.targetduration || 10;
925                },
926              },
927              {
928                key: 'drift',
929                get: function () {
930                  var t = this.driftEndTime - this.driftStartTime;
931                  return t > 0 ? (1e3 * (this.driftEnd - this.driftStart)) / t : 1;
932                },
933              },
934              {
935                key: 'edge',
936                get: function () {
937                  return this.partEnd || this.fragmentEnd;
938                },
939              },
940              {
941                key: 'partEnd',
942                get: function () {
943                  var t;
944                  return null != (t = this.partList) && t.length
945                    ? this.partList[this.partList.length - 1].end
946                    : this.fragmentEnd;
947                },
948              },
949              {
950                key: 'fragmentEnd',
951                get: function () {
952                  var t;
953                  return null != (t = this.fragments) && t.length
954                    ? this.fragments[this.fragments.length - 1].end
955                    : 0;
956                },
957              },
958              {
959                key: 'age',
960                get: function () {
961                  return this.advancedDateTime
962                    ? Math.max(Date.now() - this.advancedDateTime, 0) / 1e3
963                    : 0;
964                },
965              },
966              {
967                key: 'lastPartIndex',
968                get: function () {
969                  var t;
970                  return null != (t = this.partList) && t.length
971                    ? this.partList[this.partList.length - 1].index
972                    : -1;
973                },
974              },
975              {
976                key: 'lastPartSn',
977                get: function () {
978                  var t;
979                  return null != (t = this.partList) && t.length
980                    ? this.partList[this.partList.length - 1].fragment.sn
981                    : this.endSN;
982                },
983              },
984            ]),
985            t
986          );
987        })();
988      function V(t) {
989        return Uint8Array.from(atob(t), function (t) {
990          return t.charCodeAt(0);
991        });
992      }
993      function Y(t) {
994        var e,
995          r,
996          i = t.split(':'),
997          n = null;
998        if ('data' === i[0] && 2 === i.length) {
999          var a = i[1].split(';'),
1000            s = a[a.length - 1].split(',');
1001          if (2 === s.length) {
1002            var o = 'base64' === s[0],
1003              l = s[1];
1004            o
1005              ? (a.splice(-1, 1), (n = V(l)))
1006              : ((e = W(l).subarray(0, 16)),
1007                (r = new Uint8Array(16)).set(e, 16 - e.length),
1008                (n = r));
1009          }
1010        }
1011        return n;
1012      }
1013      function W(t) {
1014        return Uint8Array.from(unescape(encodeURIComponent(t)), function (t) {
1015          return t.charCodeAt(0);
1016        });
1017      }
1018      var j = 'undefined' != typeof self ? self : void 0,
1019        q = {
1020          CLEARKEY: 'org.w3.clearkey',
1021          FAIRPLAY: 'com.apple.fps',
1022          PLAYREADY: 'com.microsoft.playready',
1023          WIDEVINE: 'com.widevine.alpha',
1024        },
1025        X = 'org.w3.clearkey',
1026        z = 'com.apple.streamingkeydelivery',
1027        Q = 'com.microsoft.playready',
1028        J = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed';
1029      function $(t) {
1030        switch (t) {
1031          case z:
1032            return q.FAIRPLAY;
1033          case Q:
1034            return q.PLAYREADY;
1035          case J:
1036            return q.WIDEVINE;
1037          case X:
1038            return q.CLEARKEY;
1039        }
1040      }
1041      var Z = '1077efecc0b24d02ace33c1e52e2fb4b',
1042        tt = 'e2719d58a985b3c9781ab030af78d30e',
1043        et = '9a04f07998404286ab92e65be0885f95',
1044        rt = 'edef8ba979d64acea3c827dcd51d21ed';
1045      function it(t) {
1046        return t === rt
1047          ? q.WIDEVINE
1048          : t === et
1049          ? q.PLAYREADY
1050          : t === Z || t === tt
1051          ? q.CLEARKEY
1052          : void 0;
1053      }
1054      function nt(t) {
1055        switch (t) {
1056          case q.FAIRPLAY:
1057            return z;
1058          case q.PLAYREADY:
1059            return Q;
1060          case q.WIDEVINE:
1061            return J;
1062          case q.CLEARKEY:
1063            return X;
1064        }
1065      }
1066      function at(t) {
1067        var e = t.drmSystems,
1068          r = t.widevineLicenseUrl,
1069          i = e
1070            ? [q.FAIRPLAY, q.WIDEVINE, q.PLAYREADY, q.CLEARKEY].filter(function (t) {
1071                return !!e[t];
1072              })
1073            : [];
1074        return !i[q.WIDEVINE] && r && i.push(q.WIDEVINE), i;
1075      }
1076      var st,
1077        ot =
1078          null != j && null != (st = j.navigator) && st.requestMediaKeySystemAccess
1079            ? self.navigator.requestMediaKeySystemAccess.bind(self.navigator)
1080            : null;
1081      function lt(t, e, r) {
1082        return Uint8Array.prototype.slice
1083          ? t.slice(e, r)
1084          : new Uint8Array(Array.prototype.slice.call(t, e, r));
1085      }
1086      var ut,
1087        ht = function (t, e) {
1088          return (
1089            e + 10 <= t.length &&
1090            73 === t[e] &&
1091            68 === t[e + 1] &&
1092            51 === t[e + 2] &&
1093            t[e + 3] < 255 &&
1094            t[e + 4] < 255 &&
1095            t[e + 6] < 128 &&
1096            t[e + 7] < 128 &&
1097            t[e + 8] < 128 &&
1098            t[e + 9] < 128
1099          );
1100        },
1101        dt = function (t, e) {
1102          return (
1103            e + 10 <= t.length &&
1104            51 === t[e] &&
1105            68 === t[e + 1] &&
1106            73 === t[e + 2] &&
1107            t[e + 3] < 255 &&
1108            t[e + 4] < 255 &&
1109            t[e + 6] < 128 &&
1110            t[e + 7] < 128 &&
1111            t[e + 8] < 128 &&
1112            t[e + 9] < 128
1113          );
1114        },
1115        ct = function (t, e) {
1116          for (var r = e, i = 0; ht(t, e); )
1117            (i += 10), (i += ft(t, e + 6)), dt(t, e + 10) && (i += 10), (e += i);
1118          if (i > 0) return t.subarray(r, r + i);
1119        },
1120        ft = function (t, e) {
1121          var r = 0;
1122          return (
1123            (r = (127 & t[e]) << 21),
1124            (r |= (127 & t[e + 1]) << 14),
1125            (r |= (127 & t[e + 2]) << 7),
1126            (r |= 127 & t[e + 3])
1127          );
1128        },
1129        gt = function (t, e) {
1130          return ht(t, e) && ft(t, e + 6) + 10 <= t.length - e;
1131        },
1132        vt = function (t) {
1133          for (var e = yt(t), r = 0; r < e.length; r++) {
1134            var i = e[r];
1135            if (mt(i)) return At(i);
1136          }
1137        },
1138        mt = function (t) {
1139          return t && 'PRIV' === t.key && 'com.apple.streaming.transportStreamTimestamp' === t.info;
1140        },
1141        pt = function (t) {
1142          var e = String.fromCharCode(t[0], t[1], t[2], t[3]),
1143            r = ft(t, 4);
1144          return { type: e, size: r, data: t.subarray(10, 10 + r) };
1145        },
1146        yt = function (t) {
1147          for (var e = 0, r = []; ht(t, e); ) {
1148            for (var i = ft(t, e + 6), n = (e += 10) + i; e + 8 < n; ) {
1149              var a = pt(t.subarray(e)),
1150                s = Et(a);
1151              s && r.push(s), (e += a.size + 10);
1152            }
1153            dt(t, e) && (e += 10);
1154          }
1155          return r;
1156        },
1157        Et = function (t) {
1158          return 'PRIV' === t.type ? Tt(t) : 'W' === t.type[0] ? Lt(t) : St(t);
1159        },
1160        Tt = function (t) {
1161          if (!(t.size < 2)) {
1162            var e = Rt(t.data, !0),
1163              r = new Uint8Array(t.data.subarray(e.length + 1));
1164            return { key: t.type, info: e, data: r.buffer };
1165          }
1166        },
1167        St = function (t) {
1168          if (!(t.size < 2)) {
1169            if ('TXXX' === t.type) {
1170              var e = 1,
1171                r = Rt(t.data.subarray(e), !0);
1172              e += r.length + 1;
1173              var i = Rt(t.data.subarray(e));
1174              return { key: t.type, info: r, data: i };
1175            }
1176            var n = Rt(t.data.subarray(1));
1177            return { key: t.type, data: n };
1178          }
1179        },
1180        Lt = function (t) {
1181          if ('WXXX' === t.type) {
1182            if (t.size < 2) return;
1183            var e = 1,
1184              r = Rt(t.data.subarray(e), !0);
1185            e += r.length + 1;
1186            var i = Rt(t.data.subarray(e));
1187            return { key: t.type, info: r, data: i };
1188          }
1189          var n = Rt(t.data);
1190          return { key: t.type, data: n };
1191        },
1192        At = function (t) {
1193          if (8 === t.data.byteLength) {
1194            var e = new Uint8Array(t.data),
1195              r = 1 & e[3],
1196              i = (e[4] << 23) + (e[5] << 15) + (e[6] << 7) + e[7];
1197            return (i /= 45), r && (i += 47721858.84), Math.round(i);
1198          }
1199        },
1200        Rt = function (t, e) {
1201          void 0 === e && (e = !1);
1202          var r = bt();
1203          if (r) {
1204            var i = r.decode(t);
1205            if (e) {
1206              var n = i.indexOf('\0');
1207              return -1 !== n ? i.substring(0, n) : i;
1208            }
1209            return i.replace(/\0/g, '');
1210          }
1211          for (var a, s, o, l = t.length, u = '', h = 0; h < l; ) {
1212            if (0 === (a = t[h++]) && e) return u;
1213            if (0 !== a && 3 !== a)
1214              switch (a >> 4) {
1215                case 0:
1216                case 1:
1217                case 2:
1218                case 3:
1219                case 4:
1220                case 5:
1221                case 6:
1222                case 7:
1223                  u += String.fromCharCode(a);
1224                  break;
1225                case 12:
1226                case 13:
1227                  (s = t[h++]), (u += String.fromCharCode(((31 & a) << 6) | (63 & s)));
1228                  break;
1229                case 14:
1230                  (s = t[h++]),
1231                    (o = t[h++]),
1232                    (u += String.fromCharCode(
1233                      ((15 & a) << 12) | ((63 & s) << 6) | ((63 & o) << 0)
1234                    ));
1235              }
1236          }
1237          return u;
1238        };
1239      function bt() {
1240        if (!navigator.userAgent.includes('PlayStation 4'))
1241          return ut || void 0 === self.TextDecoder || (ut = new self.TextDecoder('utf-8')), ut;
1242      }
1243      var kt = {
1244          hexDump: function (t) {
1245            for (var e = '', r = 0; r < t.length; r++) {
1246              var i = t[r].toString(16);
1247              i.length < 2 && (i = '0' + i), (e += i);
1248            }
1249            return e;
1250          },
1251        },
1252        Dt = Math.pow(2, 32) - 1,
1253        It = [].push,
1254        wt = { video: 1, audio: 2, id3: 3, text: 4 };
1255      function Ct(t) {
1256        return String.fromCharCode.apply(null, t);
1257      }
1258      function _t(t, e) {
1259        var r = (t[e] << 8) | t[e + 1];
1260        return r < 0 ? 65536 + r : r;
1261      }
1262      function xt(t, e) {
1263        var r = Ft(t, e);
1264        return r < 0 ? 4294967296 + r : r;
1265      }
1266      function Pt(t, e) {
1267        var r = xt(t, e);
1268        return (r *= Math.pow(2, 32)), (r += xt(t, e + 4));
1269      }
1270      function Ft(t, e) {
1271        return (t[e] << 24) | (t[e + 1] << 16) | (t[e + 2] << 8) | t[e + 3];
1272      }
1273      function Mt(t, e, r) {
1274        (t[e] = r >> 24),
1275          (t[e + 1] = (r >> 16) & 255),
1276          (t[e + 2] = (r >> 8) & 255),
1277          (t[e + 3] = 255 & r);
1278      }
1279      function Ot(t, e) {
1280        var r = [];
1281        if (!e.length) return r;
1282        for (var i = t.byteLength, n = 0; n < i; ) {
1283          var a = xt(t, n),
1284            s = a > 1 ? n + a : i;
1285          if (Ct(t.subarray(n + 4, n + 8)) === e[0])
1286            if (1 === e.length) r.push(t.subarray(n + 8, s));
1287            else {
1288              var o = Ot(t.subarray(n + 8, s), e.slice(1));
1289              o.length && It.apply(r, o);
1290            }
1291          n = s;
1292        }
1293        return r;
1294      }
1295      function Nt(t) {
1296        var e = [],
1297          r = t[0],
1298          i = 8,
1299          n = xt(t, i);
1300        i += 4;
1301        var a = 0,
1302          s = 0;
1303        0 === r
1304          ? ((a = xt(t, i)), (s = xt(t, i + 4)), (i += 8))
1305          : ((a = Pt(t, i)), (s = Pt(t, i + 8)), (i += 16)),
1306          (i += 2);
1307        var o = t.length + s,
1308          l = _t(t, i);
1309        i += 2;
1310        for (var u = 0; u < l; u++) {
1311          var h = i,
1312            d = xt(t, h);
1313          h += 4;
1314          var c = 2147483647 & d;
1315          if (1 == (2147483648 & d) >>> 31)
1316            return w.warn('SIDX has hierarchical references (not supported)'), null;
1317          var f = xt(t, h);
1318          (h += 4),
1319            e.push({
1320              referenceSize: c,
1321              subsegmentDuration: f,
1322              info: { duration: f / n, start: o, end: o + c - 1 },
1323            }),
1324            (o += c),
1325            (i = h += 4);
1326        }
1327        return {
1328          earliestPresentationTime: a,
1329          timescale: n,
1330          version: r,
1331          referencesCount: l,
1332          references: e,
1333        };
1334      }
1335      function Ut(t) {
1336        for (var e = [], r = Ot(t, ['moov', 'trak']), n = 0; n < r.length; n++) {
1337          var a = r[n],
1338            s = Ot(a, ['tkhd'])[0];
1339          if (s) {
1340            var o = s[0],
1341              l = xt(s, 0 === o ? 12 : 20),
1342              u = Ot(a, ['mdia', 'mdhd'])[0];
1343            if (u) {
1344              var h = xt(u, 0 === (o = u[0]) ? 12 : 20),
1345                d = Ot(a, ['mdia', 'hdlr'])[0];
1346              if (d) {
1347                var c = Ct(d.subarray(8, 12)),
1348                  f = { soun: O, vide: N }[c];
1349                if (f) {
1350                  var g = Bt(Ot(a, ['mdia', 'minf', 'stbl', 'stsd'])[0]);
1351                  (e[l] = { timescale: h, type: f }), (e[f] = i({ timescale: h, id: l }, g));
1352                }
1353              }
1354            }
1355          }
1356        }
1357        return (
1358          Ot(t, ['moov', 'mvex', 'trex']).forEach(function (t) {
1359            var r = xt(t, 4),
1360              i = e[r];
1361            i && (i.default = { duration: xt(t, 12), flags: xt(t, 20) });
1362          }),
1363          e
1364        );
1365      }
1366      function Bt(t) {
1367        var e = t.subarray(8),
1368          r = e.subarray(86),
1369          i = Ct(e.subarray(4, 8)),
1370          n = i,
1371          a = 'enca' === i || 'encv' === i;
1372        if (a) {
1373          var s = Ot(e, [i])[0];
1374          Ot(s.subarray('enca' === i ? 28 : 78), ['sinf']).forEach(function (t) {
1375            var e = Ot(t, ['schm'])[0];
1376            if (e) {
1377              var r = Ct(e.subarray(4, 8));
1378              if ('cbcs' === r || 'cenc' === r) {
1379                var i = Ot(t, ['frma'])[0];
1380                i && (n = Ct(i));
1381              }
1382            }
1383          });
1384        }
1385        switch (n) {
1386          case 'avc1':
1387          case 'avc2':
1388          case 'avc3':
1389          case 'avc4':
1390            var o = Ot(r, ['avcC'])[0];
1391            n += '.' + Kt(o[1]) + Kt(o[2]) + Kt(o[3]);
1392            break;
1393          case 'mp4a':
1394            var l = Ot(e, [i])[0],
1395              u = Ot(l.subarray(28), ['esds'])[0];
1396            if (u && u.length > 12) {
1397              var h = 4;
1398              if (3 !== u[h++]) break;
1399              (h = Gt(u, h)), (h += 2);
1400              var d = u[h++];
1401              if ((128 & d && (h += 2), 64 & d && (h += u[h++]), 4 !== u[h++])) break;
1402              h = Gt(u, h);
1403              var c = u[h++];
1404              if (64 !== c) break;
1405              if (((n += '.' + Kt(c)), (h += 12), 5 !== u[h++])) break;
1406              h = Gt(u, h);
1407              var f = u[h++],
1408                g = (248 & f) >> 3;
1409              31 === g && (g += 1 + ((7 & f) << 3) + ((224 & u[h]) >> 5)), (n += '.' + g);
1410            }
1411            break;
1412          case 'hvc1':
1413          case 'hev1':
1414            var v = Ot(r, ['hvcC'])[0],
1415              m = v[1],
1416              p = ['', 'A', 'B', 'C'][m >> 6],
1417              y = 31 & m,
1418              E = xt(v, 2),
1419              T = (32 & m) >> 5 ? 'H' : 'L',
1420              S = v[12],
1421              L = v.subarray(6, 12);
1422            (n += '.' + p + y), (n += '.' + E.toString(16).toUpperCase()), (n += '.' + T + S);
1423            for (var A = '', R = L.length; R--; ) {
1424              var b = L[R];
1425              (b || A) && (A = '.' + b.toString(16).toUpperCase() + A);
1426            }
1427            n += A;
1428            break;
1429          case 'dvh1':
1430          case 'dvhe':
1431            var k = Ot(r, ['dvcC'])[0],
1432              D = (k[2] >> 1) & 127,
1433              I = ((k[2] << 5) & 32) | ((k[3] >> 3) & 31);
1434            n += '.' + Ht(D) + '.' + Ht(I);
1435            break;
1436          case 'vp09':
1437            var w = Ot(r, ['vpcC'])[0],
1438              C = w[4],
1439              _ = w[5],
1440              x = (w[6] >> 4) & 15;
1441            n += '.' + Ht(C) + '.' + Ht(_) + '.' + Ht(x);
1442            break;
1443          case 'av01':
1444            var P = Ot(r, ['av1C'])[0],
1445              F = P[1] >>> 5,
1446              M = 31 & P[1],
1447              O = P[2] >>> 7 ? 'H' : 'M',
1448              N = (64 & P[2]) >> 6,
1449              U = (32 & P[2]) >> 5,
1450              B = 2 === F && N ? (U ? 12 : 10) : N ? 10 : 8,
1451              G = (16 & P[2]) >> 4,
1452              K = (8 & P[2]) >> 3,
1453              H = (4 & P[2]) >> 2,
1454              V = 3 & P[2];
1455            n +=
1456              '.' +
1457              F +
1458              '.' +
1459              Ht(M) +
1460              O +
1461              '.' +
1462              Ht(B) +
1463              '.' +
1464              G +
1465              '.' +
1466              K +
1467              H +
1468              V +
1469              '.' +
1470              Ht(1) +
1471              '.' +
1472              Ht(1) +
1473              '.' +
1474              Ht(1) +
1475              '.0';
1476        }
1477        return { codec: n, encrypted: a };
1478      }
1479      function Gt(t, e) {
1480        for (var r = e + 5; 128 & t[e++] && e < r; );
1481        return e;
1482      }
1483      function Kt(t) {
1484        return ('0' + t.toString(16).toUpperCase()).slice(-2);
1485      }
1486      function Ht(t) {
1487        return (t < 10 ? '0' : '') + t;
1488      }
1489      function Vt(t) {
1490        var e = Ot(t, ['schm'])[0];
1491        if (e) {
1492          var r = Ct(e.subarray(4, 8));
1493          if ('cbcs' === r || 'cenc' === r) return Ot(t, ['schi', 'tenc'])[0];
1494        }
1495        return null;
1496      }
1497      function Yt(t) {
1498        var e = xt(t, 0),
1499          r = 8;
1500        1 & e && (r += 4), 4 & e && (r += 4);
1501        for (var i = 0, n = xt(t, 4), a = 0; a < n; a++)
1502          256 & e && ((i += xt(t, r)), (r += 4)),
1503            512 & e && (r += 4),
1504            1024 & e && (r += 4),
1505            2048 & e && (r += 4);
1506        return i;
1507      }
1508      function Wt(t, e) {
1509        var r = new Uint8Array(t.length + e.length);
1510        return r.set(t), r.set(e, t.length), r;
1511      }
1512      function jt(t, e) {
1513        var r = [],
1514          i = e.samples,
1515          n = e.timescale,
1516          a = e.id,
1517          s = !1;
1518        return (
1519          Ot(i, ['moof']).map(function (o) {
1520            var l = o.byteOffset - 8;
1521            Ot(o, ['traf']).map(function (o) {
1522              var u = Ot(o, ['tfdt']).map(function (t) {
1523                var e = t[0],
1524                  r = xt(t, 4);
1525                return 1 === e && ((r *= Math.pow(2, 32)), (r += xt(t, 8))), r / n;
1526              })[0];
1527              return (
1528                void 0 !== u && (t = u),
1529                Ot(o, ['tfhd']).map(function (u) {
1530                  var h = xt(u, 4),
1531                    d = 16777215 & xt(u, 0),
1532                    c = 0,
1533                    f = 0 != (16 & d),
1534                    g = 0,
1535                    v = 0 != (32 & d),
1536                    m = 8;
1537                  h === a &&
1538                    (0 != (1 & d) && (m += 8),
1539                    0 != (2 & d) && (m += 4),
1540                    0 != (8 & d) && ((c = xt(u, m)), (m += 4)),
1541                    f && ((g = xt(u, m)), (m += 4)),
1542                    v && (m += 4),
1543                    'video' === e.type &&
1544                      (s = (function (t) {
1545                        if (!t) return !1;
1546                        var e = t.indexOf('.'),
1547                          r = e < 0 ? t : t.substring(0, e);
1548                        return 'hvc1' === r || 'hev1' === r || 'dvh1' === r || 'dvhe' === r;
1549                      })(e.codec)),
1550                    Ot(o, ['trun']).map(function (a) {
1551                      var o = a[0],
1552                        u = 16777215 & xt(a, 0),
1553                        h = 0 != (1 & u),
1554                        d = 0,
1555                        f = 0 != (4 & u),
1556                        v = 0 != (256 & u),
1557                        m = 0,
1558                        p = 0 != (512 & u),
1559                        y = 0,
1560                        E = 0 != (1024 & u),
1561                        T = 0 != (2048 & u),
1562                        S = 0,
1563                        L = xt(a, 4),
1564                        A = 8;
1565                      h && ((d = xt(a, A)), (A += 4)), f && (A += 4);
1566                      for (var R = d + l, b = 0; b < L; b++) {
1567                        if (
1568                          (v ? ((m = xt(a, A)), (A += 4)) : (m = c),
1569                          p ? ((y = xt(a, A)), (A += 4)) : (y = g),
1570                          E && (A += 4),
1571                          T && ((S = 0 === o ? xt(a, A) : Ft(a, A)), (A += 4)),
1572                          e.type === N)
1573                        )
1574                          for (var k = 0; k < y; ) {
1575                            var D = xt(i, R);
1576                            qt(s, i[(R += 4)]) && Xt(i.subarray(R, R + D), s ? 2 : 1, t + S / n, r),
1577                              (R += D),
1578                              (k += D + 4);
1579                          }
1580                        t += m / n;
1581                      }
1582                    }));
1583                })
1584              );
1585            });
1586          }),
1587          r
1588        );
1589      }
1590      function qt(t, e) {
1591        if (t) {
1592          var r = (e >> 1) & 63;
1593          return 39 === r || 40 === r;
1594        }
1595        return 6 == (31 & e);
1596      }
1597      function Xt(t, e, r, i) {
1598        var n = zt(t),
1599          a = 0;
1600        a += e;
1601        for (var s = 0, o = 0, l = 0; a < n.length; ) {
1602          s = 0;
1603          do {
1604            if (a >= n.length) break;
1605            s += l = n[a++];
1606          } while (255 === l);
1607          o = 0;
1608          do {
1609            if (a >= n.length) break;
1610            o += l = n[a++];
1611          } while (255 === l);
1612          var u = n.length - a,
1613            h = a;
1614          if (o < u) a += o;
1615          else if (o > u) {
1616            w.error(
1617              'Malformed SEI payload. ' + o + ' is too small, only ' + u + ' bytes left to parse.'
1618            );
1619            break;
1620          }
1621          if (4 === s) {
1622            if (181 === n[h++]) {
1623              var d = _t(n, h);
1624              if (((h += 2), 49 === d)) {
1625                var c = xt(n, h);
1626                if (((h += 4), 1195456820 === c)) {
1627                  var f = n[h++];
1628                  if (3 === f) {
1629                    var g = n[h++],
1630                      v = 64 & g,
1631                      m = v ? 2 + 3 * (31 & g) : 0,
1632                      p = new Uint8Array(m);
1633                    if (v) {
1634                      p[0] = g;
1635                      for (var y = 1; y < m; y++) p[y] = n[h++];
1636                    }
1637                    i.push({ type: f, payloadType: s, pts: r, bytes: p });
1638                  }
1639                }
1640              }
1641            }
1642          } else if (5 === s && o > 16) {
1643            for (var E = [], T = 0; T < 16; T++) {
1644              var S = n[h++].toString(16);
1645              E.push(1 == S.length ? '0' + S : S),
1646                (3 !== T && 5 !== T && 7 !== T && 9 !== T) || E.push('-');
1647            }
1648            for (var L = o - 16, A = new Uint8Array(L), R = 0; R < L; R++) A[R] = n[h++];
1649            i.push({ payloadType: s, pts: r, uuid: E.join(''), userData: Rt(A), userDataBytes: A });
1650          }
1651        }
1652      }
1653      function zt(t) {
1654        for (var e = t.byteLength, r = [], i = 1; i < e - 2; )
1655          0 === t[i] && 0 === t[i + 1] && 3 === t[i + 2] ? (r.push(i + 2), (i += 2)) : i++;
1656        if (0 === r.length) return t;
1657        var n = e - r.length,
1658          a = new Uint8Array(n),
1659          s = 0;
1660        for (i = 0; i < n; s++, i++) s === r[0] && (s++, r.shift()), (a[i] = t[s]);
1661        return a;
1662      }
1663      function Qt(t, e, r) {
1664        if (16 !== t.byteLength) throw new RangeError('Invalid system id');
1665        var i, n, a;
1666        if (e) {
1667          (i = 1), (n = new Uint8Array(16 * e.length));
1668          for (var s = 0; s < e.length; s++) {
1669            var o = e[s];
1670            if (16 !== o.byteLength) throw new RangeError('Invalid key');
1671            n.set(o, 16 * s);
1672          }
1673        } else (i = 0), (n = new Uint8Array());
1674        i > 0
1675          ? ((a = new Uint8Array(4)),
1676            e.length > 0 && new DataView(a.buffer).setUint32(0, e.length, !1))
1677          : (a = new Uint8Array());
1678        var l = new Uint8Array(4);
1679        return (
1680          r && r.byteLength > 0 && new DataView(l.buffer).setUint32(0, r.byteLength, !1),
1681          (function (t) {
1682            for (var e = arguments.length, r = new Array(e > 1 ? e - 1 : 0), i = 1; i < e; i++)
1683              r[i - 1] = arguments[i];
1684            for (var n = r.length, a = 8, s = n; s--; ) a += r[s].byteLength;
1685            var o = new Uint8Array(a);
1686            for (
1687              o[0] = (a >> 24) & 255,
1688                o[1] = (a >> 16) & 255,
1689                o[2] = (a >> 8) & 255,
1690                o[3] = 255 & a,
1691                o.set(t, 4),
1692                s = 0,
1693                a = 8;
1694              s < n;
1695              s++
1696            )
1697              o.set(r[s], a), (a += r[s].byteLength);
1698            return o;
1699          })([112, 115, 115, 104], new Uint8Array([i, 0, 0, 0]), t, a, n, l, r || new Uint8Array())
1700        );
1701      }
1702      function Jt(t) {
1703        var e = t.getUint32(0),
1704          r = t.byteOffset,
1705          i = t.byteLength;
1706        if (i < e) return { offset: r, size: i };
1707        if (1886614376 !== t.getUint32(4)) return { offset: r, size: e };
1708        var n = t.getUint32(8) >>> 24;
1709        if (0 !== n && 1 !== n) return { offset: r, size: e };
1710        var a = t.buffer,
1711          s = kt.hexDump(new Uint8Array(a, r + 12, 16)),
1712          o = t.getUint32(28),
1713          l = null,
1714          u = null;
1715        if (0 === n) {
1716          if (e - 32 < o || o < 22) return { offset: r, size: e };
1717          u = new Uint8Array(a, r + 32, o);
1718        } else if (1 === n) {
1719          if (!o || i < r + 32 + 16 * o + 16) return { offset: r, size: e };
1720          l = [];
1721          for (var h = 0; h < o; h++) l.push(new Uint8Array(a, r + 32 + 16 * h, 16));
1722        }
1723        return { version: n, systemId: s, kids: l, data: u, offset: r, size: e };
1724      }
1725      var $t = {},
1726        Zt = (function () {
1727          function t(t, e, r, i, n) {
1728            void 0 === i && (i = [1]),
1729              void 0 === n && (n = null),
1730              (this.uri = void 0),
1731              (this.method = void 0),
1732              (this.keyFormat = void 0),
1733              (this.keyFormatVersions = void 0),
1734              (this.encrypted = void 0),
1735              (this.isCommonEncryption = void 0),
1736              (this.iv = null),
1737              (this.key = null),
1738              (this.keyId = null),
1739              (this.pssh = null),
1740              (this.method = t),
1741              (this.uri = e),
1742              (this.keyFormat = r),
1743              (this.keyFormatVersions = i),
1744              (this.iv = n),
1745              (this.encrypted = !!t && 'NONE' !== t),
1746              (this.isCommonEncryption = this.encrypted && 'AES-128' !== t);
1747          }
1748          t.clearKeyUriToKeyIdMap = function () {
1749            $t = {};
1750          };
1751          var e = t.prototype;
1752          return (
1753            (e.isSupported = function () {
1754              if (this.method) {
1755                if ('AES-128' === this.method || 'NONE' === this.method) return !0;
1756                if ('identity' === this.keyFormat) return 'SAMPLE-AES' === this.method;
1757                switch (this.keyFormat) {
1758                  case z:
1759                  case J:
1760                  case Q:
1761                  case X:
1762                    return (
1763                      -1 !==
1764                      ['ISO-23001-7', 'SAMPLE-AES', 'SAMPLE-AES-CENC', 'SAMPLE-AES-CTR'].indexOf(
1765                        this.method
1766                      )
1767                    );
1768                }
1769              }
1770              return !1;
1771            }),
1772            (e.getDecryptData = function (e) {
1773              if (!this.encrypted || !this.uri) return null;
1774              if ('AES-128' === this.method && this.uri && !this.iv) {
1775                'number' != typeof e &&
1776                  ('AES-128' !== this.method ||
1777                    this.iv ||
1778                    w.warn(
1779                      'missing IV for initialization segment with method="' +
1780                        this.method +
1781                        '" - compliance issue'
1782                    ),
1783                  (e = 0));
1784                var r = (function (t) {
1785                  for (var e = new Uint8Array(16), r = 12; r < 16; r++)
1786                    e[r] = (t >> (8 * (15 - r))) & 255;
1787                  return e;
1788                })(e);
1789                return new t(this.method, this.uri, 'identity', this.keyFormatVersions, r);
1790              }
1791              var i = Y(this.uri);
1792              if (i)
1793                switch (this.keyFormat) {
1794                  case J:
1795                    (this.pssh = i),
1796                      i.length >= 22 && (this.keyId = i.subarray(i.length - 22, i.length - 6));
1797                    break;
1798                  case Q:
1799                    var n = new Uint8Array([
1800                      154, 4, 240, 121, 152, 64, 66, 134, 171, 146, 230, 91, 224, 136, 95, 149,
1801                    ]);
1802                    this.pssh = Qt(n, null, i);
1803                    var a = new Uint16Array(i.buffer, i.byteOffset, i.byteLength / 2),
1804                      s = String.fromCharCode.apply(null, Array.from(a)),
1805                      o = s.substring(s.indexOf('<'), s.length),
1806                      l = new DOMParser()
1807                        .parseFromString(o, 'text/xml')
1808                        .getElementsByTagName('KID')[0];
1809                    if (l) {
1810                      var u = l.childNodes[0] ? l.childNodes[0].nodeValue : l.getAttribute('VALUE');
1811                      if (u) {
1812                        var h = V(u).subarray(0, 16);
1813                        !(function (t) {
1814                          var e = function (t, e, r) {
1815                            var i = t[e];
1816                            (t[e] = t[r]), (t[r] = i);
1817                          };
1818                          e(t, 0, 3), e(t, 1, 2), e(t, 4, 5), e(t, 6, 7);
1819                        })(h),
1820                          (this.keyId = h);
1821                      }
1822                    }
1823                    break;
1824                  default:
1825                    var d = i.subarray(0, 16);
1826                    if (16 !== d.length) {
1827                      var c = new Uint8Array(16);
1828                      c.set(d, 16 - d.length), (d = c);
1829                    }
1830                    this.keyId = d;
1831                }
1832              if (!this.keyId || 16 !== this.keyId.byteLength) {
1833                var f = $t[this.uri];
1834                if (!f) {
1835                  var g = Object.keys($t).length % Number.MAX_SAFE_INTEGER;
1836                  (f = new Uint8Array(16)),
1837                    new DataView(f.buffer, 12, 4).setUint32(0, g),
1838                    ($t[this.uri] = f);
1839                }
1840                this.keyId = f;
1841              }
1842              return this;
1843            }),
1844            t
1845          );
1846        })(),
1847        te = /\{\$([a-zA-Z0-9-_]+)\}/g;
1848      function ee(t) {
1849        return te.test(t);
1850      }
1851      function re(t, e, r) {
1852        if (null !== t.variableList || t.hasVariableRefs)
1853          for (var i = r.length; i--; ) {
1854            var n = r[i],
1855              a = e[n];
1856            a && (e[n] = ie(t, a));
1857          }
1858      }
1859      function ie(t, e) {
1860        if (null !== t.variableList || t.hasVariableRefs) {
1861          var r = t.variableList;
1862          return e.replace(te, function (e) {
1863            var i = e.substring(2, e.length - 1),
1864              n = null == r ? void 0 : r[i];
1865            return void 0 === n
1866              ? (t.playlistParsingError ||
1867                  (t.playlistParsingError = new Error(
1868                    'Missing preceding EXT-X-DEFINE tag for Variable Reference: "' + i + '"'
1869                  )),
1870                e)
1871              : n;
1872          });
1873        }
1874        return e;
1875      }
1876      function ne(t, e, r) {
1877        var i,
1878          n,
1879          a = t.variableList;
1880        if ((a || (t.variableList = a = {}), 'QUERYPARAM' in e)) {
1881          i = e.QUERYPARAM;
1882          try {
1883            var s = new self.URL(r).searchParams;
1884            if (!s.has(i))
1885              throw new Error('"' + i + '" does not match any query parameter in URI: "' + r + '"');
1886            n = s.get(i);
1887          } catch (e) {
1888            t.playlistParsingError ||
1889              (t.playlistParsingError = new Error('EXT-X-DEFINE QUERYPARAM: ' + e.message));
1890          }
1891        } else (i = e.NAME), (n = e.VALUE);
1892        i in a
1893          ? t.playlistParsingError ||
1894            (t.playlistParsingError = new Error(
1895              'EXT-X-DEFINE duplicate Variable Name declarations: "' + i + '"'
1896            ))
1897          : (a[i] = n || '');
1898      }
1899      function ae(t, e, r) {
1900        var i = e.IMPORT;
1901        if (r && i in r) {
1902          var n = t.variableList;
1903          n || (t.variableList = n = {}), (n[i] = r[i]);
1904        } else
1905          t.playlistParsingError ||
1906            (t.playlistParsingError = new Error(
1907              'EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "' + i + '"'
1908            ));
1909      }
1910      function se(t) {
1911        if ((void 0 === t && (t = !0), 'undefined' != typeof self))
1912          return (
1913            ((t || !self.MediaSource) && self.ManagedMediaSource) ||
1914            self.MediaSource ||
1915            self.WebKitMediaSource
1916          );
1917      }
1918      var oe = {
1919        audio: {
1920          a3ds: 1,
1921          'ac-3': 0.95,
1922          'ac-4': 1,
1923          alac: 0.9,
1924          alaw: 1,
1925          dra1: 1,
1926          'dts+': 1,
1927          'dts-': 1,
1928          dtsc: 1,
1929          dtse: 1,
1930          dtsh: 1,
1931          'ec-3': 0.9,
1932          enca: 1,
1933          fLaC: 0.9,
1934          flac: 0.9,
1935          FLAC: 0.9,
1936          g719: 1,
1937          g726: 1,
1938          m4ae: 1,
1939          mha1: 1,
1940          mha2: 1,
1941          mhm1: 1,
1942          mhm2: 1,
1943          mlpa: 1,
1944          mp4a: 1,
1945          'raw ': 1,
1946          Opus: 1,
1947          opus: 1,
1948          samr: 1,
1949          sawb: 1,
1950          sawp: 1,
1951          sevc: 1,
1952          sqcp: 1,
1953          ssmv: 1,
1954          twos: 1,
1955          ulaw: 1,
1956        },
1957        video: {
1958          avc1: 1,
1959          avc2: 1,
1960          avc3: 1,
1961          avc4: 1,
1962          avcp: 1,
1963          av01: 0.8,
1964          drac: 1,
1965          dva1: 1,
1966          dvav: 1,
1967          dvh1: 0.7,
1968          dvhe: 0.7,
1969          encv: 1,
1970          hev1: 0.75,
1971          hvc1: 0.75,
1972          mjp2: 1,
1973          mp4v: 1,
1974          mvc1: 1,
1975          mvc2: 1,
1976          mvc3: 1,
1977          mvc4: 1,
1978          resv: 1,
1979          rv60: 1,
1980          s263: 1,
1981          svc1: 1,
1982          svc2: 1,
1983          'vc-1': 1,
1984          vp08: 1,
1985          vp09: 0.9,
1986        },
1987        text: { stpp: 1, wvtt: 1 },
1988      };
1989      function le(t, e, r) {
1990        return (
1991          void 0 === r && (r = !0),
1992          !t.split(',').some(function (t) {
1993            return !ue(t, e, r);
1994          })
1995        );
1996      }
1997      function ue(t, e, r) {
1998        var i;
1999        void 0 === r && (r = !0);
2000        var n = se(r);
2001        return null != (i = null == n ? void 0 : n.isTypeSupported(he(t, e))) && i;
2002      }
2003      function he(t, e) {
2004        return e + '/mp4;codecs="' + t + '"';
2005      }
2006      function de(t) {
2007        if (t) {
2008          var e = t.substring(0, 4);
2009          return oe.video[e];
2010        }
2011        return 2;
2012      }
2013      function ce(t) {
2014        return t.split(',').reduce(function (t, e) {
2015          var r = oe.video[e];
2016          return r ? (2 * r + t) / (t ? 3 : 2) : (oe.audio[e] + t) / (t ? 2 : 1);
2017        }, 0);
2018      }
2019      var fe = {},
2020        ge = /flac|opus/i;
2021      function ve(t, e) {
2022        return (
2023          void 0 === e && (e = !0),
2024          t.replace(ge, function (t) {
2025            return (function (t, e) {
2026              if ((void 0 === e && (e = !0), fe[t])) return fe[t];
2027              for (
2028                var r = { flac: ['flac', 'fLaC', 'FLAC'], opus: ['opus', 'Opus'] }[t], i = 0;
2029                i < r.length;
2030                i++
2031              )
2032                if (ue(r[i], 'audio', e)) return (fe[t] = r[i]), r[i];
2033              return t;
2034            })(t.toLowerCase(), e);
2035          })
2036        );
2037      }
2038      function me(t, e) {
2039        return t && 'mp4a' !== t ? t : e ? e.split(',')[0] : e;
2040      }
2041      var pe =
2042          /#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\r\n]*)[\r\n]+/g,
2043        ye = /#EXT-X-MEDIA:(.*)/g,
2044        Ee = /^#EXT(?:INF|-X-TARGETDURATION):/m,
2045        Te = new RegExp(
2046          [
2047            /#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,
2048            /(?!#) *(\S[^\r\n]*)/.source,
2049            /#EXT-X-BYTERANGE:*(.+)/.source,
2050            /#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,
2051            /#.*/.source,
2052          ].join('|'),
2053          'g'
2054        ),
2055        Se = new RegExp(
2056          [
2057            /#(EXTM3U)/.source,
2058            /#EXT-X-(DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/
2059              .source,
2060            /#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/
2061              .source,
2062            /#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)/.source,
2063            /(#)([^:]*):(.*)/.source,
2064            /(#)(.*)(?:.*)\r?\n?/.source,
2065          ].join('|')
2066        ),
2067        Le = (function () {
2068          function t() {}
2069          return (
2070            (t.findGroup = function (t, e) {
2071              for (var r = 0; r < t.length; r++) {
2072                var i = t[r];
2073                if (i.id === e) return i;
2074              }
2075            }),
2076            (t.resolve = function (t, e) {
2077              return p.buildAbsoluteURL(e, t, { alwaysNormalize: !0 });
2078            }),
2079            (t.isMediaPlaylist = function (t) {
2080              return Ee.test(t);
2081            }),
2082            (t.parseMasterPlaylist = function (e, r) {
2083              var i,
2084                n = {
2085                  contentSteering: null,
2086                  levels: [],
2087                  playlistParsingError: null,
2088                  sessionData: null,
2089                  sessionKeys: null,
2090                  startTimeOffset: null,
2091                  variableList: null,
2092                  hasVariableRefs: ee(e),
2093                },
2094                a = [];
2095              for (pe.lastIndex = 0; null != (i = pe.exec(e)); )
2096                if (i[1]) {
2097                  var s,
2098                    o = new x(i[1]);
2099                  re(n, o, [
2100                    'CODECS',
2101                    'SUPPLEMENTAL-CODECS',
2102                    'ALLOWED-CPC',
2103                    'PATHWAY-ID',
2104                    'STABLE-VARIANT-ID',
2105                    'AUDIO',
2106                    'VIDEO',
2107                    'SUBTITLES',
2108                    'CLOSED-CAPTIONS',
2109                    'NAME',
2110                  ]);
2111                  var l = ie(n, i[2]),
2112                    u = {
2113                      attrs: o,
2114                      bitrate:
2115                        o.decimalInteger('BANDWIDTH') || o.decimalInteger('AVERAGE-BANDWIDTH'),
2116                      name: o.NAME,
2117                      url: t.resolve(l, r),
2118                    },
2119                    h = o.decimalResolution('RESOLUTION');
2120                  h && ((u.width = h.width), (u.height = h.height)),
2121                    be(o.CODECS, u),
2122                    (null != (s = u.unknownCodecs) && s.length) || a.push(u),
2123                    n.levels.push(u);
2124                } else if (i[3]) {
2125                  var d = i[3],
2126                    c = i[4];
2127                  switch (d) {
2128                    case 'SESSION-DATA':
2129                      var f = new x(c);
2130                      re(n, f, ['DATA-ID', 'LANGUAGE', 'VALUE', 'URI']);
2131                      var g = f['DATA-ID'];
2132                      g && (null === n.sessionData && (n.sessionData = {}), (n.sessionData[g] = f));
2133                      break;
2134                    case 'SESSION-KEY':
2135                      var v = Ae(c, r, n);
2136                      v.encrypted && v.isSupported()
2137                        ? (null === n.sessionKeys && (n.sessionKeys = []), n.sessionKeys.push(v))
2138                        : w.warn('[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: "' + c + '"');
2139                      break;
2140                    case 'DEFINE':
2141                      var m = new x(c);
2142                      re(n, m, ['NAME', 'VALUE', 'QUERYPARAM']), ne(n, m, r);
2143                      break;
2144                    case 'CONTENT-STEERING':
2145                      var p = new x(c);
2146                      re(n, p, ['SERVER-URI', 'PATHWAY-ID']),
2147                        (n.contentSteering = {
2148                          uri: t.resolve(p['SERVER-URI'], r),
2149                          pathwayId: p['PATHWAY-ID'] || '.',
2150                        });
2151                      break;
2152                    case 'START':
2153                      n.startTimeOffset = Re(c);
2154                  }
2155                }
2156              var y = a.length > 0 && a.length < n.levels.length;
2157              return (
2158                (n.levels = y ? a : n.levels),
2159                0 === n.levels.length &&
2160                  (n.playlistParsingError = new Error('no levels found in manifest')),
2161                n
2162              );
2163            }),
2164            (t.parseMasterPlaylistMedia = function (e, r, i) {
2165              var n,
2166                a = {},
2167                s = i.levels,
2168                o = {
2169                  AUDIO: s.map(function (t) {
2170                    return { id: t.attrs.AUDIO, audioCodec: t.audioCodec };
2171                  }),
2172                  SUBTITLES: s.map(function (t) {
2173                    return { id: t.attrs.SUBTITLES, textCodec: t.textCodec };
2174                  }),
2175                  'CLOSED-CAPTIONS': [],
2176                },
2177                l = 0;
2178              for (ye.lastIndex = 0; null !== (n = ye.exec(e)); ) {
2179                var u = new x(n[1]),
2180                  h = u.TYPE;
2181                if (h) {
2182                  var d = o[h],
2183                    c = a[h] || [];
2184                  (a[h] = c),
2185                    re(i, u, [
2186                      'URI',
2187                      'GROUP-ID',
2188                      'LANGUAGE',
2189                      'ASSOC-LANGUAGE',
2190                      'STABLE-RENDITION-ID',
2191                      'NAME',
2192                      'INSTREAM-ID',
2193                      'CHARACTERISTICS',
2194                      'CHANNELS',
2195                    ]);
2196                  var f = u.LANGUAGE,
2197                    g = u['ASSOC-LANGUAGE'],
2198                    v = u.CHANNELS,
2199                    m = u.CHARACTERISTICS,
2200                    p = u['INSTREAM-ID'],
2201                    y = {
2202                      attrs: u,
2203                      bitrate: 0,
2204                      id: l++,
2205                      groupId: u['GROUP-ID'] || '',
2206                      name: u.NAME || f || '',
2207                      type: h,
2208                      default: u.bool('DEFAULT'),
2209                      autoselect: u.bool('AUTOSELECT'),
2210                      forced: u.bool('FORCED'),
2211                      lang: f,
2212                      url: u.URI ? t.resolve(u.URI, r) : '',
2213                    };
2214                  if (
2215                    (g && (y.assocLang = g),
2216                    v && (y.channels = v),
2217                    m && (y.characteristics = m),
2218                    p && (y.instreamId = p),
2219                    null != d && d.length)
2220                  ) {
2221                    var E = t.findGroup(d, y.groupId) || d[0];
2222                    ke(y, E, 'audioCodec'), ke(y, E, 'textCodec');
2223                  }
2224                  c.push(y);
2225                }
2226              }
2227              return a;
2228            }),
2229            (t.parseLevelPlaylist = function (t, e, r, i, n, a) {
2230              var s,
2231                l,
2232                u,
2233                h = new H(e),
2234                d = h.fragments,
2235                c = null,
2236                f = 0,
2237                g = 0,
2238                v = 0,
2239                m = 0,
2240                p = null,
2241                E = new G(i, e),
2242                T = -1,
2243                S = !1,
2244                L = null;
2245              for (
2246                Te.lastIndex = 0, h.m3u8 = t, h.hasVariableRefs = ee(t);
2247                null !== (s = Te.exec(t));
2248
2249              ) {
2250                S &&
2251                  ((S = !1),
2252                  ((E = new G(i, e)).start = v),
2253                  (E.sn = f),
2254                  (E.cc = m),
2255                  (E.level = r),
2256                  c &&
2257                    ((E.initSegment = c),
2258                    (E.rawProgramDateTime = c.rawProgramDateTime),
2259                    (c.rawProgramDateTime = null),
2260                    L && (E.setByteRange(L), (L = null))));
2261                var A = s[1];
2262                if (A) {
2263                  E.duration = parseFloat(A);
2264                  var R = (' ' + s[2]).slice(1);
2265                  (E.title = R || null), E.tagList.push(R ? ['INF', A, R] : ['INF', A]);
2266                } else if (s[3]) {
2267                  if (y(E.duration)) {
2268                    (E.start = v),
2269                      u && we(E, u, h),
2270                      (E.sn = f),
2271                      (E.level = r),
2272                      (E.cc = m),
2273                      d.push(E);
2274                    var b = (' ' + s[3]).slice(1);
2275                    (E.relurl = ie(h, b)),
2276                      De(E, p),
2277                      (p = E),
2278                      (v += E.duration),
2279                      f++,
2280                      (g = 0),
2281                      (S = !0);
2282                  }
2283                } else if (s[4]) {
2284                  var k = (' ' + s[4]).slice(1);
2285                  p ? E.setByteRange(k, p) : E.setByteRange(k);
2286                } else if (s[5])
2287                  (E.rawProgramDateTime = (' ' + s[5]).slice(1)),
2288                    E.tagList.push(['PROGRAM-DATE-TIME', E.rawProgramDateTime]),
2289                    -1 === T && (T = d.length);
2290                else {
2291                  if (!(s = s[0].match(Se))) {
2292                    w.warn('No matches on slow regex match for level playlist!');
2293                    continue;
2294                  }
2295                  for (l = 1; l < s.length && void 0 === s[l]; l++);
2296                  var D = (' ' + s[l]).slice(1),
2297                    I = (' ' + s[l + 1]).slice(1),
2298                    C = s[l + 2] ? (' ' + s[l + 2]).slice(1) : '';
2299                  switch (D) {
2300                    case 'PLAYLIST-TYPE':
2301                      h.type = I.toUpperCase();
2302                      break;
2303                    case 'MEDIA-SEQUENCE':
2304                      f = h.startSN = parseInt(I);
2305                      break;
2306                    case 'SKIP':
2307                      var _ = new x(I);
2308                      re(h, _, ['RECENTLY-REMOVED-DATERANGES']);
2309                      var P = _.decimalInteger('SKIPPED-SEGMENTS');
2310                      if (y(P)) {
2311                        h.skippedSegments = P;
2312                        for (var M = P; M--; ) d.unshift(null);
2313                        f += P;
2314                      }
2315                      var O = _.enumeratedString('RECENTLY-REMOVED-DATERANGES');
2316                      O && (h.recentlyRemovedDateranges = O.split('\t'));
2317                      break;
2318                    case 'TARGETDURATION':
2319                      h.targetduration = Math.max(parseInt(I), 1);
2320                      break;
2321                    case 'VERSION':
2322                      h.version = parseInt(I);
2323                      break;
2324                    case 'INDEPENDENT-SEGMENTS':
2325                    case 'EXTM3U':
2326                      break;
2327                    case 'ENDLIST':
2328                      h.live = !1;
2329                      break;
2330                    case '#':
2331                      (I || C) && E.tagList.push(C ? [I, C] : [I]);
2332                      break;
2333                    case 'DISCONTINUITY':
2334                      m++, E.tagList.push(['DIS']);
2335                      break;
2336                    case 'GAP':
2337                      (E.gap = !0), E.tagList.push([D]);
2338                      break;
2339                    case 'BITRATE':
2340                      E.tagList.push([D, I]);
2341                      break;
2342                    case 'DATERANGE':
2343                      var N = new x(I);
2344                      re(h, N, [
2345                        'ID',
2346                        'CLASS',
2347                        'START-DATE',
2348                        'END-DATE',
2349                        'SCTE35-CMD',
2350                        'SCTE35-OUT',
2351                        'SCTE35-IN',
2352                      ]),
2353                        re(h, N, N.clientAttrs);
2354                      var U = new F(N, h.dateRanges[N.ID]);
2355                      U.isValid || h.skippedSegments
2356                        ? (h.dateRanges[U.id] = U)
2357                        : w.warn('Ignoring invalid DATERANGE tag: "' + I + '"'),
2358                        E.tagList.push(['EXT-X-DATERANGE', I]);
2359                      break;
2360                    case 'DEFINE':
2361                      var B = new x(I);
2362                      re(h, B, ['NAME', 'VALUE', 'IMPORT', 'QUERYPARAM']),
2363                        'IMPORT' in B ? ae(h, B, a) : ne(h, B, e);
2364                      break;
2365                    case 'DISCONTINUITY-SEQUENCE':
2366                      m = parseInt(I);
2367                      break;
2368                    case 'KEY':
2369                      var V = Ae(I, e, h);
2370                      if (V.isSupported()) {
2371                        if ('NONE' === V.method) {
2372                          u = void 0;
2373                          break;
2374                        }
2375                        u || (u = {}), u[V.keyFormat] && (u = o({}, u)), (u[V.keyFormat] = V);
2376                      } else w.warn('[Keys] Ignoring invalid EXT-X-KEY tag: "' + I + '"');
2377                      break;
2378                    case 'START':
2379                      h.startTimeOffset = Re(I);
2380                      break;
2381                    case 'MAP':
2382                      var Y = new x(I);
2383                      if ((re(h, Y, ['BYTERANGE', 'URI']), E.duration)) {
2384                        var W = new G(i, e);
2385                        Ie(W, Y, r, u),
2386                          (c = W),
2387                          (E.initSegment = c),
2388                          c.rawProgramDateTime &&
2389                            !E.rawProgramDateTime &&
2390                            (E.rawProgramDateTime = c.rawProgramDateTime);
2391                      } else {
2392                        var j = E.byteRangeEndOffset;
2393                        if (j) {
2394                          var q = E.byteRangeStartOffset;
2395                          L = j - q + '@' + q;
2396                        } else L = null;
2397                        Ie(E, Y, r, u), (c = E), (S = !0);
2398                      }
2399                      break;
2400                    case 'SERVER-CONTROL':
2401                      var X = new x(I);
2402                      (h.canBlockReload = X.bool('CAN-BLOCK-RELOAD')),
2403                        (h.canSkipUntil = X.optionalFloat('CAN-SKIP-UNTIL', 0)),
2404                        (h.canSkipDateRanges = h.canSkipUntil > 0 && X.bool('CAN-SKIP-DATERANGES')),
2405                        (h.partHoldBack = X.optionalFloat('PART-HOLD-BACK', 0)),
2406                        (h.holdBack = X.optionalFloat('HOLD-BACK', 0));
2407                      break;
2408                    case 'PART-INF':
2409                      var z = new x(I);
2410                      h.partTarget = z.decimalFloatingPoint('PART-TARGET');
2411                      break;
2412                    case 'PART':
2413                      var Q = h.partList;
2414                      Q || (Q = h.partList = []);
2415                      var J = g > 0 ? Q[Q.length - 1] : void 0,
2416                        $ = g++,
2417                        Z = new x(I);
2418                      re(h, Z, ['BYTERANGE', 'URI']);
2419                      var tt = new K(Z, E, e, $, J);
2420                      Q.push(tt), (E.duration += tt.duration);
2421                      break;
2422                    case 'PRELOAD-HINT':
2423                      var et = new x(I);
2424                      re(h, et, ['URI']), (h.preloadHint = et);
2425                      break;
2426                    case 'RENDITION-REPORT':
2427                      var rt = new x(I);
2428                      re(h, rt, ['URI']),
2429                        (h.renditionReports = h.renditionReports || []),
2430                        h.renditionReports.push(rt);
2431                      break;
2432                    default:
2433                      w.warn('line parsed but not handled: ' + s);
2434                  }
2435                }
2436              }
2437              p && !p.relurl
2438                ? (d.pop(), (v -= p.duration), h.partList && (h.fragmentHint = p))
2439                : h.partList && (De(E, p), (E.cc = m), (h.fragmentHint = E), u && we(E, u, h));
2440              var it = d.length,
2441                nt = d[0],
2442                at = d[it - 1];
2443              if ((v += h.skippedSegments * h.targetduration) > 0 && it && at) {
2444                h.averagetargetduration = v / it;
2445                var st = at.sn;
2446                (h.endSN = 'initSegment' !== st ? st : 0),
2447                  h.live || (at.endList = !0),
2448                  nt && (h.startCC = nt.cc);
2449              } else (h.endSN = 0), (h.startCC = 0);
2450              return (
2451                h.fragmentHint && (v += h.fragmentHint.duration),
2452                (h.totalduration = v),
2453                (h.endCC = m),
2454                T > 0 &&
2455                  (function (t, e) {
2456                    for (var r = t[e], i = e; i--; ) {
2457                      var n = t[i];
2458                      if (!n) return;
2459                      (n.programDateTime = r.programDateTime - 1e3 * n.duration), (r = n);
2460                    }
2461                  })(d, T),
2462                h
2463              );
2464            }),
2465            t
2466          );
2467        })();
2468      function Ae(t, e, r) {
2469        var i,
2470          n,
2471          a = new x(t);
2472        re(r, a, ['KEYFORMAT', 'KEYFORMATVERSIONS', 'URI', 'IV', 'URI']);
2473        var s = null != (i = a.METHOD) ? i : '',
2474          o = a.URI,
2475          l = a.hexadecimalInteger('IV'),
2476          u = a.KEYFORMATVERSIONS,
2477          h = null != (n = a.KEYFORMAT) ? n : 'identity';
2478        o && a.IV && !l && w.error('Invalid IV: ' + a.IV);
2479        var d = o ? Le.resolve(o, e) : '',
2480          c = (u || '1').split('/').map(Number).filter(Number.isFinite);
2481        return new Zt(s, d, h, c, l);
2482      }
2483      function Re(t) {
2484        var e = new x(t).decimalFloatingPoint('TIME-OFFSET');
2485        return y(e) ? e : null;
2486      }
2487      function be(t, e) {
2488        var r = (t || '').split(/[ ,]+/).filter(function (t) {
2489          return t;
2490        });
2491        ['video', 'audio', 'text'].forEach(function (t) {
2492          var i = r.filter(function (e) {
2493            return (function (t, e) {
2494              var r = oe[e];
2495              return !!r && !!r[t.slice(0, 4)];
2496            })(e, t);
2497          });
2498          i.length &&
2499            ((e[t + 'Codec'] = i.join(',')),
2500            (r = r.filter(function (t) {
2501              return -1 === i.indexOf(t);
2502            })));
2503        }),
2504          (e.unknownCodecs = r);
2505      }
2506      function ke(t, e, r) {
2507        var i = e[r];
2508        i && (t[r] = i);
2509      }
2510      function De(t, e) {
2511        t.rawProgramDateTime
2512          ? (t.programDateTime = Date.parse(t.rawProgramDateTime))
2513          : null != e && e.programDateTime && (t.programDateTime = e.endProgramDateTime),
2514          y(t.programDateTime) || ((t.programDateTime = null), (t.rawProgramDateTime = null));
2515      }
2516      function Ie(t, e, r, i) {
2517        (t.relurl = e.URI),
2518          e.BYTERANGE && t.setByteRange(e.BYTERANGE),
2519          (t.level = r),
2520          (t.sn = 'initSegment'),
2521          i && (t.levelkeys = i),
2522          (t.initSegment = null);
2523      }
2524      function we(t, e, r) {
2525        t.levelkeys = e;
2526        var i = r.encryptedFragments;
2527        (i.length && i[i.length - 1].levelkeys === e) ||
2528          !Object.keys(e).some(function (t) {
2529            return e[t].isCommonEncryption;
2530          }) ||
2531          i.push(t);
2532      }
2533      var Ce = 'manifest',
2534        _e = 'level',
2535        xe = 'audioTrack',
2536        Pe = 'subtitleTrack',
2537        Fe = 'main',
2538        Me = 'audio',
2539        Oe = 'subtitle';
2540      function Ne(t) {
2541        switch (t.type) {
2542          case xe:
2543            return Me;
2544          case Pe:
2545            return Oe;
2546          default:
2547            return Fe;
2548        }
2549      }
2550      function Ue(t, e) {
2551        var r = t.url;
2552        return (void 0 !== r && 0 !== r.indexOf('data:')) || (r = e.url), r;
2553      }
2554      var Be = (function () {
2555        function t(t) {
2556          (this.hls = void 0),
2557            (this.loaders = Object.create(null)),
2558            (this.variableList = null),
2559            (this.hls = t),
2560            this.registerListeners();
2561        }
2562        var e = t.prototype;
2563        return (
2564          (e.startLoad = function (t) {}),
2565          (e.stopLoad = function () {
2566            this.destroyInternalLoaders();
2567          }),
2568          (e.registerListeners = function () {
2569            var t = this.hls;
2570            t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
2571              t.on(S.LEVEL_LOADING, this.onLevelLoading, this),
2572              t.on(S.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this),
2573              t.on(S.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);
2574          }),
2575          (e.unregisterListeners = function () {
2576            var t = this.hls;
2577            t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
2578              t.off(S.LEVEL_LOADING, this.onLevelLoading, this),
2579              t.off(S.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this),
2580              t.off(S.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);
2581          }),
2582          (e.createInternalLoader = function (t) {
2583            var e = this.hls.config,
2584              r = e.pLoader,
2585              i = e.loader,
2586              n = new (r || i)(e);
2587            return (this.loaders[t.type] = n), n;
2588          }),
2589          (e.getInternalLoader = function (t) {
2590            return this.loaders[t.type];
2591          }),
2592          (e.resetInternalLoader = function (t) {
2593            this.loaders[t] && delete this.loaders[t];
2594          }),
2595          (e.destroyInternalLoaders = function () {
2596            for (var t in this.loaders) {
2597              var e = this.loaders[t];
2598              e && e.destroy(), this.resetInternalLoader(t);
2599            }
2600          }),
2601          (e.destroy = function () {
2602            (this.variableList = null), this.unregisterListeners(), this.destroyInternalLoaders();
2603          }),
2604          (e.onManifestLoading = function (t, e) {
2605            var r = e.url;
2606            (this.variableList = null),
2607              this.load({
2608                id: null,
2609                level: 0,
2610                responseType: 'text',
2611                type: Ce,
2612                url: r,
2613                deliveryDirectives: null,
2614              });
2615          }),
2616          (e.onLevelLoading = function (t, e) {
2617            var r = e.id,
2618              i = e.level,
2619              n = e.pathwayId,
2620              a = e.url,
2621              s = e.deliveryDirectives;
2622            this.load({
2623              id: r,
2624              level: i,
2625              pathwayId: n,
2626              responseType: 'text',
2627              type: _e,
2628              url: a,
2629              deliveryDirectives: s,
2630            });
2631          }),
2632          (e.onAudioTrackLoading = function (t, e) {
2633            var r = e.id,
2634              i = e.groupId,
2635              n = e.url,
2636              a = e.deliveryDirectives;
2637            this.load({
2638              id: r,
2639              groupId: i,
2640              level: null,
2641              responseType: 'text',
2642              type: xe,
2643              url: n,
2644              deliveryDirectives: a,
2645            });
2646          }),
2647          (e.onSubtitleTrackLoading = function (t, e) {
2648            var r = e.id,
2649              i = e.groupId,
2650              n = e.url,
2651              a = e.deliveryDirectives;
2652            this.load({
2653              id: r,
2654              groupId: i,
2655              level: null,
2656              responseType: 'text',
2657              type: Pe,
2658              url: n,
2659              deliveryDirectives: a,
2660            });
2661          }),
2662          (e.load = function (t) {
2663            var e,
2664              r,
2665              i,
2666              n = this,
2667              a = this.hls.config,
2668              s = this.getInternalLoader(t);
2669            if (s) {
2670              var l = s.context;
2671              if (l && l.url === t.url && l.level === t.level)
2672                return void w.trace('[playlist-loader]: playlist request ongoing');
2673              w.log('[playlist-loader]: aborting previous loader for type: ' + t.type), s.abort();
2674            }
2675            if (
2676              ((r =
2677                t.type === Ce
2678                  ? a.manifestLoadPolicy.default
2679                  : o({}, a.playlistLoadPolicy.default, { timeoutRetry: null, errorRetry: null })),
2680              (s = this.createInternalLoader(t)),
2681              y(null == (e = t.deliveryDirectives) ? void 0 : e.part) &&
2682                (t.type === _e && null !== t.level
2683                  ? (i = this.hls.levels[t.level].details)
2684                  : t.type === xe && null !== t.id
2685                  ? (i = this.hls.audioTracks[t.id].details)
2686                  : t.type === Pe && null !== t.id && (i = this.hls.subtitleTracks[t.id].details),
2687                i))
2688            ) {
2689              var u = i.partTarget,
2690                h = i.targetduration;
2691              if (u && h) {
2692                var d = 1e3 * Math.max(3 * u, 0.8 * h);
2693                r = o({}, r, {
2694                  maxTimeToFirstByteMs: Math.min(d, r.maxTimeToFirstByteMs),
2695                  maxLoadTimeMs: Math.min(d, r.maxTimeToFirstByteMs),
2696                });
2697              }
2698            }
2699            var c = r.errorRetry || r.timeoutRetry || {},
2700              f = {
2701                loadPolicy: r,
2702                timeout: r.maxLoadTimeMs,
2703                maxRetry: c.maxNumRetry || 0,
2704                retryDelay: c.retryDelayMs || 0,
2705                maxRetryDelay: c.maxRetryDelayMs || 0,
2706              },
2707              g = {
2708                onSuccess: function (t, e, r, i) {
2709                  var a = n.getInternalLoader(r);
2710                  n.resetInternalLoader(r.type);
2711                  var s = t.data;
2712                  0 === s.indexOf('#EXTM3U')
2713                    ? ((e.parsing.start = performance.now()),
2714                      Le.isMediaPlaylist(s)
2715                        ? n.handleTrackOrLevelPlaylist(t, e, r, i || null, a)
2716                        : n.handleMasterPlaylist(t, e, r, i))
2717                    : n.handleManifestParsingError(
2718                        t,
2719                        r,
2720                        new Error('no EXTM3U delimiter'),
2721                        i || null,
2722                        e
2723                      );
2724                },
2725                onError: function (t, e, r, i) {
2726                  n.handleNetworkError(e, r, !1, t, i);
2727                },
2728                onTimeout: function (t, e, r) {
2729                  n.handleNetworkError(e, r, !0, void 0, t);
2730                },
2731              };
2732            s.load(t, f, g);
2733          }),
2734          (e.handleMasterPlaylist = function (t, e, r, i) {
2735            var n = this.hls,
2736              a = t.data,
2737              s = Ue(t, r),
2738              o = Le.parseMasterPlaylist(a, s);
2739            if (o.playlistParsingError)
2740              this.handleManifestParsingError(t, r, o.playlistParsingError, i, e);
2741            else {
2742              var l = o.contentSteering,
2743                u = o.levels,
2744                h = o.sessionData,
2745                d = o.sessionKeys,
2746                c = o.startTimeOffset,
2747                f = o.variableList;
2748              this.variableList = f;
2749              var g = Le.parseMasterPlaylistMedia(a, s, o),
2750                v = g.AUDIO,
2751                m = void 0 === v ? [] : v,
2752                p = g.SUBTITLES,
2753                y = g['CLOSED-CAPTIONS'];
2754              m.length &&
2755                (m.some(function (t) {
2756                  return !t.url;
2757                }) ||
2758                  !u[0].audioCodec ||
2759                  u[0].attrs.AUDIO ||
2760                  (w.log(
2761                    '[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one'
2762                  ),
2763                  m.unshift({
2764                    type: 'main',
2765                    name: 'main',
2766                    groupId: 'main',
2767                    default: !1,
2768                    autoselect: !1,
2769                    forced: !1,
2770                    id: -1,
2771                    attrs: new x({}),
2772                    bitrate: 0,
2773                    url: '',
2774                  }))),
2775                n.trigger(S.MANIFEST_LOADED, {
2776                  levels: u,
2777                  audioTracks: m,
2778                  subtitles: p,
2779                  captions: y,
2780                  contentSteering: l,
2781                  url: s,
2782                  stats: e,
2783                  networkDetails: i,
2784                  sessionData: h,
2785                  sessionKeys: d,
2786                  startTimeOffset: c,
2787                  variableList: f,
2788                });
2789            }
2790          }),
2791          (e.handleTrackOrLevelPlaylist = function (t, e, r, i, n) {
2792            var a = this.hls,
2793              s = r.id,
2794              o = r.level,
2795              l = r.type,
2796              u = Ue(t, r),
2797              h = y(o) ? o : y(s) ? s : 0,
2798              d = Ne(r),
2799              c = Le.parseLevelPlaylist(t.data, u, h, d, 0, this.variableList);
2800            if (l === Ce) {
2801              var f = { attrs: new x({}), bitrate: 0, details: c, name: '', url: u };
2802              a.trigger(S.MANIFEST_LOADED, {
2803                levels: [f],
2804                audioTracks: [],
2805                url: u,
2806                stats: e,
2807                networkDetails: i,
2808                sessionData: null,
2809                sessionKeys: null,
2810                contentSteering: null,
2811                startTimeOffset: null,
2812                variableList: null,
2813              });
2814            }
2815            (e.parsing.end = performance.now()),
2816              (r.levelDetails = c),
2817              this.handlePlaylistLoaded(c, t, e, r, i, n);
2818          }),
2819          (e.handleManifestParsingError = function (t, e, r, i, n) {
2820            this.hls.trigger(S.ERROR, {
2821              type: L.NETWORK_ERROR,
2822              details: A.MANIFEST_PARSING_ERROR,
2823              fatal: e.type === Ce,
2824              url: t.url,
2825              err: r,
2826              error: r,
2827              reason: r.message,
2828              response: t,
2829              context: e,
2830              networkDetails: i,
2831              stats: n,
2832            });
2833          }),
2834          (e.handleNetworkError = function (t, e, r, n, a) {
2835            void 0 === r && (r = !1);
2836            var s =
2837              'A network ' +
2838              (r ? 'timeout' : 'error' + (n ? ' (status ' + n.code + ')' : '')) +
2839              ' occurred while loading ' +
2840              t.type;
2841            t.type === _e
2842              ? (s += ': ' + t.level + ' id: ' + t.id)
2843              : (t.type !== xe && t.type !== Pe) ||
2844                (s += ' id: ' + t.id + ' group-id: "' + t.groupId + '"');
2845            var o = new Error(s);
2846            w.warn('[playlist-loader]: ' + s);
2847            var l = A.UNKNOWN,
2848              u = !1,
2849              h = this.getInternalLoader(t);
2850            switch (t.type) {
2851              case Ce:
2852                (l = r ? A.MANIFEST_LOAD_TIMEOUT : A.MANIFEST_LOAD_ERROR), (u = !0);
2853                break;
2854              case _e:
2855                (l = r ? A.LEVEL_LOAD_TIMEOUT : A.LEVEL_LOAD_ERROR), (u = !1);
2856                break;
2857              case xe:
2858                (l = r ? A.AUDIO_TRACK_LOAD_TIMEOUT : A.AUDIO_TRACK_LOAD_ERROR), (u = !1);
2859                break;
2860              case Pe:
2861                (l = r ? A.SUBTITLE_TRACK_LOAD_TIMEOUT : A.SUBTITLE_LOAD_ERROR), (u = !1);
2862            }
2863            h && this.resetInternalLoader(t.type);
2864            var d = {
2865              type: L.NETWORK_ERROR,
2866              details: l,
2867              fatal: u,
2868              url: t.url,
2869              loader: h,
2870              context: t,
2871              error: o,
2872              networkDetails: e,
2873              stats: a,
2874            };
2875            if (n) {
2876              var c = (null == e ? void 0 : e.url) || t.url;
2877              d.response = i({ url: c, data: void 0 }, n);
2878            }
2879            this.hls.trigger(S.ERROR, d);
2880          }),
2881          (e.handlePlaylistLoaded = function (t, e, r, i, n, a) {
2882            var s = this.hls,
2883              o = i.type,
2884              l = i.level,
2885              u = i.id,
2886              h = i.groupId,
2887              d = i.deliveryDirectives,
2888              c = Ue(e, i),
2889              f = Ne(i),
2890              g = 'number' == typeof i.level && f === Fe ? l : void 0;
2891            if (t.fragments.length) {
2892              t.targetduration || (t.playlistParsingError = new Error('Missing Target Duration'));
2893              var v = t.playlistParsingError;
2894              if (v)
2895                s.trigger(S.ERROR, {
2896                  type: L.NETWORK_ERROR,
2897                  details: A.LEVEL_PARSING_ERROR,
2898                  fatal: !1,
2899                  url: c,
2900                  error: v,
2901                  reason: v.message,
2902                  response: e,
2903                  context: i,
2904                  level: g,
2905                  parent: f,
2906                  networkDetails: n,
2907                  stats: r,
2908                });
2909              else
2910                switch (
2911                  (t.live &&
2912                    a &&
2913                    (a.getCacheAge && (t.ageHeader = a.getCacheAge() || 0),
2914                    (a.getCacheAge && !isNaN(t.ageHeader)) || (t.ageHeader = 0)),
2915                  o)
2916                ) {
2917                  case Ce:
2918                  case _e:
2919                    s.trigger(S.LEVEL_LOADED, {
2920                      details: t,
2921                      level: g || 0,
2922                      id: u || 0,
2923                      stats: r,
2924                      networkDetails: n,
2925                      deliveryDirectives: d,
2926                    });
2927                    break;
2928                  case xe:
2929                    s.trigger(S.AUDIO_TRACK_LOADED, {
2930                      details: t,
2931                      id: u || 0,
2932                      groupId: h || '',
2933                      stats: r,
2934                      networkDetails: n,
2935                      deliveryDirectives: d,
2936                    });
2937                    break;
2938                  case Pe:
2939                    s.trigger(S.SUBTITLE_TRACK_LOADED, {
2940                      details: t,
2941                      id: u || 0,
2942                      groupId: h || '',
2943                      stats: r,
2944                      networkDetails: n,
2945                      deliveryDirectives: d,
2946                    });
2947                }
2948            } else {
2949              var m = new Error('No Segments found in Playlist');
2950              s.trigger(S.ERROR, {
2951                type: L.NETWORK_ERROR,
2952                details: A.LEVEL_EMPTY_ERROR,
2953                fatal: !1,
2954                url: c,
2955                error: m,
2956                reason: m.message,
2957                response: e,
2958                context: i,
2959                level: g,
2960                parent: f,
2961                networkDetails: n,
2962                stats: r,
2963              });
2964            }
2965          }),
2966          t
2967        );
2968      })();
2969      function Ge(t, e) {
2970        var r;
2971        try {
2972          r = new Event('addtrack');
2973        } catch (t) {
2974          (r = document.createEvent('Event')).initEvent('addtrack', !1, !1);
2975        }
2976        (r.track = t), e.dispatchEvent(r);
2977      }
2978      function Ke(t, e) {
2979        var r = t.mode;
2980        if (('disabled' === r && (t.mode = 'hidden'), t.cues && !t.cues.getCueById(e.id)))
2981          try {
2982            if ((t.addCue(e), !t.cues.getCueById(e.id)))
2983              throw new Error('addCue is failed for: ' + e);
2984          } catch (r) {
2985            w.debug('[texttrack-utils]: ' + r);
2986            try {
2987              var i = new self.TextTrackCue(e.startTime, e.endTime, e.text);
2988              (i.id = e.id), t.addCue(i);
2989            } catch (t) {
2990              w.debug('[texttrack-utils]: Legacy TextTrackCue fallback failed: ' + t);
2991            }
2992          }
2993        'disabled' === r && (t.mode = r);
2994      }
2995      function He(t) {
2996        var e = t.mode;
2997        if (('disabled' === e && (t.mode = 'hidden'), t.cues))
2998          for (var r = t.cues.length; r--; ) t.removeCue(t.cues[r]);
2999        'disabled' === e && (t.mode = e);
3000      }
3001      function Ve(t, e, r, i) {
3002        var n = t.mode;
3003        if (('disabled' === n && (t.mode = 'hidden'), t.cues && t.cues.length > 0))
3004          for (
3005            var a = (function (t, e, r) {
3006                var i = [],
3007                  n = (function (t, e) {
3008                    if (e < t[0].startTime) return 0;
3009                    var r = t.length - 1;
3010                    if (e > t[r].endTime) return -1;
3011                    for (var i = 0, n = r; i <= n; ) {
3012                      var a = Math.floor((n + i) / 2);
3013                      if (e < t[a].startTime) n = a - 1;
3014                      else {
3015                        if (!(e > t[a].startTime && i < r)) return a;
3016                        i = a + 1;
3017                      }
3018                    }
3019                    return t[i].startTime - e < e - t[n].startTime ? i : n;
3020                  })(t, e);
3021                if (n > -1)
3022                  for (var a = n, s = t.length; a < s; a++) {
3023                    var o = t[a];
3024                    if (o.startTime >= e && o.endTime <= r) i.push(o);
3025                    else if (o.startTime > r) return i;
3026                  }
3027                return i;
3028              })(t.cues, e, r),
3029              s = 0;
3030            s < a.length;
3031            s++
3032          )
3033            (i && !i(a[s])) || t.removeCue(a[s]);
3034        'disabled' === n && (t.mode = n);
3035      }
3036      function Ye(t) {
3037        for (var e = [], r = 0; r < t.length; r++) {
3038          var i = t[r];
3039          ('subtitles' !== i.kind && 'captions' !== i.kind) || !i.label || e.push(t[r]);
3040        }
3041        return e;
3042      }
3043      var We = 'org.id3',
3044        je = 'com.apple.quicktime.HLS',
3045        qe = 'https://aomedia.org/emsg/ID3';
3046      function Xe() {
3047        if ('undefined' != typeof self) return self.VTTCue || self.TextTrackCue;
3048      }
3049      function ze(t, e, r, n, a) {
3050        var s = new t(e, r, '');
3051        try {
3052          (s.value = n), a && (s.type = a);
3053        } catch (o) {
3054          s = new t(e, r, JSON.stringify(a ? i({ type: a }, n) : n));
3055        }
3056        return s;
3057      }
3058      var Qe = (function () {
3059        var t = Xe();
3060        try {
3061          t && new t(0, Number.POSITIVE_INFINITY, '');
3062        } catch (t) {
3063          return Number.MAX_VALUE;
3064        }
3065        return Number.POSITIVE_INFINITY;
3066      })();
3067      function Je(t, e) {
3068        return t.getTime() / 1e3 - e;
3069      }
3070      var $e = (function () {
3071          function t(t) {
3072            (this.hls = void 0),
3073              (this.id3Track = null),
3074              (this.media = null),
3075              (this.dateRangeCuesAppended = {}),
3076              (this.hls = t),
3077              this._registerListeners();
3078          }
3079          var e = t.prototype;
3080          return (
3081            (e.destroy = function () {
3082              this._unregisterListeners(),
3083                (this.id3Track = null),
3084                (this.media = null),
3085                (this.dateRangeCuesAppended = {}),
3086                (this.hls = null);
3087            }),
3088            (e._registerListeners = function () {
3089              var t = this.hls;
3090              t.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
3091                t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
3092                t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
3093                t.on(S.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this),
3094                t.on(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
3095                t.on(S.LEVEL_UPDATED, this.onLevelUpdated, this);
3096            }),
3097            (e._unregisterListeners = function () {
3098              var t = this.hls;
3099              t.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
3100                t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
3101                t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
3102                t.off(S.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this),
3103                t.off(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
3104                t.off(S.LEVEL_UPDATED, this.onLevelUpdated, this);
3105            }),
3106            (e.onMediaAttached = function (t, e) {
3107              this.media = e.media;
3108            }),
3109            (e.onMediaDetaching = function () {
3110              this.id3Track &&
3111                (He(this.id3Track),
3112                (this.id3Track = null),
3113                (this.media = null),
3114                (this.dateRangeCuesAppended = {}));
3115            }),
3116            (e.onManifestLoading = function () {
3117              this.dateRangeCuesAppended = {};
3118            }),
3119            (e.createTrack = function (t) {
3120              var e = this.getID3Track(t.textTracks);
3121              return (e.mode = 'hidden'), e;
3122            }),
3123            (e.getID3Track = function (t) {
3124              if (this.media) {
3125                for (var e = 0; e < t.length; e++) {
3126                  var r = t[e];
3127                  if ('metadata' === r.kind && 'id3' === r.label) return Ge(r, this.media), r;
3128                }
3129                return this.media.addTextTrack('metadata', 'id3');
3130              }
3131            }),
3132            (e.onFragParsingMetadata = function (t, e) {
3133              if (this.media) {
3134                var r = this.hls.config,
3135                  i = r.enableEmsgMetadataCues,
3136                  n = r.enableID3MetadataCues;
3137                if (i || n) {
3138                  var a = e.samples;
3139                  this.id3Track || (this.id3Track = this.createTrack(this.media));
3140                  var s = Xe();
3141                  if (s)
3142                    for (var o = 0; o < a.length; o++) {
3143                      var l = a[o].type;
3144                      if ((l !== qe || i) && n) {
3145                        var u = yt(a[o].data);
3146                        if (u) {
3147                          var h = a[o].pts,
3148                            d = h + a[o].duration;
3149                          d > Qe && (d = Qe), d - h <= 0 && (d = h + 0.25);
3150                          for (var c = 0; c < u.length; c++) {
3151                            var f = u[c];
3152                            if (!mt(f)) {
3153                              this.updateId3CueEnds(h, l);
3154                              var g = ze(s, h, d, f, l);
3155                              g && this.id3Track.addCue(g);
3156                            }
3157                          }
3158                        }
3159                      }
3160                    }
3161                }
3162              }
3163            }),
3164            (e.updateId3CueEnds = function (t, e) {
3165              var r,
3166                i = null == (r = this.id3Track) ? void 0 : r.cues;
3167              if (i)
3168                for (var n = i.length; n--; ) {
3169                  var a = i[n];
3170                  a.type === e && a.startTime < t && a.endTime === Qe && (a.endTime = t);
3171                }
3172            }),
3173            (e.onBufferFlushing = function (t, e) {
3174              var r = e.startOffset,
3175                i = e.endOffset,
3176                n = e.type,
3177                a = this.id3Track,
3178                s = this.hls;
3179              if (s) {
3180                var o = s.config,
3181                  l = o.enableEmsgMetadataCues,
3182                  u = o.enableID3MetadataCues;
3183                a &&
3184                  (l || u) &&
3185                  Ve(
3186                    a,
3187                    r,
3188                    i,
3189                    'audio' === n
3190                      ? function (t) {
3191                          return t.type === We && u;
3192                        }
3193                      : 'video' === n
3194                      ? function (t) {
3195                          return t.type === qe && l;
3196                        }
3197                      : function (t) {
3198                          return (t.type === We && u) || (t.type === qe && l);
3199                        }
3200                  );
3201              }
3202            }),
3203            (e.onLevelUpdated = function (t, e) {
3204              var r = this,
3205                i = e.details;
3206              if (
3207                this.media &&
3208                i.hasProgramDateTime &&
3209                this.hls.config.enableDateRangeMetadataCues
3210              ) {
3211                var n = this.dateRangeCuesAppended,
3212                  a = this.id3Track,
3213                  s = i.dateRanges,
3214                  o = Object.keys(s);
3215                if (a)
3216                  for (
3217                    var l = Object.keys(n).filter(function (t) {
3218                        return !o.includes(t);
3219                      }),
3220                      u = function () {
3221                        var t = l[h];
3222                        Object.keys(n[t].cues).forEach(function (e) {
3223                          a.removeCue(n[t].cues[e]);
3224                        }),
3225                          delete n[t];
3226                      },
3227                      h = l.length;
3228                    h--;
3229
3230                  )
3231                    u();
3232                var d = i.fragments[i.fragments.length - 1];
3233                if (0 !== o.length && y(null == d ? void 0 : d.programDateTime)) {
3234                  this.id3Track || (this.id3Track = this.createTrack(this.media));
3235                  for (
3236                    var c = d.programDateTime / 1e3 - d.start,
3237                      f = Xe(),
3238                      g = function () {
3239                        var t = o[v],
3240                          e = s[t],
3241                          i = Je(e.startDate, c),
3242                          a = n[t],
3243                          l = (null == a ? void 0 : a.cues) || {},
3244                          u = (null == a ? void 0 : a.durationKnown) || !1,
3245                          h = Qe,
3246                          d = e.endDate;
3247                        if (d) (h = Je(d, c)), (u = !0);
3248                        else if (e.endOnNext && !u) {
3249                          var g = o.reduce(function (t, r) {
3250                            if (r !== e.id) {
3251                              var i = s[r];
3252                              if (
3253                                i.class === e.class &&
3254                                i.startDate > e.startDate &&
3255                                (!t || e.startDate < t.startDate)
3256                              )
3257                                return i;
3258                            }
3259                            return t;
3260                          }, null);
3261                          g && ((h = Je(g.startDate, c)), (u = !0));
3262                        }
3263                        for (var m, p, y = Object.keys(e.attr), E = 0; E < y.length; E++) {
3264                          var T = y[E];
3265                          if (
3266                            'ID' !== (p = T) &&
3267                            'CLASS' !== p &&
3268                            'START-DATE' !== p &&
3269                            'DURATION' !== p &&
3270                            'END-DATE' !== p &&
3271                            'END-ON-NEXT' !== p
3272                          ) {
3273                            var S = l[T];
3274                            if (S) u && !a.durationKnown && (S.endTime = h);
3275                            else if (f) {
3276                              var L = e.attr[T];
3277                              P(T) &&
3278                                ((m = L),
3279                                (L = Uint8Array.from(
3280                                  m
3281                                    .replace(/^0x/, '')
3282                                    .replace(/([\da-fA-F]{2}) ?/g, '0x$1 ')
3283                                    .replace(/ +$/, '')
3284                                    .split(' ')
3285                                ).buffer));
3286                              var A = ze(f, i, h, { key: T, data: L }, je);
3287                              A && ((A.id = t), r.id3Track.addCue(A), (l[T] = A));
3288                            }
3289                          }
3290                        }
3291                        n[t] = { cues: l, dateRange: e, durationKnown: u };
3292                      },
3293                      v = 0;
3294                    v < o.length;
3295                    v++
3296                  )
3297                    g();
3298                }
3299              }
3300            }),
3301            t
3302          );
3303        })(),
3304        Ze = (function () {
3305          function t(t) {
3306            var e = this;
3307            (this.hls = void 0),
3308              (this.config = void 0),
3309              (this.media = null),
3310              (this.levelDetails = null),
3311              (this.currentTime = 0),
3312              (this.stallCount = 0),
3313              (this._latency = null),
3314              (this.timeupdateHandler = function () {
3315                return e.timeupdate();
3316              }),
3317              (this.hls = t),
3318              (this.config = t.config),
3319              this.registerListeners();
3320          }
3321          var e = t.prototype;
3322          return (
3323            (e.destroy = function () {
3324              this.unregisterListeners(),
3325                this.onMediaDetaching(),
3326                (this.levelDetails = null),
3327                (this.hls = this.timeupdateHandler = null);
3328            }),
3329            (e.registerListeners = function () {
3330              this.hls.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
3331                this.hls.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
3332                this.hls.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
3333                this.hls.on(S.LEVEL_UPDATED, this.onLevelUpdated, this),
3334                this.hls.on(S.ERROR, this.onError, this);
3335            }),
3336            (e.unregisterListeners = function () {
3337              this.hls.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
3338                this.hls.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
3339                this.hls.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
3340                this.hls.off(S.LEVEL_UPDATED, this.onLevelUpdated, this),
3341                this.hls.off(S.ERROR, this.onError, this);
3342            }),
3343            (e.onMediaAttached = function (t, e) {
3344              (this.media = e.media),
3345                this.media.addEventListener('timeupdate', this.timeupdateHandler);
3346            }),
3347            (e.onMediaDetaching = function () {
3348              this.media &&
3349                (this.media.removeEventListener('timeupdate', this.timeupdateHandler),
3350                (this.media = null));
3351            }),
3352            (e.onManifestLoading = function () {
3353              (this.levelDetails = null), (this._latency = null), (this.stallCount = 0);
3354            }),
3355            (e.onLevelUpdated = function (t, e) {
3356              var r = e.details;
3357              (this.levelDetails = r),
3358                r.advanced && this.timeupdate(),
3359                !r.live &&
3360                  this.media &&
3361                  this.media.removeEventListener('timeupdate', this.timeupdateHandler);
3362            }),
3363            (e.onError = function (t, e) {
3364              var r;
3365              e.details === A.BUFFER_STALLED_ERROR &&
3366                (this.stallCount++,
3367                null != (r = this.levelDetails) &&
3368                  r.live &&
3369                  w.warn('[playback-rate-controller]: Stall detected, adjusting target latency'));
3370            }),
3371            (e.timeupdate = function () {
3372              var t = this.media,
3373                e = this.levelDetails;
3374              if (t && e) {
3375                this.currentTime = t.currentTime;
3376                var r = this.computeLatency();
3377                if (null !== r) {
3378                  this._latency = r;
3379                  var i = this.config,
3380                    n = i.lowLatencyMode,
3381                    a = i.maxLiveSyncPlaybackRate;
3382                  if (n && 1 !== a && e.live) {
3383                    var s = this.targetLatency;
3384                    if (null !== s) {
3385                      var o = r - s;
3386                      if (
3387                        o < Math.min(this.maxLatency, s + e.targetduration) &&
3388                        o > 0.05 &&
3389                        this.forwardBufferLength > 1
3390                      ) {
3391                        var l = Math.min(2, Math.max(1, a)),
3392                          u =
3393                            Math.round((2 / (1 + Math.exp(-0.75 * o - this.edgeStalled))) * 20) /
3394                            20;
3395                        t.playbackRate = Math.min(l, Math.max(1, u));
3396                      } else 1 !== t.playbackRate && 0 !== t.playbackRate && (t.playbackRate = 1);
3397                    }
3398                  }
3399                }
3400              }
3401            }),
3402            (e.estimateLiveEdge = function () {
3403              var t = this.levelDetails;
3404              return null === t ? null : t.edge + t.age;
3405            }),
3406            (e.computeLatency = function () {
3407              var t = this.estimateLiveEdge();
3408              return null === t ? null : t - this.currentTime;
3409            }),
3410            s(t, [
3411              {
3412                key: 'latency',
3413                get: function () {
3414                  return this._latency || 0;
3415                },
3416              },
3417              {
3418                key: 'maxLatency',
3419                get: function () {
3420                  var t = this.config,
3421                    e = this.levelDetails;
3422                  return void 0 !== t.liveMaxLatencyDuration
3423                    ? t.liveMaxLatencyDuration
3424                    : e
3425                    ? t.liveMaxLatencyDurationCount * e.targetduration
3426                    : 0;
3427                },
3428              },
3429              {
3430                key: 'targetLatency',
3431                get: function () {
3432                  var t = this.levelDetails;
3433                  if (null === t) return null;
3434                  var e = t.holdBack,
3435                    r = t.partHoldBack,
3436                    i = t.targetduration,
3437                    n = this.config,
3438                    a = n.liveSyncDuration,
3439                    s = n.liveSyncDurationCount,
3440                    o = n.lowLatencyMode,
3441                    l = this.hls.userConfig,
3442                    u = (o && r) || e;
3443                  (l.liveSyncDuration || l.liveSyncDurationCount || 0 === u) &&
3444                    (u = void 0 !== a ? a : s * i);
3445                  var h = i;
3446                  return u + Math.min(1 * this.stallCount, h);
3447                },
3448              },
3449              {
3450                key: 'liveSyncPosition',
3451                get: function () {
3452                  var t = this.estimateLiveEdge(),
3453                    e = this.targetLatency,
3454                    r = this.levelDetails;
3455                  if (null === t || null === e || null === r) return null;
3456                  var i = r.edge,
3457                    n = t - e - this.edgeStalled,
3458                    a = i - r.totalduration,
3459                    s = i - ((this.config.lowLatencyMode && r.partTarget) || r.targetduration);
3460                  return Math.min(Math.max(a, n), s);
3461                },
3462              },
3463              {
3464                key: 'drift',
3465                get: function () {
3466                  var t = this.levelDetails;
3467                  return null === t ? 1 : t.drift;
3468                },
3469              },
3470              {
3471                key: 'edgeStalled',
3472                get: function () {
3473                  var t = this.levelDetails;
3474                  if (null === t) return 0;
3475                  var e = 3 * ((this.config.lowLatencyMode && t.partTarget) || t.targetduration);
3476                  return Math.max(t.age - e, 0);
3477                },
3478              },
3479              {
3480                key: 'forwardBufferLength',
3481                get: function () {
3482                  var t = this.media,
3483                    e = this.levelDetails;
3484                  if (!t || !e) return 0;
3485                  var r = t.buffered.length;
3486                  return (r ? t.buffered.end(r - 1) : e.edge) - this.currentTime;
3487                },
3488              },
3489            ]),
3490            t
3491          );
3492        })(),
3493        tr = ['NONE', 'TYPE-0', 'TYPE-1', null],
3494        er = ['SDR', 'PQ', 'HLG'],
3495        rr = '',
3496        ir = 'YES',
3497        nr = 'v2';
3498      function ar(t) {
3499        var e = t.canSkipUntil,
3500          r = t.canSkipDateRanges,
3501          i = t.age;
3502        return e && i < e / 2 ? (r ? nr : ir) : rr;
3503      }
3504      var sr = (function () {
3505          function t(t, e, r) {
3506            (this.msn = void 0),
3507              (this.part = void 0),
3508              (this.skip = void 0),
3509              (this.msn = t),
3510              (this.part = e),
3511              (this.skip = r);
3512          }
3513          return (
3514            (t.prototype.addDirectives = function (t) {
3515              var e = new self.URL(t);
3516              return (
3517                void 0 !== this.msn && e.searchParams.set('_HLS_msn', this.msn.toString()),
3518                void 0 !== this.part && e.searchParams.set('_HLS_part', this.part.toString()),
3519                this.skip && e.searchParams.set('_HLS_skip', this.skip),
3520                e.href
3521              );
3522            }),
3523            t
3524          );
3525        })(),
3526        or = (function () {
3527          function t(t) {
3528            (this._attrs = void 0),
3529              (this.audioCodec = void 0),
3530              (this.bitrate = void 0),
3531              (this.codecSet = void 0),
3532              (this.url = void 0),
3533              (this.frameRate = void 0),
3534              (this.height = void 0),
3535              (this.id = void 0),
3536              (this.name = void 0),
3537              (this.videoCodec = void 0),
3538              (this.width = void 0),
3539              (this.details = void 0),
3540              (this.fragmentError = 0),
3541              (this.loadError = 0),
3542              (this.loaded = void 0),
3543              (this.realBitrate = 0),
3544              (this.supportedPromise = void 0),
3545              (this.supportedResult = void 0),
3546              (this._avgBitrate = 0),
3547              (this._audioGroups = void 0),
3548              (this._subtitleGroups = void 0),
3549              (this._urlId = 0),
3550              (this.url = [t.url]),
3551              (this._attrs = [t.attrs]),
3552              (this.bitrate = t.bitrate),
3553              t.details && (this.details = t.details),
3554              (this.id = t.id || 0),
3555              (this.name = t.name),
3556              (this.width = t.width || 0),
3557              (this.height = t.height || 0),
3558              (this.frameRate = t.attrs.optionalFloat('FRAME-RATE', 0)),
3559              (this._avgBitrate = t.attrs.decimalInteger('AVERAGE-BANDWIDTH')),
3560              (this.audioCodec = t.audioCodec),
3561              (this.videoCodec = t.videoCodec),
3562              (this.codecSet = [t.videoCodec, t.audioCodec]
3563                .filter(function (t) {
3564                  return !!t;
3565                })
3566                .map(function (t) {
3567                  return t.substring(0, 4);
3568                })
3569                .join(',')),
3570              this.addGroupId('audio', t.attrs.AUDIO),
3571              this.addGroupId('text', t.attrs.SUBTITLES);
3572          }
3573          var e = t.prototype;
3574          return (
3575            (e.hasAudioGroup = function (t) {
3576              return lr(this._audioGroups, t);
3577            }),
3578            (e.hasSubtitleGroup = function (t) {
3579              return lr(this._subtitleGroups, t);
3580            }),
3581            (e.addGroupId = function (t, e) {
3582              if (e)
3583                if ('audio' === t) {
3584                  var r = this._audioGroups;
3585                  r || (r = this._audioGroups = []), -1 === r.indexOf(e) && r.push(e);
3586                } else if ('text' === t) {
3587                  var i = this._subtitleGroups;
3588                  i || (i = this._subtitleGroups = []), -1 === i.indexOf(e) && i.push(e);
3589                }
3590            }),
3591            (e.addFallback = function () {}),
3592            s(t, [
3593              {
3594                key: 'maxBitrate',
3595                get: function () {
3596                  return Math.max(this.realBitrate, this.bitrate);
3597                },
3598              },
3599              {
3600                key: 'averageBitrate',
3601                get: function () {
3602                  return this._avgBitrate || this.realBitrate || this.bitrate;
3603                },
3604              },
3605              {
3606                key: 'attrs',
3607                get: function () {
3608                  return this._attrs[0];
3609                },
3610              },
3611              {
3612                key: 'codecs',
3613                get: function () {
3614                  return this.attrs.CODECS || '';
3615                },
3616              },
3617              {
3618                key: 'pathwayId',
3619                get: function () {
3620                  return this.attrs['PATHWAY-ID'] || '.';
3621                },
3622              },
3623              {
3624                key: 'videoRange',
3625                get: function () {
3626                  return this.attrs['VIDEO-RANGE'] || 'SDR';
3627                },
3628              },
3629              {
3630                key: 'score',
3631                get: function () {
3632                  return this.attrs.optionalFloat('SCORE', 0);
3633                },
3634              },
3635              {
3636                key: 'uri',
3637                get: function () {
3638                  return this.url[0] || '';
3639                },
3640              },
3641              {
3642                key: 'audioGroups',
3643                get: function () {
3644                  return this._audioGroups;
3645                },
3646              },
3647              {
3648                key: 'subtitleGroups',
3649                get: function () {
3650                  return this._subtitleGroups;
3651                },
3652              },
3653              {
3654                key: 'urlId',
3655                get: function () {
3656                  return 0;
3657                },
3658                set: function (t) {},
3659              },
3660              {
3661                key: 'audioGroupIds',
3662                get: function () {
3663                  return this.audioGroups ? [this.audioGroupId] : void 0;
3664                },
3665              },
3666              {
3667                key: 'textGroupIds',
3668                get: function () {
3669                  return this.subtitleGroups ? [this.textGroupId] : void 0;
3670                },
3671              },
3672              {
3673                key: 'audioGroupId',
3674                get: function () {
3675                  var t;
3676                  return null == (t = this.audioGroups) ? void 0 : t[0];
3677                },
3678              },
3679              {
3680                key: 'textGroupId',
3681                get: function () {
3682                  var t;
3683                  return null == (t = this.subtitleGroups) ? void 0 : t[0];
3684                },
3685              },
3686            ]),
3687            t
3688          );
3689        })();
3690      function lr(t, e) {
3691        return !(!e || !t) && -1 !== t.indexOf(e);
3692      }
3693      function ur(t, e) {
3694        var r = e.startPTS;
3695        if (y(r)) {
3696          var i,
3697            n = 0;
3698          e.sn > t.sn ? ((n = r - t.start), (i = t)) : ((n = t.start - r), (i = e)),
3699            i.duration !== n && (i.duration = n);
3700        } else
3701          e.sn > t.sn
3702            ? t.cc === e.cc && t.minEndPTS
3703              ? (e.start = t.start + (t.minEndPTS - t.start))
3704              : (e.start = t.start + t.duration)
3705            : (e.start = Math.max(t.start - e.duration, 0));
3706      }
3707      function hr(t, e, r, i, n, a) {
3708        i - r <= 0 &&
3709          (w.warn('Fragment should have a positive duration', e),
3710          (i = r + e.duration),
3711          (a = n + e.duration));
3712        var s = r,
3713          o = i,
3714          l = e.startPTS,
3715          u = e.endPTS;
3716        if (y(l)) {
3717          var h = Math.abs(l - r);
3718          y(e.deltaPTS) ? (e.deltaPTS = Math.max(h, e.deltaPTS)) : (e.deltaPTS = h),
3719            (s = Math.max(r, l)),
3720            (r = Math.min(r, l)),
3721            (n = Math.min(n, e.startDTS)),
3722            (o = Math.min(i, u)),
3723            (i = Math.max(i, u)),
3724            (a = Math.max(a, e.endDTS));
3725        }
3726        var d = r - e.start;
3727        0 !== e.start && (e.start = r),
3728          (e.duration = i - e.start),
3729          (e.startPTS = r),
3730          (e.maxStartPTS = s),
3731          (e.startDTS = n),
3732          (e.endPTS = i),
3733          (e.minEndPTS = o),
3734          (e.endDTS = a);
3735        var c,
3736          f = e.sn;
3737        if (!t || f < t.startSN || f > t.endSN) return 0;
3738        var g = f - t.startSN,
3739          v = t.fragments;
3740        for (v[g] = e, c = g; c > 0; c--) ur(v[c], v[c - 1]);
3741        for (c = g; c < v.length - 1; c++) ur(v[c], v[c + 1]);
3742        return (
3743          t.fragmentHint && ur(v[v.length - 1], t.fragmentHint),
3744          (t.PTSKnown = t.alignedSliding = !0),
3745          d
3746        );
3747      }
3748      function dr(t, e) {
3749        for (var r = null, i = t.fragments, n = i.length - 1; n >= 0; n--) {
3750          var a = i[n].initSegment;
3751          if (a) {
3752            r = a;
3753            break;
3754          }
3755        }
3756        t.fragmentHint && delete t.fragmentHint.endPTS;
3757        var s,
3758          l,
3759          u,
3760          h,
3761          d,
3762          c = 0;
3763        if (
3764          ((function (t, e, r) {
3765            for (
3766              var i = e.skippedSegments,
3767                n = Math.max(t.startSN, e.startSN) - e.startSN,
3768                a =
3769                  (t.fragmentHint ? 1 : 0) + (i ? e.endSN : Math.min(t.endSN, e.endSN)) - e.startSN,
3770                s = e.startSN - t.startSN,
3771                o = e.fragmentHint ? e.fragments.concat(e.fragmentHint) : e.fragments,
3772                l = t.fragmentHint ? t.fragments.concat(t.fragmentHint) : t.fragments,
3773                u = n;
3774              u <= a;
3775              u++
3776            ) {
3777              var h = l[s + u],
3778                d = o[u];
3779              i && !d && u < i && (d = e.fragments[u] = h), h && d && r(h, d);
3780            }
3781          })(t, e, function (t, i) {
3782            t.relurl && (c = t.cc - i.cc),
3783              y(t.startPTS) &&
3784                y(t.endPTS) &&
3785                ((i.start = i.startPTS = t.startPTS),
3786                (i.startDTS = t.startDTS),
3787                (i.maxStartPTS = t.maxStartPTS),
3788                (i.endPTS = t.endPTS),
3789                (i.endDTS = t.endDTS),
3790                (i.minEndPTS = t.minEndPTS),
3791                (i.duration = t.endPTS - t.startPTS),
3792                i.duration && (s = i),
3793                (e.PTSKnown = e.alignedSliding = !0)),
3794              (i.elementaryStreams = t.elementaryStreams),
3795              (i.loader = t.loader),
3796              (i.stats = t.stats),
3797              t.initSegment && ((i.initSegment = t.initSegment), (r = t.initSegment));
3798          }),
3799          r &&
3800            (e.fragmentHint ? e.fragments.concat(e.fragmentHint) : e.fragments).forEac
3800h(function (
3801              t
3802            ) {
3803              var e;
3804              !t ||
3805                (t.initSegment && t.initSegment.relurl !== (null == (e = r) ? void 0 : e.relurl)) ||
3806                (t.initSegment = r);
3807            }),
3808          e.skippedSegments)
3809        )
3810          if (
3811            ((e.deltaUpdateFailed = e.fragments.some(function (t) {
3812              return !t;
3813            })),
3814            e.deltaUpdateFailed)
3815          ) {
3816            w.warn('[level-helper] Previous playlist missing segments skipped in delta playlist');
3817            for (var f = e.skippedSegments; f--; ) e.fragments.shift();
3818            (e.startSN = e.fragments[0].sn), (e.startCC = e.fragments[0].cc);
3819          } else
3820            e.canSkipDateRanges &&
3821              (e.dateRanges =
3822                ((l = t.dateRanges),
3823                (u = e.dateRanges),
3824                (h = e.recentlyRemovedDateranges),
3825                (d = o({}, l)),
3826                h &&
3827                  h.forEach(function (t) {
3828                    delete d[t];
3829                  }),
3830                Object.keys(u).forEach(function (t) {
3831                  var e = new F(u[t].attr, d[t]);
3832                  e.isValid
3833                    ? (d[t] = e)
3834                    : w.warn(
3835                        'Ignoring invalid Playlist Delta Update DATERANGE tag: "' +
3836                          JSON.stringify(u[t].attr) +
3837                          '"'
3838                      );
3839                }),
3840                d));
3841        var g = e.fragments;
3842        if (c) {
3843          w.warn('discontinuity sliding from playlist, take drift into account');
3844          for (var v = 0; v < g.length; v++) g[v].cc += c;
3845        }
3846        e.skippedSegments && (e.startCC = e.fragments[0].cc),
3847          (function (t, e, r) {
3848            if (t && e)
3849              for (var i = 0, n = 0, a = t.length; n <= a; n++) {
3850                var s = t[n],
3851                  o = e[n + i];
3852                s && o && s.index === o.index && s.fragment.sn === o.fragment.sn ? r(s, o) : i--;
3853              }
3854          })(t.partList, e.partList, function (t, e) {
3855            (e.elementaryStreams = t.elementaryStreams), (e.stats = t.stats);
3856          }),
3857          s ? hr(e, s, s.startPTS, s.endPTS, s.startDTS, s.endDTS) : cr(t, e),
3858          g.length && (e.totalduration = e.edge - g[0].start),
3859          (e.driftStartTime = t.driftStartTime),
3860          (e.driftStart = t.driftStart);
3861        var m = e.advancedDateTime;
3862        if (e.advanced && m) {
3863          var p = e.edge;
3864          e.driftStart || ((e.driftStartTime = m), (e.driftStart = p)),
3865            (e.driftEndTime = m),
3866            (e.driftEnd = p);
3867        } else
3868          (e.driftEndTime = t.driftEndTime),
3869            (e.driftEnd = t.driftEnd),
3870            (e.advancedDateTime = t.advancedDateTime);
3871      }
3872      function cr(t, e) {
3873        var r = e.startSN + e.skippedSegments - t.startSN,
3874          i = t.fragments;
3875        r < 0 || r >= i.length || fr(e, i[r].start);
3876      }
3877      function fr(t, e) {
3878        if (e) {
3879          for (var r = t.fragments, i = t.skippedSegments; i < r.length; i++) r[i].start += e;
3880          t.fragmentHint && (t.fragmentHint.start += e);
3881        }
3882      }
3883      function gr(t, e, r) {
3884        var i;
3885        return null != t && t.details
3886          ? vr(null == (i = t.details) ? void 0 : i.partList, e, r)
3887          : null;
3888      }
3889      function vr(t, e, r) {
3890        if (t)
3891          for (var i = t.length; i--; ) {
3892            var n = t[i];
3893            if (n.index === r && n.fragment.sn === e) return n;
3894          }
3895        return null;
3896      }
3897      function mr(t) {
3898        t.forEach(function (t, e) {
3899          var r = t.details;
3900          null != r &&
3901            r.fragments &&
3902            r.fragments.forEach(function (t) {
3903              t.level = e;
3904            });
3905        });
3906      }
3907      function pr(t) {
3908        switch (t.details) {
3909          case A.FRAG_LOAD_TIMEOUT:
3910          case A.KEY_LOAD_TIMEOUT:
3911          case A.LEVEL_LOAD_TIMEOUT:
3912          case A.MANIFEST_LOAD_TIMEOUT:
3913            return !0;
3914        }
3915        return !1;
3916      }
3917      function yr(t, e) {
3918        var r = pr(e);
3919        return t.default[(r ? 'timeout' : 'error') + 'Retry'];
3920      }
3921      function Er(t, e) {
3922        var r = 'linear' === t.backoff ? 1 : Math.pow(2, e);
3923        return Math.min(r * t.retryDelayMs, t.maxRetryDelayMs);
3924      }
3925      function Tr(t) {
3926        return i(i({}, t), { errorRetry: null, timeoutRetry: null });
3927      }
3928      function Sr(t, e, r, i) {
3929        if (!t) return !1;
3930        var n = null == i ? void 0 : i.code,
3931          a =
3932            e < t.maxNumRetry &&
3933            ((function (t) {
3934              return (0 === t && !1 === navigator.onLine) || (!!t && (t < 400 || t > 499));
3935            })(n) ||
3936              !!r);
3937        return t.shouldRetry ? t.shouldRetry(t, e, r, i, a) : a;
3938      }
3939      var Lr = function (t, e) {
3940        for (var r = 0, i = t.length - 1, n = null, a = null; r <= i; ) {
3941          var s = e((a = t[(n = ((r + i) / 2) | 0)]));
3942          if (s > 0) r = n + 1;
3943          else {
3944            if (!(s < 0)) return a;
3945            i = n - 1;
3946          }
3947        }
3948        return null;
3949      };
3950      function Ar(t, e, r, i, n) {
3951        void 0 === r && (r = 0), void 0 === i && (i = 0), void 0 === n && (n = 0.005);
3952        var a = null;
3953        if (t) {
3954          a = e[t.sn - e[0].sn + 1] || null;
3955          var s = t.endDTS - r;
3956          s > 0 && s < 15e-7 && (r += 15e-7);
3957        } else 0 === r && 0 === e[0].start && (a = e[0]);
3958        if (
3959          a &&
3960          (((!t || t.level === a.level) && 0 === Rr(r, i, a)) ||
3961            (function (t, e, r) {
3962              if (e && 0 === e.start && e.level < t.level && (e.endPTS || 0) > 0) {
3963                var i = e.tagList.reduce(function (t, e) {
3964                  return 'INF' === e[0] && (t += parseFloat(e[1])), t;
3965                }, r);
3966                return t.start <= i;
3967              }
3968              return !1;
3969            }
3969)(a, t, Math.min(n, i)))
3970        )
3971          return a;
3972        var o = Lr(e, Rr.bind(null, r, i));
3973        return !o || (o === t && a) ? a : o;
3974      }
3975      function Rr(t, e, r) {
3976        if (
3977          (void 0 === t && (t = 0),
3978          void 0 === e && (e = 0),
3979          r.start <= t && r.start + r.duration > t)
3980        )
3981          return 0;
3982        var i = Math.min(e, r.duration + (r.deltaPTS ? r.deltaPTS : 0));
3983        return r.start + r.duration - i <= t ? 1 : r.start - i > t && r.start ? -1 : 0;
3984      }
3985      function br(t, e, r) {
3986        var i = 1e3 * Math.min(e, r.duration + (r.deltaPTS ? r.deltaPTS : 0));
3987        return (r.endProgramDateTime || 0) - i > t;
3988      }
3989      var kr = 0,
3990        Dr = 2,
3991        Ir = 3,
3992        wr = 5,
3993        Cr = 0,
3994        _r = 1,
3995        xr = 2,
3996        Pr = (function () {
3997          function t(t) {
3998            (this.hls = void 0),
3999              (this.playlistError = 0),
4000              (this.penalizedRenditions = {}),
4001              (this.log = void 0),
4002              (this.warn = void 0),
4003              (this.error = void 0),
4004              (this.hls = t),
4005              (this.log = w.log.bind(w, '[info]:')),
4006              (this.warn = w.warn.bind(w, '[warning]:')),
4007              (this.error = w.error.bind(w, '[error]:')),
4008              this.registerListeners();
4009          }
4010          var e = t.prototype;
4011          return (
4012            (e.registerListeners = function () {
4013              var t = this.hls;
4014              t.on(S.ERROR, this.onError, this),
4015                t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
4016                t.on(S.LEVEL_UPDATED, this.onLevelUpdated, this);
4017            }),
4018            (e.unregisterListeners = function () {
4019              var t = this.hls;
4020              t &&
4021                (t.off(S.ERROR, this.onError, this),
4022                t.off(S.ERROR, this.onErrorOut, this),
4023                t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
4024                t.off(S.LEVEL_UPDATED, this.onLevelUpdated, this));
4025            }),
4026            (e.destroy = function () {
4027              this.unregisterListeners(), (this.hls = null), (this.penalizedRenditions = {});
4028            }),
4029            (e.startLoad = function (t) {}),
4030            (e.stopLoad = function () {
4031              this.playlistError = 0;
4032            }),
4033            (e.getVariantLevelIndex = function (t) {
4034              return (null == t ? void 0 : t.type) === Fe ? t.level : this.hls.loadLevel;
4035            }),
4036            (e.onManifestLoading = function () {
4037              (this.playlistError = 0), (this.penalizedRenditions = {});
4038            }),
4039            (e.onLevelUpdated = function () {
4040              this.playlistError = 0;
4041            }),
4042            (e.onError = function (t, e) {
4043              var r, i;
4044              if (!e.fatal) {
4045                var n = this.hls,
4046                  a = e.context;
4047                switch (e.details) {
4048                  case A.FRAG_LOAD_ERROR:
4049                  case A.FRAG_LOAD_TIMEOUT:
4050                  case A.KEY_LOAD_ERROR:
4051                  case A.KEY_LOAD_TIMEOUT:
4052                    return void (e.errorAction = this.getFragRetryOrSwitchAction(e));
4053                  case A.FRAG_PARSING_ERROR:
4054                    if (null != (r = e.frag) && r.gap)
4055                      return void (e.errorAction = { action: kr, flags: Cr });
4056                  case A.FRAG_GAP:
4057                  case A.FRAG_DECRYPT_ERROR:
4058                    return (
4059                      (e.errorAction = this.getFragRetryOrSwitchAction(e)),
4060                      void (e.errorAction.action = Dr)
4061                    );
4062                  case A.LEVEL_EMPTY_ERROR:
4063                  case A.LEVEL_PARSING_ERROR:
4064                    var s,
4065                      o,
4066                      l = e.parent === Fe ? e.level : n.loadLevel;
4067                    return void (e.details === A.LEVEL_EMPTY_ERROR &&
4068                    null != (s = e.context) &&
4069                    null != (o = s.levelDetails) &&
4070                    o.live
4071                      ? (e.errorAction = this.getPlaylistRetryOrSwitchAction(e, l))
4072                      : ((e.levelRetry = !1), (e.errorAction = this.getLevelSwitchAction(e, l))));
4073                  case A.LEVEL_LOAD_ERROR:
4074                  case A.LEVEL_LOAD_TIMEOUT:
4075                    return void (
4076                      'number' == typeof (null == a ? void 0 : a.level) &&
4077                      (e.errorAction = this.getPlaylistRetryOrSwitchAction(e, a.level))
4078                    );
4079                  case A.AUDIO_TRACK_LOAD_ERROR:
4080                  case A.AUDIO_TRACK_LOAD_TIMEOUT:
4081                  case A.SUBTITLE_LOAD_ERROR:
4082                  case A.SUBTITLE_TRACK_LOAD_TIMEOUT:
4083                    if (a) {
4084                      var u = n.levels[n.loadLevel];
4085                      if (
4086                        u &&
4087                        ((a.type === xe && u.hasAudioGroup(a.groupId)) ||
4088                          (a.type === Pe && u.hasSubtitleGroup(a.groupId)))
4089                      )
4090                        return (
4091                          (e.errorAction = this.getPlaylistRetryOrSwitchAction(e, n.loadLevel)),
4092                          (e.errorAction.action = Dr),
4093                          void (e.errorAction.flags = _r)
4094                        );
4095                    }
4096                    return;
4097                  case A.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:
4098                    var h = n.levels[n.loadLevel],
4099                      d = null == h ? void 0 : h.attrs['HDCP-LEVEL'];
4100                    return void (d
4101                      ? (e.errorAction = { action: Dr, flags: xr, hdcpLevel: d })
4102                      : this.keySystemError(e));
4103                  case A.BUFFER_ADD_CODEC_ERROR:
4104                  case A.REMUX_ALLOC_ERROR:
4105                  case A.BUFFER_APPEND_ERROR:
4106                    return void (e.errorAction = this.getLevelSwitchAction(
4107                      e,
4108                      null != (i = e.level) ? i : n.loadLevel
4109                    ));
4110                  case A.INTERNAL_EXCEPTION:
4111                  case A.BUFFER_APPENDING_ERROR:
4112                  case A.BUFFER_FULL_ERROR:
4113                  case A.LEVEL_SWITCH_ERROR:
4114                  case A.BUFFER_STALLED_ERROR:
4115                  case A.BUFFER_SEEK_OVER_HOLE:
4116                  case A.BUFFER_NUDGE_ON_STALL:
4117                    return void (e.errorAction = { action: kr, flags: Cr });
4118                }
4119                e.type === L.KEY_SYSTEM_ERROR && this.keySystemError(e);
4120              }
4121            }),
4122            (e.keySystemError = function (t) {
4123              var e = this.getVariantLevelIndex(t.frag);
4124              (t.levelRetry = !1), (t.errorAction = this.getLevelSwitchAction(t, e));
4125            }),
4126            (e.getPlaylistRetryOrSwitchAction = function (t, e) {
4127              var r = yr(this.hls.config.playlistLoadPolicy, t),
4128                i = this.playlistError++;
4129              if (Sr(r, i, pr(t), t.response))
4130                return { action: wr, flags: Cr, retryConfig: r, retryCount: i };
4131              var n = this.getLevelSwitchAction(t, e);
4132              return r && ((n.retryConfig = r), (n.retryCount = i)), n;
4133            }),
4134            (e.getFragRetryOrSwitchAction = function (t) {
4135              var e = this.hls,
4136                r = this.getVariantLevelIndex(t.frag),
4137                i = e.levels[r],
4138                n = e.config,
4139                a = n.fragLoadPolicy,
4140                s = n.keyLoadPolicy,
4141                o = yr(t.details.startsWith('key') ? s : a, t),
4142                l = e.levels.reduce(function (t, e) {
4143                  return t + e.fragmentError;
4144                }, 0);
4145              if (i && (t.details !== A.FRAG_GAP && i.fragmentError++, Sr(o, l, pr(t), t.response)))
4146                return { action: wr, flags: Cr, retryConfig: o, retryCount: l };
4147              var u = this.getLevelSwitchAction(t, r);
4148              return o && ((u.retryConfig = o), (u.retryCount = l)), u;
4149            }),
4150            (e.getLevelSwitchAction = function (t, e) {
4151              var r = this.hls;
4152              null == e && (e = r.loadLevel);
4153              var i = this.hls.levels[e];
4154              if (i) {
4155                var n,
4156                  a,
4157                  s = t.details;
4158                i.loadError++, s === A.BUFFER_APPEND_ERROR && i.fragmentError++;
4159                var o = -1,
4160                  l = r.levels,
4161                  u = r.loadLevel,
4162                  h = r.minAutoLevel,
4163                  d = r.maxAutoLevel;
4164                r.autoLevelEnabled || (r.loadLevel = -1);
4165                for (
4166                  var c,
4167                    f = null == (n = t.frag) ? void 0 : n.type,
4168                    g =
4169                      ((f === Me && s === A.FRAG_PARSING_ERROR) ||
4170                        ('audio' === t.sourceBufferName &&
4171                          (s === A.BUFFER_ADD_CODEC_ERROR || s === A.BUFFER_APPEND_ERROR))) &&
4172                      l.some(function (t) {
4173                        var e = t.audioCodec;
4174                        return i.audioCodec !== e;
4175                      }),
4176                    v =
4177                      'video' === t.sourceBufferName &&
4178                      (s === A.BUFFER_ADD_CODEC_ERROR || s === A.BUFFER_APPEND_ERROR) &&
4179                      l.some(function (t) {
4180                        var e = t.codecSet,
4181                          r = t.audioCodec;
4182                        return i.codecSet !== e && i.audioCodec === r;
4183                      }),
4184                    m = null != (a = t.context) ? a : {},
4185                    p = m.type,
4186                    y = m.groupId,
4187                    E = function () {
4188                      var e = (T + u) % l.length;
4189                      if (e !== u && e >= h && e <= d && 0 === l[e].loadError) {
4190                        var r,
4191                          n,
4192                          a = l[e];
4193                        if (s === A.FRAG_GAP && f === Fe && t.frag) {
4194                          var c = l[e].details;
4195                          if (c) {
4196                            var m = Ar(t.frag, c.fragments, t.frag.start);
4197                            if (null != m && m.gap) return 0;
4198                          }
4199                        } else {
4200                          if (
4201                            (p === xe && a.hasAudioGroup(y)) ||
4202                            (p === Pe && a.hasSubtitleGroup(y))
4203                          )
4204                            return 0;
4205                          if (
4206                            (f === Me &&
4207                              null != (r = i.audioGroups) &&
4208                              r.some(function (t) {
4209                                return a.hasAudioGroup(t);
4210                              })) ||
4211                            (f === Oe &&
4212                              null != (n = i.subtitleGroups) &&
4213                              n.some(function (t) {
4214                                return a.hasSubtitleGroup(t);
4215                              })) ||
4216                            (g && i.audioCodec === a.audioCodec) ||
4217                            (!g && i.audioCodec !== a.audioCodec) ||
4218                            (v && i.codecSet === a.codecSet)
4219                          )
4220                            return 0;
4221                        }
4222                        return (o = e), 1;
4223                      }
4224                    },
4225                    T = l.length;
4226                  T-- && (0 === (c = E()) || 1 !== c);
4227
4228                );
4229                if (o > -1 && r.loadLevel !== o)
4230                  return (
4231                    (t.levelRetry = !0),
4232                    (this.playlistError = 0),
4233                    { action: Dr, flags: Cr, nextAutoLevel: o }
4234                  );
4235              }
4236              return { action: Dr, flags: _r };
4237            }),
4238            (e.onErrorOut = function (t, e) {
4239              var r;
4240              switch (null == (r = e.errorAction) ? void 0 : r.action) {
4241                case kr:
4242                  break;
4243                case Dr:
4244                  this.sendAlternateToPenaltyBox(e),
4245                    e.errorAction.resolved || e.details === A.FRAG_GAP
4246                      ? /MediaSource readyState: ended/.test(e.error.message) &&
4247                        (this.warn(
4248                          'MediaSource ended after "' +
4249                            e.sourceBufferName +
4250                            '" sourceBuffer append error. Attempting to recover from media error.'
4251                        ),
4252                        this.hls.recoverMediaError())
4253                      : (e.fatal = !0);
4254              }
4255              e.fatal && this.hls.stopLoad();
4256            }),
4257            (e.sendAlternateToPenaltyBox = function (t) {
4258              var e = this.hls,
4259                r = t.errorAction;
4260              if (r) {
4261                var i = r.flags,
4262                  n = r.hdcpLevel,
4263                  a = r.nextAutoLevel;
4264                switch (i) {
4265                  case Cr:
4266                    this.switchLevel(t, a);
4267                    break;
4268                  case xr:
4269                    n && ((e.maxHdcpLevel = tr[tr.indexOf(n) - 1]), (r.resolved = !0)),
4270                      this.warn(
4271                        'Restricting playback to HDCP-LEVEL of "' + e.maxHdcpLevel + '" or lower'
4272                      );
4273                }
4274                r.resolved || this.switchLevel(t, a);
4275              }
4276            }),
4277            (e.switchLevel = function (t, e) {
4278              void 0 !== e &&
4279                t.errorAction &&
4280                (this.warn('switching to level ' + e + ' after ' + t.details),
4281                (this.hls.nextAutoLevel = e),
4282                (t.errorAction.resolved = !0),
4283                (this.hls.nextLoadLevel = this.hls.nextAutoLevel));
4284            }),
4285            t
4286          );
4287        })(),
4288        Fr = (function () {
4289          function t(t, e) {
4290            (this.hls = void 0),
4291              (this.timer = -1),
4292              (this.requestScheduled = -1),
4293              (this.canLoad = !1),
4294              (this.log = void 0),
4295              (this.warn = void 0),
4296              (this.log = w.log.bind(w, e + ':')),
4297              (this.warn = w.warn.bind(w, e + ':')),
4298              (this.hls = t);
4299          }
4300          var e = t.prototype;
4301          return (
4302            (e.destroy = function () {
4303              this.clearTimer(), (this.hls = this.log = this.warn = null);
4304            }),
4305            (e.clearTimer = function () {
4306              -1 !== this.timer && (self.clearTimeout(this.timer), (this.timer = -1));
4307            }),
4308            (e.startLoad = function () {
4309              (this.canLoad = !0), (this.requestScheduled = -1), this.loadPlaylist();
4310            }),
4311            (e.stopLoad = function () {
4312              (this.canLoad = !1), this.clearTimer();
4313            }),
4314            (e.switchParams = function (t, e, r) {
4315              var i = null == e ? void 0 : e.renditionReports;
4316              if (i) {
4317                for (var n = -1, a = 0; a < i.length; a++) {
4318                  var s = i[a],
4319                    o = void 0;
4320                  try {
4321                    o = new self.URL(s.URI, e.url).href;
4322                  } catch (t) {
4323                    w.warn('Could not construct new URL for Rendition Report: ' + t),
4324                      (o = s.URI || '');
4325                  }
4326                  if (o === t) {
4327                    n = a;
4328                    break;
4329                  }
4330                  o === t.substring(0, o.length) && (n = a);
4331                }
4332                if (-1 !== n) {
4333                  var l = i[n],
4334                    u = parseInt(l['LAST-MSN']) || (null == e ? void 0 : e.lastPartSn),
4335                    h = parseInt(l['LAST-PART']) || (null == e ? void 0 : e.lastPartIndex);
4336                  if (this.hls.config.lowLatencyMode) {
4337                    var d = Math.min(e.age - e.partTarget, e.targetduration);
4338                    h >= 0 && d > e.partTarget && (h += 1);
4339                  }
4340                  var c = r && ar(r);
4341                  return new sr(u, h >
4341= 0 ? h : void 0, c);
4342                }
4343              }
4344            }),
4345            (e.loadPlaylist = function (t) {
4346              -1 === this.requestScheduled && (this.requestScheduled = self.performance.now());
4347            }),
4348            (e.shouldLoadPlaylist = function (t) {
4349              return this.canLoad && !!t && !!t.url && (!t.details || t.details.live);
4350            }),
4351            (e.shouldReloadPlaylist = function (t) {
4352              return (
4353                -1 === this.timer && -1 === this.requestScheduled && this.shouldLoadPlaylist(t)
4354              );
4355            }),
4356            (e.playlistLoaded = function (t, e, r) {
4357              var i = this,
4358                n = e.details,
4359                a = e.stats,
4360                s = self.performance.now(),
4361                o = a.loading.first ? Math.max(0, s - a.loading.first) : 0;
4362              if (((n.advancedDateTime = Date.now() - o), n.live || (null != r && r.live))) {
4363                if (
4364                  (n.reloaded(r),
4365                  r &&
4366                    this.log(
4367                      'live playlist ' +
4368                        t +
4369                        ' ' +
4370                        (n.advanced
4371                          ? 'REFRESHED ' + n.lastPartSn + '-' + n.lastPartIndex
4372                          : n.updated
4373                          ? 'UPDATED'
4374                          : 'MISSED')
4375                    ),
4376                  r && n.fragments.length > 0 && dr(r, n),
4377                  !this.canLoad || !n.live)
4378                )
4379                  return;
4380                var l,
4381                  u = void 0,
4382                  h = void 0;
4383                if (n.canBlockReload && n.endSN && n.advanced) {
4384                  var d = this.hls.config.lowLatencyMode,
4385                    c = n.lastPartSn,
4386                    f = n.endSN,
4387                    g = n.lastPartIndex,
4388                    v = c === f;
4389                  -1 !== g ? ((u = v ? f + 1 : c), (h = v ? (d ? 0 : g) : g + 1)) : (u = f + 1);
4390                  var m = n.age,
4391                    p = m + n.ageHeader,
4392                    y = Math.min(p - n.partTarget, 1.5 * n.targetduration);
4393                  if (y > 0) {
4394                    if (r && y > r.tuneInGoal)
4395                      this.warn(
4396                        'CDN Tune-in goal increased from: ' +
4397                          r.tuneInGoal +
4398                          ' to: ' +
4399                          y +
4400                          ' with playlist age: ' +
4401                          n.age
4402                      ),
4403                        (y = 0);
4404                    else {
4405                      var E = Math.floor(y / n.targetduration);
4406                      (u += E),
4407                        void 0 !== h && (h += Math.round((y % n.targetduration) / n.partTarget)),
4408                        this.log(
4409                          'CDN Tune-in age: ' +
4410                            n.ageHeader +
4411                            's last advanced ' +
4412                            m.toFixed(2) +
4413                            's goal: ' +
4414                            y +
4415                            ' skip sn ' +
4416                            E +
4417                            ' to part ' +
4418                            h
4419                        );
4420                    }
4421                    n.tuneInGoal = y;
4422                  }
4423                  if (((l = this.getDeliveryDirectives(n, e.deliveryDirectives, u, h)), d || !v))
4424                    return void this.loadPlaylist(l);
4425                } else
4426                  (n.canBlockReload || n.canSkipUntil) &&
4427                    (l = this.getDeliveryDirectives(n, e.deliveryDirectives, u, h));
4428                var T = this.hls.mainForwardBufferInfo,
4429                  S = T ? T.end - T.len : 0,
4430                  L = (function (t, e) {
4431                    void 0 === e && (e = 1 / 0);
4432                    var r = 1e3 * t.targetduration;
4433                    if (t.updated) {
4434                      var i = t.fragments;
4435                      if (i.length && 4 * r > e) {
4436                        var n = 1e3 * i[i.length - 1].duration;
4437                        n < r && (r = n);
4438                      }
4439                    } else r /= 2;
4440                    return Math.round(r);
4441                  })(n, 1e3 * (n.edge - S));
4442                n.updated &&
4443                  s > this.requestScheduled + L &&
4444                  (this.requestScheduled = a.loading.start),
4445                  void 0 !== u && n.canBlockReload
4446                    ? (this.requestScheduled = a.loading.first + L - (1e3 * n.partTarget || 1e3))
4447                    : -1 === this.requestScheduled || this.requestScheduled + L < s
4448                    ? (this.requestScheduled = s)
4449                    : this.requestScheduled - s <= 0 && (this.requestScheduled += L);
4450                var A = this.requestScheduled - s;
4451                (A = Math.max(0, A)),
4452                  this.log('reload live playlist ' + t + ' in ' + Math.round(A) + ' ms'),
4453                  (this.timer = self.setTimeout(function () {
4454                    return i.loadPlaylist(l);
4455                  }, A));
4456              } else this.clearTimer();
4457            }),
4458            (e.getDeliveryDirectives = function (t, e, r, i) {
4459              var n = ar(t);
4460              return (
4461                null != e && e.skip && t.deltaUpdateFailed && ((r = e.msn), (i = e.part), (n = rr)),
4462                new sr(r, i, n)
4463              );
4464            }),
4465            (e.checkRetry = function (t) {
4466              var e = this,
4467                r = t.details,
4468                i = pr(t),
4469                n = t.errorAction,
4470                a = n || {},
4471                s = a.action,
4472                o = a.retryCount,
4473                l = void 0 === o ? 0 : o,
4474                u = a.retryConfig,
4475                h = !!n && !!u && (s === wr || (!n.resolved && s === Dr));
4476              if (h) {
4477                var d;
4478                if (((this.requestScheduled = -1), l >= u.maxNumRetry)) return !1;
4479                if (i && null != (d = t.context) && d.deliveryDirectives)
4480                  this.warn(
4481                    'Retrying playlist loading ' +
4482                      (l + 1) +
4483                      '/' +
4484                      u.maxNumRetry +
4485                      ' after "' +
4486                      r +
4487                      '" without delivery-directives'
4488                  ),
4489                    this.loadPlaylist();
4490                else {
4491                  var c = Er(u, l);
4492                  (this.timer = self.setTimeout(function () {
4493                    return e.loadPlaylist();
4494                  }, c)),
4495                    this.warn(
4496                      'Retrying playlist loading ' +
4497                        (l + 1) +
4498                        '/' +
4499                        u.maxNumRetry +
4500                        ' after "' +
4501                        r +
4502                        '" in ' +
4503                        c +
4504                        'ms'
4505                    );
4506                }
4507                (t.levelRetry = !0), (n.resolved = !0);
4508              }
4509              return h;
4510            }),
4511            t
4512          );
4513        })(),
4514        Mr = (function () {
4515          function t(t, e, r) {
4516            void 0 === e && (e = 0),
4517              void 0 === r && (r = 0),
4518              (this.halfLife = void 0),
4519              (this.alpha_ = void 0),
4520              (this.estimate_ = void 0),
4521              (this.totalWeight_ = void 0),
4522              (this.halfLife = t),
4523              (this.alpha_ = t ? Math.exp(Math.log(0.5) / t) : 0),
4524              (this.estimate_ = e),
4525              (this.totalWeight_ = r);
4526          }
4527          var e = t.prototype;
4528          return (
4529            (e.sample = function (t, e) {
4530              var r = Math.pow(this.alpha_, t);
4531              (this.estimate_ = e * (1 - r) + r * this.estimate_), (this.totalWeight_ += t);
4532            }),
4533            (e.getTotalWeight = function () {
4534              return this.totalWeight_;
4535            }),
4536            (e.getEstimate = function () {
4537              if (this.alpha_) {
4538                var t = 1 - Math.pow(this.alpha_, this.totalWeight_);
4539                if (t) return this.estimate_ / t;
4540              }
4541              return this.estimate_;
4542            }),
4543            t
4544          );
4545        })(),
4546        Or = (function () {
4547          function t(t, e, r, i) {
4548            void 0 === i && (i = 100),
4549              (this.defaultEstimate_ = void 0),
4550              (this.minWeight_ = void 0),
4551              (this.minDelayMs_ = void 0),
4552              (this.slow_ = void 0),
4553              (this.fast_ = void 0),
4554              (this.defaultTTFB_ = void 0),
4555              (this.ttfb_ = void 0),
4556              (this.defaultEstimate_ = r),
4557              (this.minWeight_ = 0.001),
4558              (this.minDelayMs_ = 50),
4559              (this.slow_ = new Mr(t)),
4560              (this.fast_ = new Mr(e)),
4561              (this.defaultTTFB_ = i),
4562              (this.ttfb_ = new Mr(t));
4563          }
4564          var e = t.prototype;
4565          return (
4566            (e.update = function (t, e) {
4567              var r = this.slow_,
4568                i = this.fast_,
4569                n = this.ttfb_;
4570              r.halfLife !== t && (this.slow_ = new Mr(t, r.getEstimate(), r.getTotalWeight(
4570))),
4571                i.halfLife !== e && (this.fast_ = new Mr(e, i.getEstimate(), i.getTotalWeight())),
4572                n.halfLife !== t && (this.ttfb_ = new Mr(t, n.getEstimate(), n.getTotalWeight()));
4573            }),
4574            (e.sample = function (t, e) {
4575              var r = (t = Math.max(t, this.minDelayMs_)) / 1e3,
4576                i = (8 * e) / r;
4577              this.fast_.sample(r, i), this.slow_.sample(r, i);
4578            }),
4579            (e.sampleTTFB = function (t) {
4580              var e = t / 1e3,
4581                r = Math.sqrt(2) * Math.exp(-Math.pow(e, 2) / 2);
4582              this.ttfb_.sample(r, Math.max(t, 5));
4583            }),
4584            (e.canEstimate = function () {
4585              return this.fast_.getTotalWeight() >= this.minWeight_;
4586            }),
4587            (e.getEstimate = function () {
4588              return this.canEstimate()
4589                ? Math.min(this.fast_.getEstimate(), this.slow_.getEstimate())
4590                : this.defaultEstimate_;
4591            }),
4592            (e.getEstimateTTFB = function () {
4593              return this.ttfb_.getTotalWeight() >= this.minWeight_
4594                ? this.ttfb_.getEstimate()
4595                : this.defaultTTFB_;
4596            }),
4597            (e.destroy = function () {}),
4598            t
4599          );
4600        })(),
4601        Nr = {
4602          supported: !0,
4603          configurations: [],
4604          decodingInfoResults: [{ supported: !0, powerEfficient: !0, smooth: !0 }],
4605        },
4606        Ur = {};
4607      function Br(t, e, r) {
4608        var n = t.videoCodec,
4609          a = t.audioCodec;
4610        if (!n || !a || !r) return Promise.resolve(Nr);
4611        var s = {
4612            width: t.width,
4613            height: t.height,
4614            bitrate: Math.ceil(Math.max(0.9 * t.bitrate, t.averageBitrate)),
4615            framerate: t.frameRate || 30,
4616          },
4617          o = t.videoRange;
4618        'SDR' !== o && (s.transferFunction = o.toLowerCase());
4619        var l = n.split(',').map(function (t) {
4620          return { type: 'media-source', video: i(i({}, s), {}, { contentType: he(t, 'video') }) };
4621        });
4622        return (
4623          a &&
4624            t.audioGroups &&
4625            t.audioGroups.forEach(function (t) {
4626              var r;
4627              t &&
4628                (null == (r = e.groups[t]) ||
4629                  r.tracks.forEach(function (e) {
4630                    if (e.groupId === t) {
4631                      var r = e.channels || '',
4632                        i = parseFloat(r);
4633                      y(i) &&
4634                        i > 2 &&
4635                        l.push.apply(
4636                          l,
4637                          a.split(',').map(function (t) {
4638                            return {
4639                              type: 'media-source',
4640                              audio: { contentType: he(t, 'audio'), channels: '' + i },
4641                            };
4642                          })
4643                        );
4644                    }
4645                  }));
4646            }),
4647          Promise.all(
4648            l.map(function (t) {
4649              var e = (function (t) {
4650                var e = t.audio,
4651                  r = t.video,
4652                  i = r || e;
4653                if (i) {
4654                  var n = i.contentType.split('"')[1];
4655                  if (r)
4656                    return (
4657                      'r' +
4658                      r.height +
4659                      'x' +
4660                      r.width +
4661                      'f' +
4662                      Math.ceil(r.framerate) +
4663                      (r.transferFunction || 'sd') +
4664                      '_' +
4665                      n +
4666                      '_' +
4667                      Math.ceil(r.bitrate / 1e5)
4668                    );
4669                  if (e) return 'c' + e.channels + (e.spatialRendering ? 's' : 'n') + '_' + n;
4670                }
4671                return '';
4672              })(t);
4673              return Ur[e] || (Ur[e] = r.decodingInfo(t));
4674            })
4675          )
4676            .then(function (t) {
4677              return {
4678                supported: !t.some(function (t) {
4679                  return !t.supported;
4680                }),
4681                configurations: l,
4682                decodingInfoResults: t,
4683              };
4684            })
4685            .catch(function (t) {
4686              return { supported: !1, configurations: l, decodingInfoResults: [], error: t };
4687            })
4688        );
4689      }
4690      function Gr(t, e) {
4691        var r = !1,
4692          i = [];
4693        return (
4694          t && ((r = 'SDR' !== t), (i = [t])),
4695          e &&
4696            ((i = e.allowedVideoRanges || er.slice(0)),
4697            (i = (r =
4698              void 0 !== e.preferHDR
4699                ? e.preferHDR
4700                : (function () {
4701                    if ('function' == typeof matchMedia) {
4702                      var t = matchMedia('(dynamic-range: high)'),
4703                        e = matchMedia('bad query');
4704                      if (t.media !== e.media) return !0 === t.matches;
4705                    }
4706                    return !1;
4707                  })())
4708              ? i.filter(function (t) {
4709                  return 'SDR' !== t;
4710                })
4711              : ['SDR'])),
4712          { preferHDR: r, allowedVideoRanges: i }
4713        );
4714      }
4715      function Kr(t, e) {
4716        w.log('[abr] start candidates with "' + t + '" ignored because ' + e);
4717      }
4718      function Hr(t, e, r) {
4719        if ('attrs' in t) {
4720          var i = e.indexOf(t);
4721          if (-1 !== i) return i;
4722        }
4723        for (var n = 0; n < e.length; n++) if (Vr(t, e[n], r)) return n;
4724        return -1;
4725      }
4726      function Vr(t, e, r) {
4727        var i = t.groupId,
4728          n = t.name,
4729          a = t.lang,
4730          s = t.assocLang,
4731          o = t.characteristics,
4732          l = t.default,
4733          u = t.forced;
4734        return (
4735          (void 0 === i || e.groupId === i) &&
4736          (void 0 === n || e.name === n) &&
4737          (void 0 === a || e.lang === a) &&
4738          (void 0 === a || e.assocLang === s) &&
4739          (void 0 === l || e.default === l) &&
4740          (void 0 === u || e.forced === u) &&
4741          (void 0 === o ||
4742            (function (t, e) {
4743              void 0 === e && (e = '');
4744              var r = t.split(','),
4745                i = e.split(',');
4746              return (
4747                r.length === i.length &&
4748                !r.some(function (t) {
4749                  return -1 === i.indexOf(t);
4750                })
4751              );
4752            })(o, e.characteristics)) &&
4753          (void 0 === r || r(t, e))
4754        );
4755      }
4756      function Yr(t, e) {
4757        var r = t.audioCodec,
4758          i = t.channels;
4759        return !(
4760          (void 0 !== r && (e.audioCodec || '').substring(0, 4) !== r.substring(0, 4)) ||
4761          (void 0 !== i && i !== (e.channels || '2'))
4762        );
4763      }
4764      function Wr(t, e, r) {
4765        for (var i = e; i > -1; i--) if (r(t[i])) return i;
4766        for (var n = e + 1; n < t.length; n++) if (r(t[n])) return n;
4767        return -1;
4768      }
4769      var jr = (function () {
4770          function t(t) {
4771            var e = this;
4772            (this.hls = void 0),
4773              (this.lastLevelLoadSec = 0),
4774              (this.lastLoadedFragLevel = -1),
4775              (this.firstSelection = -1),
4776              (this._nextAutoLevel = -1),
4777              (this.nextAutoLevelKey = ''),
4778              (this.audioTracksByGroup = null),
4779              (this.codecTiers = null),
4780              (this.timer = -1),
4781              (this.fragCurrent = null),
4782              (this.partCurrent = null),
4783              (this.bitrateTestDelay = 0),
4784              (this.bwEstimator = void 0),
4785              (this._abandonRulesCheck = function () {
4786                var t = e.fragCurrent,
4787                  r = e.partCurrent,
4788                  i = e.hls,
4789                  n = i.autoLevelEnabled,
4790                  a = i.media;
4791                if (t && a) {
4792                  var s = performance.now(),
4793                    o = r ? r.stats : t.stats,
4794                    l = r ? r.duration : t.duration,
4795                    u = s - o.loading.start,
4796                    h = i.minAutoLevel;
4797                  if (o.aborted || (o.loaded && o.loaded === o.total) || t.level <= h)
4798                    return e.clearTimer(), void (e._nextAutoLevel = -1);
4799                  if (n && !a.paused && a.playbackRate && a.readyState) {
4800                    var d = i.mainForwardBufferInfo;
4801                    if (null !== d) {
4802                      var c = e.bwEstimator.getEstimateTTFB(),
4803                        f = Math.abs(a.playbackRate);
4804                      if (!(u <= Math.max(c, (l / (2 * f)) * 1e3))) {
4805                        var g = d.len / f,
4806                          v = o.loading.first ? o.loading.first - o.loading.start : -1,
4807                          m = o.loaded && v > -1,
4808                          p = e.getBwEstimate(),
4809                          E = i.levels,
4810                          T = E[t.level],
4811                          L = o.total || Math.max(o.loaded, Math.round((l * T.averageBitrate) / 8)),
4812                          A = m ? u - v : u;
4813                        A < 1 && m && (A = Math.min(u, (8 * o.loaded) / p));
4814                        var R = m ? (1e3 * o.loaded) / A : 0,
4815                          b = R ? (L - o.loaded) / R : (8 * L) / p + c / 1e3;
4816                        if (!(b <= g)) {
4817                          var k,
4818                            D = R ? 8 * R : p,
4819                            I = Number.POSITIVE_INFINITY;
4820                          for (k = t.level - 1; k > h; k--) {
4821                            var C = E[k].maxBitrate;
4822                            if ((I = e.getTimeToLoadFrag(c / 1e3, D, l * C, !E[k].details)) < g)
4823                              break;
4824                          }
4825                          if (!(I >= b || I > 10 * l)) {
4826                            (i.nextLoadLevel = i.nextAutoLevel = k),
4827                              m
4828                                ? e.bwEstimator.sample(u - Math.min(c, v), o.loaded)
4829                                : e.bwEstimator.sampleTTFB(u);
4830                            var _ = E[k].maxBitrate;
4831                            e.getBwEstimate() * e.hls.config.abrBandWidthUpFactor > _ &&
4832                              e.resetEstimator(_),
4833                              e.clearTimer(),
4834                              w.warn(
4835                                '[abr] Fragment ' +
4836                                  t.sn +
4837                                  (r ? ' part ' + r.index : '') +
4838                                  ' of level ' +
4839                                  t.level +
4840                                  ' is loading too slowly;\n      Time to underbuffer: ' +
4841                                  g.toFixed(3) +
4842                                  ' s\n      Estimated load time for current fragment: ' +
4843                                  b.toFixed(3) +
4844                                  ' s\n      Estimated load time for down switch fragment: ' +
4845                                  I.toFixed(3) +
4846                                  ' s\n      TTFB estimate: ' +
4847                                  (0 | v) +
4848                                  ' ms\n      Current BW estimate: ' +
4849                                  (y(p) ? 0 | p : 'Unknown') +
4850                                  ' bps\n      New BW estimate: ' +
4851                                  (0 | e.getBwEstimate()) +
4852                                  ' bps\n      Switching to level ' +
4853                                  k +
4854                                  ' @ ' +
4855                                  (0 | _) +
4856                                  ' bps'
4857                              ),
4858                              i.trigger(S.FRAG_LOAD_EMERGENCY_ABORTED, {
4859                                frag: t,
4860                                part: r,
4861                                stats: o,
4862                              });
4863                          }
4864                        }
4865                      }
4866                    }
4867                  }
4868                }
4869              }),
4870              (this.hls = t),
4871              (this.bwEstimator = this.initEstimator()),
4872              this.registerListeners();
4873          }
4874          var e = t.prototype;
4875          return (
4876            (e.resetEstimator = function (t) {
4877              t &&
4878                (w.log('setting initial bwe to ' + t),
4879                (this.hls.config.abrEwmaDefaultEstimate = t)),
4880                (this.firstSelection = -1),
4881                (this.bwEstimator = this.initEstimator());
4882            }),
4883            (e.initEstimator = function () {
4884              var t = this.hls.config;
4885              return new Or(t.abrEwmaSlowVoD, t.abrEwmaFastVoD, t.abrEwmaDefaultEstimate);
4886            }),
4887            (e.registerListeners = function () {
4888              var t = this.hls;
4889              t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
4890                t.on(S.FRAG_LOADING, this.onFragLoading, this),
4891                t.on(S.FRAG_LOADED, this.onFragLoaded, this),
4892                t.on(S.FRAG_BUFFERED, this.onFragBuffered, this),
4893                t.on(S.LEVEL_SWITCHING, this.onLevelSwitching, this),
4894                t.on(S.LEVEL_LOADED, this.onLevelLoaded, this),
4895                t.on(S.LEVELS_UPDATED, this.onLevelsUpdated, this),
4896                t.on(S.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this),
4897                t.on(S.ERROR, this.onError, this);
4898            }),
4899            (e.unregisterListeners = function () {
4900              var t = this.hls;
4901              t &&
4902                (t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
4903                t.off(S.FRAG_LOADING, this.onFragLoading, this),
4904                t.off(S.FRAG_LOADED, this.onFragLoaded, this),
4905                t.off(S.FRAG_BUFFERED, this.onFragBuffered, this),
4906                t.off(S.LEVEL_SWITCHING, this.onLevelSwitching, this),
4907                t.off(S.LEVEL_LOADED, this.onLevelLoaded, this),
4908                t.off(S.LEVELS_UPDATED, this.onLevelsUpdated, this),
4909                t.off(S.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this),
4910                t.off(S.ERROR, this.onError, this));
4911            }),
4912            (e.destroy = function () {
4913              this.unregisterListeners(),
4914                this.clearTimer(),
4915                (this.hls = this._abandonRulesCheck = null),
4916                (this.fragCurrent = this.partCurrent = null);
4917            }),
4918            (e.onManifestLoading = function (t, e) {
4919              (this.lastLoadedFragLevel = -1),
4920                (this.firstSelection = -1),
4921                (this.lastLevelLoadSec = 0),
4922                (this.fragCurrent = this.partCurrent = null),
4923                this.onLevelsUpdated(),
4924                this.clearTimer();
4925            }),
4926            (e.onLevelsUpdated = function () {
4927              this.lastLoadedFragLevel > -1 &&
4928                this.fragCurrent &&
4929                (this.lastLoadedFragLevel = this.fragCurrent.level),
4930                (this._nextAutoLevel = -1),
4931                this.onMaxAutoLevelUpdated(),
4932                (this.codecTiers = null),
4933                (this.audioTracksByGroup = null);
4934            }),
4935            (e.onMaxAutoLevelUpdated = function () {
4936              (this.firstSelection = -1), (this.nextAutoLevelKey = '');
4937            }),
4938            (e.onFragLoading = function (t, e) {
4939              var r,
4940                i = e.frag;
4941              this.ignoreFragment(i) ||
4942                (i.bitrateTest ||
4943                  ((this.fragCurrent = i), (this.partCurrent = null != (r = e.part) ? r : null)),
4944                this.clearTimer(),
4945                (this.timer = self.setInterval(this._abandonRulesCheck, 100)));
4946            }),
4947            (e.onLevelSwitching = function (t, e) {
4948              this.clearTimer();
4949            }),
4950            (e.onError = function (t, e) {
4951              if (!e.fatal)
4952                switch (e.details) {
4953                  case A.BUFFER_ADD_CODEC_ERROR:
4954                  case A.BUFFER_APPEND_ERROR:
4955                    (this.lastLoadedFragLevel = -1), (this.firstSelection = -1);
4956                    break;
4957                  case A.FRAG_LOAD_TIMEOUT:
4958                    var r = e.frag,
4959                      i = this.fragCurrent,
4960                      n = this.partCurrent;
4961                    if (r && i && r.sn === i.sn && r.level === i.level) {
4962                      var a = performance.now(),
4963                        s = n ? n.stats : r.stats,
4964                        o = a - s.loading.start,
4965                        l = s.loading.first ? s.loading.first - s.loading.start : -1;
4966                      if (s.loaded && l > -1) {
4967                        var u = this.bwEstimator.getEstimateTTFB();
4968                        this.bwEstimator.sample(o - Math.min(u, l), s.loaded);
4969                      } else this.bwEstimator.sampleTTFB(o);
4970                    }
4971                }
4972            }),
4973            (e.getTimeToLoadFrag = function (t, e, r, i) {
4974              return t + r / e + (i ? this.lastLevelLoadSec : 0);
4975            }),
4976            (e.onLevelLoaded = function (t, e) {
4977              var r = this.hls.config,
4978                i = e.stats.loading,
4979                n = i.end - i.start;
4980              y(n) && (this.lastLevelLoadSec = n / 1e3),
4981                e.details.live
4982                  ? this.bwEstimator.update(r.abrEwmaSlowLive, r.abrEwmaFastLive)
4983                  : this.bwEstimator.update(r.abrEwmaSlowVoD, r.abrEwmaFastVoD);
4984            }),
4985            (e.onFragLoaded = function (t, e) {
4986              var r = e.frag,
4987                i = e.part,
4988                n = i ? i.stats : r.stats;
4989              if (
4990                (r.type === Fe && this.bwEstimator.sampleTTFB(n.loading.first - n.loading.start),
4991                !this.ignoreFragment(r))
4992              ) {
4993                if (
4994                  (this.clearTimer(),
4995                  r.level === this._nextAutoLevel && (this._nextAutoLevel = -1),
4996                  (this.firstSelection = -1),
4997                  this.hls.config.abrMaxWithRealBitrate)
4998                ) {
4999                  var a = i ? i.duration : r.duration,
5000                    s = this.hls.levels[r.level],
5001                    o = (s.loaded ? s.loaded.bytes : 0) + n.loaded,
5002                    l = (s.loaded ? s.loaded.duration : 0) + a;
5003                  (s.loaded = { bytes: o, duration: l }), (s.realBitrate = Math.round((8 * o) / l));
5004                }
5005                if (r.bitrateTest) {
5006                  var u = { stats: n, frag: r, part: i, id: r.type };
5007                  this.onFragBuffered(S.FRAG_BUFFERED, u), (r.bitrateTest = !1);
5008                } else this.lastLoadedFragLevel = r.level;
5009              }
5010            }),
5011            (e.onFragBuffered = function (t, e) {
5012              var r = e.frag,
5013                i = e.part,
5014                n = null != i && i.stats.loaded ? i.stats : r.stats;
5015              if (!n.aborted && !this.ignoreFragment(r)) {
5016                var a =
5017                  n.parsing.end -
5018                  n.loading.start -
5019                  Math.min(n.loading.first - n.loading.start, this.bwEstimator.getEstimateTTFB());
5020                this.bwEstimator.sample(a, n.loaded),
5021                  (n.bwEstimate = this.getBwEstimate()),
5022                  r.bitrateTest ? (this.bitrateTestDelay = a / 1e3) : (this.bitrateTestDelay = 0);
5023              }
5024            }),
5025            (e.ignoreFragment = function (t) {
5026              return t.type !== Fe || 'initSegment' === t.sn;
5027            }),
5028            (e.clearTimer = function () {
5029              this.timer > -1 && (self.clearInterval(this.timer), (this.timer = -1));
5030            }),
5031            (e.getAutoLevelKey = function () {
5032              return this.getBwEstimate() + '_' + this.getStarvationDelay().toFixed(2);
5033            }),
5034            (e.getNextABRAutoLevel = function () {
5035              var t = this.fragCurrent,
5036                e = this.partCurrent,
5037                r = this.hls,
5038                i = r.maxAutoLevel,
5039                n = r.config,
5040                a = r.minAutoLevel,
5041                s = e ? e.duration : t ? t.duration : 0,
5042                o = this.getBwEstimate(),
5043                l = this.getStarvationDelay(),
5044                u = n.abrBandWidthFactor,
5045                h = n.abrBandWidthUpFactor;
5046              if (l) {
5047                var d = this.findBestLevel(o, a, i, l, 0, u, h);
5048                if (d >= 0) return d;
5049              }
5050              var c = s ? Math.min(s, n.maxStarvationDelay) : n.maxStarvationDelay;
5051              if (!l) {
5052                var f = this.bitrateTestDelay;
5053                f &&
5054                  ((c = (s ? Math.min(s, n.maxLoadingDelay) : n.maxLoadingDelay) - f),
5055                  w.info(
5056                    '[abr] bitrate test took ' +
5057                      Math.round(1e3 * f) +
5058                      'ms, set first fragment max fetchDuration to ' +
5059                      Math.round(1e3 * c) +
5060                      ' ms'
5061                  ),
5062                  (u = h = 1));
5063              }
5064              var g = this.findBestLevel(o, a, i, l, c, u, h);
5065              if (
5066                (w.info(
5067                  '[abr] ' +
5068                    (l ? 'rebuffering expected' : 'buffer is empty') +
5069                    ', optimal quality level ' +
5070                    g
5071                ),
5072                g > -1)
5073              )
5074                return g;
5075              var v = r.levels[a],
5076                m = r.levels[r.loadLevel];
5077              return (null == v ? void 0 : v.bitrate) < (null == m ? void 0 : m.bitrate)
5078                ? a
5079                : r.loadLevel;
5080            }),
5081            (e.getStarvationDelay = function () {
5082              var t = this.hls,
5083                e = t.media;
5084              if (!e) return 1 / 0;
5085              var r = e && 0 !== e.playbackRate ? Math.abs(e.playbackRate) : 1,
5086                i = t.mainForwardBufferInfo;
5087              return (i ? i.len : 0) / r;
5088            }),
5089            (e.getBwEstimate = function () {
5090              return this.bwEstimator.canEstimate()
5091                ? this.bwEstimator.getEstimate()
5092                : this.hls.config.abrEwmaDefaultEstimate;
5093            }),
5094            (e.findBestLevel = function (t, e, r, i, n, a, s) {
5095              var o,
5096                l = this,
5097                u = i + n,
5098                h = this.lastLoadedFragLevel,
5099                d = -1 === h ? this.hls.firstLevel : h,
5100                c = this.fragCurrent,
5101                f = this.partCurrent,
5102                g = this.hls,
5103                v = g.levels,
5104                m = g.allAudioTracks,
5105                p = g.loadLevel,
5106                E = g.config;
5107              if (1 === v.length) return 0;
5108              var T,
5109                S = v[d],
5110                L = !(null == S || null == (o = S.details) || !o.live),
5111                A = -1 === p || -1 === h,
5112                R = 'SDR',
5113                b = (null == S ? void 0 : S.frameRate) || 0,
5114                k = E.audioPreference,
5115                D = E.videoPreference,
5116                I =
5117                  this.audioTracksByGroup ||
5118                  (this.audioTracksByGroup = (function (t) {
5119                    return t.reduce(
5120                      function (t, e) {
5121                        var r = t.groups[e.groupId];
5122                        r ||
5123                          (r = t.groups[e.groupId] =
5124                            { tracks: [], channels: { 2: 0 }, hasDefault: !1, hasAutoSelect: !1 }),
5125                          r.tracks.push(e);
5126                        var i = e.channels || '2';
5127                        return (
5128                          (r.channels[i] = (r.channels[i] || 0) + 1),
5129                          (r.hasDefault = r.hasDefault || e.default),
5130                          (r.hasAutoSelect = r.hasAutoSelect || e.autoselect),
5131                          r.hasDefault && (t.hasDefaultAudio = !0),
5132                          r.hasAutoSelect && (t.hasAutoSelectAudio = !0),
5133                          t
5134                        );
5135                      },
5136                      { hasDefaultAudio: !1, hasAutoSelectAudio: !1, groups: {} }
5137                    );
5138                  })(m));
5139              if (A) {
5140                if (-1 !== this.firstSelection) return this.firstSelection;
5141                var C =
5142                    this.codecTiers ||
5143                    (this.codecTiers = (function (t, e, r, i) {
5144                      return t.slice(r, i + 1).reduce(function (t, r) {
5145                        if (!r.codecSet) return t;
5146                        var i = r.audioGroups,
5147                          n = t[r.codecSet];
5148                        n ||
5149                          (t[r.codecSet] = n =
5150                            {
5151                              minBitrate: 1 / 0,
5152                              minHeight: 1 / 0,
5153                              minFramerate: 1 / 0,
5154                              maxScore: 0,
5155                              videoRanges: { SDR: 0 },
5156                              channels: { 2: 0 },
5157                              hasDefaultAudio: !i,
5158                              fragmentError: 0,
5159                            }),
5160                          (n.minBitrate = Math.min(n.minBitrate, r.bitrate));
5161                        var a = Math.min(r.height, r.width);
5162                        return (
5163                          (n.minHeight = Math.min(n.minHeight, a)),
5164                          (n.minFramerate = Math.min(n.minFramerate, r.frameRate)),
5165                          (n.maxScore = Math.max(n.maxScore, r.score)),
5166                          (n.fragmentError += r.fragmentError),
5167                          (n.videoRanges[r.videoRange] = (n.videoRanges[r.videoRange] || 0) + 1),
5168                          i &&
5169                            i.forEach(function (t) {
5170                              if (t) {
5171                                var r = e.groups[t];
5172                                r &&
5173                                  ((n.hasDefaultAudio =
5174                                    n.hasDefaultAudio || e.hasDefaultAudio
5175                                      ? r.hasDefault
5176                                      : r.hasAutoSelect ||
5177                                        (!e.hasDefaultAudio && !e.hasAutoSelectAudio)),
5178                                  Object.keys(r.channels).forEach(function (t) {
5179                                    n.channels[t] = (n.channels[t] || 0) + r.channels[t];
5180                                  }));
5181                              }
5182                            }),
5183                          t
5184                        );
5185                      }, {});
5186                    })(v, I, e, r)),
5187                  _ = (function (t, e, r, i, n) {
5188                    for (
5189                      var a = Object.keys(t),
5190                        s = null == i ? void 0 : i.channels,
5191                        o = null == i ? void 0 : i.audioCodec,
5192                        l = s && 2 === parseInt(s),
5193                        u = !0,
5194                        h = !1,
5195                        d = 1 / 0,
5196                        c = 1 / 0,
5197                        f = 1 / 0,
5198                        g = 0,
5199                        v = [],
5200                        m = Gr(e, n),
5201                        p = m.preferHDR,
5202                        E = m.allowedVideoRanges,
5203                        T = function () {
5204                          var e = t[a[S]];
5205                          (u = e.channels[2] > 0),
5206                            (d = Math.min(d, e.minHeight)),
5207                            (c = Math.min(c, e.minFramerate)),
5208                            (f = Math.min(f, e.minBitrate));
5209                          var r = E.filter(function (t) {
5210                            return e.videoRanges[t] > 0;
5211                          });
5212                          r.length > 0 && ((h = !0), (v = r));
5213                        },
5214                        S = a.length;
5215                      S--;
5216
5217                    )
5218                      T();
5219                    (d = y(d) ? d : 0), (c = y(c) ? c : 0);
5220                    var L = Math.max(1080, d),
5221                      A = Math.max(30, c);
5222                    return (
5223                      (f = y(f) ? f : r),
5224                      (r = Math.max(f, r)),
5225                      h || ((e = void 0), (v = [])),
5226                      {
5227                        codecSet: a.reduce(function (e, i) {
5228                          var n = t[i];
5229                          if (i === e) return e;
5230                          if (n.minBitrate > r)
5231                            return (
5232                              Kr(
5233                                i,
5234                                'min bitrate of ' + n.minBitrate + ' > current estimate of ' + r
5235                              ),
5236                              e
5237                            );
5238                          if (!n.hasDefaultAudio)
5239                            return (
5240                              Kr(i, 'no renditions with default or auto-select sound found'), e
5241                            );
5242                          if (o && i.indexOf(o.substring(0, 4)) % 5 != 0)
5243                            return Kr(i, 'audio codec preference "' + o + '" not found'), e;
5244                          if (s && !l) {
5245                            if (!n.channels[s])
5246                              return (
5247                                Kr(
5248                                  i,
5249                                  'no renditions with ' +
5250                                    s +
5251                                    ' channel sound found (channels options: ' +
5252                                    Object.keys(n.channels) +
5253                                    ')'
5254                                ),
5255                                e
5256                              );
5257                          } else if ((!o || l) && u && 0 === n.channels[2]) return Kr(i, 'no renditions with stereo sound found'), e;
5258                          return n.minHeight > L
5259                            ? (Kr(i, 'min resolution of ' + n.minHeight + ' > maximum of ' + L), e)
5260                            : n.minFramerate > A
5261                            ? (Kr(i, 'min framerate of ' + n.minFramerate + ' > maximum of ' + A),
5262                              e)
5263                            : v.some(function (t) {
5264                                return n.videoRanges[t] > 0;
5265                              })
5266                            ? n.maxScore < g
5267                              ? (Kr(i, 'max score of ' + n.maxScore + ' < selected max of ' + g), e)
5268                              : e && (ce(i) >= ce(e) || n.fragmentError > t[e].fragmentError)
5269                              ? e
5270                              : ((g = n.maxScore), i)
5271                            : (Kr(
5272                                i,
5273                                'no variants with VIDEO-RANGE of ' + JSON.stringify(v) + ' found'
5274                              ),
5275                              e);
5276                        }, void 0),
5277                        videoRanges: v,
5278                        preferHDR: p,
5279                        minFramerate: c,
5280                        minBitrate: f,
5281                      }
5282                    );
5283                  })(C, R, t, k, D),
5284                  x = _.codecSet,
5285                  P = _.videoRanges,
5286                  F = _.minFramerate,
5287                  M = _.minBitrate,
5288                  O = _.preferHDR;
5289                (T = x),
5290                  (R = O ? P[P.length - 1] : P[0]),
5291                  (b = F),
5292                  (t = Math.max(t, M)),
5293                  w.log('[abr] picked start tier ' + JSON.stringify(_));
5294              } else (T = null == S ? void 0 : S.codecSet), (R = null == S ? void 0 : S.videoRange);
5295              for (
5296                var N,
5297                  U = f ? f.duration : c ? c.duration : 0,
5298                  B = this.bwEstimator.getEstimateTTFB() / 1e3,
5299                  G = [],
5300                  K = function () {
5301                    var e,
5302                      o = v[H],
5303                      c = H > d;
5304                    if (!o) return 0;
5305                    if (E.useMediaCapabilities && !o.supportedResult && !o.supportedPromise) {
5306                      var g = navigator.mediaCapabilities;
5307                      'function' == typeof (null == g ? void 0 : g.decodingInfo) &&
5308                      (function (t, e, r, i, n, a) {
5309                        var s = t.audioCodec ? t.audioGroups : null,
5310                          o = null == a ? void 0 : a.audioCodec,
5311                          l = null == a ? void 0 : a.channels,
5312                          u = l ? parseInt(l) : o ? 1 / 0 : 2,
5313                          h = null;
5314                        if (null != s && s.length)
5315                          try {
5316                            h =
5317                              1 === s.length && s[0]
5318                                ? e.groups[s[0]].channels
5319                                : s.reduce(
5320                                    function (t, r) {
5321                                      if (r) {
5322                                        var i = e.groups[r];
5323                                        if (!i)
5324                                          throw new Error('Audio track group ' + r + ' not found');
5325                                        Object.keys(i.channels).forEac
5325h(function (e) {
5326                                          t[e] = (t[e] || 0) + i.channels[e];
5327                                        });
5328                                      }
5329                                      return t;
5330                                    },
5331                                    { 2: 0 }
5332                                  );
5333                          } catch (t) {
5334                            return !0;
5335                          }
5336                        return (
5337                          (void 0 !== t.videoCodec &&
5338                            ((t.width > 1920 && t.height > 1088) ||
5339                              (t.height > 1920 && t.width > 1088) ||
5340                              t.frameRate > Math.max(i, 30) ||
5341                              ('SDR' !== t.videoRange && t.videoRange !== r) ||
5342                              t.bitrate > Math.max(n, 8e6))) ||
5343                          (!!h &&
5344                            y(u) &&
5345                            Object.keys(h).some(function (t) {
5346                              return parseInt(t) > u;
5347                            }))
5348                        );
5349                      })(o, I, R, b, t, k)
5350                        ? ((o.supportedPromise = Br(o, I, g)),
5351                          o.supportedPromise.then(function (t) {
5352                            if (l.hls) {
5353                              o.supportedResult = t;
5354                              var e = l.hls.levels,
5355                                r = e.indexOf(o);
5356                              t.error
5357                                ? w.warn(
5358                                    '[abr] MediaCapabilities decodingInfo error: "' +
5359                                      t.error +
5360                                      '" for level ' +
5361                                      r +
5362                                      ' ' +
5363                                      JSON.stringify(t)
5364                                  )
5365                                : t.supported ||
5366                                  (w.warn(
5367                                    '[abr] Unsupported MediaCapabilities decodingInfo result for level ' +
5368                                      r +
5369                                      ' ' +
5370                                      JSON.stringify(t)
5371                                  ),
5372                                  r > -1 &&
5373                                    e.length > 1 &&
5374                                    (w.log('[abr] Removing unsupported level ' + r),
5375                                    l.hls.removeLevel(r)));
5376                            }
5377                          }))
5378                        : (o.supportedResult = Nr);
5379                    }
5380                    if (
5381                      (T && o.codecSet !== T) ||
5382                      (R && o.videoRange !== R) ||
5383                      (c && b > o.frameRate) ||
5384                      (!c && b > 0 && b < o.frameRate) ||
5385                      (o.supportedResult &&
5386                        (null == (e = o.supportedResult.decodingInfoResults) || !e[0].smooth))
5387                    )
5388                      return G.push(H), 0;
5389                    var m,
5390                      D = o.details,
5391                      C =
5392                        (f
5393                          ? null == D
5394                            ? void 0
5395                            : D.partTarget
5396                          : null == D
5397                          ? void 0
5398                          : D.averagetargetduration) || U;
5399                    m = c ? s * t : a * t;
5400                    var _ = U && i >= 2 * U && 0 === n ? v[H].averageBitrate : v[H].maxBitrate,
5401                      x = l.getTimeToLoadFrag(B, m, _ * C, void 0 === D);
5402                    if (
5403                      m >= _ &&
5404                      (H === h || (0 === o.loadError && 0 === o.fragmentError)) &&
5405                      (x <= B || !y(x) || (L && !l.bitrateTestDelay) || x < u)
5406                    ) {
5407                      var P = l.forcedAutoLevel;
5408                      return (
5409                        H === p ||
5410                          (-1 !== P && P === p) ||
5411                          (G.length &&
5412                            w.trace(
5413                              '[abr] Skipped level(s) ' +
5414                                G.join(',') +
5415                                ' of ' +
5416                                r +
5417                                ' max with CODECS and VIDEO-RANGE:"' +
5418                                v[G[0]].codecs +
5419                                '" ' +
5420                                v[G[0]].videoRange +
5421                                '; not compatible with "' +
5422                                S.codecs +
5423                                '" ' +
5424                                R
5425                            ),
5426                          w.info(
5427                            '[abr] switch candidate:' +
5428                              d +
5429                              '->' +
5430                              H +
5431                              ' adjustedbw(' +
5432                              Math.round(m) +
5433                              ')-bitrate=' +
5434                              Math.round(m - _) +
5435                              ' ttfb:' +
5436                              B.toFixed(1) +
5437                              ' avgDuration:' +
5438                              C.toFixed(1) +
5439                              ' maxFetchDuration:' +
5440                              u.toFixed(1) +
5441                              ' fetchDuration:' +
5442                              x.toFixed(1) +
5443                              ' firstSelection:' +
5444                              A +
5445                              ' codecSet:' +
5446                              T +
5447                              ' videoRange:' +
5448                              R +
5449                              ' hls.loadLevel:' +
5450                              p
5451                          )),
5452                        A && (l.firstSelection = H),
5453                        { v: H }
5454                      );
5455                    }
5456                  },
5457                  H = r;
5458                H >= e;
5459                H--
5460              )
5461                if (0 !== (N = K()) && N) return N.v;
5462              return -1;
5463            }),
5464            s(t, [
5465              {
5466                key: 'firstAutoLevel',
5467                get: function () {
5468                  var t = this.hls,
5469                    e = t.maxAutoLevel,
5470                    r = t.minAutoLevel,
5471                    i = this.getBwEstimate(),
5472                    n = this.hls.config.maxStarvationDelay,
5473                    a = this.findBestLevel(i, r, e, 0, n, 1, 1);
5474                  if (a > -1) return a;
5475                  var s = this.hls.firstLevel,
5476                    o = Math.min(Math.max(s, r), e);
5477                  return (
5478                    w.warn(
5479                      '[abr] Could not find best starting auto level. Defaulting to first in playlist ' +
5480                        s +
5481                        ' clamped to ' +
5482                        o
5483                    ),
5484                    o
5485                  );
5486                },
5487              },
5488              {
5489                key: 'forcedAutoLevel',
5490                get: function () {
5491                  return this.nextAutoLevelKey ? -1 : this._nextAutoLevel;
5492                },
5493              },
5494              {
5495                key: 'nextAutoLevel',
5496                get: function () {
5497                  var t = this.forcedAutoLevel,
5498                    e = this.bwEstimator.canEstimate(),
5499                    r = this.lastLoadedFragLevel > -1;
5500                  if (!(-1 === t || (e && r && this.nextAutoLevelKey !== this.getAutoLevelKey())))
5501                    return t;
5502                  var i = e && r ? this.getNextABRAutoLevel() : this.firstAutoLevel;
5503                  if (-1 !== t) {
5504                    var n = this.hls.levels;
5505                    if (n.length > Math.max(t, i) && n[t].loadError <= n[i].loadError) return t;
5506                  }
5507                  return (
5508                    (this._nextAutoLevel = i), (this.nextAutoLevelKey = this.getAutoLevelKey()), i
5509                  );
5510                },
5511                set: function (t) {
5512                  var e = this.hls,
5513                    r = e.maxAutoLevel,
5514                    i = e.minAutoLevel,
5515                    n = Math.min(Math.max(t, i), r);
5516                  this._nextAutoLevel !== n &&
5517                    ((this.nextAutoLevelKey = ''), (this._nextAutoLevel = n));
5518                },
5519              },
5520            ]),
5521            t
5522          );
5523        })(),
5524        qr = (function () {
5525          function t() {
5526            (this._boundTick = void 0),
5527              (this._tickTimer = null),
5528              (this._tickInterval = null),
5529              (this._tickCallCount = 0),
5530              (this._boundTick = this.tick.bind(this));
5531          }
5532          var e = t.prototype;
5533          return (
5534            (e.destroy = function () {
5535              this.onHandlerDestroying(), this.onHandlerDestroyed();
5536            }),
5537            (e.onHandlerDestroying = function () {
5538              this.clearNextTick(), this.clearInterval();
5539            }),
5540            (e.onHandlerDestroyed = function () {}),
5541            (e.hasInterval = function () {
5542              return !!this._tickInterval;
5543            }),
5544            (e.hasNextTick = function () {
5545              return !!this._tickTimer;
5546            }),
5547            (e.setInterval = function (t) {
5548              return (
5549                !this._tickInterval &&
5550                ((this._tickCallCount = 0),
5551                (this._tickInterval = self.setInterval(this._boundTick, t)),
5552                !0)
5553              );
5554            }),
5555            (e.clearInterval = function () {
5556              return (
5557                !!this._tickInterval &&
5558                (self.clearInterval(this._tickInterval), (this._tickInterval = null), !0)
5559              );
5560            }),
5561            (e.clearNextTick = function () {
5562              return (
5563                !!this._tickTimer &&
5564                (self.clearTimeout(this._tickTimer), (this._tickTimer = null), !0)
5565              );
5566            }),
5567            (e.tick = function () {
5568              this._tickCallCount++,
5569                1 === this._tickCallCount &&
5570                  (this.doTick(),
5571                  this._tickCallCount > 1 && this.tickImmediate(),
5572                  (this._tickCallCount = 0));
5573            }),
5574            (e.tickImmediate = function () {
5575              this.clearNextTick(), (this._tickTimer = self.setTimeout(this._boundTick, 0));
5576            }),
5577            (e.doTick = function () {}),
5578            t
5579          );
5580        })(),
5581        Xr = 'NOT_LOADED',
5582        zr = 'APPENDING',
5583        Qr = 'PARTIAL',
5584        Jr = 'OK',
5585        $r = (function () {
5586          function t(t) {
5587            (this.activePartLists = Object.create(null)),
5588              (this.endListFragments = Object.create(null)),
5589              (this.fragments = Object.create(null)),
5590              (this.timeRanges = Object.create(null)),
5591              (this.bufferPadding = 0.2),
5592              (this.hls = void 0),
5593              (this.hasGaps = !1),
5594              (this.hls = t),
5595              this._registerListeners();
5596          }
5597          var e = t.prototype;
5598          return (
5599            (e._registerListeners = function () {
5600              var t = this.hls;
5601              t.on(S.BUFFER_APPENDED, this.onBufferAppended, this),
5602                t.on(S.FRAG_BUFFERED, this.onFragBuffered, this),
5603                t.on(S.FRAG_LOADED, this.onFragLoaded, this);
5604            }),
5605            (e._unregisterListeners = function () {
5606              var t = this.hls;
5607              t.off(S.BUFFER_APPENDED, this.onBufferAppended, this),
5608                t.off(S.FRAG_BUFFERED, this.onFragBuffered, this),
5609                t.off(S.FRAG_LOADED, this.onFragLoaded, this);
5610            }),
5611            (e.destroy = function () {
5612              this._unregisterListeners(),
5613                (this.fragments =
5614                  this.activePartLists =
5615                  this.endListFragments =
5616                  this.timeRanges =
5617                    null);
5618            }),
5619            (e.getAppendedFrag = function (t, e) {
5620              var r = this.activePartLists[e];
5621              if (r)
5622                for (var i = r.length; i--; ) {
5623                  var n = r[i];
5624                  if (!n) break;
5625                  var a = n.end;
5626                  if (n.start <= t && null !== a && t <= a) return n;
5627                }
5628              return this.getBufferedFrag(t, e);
5629            }),
5630            (e.getBufferedFrag = function (t, e) {
5631              for (var r = this.fragments, i = Object.keys(r), n = i.length; n--; ) {
5632                var a = r[i[n]];
5633                if ((null == a ? void 0 : a.body.type) === e && a.buffered) {
5634                  var s = a.body;
5635                  if (s.start <= t && t <= s.end) return s;
5636                }
5637              }
5638              return null;
5639            }),
5640            (e.detectEvictedFragments = function (t, e, r, i) {
5641              var n = this;
5642              this.timeRanges && (this.timeRanges[t] = e);
5643              var a = (null == i ? void 0 : i.fragment.sn) || -1;
5644              Object.keys(this.fragments).forEach(function (i) {
5645                var s = n.fragments[i];
5646                if (s && !(a >= s.body.sn))
5647                  if (s.buffered || s.loaded) {
5648                    var o = s.range[t];
5649                    o &&
5650                      o.time.some(function (t) {
5651                        var r = !n.isTimeBuffered(t.startPTS, t.endPTS, e);
5652                        return r && n.removeFragment(s.body), r;
5653                      });
5654                  } else s.body.type === r && n.removeFragment(s.body);
5655              });
5656            }),
5657            (e.detectPartialFragments = function (t) {
5658              var e = this,
5659                r = this.timeRanges,
5660                i = t.frag,
5661                n = t.part;
5662              if (r && 'initSegment' !== i.sn) {
5663                var a = ti(i),
5664                  s = this.fragments[a];
5665                if (!(!s || (s.buffered && i.gap))) {
5666                  var o = !i.relurl;
5667                  Object.keys(r).forEach(function (t) {
5668                    var a = i.elementaryStreams[t];
5669                    if (a) {
5670                      var l = r[t],
5671                        u = o || !0 === a.partial;
5672                      s.range[t] = e.getBufferedTimes(i, n, u, l);
5673                    }
5674                  }),
5675                    (s.loaded = null),
5676                    Object.keys(s.range).length
5677                      ? ((s.buffered = !0),
5678                        (s.body.endList = i.endList || s.body.endList) &&
5679                          (this.endListFragments[s.body.type] = s),
5680                        Zr(s) || this.removeParts(i.sn - 1, i.type))
5681                      : this.removeFragment(s.body);
5682                }
5683              }
5684            }),
5685            (e.removeParts = function (t, e) {
5686              var r = this.activePartLists[e];
5687              r &&
5688                (this.activePartLists[e] = r.filter(function (e) {
5689                  return e.fragment.sn >= t;
5690                }));
5691            }),
5692            (e.fragBuffered = function (t, e) {
5693              var r = ti(t),
5694                i = this.fragments[r];
5695              !i &&
5696                e &&
5697                ((i = this.fragments[r] =
5698                  {
5699                    body: t,
5700                    appendedPTS: null,
5701                    loaded: null,
5702                    buffered: !1,
5703                    range: Object.create(null),
5704                  }),
5705                t.gap && (this.hasGaps = !0)),
5706                i && ((i.loaded = null), (i.buffered = !0));
5707            }),
5708            (e.getBufferedTimes = function (t, e, r, i) {
5709              for (
5710                var n = { time: [], partial: r },
5711                  a = t.start,
5712                  s = t.end,
5713                  o = t.minEndPTS || s,
5714                  l = t.maxStartPTS || a,
5715                  u = 0;
5716                u < i.length;
5717                u++
5718              ) {
5719                var h = i.start(u) - this.bufferPadding,
5720                  d = i.end(u) + this.bufferPadding;
5721                if (l >= h && o <= d) {
5722                  n.time.push({ startPTS: Math.max(a, i.start(u)), endPTS: Math.min(s, i.end(u)) });
5723                  break;
5724                }
5725                if (a < d && s > h) {
5726                  var c = Math.max(a, i.start(u)),
5727                    f = Math.min(s, i.end(u));
5728                  f > c && ((n.partial = !0), n.time.push({ startPTS: c, endPTS: f }));
5729                } else if (s <= h) break;
5730              }
5731              return n;
5732            }),
5733            (e.getPartialFragment = function (t) {
5734              var e,
5735                r,
5736                i,
5737                n = null,
5738                a = 0,
5739                s = this.bufferPadding,
5740                o = this.fragments;
5741              return (
5742                Object.keys(o).forEach(function (l) {
5743                  var u = o[l];
5744                  u &&
5745                    Zr(u) &&
5746                    ((r = u.body.start - s),
5747                    (i = u.body.end + s),
5748                    t >= r &&
5749                      t <= i &&
5750                      ((e = Math.min(t - r, i - t)), a <= e && ((n = u.body), (a = e))));
5751                }),
5752                n
5753              );
5754            }),
5755            (e.isEndListAppended = function (t) {
5756              var e = this.endListFragments[t];
5757              return void 0 !== e && (e.buffered || Zr(e));
5758            }),
5759            (e.getState = function (t) {
5760              var e = ti(t),
5761                r = this.fragments[e];
5762              return r ? (r.buffered ? (Zr(r) ? Qr : Jr) : zr) : Xr;
5763            }),
5764            (e.isTimeBuffered = function (t, e, r) {
5765              for (var i, n, a = 0; a < r.length; a++) {
5766                if (
5767                  ((i = r.start(a) - this.bufferPadding),
5768                  (n = r.end(a) + this.bufferPadding),
5769                  t >= i && e <= n)
5770                )
5771                  return !0;
5772                if (e <= i) return !1;
5773              }
5774              return !1;
5775            }),
5776            (e.onFragLoaded = function (t, e) {
5777              var r = e.frag,
5778                i = e.part;
5779              if ('initSegment' !== r.sn && !r.bitrateTest) {
5780                var n = i ? null : e,
5781                  a = ti(r);
5782                this.fragments[a] = {
5783                  body: r,
5784                  appendedPTS: null,
5785                  loaded: n,
5786                  buffered: !1,
5787                  range: Object.create(null),
5788                };
5789              }
5790            }),
5791            (e.onBufferAppended = function (t, e) {
5792              var r = this,
5793                i = e.frag,
5794                n = e.part,
5795                a = e.timeRanges;
5796              if ('initSegment' !== i.sn) {
5797                var s = i.type;
5798                if (n) {
5799                  var o = this.activePartLists[s];
5800                  o || (this.activePartLists[s] = o = []), o.push(n);
5801                }
5802                (this.timeRanges = a),
5803                  Object.keys(a).forEach(function (t) {
5804                    var e = a[t];
5805                    r.detectEvictedFragments(t, e, s, n);
5806                  });
5807              }
5808            }),
5809            (e.onFragBuffered = function (t, e) {
5810              this.detectPartialFragments(e);
5811            }),
5812            (e.hasFragment = function (t) {
5813              var e = ti(t);
5814              return !!this.fragments[e];
5815            }),
5816            (e.hasParts = function (t) {
5817              var e;
5818              return !(null == (e = this.activePartLists[t]) || !e.length);
5819            }),
5820            (e.removeFragmentsInRange = function (t, e, r, i, n) {
5821              var a = this;
5822              (i && !this.hasGaps) ||
5823                Object.keys(this.fragments).forEach(function (s) {
5824                  var o = a.fragments[s];
5825                  if (o) {
5826                    var l = o.body;
5827                    l.type !== r ||
5828                      (i && !l.gap) ||
5829                      (l.start < e && l.end > t && (o.buffered || n) && a.removeFragment(l));
5830                  }
5831                });
5832            }),
5833            (e.removeFragment = function (t) {
5834              var e = ti(t);
5835              (t.stats.loaded = 0), t.clearElementaryStreamInfo();
5836              var r = this.activePartLists[t.type];
5837              if (r) {
5838                var i = t.sn;
5839                this.activePartLists[t.type] = r.filter(function (t) {
5840                  return t.fragment.sn !== i;
5841                });
5842              }
5843              delete this.fragments[e], t.endList && delete this.endListFragments[t.type];
5844            }),
5845            (e.removeAllFragments = function () {
5846              (this.fragments = Object.create(null)),
5847                (this.endListFragments = Object.create(null)),
5848                (this.activePartLists = Object.create(null)),
5849                (this.hasGaps = !1);
5850            }),
5851            t
5852          );
5853        })();
5854      function Zr(t) {
5855        var e, r, i;
5856        return (
5857          t.buffered &&
5858          (t.body.gap ||
5859            (null == (e = t.range.video) ? void 0 : e.partial) ||
5860            (null == (r = t.range.audio) ? void 0 : r.partial) ||
5861            (null == (i = t.range.audiovideo) ? void 0 : i.partial))
5862        );
5863      }
5864      function ti(t) {
5865        return t.type + '_' + t.level + '_' + t.sn;
5866      }
5867      var ei = {
5868          length: 0,
5869          start: function () {
5870            return 0;
5871          },
5872          end: function () {
5873            return 0;
5874          },
5875        },
5876        ri = (function () {
5877          function t() {}
5878          return (
5879            (t.isBuffered = function (e, r) {
5880              try {
5881                if (e)
5882                  for (var i = t.getBuffered(e), n = 0; n < i.length; n++)
5883                    if (r >= i.start(n) && r <= i.end(n)) return !0;
5884              } catch (t) {}
5885              return !1;
5886            }),
5887            (t.bufferInfo = function (e, r, i) {
5888              try {
5889                if (e) {
5890                  var n,
5891                    a = t.getBuffered(e),
5892                    s = [];
5893                  for (n = 0; n < a.length; n++) s.push({ start: a.start(n), end: a.end(n) });
5894                  return this.bufferedInfo(s, r, i);
5895                }
5896              } catch (t) {}
5897              return { len: 0, start: r, end: r, nextStart: void 0 };
5898            }),
5899            (t.bufferedInfo = function (t, e, r) {
5900              (e = Math.max(0, e)),
5901                t.sort(function (t, e) {
5902                  var r = t.start - e.start;
5903                  return r || e.end - t.end;
5904                });
5905              var i = [];
5906              if (r)
5907                for (var n = 0; n < t.length; n++) {
5908                  var a = i.length;
5909                  if (a) {
5910                    var s = i[a - 1].end;
5911                    t[n].start - s < r ? t[n].end > s && (i[a - 1].end = t[n].end) : i.push(t[n]);
5912                  } else i.push(t[n]);
5913                }
5914              else i = t;
5915              for (var o, l = 0, u = e, h = e, d = 0; d < i.length; d++) {
5916                var c = i[d].start,
5917                  f = i[d].end;
5918                if (e + r >= c && e < f) (u = c), (l = (h = f) - e);
5919                else if (e + r < c) {
5920                  o = c;
5921                  break;
5922                }
5923              }
5924              return { len: l, start: u || 0, end: h || 0, nextStart: o };
5925            }),
5926            (t.getBuffered = function (t) {
5927              try {
5928                return t.buffered;
5929              } catch (t) {
5930                return w.log('failed to get media.buffered', t), ei;
5931              }
5932            }),
5933            t
5934          );
5935        })(),
5936        ii = function (t, e, r, i, n, a) {
5937          void 0 === i && (i = 0),
5938            void 0 === n && (n = -1),
5939            void 0 === a && (a = !1),
5940            (this.level = void 0),
5941            (this.sn = void 0),
5942            (this.part = void 0),
5943            (this.id = void 0),
5944            (this.size = void 0),
5945            (this.partial = void 0),
5946            (this.transmuxing = { start: 0, executeStart: 0, executeEnd: 0, end: 0 }),
5947            (this.buffering = {
5948              audio: { start: 0, executeStart: 0, executeEnd: 0, end: 0 },
5949              video: { start: 0, executeStart: 0, executeEnd: 0, end: 0 },
5950              audiovideo: { start: 0, executeStart: 0, executeEnd: 0, end: 0 },
5951            }),
5952            (this.level = t),
5953            (this.sn = e),
5954            (this.id = r),
5955            (this.size = i),
5956            (this.part = n),
5957            (this.partial = a);
5958        };
5959      function ni(t, e) {
5960        for (var r = 0, i = t.length; r < i; r++) {
5961          var n;
5962          if ((null == (n = t[r]) ? void 0 : n.cc) === e) return t[r];
5963        }
5964        return null;
5965      }
5966      function ai(t, e) {
5967        if (t) {
5968          var r = t.start + e;
5969          (t.start = t.startPTS = r), (t.endPTS = r + t.duration);
5970        }
5971      }
5972      function si(t, e) {
5973        for (var r = e.fragments, i = 0, n = r.length; i < n; i++) ai(r[i], t);
5974        e.fragmentHint && ai(e.fragmentHint, t), (e.alignedSliding = !0);
5975      }
5976      function oi(t, e, r) {
5977        e &&
5978          ((function (t, e, r) {
5979            if (
5980              (function (t, e, r) {
5981                return !(!e || !(r.endCC > r.startCC || (t && t.cc < r.startCC)));
5982              })(t, r, e)
5983            ) {
5984              var i = (function (t, e) {
5985                var r = t.fragments,
5986                  i = e.fragments;
5987                if (i.length && r.length) {
5988                  var n = ni(r, i[0].cc);
5989                  if (n && (!n || n.startPTS)) return n;
5990                  w.log('No frag in previous level to align on');
5991                } else w.log('No fragments to align');
5992              })(r, e);
5993              i &&
5994                y(i.start) &&
5995                (w.log(
5996                  'Adjusting PTS using last level due to CC increase within current level ' + e.url
5997                ),
5998                si(i.start, e));
5999            }
6000          })(t, r, e),
6001          !r.alignedSliding && e && li(r, e),
6002          r.alignedSliding || !e || r.skippedSegments || cr(e, r));
6003      }
6004      function li(t, e) {
6005        if (t.hasProgramDateTime && e.hasProgramDateTime) {
6006          var r = t.fragments,
6007            i = e.fragments;
6008          if (r.length && i.length) {
6009            var n,
6010              a,
6011              s = Math.min(e.endCC, t.endCC);
6012            e.startCC < s && t.startCC < s && ((n = ni(i, s)), (a = ni(r, s))),
6013              (n && a) ||
6014                (a = ni(r, (n = i[Math.floor(i.length / 2)]).cc) || r[Math.floor(r.length / 2)]);
6015            var o = n.programDateTime,
6016              l = a.programDateTime;
6017            o && l && si((l - o) / 1e3 - (a.start - n.start), t);
6018          }
6019        }
6020      }
6021      var ui = Math.pow(2, 17),
6022        hi = (function () {
6023          function t(t) {
6024            (this.config = void 0),
6025              (this.loader = null),
6026              (this.partLoadTimeout = -1),
6027              (this.config = t);
6028          }
6029          var e = t.prototype;
6030          return (
6031            (e.destroy = function () {
6032              this.loader && (this.loader.destroy(), (this.loader = null));
6033            }),
6034            (e.abort = function () {
6035              this.loader && this.loader.abort();
6036            }),
6037            (e.load = function (t, e) {
6038              var r = this,
6039                n = t.url;
6040              if (!n)
6041                return Promise.reject(
6042                  new fi({
6043                    type: L.NETWORK_ERROR,
6044                    details: A.FRAG_LOAD_ERROR,
6045                    fatal: !1,
6046                    frag: t,
6047                    error: new Error('Fragment does not have a ' + (n ? 'part list' : 'url')),
6048                    networkDetails: null,
6049                  })
6050                );
6051              this.abort();
6052              var a = this.config,
6053                s = a.fLoader,
6054                o = a.loader;
6055              return new Promise(function (l, u) {
6056                if ((r.loader && r.loader.destroy(), t.gap)) {
6057                  if (
6058                    t.tagList.some(function (t) {
6059                      return 'GAP' === t[0];
6060                    })
6061                  )
6062                    return void u(ci(t));
6063                  t.gap = !1;
6064                }
6065                var h = (r.loader = t.loader = s ? new s(a) : new o(a)),
6066                  d = di(t),
6067                  c = Tr(a.fragLoadPolicy.default),
6068                  f = {
6069                    loadPolicy: c,
6070                    timeout: c.maxLoadTimeMs,
6071                    maxRetry: 0,
6072                    retryDelay: 0,
6073                    maxRetryDelay: 0,
6074                    highWaterMark: 'initSegment' === t.sn ? 1 / 0 : ui,
6075                  };
6076                (t.stats = h.stats),
6077                  h.load(d, f, {
6078                    onSuccess: function (e, i, n, a) {
6079                      r.resetLoader(t, h);
6080                      var s = e.data;
6081                      n.resetIV &&
6082                        t.decryptdata &&
6083                        ((t.decryptdata.iv = new Uint8Array(s.slice(0, 16))), (s = s.slice(16))),
6084                        l({ frag: t, part: null, payload: s, networkDetails: a });
6085                    },
6086                    onError: function (e, a, s, o) {
6087                      r.resetLoader(t, h),
6088                        u(
6089                          new fi({
6090                            type: L.NETWORK_ERROR,
6091                            details: A.FRAG_LOAD_ERROR,
6092                            fatal: !1,
6093                            frag: t,
6094                            response: i({ url: n, data: void 0 }, e),
6095                            error: new Error('HTTP Error ' + e.code + ' ' + e.text),
6096                            networkDetails: s,
6097                            stats: o,
6098                          })
6099                        );
6100                    },
6101                    onAbort: function (e, i, n) {
6102                      r.resetLoader(t, h),
6103                        u(
6104                          new fi({
6105                            type: L.NETWORK_ERROR,
6106                            details: A.INTERNAL_ABORTED,
6107                            fatal: !1,
6108                            frag: t,
6109                            error: new Error('Aborted'),
6110                            networkDetails: n,
6111                            stats: e,
6112                          })
6113                        );
6114                    },
6115                    onTimeout: function (e, i, n) {
6116                      r.resetLoader(t, h),
6117                        u(
6118                          new fi({
6119                            type: L.NETWORK_ERROR,
6120                            details: A.FRAG_LOAD_TIMEOUT,
6121                            fatal: !1,
6122                            frag: t,
6123                            error: new Error('Timeout after ' + f.timeout + 'ms'),
6124                            networkDetails: n,
6125                            stats: e,
6126                          })
6127                        );
6128                    },
6129                    onProgress: function (r, i, n, a) {
6130                      e && e({ frag: t, part: null, payload: n, networkDetails: a });
6131                    },
6132                  });
6133              });
6134            }),
6135            (e.loadPart = function (t, e, r) {
6136              var n = this;
6137              this.abort();
6138              var a = this.config,
6139                s = a.fLoader,
6140                o = a.loader;
6141              return new Promise(function (l, u) {
6142                if ((n.loader && n.loader.destroy(), t.gap || e.gap)) u(ci(t, e));
6143                else {
6144                  var h = (n.loader = t.loader = s ? new s(a) : new o(a)),
6145                    d = di(t, e),
6146                    c = Tr(a.fragLoadPolicy.default),
6147                    f = {
6148                      loadPolicy: c,
6149                      timeout: c.maxLoadTimeMs,
6150                      maxRetry: 0,
6151                      retryDelay: 0,
6152                      maxRetryDelay: 0,
6153                      highWaterMark: ui,
6154                    };
6155                  (e.stats = h.stats),
6156                    h.load(d, f, {
6157                      onSuccess: function (i, a, s, o) {
6158                        n.resetLoader(t, h), n.updateStatsFromPart(t, e);
6159                        var u = { frag: t, part: e, payload: i.data, networkDetails: o };
6160                        r(u), l(u);
6161                      },
6162                      onError: function (r, a, s, o) {
6163                        n.resetLoader(t, h),
6164                          u(
6165                            new fi({
6166                              type: L.NETWORK_ERROR,
6167                              details: A.FRAG_LOAD_ERROR,
6168                              fatal: !1,
6169                              frag: t,
6170                              part: e,
6171                              response: i({ url: d.url, data: void 0 }, r),
6172                              error: new Error('HTTP Error ' + r.code + ' ' + r.text),
6173                              networkDetails: s,
6174                              stats: o,
6175                            })
6176                          );
6177                      },
6178                      onAbort: function (r, i, a) {
6179                        (t.stats.aborted = e.stats.aborted),
6180                          n.resetLoader(t, h),
6181                          u(
6182                            new fi({
6183                              type: L.NETWORK_ERROR,
6184                              details: A.INTERNAL_ABORTED,
6185                              fatal: !1,
6186                              frag: t,
6187                              part: e,
6188                              error: new Error('Aborted'),
6189                              networkDetails: a,
6190                              stats: r,
6191                            })
6192                          );
6193                      },
6194                      onTimeout: function (r, i, a) {
6195                        n.resetLoader(t, h),
6196                          u(
6197                            new fi({
6198                              type: L.NETWORK_ERROR,
6199                              details: A.FRAG_LOAD_TIMEOUT,
6200                              fatal: !1,
6201                              frag: t,
6202                              part: e,
6203                              error: new Error('Timeout after ' + f.timeout + 'ms'),
6204                              networkDetails: a,
6205                              stats: r,
6206                            })
6207                          );
6208                      },
6209                    });
6210                }
6211              });
6212            }),
6213            (e.updateStatsFromPart = function (t, e) {
6214              var r = t.stats,
6215                i = e.stats,
6216                n = i.total;
6217              if (((r.loaded += i.loaded), n)) {
6218                var a = Math.round(t.duration / e.duration),
6219                  s = Math.min(Math.round(r.loaded / n), a),
6220                  o = (a - s) * Math.round(r.loaded / s);
6221                r.total = r.loaded + o;
6222              } else r.total = Math.max(r.loaded, r.total);
6223              var l = r.loading,
6224                u = i.loading;
6225              l.start ? (l.first += u.first - u.start) : ((l.start = u.start), (l.first = u.first)),
6226                (l.end = u.end);
6227            }),
6228            (e.resetLoader = function (t, e) {
6229              (t.loader = null),
6230                this.loader === e &&
6231                  (self.clearTimeout(this.partLoadTimeout), (this.loader = null)),
6232                e.destroy();
6233            }),
6234            t
6235          );
6236        })();
6237      function di(t, e) {
6238        void 0 === e && (e = null);
6239        var r = e || t,
6240          i = {
6241            frag: t,
6242            part: e,
6243            responseType: 'arraybuffer',
6244            url: r.url,
6245            headers: {},
6246            rangeStart: 0,
6247            rangeEnd: 0,
6248          },
6249          n = r.byteRangeStartOffset,
6250          a = r.byteRangeEndOffset;
6251        if (y(n) && y(a)) {
6252          var s,
6253            o = n,
6254            l = a;
6255          if (
6256            'initSegment' === t.sn &&
6257            'AES-128' === (null == (s = t.decryptdata) ? void 0 : s.method)
6258          ) {
6259            var u = a - n;
6260            u % 16 && (l = a + (16 - (u % 16))), 0 !== n && ((i.resetIV = !0), (o = n - 16));
6261          }
6262          (i.rangeStart = o), (i.rangeEnd = l);
6263        }
6264        return i;
6265      }
6266      function ci(t, e) {
6267        var r = new Error('GAP ' + (t.gap ? 'tag' : 'attribute') + ' found'),
6268          i = {
6269            type: L.MEDIA_ERROR,
6270            details: A.FRAG_GAP,
6271            fatal: !1,
6272            frag: t,
6273            error: r,
6274            networkDetails: null,
6275          };
6276        return e && (i.part = e), ((e || t).stats.aborted = !0), new fi(i);
6277      }
6278      var fi = (function (t) {
6279          function e(e) {
6280            var r;
6281            return ((r = t.call(this, e.error.message) || this).data = void 0), (r.data = e), r;
6282          }
6283          return l(e, t), e;
6284        })(c(Error)),
6285        gi = (function () {
6286          function t(t, e) {
6287            (this.subtle = void 0), (this.aesIV = void 0), (this.subtle = t), (this.aesIV = e);
6288          }
6289          return (
6290            (t.prototype.decrypt = function (t, e) {
6291              return this.subtle.decrypt({ name: 'AES-CBC', iv: this.aesIV }, e, t);
6292            }),
6293            t
6294          );
6295        })(),
6296        vi = (function () {
6297          function t(t, e) {
6298            (this.subtle = void 0), (this.key = void 0), (this.subtle = t), (this.key = e);
6299          }
6300          return (
6301            (t.prototype.expandKey = function () {
6302              return this.subtle.importKey('raw', this.key, { name: 'AES-CBC' }, !1, [
6303                'encrypt',
6304                'decrypt',
6305              ]);
6306            }),
6307            t
6308          );
6309        })(),
6310        mi = (function () {
6311          function t() {
6312            (this.rcon = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]),
6313              (this.subMix = [
6314                new Uint32Array(256),
6315                new Uint32Array(256),
6316                new Uint32Array(256),
6317                new Uint32Array(256),
6318              ]),
6319              (this.invSubMix = [
6320                new Uint32Array(256),
6321                new Uint32Array(256),
6322                new Uint32Array(256),
6323                new Uint32Array(256),
6324              ]),
6325              (this.sBox = new Uint32Array(256)),
6326              (this.invSBox = new Uint32Array(256)),
6327              (this.key = new Uint32Array(0)),
6328              (this.ksRows = 0),
6329              (this.keySize = 0),
6330              (this.keySchedule = void 0),
6331              (this.invKeySchedule = void 0),
6332              this.initTable();
6333          }
6334          var e = t.prototype;
6335          return (
6336            (e.uint8ArrayToUint32Array_ = function (t) {
6337              for (var e = new DataView(t), r = new Uint32Array(4), i = 0; i < 4; i++)
6338                r[i] = e.getUint32(4 * i);
6339              return r;
6340            }),
6341            (e.initTable = function () {
6342              var t = this.sBox,
6343                e = this.invSBox,
6344                r = this.subMix,
6345                i = r[0],
6346                n = r[1],
6347                a = r[2],
6348                s = r[3],
6349                o = this.invSubMix,
6350                l = o[0],
6351                u = o[1],
6352                h = o[2],
6353                d = o[3],
6354                c = new Uint32Array(256),
6355                f = 0,
6356                g = 0,
6357                v = 0;
6358              for (v = 0; v < 256; v++) c[v] = v < 128 ? v << 1 : (v << 1) ^ 283;
6359              for (v = 0; v < 256; v++) {
6360                var m = g ^ (g << 1) ^ (g << 2) ^ (g << 3) ^ (g << 4);
6361                (m = (m >>> 8) ^ (255 & m) ^ 99), (t[f] = m), (e[m] = f);
6362                var p = c[f],
6363                  y = c[p],
6364                  E = c[y],
6365                  T = (257 * c[m]) ^ (16843008 * m);
6366                (i[f] = (T << 24) | (T >>> 8)),
6367                  (n[f] = (T << 16) | (T >>> 16)),
6368                  (a[f] = (T << 8) | (T >>> 24)),
6369                  (s[f] = T),
6370                  (T = (16843009 * E) ^ (65537 * y) ^ (257 * p) ^ (16843008 * f)),
6371                  (l[m] = (T << 24) | (T >>> 8)),
6372                  (u[m] = (T << 16) | (T >>> 16)),
6373                  (h[m] = (T << 8) | (T >>> 24)),
6374                  (d[m] = T),
6375                  f ? ((f = p ^ c[c[c[E ^ p]]]), (g ^= c[c[g]])) : (f = g = 1);
6376              }
6377            }),
6378            (e.expandKey = function (t) {
6379              for (var e = this.uint8ArrayToUint32Array_(t), r = !0, i = 0; i < e.length && r; )
6380                (r = e[i] === this.key[i]), i++;
6381              if (!r) {
6382                this.key = e;
6383                var n = (this.keySize = e.length);
6384                if (4 !== n && 6 !== n && 8 !== n) throw new Error('Invalid aes key size=' + n);
6385                var a,
6386                  s,
6387                  o,
6388                  l,
6389                  u = (this.ksRows = 4 * (n + 6 + 1)),
6390                  h = (this.keySchedule = new Uint32Array(u)),
6391                  d = (this.invKeySchedule = new Uint32Array(u)),
6392                  c = this.sBox,
6393                  f = this.rcon,
6394                  g = this.invSubMix,
6395                  v = g[0],
6396                  m = g[1],
6397                  p = g[2],
6398                  y = g[3];
6399                for (a = 0; a < u; a++)
6400                  a < n
6401                    ? (o = h[a] = e[a])
6402                    : ((l = o),
6403                      a % n == 0
6404                        ? ((l =
6405                            (c[(l = (l << 8) | (l >>> 24)) >>> 24] << 24) |
6406                            (c[(l >>> 16) & 255] << 16) |
6407                            (c[(l >>> 8) & 255] << 8) |
6408                            c[255 & l]),
6409                          (l ^= f[(a / n) | 0] << 24))
6410                        : n > 6 &&
6411                          a % n == 4 &&
6412                          (l =
6413                            (c[l >>> 24] << 24) |
6414                            (c[(l >>> 16) & 255] << 16) |
6415                            (c[(l >>> 8) & 255] << 8) |
6416                            c[255 & l]),
6417                      (h[a] = o = (h[a - n] ^ l) >>> 0));
6418                for (s = 0; s < u; s++)
6419                  (a = u - s),
6420                    (l = 3 & s ? h[a] : h[a - 4]),
6421                    (d[s] =
6422                      s < 4 || a <= 4
6423                        ? l
6424                        : v[c[l >>> 24]] ^
6425                          m[c[(l >>> 16) & 255]] ^
6426                          p[c[(l >>> 8) & 255]] ^
6427                          y[c[255 & l]]),
6428                    (d[s] = d[s] >>> 0);
6429              }
6430            }),
6431            (e.networkToHostOrderSwap = function (t) {
6432              return (t << 24) | ((65280 & t) << 8) | ((16711680 & t) >> 8) | (t >>> 24);
6433            }),
6434            (e.decrypt = function (t, e, r) {
6435              for (
6436                var i,
6437                  n,
6438                  a,
6439                  s,
6440                  o,
6441                  l,
6442                  u,
6443                  h,
6444                  d,
6445                  c,
6446                  f,
6447                  g,
6448                  v,
6449                  m,
6450                  p = this.keySize + 6,
6451                  y = this.invKeySchedule,
6452                  E = this.invSBox,
6453                  T = this.invSubMix,
6454                  S = T[0],
6455                  L = T[1],
6456                  A = T[2],
6457                  R = T[3],
6458                  b = this.uint8ArrayToUint32Array_(r),
6459                  k = b[0],
6460                  D = b[1],
6461                  I = b[2],
6462                  w = b[3],
6463                  C = new Int32Array(t),
6464                  _ = new Int32Array(C.length),
6465                  x = this.networkToHostOrderSwap;
6466                e < C.length;
6467
6468              ) {
6469                for (
6470                  d = x(C[e]),
6471                    c = x(C[e + 1]),
6472                    f = x(C[e + 2]),
6473                    g = x(C[e + 3]),
6474                    o = d ^ y[0],
6475                    l = g ^ y[1],
6476                    u = f ^ y[2],
6477                    h = c ^ y[3],
6478                    v = 4,
6479                    m = 1;
6480                  m < p;
6481                  m++
6482                )
6483                  (i = S[o >>> 24] ^ L[(l >> 16) & 255] ^ A[(u >> 8) & 255] ^ R[255 & h] ^ y[v]),
6484                    (n =
6485                      S[l >>> 24] ^ L[(u >> 16) & 255] ^ A[(h >> 8) & 255] ^ R[255 & o] ^ y[v + 1]),
6486                    (a =
6487                      S[u >>> 24] ^ L[(h >> 16) & 255] ^ A[(o >> 8) & 255] ^ R[255 & l] ^ y[v + 2]),
6488                    (s =
6489                      S[h >>> 24] ^ L[(o >> 16) & 255] ^ A[(l >> 8) & 255] ^ R[255 & u] ^ y[v + 3]),
6490                    (o = i),
6491                    (l = n),
6492                    (u = a),
6493                    (h = s),
6494                    (v += 4);
6495                (i =
6496                  (E[o >>> 24] << 24) ^
6497                  (E[(l >> 16) & 255] << 16) ^
6498                  (E[(u >> 8) & 255] << 8) ^
6499                  E[255 & h] ^
6500                  y[v]),
6501                  (n =
6502                    (E[l >>> 24] << 24) ^
6503                    (E[(u >> 16) & 255] << 16) ^
6504                    (E[(h >> 8) & 255] << 8) ^
6505                    E[255 & o] ^
6506                    y[v + 1]),
6507                  (a =
6508                    (E[u >>> 24] << 24) ^
6509                    (E[(h >> 16) & 255] << 16) ^
6510                    (E[(o >> 8) & 255] << 8) ^
6511                    E[255 & l] ^
6512                    y[v + 2]),
6513                  (s =
6514                    (E[h >>> 24] << 24) ^
6515                    (E[(o >> 16) & 255] << 16) ^
6516                    (E[(l >> 8) & 255] << 8) ^
6517                    E[255 & u] ^
6518                    y[v + 3]),
6519                  (_[e] = x(i ^ k)),
6520                  (_[e + 1] = x(s ^ D)),
6521                  (_[e + 2] = x(a ^ I)),
6522                  (_[e + 3] = x(n ^ w)),
6523                  (k = d),
6524                  (D = c),
6525                  (I = f),
6526                  (w = g),
6527                  (e += 4);
6528              }
6529              return _.buffer;
6530            }),
6531            t
6532          );
6533        })(),
6534        pi = (function () {
6535          function t(t, e) {
6536            var r = (void 0 === e ? {} : e).removePKCS7Padding,
6537              i = void 0 === r || r;
6538            if (
6539              ((this.logEnabled = !0),
6540              (this.removePKCS7Padding = void 0),
6541              (this.subtle = null),
6542              (this.softwareDecrypter = null),
6543              (this.key = null),
6544              (this.fastAesKey = null),
6545              (this.remainderData = null),
6546              (this.currentIV = null),
6547              (this.currentResult = null),
6548              (this.useSoftware = void 0),
6549              (this.useSoftware = t.enableSoftwareAES),
6550              (this.removePKCS7Padding = i),
6551              i)
6552            )
6553              try {
6554                var n = self.crypto;
6555                n && (this.subtle = n.subtle || n.webkitSubtle);
6556              } catch (t) {}
6557            this.useSoftware = !this.subtle;
6558          }
6559          var e = t.prototype;
6560          return (
6561            (e.destroy = function () {
6562              (this.subtle = null),
6563                (this.softwareDecrypter = null),
6564                (this.key = null),
6565                (this.fastAesKey = null),
6566                (this.remainderData = null),
6567                (this.currentIV = null),
6568                (this.currentResult = null);
6569            }),
6570            (e.isSync = function () {
6571              return this.useSoftware;
6572            }),
6573            (e.flush = function () {
6574              var t = this.currentResult,
6575                e = this.remainderData;
6576              if (!t || e) return this.reset(), null;
6577              var r,
6578                i,
6579                n,
6580                a = new Uint8Array(t);
6581              return (
6582                this.reset(),
6583                this.removePKCS7Padding
6584                  ? ((i = (r = a).byteLength),
6585                    (n = i && new DataView(r.buffer).getUint8(i - 1)) ? lt(r, 0, i - n) : r)
6586                  : a
6587              );
6588            }),
6589            (e.reset = function () {
6590              (this.currentResult = null),
6591                (this.currentIV = null),
6592                (this.remainderData = null),
6593                this.softwareDecrypter && (this.softwareDecrypter = null);
6594            }),
6595            (e.decrypt = function (t, e, r) {
6596              var i = this;
6597              return this.useSoftware
6598                ? new Promise(function (n, a) {
6599                    i.softwareDecrypt(new Uint8Array(t), e, r);
6600                    var s = i.flush();
6601                    s ? n(s.buffer) : a(new Error('[softwareDecrypt] Failed to decrypt data'));
6602                  })
6603                : this.webCryptoDecrypt(new Uint8Array(t), e, r);
6604            }),
6605            (e.softwareDecrypt = function (t, e, r) {
6606              var i = this.currentIV,
6607                n = this.currentResult,
6608                a = this.remainderData;
6609              this.logOnce('JS AES decrypt'), a && ((t = Wt(a, t)), (this.remainderData = null));
6610              var s = this.getValidChunk(t);
6611              if (!s.length) return null;
6612              i && (r = i);
6613              var o = this.softwareDecrypter;
6614              o || (o = this.softwareDecrypter = new mi()), o.expandKey(e);
6615              var l = n;
6616              return (
6617                (this.currentResult = o.decrypt(s.buffer, 0, r)),
6618                (this.currentIV = lt(s, -16).buffer),
6619                l || null
6620              );
6621            }),
6622            (e.webCryptoDecrypt = function (t, e, r) {
6623              var i = this;
6624              if (this.key !== e || !this.fastAesKey) {
6625                if (!this.subtle) return Promise.resolve(this.onWebCryptoError(t, e, r));
6626                (this.key = e), (this.fastAesKey = new vi(this.subtle, e));
6627              }
6628              return this.fastAesKey
6629                .expandKey()
6630                .then(function (e) {
6631                  return i.subtle
6632                    ? (i.logOnce('WebCrypto AES decrypt'),
6633                      new gi(i.subtle, new Uint8Array(r)).decrypt(t.buffer, e))
6634                    : Promise.reject(new Error('web crypto not initialized'));
6635                })
6636                .catch(function (n) {
6637                  return (
6638                    w.warn(
6639                      '[decrypter]: WebCrypto Error, disable WebCrypto API, ' +
6640                        n.name +
6641                        ': ' +
6642                        n.message
6643                    ),
6644                    i.onWebCryptoError(t, e, r)
6645                  );
6646                });
6647            }),
6648            (e.onWebCryptoError = function (t, e, r) {
6649              (this.useSoftware = !0), (this.logEnabled = !0), this.softwareDecrypt(t, e, r);
6650              var i = this.flush();
6651              if (i) return i.buffer;
6652              throw new Error('WebCrypto and softwareDecrypt: failed to decrypt data');
6653            }),
6654            (e.getValidChunk = function (t) {
6655              var e = t,
6656                r = t.length - (t.length % 16);
6657              return r !== t.length && ((e = lt(t, 0, r)), (this.remainderData = lt(t, r))), e;
6658            }),
6659            (e.logOnce = function (t) {
6660              this.logEnabled && (w.log('[decrypter]: ' + t), (this.logEnabled = !1));
6661            }),
6662            t
6663          );
6664        })(),
6665        yi = function (t) {
6666          for (var e = '', r = t.length, i = 0; i < r; i++)
6667            e += '[' + t.start(i).toFixed(3) + '-' + t.end(i).toFixed(3) + ']';
6668          return e;
6669        },
6670        Ei = 'STOPPED',
6671        Ti = 'IDLE',
6672        Si = 'KEY_LOADING',
6673        Li = 'FRAG_LOADING',
6674        Ai = 'FRAG_LOADING_WAITING_RETRY',
6675        Ri = 'WAITING_TRACK',
6676        bi = 'PARSING',
6677        ki = 'PARSED',
6678        Di = 'ENDED',
6679        Ii = 'ERROR',
6680        wi = 'WAITING_INIT_PTS',
6681        Ci = 'WAITING_LEVEL',
6682        _i = (function (t) {
6683          function e(e, r, i, n, a) {
6684            var s;
6685            return (
6686              ((s = t.call(this) || this).hls = void 0),
6687              (s.fragPrevious = null),
6688              (s.fragCurrent = null),
6689              (s.fragmentTracker = void 0),
6690              (s.transmuxer = null),
6691              (s._state = Ei),
6692              (s.playlistType = void 0),
6693              (s.media = null),
6694              (s.mediaBuffer = null),
6695              (s.config = void 0),
6696              (s.bitrateTest = !1),
6697              (s.lastCurrentTime = 0),
6698              (s.nextLoadPosition = 0),
6699              (s.startPosition = 0),
6700              (s.startTimeOffset = null),
6701              (s.loadedmetadata = !1),
6702              (s.retryDate = 0),
6703              (s.levels = null),
6704              (s.fragmentLoader = void 0),
6705              (s.keyLoader = void 0),
6706              (s.levelLastLoaded = null),
6707              (s.startFragRequested = !1),
6708              (s.decrypter = void 0),
6709              (s.initPTS = []),
6710              (s.buffering = !0),
6711              (s.onvseeking = null),
6712              (s.onvended = null),
6713              (s.logPrefix = ''),
6714              (s.log = void 0),
6715              (s.warn = void 0),
6716              (s.playlistType = a),
6717              (s.logPrefix = n),
6718              (s.log = w.log.bind(w, n + ':')),
6719              (s.warn = w.warn.bind(w, n + ':')),
6720              (s.hls = e),
6721              (s.fragmentLoader = new hi(e.config)),
6722              (s.keyLoader = i),
6723              (s.fragmentTracker = r),
6724              (s.config = e.config),
6725              (s.decrypter = new pi(e.config)),
6726              e.on(
6727                S.MANIFEST_LOADED,
6728                s.onManifestLoaded,
6729                (function (t) {
6730                  if (void 0 === t)
6731                    throw new ReferenceError(
6732                      "this hasn't been initialised - super() hasn't been called"
6733                    );
6734                  return t;
6735                })(s)
6736              ),
6737              s
6738            );
6739          }
6740          l(e, t);
6741          var r = e.prototype;
6742          return (
6743            (r.doTick = function () {
6744              this.onTickEnd();
6745            }),
6746            (r.onTickEnd = function () {}),
6747            (r.startLoad = function (t) {}),
6748            (r.stopLoad = function () {
6749              this.fragmentLoader.abort(), this.keyLoader.abort(this.playlistType);
6750              var t = this.fragCurrent;
6751              null != t && t.loader && (t.abortRequests(), this.fragmentTracker.removeFragment(t)),
6752                this.resetTransmuxer(),
6753                (this.fragCurrent = null),
6754                (this.fragPrevious = null),
6755                this.clearInterval(),
6756                this.clearNextTick(),
6757                (this.state = Ei);
6758            }),
6759            (r.pauseBuffering = function () {
6760              this.buffering = !1;
6761            }),
6762            (r.resumeBuffering = function () {
6763              this.buffering = !0;
6764            }),
6765            (r._streamEnded = function (t, e) {
6766              if (e.live || t.nextStart || !t.end || !this.media) return !1;
6767              var r = e.partList;
6768              if (null != r && r.length) {
6769                var i = r[r.length - 1];
6770                return ri.isBuffered(this.media, i.start + i.duration / 2);
6771              }
6772              var n = e.fragments[e.fragments.length - 1].type;
6773              return this.fragmentTracker.isEndListAppended(n);
6774            }),
6775            (r.getLevelDetails = function () {
6776              var t;
6777              if (this.levels && null !== this.levelLastLoaded)
6778                return null == (t = this.levelLastLoaded) ? void 0 : t.details;
6779            }),
6780            (r.onMediaAttached = function (t, e) {
6781              var r = (this.media = this.mediaBuffer = e.media);
6782              (this.onvseeking = this.onMediaSeeking.bind(this)),
6783                (this.onvended = this.onMediaEnded.bind(this)),
6784                r.addEventListener('seeking', this.onvseeking),
6785                r.addEventListener('ended', this.onvended);
6786              var i = this.config;
6787              this.levels &&
6788                i.autoStartLoad &&
6789                this.state === Ei &&
6790                this.startLoad(i.startPosition);
6791            }),
6792            (r.onMediaDetaching = function () {
6793              var t = this.media;
6794              null != t &&
6795                t.ended &&
6796                (this.log('MSE detaching and video ended, reset startPosition'),
6797                (this.startPosition = this.lastCurrentTime = 0)),
6798                t &&
6799                  this.onvseeking &&
6800                  this.onvended &&
6801                  (t.removeEventListener('seeking', this.onvseeking),
6802                  t.removeEventListener('ended', this.onvended),
6803                  (this.onvseeking = this.onvended = null)),
6804                this.keyLoader && this.keyLoader.detach(),
6805                (this.media = this.mediaBuffer = null),
6806                (this.loadedmetadata = !1),
6807                this.fragmentTracker.removeAllFragments(),
6808                this.stopLoad();
6809            }),
6810            (r.onMediaSeeking = function () {
6811              var t = this.config,
6812                e = this.fragCurrent,
6813                r = this.media,
6814                i = this.mediaBuffer,
6815                n = this.state,
6816                a = r ? r.currentTime : 0,
6817                s = ri.bufferInfo(i || r, a, t.maxBufferHole);
6818              if (
6819                (this.log('media seeking to ' + (y(a) ? a.toFixed(3) : a) + ', state: ' + n),
6820                this.state === Di)
6821              )
6822                this.resetLoadingState();
6823              else if (e) {
6824                var o = t.maxFragLookUpTolerance,
6825                  l = e.start - o,
6826                  u = e.start + e.duration + o;
6827                if (!s.len || u < s.start || l > s.end) {
6828                  var h = a > u;
6829                  (a < l || h) &&
6830                    (h &&
6831                      e.loader &&
6832                      (this.log(
6833                        'seeking outside of buffer while fragment load in progress, cancel fragment load'
6834                      ),
6835                      e.abortRequests(),
6836                      this.resetLoadingState()),
6837                    (this.fragPrevious = null));
6838                }
6839              }
6840              r &&
6841                (this.fragmentTracker.removeFragmentsInRange(a, 1 / 0, this.playlistType, !0),
6842                (this.lastCurrentTime = a)),
6843                this.loadedmetadata || s.len || (this.nextLoadPosition = this.startPosition = a),
6844                this.tickImmediate();
6845            }),
6846            (r.onMediaEnded = function () {
6847              this.startPosition = this.lastCurrentTime = 0;
6848            }),
6849            (r.onManifestLoaded = function (t, e) {
6850              (this.startTimeOffset = e.startTimeOffset), (this.initPTS = []);
6851            }),
6852            (r.onHandlerDestroying = function () {
6853              this.hls.off(S.MANIFEST_LOADED, this.onManifestLoaded, this),
6854                this.stopLoad(),
6855                t.prototype.onHandlerDestroying.call(this),
6856                (this.hls = null);
6857            }),
6858            (r.onHandlerDestroyed = function () {
6859              (this.state = Ei),
6860                this.fragmentLoader && this.fragmentLoader.destroy(),
6861                this.keyLoader && this.keyLoader.destroy(),
6862                this.decrypter && this.decrypter.destroy(),
6863                (this.hls =
6864                  this.log =
6865                  this.warn =
6866                  this.decrypter =
6867                  this.keyLoader =
6868                  this.fragmentLoader =
6869                  this.fragmentTracker =
6870                    null),
6871                t.prototype.onHandlerDestroyed.call(this);
6872            }),
6873            (r.loadFragment = function (t, e, r) {
6874              this._loadFragForPlayback(t, e, r);
6875            }),
6876            (r._loadFragForPlayback = function (t, e, r) {
6877              var i = this;
6878              this._doFragLoad(t, e, r, function (e) {
6879                if (i.fragContextChanged(t))
6880                  return (
6881                    i.warn(
6882                      'Fragment ' +
6883                        t.sn +
6884                        (e.part ? ' p: ' + e.part.index : '') +
6885                        ' of level ' +
6886                        t.level +
6887                        ' was dropped during download.'
6888                    ),
6889                    void i.fragmentTracker.removeFragment(t)
6890                  );
6891                t.stats.chunkCount++, i._handleFragmentLoadProgress(e);
6892              })
6893                .then(function (e) {
6894                  if (e) {
6895                    var r = i.state;
6896                    i.fragContextChanged(t)
6897                      ? (r === Li || (!i.fragCurrent && r === bi)) &&
6898                        (i.fragmentTracker.removeFragment(t), (i.state = Ti))
6899                      : ('payload' in e &&
6900                          (i.log('Loaded fragment ' + t.sn + ' of level ' + t.level),
6901                          i.hls.trigger(S.FRAG_LOADED, e)),
6902                        i._handleFragmentLoadComplete(e));
6903                  }
6904                })
6905                .catch(function (e) {
6906                  i.state !== Ei &&
6907                    i.state !== Ii &&
6908                    (i.warn('Frag error: ' + ((null == e ? void 0 : e.message) || e)),
6909                    i.resetFragmentLoading(t));
6910                });
6911            }),
6912            (r.clearTrackerIfNeeded = function (t) {
6913              var e,
6914                r = this.fragmentTracker;
6915              if (r.getState(t) === zr) {
6916                var i = t.type,
6917                  n = this.getFwdBufferInfo(this.mediaBuffer, i),
6918                  a = Math.max(t.duration, n ? n.len : this.config.maxBufferLength),
6919                  s = this.backtrackFragment;
6920                (1 == (s ? t.sn - s.sn : 0) || this.reduceMaxBufferLength(a, t.duration)) &&
6921                  r.removeFragment(t);
6922              } else
6923                0 === (null == (e = this.mediaBuffer) ? void 0 : e.buffered.length)
6924                  ? r.removeAllFragments()
6925                  : r.hasParts(t.type) &&
6926                    (r.detectPartialFragments({ frag: t, part: null, stats: t.stats, id: t.type }),
6927                    r.getState(t) === Qr && r.removeFragment(t));
6928            }),
6929            (r.checkLiveUpdate = function (t) {
6930              if (t.updated && !t.live) {
6931                var e = t.fragments[t.fragments.length - 1];
6932                this.fragmentTracker.detectPartialFragments({
6933                  frag: e,
6934                  part: null,
6935                  stats: e.stats,
6936                  id: e.type,
6937                });
6938              }
6939              t.fragments[0] || (t.deltaUpdateFailed = !0);
6940            }),
6941            (r.flushMainBuffer = function (t, e, r) {
6942              if ((void 0 === r && (r = null), t - e)) {
6943                var i = { startOffset: t, endOffset: e, type: r };
6944                this.hls.trigger(S.BUFFER_FLUSHING, i);
6945              }
6946            }),
6947            (r._loadInitSegment = function (t, e) {
6948              var r = this;
6949              this._doFragLoad(t, e)
6950                .then(function (e) {
6951                  if (!e || r.fragContextChanged(t) || !r.levels)
6952                    throw new Error('init load aborted');
6953                  return e;
6954                })
6955                .then(function (e) {
6956                  var i = r.hls,
6957                    n = e.payload,
6958                    a = t.decryptdata;
6959                  if (
6960                    n &&
6961                    n.byteLength > 0 &&
6962                    null != a &&
6963                    a.key &&
6964                    a.iv &&
6965                    'AES-128' === a.method
6966                  ) {
6967                    var s = self.performance.now();
6968                    return r.decrypter
6969                      .decrypt(new Uint8Array(n), a.key.buffer, a.iv.buffer)
6970                      .catch(function (e) {
6971                        throw (
6972                          (i.trigger(S.ERROR, {
6973                            type: L.MEDIA_ERROR,
6974                            details: A.FRAG_DECRYPT_ERROR,
6975                            fatal: !1,
6976                            error: e,
6977                            reason: e.message,
6978                            frag: t,
6979                          }),
6980                          e)
6981                        );
6982                      })
6983                      .then(function (n) {
6984                        var a = self.performance.now();
6985                        return (
6986                          i.trigger(S.FRAG_DECRYPTED, {
6987                            frag: t,
6988                            payload: n,
6989                            stats: { tstart: s, tdecrypt: a },
6990                          }),
6991                          (e.payload = n),
6992                          r.completeInitSegmentLoad(e)
6993                        );
6994                      });
6995                  }
6996                  return r.completeInitSegmentLoad(e);
6997                })
6998                .catch(function (e) {
6999                  r.state !== Ei && r.state !== Ii && (r.warn(e), r.resetFragmentLoading(t));
7000                });
7001            }),
7002            (r.completeInitSegmentLoad = function (t) {
7003              if (!this.levels) throw new Error('init load aborted, missing levels');
7004              var e = t.frag.stats;
7005              (this.state = Ti),
7006                (t.frag.data = new Uint8Array(t.payload)),
7007                (e.parsing.start = e.buffering.start = self.performance.now()),
7008                (e.parsing.end = e.buffering.end = self.performance.now()),
7009                this.tick();
7010            }),
7011            (r.fragContextChanged = function (t) {
7012              var e = this.fragCurrent;
7013              return !t || !e || t.sn !== e.sn || t.level !== e.level;
7014            }),
7015            (r.fragBufferedComplete = function (t, e) {
7016              var r,
7017                i,
7018                n,
7019                a,
7020                s = this.mediaBuffer ? this.mediaBuffer : this.media;
7021              if (
7022                (this.log(
7023                  'Buffered ' +
7024                    t.type +
7025                    ' sn: ' +
7026                    t.sn +
7027                    (e ? ' part: ' + e.index : '') +
7028                    ' of ' +
7029                    (this.playlistType === Fe ? 'level' : 'track') +
7030                    ' ' +
7031                    t.level +
7032                    ' (frag:[' +
7033                    (null != (r = t.startPTS) ? r : NaN).toFixed(3) +
7034                    '-' +
7035                    (null != (i = t.endPTS) ? i : NaN).toFixed(3) +
7036                    '] > buffer:' +
7037                    (s ? yi(ri.getBuffered(s)) : '(detached)') +
7038                    ')'
7039                ),
7040                'initSegment' !== t.sn)
7041              ) {
7042                var o;
7043                if (t.type !== Oe) {
7044                  var l = t.elementaryStreams;
7045                  if (
7046                    !Object.keys(l).some(function (t) {
7047                      return !!l[t];
7048                    })
7049                  )
7050                    return void (this.state = Ti);
7051                }
7052                var u = null == (o = this.levels) ? void 0 : o[t.level];
7053                null != u &&
7054                  u.fragmentError &&
7055                  (this.log(
7056                    'Resetting level fragment error count of ' +
7057                      u.fragmentError +
7058                      ' on frag buffered'
7059                  ),
7060                  (u.fragmentError = 0));
7061              }
7062              (this.state = Ti),
7063                s &&
7064                  (!this.loadedmetadata &&
7065                    t.type == Fe &&
7066                    s.buffered.length &&
7067                    (null == (n = this.fragCurrent) ? void 0 : n.sn) ===
7068                      (null == (a = this.fragPrevious) ? void 0 : a.sn) &&
7069                    ((this.loadedmetadata = !0), this.seekToStartPos()),
7070                  this.tick());
7071            }),
7072            (r.seekToStartPos = function () {}),
7073            (r._handleFragmentLoadComplete = function (t) {
7074              var e = this.transmuxer;
7075              if (e) {
7076                var r = t.frag,
7077                  i = t.part,
7078                  n = t.partsLoaded,
7079                  a =
7080                    !n ||
7081                    0 === n.length ||
7082                    n.some(function (t) {
7083                      return !t;
7084                    }),
7085                  s = new ii(r.level, r.sn, r.stats.chunkCount + 1, 0, i ? i.index : -1, !a);
7086                e.flush(s);
7087              }
7088            }),
7089            (r._handleFragmentLoadProgress = function (t) {}),
7090            (r._doFragLoad = function (t, e, r, i) {
7091              var n,
7092                a = this;
7093              void 0 === r && (r = null);
7094              var s = null == e ? void 0 : e.details;
7095              if (!this.levels || !s)
7096                throw new Error('frag load aborted, missing level' + (s ? '' : ' detail') + 's');
7097              var o = null;
7098              if (
7099                (!t.encrypted || (null != (n = t.decryptdata) && n.key)
7100                  ? !t.encrypted &&
7101                    s.encryptedFragments.length &&
7102                    this.keyLoader.loadClear(t, s.encryptedFragments)
7103                  : (this.log(
7104                      'Loading key for ' +
7105                        t.sn +
7106                        ' of [' +
7107                        s.startSN +
7108                        '-' +
7109                        s.endSN +
7110                        '], ' +
7111                        ('[stream-controller]' === this.logPrefix ? 'level' : 'track') +
7112                        ' ' +
7113                        t.level
7114                    ),
7115                    (this.state = Si),
7116                    (this.fragCurrent = t),
7117                    (o = this.keyLoader.load(t).then(function (t) {
7118                      if (!a.fragContextChanged(t.frag))
7119                        return a.hls.trigger(S.KEY_LOADED, t), a.state === Si && (a.state = Ti), t;
7120                    })),
7121                    this.hls.trigger(S.KEY_LOADING, { frag: t }),
7122                    null === this.fragCurrent &&
7123                      (o = Promise.reject(
7124                        new Error('frag load aborted, context changed in KEY_LOADING')
7125                      ))),
7126                (r = Math.max(t.start, r || 0)),
7127                this.config.lowLatencyMode && 'initSegment' !== t.sn)
7128              ) {
7129                var l = s.partList;
7130                if (l && i) {
7131                  r > t.end && s.fragmentHint && (t = s.fragmentHint);
7132                  var u = this.getNextPart(l, t, r);
7133                  if (u > -1) {
7134                    var h,
7135                      d = l[u];
7136                    return (
7137                      this.log(
7138                        'Loading part sn: ' +
7139                          t.sn +
7140                          ' p: ' +
7141                          d.index +
7142                          ' cc: ' +
7143                          t.cc +
7144                          ' of playlist [' +
7145                          s.startSN +
7146                          '-' +
7147                          s.endSN +
7148                          '] parts [0-' +
7149                          u +
7150                          '-' +
7151                          (l.length - 1) +
7152                          '] ' +
7153                          ('[stream-controller]' === this.logPrefix ? 'level' : 'track') +
7154                          ': ' +
7155                          t.level +
7156                          ', target: ' +
7157                          parseFloat(r.toFixed(3))
7158                      ),
7159                      (this.nextLoadPosition = d.start + d.duration),
7160                      (this.state = Li),
7161                      (h = o
7162                        ? o
7163                            .then(function (r) {
7164                              return !r || a.fragContextChanged(r.frag)
7165                                ? null
7166                                : a.doFragPartsLoad(t, d, e, i);
7167                            })
7168                            .catch(function (t) {
7169                              return a.handleFragLoadError(t);
7170                            })
7171                        : this.doFragPartsLoad(t, d, e, i).catch(function (t) {
7172                            return a.handleFragLoadError(t);
7173                          })),
7174                      this.hls.trigger(S.FRAG_LOADING, { frag: t, part: d, targetBufferTime: r }),
7175                      null === this.fragCurrent
7176                        ? Promise.reject(
7177                            new Error('frag load aborted, context changed in FRAG_LOADING parts')
7178                          )
7179                        : h
7180                    );
7181                  }
7182                  if (!t.url || this.loadedEndOfParts(l, r)) return Promise.resolve(null);
7183                }
7184              }
7185              this.log(
7186                'Loading fragment ' +
7187                  t.sn +
7188                  ' cc: ' +
7189                  t.cc +
7190                  ' ' +
7191                  (s ? 'of [' + s.startSN + '-' + s.endSN + '] ' : '') +
7192                  ('[stream-controller]' === this.logPrefix ? 'level' : 'track') +
7193                  ': ' +
7194                  t.level +
7195                  ', target: ' +
7196                  parseFloat(r.toFixed(3))
7197              ),
7198                y(t.sn) && !this.bitrateTest && (this.nextLoadPosition = t.start + t.duration),
7199                (this.state = Li);
7200              var c,
7201                f = this.config.progressive;
7202              return (
7203                (c =
7204                  f && o
7205                    ? o
7206                        .then(function (e) {
7207                          return !e || a.fragContextChanged(null == e ? void 0 : e.frag)
7208                            ? null
7209                            : a.fragmentLoader.load(t, i);
7210                        })
7211                        .catch(function (t) {
7212                          return a.handleFragLoadError(t);
7213                        })
7214                    : Promise.all([this.fragmentLoader.load(t, f ? i : void 0), o])
7215                        .then(function (t) {
7216                          var e = t[0];
7217                          return !f && e && i && i(e), e;
7218                        })
7219                        .catch(function (t) {
7220                          return a.handleFragLoadError(t);
7221                        })),
7222                this.hls.trigger(S.FRAG_LOADING, { frag: t, targetBufferTime: r }),
7223                null === this.fragCurrent
7224                  ? Promise.reject(new Error('frag load aborted, context changed in FRAG_LOADING'))
7225                  : c
7226              );
7227            }),
7228            (r.doFragPartsLoad = function (t, e, r, i) {
7229              var n = this;
7230              return new Promise(function (a, s) {
7231                var o,
7232                  l = [],
7233                  u = null == (o = r.details) ? void 0 : o.partList;
7234                !(function e(o) {
7235                  n.fragmentLoader
7236                    .loadPart(t, o, i)
7237                    .then(function (i) {
7238                      l[o.index] = i;
7239                      var s = i.part;
7240                      n.hls.trigger(S.FRAG_LOADED, i);
7241                      var h = gr(r, t.sn, o.index + 1) || vr(u, t.sn, o.index + 1);
7242                      if (!h) return a({ frag: t, part: s, partsLoaded: l });
7243                      e(h);
7244                    })
7245                    .catch(s);
7246                })(e);
7247              });
7248            }),
7249            (r.handleFragLoadError = function (t) {
7250              if ('data' in t) {
7251                var e = t.data;
7252                t.data && e.details === A.INTERNAL_ABORTED
7253                  ? this.handleFragLoadAborted(e.frag, e.part)
7254                  : this.hls.trigger(S.ERROR, e);
7255              } else
7256                this.hls.trigger(S.ERROR, {
7257                  type: L.OTHER_ERROR,
7258                  details: A.INTERNAL_EXCEPTION,
7259                  err: t,
7260                  error: t,
7261                  fatal: !0,
7262                });
7263              return null;
7264            }),
7265            (r._handleTransmuxerFlush = function (t) {
7266              var e = this.getCurrentContext(t);
7267              if (e && this.state === bi) {
7268                var r = e.frag,
7269                  i = e.part,
7270                  n = e.level,
7271                  a = self.performance.now();
7272                (r.stats.parsing.end = a),
7273                  i && (i.stats.parsing.end = a),
7274                  this.updateLevelTiming(r, i, n, t.partial);
7275              } else
7276                this.fragCurrent || this.state === Ei || this.state === Ii || (this.state = Ti);
7277            }),
7278            (r.getCurrentContext = function (t) {
7279              var e = this.levels,
7280                r = this.fragCurrent,
7281                i = t.level,
7282                n = t.sn,
7283                a = t.part;
7284              if (null == e || !e[i])
7285                return (
7286                  this.warn(
7287                    'Levels object was unset while buffering fragment ' +
7288                      n +
7289                      ' of level ' +
7290                      i +
7291                      '. The current chunk will not be buffered.'
7292                  ),
7293                  null
7294                );
7295              var s = e[i],
7296                o = a > -1 ? gr(s, n, a) : null,
7297                l = o
7298                  ? o.fragment
7299                  : (function (t, e, r) {
7300                      if (null == t || !t.details) return null;
7301                      var i = t.details,
7302                        n = i.fragments[e - i.startSN];
7303                      return (
7304                        n ||
7305                        ((n = i.fragmentHint) && n.sn === e
7306                          ? n
7307                          : e < i.startSN && r && r.sn === e
7308                          ? r
7309                          : null)
7310                      );
7311                    })(s, n, r);
7312              return l
7313                ? (r && r !== l && (l.stats = r.stats), { frag: l, part: o, level: s })
7314                : null;
7315            }),
7316            (r.bufferFragmentData = function (t, e, r, i, n) {
7317              var a;
7318              if (t && this.state === bi) {
7319                var s = t.data1,
7320                  o = t.data2,
7321                  l = s;
7322                if ((s && o && (l = Wt(s, o)), null != (a = l) && a.length)) {
7323                  var u = { type: t.type, frag: e, part: r, chunkMeta: i, parent: e.type, data: l };
7324                  if ((this.hls.trigger(S.BUFFER_APPENDING, u), t.dropped && t.independent && !r)) {
7325                    if (n) return;
7326                    this.flushBufferGap(e);
7327                  }
7328                }
7329              }
7330            }),
7331            (r.flushBufferGap = function (t) {
7332              var e = this.media;
7333              if (e)
7334                if (ri.isBuffered(e, e.currentTime)) {
7335                  var r = e.currentTime,
7336                    i = ri.bufferInfo(e, r, 0),
7337                    n = t.duration,
7338                    a = Math.min(2 * this.config.maxFragLookUpTolerance, 0.25 * n),
7339                    s = Math.max(Math.min(t.start - a, i.end - a), r + a);
7340                  t.start - s > a && this.flushMainBuffer(s, t.start);
7341                } else this.flushMainBuffer(0, t.start);
7342            }),
7343            (r.getFwdBufferInfo = function (t, e) {
7344              var r = this.getLoadPosition();
7345              return y(r) ? this.getFwdBufferInfoAtPos(t, r, e) : null;
7346            }),
7347            (r.getFwdBufferInfoAtPos = function (t, e, r) {
7348              var i = this.config.maxBufferHole,
7349                n = ri.bufferInfo(t, e, i);
7350              if (0 === n.len && void 0 !== n.nextStart) {
7351                var a = this.fragmentTracker.getBufferedFrag(e, r);
7352                if (a && n.nextStart < a.end) return ri.bufferInfo(t, e, Math.max(n.nextStart, i));
7353              }
7354              return n;
7355            }),
7356            (r.getMaxBufferLength = function (t) {
7357              var e,
7358                r = this.config;
7359              return (
7360                (e = t
7361                  ? Math.max((8 * r.maxBufferSize) / t, r.maxBufferLength)
7362                  : r.maxBufferLength),
7363                Math.min(e, r.maxMaxBufferLength)
7364              );
7365            }),
7366            (r.reduceMaxBufferLength = function (t, e) {
7367              var r = this.config,
7368                i = Math.max(Math.min(t - e, r.maxBufferLength), e),
7369                n = Math.max(t - 3 * e, r.maxMaxBufferLength / 2, i);
7370              return (
7371                n >= i &&
7372                ((r.maxMaxBufferLength = n),
7373                this.warn('Reduce max buffer length to ' + n + 's'),
7374                !0)
7375              );
7376            }),
7377            (r.getAppendedFrag = function (t, e) {
7378              var r = this.fragmentTracker.getAppendedFrag(t, Fe);
7379              return r && 'fragment' in r ? r.fragment : r;
7380            }),
7381            (r.getNextFragment = function (t, e) {
7382              var r = e.fragments,
7383                i = r.length;
7384              if (!i) return null;
7385              var n,
7386                a = this.config,
7387                s = r[0].start;
7388              if (e.live) {
7389                var o = a.initialLiveManifestSize;
7390                if (i < o)
7391                  return (
7392                    this.warn(
7393                      'Not enough fragments to start playback (have: ' + i + ', need: ' + o + ')'
7394                    ),
7395                    null
7396                  );
7397                ((!e.PTSKnown && !this.startFragRequested && -1 === this.startPosition) || t < s) &&
7398                  ((n = this.getInitialLiveFragment(e, r)),
7399                  (this.startPosition = this.nextLoadPosition =
7400                    n ? this.hls.liveSyncPosition || n.start : t));
7401              } else t <= s && (n = r[0]);
7402              if (!n) {
7403                var l = a.lowLatencyMode ? e.partEnd : e.fragmentEnd;
7404                n = this.getFragmentAtPosition(t, l, e);
7405              }
7406              return this.mapToInitFragWhenRequired(n);
7407            }),
7408            (r.isLoopLoading = function (t, e) {
7409              var r = this.fragmentTracker.getState(t);
7410              return (r === Jr || (r === Qr && !!t.gap)) && this.nextLoadPosition > e;
7411            }),
7412            (r.getNextFragmentLoopLoading = function (t, e, r, i, n) {
7413              var a = t.gap,
7414                s = this.getNextFragment(this.nextLoadPosition, e);
7415              if (null === s) return s;
7416              if (((t = s), a && t && !t.gap && r.nextStart)) {
7417                var o = this.getFwdBufferInfoAtPos(
7418                  this.mediaBuffer ? this.mediaBuffer : this.media,
7419                  r.nextStart,
7420                  i
7421                );
7422                if (null !== o && r.len + o.len >= n)
7423                  return (
7424                    this.log(
7425                      'buffer full after gaps in "' + i + '" playlist starting at sn: ' + t.sn
7426                    ),
7427                    null
7428                  );
7429              }
7430              return t;
7431            }),
7432            (r.mapToInitFragWhenRequired = function (t) {
7433              return null == t ||
7434                !t.initSegment ||
7435                (null != t && t.initSegment.data) ||
7436                this.bitrateTest
7437                ? t
7438                : t.initSegment;
7439            }),
7440            (r.getNextPart = function (t, e, r) {
7441              for (var i = -1, n = !1, a = !0, s = 0, o = t.length; s < o; s++) {
7442                var l = t[s];
7443                if (((a = a && !l.independent), i > -1 && r < l.start)) break;
7444                var u = l.loaded;
7445                u ? (i = -1) : (n || l.independent || a) && l.fragment === e && (i = s), (n = u);
7446              }
7447              return i;
7448            }),
7449            (r.loadedEndOfParts = function (t, e) {
7450              var r = t[t.length - 1];
7451              return r && e > r.start && r.loaded;
7452            }),
7453            (r.getInitialLiveFragment = function (t, e) {
7454              var r = this.fragPrevious,
7455                i = null;
7456              if (r) {
7457                if (
7458                  (t.hasProgramDateTime &&
7459                    (this.log(
7460                      'Live playlist, switching playlist, load frag with same PDT: ' +
7461                        r.programDateTime
7462                    ),
7463                    (i = (function (t, e, r) {
7464                      if (null === e || !Array.isArray(t) || !t.length || !y(e)) return null;
7465                      if (e < (t[0].programDateTime || 0)) return null;
7466                      if (e >= (t[t.length - 1].endProgramDateTime || 0)) return null;
7467                      r = r || 0;
7468                      for (var i = 0; i < t.length; ++i) {
7469                        var n = t[i];
7470                        if (br(e, r, n)) return n;
7471                      }
7472                      return null;
7473                    })(e, r.endProgramDateTime, this.config.maxFragLookUpTolerance))),
7474                  !i)
7475                ) {
7476                  var n = r.sn + 1;
7477                  if (n >= t.startSN && n <= t.endSN) {
7478                    var a = e[n - t.startSN];
7479                    r.cc === a.cc &&
7480                      ((i = a),
7481                      this.log(
7482                        'Live playlist, switching playlist, load frag with next SN: ' + i.sn
7483                      ));
7484                  }
7485                  i ||
7486                    ((i = (function (t, e) {
7487                      return Lr(t, function (t) {
7488                        return t.cc < e ? 1 : t.cc > e ? -1 : 0;
7489                      });
7490                    })(e, r.cc)),
7491                    i &&
7492                      this.log(
7493                        'Live playlist, switching playlist, load frag with same CC: ' + i.sn
7494                      ));
7495                }
7496              } else {
7497                var s = this.hls.liveSyncPosition;
7498                null !== s &&
7499                  (i = this.getFragmentAtPosition(s, this.bitrateTest ? t.fragmentEnd : t.edge, t));
7500              }
7501              return i;
7502            }),
7503            (r.getFragmentAtPosition = function (t, e, r) {
7504              var i,
7505                n = this.config,
7506                a = this.fragPrevious,
7507                s = r.fragments,
7508                o = r.endSN,
7509                l = r.fragmentHint,
7510                u = n.maxFragLookUpTolerance,
7511                h = r.partList,
7512                d = !!(n.lowLatencyMode && null != h && h.length && l);
7513              if (
7514                (d && l && !this.bitrateTest && ((s = s.concat(l)), (o = l.sn)),
7515                (i = t < e ? Ar(a, s, t, t > e - u ? 0 : u) : s[s.length - 1]))
7516              ) {
7517                var c = i.sn - r.startSN,
7518                  f = this.fragmentTracker.getState(i);
7519                if (
7520                  ((f === Jr || (f === Qr && i.gap)) && (a = i),
7521                  a && i.sn === a.sn && (!d || h[0].fragment.sn > i.sn) && a && i.level === a.level)
7522                ) {
7523                  var g = s[c + 1];
7524                  i = i.sn < o && this.fragmentTracker.getState(g) !== Jr ? g : null;
7525                }
7526              }
7527              return i;
7528            }),
7529            (r.synchronizeToLiveEdge = function (t) {
7530              var e = this.config,
7531                r = this.media;
7532              if (r) {
7533                var i = this.hls.liveSyncPosition,
7534                  n = r.currentTime,
7535                  a = t.fragments[0].start,
7536                  s = t.edge,
7537                  o = n >= a - e.maxFragLookUpTolerance && n <= s;
7538                if (null !== i && r.duration > i && (n < i || !o)) {
7539                  var l =
7540                    void 0 !== e.liveMaxLatencyDuration
7541                      ? e.liveMaxLatencyDuration
7542                      : e.liveMaxLatencyDurationCount * t.targetduration;
7543                  ((!o && r.readyState < 4) || n < s - l) &&
7544                    (this.loadedmetadata || (this.nextLoadPosition = i),
7545                    r.readyState &&
7546                      (this.warn(
7547                        'Playback: ' +
7548                          n.toFixed(3) +
7549                          ' is located too far from the end of live sliding playlist: ' +
7550                          s +
7551                          ', reset currentTime to : ' +
7552                          i.toFixed(3)
7553                      ),
7554                      (r.currentTime = i)));
7555                }
7556              }
7557            }),
7558            (r.alignPlaylists = function (t, e, r) {
7559              var i = t.fragments.length;
7560              if (!i) return this.warn('No fragments in live playlist'), 0;
7561              var n = t.fragments[0].start,
7562                a = !e,
7563                s = t.alignedSliding && y(n);
7564              if (a || (!s && !n)) {
7565                var o = this.fragPrevious;
7566                oi(o, r, t);
7567                var l = t.fragments[0].start;
7568                return (
7569                  this.log(
7570                    'Live playlist sliding: ' +
7571                      l.toFixed(2) +
7572                      ' start-sn: ' +
7573                      (e ? e.startSN : 'na') +
7574                      '->' +
7575                      t.startSN +
7576                      ' prev-sn: ' +
7577                      (o ? o.sn : 'na') +
7578                      ' fragments: ' +
7579                      i
7580                  ),
7581                  l
7582                );
7583              }
7584              return n;
7585            }),
7586            (r.waitForCdnTuneIn = function (t) {
7587              return (
7588                t.live &&
7589                t.canBlockReload &&
7590                t.partTarget &&
7591                t.tuneInGoal > Math.max(t.partHoldBack, 3 * t.partTarget)
7592              );
7593            }),
7594            (r.setStartPosition = function (t, e) {
7595              var r = this.startPosition;
7596              if ((r < e && (r = -1), -1 === r || -1 === this.lastCurrentTime)) {
7597                var i = null !== this.startTimeOffset,
7598                  n = i ? this.startTimeOffset : t.startTimeOffset;
7599                null !== n && y(n)
7600                  ? ((r = e + n),
7601                    n < 0 && (r += t.totalduration),
7602                    (r = Math.min(Math.max(e, r), e + t.totalduration)),
7603                    this.log(
7604                      'Start time offset ' +
7605                        n +
7606                        ' found in ' +
7607                        (i ? 'multivariant' : 'media') +
7608                        ' playlist, adjust startPosition to ' +
7609                        r
7610                    ),
7611                    (this.startPosition = r))
7612                  : t.live
7613                  ? (r = this.hls.liveSyncPosition || e)
7614                  : (this.startPosition = r = 0),
7615                  (this.lastCurrentTime = r);
7616              }
7617              this.nextLoadPosition = r;
7618            }),
7619            (r.getLoadPosition = function () {
7620              var t = this.media,
7621                e = 0;
7622              return (
7623                this.loadedmetadata && t
7624                  ? (e = t.currentTime)
7625                  : this.nextLoadPosition && (e = this.nextLoadPosition),
7626                e
7627              );
7628            }),
7629            (r.handleFragLoadAborted = function (t, e) {
7630              this.transmuxer &&
7631                'initSegment' !== t.sn &&
7632                t.stats.aborted &&
7633                (this.warn(
7634                  'Fragment ' +
7635                    t.sn +
7636                    (e ? ' part ' + e.index : '') +
7637                    ' of level ' +
7638                    t.level +
7639                    ' was aborted'
7640                ),
7641                this.resetFragmentLoading(t));
7642            }),
7643            (r.resetFragmentLoading = function (t) {
7644              (this.fragCurrent && (this.fragContextChanged(t) || this.state === Ai)) ||
7645                (this.state = Ti);
7646            }),
7647            (r.onFragmentOrKeyLoadError = function (t, e) {
7648              if (e.chunkMeta && !e.frag) {
7649                var r = this.getCurrentContext(e.chunkMeta);
7650                r && (e.frag = r.frag);
7651              }
7652              var i = e.frag;
7653              if (i && i.type === t && this.levels)
7654                if (this.fragContextChanged(i)) {
7655                  var n;
7656                  this.warn(
7657                    'Frag load error must match current frag to retry ' +
7658                      i.url +
7659                      ' > ' +
7660                      (null == (n = this.fragCurrent) ? void 0 : n.url)
7661                  );
7662                } else {
7663                  var a = e.details === A.FRAG_GAP;
7664                  a && this.fragmentTracker.fragBuffered(i, !0);
7665                  var s = e.errorAction,
7666                    o = s || {},
7667                    l = o.action,
7668                    u = o.retryCount,
7669                    h = void 0 === u ? 0 : u,
7670                    d = o.retryConfig;
7671                  if (s && l === wr && d) {
7672                    this.resetStartWhenNotLoaded(this.levelLastLoaded);
7673                    var c = Er(d, h);
7674                    this.warn(
7675                      'Fragment ' +
7676                        i.sn +
7677                        ' of ' +
7678                        t +
7679                        ' ' +
7680                        i.level +
7681                        ' errored with ' +
7682                        e.details +
7683                        ', retrying loading ' +
7684                        (h + 1) +
7685                        '/' +
7686                        d.maxNumRetry +
7687                        ' in ' +
7688                        c +
7689                        'ms'
7690                    ),
7691                      (s.resolved = !0),
7692                      (this.retryDate = self.performance.now() + c),
7693                      (this.state = Ai);
7694                  } else if (d && s) {
7695                    if ((this.resetFragmentErrors(t), !(h < d.maxNumRetry)))
7696                      return void w.warn(e.details + ' reached or exceeded max retry (' + h + ')');
7697                    a || l === Ir || (s.resolved = !0);
7698                  } else
7699                    (null == s ? void 0 : s.action) === Dr ? (this.state = Ci) : (this.state = Ii);
7700                  this.tickImmediate();
7701                }
7702            }),
7703            (r.reduceLengthAndFlushBuffer = function (t) {
7704              if (this.state === bi || this.state === ki) {
7705                var e = t.frag,
7706                  r = t.parent,
7707                  i = this.getFwdBufferInfo(this.mediaBuffer, r),
7708                  n = i && i.len > 0.5;
7709                n && this.reduceMaxBufferLength(i.len, (null == e ? void 0 : e.duration) || 10);
7710                var a = !n;
7711                return (
7712                  a &&
7713                    this.warn(
7714                      'Buffer full error while media.currentTime is not buffered, flush ' +
7715                        r +
7716                        ' buffer'
7717                    ),
7718                  e && (this.fragmentTracker.removeFragment(e), (this.nextLoadPosition = e.start)),
7719                  this.resetLoadingState(),
7720                  a
7721                );
7722              }
7723              return !1;
7724            }),
7725            (r.resetFragmentErrors = function (t) {
7726              t === Me && (this.fragCurrent = null),
7727                this.loadedmetadata || (this.startFragRequested = !1),
7728                this.state !== Ei && (this.state = Ti);
7729            }),
7730            (r.afterBufferFlushed = function (t, e, r) {
7731              if (t) {
7732                var i = ri.getBuffered(t);
7733                this.fragmentTracker.detectEvictedFragments(e, i, r),
7734                  this.state === Di && this.resetLoadingState();
7735              }
7736            }),
7737            (r.resetLoadingState = function () {
7738              this.log('Reset loading state'),
7739                (this.fragCurrent = null),
7740                (this.fragPrevious = null),
7741                (this.state = Ti);
7742            }),
7743            (r.resetStartWhenNotLoaded = function (t) {
7744              if (!this.loadedmetadata) {
7745                this.startFragRequested = !1;
7746                var e = t ? t.details : null;
7747                null != e && e.live
7748                  ? ((this.startPosition = -1),
7749                    this.setStartPosition(e, 0),
7750                    this.resetLoadingState())
7751                  : (this.nextLoadPosition = this.startPosition);
7752              }
7753            }),
7754            (r.resetWhenMissingContext = function (t) {
7755              this.warn(
7756                'The loading context changed while buffering fragment ' +
7757                  t.sn +
7758                  ' of level ' +
7759                  t.level +
7760                  '. This chunk will not be buffered.'
7761              ),
7762                this.removeUnbufferedFrags(),
7763                this.resetStartWhenNotLoaded(this.levelLastLoaded),
7764                this.resetLoadingState();
7765            }),
7766            (r.removeUnbufferedFrags = function (t) {
7767              void 0 === t && (t = 0),
7768                this.fragmentTracker.removeFragmentsInRange(t, 1 / 0, this.playlistType, !1, !0);
7769            }),
7770            (r.updateLevelTiming = function (t, e, r, i) {
7771              var n,
7772                a = this,
7773                s = r.details;
7774              if (s) {
7775                if (
7776                  !Object.keys(t.elementaryStreams).reduce(function (e, n) {
7777                    var o = t.elementaryStreams[n];
7778                    if (o) {
7779                      var l = o.endPTS - o.startPTS;
7780                      if (l <= 0)
7781                        return (
7782                          a.warn(
7783                            'Could not parse fragment ' +
7784                              t.sn +
7785                              ' ' +
7786                              n +
7787                              ' duration reliably (' +
7788                              l +
7789                              ')'
7790                          ),
7791                          e || !1
7792                        );
7793                      var u = i ? 0 : hr(s, t, o.startPTS, o.endPTS, o.startDTS, o.endDTS);
7794                      return (
7795                        a.hls.trigger(S.LEVEL_PTS_UPDATED, {
7796                          details: s,
7797                          level: r,
7798                          drift: u,
7799                          type: n,
7800                          frag: t,
7801                          start: o.startPTS,
7802                          end: o.endPTS,
7803                        }),
7804                        !0
7805                      );
7806                    }
7807                    return e;
7808                  }, !1) &&
7809                  null === (null == (n = this.transmuxer) ? void 0 : n.error)
7810                ) {
7811                  var o = new Error(
7812                    'Found no media in fragment ' +
7813                      t.sn +
7814                      ' of level ' +
7815                      t.level +
7816                      ' resetting transmuxer to fallback to playlist timing'
7817                  );
7818                  if (
7819                    (0 === r.fragmentError &&
7820                      (r.fragmentError++,
7821                      (t.gap = !0),
7822                      this.fragmentTracker.removeFragment(t),
7823                      this.fragmentTracker.fragBuffered(t, !0)),
7824                    this.warn(o.message),
7825                    this.hls.trigger(S.ERROR, {
7826                      type: L.MEDIA_ERROR,
7827                      details: A.FRAG_PARSING_ERROR,
7828                      fatal: !1,
7829                      error: o,
7830                      frag: t,
7831                      reason: 'Found no media in msn ' + t.sn + ' of level "' + r.url + '"',
7832                    }),
7833                    !this.hls)
7834                  )
7835                    return;
7836                  this.resetTransmuxer();
7837                }
7838                (this.state = ki), this.hls.trigger(S.FRAG_PARSED, { frag: t, part: e });
7839              } else this.warn('level.details undefined');
7840            }),
7841            (r.resetTransmuxer = function () {
7842              this.transmuxer && (this.transmuxer.destroy(), (this.transmuxer = null));
7843            }),
7844            (r.recoverWorkerError = function (t) {
7845              'demuxerWorker' === t.event &&
7846                (this.fragmentTracker.removeAllFragments(),
7847                this.resetTransmuxer(),
7848                this.resetStartWhenNotLoaded(this.levelLastLoaded),
7849                this.resetLoadingState());
7850            }),
7851            s(e, [
7852              {
7853                key: 'state',
7854                get: function () {
7855                  return this._state;
7856                },
7857                set: function (t) {
7858                  var e = this._state;
7859                  e !== t && ((this._state = t), this.log(e + '->' + t));
7860                },
7861              },
7862            ]),
7863            e
7864          );
7865        })(qr),
7866        xi = (function () {
7867          function t() {
7868            (this.chunks = []), (this.dataLength = 0);
7869          }
7870          var e = t.prototype;
7871          return (
7872            (e.push = function (t) {
7873              this.chunks.push(t), (this.dataLength += t.length);
7874            }),
7875            (e.flush = function () {
7876              var t,
7877                e = this.chunks,
7878                r = this.dataLength;
7879              return e.length
7880                ? ((t =
7881                    1 === e.length
7882                      ? e[0]
7883                      : (function (t, e) {
7884                          for (var r = new Uint8Array(e), i = 0, n = 0; n < t.length; n++) {
7885                            var a = t[n];
7886                            r.set(a, i), (i += a.length);
7887                          }
7888                          return r;
7889                        })(e, r)),
7890                  this.reset(),
7891                  t)
7892                : new Uint8Array(0);
7893            }),
7894            (e.reset = function () {
7895              (this.chunks.length = 0), (this.dataLength = 0);
7896            }),
7897            t
7898          );
7899        })();
7900      function Pi(t, e) {
7901        return (
7902          void 0 === t && (t = ''),
7903          void 0 === e && (e = 9e4),
7904          {
7905            type: t,
7906            id: -1,
7907            pid: -1,
7908            inputTimeScale: e,
7909            sequenceNumber: -1,
7910            samples: [],
7911            dropped: 0,
7912          }
7913        );
7914      }
7915      var Fi = (function () {
7916          function t() {
7917            (this._audioTrack = void 0),
7918              (this._id3Track = void 0),
7919              (this.frameIndex = 0),
7920              (this.cachedData = null),
7921              (this.basePTS = null),
7922              (this.initPTS = null),
7923              (this.lastPTS = null);
7924          }
7925          var e = t.prototype;
7926          return (
7927            (e.resetInitSegment = function (t, e, r, i) {
7928              this._id3Track = {
7929                type: 'id3',
7930                id: 3,
7931                pid: -1,
7932                inputTimeScale: 9e4,
7933                sequenceNumber: 0,
7934                samples: [],
7935                dropped: 0,
7936              };
7937            }),
7938            (e.resetTimeStamp = function (t) {
7939              (this.initPTS = t), this.resetContiguity();
7940            }),
7941            (e.resetContiguity = function () {
7942              (this.basePTS = null), (this.lastPTS = null), (this.frameIndex = 0);
7943            }),
7944            (e.canParse = function (t, e) {
7945              return !1;
7946            }),
7947            (e.appendFrame = function (t, e, r) {}),
7948            (e.demux = function (t, e) {
7949              this.cachedData && ((t = Wt(this.cachedData, t)), (this.cachedData = null));
7950              var r,
7951                i = ct(t, 0),
7952                n = i ? i.length : 0,
7953                a = this._audioTrack,
7954                s = this._id3Track,
7955                o = i ? vt(i) : void 0,
7956                l = t.length;
7957              for (
7958                (null === this.basePTS || (0 === this.frameIndex && y(o))) &&
7959                  ((this.basePTS = Mi(o, e, this.initPTS)), (this.lastPTS = this.basePTS)),
7960                  null === this.lastPTS && (this.lastPTS = this.basePTS),
7961                  i &&
7962                    i.length > 0 &&
7963                    s.samples.push({
7964                      pts: this.lastPTS,
7965                      dts: this.lastPTS,
7966                      data: i,
7967                      type: We,
7968                      duration: Number.POSITIVE_INFINITY,
7969                    });
7970                n < l;
7971
7972              ) {
7973                if (this.canParse(t, n)) {
7974                  var u = this.appendFrame(a, t, n);
7975                  u
7976                    ? (this.frameIndex++, (this.lastPTS = u.sample.pts), (r = n += u.length))
7977                    : (n = l);
7978                } else
7979                  gt(t, n)
7980                    ? ((i = ct(t, n)),
7981                      s.samples.push({
7982                        pts: this.lastPTS,
7983                        dts: this.lastPTS,
7984                        data: i,
7985                        type: We,
7986                        duration: Number.POSITIVE_INFINITY,
7987                      }),
7988                      (r = n += i.length))
7989                    : n++;
7990                if (n === l && r !== l) {
7991                  var h = lt(t, r);
7992                  this.cachedData
7993                    ? (this.cachedData = Wt(this.cachedData, h))
7994                    : (this.cachedData = h);
7995                }
7996              }
7997              return { audioTrack: a, videoTrack: Pi(), id3Track: s, textTrack: Pi() };
7998            }),
7999            (e.demuxSampleAes = function (t, e, r) {
8000              return Promise.reject(
8001                new Error('[' + this + '] This demuxer does not support Sample-AES decryption')
8002              );
8003            }),
8004            (e.flush = function (t) {
8005              var e = this.cachedData;
8006              return (
8007                e && ((this.cachedData = null), this.demux(e, 0)),
8008                {
8009                  audioTrack: this._audioTrack,
8010                  videoTrack: Pi(),
8011                  id3Track: this._id3Track,
8012                  textTrack: Pi(),
8013                }
8014              );
8015            }),
8016            (e.destroy = function () {}),
8017            t
8018          );
8019        })(),
8020        Mi = function (t, e, r) {
8021          return y(t) ? 90 * t : 9e4 * e + (r ? (9e4 * r.baseTime) / r.timescale : 0);
8022        };
8023      function Oi(t, e) {
8024        return 255 === t[e] && 240 == (246 & t[e + 1]);
8025      }
8026      function Ni(t, e) {
8027        return 1 & t[e + 1] ? 7 : 9;
8028      }
8029      function Ui(t, e) {
8030        return ((3 & t[e + 3]) << 11) | (t[e + 4] << 3) | ((224 & t[e + 5]) >>> 5);
8031      }
8032      function Bi(t, e) {
8033        return e + 1 < t.length && Oi(t, e);
8034      }
8035      function Gi(t, e) {
8036        if (Bi(t, e)) {
8037          var r = Ni(t, e);
8038          if (e + r >= t.length) return !1;
8039          var i = Ui(t, e);
8040          if (i <= r) return !1;
8041          var n = e + i;
8042          return n === t.length || Bi(t, n);
8043        }
8044        return !1;
8045      }
8046      function Ki(t, e, r, i, n) {
8047        if (!t.samplerate) {
8048          var a = (function (t, e, r, i) {
8049            var n,
8050              a,
8051              s,
8052              o,
8053              l = navigator.userAgent.toLowerCase(),
8054              u = i,
8055              h = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350];
8056            n = 1 + ((192 & e[r + 2]) >>> 6);
8057            var d = (60 & e[r + 2]) >>> 2;
8058            if (!(d > h.length - 1))
8059              return (
8060                (s = (1 & e[r + 2]) << 2),
8061                (s |= (192 & e[r + 3]) >>> 6),
8062                w.log('manifest codec:' + i + ', ADTS type:' + n + ', samplingIndex:' + d),
8063                /firefox/i.test(l)
8064                  ? d >= 6
8065                    ? ((n = 5), (o = new Array(4)), (a = d - 3))
8066                    : ((n = 2), (o = new Array(2)), (a = d))
8067                  : -1 !== l.indexOf('android')
8068                  ? ((n = 2), (o = new Array(2)), (a = d))
8069                  : ((n = 5),
8070                    (o = new Array(4)),
8071                    (i && (-1 !== i.indexOf('mp4a.40.29') || -1 !== i.indexOf('mp4a.40.5'))) ||
8072                    (!i && d >= 6)
8073                      ? (a = d - 3)
8074                      : (((i &&
8075                          -1 !== i.indexOf('mp4a.40.2') &&
8076                          ((d >= 6 && 1 === s) || /vivaldi/i.test(l))) ||
8077                          (!i && 1 === s)) &&
8078                          ((n = 2), (o = new Array(2))),
8079                        (a = d))),
8080                (o[0] = n << 3),
8081                (o[0] |= (14 & d) >> 1),
8082                (o[1] |= (1 & d) << 7),
8083                (o[1] |= s << 3),
8084                5 === n &&
8085                  ((o[1] |= (14 & a) >> 1), (o[2] = (1 & a) << 7), (o[2] |= 8), (o[3] = 0)),
8086                {
8087                  config: o,
8088                  samplerate: h[d],
8089                  channelCount: s,
8090                  codec: 'mp4a.40.' + n,
8091                  manifestCodec: u,
8092                }
8093              );
8094            var c = new Error('invalid ADTS sampling index:' + d);
8095            t.emit(S.ERROR, S.ERROR, {
8096              type: L.MEDIA_ERROR,
8097              details: A.FRAG_PARSING_ERROR,
8098              fatal: !0,
8099              error: c,
8100              reason: c.message,
8101            });
8102          })(e, r, i, n);
8103          if (!a) return;
8104          (t.config = a.config),
8105            (t.samplerate = a.samplerate),
8106            (t.channelCount = a.channelCount),
8107            (t.codec = a.codec),
8108            (t.manifestCodec = a.manifestCodec),
8109            w.log(
8110              'parsed codec:' + t.codec + ', rate:' + a.samplerate + ', channels:' + a.channelCount
8111            );
8112        }
8113      }
8114      function Hi(t) {
8115        return 9216e4 / t;
8116      }
8117      function Vi(t, e, r, i, n) {
8118        var a,
8119          s = i + n * Hi(t.samplerate),
8120          o = (function (t, e) {
8121            var r = Ni(t, e);
8122            if (e + r <= t.length) {
8123              var i = Ui(t, e) - r;
8124              if (i > 0) return { headerLength: r, frameLength: i };
8125            }
8126          })(e, r);
8127        if (o) {
8128          var l = o.frameLength,
8129            u = o.headerLength,
8130            h = u + l,
8131            d = Math.max(0, r + h - e.length);
8132          d
8133            ? (a = new Uint8Array(h - u)).set(e.subarray(r + u, e.length), 0)
8134            : (a = e.subarray(r + u, r + h));
8135          var c = { unit: a, pts: s };
8136          return d || t.samples.push(c), { sample: c, length: h, missing: d };
8137        }
8138        var f = e.length - r;
8139        return (
8140          (a = new Uint8Array(f)).set(e.subarray(r, e.length), 0),
8141          { sample: { unit: a, pts: s }, length: f, missing: -1 }
8142        );
8143      }
8144      var Yi = null,
8145        Wi = [
8146          32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96,
8147          112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192,
8148          224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24,
8149          32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,
8150        ],
8151        ji = [44100, 48e3, 32e3, 22050, 24e3, 16e3, 11025, 12e3, 8e3],
8152        qi = [
8153          [0, 72, 144, 12],
8154          [0, 0, 0, 0],
8155          [0, 72, 144, 12],
8156          [0, 144, 144, 12],
8157        ],
8158        Xi = [0, 1, 1, 4];
8159      function zi(t, e, r, i, n) {
8160        if (!(r + 24 > e.length)) {
8161          var a = Qi(e, r);
8162          if (a && r + a.frameLength <= e.length) {
8163            var s = i + n * ((9e4 * a.samplesPerFrame) / a.sampleRate),
8164              o = { unit: e.subarray(r, r + a.frameLength), pts: s, dts: s };
8165            return (
8166              (t.config = []),
8167              (t.channelCount = a.channelCount),
8168              (t.samplerate = a.sampleRate),
8169              t.samples.push(o),
8170              { sample: o, length: a.frameLength, missing: 0 }
8171            );
8172          }
8173        }
8174      }
8175      function Qi(t, e) {
8176        var r = (t[e + 1] >> 3) & 3,
8177          i = (t[e + 1] >> 1) & 3,
8178          n = (t[e + 2] >> 4) & 15,
8179          a = (t[e + 2] >> 2) & 3;
8180        if (1 !== r && 0 !== n && 15 !== n && 3 !== a) {
8181          var s = (t[e + 2] >> 1) & 1,
8182            o = t[e + 3] >> 6,
8183            l = 1e3 * Wi[14 * (3 === r ? 3 - i : 3 === i ? 3 : 4) + n - 1],
8184            u = ji[3 * (3 === r ? 0 : 2 === r ? 1 : 2) + a],
8185            h = 3 === o ? 1 : 2,
8186            d = qi[r][i],
8187            c = Xi[i],
8188            f = 8 * d * c,
8189            g = Math.floor((d * l) / u + s) * c;
8190          if (null === Yi) {
8191            var v = (navigator.userAgent || '').match(/Chrome\/(\d+)/i);
8192            Yi = v ? parseInt(v[1]) : 0;
8193          }
8194          return (
8195            !!Yi && Yi <= 87 && 2 === i && l >= 224e3 && 0 === o && (t[e + 3] = 128 | t[e + 3]),
8196            { sampleRate: u, channelCount: h, frameLength: g, samplesPerFrame: f }
8197          );
8198        }
8199      }
8200      function Ji(t, e) {
8201        return 255 === t[e] && 224 == (224 & t[e + 1]) && 0 != (6 & t[e + 1]);
8202      }
8203      function $i(t, e) {
8204        return e + 1 < t.length && Ji(t, e);
8205      }
8206      function Zi(t, e) {
8207        if (e + 1 < t.length && Ji(t, e)) {
8208          var r = Qi(t, e),
8209            i = 4;
8210          null != r && r.frameLength && (i = r.frameLength);
8211          var n = e + i;
8212          return n === t.length || $i(t, n);
8213        }
8214        return !1;
8215      }
8216      var tn = (function (t) {
8217          function e(e, r) {
8218            var i;
8219            return (
8220              ((i = t.call(this) || this).observer = void 0),
8221              (i.config = void 0),
8222              (i.observer = e),
8223              (i.config = r),
8224              i
8225            );
8226          }
8227          l(e, t);
8228          var r = e.prototype;
8229          return (
8230            (r.resetInitSegment = function (e, r, i, n) {
8231              t.prototype.resetInitSegment.call(this, e, r, i, n),
8232                (this._audioTrack = {
8233                  container: 'audio/adts',
8234                  type: 'audio',
8235                  id: 2,
8236                  pid: -1,
8237                  sequenceNumber: 0,
8238                  segmentCodec: 'aac',
8239                  samples: [],
8240                  manifestCodec: r,
8241                  duration: n,
8242                  inputTimeScale: 9e4,
8243                  dropped: 0,
8244                });
8245            }),
8246            (e.probe = function (t) {
8247              if (!t) return !1;
8248              var e = ct(t, 0),
8249                r = (null == e ? void 0 : e.length) || 0;
8250              if (Zi(t, r)) return !1;
8251              for (var i = t.length; r < i; r++)
8252                if (Gi(t, r)) return w.log('ADTS sync word found !'), !0;
8253              return !1;
8254            }),
8255            (r.canParse = function (t, e) {
8256              return (function (t, e) {
8257                return (
8258                  (function (t, e) {
8259                    return e + 5 < t.length;
8260                  })(t, e) &&
8261                  Oi(t, e) &&
8262                  Ui(t, e) <= t.length - e
8263                );
8264              })(t, e);
8265            }),
8266            (r.appendFrame = function (t, e, r) {
8267              Ki(t, this.observer, e, r, t.manifestCodec);
8268              var i = Vi(t, e, r, this.basePTS, this.frameIndex);
8269              if (i && 0 === i.missing) return i;
8270            }),
8271            e
8272          );
8273        })(Fi),
8274        en = /\/emsg[-/]ID3/i,
8275        rn = (function () {
8276          function t(t, e) {
8277            (this.remainderData = null),
8278              (this.timeOffset = 0),
8279              (this.config = void 0),
8280              (this.videoTrack = void 0),
8281              (this.audioTrack = void 0),
8282              (this.id3Track = void 0),
8283              (this.txtTrack = void 0),
8284              (this.config = e);
8285          }
8286          var e = t.prototype;
8287          return (
8288            (e.resetTimeStamp = function () {}),
8289            (e.resetInitSegment = function (t, e, r, i) {
8290              var n = (this.videoTrack = Pi('video', 1)),
8291                a = (this.audioTrack = Pi('audio', 1)),
8292                s = (this.txtTrack = Pi('text', 1));
8293              if (
8294                ((this.id3Track = Pi('id3', 1)), (this.timeOffset = 0), null != t && t.byteLength)
8295              ) {
8296                var o = Ut(t);
8297                if (o.video) {
8298                  var l = o.video,
8299                    u = l.id,
8300                    h = l.timescale,
8301                    d = l.codec;
8302                  (n.id = u), (n.timescale = s.timescale = h), (n.codec = d);
8303                }
8304                if (o.audio) {
8305                  var c = o.audio,
8306                    f = c.id,
8307                    g = c.timescale,
8308                    v = c.codec;
8309                  (a.id = f), (a.timescale = g), (a.codec = v);
8310                }
8311                (s.id = wt.text), (n.sampleDuration = 0), (n.duration = a.duration = i);
8312              }
8313            }),
8314            (e.resetContiguity = function () {
8315              this.remainderData = null;
8316            }),
8317            (t.probe = function (t) {
8318              return (function (t) {
8319                for (var e = t.byteLength, r = 0; r < e; ) {
8320                  var i = xt(t, r);
8321                  if (
8322                    i > 8 &&
8323                    109 === t[r + 4] &&
8324                    111 === t[r + 5] &&
8325                    111 === t[r + 6] &&
8326                    102 === t[r + 7]
8327                  )
8328                    return !0;
8329                  r = i > 1 ? r + i : e;
8330                }
8331                return !1;
8332              })(t);
8333            }),
8334            (e.demux = function (t, e) {
8335              this.timeOffset = e;
8336              var r = t,
8337                i = this.videoTrack,
8338                n = this.txtTrack;
8339              if (this.config.progressive) {
8340                this.remainderData && (r = Wt(this.remainderData, t));
8341                var a = (function (t) {
8342                  var e = { valid: null, remainder: null },
8343                    r = Ot(t, ['moof']);
8344                  if (r.length < 2) return (e.remainder = t), e;
8345                  var i = r[r.length - 1];
8346                  return (
8347                    (e.valid = lt(t, 0, i.byteOffset - 8)),
8348                    (e.remainder = lt(t, i.byteOffset - 8)),
8349                    e
8350                  );
8351                })(r);
8352                (this.remainderData = a.remainder), (i.samples = a.valid || new Uint8Array());
8353              } else i.samples = r;
8354              var s = this.extractID3Track(i, e);
8355              return (
8356                (n.samples = jt(e, i)),
8357                {
8358                  videoTrack: i,
8359                  audioTrack: this.audioTrack,
8360                  id3Track: s,
8361                  textTrack: this.txtTrack,
8362                }
8363              );
8364            }),
8365            (e.flush = function () {
8366              var t = this.timeOffset,
8367                e = this.videoTrack,
8368                r = this.txtTrack;
8369              (e.samples = this.remainderData || new Uint8Array()), (this.remainderData = null);
8370              var i = this.extractID3Track(e, this.timeOffset);
8371              return (
8372                (r.samples = jt(t, e)),
8373                { videoTrack: e, audioTrack: Pi(), id3Track: i, textTrack: Pi() }
8374              );
8375            }),
8376            (e.extractID3Track = function (t, e) {
8377              var r = this.id3Track;
8378              if (t.samples.length) {
8379                var i = Ot(t.samples, ['emsg']);
8380                i &&
8381                  i.forEach(function (t) {
8382                    var i = (function (t) {
8383                      var e = t[0],
8384                        r = '',
8385                        i = '',
8386                        n = 0,
8387                        a = 0,
8388                        s = 0,
8389                        o = 0,
8390                        l = 0,
8391                        u = 0;
8392                      if (0 === e) {
8393                        for (; '\0' !== Ct(t.subarray(u, u + 1)); )
8394                          (r += Ct(t.subarray(u, u + 1))), (u += 1);
8395                        for (
8396                          r += Ct(t.subarray(u, u + 1)), u += 1;
8397                          '\0' !== Ct(t.subarray(u, u + 1));
8398
8399                        )
8400                          (i += Ct(t.subarray(u, u + 1))), (u += 1);
8401                        (i += Ct(t.subarray(u, u + 1))),
8402                          (u += 1),
8403                          (n = xt(t, 12)),
8404                          (a = xt(t, 16)),
8405                          (o = xt(t, 20)),
8406                          (l = xt(t, 24)),
8407                          (u = 28);
8408                      } else if (1 === e) {
8409                        n = xt(t, (u += 4));
8410                        var h = xt(t, (u += 4)),
8411                          d = xt(t, (u += 4));
8412                        for (
8413                          u += 4,
8414                            s = Math.pow(2, 32) * h + d,
8415                            E(s) ||
8416                              ((s = Number.MAX_SAFE_INTEGER),
8417                              w.warn(
8418                                'Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box'
8419                              )),
8420                            o = xt(t, u),
8421                            l = xt(t, (u += 4)),
8422                            u += 4;
8423                          '\0' !== Ct(t.subarray(u, u + 1));
8424
8425                        )
8426                          (r += Ct(t.subarray(u, u + 1))), (u += 1);
8427                        for (
8428                          r += Ct(t.subarray(u, u + 1)), u += 1;
8429                          '\0' !== Ct(t.subarray(u, u + 1));
8430
8431                        )
8432                          (i += Ct(t.subarray(u, u + 1))), (u += 1);
8433                        (i += Ct(t.subarray(u, u + 1))), (u += 1);
8434                      }
8435                      return {
8436                        schemeIdUri: r,
8437                        value: i,
8438                        timeScale: n,
8439                        presentationTime: s,
8440                        presentationTimeDelta: a,
8441                        eventDuration: o,
8442                        id: l,
8443                        payload: t.subarray(u, t.byteLength),
8444                      };
8445                    })(t);
8446                    if (en.test(i.schemeIdUri)) {
8447                      var n = y(i.presentationTime)
8448                          ? i.presentationTime / i.timeScale
8449                          : e + i.presentationTimeDelta / i.timeScale,
8450                        a =
8451                          4294967295 === i.eventDuration
8452                            ? Number.POSITIVE_INFINITY
8453                            : i.eventDuration / i.timeScale;
8454                      a <= 0.001 && (a = Number.POSITIVE_INFINITY);
8455                      var s = i.payload;
8456                      r.samples.push({
8457                        data: s,
8458                        len: s.byteLength,
8459                        dts: n,
8460                        pts: n,
8461                        type: qe,
8462                        duration: a,
8463                      });
8464                    }
8465                  });
8466              }
8467              return r;
8468            }),
8469            (e.demuxSampleAes = function (t, e, r) {
8470              return Promise.reject(
8471                new Error('The MP4 demuxer does not support SAMPLE-AES decryption')
8472              );
8473            }),
8474            (e.destroy = function () {}),
8475            t
8476          );
8477        })(),
8478        nn = function (t, e) {
8479          var r = 0,
8480            i = 5;
8481          e += i;
8482          for (var n = new Uint32Array(1), a = new Uint32Array(1), s = new Uint8Array(1); i > 0; ) {
8483            s[0] = t[e];
8484            var o = Math.min(i, 8),
8485              l = 8 - o;
8486            (a[0] = (4278190080 >>> (24 + l)) << l),
8487              (n[0] = (s[0] & a[0]) >> l),
8488              (r = r ? (r << o) | n[0] : n[0]),
8489              (e += 1),
8490              (i -= o);
8491          }
8492          return r;
8493        },
8494        an = (function (t) {
8495          function e(e) {
8496            var r;
8497            return ((r = t.call(this) || this).observer = void 0), (r.observer = e), r;
8498          }
8499          l(e, t);
8500          var r = e.prototype;
8501          return (
8502            (r.resetInitSegment = function (e, r, i, n) {
8503              t.prototype.resetInitSegment.call(this, e, r, i, n),
8504                (this._audioTrack = {
8505                  container: 'audio/ac-3',
8506                  type: 'audio',
8507                  id: 2,
8508                  pid: -1,
8509                  sequenceNumber: 0,
8510                  segmentCodec: 'ac3',
8511                  samples: [],
8512                  manifestCodec: r,
8513                  duration: n,
8514                  inputTimeScale: 9e4,
8515                  dropped: 0,
8516                });
8517            }),
8518            (r.canParse = function (t, e) {
8519              return e + 64 < t.length;
8520            }),
8521            (r.appendFrame = function (t, e, r) {
8522              var i = sn(t, e, r, this.basePTS, this.frameIndex);
8523              if (-1 !== i)
8524                return { sample: t.samples[t.samples.length - 1], length: i, missing: 0 };
8525            }),
8526            (e.probe = function (t) {
8527              if (!t) return !1;
8528              var e = ct(t, 0);
8529              if (!e) return !1;
8530              var r = e.length;
8531              return 11 === t[r] && 119 === t[r + 1] && void 0 !== vt(e) && nn(t, r) < 16;
8532            }),
8533            e
8534          );
8535        })(Fi);
8536      function sn(t, e, r, i, n) {
8537        if (r + 8 > e.length) return -1;
8538        if (11 !== e[r] || 119 !== e[r + 1]) return -1;
8539        var a = e[r + 4] >> 6;
8540        if (a >= 3) return -1;
8541        var s = [48e3, 44100, 32e3][a],
8542          o = 63 & e[r + 4],
8543          l =
8544            2 *
8545            [
8546              64, 69, 96, 64, 70, 96, 80, 87, 120, 80, 88, 120, 96, 104, 144, 96, 105, 144, 112,
8547              121, 168, 112, 122, 168, 128, 139, 192, 128, 140, 192, 160, 174, 240, 160, 175, 240,
8548              192, 208, 288, 192, 209, 288, 224, 243, 336, 224, 244, 336, 256, 278, 384, 256, 279,
8549              384, 320, 348, 480, 320, 349, 480, 384, 417, 576, 384, 418, 5
854976, 448, 487, 672, 448,
8550              488, 672, 512, 557, 768, 512, 558, 768, 640, 696, 960, 640, 697, 960, 768, 835, 1152,
8551              768, 836, 1152, 896, 975, 1344, 896, 976, 1344, 1024, 1114, 1536, 1024, 1115, 1536,
8552              1152, 1253, 1728, 1152, 1254, 1728, 1280, 1393, 1920, 1280, 1394, 1920,
8553            ][3 * o + a];
8554        if (r + l > e.length) return -1;
8555        var u = e[r + 6] >> 5,
8556          h = 0;
8557        2 === u ? (h += 2) : (1 & u && 1 !== u && (h += 2), 4 & u && (h += 2));
8558        var d = (((e[r + 6] << 8) | e[r + 7]) >> (12 - h)) & 1,
8559          c = [2, 1, 2, 3, 3, 4, 4, 5][u] + d,
8560          f = e[r + 5] >> 3,
8561          g = 7 & e[r + 5],
8562          v = new Uint8Array([
8563            (a << 6) | (f << 1) | (g >> 2),
8564            ((3 & g) << 6) | (u << 3) | (d << 2) | (o >> 4),
8565            (o << 4) & 224,
8566          ]),
8567          m = i + n * ((1536 / s) * 9e4),
8568          p = e.subarray(r, r + l);
8569        return (
8570          (t.config = v),
8571          (t.channelCount = c),
8572          (t.samplerate = s),
8573          t.samples.push({ unit: p, pts: m }),
8574          l
8575        );
8576      }
8577      var on = (function () {
8578          function t() {
8579            this.VideoSample = null;
8580          }
8581          var e = t.prototype;
8582          return (
8583            (e.createVideoSample = function (t, e, r, i) {
8584              return { key: t, frame: !1, pts: e, dts: r, units: [], debug: i, length: 0 };
8585            }),
8586            (e.getLastNalUnit = function (t) {
8587              var e,
8588                r,
8589                i = this.VideoSample;
8590              if (
8591                ((i && 0 !== i.units.length) || (i = t[t.length - 1]), null != (e = i) && e.units)
8592              ) {
8593                var n = i.units;
8594                r = n[n.length - 1];
8595              }
8596              return r;
8597            }),
8598            (e.pushAccessUnit = function (t, e) {
8599              if (t.units.length && t.frame) {
8600                if (void 0 === t.pts) {
8601                  var r = e.samples,
8602                    i = r.length;
8603                  if (!i) return void e.dropped++;
8604                  var n = r[i - 1];
8605                  (t.pts = n.pts), (t.dts = n.dts);
8606                }
8607                e.samples.push(t);
8608              }
8609              t.debug.length && w.log(t.pts + '/' + t.dts + ':' + t.debug);
8610            }),
8611            t
8612          );
8613        })(),
8614        ln = (function () {
8615          function t(t) {
8616            (this.data = void 0),
8617              (this.bytesAvailable = void 0),
8618              (this.word = void 0),
8619              (this.bitsAvailable = void 0),
8620              (this.data = t),
8621              (this.bytesAvailable = t.byteLength),
8622              (this.word = 0),
8623              (this.bitsAvailable = 0);
8624          }
8625          var e = t.prototype;
8626          return (
8627            (e.loadWord = function () {
8628              var t = this.data,
8629                e = this.bytesAvailable,
8630                r = t.byteLength - e,
8631                i = new Uint8Array(4),
8632                n = Math.min(4, e);
8633              if (0 === n) throw new Error('no bytes available');
8634              i.set(t.subarray(r, r + n)),
8635                (this.word = new DataView(i.buffer).getUint32(0)),
8636                (this.bitsAvailable = 8 * n),
8637                (this.bytesAvailable -= n);
8638            }),
8639            (e.skipBits = function (t) {
8640              var e;
8641              (t = Math.min(t, 8 * this.bytesAvailable + this.bitsAvailable)),
8642                this.bitsAvailable > t
8643                  ? ((this.word <<= t), (this.bitsAvailable -= t))
8644                  : ((t -= this.bitsAvailable),
8645                    (t -= (e = t >> 3) << 3),
8646                    (this.bytesAvailable -= e),
8647                    this.loadWord(),
8648                    (this.word <<= t),
8649                    (this.bitsAvailable -= t));
8650            }),
8651            (e.readBits = function (t) {
8652              var e = Math.min(this.bitsAvailable, t),
8653                r = this.word >>> (32 - e);
8654              if (
8655                (t > 32 && w.error('Cannot read more than 32 bits at a time'),
8656                (this.bitsAvailable -= e),
8657                this.bitsAvailable > 0)
8658              )
8659                this.word <<= e;
8660              else {
8661                if (!(this.bytesAvailable > 0)) throw new Error('no bits available');
8662                this.loadWord();
8663              }
8664              return (e = t - e) > 0 && this.bitsAvailable ? (r << e) | this.readBits(e) : r;
8665            }),
8666            (e.skipLZ = function () {
8667              var t;
8668              for (t = 0; t < this.bitsAvailable;
8668 ++t)
8669                if (0 != (this.word & (2147483648 >>> t)))
8670                  return (this.word <<= t), (this.bitsAvailable -= t), t;
8671              return this.loadWord(), t + this.skipLZ();
8672            }),
8673            (e.skipUEG = function () {
8674              this.skipBits(1 + this.skipLZ());
8675            }),
8676            (e.skipEG = function () {
8677              this.skipBits(1 + this.skipLZ());
8678            }),
8679            (e.readUEG = function () {
8680              var t = this.skipLZ();
8681              return this.readBits(t + 1) - 1;
8682            }),
8683            (e.readEG = function () {
8684              var t = this.readUEG();
8685              return 1 & t ? (1 + t) >>> 1 : -1 * (t >>> 1);
8686            }),
8687            (e.readBoolean = function () {
8688              return 1 === this.readBits(1);
8689            }),
8690            (e.readUByte = function () {
8691              return this.readBits(8);
8692            }),
8693            (e.readUShort = function () {
8694              return this.readBits(16);
8695            }),
8696            (e.readUInt = function () {
8697              return this.readBits(32);
8698            }),
8699            (e.skipScalingList = function (t) {
8700              for (var e = 8, r = 8, i = 0; i < t; i++)
8701                0 !== r && (r = (e + this.readEG() + 256) % 256), (e = 0 === r ? e : r);
8702            }),
8703            (e.readSPS = function () {
8704              var t,
8705                e,
8706                r,
8707                i = 0,
8708                n = 0,
8709                a = 0,
8710                s = 0,
8711                o = this.readUByte.bind(this),
8712                l = this.readBits.bind(this),
8713                u = this.readUEG.bind(this),
8714                h = this.readBoolean.bind(this),
8715                d = this.skipBits.bind(this),
8716                c = this.skipEG.bind(this),
8717                f = this.skipUEG.bind(this),
8718                g = this.skipScalingList.bind(this);
8719              o();
8720              var v = o();
8721              if (
8722                (l(5),
8723                d(3),
8724                o(),
8725                f(),
8726                100 === v ||
8727                  110 === v ||
8728                  122 === v ||
8729                  244 === v ||
8730                  44 === v ||
8731                  83 === v ||
8732                  86 === v ||
8733                  118 === v ||
8734                  128 === v)
8735              ) {
8736                var m = u();
8737                if ((3 === m && d(1), f(), f(), d(1), h()))
8738                  for (e = 3 !== m ? 8 : 12, r = 0; r < e; r++) h() && g(r < 6 ? 16 : 64);
8739              }
8740              f();
8741              var p = u();
8742              if (0 === p) u();
8743              else if (1 === p) for (d(1), c(), c(), t = u(), r = 0; r < t; r++) c();
8744              f(), d(1);
8745              var y = u(),
8746                E = u(),
8747                T = l(1);
8748              0 === T && d(1), d(1), h() && ((i = u()), (n = u()), (a = u()), (s = u()));
8749              var S = [1, 1];
8750              if (h() && h())
8751                switch (o()) {
8752                  case 1:
8753                    S = [1, 1];
8754                    break;
8755                  case 2:
8756                    S = [12, 11];
8757                    break;
8758                  case 3:
8759                    S = [10, 11];
8760                    break;
8761                  case 4:
8762                    S = [16, 11];
8763                    break;
8764                  case 5:
8765                    S = [40, 33];
8766                    break;
8767                  case 6:
8768                    S = [24, 11];
8769                    break;
8770                  case 7:
8771                    S = [20, 11];
8772                    break;
8773                  case 8:
8774                    S = [32, 11];
8775                    break;
8776                  case 9:
8777                    S = [80, 33];
8778                    break;
8779                  case 10:
8780                    S = [18, 11];
8781                    break;
8782                  case 11:
8783                    S = [15, 11];
8784                    break;
8785                  case 12:
8786                    S = [64, 33];
8787                    break;
8788                  case 13:
8789                    S = [160, 99];
8790                    break;
8791                  case 14:
8792                    S = [4, 3];
8793                    break;
8794                  case 15:
8795                    S = [3, 2];
8796                    break;
8797                  case 16:
8798                    S = [2, 1];
8799                    break;
8800                  case 255:
8801                    S = [(o() << 8) | o(), (o() << 8) | o()];
8802                }
8803              return {
8804                width: Math.ceil(16 * (y + 1) - 2 * i - 2 * n),
8805                height: (2 - T) * (E + 1) * 16 - (T ? 2 : 4) * (a + s),
8806                pixelRatio: S,
8807              };
8808            }),
8809            (e.readSliceType = function () {
8810              return this.readUByte(), this.readUEG(), this.readUEG();
8811            }),
8812            t
8813          );
8814        })(),
8815        un = (function (t) {
8816          function e() {
8817            return t.apply(this, arguments) || this;
8818          }
8819          l(e, t);
8820          var r = e.prototype;
8821          return (
8822            (r.parseAVCPES = function (t, e, r, i, n) {
8823              var a,
8824                s = this,
8825                o = this.parseAVCNALu(t, r.data),
8826                l = this.VideoSample,
8827                u = !1;
8828              (r.data = null),
8829                l &&
8830                  o.length &&
8831                  !t.audFound &&
8832                  (this.pushAccessUnit(l, t),
8833                  (l = this.VideoSample = this.createVideoSample(!1, r.pts, r.dts, ''))),
8834                o.forEach(function (i) {
8835                  var o;
8836                  switch (i.type) {
8837                    case 1:
8838                      var h = !1;
8839                      a = !0;
8840                      var d,
8841                        c = i.data;
8842                      if (u && c.length > 4) {
8843                        var f = new ln(c).readSliceType();
8844                        (2 !== f && 4 !== f && 7 !== f && 9 !== f) || (h = !0);
8845                      }
8846                      h &&
8847                        null != (d = l) &&
8848                        d.frame &&
8849                        !l.key &&
8850                        (s.pushAccessUnit(l, t), (l = s.VideoSample = null)),
8851                        l || (l = s.VideoSample = s.createVideoSample(!0, r.pts, r.dts, '')),
8852                        (l.frame = !0),
8853                        (l.key = h);
8854                      break;
8855                    case 5:
8856                      (a = !0),
8857                        null != (o = l) &&
8858                          o.frame &&
8859                          !l.key &&
8860                          (s.pushAccessUnit(l, t), (l = s.VideoSample = null)),
8861                        l || (l = s.VideoSample = s.createVideoSample(!0, r.pts, r.dts, '')),
8862                        (l.key = !0),
8863                        (l.frame = !0);
8864                      break;
8865                    case 6:
8866                      (a = !0), Xt(i.data, 1, r.pts, e.samples);
8867                      break;
8868                    case 7:
8869                      var g, v;
8870                      (a = !0), (u = !0);
8871                      var m = i.data,
8872                        p = new ln(m).readSPS();
8873                      if (
8874                        !t.sps ||
8875                        t.width !== p.width ||
8876                        t.height !== p.height ||
8877                        (null == (g = t.pixelRatio) ? void 0 : g[0]) !== p.pixelRatio[0] ||
8878                        (null == (v = t.pixelRatio) ? void 0 : v[1]) !== p.pixelRatio[1]
8879                      ) {
8880                        (t.width = p.width),
8881                          (t.height = p.height),
8882                          (t.pixelRatio = p.pixelRatio),
8883                          (t.sps = [m]),
8884                          (t.duration = n);
8885                        for (var y = m.subarray(1, 4), E = 'avc1.', T = 0; T < 3; T++) {
8886                          var S = y[T].toString(16);
8887                          S.length < 2 && (S = '0' + S), (E += S);
8888                        }
8889                        t.codec = E;
8890                      }
8891                      break;
8892                    case 8:
8893                      (a = !0), (t.pps = [i.data]);
8894                      break;
8895                    case 9:
8896                      (a = !0),
8897                        (t.audFound = !0),
8898                        l && s.pushAccessUnit(l, t),
8899                        (l = s.VideoSample = s.createVideoSample(!1, r.pts, r.dts, ''));
8900                      break;
8901                    case 12:
8902                      a = !0;
8903                      break;
8904                    default:
8905                      (a = !1), l && (l.debug += 'unknown NAL ' + i.type + ' ');
8906                  }
8907                  l && a && l.units.push(i);
8908                }),
8909                i && l && (this.pushAccessUnit(l, t), (this.VideoSample = null));
8910            }),
8911            (r.parseAVCNALu = function (t, e) {
8912              var r,
8913                i,
8914                n = e.byteLength,
8915                a = t.naluState || 0,
8916                s = a,
8917                o = [],
8918                l = 0,
8919                u = -1,
8920                h = 0;
8921              for (-1 === a && ((u = 0), (h = 31 & e[0]), (a = 0), (l = 1)); l < n; )
8922                if (((r = e[l++]), a))
8923                  if (1 !== a)
8924                    if (r)
8925                      if (1 === r) {
8926                        if (((i = l - a - 1), u >= 0)) {
8927                          var d = { data: e.subarray(u, i), type: h };
8928                          o.push(d);
8929                        } else {
8930                          var c = this.getLastNalUnit(t.samples);
8931                          c &&
8932                            (s &&
8933                              l <= 4 - s &&
8934                              c.state &&
8935                              (c.data = c.data.subarray(0, c.data.byteLength - s)),
8936                            i > 0 && ((c.data = Wt(c.data, e.subarray(0, i))), (c.state = 0)));
8937                        }
8938                        l < n ? ((u = l), (h = 31 & e[l]), (a = 0)) : (a = -1);
8939                      } else a = 0;
8940                    else a = 3;
8941                  else a = r ? 0 : 2;
8942                else a = r ? 0 : 1;
8943              if (u >= 0 && a >= 0) {
8944                var f = { data: e.subarray(u, n), type: h, state: a };
8945                o.push(f);
8946              }
8947              if (0 === o.length) {
8948                var g = this.getLastNalUnit(t.samples);
8949                g && (g.data = Wt(g.data, e));
8950              }
8951              return (t.naluState = a), o;
8952            }),
8953            e
8954          );
8955        })(on),
8956        hn = (function () {
8957          function t(t, e, r) {
8958            (this.keyData = void 0),
8959              (this.decrypter = void 0),
8960              (this.keyData = r),
8961              (this.decrypter = new pi(e, { removePKCS7Padding: !1 }));
8962          }
8963          var e = t.prototype;
8964          return (
8965            (e.decryptBuffer = function (t) {
8966              return this.decrypter.decrypt(t, this.keyData.key.buffer, this.keyData.iv.buffer);
8967            }),
8968            (e.decryptAacSample = function (t, e, r) {
8969              var i = this,
8970                n = t[e].unit;
8971              if (!(n.length <= 16)) {
8972                var a = n.subarray(16, n.length - (n.length % 16)),
8973                  s = a.buffer.slice(a.byteOffset, a.byteOffset + a.length);
8974                this.decryptBuffer(s).then(function (a) {
8975                  var s = new Uint8Array(a);
8976                  n.set(s, 16), i.decrypter.isSync() || i.decryptAacSamples(t, e + 1, r);
8977                });
8978              }
8979            }),
8980            (e.decryptAacSamples = function (t, e, r) {
8981              for (; ; e++) {
8982                if (e >= t.length) return void r();
8983                if (
8984                  !(
8985                    t[e].unit.length < 32 ||
8986                    (this.decryptAacSample(t, e, r), this.decrypter.isSync())
8987                  )
8988                )
8989                  return;
8990              }
8991            }),
8992            (e.getAvcEncryptedData = function (t) {
8993              for (
8994                var e = 16 * Math.floor((t.length - 48) / 160) + 16,
8995                  r = new Int8Array(e),
8996                  i = 0,
8997                  n = 32;
8998                n < t.length - 16;
8999                n += 160, i += 16
9000              )
9001                r.set(t.subarray(n, n + 16), i);
9002              return r;
9003            }),
9004            (e.getAvcDecryptedUnit = function (t, e) {
9005              for (var r = new Uint8Array(e), i = 0, n = 32; n < t.length - 16; n += 160, i += 16)
9006                t.set(r.subarray(i, i + 16), n);
9007              return t;
9008            }),
9009            (e.decryptAvcSample = function (t, e, r, i, n) {
9010              var a = this,
9011                s = zt(n.data),
9012                o = this.getAvcEncryptedData(s);
9013              this.decryptBuffer(o.buffer).then(function (o) {
9014                (n.data = a.getAvcDecryptedUnit(s, o)),
9015                  a.decrypter.isSync() || a.decryptAvcSamples(t, e, r + 1, i);
9016              });
9017            }),
9018            (e.decryptAvcSamples = function (t, e, r, i) {
9019              if (t instanceof Uint8Array)
9020                throw new Error('Cannot decrypt samples of type Uint8Array');
9021              for (; ; e++, r = 0) {
9022                if (e >= t.length) return void i();
9023                for (var n = t[e].units; !(r >= n.length); r++) {
9024                  var a = n[r];
9025                  if (
9026                    !(
9027                      a.data.length <= 48 ||
9028                      (1 !== a.type && 5 !== a.type) ||
9029                      (this.decryptAvcSample(t, e, r, i, a), this.decrypter.isSync())
9030                    )
9031                  )
9032                    return;
9033                }
9034              }
9035            }),
9036            t
9037          );
9038        })(),
9039        dn = 188,
9040        cn = (function () {
9041          function t(t, e, r) {
9042            (this.observer = void 0),
9043              (this.config = void 0),
9044              (this.typeSupported = void 0),
9045              (this.sampleAes = null),
9046              (this.pmtParsed = !1),
9047              (this.audioCodec = void 0),
9048              (this.videoCodec = void 0),
9049              (this._duration = 0),
9050              (this._pmtId = -1),
9051              (this._videoTrack = void 0),
9052              (this._audioTrack = void 0),
9053              (this._id3Track = void 0),
9054              (this._txtTrack = void 0),
9055              (this.aacOverFlow = null),
9056              (this.remainderData = null),
9057              (this.videoParser = void 0),
9058              (this.observer = t),
9059              (this.config = e),
9060              (this.typeSupported = r),
9061              (this.videoParser = new un());
9062          }
9063          (t.probe = function (e) {
9064            var r = t.syncOffset(e);
9065            return (
9066              r > 0 && w.warn('MPEG2-TS detected but first sync word found @ offset ' + r), -1 !== r
9067            );
9068          }),
9069            (t.syncOffset = function (t) {
9070              for (var e = t.length, r = Math.min(940, e - dn) + 1, i = 0; i < r; ) {
9071                for (var n = !1, a = -1, s = 0, o = i; o < e; o += dn) {
9072                  if (71 !== t[o] || (e - o !== dn && 71 !== t[o + dn])) {
9073                    if (s) return -1;
9074                    break;
9075                  }
9076                  if (
9077                    (s++,
9078                    -1 === a && 0 !== (a = o) && (r = Math.min(a + 18612, t.length - dn) + 1),
9079                    n || (n = 0 === fn(t, o)),
9080                    n && s > 1 && ((0 === a && s > 2) || o + dn > r))
9081                  )
9082                    return a;
9083                }
9084                i++;
9085              }
9086              return -1;
9087            }),
9088            (t.createTrack = function (t, e) {
9089              return {
9090                container: 'video' === t || 'audio' === t ? 'video/mp2t' : void 0,
9091                type: t,
9092                id: wt[t],
9093                pid: -1,
9094                inputTimeScale: 9e4,
9095                sequenceNumber: 0,
9096                samples: [],
9097                dropped: 0,
9098                duration: 'audio' === t ? e : void 0,
9099              };
9100            });
9101          var e = t.prototype;
9102          return (
9103            (e.resetInitSegment = function (e, r, i, n) {
9104              (this.pmtParsed = !1),
9105                (this._pmtId = -1),
9106                (this._videoTrack = t.createTrack('video')),
9107                (this._audioTrack = t.createTrack('audio', n)),
9108                (this._id3Track = t.createTrack('id3')),
9109                (this._txtTrack = t.createTrack('text')),
9110                (this._audioTrack.segmentCodec = 'aac'),
9111                (this.aacOverFlow = null),
9112                (this.remainderData = null),
9113                (this.audioCodec = r),
9114                (this.videoCodec = i),
9115                (this._duration = n);
9116            }),
9117            (e.resetTimeStamp = function () {}),
9118            (e.resetContiguity = function () {
9119              var t = this._audioTrack,
9120                e = this._videoTrack,
9121                r = this._id3Track;
9122              t && (t.pesData = null),
9123                e && (e.pesData = null),
9124                r && (r.pesData = null),
9125                (this.aacOverFlow = null),
9126                (this.remainderData = null);
9127            }),
9128            (e.demux = function (e, r, i, n) {
9129              var a;
9130              void 0 === i && (i = !1), void 0 === n && (n = !1), i || (this.sampleAes = null);
9131              var s = this._videoTrack,
9132                o = this._audioTrack,
9133                l = this._id3Track,
9134                u = this._txtTrack,
9135                h = s.pid,
9136                d = s.pesData,
9137                c = o.pid,
9138                f = l.pid,
9139                g = o.pesData,
9140                v = l.pesData,
9141                m = null,
9142                p = this.pmtParsed,
9143                y = this._pmtId,
9144                E = e.length;
9145              if (
9146                (this.remainderData &&
9147                  ((E = (e = Wt(this.remainderData, e)).length), (this.remainderData = null)),
9148                E < dn && !n)
9149              )
9150                return (
9151                  (this.remainderData = e),
9152                  { audioTrack: o, videoTrack: s, id3Track: l, textTrack: u }
9153                );
9154              var T = Math.max(0, t.syncOffset(e));
9155              (E -= (E - T) % dn) < e.byteLength &&
9156                !n &&
9157                (this.remainderData = new Uint8Array(e.buffer, E, e.buffer.byteLength - E));
9158              for (var S = 0, L = T; L < E; L += dn)
9159                if (71 === e[L]) {
9160                  var A = !!(64 & e[L + 1]),
9161                    R = fn(e, L),
9162                    b = void 0;
9163                  if ((48 & e[L + 3]) >> 4 > 1) {
9164                    if ((b = L + 5 + e[L + 4]) === L + dn) continue;
9165                  } else b = L + 4;
9166                  switch (R) {
9167                    case h:
9168                      A &&
9169                        (d &&
9170                          (a = yn(d)) &&
9171                          this.videoParser.parseAVCPES(s, u, a, !1, this._duration),
9172                        (d = { data: [], size: 0 })),
9173                        d && (d.data.push(e.subarray(b, L + dn)), (d.size += L + dn - b));
9174                      break;
9175                    case c:
9176                      if (A) {
9177                        if (g && (a = yn(g)))
9178                          switch (o.segmentCodec) {
9179                            case 'aac':
9180                              this.parseAACPES(o, a);
9181                              break;
9182                            case 'mp3':
9183                              this.parseMPEGPES(o, a);
9184                              break;
9185                            case 'ac3':
9186                              this.parseAC3PES(o, a);
9187                          }
9188                        g = { data: [], size: 0 };
9189                      }
9190                      g && (g.data.push(e.subarray(b, L + dn)), (g.size += L + dn - b));
9191                      break;
9192                    case f:
9193                      A &&
9194                        (v && (a = yn(v)) && this.parseID3PES(l, a), (v = { data: [], size: 0 })),
9195                        v && (v.data.push(e.subarray(b, L + dn)), (v.size += L + dn - b));
9196                      break;
9197                    case 0:
9198                      A && (b += e[b] + 1), (y = this._pmtId = gn(e, b));
9199                      break;
9200                    case y:
9201                      A && (b += e[b] + 1);
9202                      var k = vn(e, b, this.typeSupported, i, this.observer);
9203                      (h = k.videoPid) > 0 && ((s.pid = h), (s.segmentCodec = k.segmentVideoCodec)),
9204                        (c = k.audioPid) > 0 &&
9205                          ((o.pid = c), (o.segmentCodec = k.segmentAudioCodec)),
9206                        (f = k.id3Pid) > 0 && (l.pid = f),
9207                        null === m ||
9208                          p ||
9209                          (w.warn(
9210                            'MPEG-TS PMT found at ' +
9211                              L +
9212                              " after unknown PID '" +
9213                              m +
9214                              "'. Backtracking to sync byte @" +
9215                              T +
9216                              ' to parse all TS packets.'
9217                          ),
9218                          (m = null),
9219                          (L = T - 188)),
9220                        (p = this.pmtParsed = !0);
9221                      break;
9222                    case 17:
9223                    case 8191:
9224                      break;
9225                    default:
9226                      m = R;
9227                  }
9228                } else S++;
9229              S > 0 &&
9230                mn(
9231                  this.observer,
9232                  new Error('Found ' + S + ' TS packet/s that do not start with 0x47')
9233                ),
9234                (s.pesData = d),
9235                (o.pesData = g),
9236                (l.pesData = v);
9237              var D = { audioTrack: o, videoTrack: s, id3Track: l, textTrack: u };
9238              return n && this.extractRemainingSamples(D), D;
9239            }),
9240            (e.flush = function () {
9241              var t,
9242                e = this.remainderData;
9243              return (
9244                (this.remainderData = null),
9245                (t = e
9246                  ? this.demux(e, -1, !1, !0)
9247                  : {
9248                      videoTrack: this._videoTrack,
9249                      audioTrack: this._audioTrack,
9250                      id3Track: this._id3Track,
9251                      textTrack: this._txtTrack,
9252                    }),
9253                this.extractRemainingSamples(t),
9254                this.sampleAes ? this.decrypt(t, this.sampleAes) : t
9255              );
9256            }),
9257            (e.extractRemainingSamples = function (t) {
9258              var e,
9259                r = t.audioTrack,
9260                i = t.videoTrack,
9261                n = t.id3Track,
9262                a = t.textTrack,
9263                s = i.pesData,
9264                o = r.pesData,
9265                l = n.pesData;
9266              if (
9267                (s && (e = yn(s))
9268                  ? (this.videoParser.parseAVCPES(i, a, e, !0, this._duration), (i.pesData = null))
9269                  : (i.pesData = s),
9270                o && (e = yn(o)))
9271              ) {
9272                switch (r.segmentCodec) {
9273                  case 'aac':
9274                    this.parseAACPES(r, e);
9275                    break;
9276                  case 'mp3':
9277                    this.parseMPEGPES(r, e);
9278                    break;
9279                  case 'ac3':
9280                    this.parseAC3PES(r, e);
9281                }
9282                r.pesData = null;
9283              } else
9284                null != o &&
9285                  o.size &&
9286                  w.log('last AAC PES packet truncated,might overlap between fragments'),
9287                  (r.pesData = o);
9288              l && (e = yn(l)) ? (this.parseID3PES(n, e), (n.pesData = null)) : (n.pesData = l);
9289            }),
9290            (e.demuxSampleAes = function (t, e, r) {
9291              var i = this.demux(t, r, !0, !this.config.progressive),
9292                n = (this.sampleAes = new hn(this.observer, this.config, e));
9293              return this.decrypt(i, n);
9294            }),
9295            (e.decrypt = function (t, e) {
9296              return new Promise(function (r) {
9297                var i = t.audioTrack,
9298                  n = t.videoTrack;
9299                i.samples && 'aac' === i.segmentCodec
9300                  ? e.decryptAacSamples(i.samples, 0, function () {
9301                      n.samples
9302                        ? e.decryptAvcSamples(n.samples, 0, 0, function () {
9303                            r(t);
9304                          })
9305                        : r(t);
9306                    })
9307                  : n.samples &&
9308                    e.decryptAvcSamples(n.samples, 0, 0, function () {
9309                      r(t);
9310                    });
9311              });
9312            }),
9313            (e.destroy = function () {
9314              this._duration = 0;
9315            }),
9316            (e.parseAACPES = function (t, e) {
9317              var r,
9318                i,
9319                n,
9320                a = 0,
9321                s = this.aacOverFlow,
9322                o = e.data;
9323              if (s) {
9324                this.aacOverFlow = null;
9325                var l = s.missing,
9326                  u = s.sample.unit.byteLength;
9327                if (-1 === l) o = Wt(s.sample.unit, o);
9328                else {
9329                  var h = u - l;
9330                  s.sample.unit.set(o.subarray(0, l), h), t.samples.push(s.sample), (a = s.missing);
9331                }
9332              }
9333              for (r = a, i = o.length; r < i - 1 && !Bi(o, r); r++);
9334              if (r !== a) {
9335                var d,
9336                  c = r < i - 1;
9337                if (
9338                  ((d = c
9339                    ? 'AAC PES did not start with ADTS header,offset:' + r
9340                    : 'No ADTS header found in AAC PES'),
9341                  mn(this.observer, new Error(d), c),
9342                  !c)
9343                )
9344                  return;
9345              }
9346              if ((Ki(t, this.observer, o, r, this.audioCodec), void 0 !== e.pts)) n = e.pts;
9347              else {
9348                if (!s) return void w.warn('[tsdemuxer]: AAC PES unknown PTS');
9349                var f = Hi(t.samplerate);
9350                n = s.sample.pts + f;
9351              }
9352              for (var g, v = 0; r < i; ) {
9353                if (((r += (g = Vi(t, o, r, n, v)).length), g.missing)) {
9354                  this.aacOverFlow = g;
9355                  break;
9356                }
9357                for (v++; r < i - 1 && !Bi(o, r); r++);
9358              }
9359            }),
9360            (e.parseMPEGPES = function (t, e) {
9361              var r = e.data,
9362                i = r.length,
9363                n = 0,
9364                a = 0,
9365                s = e.pts;
9366              if (void 0 !== s)
9367                for (; a < i; )
9368                  if ($i(r, a)) {
9369                    var o = zi(t, r, a, s, n);
9370                    if (!o) break;
9371                    (a += o.length), n++;
9372                  } else a++;
9373              else w.warn('[tsdemuxer]: MPEG PES unknown PTS');
9374            }),
9375            (e.parseAC3PES = function (t, e) {
9376              var r = e.data,
9377                i = e.pts;
9378              if (void 0 !== i)
9379                for (var n, a = r.length, s = 0, o = 0; o < a && (n = sn(t, r, o, i, s++)) > 0; )
9380                  o += n;
9381              else w.warn('[tsdemuxer]: AC3 PES unknown PTS');
9382            }),
9383            (e.parseID3PES = function (t, e) {
9384              if (void 0 !== e.pts) {
9385                var r = o({}, e, {
9386                  type: this._videoTrack ? qe : We,
9387                  duration: Number.POSITIVE_INFINITY,
9388                });
9389                t.samples.push(r);
9390              } else w.warn('[tsdemuxer]: ID3 PES unknown PTS');
9391            }),
9392            t
9393          );
9394        })();
9395      function fn(t, e) {
9396        return ((31 & t[e + 1]) << 8) + t[e + 2];
9397      }
9398      function gn(t, e) {
9399        return ((31 & t[e + 10]) << 8) | t[e + 11];
9400      }
9401      function vn(t, e, r, i, n) {
9402        var a = {
9403            audioPid: -1,
9404            videoPid: -1,
9405            id3Pid: -1,
9406            segmentVideoCodec: 'avc',
9407            segmentAudioCodec: 'aac',
9408          },
9409          s = e + 3 + (((15 & t[e + 1]) << 8) | t[e + 2]) - 4;
9410        for (e += 12 + (((15 & t[e + 10]) << 8) | t[e + 11]); e < s; ) {
9411          var o = fn(t, e),
9412            l = ((15 & t[e + 3]) << 8) | t[e + 4];
9413          switch (t[e]) {
9414            case 207:
9415              if (!i) {
9416                pn('ADTS AAC');
9417                break;
9418              }
9419            case 15:
9420              -1 === a.audioPid && (a.audioPid = o);
9421              break;
9422            case 21:
9423              -1 === a.id3Pid && (a.id3Pid = o);
9424              break;
9425            case 219:
9426              if (!i) {
9427                pn('H.264');
9428                break;
9429              }
9430            case 27:
9431              -1 === a.videoPid && ((a.videoPid = o), (a.segmentVideoCodec = 'avc'));
9432              break;
9433            case 3:
9434            case 4:
9435              r.mpeg || r.mp3
9436                ? -1 === a.audioPid && ((a.audioPid = o), (a.segmentAudioCodec = 'mp3'))
9437                : w.log('MPEG audio found, not supported in this browser');
9438              break;
9439            case 193:
9440              if (!i) {
9441                pn('AC-3');
9442                break;
9443              }
9444            case 129:
9445              r.ac3
9446                ? -1 === a.audioPid && ((a.audioPid = o), (a.segmentAudioCodec = 'ac3'))
9447                : w.log('AC-3 audio found, not supported in this browser');
9448              break;
9449            case 6:
9450              if (-1 === a.audioPid && l > 0)
9451                for (var u = e + 5, h = l; h > 2; ) {
9452                  106 === t[u] &&
9453                    (!0 !== r.ac3
9454                      ? w.log('AC-3 audio found, not supported in this browser for now')
9455                      : ((a.audioPid = o), (a.segmentAudioCodec = 'ac3')));
9456                  var d = t[u + 1] + 2;
9457                  (u += d), (h -= d);
9458                }
9459              break;
9460            case 194:
9461            case 135:
9462              return mn(n, new Error('Unsupported EC-3 in M2TS found')), a;
9463            case 36:
9464              return mn(n, new Error('Unsupported HEVC in M2TS found')), a;
9465          }
9466          e += l + 5;
9467        }
9468        return a;
9469      }
9470      function mn(t, e, r) {
9471        w.warn('parsing error: ' + e.message),
9472          t.emit(S.ERROR, S.ERROR, {
9473            type: L.MEDIA_ERROR,
9474            details: A.FRAG_PARSING_ERROR,
9475            fatal: !1,
9476            levelRetry: r,
9477            error: e,
9478            reason: e.message,
9479          });
9480      }
9481      function pn(t) {
9482        w.log(t + ' with AES-128-CBC encryption found in unencrypted stream');
9483      }
9484      function yn(t) {
9485        var e,
9486          r,
9487          i,
9488          n,
9489          a,
9490          s = 0,
9491          o = t.data;
9492        if (!t || 0 === t.size) return null;
9493        for (; o[0].length < 19 && o.length > 1; ) (o[0] = Wt(o[0], o[1])), o.splice(1, 1);
9494        if (1 === ((e = o[0])[0] << 16) + (e[1] << 8) + e[2]) {
9495          if ((r = (e[4] << 8) + e[5]) && r > t.size - 6) return null;
9496          var l = e[7];
9497          192 & l &&
9498            ((n =
9499              536870912 * (14 & e[9]) +
9500              4194304 * (255 & e[10]) +
9501              16384 * (254 & e[11]) +
9502              128 * (255 & e[12]) +
9503              (254 & e[13]) / 2),
9504            64 & l
9505              ? n -
9506                  (a =
9507                    536870912 * (14 & e[14]) +
9508                    4194304 * (255 & e[15]) +
9509                    16384 * (254 & e[16]) +
9510                    128 * (255 & e[17]) +
9511                    (254 & e[18]) / 2) >
9512                  54e5 &&
9513                (w.warn(Math.round((n - a) / 9e4) + 's delta between PTS and DTS, align them'),
9514                (n = a))
9515              : (a = n));
9516          var u = (i = e[8]) + 9;
9517          if (t.size <= u) return null;
9518          t.size -= u;
9519          for (var h = new Uint8Array(t.size), d = 0, c = o.length; d < c; d++) {
9520            var f = (e = o[d]).byteLength;
9521            if (u) {
9522              if (u > f) {
9523                u -= f;
9524                continue;
9525              }
9526              (e = e.subarray(u)), (f -= u), (u = 0);
9527            }
9528            h.set(e, s), (s += f);
9529          }
9530          return r && (r -= i + 3), { data: h, pts: n, dts: a, len: r };
9531        }
9532        return null;
9533      }
9534      var En = (function (t) {
9535          function e() {
9536            return t.apply(this, arguments) || this;
9537          }
9538          l(e, t);
9539          var r = e.prototype;
9540          return (
9541            (r.resetInitSegment = function (e, r, i, n) {
9542              t.prototype.resetInitSegment.call(this, e, r, i, n),
9543                (this._audioTrack = {
9544                  container: 'audio/mpeg',
9545                  type: 'audio',
9546                  id: 2,
9547                  pid: -1,
9548                  sequenceNumber: 0,
9549                  segmentCodec: 'mp3',
9550                  samples: [],
9551                  manifestCodec: r,
9552                  duration: n,
9553                  inputTimeScale: 9e4,
9554                  dropped: 0,
9555                });
9556            }),
9557            (e.probe = function (t) {
9558              if (!t) return !1;
9559              var e = ct(t, 0),
9560                r = (null == e ? void 0 : e.length) || 0;
9561              if (e && 11 === t[r] && 119 === t[r + 1] && void 0 !== vt(e) && nn(t, r) <= 16)
9562                return !1;
9563              for (var i = t.length; r < i; r++)
9564                if (Zi(t, r)) return w.log('MPEG Audio sync word found !'), !0;
9565              return !1;
9566            }),
9567            (r.canParse = function (t, e) {
9568              return (function (t, e) {
9569                return Ji(t, e) && 4 <= t.length - e;
9570              })(t, e);
9571            }),
9572            (r.appendFrame = function (t, e, r) {
9573              if (null !== this.basePTS) return zi(t, e, r, this.basePTS, this.frameIndex);
9574            }),
9575            e
9576          );
9577        })(Fi),
9578        Tn = (function () {
9579          function t() {}
9580          return (
9581            (t.getSilentFrame = function (t, e) {
9582              if ('mp4a.40.2' === t) {
9583                if (1 === e) return new Uint8Array([0, 200, 0, 128, 35, 128]);
9584                if (2 === e) return new Uint8Array([33, 0, 73, 144, 2, 25, 0, 35, 128]);
9585                if (3 === e)
9586                  return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 142]);
9587                if (4 === e)
9588                  return new Uint8Array([
9589                    0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 128, 44, 128, 8, 2, 56,
9590                  ]);
9591                if (5 === e)
9592                  return new Uint8Array([
9593                    0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2,
9594                    56,
9595                  ]);
9596                if (6 === e)
9597                  return new Uint8Array([
9598                    0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2,
9599                    0, 178, 0, 32, 8, 224,
9600                  ]);
9601              } else {
9602                if (1 === e)
9603                  return new Uint8Array([
9604                    1, 64, 34, 128, 163, 78, 230, 128, 186, 8, 0, 0, 0, 28, 6, 241, 193, 10, 90, 90,
9605                    90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
9606                    90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94,
9607                  ]);
9608                if (2 === e)
9609                  return new Uint8Array([
9610                    1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10,
9611                    90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
9612                    90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94,
9613                  ]);
9614                if (3 === e)
9615                  return new Uint8Array([
9616                    1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10,
9617                    90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
9618                    90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94,
9619                  ]);
9620              }
9621            }),
9622            t
9623          );
9624        })(),
9625        Sn = Math.pow(2, 32) - 1,
9626        Ln = (function () {
9627          function t() {}
9628          return (
9629            (t.init = function () {
9630              var e;
9631              for (e in ((t.types = {
9632                avc1: [],
9633                avcC: [],
9634                btrt: [],
9635                dinf: [],
9636                dref: [],
9637                esds: [],
9638                ftyp: [],
9639                hdlr: [],
9640                mdat: [],
9641                mdhd: [],
9642                mdia: [],
9643                mfhd: [],
9644                minf: [],
9645                moof: [],
9646                moov: [],
9647                mp4a: [],
9648                '.mp3': [],
9649                dac3: [],
9650                'ac-3': [],
9651                mvex: [],
9652                mvhd: [],
9653                pasp: [],
9654                sdtp: [],
9655                stbl: [],
9656                stco: [],
9657                stsc: [],
9658                stsd: [],
9659                stsz: [],
9660                stts: [],
9661                tfdt: [],
9662                tfhd: [],
9663                traf: [],
9664                trak: [],
9665                trun: [],
9666                trex: [],
9667                tkhd: [],
9668                vmhd: [],
9669                smhd: [],
9670              }),
9671              t.types))
9672                t.types.hasOwnProperty(e) &&
9673                  (t.types[e] = [
9674                    e.charCodeAt(0),
9675                    e.charCodeAt(1),
9676                    e.charCodeAt(2),
9677                    e.charCodeAt(3),
9678                  ]);
9679              var r = new Uint8Array([
9680                  0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9681                  86, 105, 100, 101, 111, 72, 97, 110, 100, 108, 101, 114, 0,
9682                ]),
9683                i = new Uint8Array([
9684                  0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9685                  83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0,
9686                ]);
9687              t.HDLR_TYPES = { video: r, audio: i };
9688              var n = new Uint8Array([
9689                  0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1,
9690                ]),
9691                a = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]);
9692              (t.STTS = t.STSC = t.STCO = a),
9693                (t.STSZ = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])),
9694                (t.VMHD = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0])),
9695                (t.SMHD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])),
9696                (t.STSD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]));
9697              var s = new Uint8Array([105, 115, 111, 109]),
9698                o = new Uint8Array([97, 118, 99, 49]),
9699                l = new Uint8Array([0, 0, 0, 1]);
9700              (t.FTYP = t.box(t.types.ftyp, s, l, s, o)),
9701                (t.DINF = t.box(t.types.dinf, t.box(t.types.dref, n)));
9702            }),
9703            (t.box = function (t) {
9704              for (
9705                var e = 8, r = arguments.length, i = new Array(r > 1 ?
9705 r - 1 : 0), n = 1;
9706                n < r;
9707                n++
9708              )
9709                i[n - 1] = arguments[n];
9710              for (var a = i.length, s = a; a--; ) e += i[a].byteLength;
9711              var o = new Uint8Array(e);
9712              for (
9713                o[0] = (e >> 24) & 255,
9714                  o[1] = (e >> 16) & 255,
9715                  o[2] = (e >> 8) & 255,
9716                  o[3] = 255 & e,
9717                  o.set(t, 4),
9718                  a = 0,
9719                  e = 8;
9720                a < s;
9721                a++
9722              )
9723                o.set(i[a], e), (e += i[a].byteLength);
9724              return o;
9725            }),
9726            (t.hdlr = function (e) {
9727              return t.box(t.types.hdlr, t.HDLR_TYPES[e]);
9728            }),
9729            (t.mdat = function (e) {
9730              return t.box(t.types.mdat, e);
9731            }),
9732            (t.mdhd = function (e, r) {
9733              r *= e;
9734              var i = Math.floor(r / (Sn + 1)),
9735                n = Math.floor(r % (Sn + 1));
9736              return t.box(
9737                t.types.mdhd,
9738                new Uint8Array([
9739                  1,
9740                  0,
9741                  0,
9742                  0,
9743                  0,
9744                  0,
9745                  0,
9746                  0,
9747                  0,
9748                  0,
9749                  0,
9750                  2,
9751                  0,
9752                  0,
9753                  0,
9754                  0,
9755                  0,
9756                  0,
9757                  0,
9758                  3,
9759                  (e >> 24) & 255,
9760                  (e >> 16) & 255,
9761                  (e >> 8) & 255,
9762                  255 & e,
9763                  i >> 24,
9764                  (i >> 16) & 255,
9765                  (i >> 8) & 255,
9766                  255 & i,
9767                  n >> 24,
9768                  (n >> 16) & 255,
9769                  (n >> 8) & 255,
9770                  255 & n,
9771                  85,
9772                  196,
9773                  0,
9774                  0,
9775                ])
9776              );
9777            }),
9778            (t.mdia = function (e) {
9779              return t.box(
9780                t.types.mdia,
9781                t.mdhd(e.timescale, e.duration),
9782                t.hdlr(e.type),
9783                t.minf(e)
9784              );
9785            }),
9786            (t.mfhd = function (e) {
9787              return t.box(
9788                t.types.mfhd,
9789                new Uint8Array([0, 0, 0, 0, e >> 24, (e >> 16) & 255, (e >> 8) & 255, 255 & e])
9790              );
9791            }),
9792            (t.minf = function (e) {
9793              return 'audio' === e.type
9794                ? t.box(t.types.minf, t.box(t.types.smhd, t.SMHD), t.DINF, t.stbl(e))
9795                : t.box(t.types.minf, t.box(t.types.vmhd, t.VMHD), t.DINF, t.stbl(e));
9796            }),
9797            (t.moof = function (e, r, i) {
9798              return t.box(t.types.moof, t.mfhd(e), t.traf(i, r));
9799            }),
9800            (t.moov = function (e) {
9801              for (var r = e.length, i = []; r--; ) i[r] = t.trak(e[r]);
9802              return t.box.apply(
9803                null,
9804                [t.types.moov, t.mvhd(e[0].timescale, e[0].duration)].concat(i).concat(t.mvex(e))
9805              );
9806            }),
9807            (t.mvex = function (e) {
9808              for (var r = e.length, i = []; r--; ) i[r] = t.trex(e[r]);
9809              return t.box.apply(null, [t.types.mvex].concat(i));
9810            }),
9811            (t.mvhd = function (e, r) {
9812              r *= e;
9813              var i = Math.floor(r / (Sn + 1)),
9814                n = Math.floor(r % (Sn + 1)),
9815                a = new Uint8Array([
9816                  1,
9817                  0,
9818                  0,
9819                  0,
9820                  0,
9821                  0,
9822                  0,
9823                  0,
9824                  0,
9825                  0,
9826                  0,
9827                  2,
9828                  0,
9829                  0,
9830                  0,
9831                  0,
9832                  0,
9833                  0,
9834                  0,
9835                  3,
9836                  (e >> 24) & 255,
9837                  (e >> 16) & 255,
9838                  (e >> 8) & 255,
9839                  255 & e,
9840                  i >> 24,
9841                  (i >> 16) & 255,
9842                  (i >> 8) & 255,
9843                  255 & i,
9844                  n >> 24,
9845                  (n >> 16) & 255,
9846                  (n >> 8) & 255,
9847                  255 & n,
9848                  0,
9849                  1,
9850                  0,
9851                  0,
9852                  1,
9853                  0,
9854                  0,
9855                  0,
9856                  0,
9857                  0,
9858                  0,
9859                  0,
9860                  0,
9861                  0,
9862                  0,
9863                  0,
9864                  0,
9865                  1,
9866                  0,
9867                  0,
9868                  0,
9869                  0,
9870                  0,
9871                  0,
9872                  0,
9873                  0,
9874                  0,
9875                  0,
9876                  0,
9877                  0,
9878                  0,
9879                  0,
9880                  0,
9881                  1,
9882                  0,
9883                  0,
9884                  0,
9885                  0,
9886                  0,
9887                  0,
9888                  0,
9889                  0,
9890                  0,
9891                  0,
9892                  0,
9893                  0,
9894                  0,
9895                  0,
9896                  64,
9897                  0,
9898                  0,
9899                  0,
9900                  0,
9901                  0,
9902                  0,
9903                  0,
9904                  0,
9905                  0,
9906                  0,
9907                  0,
9908                  0,
9909                  0,
9910                  0,
9911                  0,
9912                  0,
9913                  0,
9914                  0,
9915                  0,
9916                  0,
9917                  0,
9918                  0,
9919                  0,
9920                  0,
9921                  0,
9922                  0,
9923                  0,
9924                  255,
9925                  255,
9926                  255,
9927                  255,
9928                ]);
9929              return t.box(t.types.mvhd, a);
9930            }),
9931            (t.sdtp = function (e) {
9932              var r,
9933                i,
9934                n = e.samples || [],
9935                a = new Uint8Array(4 + n.length);
9936              for (r = 0; r < n.length; r++)
9937                (i = n[r].flags),
9938                  (a[r + 4] = (i.dependsOn << 4) | (i.isDependedOn << 2) | i.hasRedundancy);
9939              return t.box(t.types.sdtp, a);
9940            }),
9941            (t.stbl = function (e) {
9942              return t.box(
9943                t.types.stbl,
9944                t.stsd(e),
9945                t.box(t.types.stts, t.STTS),
9946                t.box(t.types.stsc, t.STSC),
9947                t.box(t.types.stsz, t.STSZ),
9948                t.box(t.types.stco, t.STCO)
9949              );
9950            }),
9951            (t.avc1 = function (e) {
9952              var r,
9953                i,
9954                n,
9955                a = [],
9956                s = [];
9957              for (r = 0; r < e.sps.length; r++)
9958                (n = (i = e.sps[r]).byteLength),
9959                  a.push((n >>> 8) & 255),
9960                  a.push(255 & n),
9961                  (a = a.concat(Array.prototype.slice.call(i)));
9962              for (r = 0; r < e.pps.length; r++)
9963                (n = (i = e.pps[r]).byteLength),
9964                  s.push((n >>> 8) & 255),
9965                  s.push(255 & n),
9966                  (s = s.concat(Array.prototype.slice.call(i)));
9967              var o = t.box(
9968                  t.types.avcC,
9969                  new Uint8Array(
9970                    [1, a[3], a[4], a[5], 255, 224 | e.sps.length]
9971                      .concat(a)
9972                      .concat([e.pps.length])
9973                      .concat(s)
9974                  )
9975                ),
9976                l = e.width,
9977                u = e.height,
9978                h = e.pixelRatio[0],
9979                d = e.pixelRatio[1];
9980              return t.box(
9981                t.types.avc1,
9982                new Uint8Array([
9983                  0,
9984                  0,
9985                  0,
9986                  0,
9987                  0,
9988                  0,
9989                  0,
9990                  1,
9991                  0,
9992                  0,
9993                  0,
9994                  0,
9995                  0,
9996                  0,
9997                  0,
9998                  0,
9999                  0,
10000                  0,
10001                  0,
10002                  0,
10003                  0,
10004                  0,
10005                  0,
10006                  0,
10007                  (l >> 8) & 255,
10008                  255 & l,
10009                  (u >> 8) & 255,
10010                  255 & u,
10011                  0,
10012                  72,
10013                  0,
10014                  0,
10015                  0,
10016                  72,
10017                  0,
10018                  0,
10019                  0,
10020                  0,
10021                  0,
10022                  0,
10023                  0,
10024                  1,
10025                  18,
10026                  100,
10027                  97,
10028                  105,
10029                  108,
10030                  121,
10031                  109,
10032                  111,
10033                  116,
10034                  105,
10035                  111,
10036                  110,
10037                  47,
10038                  104,
10039                  108,
10040                  115,
10041                  46,
10042                  106,
10043                  115,
10044                  0,
10045                  0,
10046                  0,
10047                  0,
10048                  0,
10049                  0,
10050                  0,
10051                  0,
10052                  0,
10053                  0,
10054                  0,
10055                  0,
10056                  0,
10057                  0,
10058                  24,
10059                  17,
10060                  17,
10061                ]),
10062                o,
10063                t.box(
10064                  t.types.btrt,
10065                  new Uint8Array([0, 28, 156, 128, 0, 45, 198, 192, 0, 45, 198, 192])
10066                ),
10067                t.box(
10068                  t.types.pasp,
10069                  new Uint8Array([
10070                    h >> 24,
10071                    (h >> 16) & 255,
10072                    (h >> 8) & 255,
10073                    255 & h,
10074                    d >> 24,
10075                    (d >> 16) & 255,
10076                    (d >> 8) & 255,
10077                    255 & d,
10078                  ])
10079                )
10080              );
10081            }),
10082            (t.esds = function (t) {
10083              var e = t.config.length;
10084              return new Uint8Array(
10085                [
10086                  0,
10087                  0,
10088                  0,
10089                  0,
10090                  3,
10091                  23 + e,
10092                  0,
10093                  1,
10094                  0,
10095                  4,
10096                  15 + e,
10097                  64,
10098                  21,
10099                  0,
10100                  0,
10101                  0,
10102                  0,
10103                  0,
10104                  0,
10105                  0,
10106                  0,
10107                  0,
10108                  0,
10109                  0,
10110                  5,
10111                ]
10112                  .concat([e])
10113                  .concat(t.config)
10114                  .concat([6, 1, 2])
10115              );
10116            }),
10117            (t.audioStsd = function (t) {
10118              var e = t.samplerate;
10119              return new Uint8Array([
10120                0,
10121                0,
10122                0,
10123                0,
10124                0,
10125                0,
10126                0,
10127                1,
10128                0,
10129                0,
10130                0,
10131                0,
10132                0,
10133                0,
10134                0,
10135                0,
10136                0,
10137                t.channelCount,
10138                0,
10139                16,
10140                0,
10141                0,
10142                0,
10143                0,
10144                (e >> 8) & 255,
10145                255 & e,
10146                0,
10147                0,
10148              ]);
10149            }),
10150            (t.mp4a = function (e) {
10151              return t.box(t.types.mp4a, t.audioStsd(e), t.box(t.types.esds, t.esds(e)));
10152            }),
10153            (t.mp3 = function (e) {
10154              return t.box(t.types['.mp3'], t.audioStsd(e));
10155            }),
10156            (t.ac3 = function (e) {
10157              return t.box(t.types['ac-3'], t.audioStsd(e), t.box(t.types.dac3, e.config));
10158            }),
10159            (t.stsd = function (e) {
10160              return 'audio' === e.type
10161                ? 'mp3' === e.segmentCodec && 'mp3' === e.codec
10162                  ? t.box(t.types.stsd, t.STSD, t.mp3(e))
10163                  : 'ac3' === e.segmentCodec
10164                  ? t.box(t.types.stsd, t.STSD, t.ac3(e))
10165                  : t.box(t.types.stsd, t.STSD, t.mp4a(e))
10166                : t.box(t.types.stsd, t.STSD, t.avc1(e));
10167            }),
10168            (t.tkhd = function (e) {
10169              var r = e.id,
10170                i = e.duration * e.timescale,
10171                n = e.width,
10172                a = e.height,
10173                s = Math.floor(i / (Sn + 1)),
10174                o = Math.floor(i % (Sn + 1));
10175              return t.box(
10176                t.types.tkhd,
10177                new Uint8Array([
10178                  1,
10179                  0,
10180                  0,
10181                  7,
10182                  0,
10183                  0,
10184                  0,
10185                  0,
10186                  0,
10187                  0,
10188                  0,
10189                  2,
10190                  0,
10191                  0,
10192                  0,
10193                  0,
10194                  0,
10195                  0,
10196                  0,
10197                  3,
10198                  (r >> 24) & 255,
10199                  (r >> 16) & 255,
10200                  (r >> 8) & 255,
10201                  255 & r,
10202                  0,
10203                  0,
10204                  0,
10205                  0,
10206                  s >> 24,
10207                  (s >> 16) & 255,
10208                  (s >> 8) & 255,
10209                  255 & s,
10210                  o >> 24,
10211                  (o >> 16) & 255,
10212                  (o >> 8) & 255,
10213                  255 & o,
10214                  0,
10215                  0,
10216                  0,
10217                  0,
10218                  0,
10219                  0,
10220                  0,
10221                  0,
10222                  0,
10223                  0,
10224                  0,
10225                  0,
10226                  0,
10227                  0,
10228                  0,
10229                  0,
10230                  0,
10231                  1,
10232                  0,
10233                  0,
10234                  0,
10235                  0,
10236                  0,
10237                  0,
10238                  0,
10239                  0,
10240                  0,
10241                  0,
10242                  0,
10243                  0,
10244                  0,
10245                  0,
10246                  0,
10247                  1,
10248                  0,
10249                  0,
10250                  0,
10251                  0,
10252                  0,
10253                  0,
10254                  0,
10255                  0,
10256                  0,
10257                  0,
10258                  0,
10259                  0,
10260                  0,
10261                  0,
10262                  64,
10263                  0,
10264                  0,
10265                  0,
10266                  (n >> 8) & 255,
10267                  255 & n,
10268                  0,
10269                  0,
10270                  (a >> 8) & 255,
10271                  255 & a,
10272                  0,
10273                  0,
10274                ])
10275              );
10276            }),
10277            (t.traf = function (e, r) {
10278              var i = t.sdtp(e),
10279                n = e.id,
10280                a = Math.floor(r / (Sn + 1)),
10281                s = Math.floor(r % (Sn + 1));
10282              return t.box(
10283                t.types.traf,
10284                t.box(
10285                  t.types.tfhd,
10286                  new Uint8Array([0, 0, 0, 0, n >> 24, (n >> 16) & 255, (n >> 8) & 255, 255 & n])
10287                ),
10288                t.box(
10289                  t.types.tfdt,
10290                  new Uint8Array([
10291                    1,
10292                    0,
10293                    0,
10294                    0,
10295                    a >> 24,
10296                    (a >> 16) & 255,
10297                    (a >> 8) & 255,
10298                    255 & a,
10299                    s >> 24,
10300                    (s >> 16) & 255,
10301                    (s >> 8) & 255,
10302                    255 & s,
10303                  ])
10304                ),
10305                t.trun(e, i.length + 16 + 20 + 8 + 16 + 8 + 8),
10306                i
10307              );
10308            }),
10309            (t.trak = function (e) {
10310              return (
10311                (e.duration = e.duration || 4294967295), t.box(t.types.trak, t.tkhd(e), t.mdia(e))
10312              );
10313            }),
10314            (t.trex = function (e) {
10315              var r = e.id;
10316              return t.box(
10317                t.types.trex,
10318                new Uint8Array([
10319                  0,
10320                  0,
10321                  0,
10322                  0,
10323                  r >> 24,
10324                  (r >> 16) & 255,
10325                  (r >> 8) & 255,
10326                  255 & r,
10327                  0,
10328                  0,
10329                  0,
10330                  1,
10331                  0,
10332                  0,
10333                  0,
10334                  0,
10335                  0,
10336                  0,
10337                  0,
10338                  0,
10339                  0,
10340                  1,
10341                  0,
10342                  1,
10343                ])
10344              );
10345            }),
10346            (t.trun = function (e, r) {
10347              var i,
10348                n,
10349                a,
10350                s,
10351                o,
10352                l,
10353                u = e.samples || [],
10354                h = u.length,
10355                d = 12 + 16 * h,
10356                c = new Uint8Array(d);
10357              for (
10358                r += 8 + d,
10359                  c.set(
10360                    [
10361                      'video' === e.type ? 1 : 0,
10362                      0,
10363                      15,
10364                      1,
10365                      (h >>> 24) & 255,
10366                      (h >>> 16) & 255,
10367                      (h >>> 8) & 255,
10368                      255 & h,
10369                      (r >>> 24) & 255,
10370                      (r >>> 16) & 255,
10371                      (r >>> 8) & 255,
10372                      255 & r,
10373                    ],
10374                    0
10375                  ),
10376                  i = 0;
10377                i < h;
10378                i++
10379              )
10380                (a = (n = u[i]).duration),
10381                  (s = n.size),
10382                  (o = n.flags),
10383                  (l = n.cts),
10384                  c.set(
10385                    [
10386                      (a >>> 24) & 255,
10387                      (a >>> 16) & 255,
10388                      (a >>> 8) & 255,
10389                      255 & a,
10390                      (s >>> 24) & 255,
10391                      (s >>> 16) & 255,
10392                      (s >>> 8) & 255,
10393                      255 & s,
10394                      (o.isLeading << 2) | o.dependsOn,
10395                      (o.isDependedOn << 6) |
10396                        (o.hasRedundancy << 4) |
10397                        (o.paddingValue << 1) |
10398                        o.isNonSync,
10399                      61440 & o.degradPrio,
10400                      15 & o.degradPrio,
10401                      (l >>> 24) & 255,
10402                      (l >>> 16) & 255,
10403                      (l >>> 8) & 255,
10404                      255 & l,
10405                    ],
10406                    12 + 16 * i
10407                  );
10408              return t.box(t.types.trun, c);
10409            }),
10410            (t.initSegment = function (e) {
10411              t.types || t.init();
10412              var r = t.moov(e);
10413              return Wt(t.FTYP, r);
10414            }),
10415            t
10416          );
10417        })();
10418      (Ln.types = void 0),
10419        (Ln.HDLR_TYPES = void 0),
10420        (Ln.STTS = void 0),
10421        (Ln.STSC = void 0),
10422        (Ln.STCO = void 0),
10423        (Ln.STSZ = void 0),
10424        (Ln.VMHD = void 0),
10425        (Ln.SMHD = void 0),
10426        (Ln.STSD = void 0),
10427        (Ln.FTYP = void 0),
10428        (Ln.DINF = void 0);
10429      var An = 9e4;
10430      function Rn(t, e, r, i) {
10431        void 0 === r && (r = 1), void 0 === i && (i = !1);
10432        var n = t * e * r;
10433        return i ? Math.round(n) : n;
10434      }
10435      function bn(t, e) {
10436        return void 0 === e && (e = !1), Rn(t, 1e3, 1 / An, e);
10437      }
10438      var kn = null,
10439        Dn = null,
10440        In = (function () {
10441          function t(t, e, r, i) {
10442            if (
10443              ((this.observer = void 0),
10444              (this.config = void 0),
10445              (this.typeSupported = void 0),
10446              (this.ISGenerated = !1),
10447              (this._initPTS = null),
10448              (this._initDTS = null),
10449              (this.nextAvcDts = null),
10450              (this.nextAudioPts = null),
10451              (this.videoSampleDuration = null),
10452              (this.isAudioContiguous = !1),
10453              (this.isVideoContiguous = !1),
10454              (this.videoTrackConfig = void 0),
10455              (this.observer = t),
10456              (this.config = e),
10457              (this.typeSupported = r),
10458              (this.ISGenerated = !1),
10459              null === kn)
10460            ) {
10461              var n = (navigator.userAgent || '').match(/Chrome\/(\d+)/i);
10462              kn = n ? parseInt(n[1]) : 0;
10463            }
10464            if (null === Dn) {
10465              var a = navigator.userAgent.match(/Safari\/(\d+)/i);
10466              Dn = a ? parseInt(a[1]) : 0;
10467            }
10468          }
10469          var e = t.prototype;
10470          return (
10471            (e.destroy = function () {
10472              this.config = this.videoTrackConfig = this._initPTS = this._initDTS = null;
10473            }),
10474            (e.resetTimeStamp = function (t) {
10475              w.log('[mp4-remuxer]: initPTS & initDTS reset'), (this._initPTS = this._initDTS = t);
10476            }),
10477            (e.resetNextTimestamp = function () {
10478              w.log('[mp4-remuxer]: reset next timestamp'),
10479                (this.isVideoContiguous = !1),
10480                (this.isAudioContiguous = !1);
10481            }),
10482            (e.resetInitSegment = function () {
10483              w.log('[mp4-remuxer]: ISGenerated flag reset'),
10484                (this.ISGenerated = !1),
10485                (this.videoTrackConfig = void 0);
10486            }),
10487            (e.getVideoStartPts = function (t) {
10488              var e = !1,
10489                r = t[0].pts,
10490                i = t.reduce(function (t, i) {
10491                  var n = i.pts,
10492                    a = n - t;
10493                  return a < -4294967296 && ((e = !0), (a = (n = wn(n, r)) - t)), a > 0 ? t : n;
10494                }, r);
10495              return e && w.debug('PTS rollover detected'), i;
10496            }),
10497            (e.remux = function (t, e, r, i, n, a, s, o) {
10498              var l,
10499                u,
10500                h,
10501                d,
10502                c,
10503                f,
10504                g = n,
10505                v = n,
10506                m = t.pid > -1,
10507                p = e.pid > -1,
10508                y = e.samples.length,
10509                E = t.samples.length > 0,
10510                T = (s && y > 0) || y > 1;
10511              if (((!m || E) && (!p || T)) || this.ISGenerated || s) {
10512                if (this.ISGenerated) {
10513                  var S,
10514                    L,
10515                    A,
10516                    R,
10517                    b = this.videoTrackConfig;
10518                  !b ||
10519                    (e.width === b.width &&
10520                      e.height === b.height &&
10521                      (null == (S = e.pixelRatio) ? void 0 : S[0]) ===
10522                        (null == (L = b.pixelRatio) ? void 0 : L[0]) &&
10523                      (null == (A = e.pixelRatio) ? void 0 : A[1]) ===
10524                        (null == (R = b.pixelRatio) ? void 0 : R[1])) ||
10525                    this.resetInitSegment();
10526                } else h = this.generateIS(t, e, n, a);
10527                var k,
10528                  D = this.isVideoContiguous,
10529                  I = -1;
10530                if (
10531                  T &&
10532                  ((I = (function (t) {
10533                    for (var e = 0; e < t.length; e++) if (t[e].key) return e;
10534                    return -1;
10535                  })(e.samples)),
10536                  !D && this.config.forceKeyFrameOnDiscontinuity)
10537                )
10538                  if (((f = !0), I >
10538 0)) {
10539                    w.warn(
10540                      '[mp4-remuxer]: Dropped ' +
10541                        I +
10542                        ' out of ' +
10543                        y +
10544                        ' video samples due to a missing keyframe'
10545                    );
10546                    var C = this.getVideoStartPts(e.samples);
10547                    (e.samples = e.samples.slice(I)),
10548                      (e.dropped += I),
10549                      (k = v += (e.samples[0].pts - C) / e.inputTimeScale);
10550                  } else
10551                    -1 === I &&
10552                      (w.warn('[mp4-remuxer]: No keyframe found out of ' + y + ' video samples'),
10553                      (f = !1));
10554                if (this.ISGenerated) {
10555                  if (E && T) {
10556                    var _ = this.getVideoStartPts(e.samples),
10557                      x = (wn(t.samples[0].pts, _) - _) / e.inputTimeScale;
10558                    (g += Math.max(0, x)), (v += Math.max(0, -x));
10559                  }
10560                  if (E) {
10561                    if (
10562                      (t.samplerate ||
10563                        (w.warn('[mp4-remuxer]: regenerate InitSegment as audio detected'),
10564                        (h = this.generateIS(t, e, n, a))),
10565                      (u = this.remuxAudio(
10566                        t,
10567                        g,
10568                        this.isAudioContiguous,
10569                        a,
10570                        p || T || o === Me ? v : void 0
10571                      )),
10572                      T)
10573                    ) {
10574                      var P = u ? u.endPTS - u.startPTS : 0;
10575                      e.inputTimeScale ||
10576                        (w.warn('[mp4-remuxer]: regenerate InitSegment as video detected'),
10577                        (h = this.generateIS(t, e, n, a))),
10578                        (l = this.remuxVideo(e, v, D, P));
10579                    }
10580                  } else T && (l = this.remuxVideo(e, v, D, 0));
10581                  l &&
10582                    ((l.firstKeyFrame = I), (l.independent = -1 !== I), (l.firstKeyFramePTS = k));
10583                }
10584              }
10585              return (
10586                this.ISGenerated &&
10587                  this._initPTS &&
10588                  this._initDTS &&
10589                  (r.samples.length && (c = Cn(r, n, this._initPTS, this._initDTS)),
10590                  i.samples.length && (d = _n(i, n, this._initPTS))),
10591                { audio: u, video: l, initSegment: h, independent: f, text: d, id3: c }
10592              );
10593            }),
10594            (e.generateIS = function (t, e, r, i) {
10595              var n,
10596                a,
10597                s,
10598                o = t.samples,
10599                l = e.samples,
10600                u = this.typeSupported,
10601                h = {},
10602                d = this._initPTS,
10603                c = !d || i,
10604                f = 'audio/mp4';
10605              if ((c && (n = a = 1 / 0), t.config && o.length)) {
10606                switch (((t.timescale = t.samplerate), t.segmentCodec)) {
10607                  case 'mp3':
10608                    u.mpeg ? ((f = 'audio/mpeg'), (t.codec = '')) : u.mp3 && (t.codec = 'mp3');
10609                    break;
10610                  case 'ac3':
10611                    t.codec = 'ac-3';
10612                }
10613                (h.audio = {
10614                  id: 'audio',
10615                  container: f,
10616                  codec: t.codec,
10617                  initSegment:
10618                    'mp3' === t.segmentCodec && u.mpeg ? new Uint8Array(0) : Ln.initSegment([t]),
10619                  metadata: { channelCount: t.channelCount },
10620                }),
10621                  c &&
10622                    ((s = t.inputTimeScale),
10623                    d && s === d.timescale ? (c = !1) : (n = a = o[0].pts - Math.round(s * r)));
10624              }
10625              if (e.sps && e.pps && l.length) {
10626                if (
10627                  ((e.timescale = e.inputTimeScale),
10628                  (h.video = {
10629                    id: 'main',
10630                    container: 'video/mp4',
10631                    codec: e.codec,
10632                    initSegment: Ln.initSegment([e]),
10633                    metadata: { width: e.width, height: e.height },
10634                  }),
10635                  c)
10636                )
10637                  if (((s = e.inputTimeScale), d && s === d.timescale)) c = !1;
10638                  else {
10639                    var g = this.getVideoStartPts(l),
10640                      v = Math.round(s * r);
10641                    (a = Math.min(a, wn(l[0].dts, g) - v)), (n = Math.min(n, g - v));
10642                  }
10643                this.videoTrackConfig = {
10644                  width: e.width,
10645                  height: e.height,
10646                  pixelRatio: e.pixelRatio,
10647                };
10648              }
10649              if (Object.keys(h).length)
10650                return (
10651                  (this.ISGenerated = !0),
10652                  c
10653                    ? ((this._initPTS = { baseTime: n, timescale: s }),
10654                      (this._initDTS = { baseTime: a, timescale: s }))
10655                    : (n = s = void 0),
10656                  { tracks: h, initPTS: n, timescale: s }
10657                );
10658            }),
10659            (e.remuxVideo = function (t, e, r, i) {
10660              var n,
10661                a,
10662                s = t.inputTimeScale,
10663                l = t.samples,
10664                u = [],
10665                h = l.length,
10666                d = this._initPTS,
10667                c = this.nextAvcDts,
10668                f = 8,
10669                g = this.videoSampleDuration,
10670                v = Number.POSITIVE_INFINITY,
10671                m = Number.NEGATIVE_INFINITY,
10672                p = !1;
10673              if (!r || null === c) {
10674                var y = e * s,
10675                  E = l[0].pts - wn(l[0].dts, l[0].pts);
10676                kn && null !== c && Math.abs(y - E - c) < 15e3 ? (r = !0) : (c = y - E);
10677              }
10678              for (var T = (d.baseTime * s) / d.timescale, R = 0; R < h; R++) {
10679                var b = l[R];
10680                (b.pts = wn(b.pts - T, c)),
10681                  (b.dts = wn(b.dts - T, c)),
10682                  b.dts < l[R > 0 ? R - 1 : R].dts && (p = !0);
10683              }
10684              p &&
10685                l.sort(function (t, e) {
10686                  var r = t.dts - e.dts,
10687                    i = t.pts - e.pts;
10688                  return r || i;
10689                }),
10690                (n = l[0].dts);
10691              var k = (a = l[l.length - 1].dts) - n,
10692                D = k ? Math.round(k / (h - 1)) : g || t.inputTimeScale / 30;
10693              if (r) {
10694                var I = n - c,
10695                  C = I > D,
10696                  _ = I < -1;
10697                if (
10698                  (C || _) &&
10699                  (C
10700                    ? w.warn(
10701                        'AVC: ' +
10702                          bn(I, !0) +
10703                          ' ms (' +
10704                          I +
10705                          'dts) hole between fragments detected at ' +
10706                          e.toFixed(3)
10707                      )
10708                    : w.warn(
10709                        'AVC: ' +
10710                          bn(-I, !0) +
10711                          ' ms (' +
10712                          I +
10713                          'dts) overlapping between fragments detected at ' +
10714                          e.toFixed(3)
10715                      ),
10716                  !_ || c >= l[0].pts || kn)
10717                ) {
10718                  n = c;
10719                  var x = l[0].pts - I;
10720                  if (C) (l[0].dts = n), (l[0].pts = x);
10721                  else
10722                    for (var P = 0; P < l.length && !(l[P].dts > x); P++)
10723                      (l[P].dts -= I), (l[P].pts -= I);
10724                  w.log(
10725                    'Video: Initial PTS/DTS adjusted: ' +
10726                      bn(x, !0) +
10727                      '/' +
10728                      bn(n, !0) +
10729                      ', delta: ' +
10730                      bn(I, !0) +
10731                      ' ms'
10732                  );
10733                }
10734              }
10735              for (var F = 0, M = 0, O = (n = Math.max(0, n)), N = 0; N < h; N++) {
10736                for (var U = l[N], B = U.units, G = B.length, K = 0, H = 0; H < G; H++)
10737                  K += B[H].data.length;
10738                (M += K),
10739                  (F += G),
10740                  (U.length = K),
10741                  U.dts < O ? ((U.dts = O), (O += (D / 4) | 0 || 1)) : (O = U.dts),
10742                  (v = Math.min(U.pts, v)),
10743                  (m = Math.max(U.pts, m));
10744              }
10745              a = l[h - 1].dts;
10746              var V,
10747                Y = M + 4 * F + 8;
10748              try {
10749                V = new Uint8Array(Y);
10750              } catch (t) {
10751                return void this.observer.emit(S.ERROR, S.ERROR, {
10752                  type: L.MUX_ERROR,
10753                  details: A.REMUX_ALLOC_ERROR,
10754                  fatal: !1,
10755                  error: t,
10756                  bytes: Y,
10757                  reason: 'fail allocating video mdat ' + Y,
10758                });
10759              }
10760              var W = new DataView(V.buffer);
10761              W.setUint32(0, Y), V.set(Ln.types.mdat, 4);
10762              for (
10763                var j = !1,
10764                  q = Number.POSITIVE_INFINITY,
10765                  X = Number.POSITIVE_INFINITY,
10766                  z = Number.NEGATIVE_INFINITY,
10767                  Q = Number.NEGATIVE_INFINITY,
10768                  J = 0;
10769                J < h;
10770                J++
10771              ) {
10772                for (var $ = l[J], Z = $.units, tt = 0, et = 0, rt = Z.length; et < rt; et++) {
10773                  var it = Z[et],
10774                    nt = it.data,
10775                    at = it.data.byteLength;
10776                  W.setUint32(f, at), (f += 4), V.set(nt, f), (f += at), (tt += 4 + at);
10777                }
10778                var st = void 0;
10779                if (J < h - 1) (g = l[J + 1].dts - $.dts), (st = l[J + 1].pts - $.pts);
10780                else {
10781                  var ot = this.config,
10782                    lt = J > 0 ? $.dts - l[J - 1].dts : D;
10783                  if (
10784                    ((st = J > 0 ? $.pts - l[J - 1].pts : D),
10785                    ot.stretchShortVideoTrack && null !== this.nextAudioPts)
10786                  ) {
10787                    var ut = Math.floor(ot.maxBufferHole * s),
10788                      ht = (i ? v + i * s : this.nextAudioPts) - $.pts;
10789                    ht > ut
10790                      ? ((g = ht - lt) < 0 ? (g = lt) : (j = !0),
10791                        w.log(
10792                          '[mp4-remuxer]: It is approximately ' +
10793                            ht / 90 +
10794                            ' ms to the next segment; using duration ' +
10795                            g / 90 +
10796                            ' ms for the last video frame.'
10797                        ))
10798                      : (g = lt);
10799                  } else g = lt;
10800                }
10801                var dt = Math.round($.pts - $.dts);
10802                (q = Math.min(q, g)),
10803                  (z = Math.max(z, g)),
10804                  (X = Math.min(X, st)),
10805                  (Q = Math.max(Q, st)),
10806                  u.push(new Pn($.key, g, tt, dt));
10807              }
10808              if (u.length)
10809                if (kn) {
10810                  if (kn < 70) {
10811                    var ct = u[0].flags;
10812                    (ct.dependsOn = 2), (ct.isNonSync = 0);
10813                  }
10814                } else if (Dn && Q - X < z - q && D / z < 0.025 && 0 === u[0].cts) {
10815                  w.warn(
10816                    'Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.'
10817                  );
10818                  for (var ft = n, gt = 0, vt = u.length; gt < vt; gt++) {
10819                    var mt = ft + u[gt].duration,
10820                      pt = ft + u[gt].cts;
10821                    if (gt < vt - 1) {
10822                      var yt = mt + u[gt + 1].cts;
10823                      u[gt].duration = yt - pt;
10824                    } else u[gt].duration = gt ? u[gt - 1].duration : D;
10825                    (u[gt].cts = 0), (ft = mt);
10826                  }
10827                }
10828              (g = j || !g ? D : g),
10829                (this.nextAvcDts = c = a + g),
10830                (this.videoSampleDuration = g),
10831                (this.isVideoContiguous = !0);
10832              var Et = {
10833                data1: Ln.moof(t.sequenceNumber++, n, o({}, t, { samples: u })),
10834                data2: V,
10835                startPTS: v / s,
10836                endPTS: (m + g) / s,
10837                startDTS: n / s,
10838                endDTS: c / s,
10839                type: 'video',
10840                hasAudio: !1,
10841                hasVideo: !0,
10842                nb: u.length,
10843                dropped: t.dropped,
10844              };
10845              return (t.samples = []), (t.dropped = 0), Et;
10846            }),
10847            (e.getSamplesPerFrame = function (t) {
10848              switch (t.segmentCodec) {
10849                case 'mp3':
10850                  return 1152;
10851                case 'ac3':
10852                  return 1536;
10853                default:
10854                  return 1024;
10855              }
10856            }),
10857            (e.remuxAudio = function (t, e, r, i, n) {
10858              var a = t.inputTimeScale,
10859                s = a / (t.samplerate ? t.samplerate : a),
10860                l = this.getSamplesPerFrame(t),
10861                u = l * s,
10862                h = this._initPTS,
10863                d = 'mp3' === t.segmentCodec && this.typeSupported.mpeg,
10864                c = [],
10865                f = void 0 !== n,
10866                g = t.samples,
10867                v = d ? 0 : 8,
10868                m = this.nextAudioPts || -1,
10869                p = e * a,
10870                y = (h.baseTime * a) / h.timescale;
10871              if (
10872                ((this.isAudioContiguous = r =
10873                  r ||
10874                  (g.length &&
10875                    m > 0 &&
10876                    ((i && Math.abs(p - m) < 9e3) || Math.abs(wn(g[0].pts - y, p) - m) < 20 * u))),
10877                g.forEach(function (t) {
10878                  t.pts = wn(t.pts - y, p);
10879                }),
10880                !r || m < 0)
10881              ) {
10882                if (
10883                  ((g = g.filter(function (t) {
10884                    return t.pts >= 0;
10885                  })),
10886                  !g.length)
10887                )
10888                  return;
10889                m = 0 === n ? 0 : i && !f ? Math.max(0, p) : g[0].pts;
10890              }
10891              if ('aac' === t.segmentCodec)
10892                for (var E = this.config.maxAudioFramesDrift, T = 0, R = m; T < g.length; T++) {
10893                  var b = g[T],
10894                    k = b.pts,
10895                    D = k - R,
10896                    I = Math.abs((1e3 * D) / a);
10897                  if (D <= -E * u && f)
10898                    0 === T &&
10899                      (w.warn(
10900                        'Audio frame @ ' +
10901                          (k / a).toFixed(3) +
10902                          's overlaps nextAudioPts by ' +
10903                          Math.round((1e3 * D) / a) +
10904                          ' ms.'
10905                      ),
10906                      (this.nextAudioPts = m = R = k));
10907                  else if (D >= E * u && I < 1e4 && f) {
10908                    var C = Math.round(D / u);
10909                    (R = k - C * u) < 0 && (C--, (R += u)),
10910                      0 === T && (this.nextAudioPts = m = R),
10911                      w.warn(
10912                        '[mp4-remuxer]: Injecting ' +
10913                          C +
10914                          ' audio frame @ ' +
10915                          (R / a).toFixed(3) +
10916                          's due to ' +
10917                          Math.round((1e3 * D) / a) +
10918                          ' ms gap.'
10919                      );
10920                    for (var _ = 0; _ < C; _++) {
10921                      var x = Math.max(R, 0),
10922                        P = Tn.getSilentFrame(t.manifestCodec || t.codec, t.channelCount);
10923                      P ||
10924                        (w.log(
10925                          '[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead.'
10926                        ),
10927                        (P = b.unit.subarray())),
10928                        g.splice(T, 0, { unit: P, pts: x }),
10929                        (R += u),
10930                        T++;
10931                    }
10932                  }
10933                  (b.pts = R), (R += u);
10934                }
10935              for (var F, M = null, O = null, N = 0, U = g.length; U--; ) N += g[U].unit.byteLength;
10936              for (var B = 0, G = g.length; B < G; B++) {
10937                var K = g[B],
10938                  H = K.unit,
10939                  V = K.pts;
10940                if (null !== O) c[B - 1].duration = Math.round((V - O) / s);
10941                else {
10942                  if ((r && 'aac' === t.segmentCodec && (V = m), (M = V), !(N > 0))) return;
10943                  N += v;
10944                  try {
10945                    F = new Uint8Array(N);
10946                  } catch (t) {
10947                    return void this.observer.emit(S.ERROR, S.ERROR, {
10948                      type: L.MUX_ERROR,
10949                      details: A.REMUX_ALLOC_ERROR,
10950                      fatal: !1,
10951                      error: t,
10952                      bytes: N,
10953                      reason: 'fail allocating audio mdat ' + N,
10954                    });
10955                  }
10956                  d || (new DataView(F.buffer).setUint32(0, N), F.set(Ln.types.mdat, 4));
10957                }
10958                F.set(H, v);
10959                var Y = H.byteLength;
10960                (v += Y), c.push(new Pn(!0, l, Y, 0)), (O = V);
10961              }
10962              var W = c.length;
10963              if (W) {
10964                var j = c[c.length - 1];
10965                this.nextAudioPts = m = O + s * j.duration;
10966                var q = d
10967                  ? new Uint8Array(0)
10968                  : Ln.moof(t.sequenceNumber++, M / s, o({}, t, { samples: c }));
10969                t.samples = [];
10970                var X = M / a,
10971                  z = m / a,
10972                  Q = {
10973                    data1: q,
10974                    data2: F,
10975                    startPTS: X,
10976                    endPTS: z,
10977                    startDTS: X,
10978                    endDTS: z,
10979                    type: 'audio',
10980                    hasAudio: !0,
10981                    hasVideo: !1,
10982                    nb: W,
10983                  };
10984                return (this.isAudioContiguous = !0), Q;
10985              }
10986            }),
10987            (e.remuxEmptyAudio = function (t, e, r, i) {
10988              var n = t.inputTimeScale,
10989                a = n / (t.samplerate ? t.samplerate : n),
10990                s = this.nextAudioPts,
10991                o = this._initDTS,
10992                l = (9e4 * o.baseTime) / o.timescale,
10993                u = (null !== s ? s : i.startDTS * n) + l,
10994                h = i.endDTS * n + l,
10995                d = 1024 * a,
10996                c = Math.ceil((h - u) / d),
10997                f = Tn.getSilentFrame(t.manifestCodec || t.codec, t.channelCount);
10998              if ((w.warn('[mp4-remuxer]: remux empty Audio'), f)) {
10999                for (var g = [], v = 0; v < c; v++) {
11000                  var m = u + v * d;
11001                  g.push({ unit: f, pts: m, dts: m });
11002                }
11003                return (t.samples = g), this.remuxAudio(t, e, r, !1);
11004              }
11005              w.trace(
11006                '[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec'
11007              );
11008            }),
11009            t
11010          );
11011        })();
11012      function wn(t, e) {
11013        var r;
11014        if (null === e) return t;
11015        for (r = e < t ? -8589934592 : 8589934592; Math.abs(t - e) > 4294967296; ) t += r;
11016        return t;
11017      }
11018      function Cn(t, e, r, i) {
11019        var n = t.samples.length;
11020        if (n) {
11021          for (var a = t.inputTimeScale, s = 0; s < n; s++) {
11022            var o = t.samples[s];
11023            (o.pts = wn(o.pts - (r.baseTime * a) / r.timescale, e * a) / a),
11024              (o.dts = wn(o.dts - (i.baseTime * a) / i.timescale, e * a) / a);
11025          }
11026          var l = t.samples;
11027          return (t.samples = []), { samples: l };
11028        }
11029      }
11030      function _n(t, e, r) {
11031        var i = t.samples.length;
11032        if (i) {
11033          for (var n = t.inputTimeScale, a = 0; a < i; a++) {
11034            var s = t.samples[a];
11035            s.pts = wn(s.pts - (r.baseTime * n) / r.timescale, e * n) / n;
11036          }
11037          t.samples.sort(function (t, e) {
11038            return t.pts - e.pts;
11039          });
11040          var o = t.samples;
11041          return (t.samples = []), { samples: o };
11042        }
11043      }
11044      var xn,
11045        Pn = function (t, e, r, i) {
11046          (this.size = void 0),
11047            (this.duration = void 0),
11048            (this.cts = void 0),
11049            (this.flags = void 0),
11050            (this.duration = e),
11051            (this.size = r),
11052            (this.cts = i),
11053            (this.flags = {
11054              isLeading: 0,
11055              isDependedOn: 0,
11056              hasRedundancy: 0,
11057              degradPrio: 0,
11058              dependsOn: t ? 2 : 1,
11059              isNonSync: t ? 0 : 1,
11060            });
11061        },
11062        Fn = (function () {
11063          function t() {
11064            (this.emitInitSegment = !1),
11065              (this.audioCodec = void 0),
11066              (this.videoCodec = void 0),
11067              (this.initData = void 0),
11068              (this.initPTS = null),
11069              (this.initTracks = void 0),
11070              (this.lastEndTime = null);
11071          }
11072          var e = t.prototype;
11073          return (
11074            (e.destroy = function () {}),
11075            (e.resetTimeStamp = function (t) {
11076              (this.initPTS = t), (this.lastEndTime = null);
11077            }),
11078            (e.resetNextTimestamp = function () {
11079              this.lastEndTime = null;
11080            }),
11081            (e.resetInitSegment = function (t, e, r, i) {
11082              (this.audioCodec = e),
11083                (this.videoCodec = r),
11084                this.generateInitSegment(
11085                  (function (t, e) {
11086                    if (!t || !e) return t;
11087                    var r = e.keyId;
11088                    return (
11089                      r &&
11090                        e.isCommonEncryption &&
11091                        Ot(t, ['moov', 'trak']).forEach(function (t) {
11092                          var e = Ot(t, ['mdia', 'minf', 'stbl', 'stsd'])[0].subarray(8),
11093                            i = Ot(e, ['enca']),
11094                            n = i.length > 0;
11095                          n || (i = Ot(e, ['encv'])),
11096                            i.forEach(function (t) {
11097                              Ot(n ? t.subarray(28) : t.subarray(78), ['sinf']).forEach(function (
11098                                t
11099                              ) {
11100                                var e = Vt(t);
11101                                if (e) {
11102                                  var i = e.subarray(8, 24);
11103                                  i.some(function (t) {
11104                                    return 0 !== t;
11105                                  }) ||
11106                                    (w.log(
11107                                      "[eme] Patching keyId in 'enc" +
11108                                        (n ? 'a' : 'v') +
11109                                        ">sinf>>tenc' box: " +
11110                                        kt.hexDump(i) +
11111                                        ' -> ' +
11112                                        kt.hexDump(r)
11113                                    ),
11114                                    e.set(r, 8));
11115                                }
11116                              });
11117                            });
11118                        }),
11119                      t
11120                    );
11121                  })(t, i)
11122                ),
11123                (this.emitInitSegment = !0);
11124            }),
11125            (e.generateInitSegment = function (t) {
11126              var e = this.audioCodec,
11127                r = this.videoCodec;
11128              if (null == t || !t.byteLength)
11129                return (this.initTracks = void 0), void (this.initData = void 0);
11130              var i = (this.initData = Ut(t));
11131              i.audio && (e = Mn(i.audio, O)), i.video && (r = Mn(i.video, N));
11132              var n = {};
11133              i.audio && i.video
11134                ? (n.audiovideo = {
11135                    container: 'video/mp4',
11136                    codec: e + ',' + r,
11137                    initSegment: t,
11138                    id: 'main',
11139                  })
11140                : i.audio
11141                ? (n.audio = { container: 'audio/mp4', codec: e, initSegment: t, id: 'audio' })
11142                : i.video
11143                ? (n.video = { container: 'video/mp4', codec: r, initSegment: t, id: 'main' })
11144                : w.warn(
11145                    '[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes.'
11146                  ),
11147                (this.initTracks = n);
11148            }),
11149            (e.remux = function (t, e, r, i, n, a) {
11150              var s,
11151                o,
11152                l = this.initPTS,
11153                u = this.lastEndTime,
11154                h = { audio: void 0, video: void 0, text: i, id3: r, initSegment: void 0 };
11155              y(u) || (u = this.lastEndTime = n || 0);
11156              var d = e.samples;
11157              if (null == d || !d.length) return h;
11158              var c = { initPTS: void 0, timescale: 1 },
11159                f = this.initData;
11160              if (
11161                ((null != (s = f) && s.length) ||
11162                  (this.generateInitSegment(d), (f = this.initData)),
11163                null == (o = f) || !o.length)
11164              )
11165                return w.warn('[passthrough-remuxer.ts]: Failed to generate initSegment.'), h;
11166              this.emitInitSegment && ((c.tracks = this.initTracks), (this.emitInitSegment = !1));
11167              var g = (function (t, e) {
11168                  for (
11169                    var r = 0, i = 0, n = 0, a = Ot(t, ['moof', 'traf']), s = 0;
11170                    s < a.length;
11171                    s++
11172                  ) {
11173                    var o = a[s],
11174                      l = Ot(o, ['tfhd'])[0],
11175                      u = e[xt(l, 4)];
11176                    if (u) {
11177                      var h = u.default,
11178                        d = xt(l, 0) | (null == h ? void 0 : h.flags),
11179                        c = null == h ? void 0 : h.duration;
11180                      8 & d && (c = xt(l, 2 & d ? 12 : 8));
11181                      for (
11182                        var f = u.timescale || 9e4, g = Ot(o, ['trun']), v = 0;
11183                        v < g.length;
11184                        v++
11185                      )
11186                        !(r = Yt(g[v])) && c && (r = c * xt(g[v], 4)),
11187                          u.type === N ? (i += r / f) : u.type === O && (n += r / f);
11188                    }
11189                  }
11190                  if (0 === i && 0 === n) {
11191                    for (
11192                      var m = 1 / 0, p = 0, E = 0, T = Ot(t, ['sidx']), S = 0;
11193                      S < T.length;
11194                      S++
11195                    ) {
11196                      var L = Nt(T[S]);
11197                      if (null != L && L.references) {
11198                        m = Math.min(m, L.earliestPresentationTime / L.timescale);
11199                        var A = L.references.reduce(function (t, e) {
11200                          return t + e.info.duration || 0;
11201                        }, 0);
11202                        E = (p = Math.max(p, A + L.earliestPresentationTime / L.timescale)) - m;
11203                      }
11204                    }
11205                    if (E && y(E)) return E;
11206                  }
11207                  return i || n;
11208                })(d, f),
11209                v = (function (t, e) {
11210                  return Ot(e, ['moof', 'traf']).reduce(function (e, r) {
11211                    var i = Ot(r, ['tfdt'])[0],
11212                      n = i[0],
11213                      a = Ot(r, ['tfhd']).reduce(function (e, r) {
11214                        var a = xt(r, 4),
11215                          s = t[a];
11216                        if (s) {
11217                          var o = xt(i, 4);
11218                          if (1 === n) {
11219                            if (o === Dt)
11220                              return (
11221                                w.warn(
11222                                  '[mp4-demuxer]: Ignoring assumed invali
11222d signed 64-bit track fragment decode time'
11223                                ),
11224                                e
11225                              );
11226                            (o *= Dt + 1), (o += xt(i, 8));
11227                          }
11228                          var l = o / (s.timescale || 9e4);
11229                          if (y(l) && (null === e || l < e)) return l;
11230                        }
11231                        return e;
11232                      }, null);
11233                    return null !== a && y(a) && (null === e || a < e) ? a : e;
11234                  }, null);
11235                })(f, d),
11236                m = null === v ? n : v;
11237              ((function (t, e, r, i) {
11238                if (null === t) return !0;
11239                var n = Math.max(i, 1),
11240                  a = e - t.baseTime / t.timescale;
11241                return Math.abs(a - r) > n;
11242              })(l, m, n, g) ||
11243                (c.timescale !== l.timescale && a)) &&
11244                ((c.initPTS = m - n),
11245                l &&
11246                  1 === l.timescale &&
11247                  w.warn('Adjusting initPTS by ' + (c.initPTS - l.baseTime)),
11248                (this.initPTS = l = { baseTime: c.initPTS, timescale: 1 }));
11249              var p = t ? m - l.baseTime / l.timescale : u,
11250                E = p + g;
11251              !(function (t, e, r) {
11252                Ot(e, ['moof', 'traf']).forEach(function (e) {
11253                  Ot(e, ['tfhd']).forEach(function (i) {
11254                    var n = xt(i, 4),
11255                      a = t[n];
11256                    if (a) {
11257                      var s = a.timescale || 9e4;
11258                      Ot(e, ['tfdt']).forEach(function (t) {
11259                        var e = t[0],
11260                          i = r * s;
11261                        if (i) {
11262                          var n = xt(t, 4);
11263                          if (0 === e) (n -= i), Mt(t, 4, (n = Math.max(n, 0)));
11264                          else {
11265                            (n *= Math.pow(2, 32)), (n += xt(t, 8)), (n -= i), (n = Math.max(n, 0));
11266                            var a = Math.floor(n / (Dt + 1)),
11267                              o = Math.floor(n % (Dt + 1));
11268                            Mt(t, 4, a), Mt(t, 8, o);
11269                          }
11270                        }
11271                      });
11272                    }
11273                  });
11274                });
11275              })(f, d, l.baseTime / l.timescale),
11276                g > 0
11277                  ? (this.lastEndTime = E)
11278                  : (w.warn('Duration parsed from mp4 should be greater than zero'),
11279                    this.resetNextTimestamp());
11280              var T = !!f.audio,
11281                S = !!f.video,
11282                L = '';
11283              T && (L += 'audio'), S && (L += 'video');
11284              var A = {
11285                data1: d,
11286                startPTS: p,
11287                startDTS: p,
11288                endPTS: E,
11289                endDTS: E,
11290                type: L,
11291                hasAudio: T,
11292                hasVideo: S,
11293                nb: 1,
11294                dropped: 0,
11295              };
11296              return (
11297                (h.audio = 'audio' === A.type ? A : void 0),
11298                (h.video = 'audio' !== A.type ? A : void 0),
11299                (h.initSegment = c),
11300                (h.id3 = Cn(r, n, l, l)),
11301                i.samples.length && (h.text = _n(i, n, l)),
11302                h
11303              );
11304            }),
11305            t
11306          );
11307        })();
11308      function Mn(t, e) {
11309        var r = null == t ? void 0 : t.codec;
11310        if (r && r.length > 4) return r;
11311        if (e === O) {
11312          if ('ec-3' === r || 'ac-3' === r || 'alac' === r) return r;
11313          if ('fLaC' === r || 'Opus' === r) return ve(r, !1);
11314          var i = 'mp4a.40.5';
11315          return (
11316            w.info(
11317              'Parsed audio codec "' + r + '" or audio object type not handled. Using "' + i + '"'
11318            ),
11319            i
11320          );
11321        }
11322        return (
11323          w.warn('Unhandled video codec "' + r + '"'),
11324          'hvc1' === r || 'hev1' === r
11325            ? 'hvc1.1.6.L120.90'
11326            : 'av01' === r
11327            ? 'av01.0.04M.08'
11328            : 'avc1.42e01e'
11329        );
11330      }
11331      try {
11332        xn = self.performance.now.bind(self.performance);
11333      } catch (t) {
11334        w.debug('Unable to use Performance API on this environment'),
11335          (xn = null == j ? void 0 : j.Date.now);
11336      }
11337      var On = [
11338        { demux: rn, remux: Fn },
11339        { demux: cn, remux: In },
11340        { demux: tn, remux: In },
11341        { demux: En, remux: In },
11342      ];
11343      On.splice(2, 0, { demux: an, remux: In });
11344      var Nn = (function () {
11345          function t(t, e, r, i, n) {
11346            (this.async = !1),
11347              (this.observer = void 0),
11348              (this.typeSupported = void 0),
11349              (this.config = void 0),
11350              (this.vendor = void 0),
11351              (this.id = void 0),
11352              (this.demuxer = void 0),
11353              (this.remuxer = void 0),
11354              (this.decrypter = void 0),
11355              (this.probe = void 0),
11356              (this.decryptionPromise = null),
11357              (this.transmuxConfig = void 0),
11358              (this.currentTransmuxState = void 0),
11359              (this.observer = t),
11360              (this.typeSupported = e),
11361              (this.config = r),
11362              (this.vendor = i),
11363              (this.id = n);
11364          }
11365          var e = t.prototype;
11366          return (
11367            (e.configure = function (t) {
11368              (this.transmuxConfig = t), this.decrypter && this.decrypter.reset();
11369            }),
11370            (e.push = function (t, e, r, i) {
11371              var n = this,
11372                a = r.transmuxing;
11373              a.executeStart = xn();
11374              var s = new Uint8Array(t),
11375                o = this.currentTransmuxState,
11376                l = this.transmuxConfig;
11377              i && (this.currentTransmuxState = i);
11378              var u = i || o,
11379                h = u.contiguous,
11380                d = u.discontinuity,
11381                c = u.trackSwitch,
11382                f = u.accurateTimeOffset,
11383                g = u.timeOffset,
11384                v = u.initSegmentChange,
11385                m = l.audioCodec,
11386                p = l.videoCodec,
11387                y = l.defaultInitPts,
11388                E = l.duration,
11389                T = l.initSegmentData,
11390                R = (function (t, e) {
11391                  var r = null;
11392                  return (
11393                    t.byteLength > 0 &&
11394                      null != (null == e ? void 0 : e.key) &&
11395                      null !== e.iv &&
11396                      null != e.method &&
11397                      (r = e),
11398                    r
11399                  );
11400                })(s, e);
11401              if (R && 'AES-128' === R.method) {
11402                var b = this.getDecrypter();
11403                if (!b.isSync())
11404                  return (
11405                    (this.decryptionPromise = b
11406                      .webCryptoDecrypt(s, R.key.buffer, R.iv.buffer)
11407                      .then(function (t) {
11408                        var e = n.push(t, null, r);
11409                        return (n.decryptionPromise = null), e;
11410                      })),
11411                    this.decryptionPromise
11412                  );
11413                var k = b.softwareDecrypt(s, R.key.buffer, R.iv.buffer);
11414                if ((r.part > -1 && (k = b.flush()), !k)) return (a.executeEnd = xn()), Un(r);
11415                s = new Uint8Array(k);
11416              }
11417              var D = this.needsProbing(d, c);
11418              if (D) {
11419                var I = this.configureTransmuxer(s);
11420                if (I)
11421                  return (
11422                    w.warn('[transmuxer] ' + I.message),
11423                    this.observer.emit(S.ERROR, S.ERROR, {
11424                      type: L.MEDIA_ERROR,
11425                      details: A.FRAG_PARSING_ERROR,
11426                      fatal: !1,
11427                      error: I,
11428                      reason: I.message,
11429                    }),
11430                    (a.executeEnd = xn()),
11431                    Un(r)
11432                  );
11433              }
11434              (d || c || v || D) && this.resetInitSegment(T, m, p, E, e),
11435                (d || v || D) && this.resetInitialTimestamp(y),
11436                h || this.resetContiguity();
11437              var C = this.transmux(s, R, g, f, r),
11438                _ = this.currentTransmuxState;
11439              return (
11440                (_.contiguous = !0),
11441                (_.discontinuity = !1),
11442                (_.trackSwitch = !1),
11443                (a.executeEnd = xn()),
11444                C
11445              );
11446            }),
11447            (e.flush = function (t) {
11448              var e = this,
11449                r = t.transmuxing;
11450              r.executeStart = xn();
11451              var i = this.decrypter,
11452                n = this.currentTransmuxState,
11453                a = this.decryptionPromise;
11454              if (a)
11455                return a.then(function () {
11456                  return e.flush(t);
11457                });
11458              var s = [],
11459                o = n.timeOffset;
11460              if (i) {
11461                var l = i.flush();
11462                l && s.push(this.push(l, null, t));
11463              }
11464              var u = this.demuxer,
11465                h = this.remuxer;
11466              if (!u || !h) return (r.executeEnd = xn()), [Un(t)];
11467              var d = u.flush(o);
11468              return Bn(d)
11469                ? d.then(function (r) {
11470                    return e.flushRemux(s, r, t), s;
11471                  })
11472                : (this.flushRemux(s, d, t), s);
11473            }),
11474            (e.flushRemux = function (t, e, r) {
11475              var i = e.audioTrack,
11476                n = e.videoTrack,
11477                a = e.id3Track,
11478                s = e.textTrack,
11479                o = this.currentTransmuxState,
11480                l = o.accurateTimeOffset,
11481                u = o.timeOffset;
11482              w.log(
11483                '[transmuxer.ts]: Flushed fragment ' +
11484                  r.sn +
11485                  (r.part > -1 ? ' p: ' + r.part : '') +
11486                  ' of level ' +
11487                  r.level
11488              );
11489              var h = this.remuxer.remux(i, n, a, s, u, l, !0, this.id);
11490              t.push({ remuxResult: h, chunkMeta: r }), (r.transmuxing.executeEnd = xn());
11491            }),
11492            (e.resetInitialTimestamp = function (t) {
11493              var e = this.demuxer,
11494                r = this.remuxer;
11495              e && r && (e.resetTimeStamp(t), r.resetTimeStamp(t));
11496            }),
11497            (e.resetContiguity = function () {
11498              var t = this.demuxer,
11499                e = this.remuxer;
11500              t && e && (t.resetContiguity(), e.resetNextTimestamp());
11501            }),
11502            (e.resetInitSegment = function (t, e, r, i, n) {
11503              var a = this.demuxer,
11504                s = this.remuxer;
11505              a && s && (a.resetInitSegment(t, e, r, i), s.resetInitSegment(t, e, r, n));
11506            }),
11507            (e.destroy = function () {
11508              this.demuxer && (this.demuxer.destroy(), (this.demuxer = void 0)),
11509                this.remuxer && (this.remuxer.destroy(), (this.remuxer = void 0));
11510            }),
11511            (e.transmux = function (t, e, r, i, n) {
11512              return e && 'SAMPLE-AES' === e.method
11513                ? this.transmuxSampleAes(t, e, r, i, n)
11514                : this.transmuxUnencrypted(t, r, i, n);
11515            }),
11516            (e.transmuxUnencrypted = function (t, e, r, i) {
11517              var n = this.demuxer.demux(t, e, !1, !this.config.progressive),
11518                a = n.audioTrack,
11519                s = n.videoTrack,
11520                o = n.id3Track,
11521                l = n.textTrack;
11522              return {
11523                remuxResult: this.remuxer.remux(a, s, o, l, e, r, !1, this.id),
11524                chunkMeta: i,
11525              };
11526            }),
11527            (e.transmuxSampleAes = function (t, e, r, i, n) {
11528              var a = this;
11529              return this.demuxer.demuxSampleAes(t, e, r).then(function (t) {
11530                return {
11531                  remuxResult: a.remuxer.remux(
11532                    t.audioTrack,
11533                    t.videoTrack,
11534                    t.id3Track,
11535                    t.textTrack,
11536                    r,
11537                    i,
11538                    !1,
11539                    a.id
11540                  ),
11541                  chunkMeta: n,
11542                };
11543              });
11544            }),
11545            (e.configureTransmuxer = function (t) {
11546              for (
11547                var e,
11548                  r = this.config,
11549                  i = this.observer,
11550                  n = this.typeSupported,
11551                  a = this.vendor,
11552                  s = 0,
11553                  o = On.length;
11554                s < o;
11555                s++
11556              ) {
11557                var l;
11558                if (null != (l = On[s].demux) && l.probe(t)) {
11559                  e = On[s];
11560                  break;
11561                }
11562              }
11563              if (!e) return new Error('Failed to find demuxer by probing fragment data');
11564              var u = this.demuxer,
11565                h = this.remuxer,
11566                d = e.remux,
11567                c = e.demux;
11568              (h && h instanceof d) || (this.remuxer = new d(i, r, n, a)),
11569                (u && u instanceof c) || ((this.demuxer = new c(i, r, n)), (this.probe = c.probe));
11570            }),
11571            (e.needsProbing = function (t, e) {
11572              return !this.demuxer || !this.remuxer || t || e;
11573            }),
11574            (e.getDecrypter = function () {
11575              var t = this.decrypter;
11576              return t || (t = this.decrypter = new pi(this.config)), t;
11577            }),
11578            t
11579          );
11580        })(),
11581        Un = function (t) {
11582          return { remuxResult: {}, chunkMeta: t };
11583        };
11584      function Bn(t) {
11585        return 'then' in t && t.then instanceof Function;
11586      }
11587      var Gn = function (t, e, r, i, n) {
11588          (this.audioCodec = void 0),
11589            (this.videoCodec = void 0),
11590            (this.initSegmentData = void 0),
11591            (this.duration = void 0),
11592            (this.defaultInitPts = void 0),
11593            (this.audioCodec = t),
11594            (this.videoCodec = e),
11595            (this.initSegmentData = r),
11596            (this.duration = i),
11597            (this.defaultInitPts = n || null);
11598        },
11599        Kn = function (t, e, r, i, n, a) {
11600          (this.discontinuity = void 0),
11601            (this.contiguous = void 0),
11602            (this.accurateTimeOffset = void 0),
11603            (this.trackSwitch = void 0),
11604            (this.timeOffset = void 0),
11605            (this.initSegmentChange = void 0),
11606            (this.discontinuity = t),
11607            (this.contiguous = e),
11608            (this.accurateTimeOffset = r),
11609            (this.trackSwitch = i),
11610            (this.timeOffset = n),
11611            (this.initSegmentChange = a);
11612        },
11613        Hn = { exports: {} };
11614      !(function (t) {
11615        var e = Object.prototype.hasOwnProperty,
11616          r = '~';
11617        function i() {}
11618        function n(t, e, r) {
11619          (this.fn = t), (this.context = e), (this.once = r || !1);
11620        }
11621        function a(t, e, i, a, s) {
11622          if ('function' != typeof i) throw new TypeError('The listener must be a function');
11623          var o = new n(i, a || t, s),
11624            l = r ? r + e : e;
11625          return (
11626            t._events[l]
11627              ? t._events[l].fn
11628                ? (t._events[l] = [t._events[l], o])
11629                : t._events[l].push(o)
11630              : ((t._events[l] = o), t._eventsCount++),
11631            t
11632          );
11633        }
11634        function s(t, e) {
11635          0 == --t._eventsCount ? (t._events = new i()) : delete t._events[e];
11636        }
11637        function o() {
11638          (this._events = new i()), (this._eventsCount = 0);
11639        }
11640        Object.create && ((i.prototype = Object.create(null)), new i().__proto__ || (r = !1)),
11641          (o.prototype.eventNames = function () {
11642            var t,
11643              i,
11644              n = [];
11645            if (0 === this._eventsCount) return n;
11646            for (i in (t = this._events)) e.call(t, i) && n.push(r ? i.slice(1) : i);
11647            return Object.getOwnPropertySymbols ? n.concat(Object.getOwnPropertySymbols(t)) : n;
11648          }),
11649          (o.prototype.listeners = function (t) {
11650            var e = r ? r + t : t,
11651              i = this._events[e];
11652            if (!i) return [];
11653            if (i.fn) return [i.fn];
11654            for (var n = 0, a = i.length, s = new Array(a); n < a; n++) s[n] = i[n].fn;
11655            return s;
11656          }),
11657          (o.prototype.listenerCount = function (t) {
11658            var e = r ? r + t : t,
11659              i = this._events[e];
11660            return i ? (i.fn ? 1 : i.length) : 0;
11661          }),
11662          (o.prototype.emit = function (t, e, i, n, a, s) {
11663            var o = r ? r + t : t;
11664            if (!this._events[o]) return !1;
11665            var l,
11666              u,
11667              h = this._events[o],
11668              d = arguments.length;
11669            if (h.fn) {
11670              switch ((h.once && this.removeListener(t, h.fn, void 0, !0), d)) {
11671                case 1:
11672                  return h.fn.call(h.context), !0;
11673                case 2:
11674                  return h.fn.call(h.context, e), !0;
11675                case 3:
11676                  return h.fn.call(h.context, e, i), !0;
11677                case 4:
11678                  return h.fn.call(h.context, e, i, n), !0;
11679                case 5:
11680                  return h.fn.call(h.context, e, i, n, a), !0;
11681                case 6:
11682                  return h.fn.call(h.context, e, i, n, a, s), !0;
11683              }
11684              for (u = 1, l = new Array(d - 1); u < d; u++) l[u - 1] = arguments[u];
11685              h.fn.apply(h.context, l);
11686            } else {
11687              var c,
11688                f = h.length;
11689              for (u = 0; u < f; u++)
11690                switch ((h[u].once && this.removeListener(t, h[u].fn, void 0, !0), d)) {
11691                  case 1:
11692                    h[u].fn.call(h[u].context);
11693                    break;
11694                  case 2:
11695                    h[u].fn.call(h[u].context, e);
11696                    break;
11697                  case 3:
11698                    h[u].fn.call(h[u].context, e, i);
11699                    break;
11700                  case 4:
11701                    h[u].fn.call(h[u].context, e, i, n);
11702                    break;
11703                  default:
11704                    if (!l) for (c = 1, l = new Array(d - 1); c < d; c++) l[c - 1] = arguments[c];
11705                    h[u].fn.apply(h[u].context, l);
11706                }
11707            }
11708            return !0;
11709          }),
11710          (o.prototype.on = function (t, e, r) {
11711            return a(this, t, e, r, !1);
11712          }),
11713          (o.prototype.once = function (t, e, r) {
11714            return a(this, t, e, r, !0);
11715          }),
11716          (o.prototype.removeListener = function (t, e, i, n) {
11717            var a = r ? r + t : t;
11718            if (!this._events[a]) return this;
11719            if (!e) return s(this, a), this;
11720            var o = this._events[a];
11721            if (o.fn) o.fn !== e || (n && !o.once) || (i && o.context !== i) || s(this, a);
11722            else {
11723              for (var l = 0, u = [], h = o.length; l < h; l++)
11724                (o[l].fn !== e || (n && !o[l].once) || (i && o[l].context !== i)) && u.push(o[l]);
11725              u.length ? (this._events[a] = 1 === u.length ? u[0] : u) : s(this, a);
11726            }
11727            return this;
11728          }),
11729          (o.prototype.removeAllListeners = function (t) {
11730            var e;
11731            return (
11732              t
11733                ? ((e = r ? r + t : t), this._events[e] && s(this, e))
11734                : ((this._events = new i()), (this._eventsCount = 0)),
11735              this
11736            );
11737          }),
11738          (o.prototype.off = o.prototype.removeListener),
11739          (o.prototype.addListener = o.prototype.on),
11740          (o.prefixed = r),
11741          (o.EventEmitter = o),
11742          (t.exports = o);
11743      })(Hn);
11744      var Vn = v(Hn.exports);
11745      function Yn(t, e) {
11746        if (!((r = e.remuxResult).audio || r.video || r.text || r.id3 || r.initSegment)) return !1;
11747        var r,
11748          i = [],
11749          n = e.remuxResult,
11750          a = n.audio,
11751          s = n.video;
11752        return (
11753          a && Wn(i, a), s && Wn(i, s), t.postMessage({ event: 'transmuxComplete', data: e }, i), !0
11754        );
11755      }
11756      function Wn(t, e) {
11757        e.data1 && t.push(e.data1.buffer), e.data2 && t.push(e.data2.buffer);
11758      }
11759      function jn(t, e, r) {
11760        e.reduce(function (e, r) {
11761          return Yn(t, r) || e;
11762        }, !1) || t.postMessage({ event: 'transmuxComplete', data: e[0] }),
11763          t.postMessage({ event: 'flush', data: r });
11764      }
11765      void 0 !== e &&
11766        e &&
11767        (function (t) {
11768          var e = new Vn(),
11769            r = function (e, r) {
11770              t.postMessage({ event: e, data: r });
11771            };
11772          e.on(S.FRAG_DECRYPTED, r), e.on(S.ERROR, r);
11773          var i = function () {
11774            var t = function (t) {
11775              var e = function (e) {
11776                r('workerLog', { logType: t, message: e });
11777              };
11778              w[t] = e;
11779            };
11780            for (var e in w) t(e);
11781          };
11782          t.addEventListener('message', function (n) {
11783            var a = n.data;
11784            switch (a.cmd) {
11785              case 'init':
11786                var s = JSON.parse(a.config);
11787                (t.transmuxer = new Nn(e, a.typeSupported, s, '', a.id)),
11788                  I(s.debug, a.id),
11789                  i(),
11790                  r('init', null);
11791                break;
11792              case 'configure':
11793                t.transmuxer.configure(a.config);
11794                break;
11795              case 'demux':
11796                var o = t.transmuxer.push(a.data, a.decryptdata, a.chunkMeta, a.state);
11797                Bn(o)
11798                  ? ((t.transmuxer.async = !0),
11799                    o
11800                      .then(function (e) {
11801                        Yn(t, e);
11802                      })
11803                      .catch(function (t) {
11804                        r(S.ERROR, {
11805                          type: L.MEDIA_ERROR,
11806                          details: A.FRAG_PARSING_ERROR,
11807                          chunkMeta: a.chunkMeta,
11808                          fatal: !1,
11809                          error: t,
11810                          err: t,
11811                          reason: 'transmuxer-worker push error',
11812                        });
11813                      }))
11814                  : ((t.transmuxer.async = !1), Yn(t, o));
11815                break;
11816              case 'flush':
11817                var l = a.chunkMeta,
11818                  u = t.transmuxer.flush(l);
11819                Bn(u) || t.transmuxer.async
11820                  ? (Bn(u) || (u = Promise.resolve(u)),
11821                    u
11822                      .then(function (e) {
11823                        jn(t, e, l);
11824                      })
11825                      .catch(function (t) {
11826                        r(S.ERROR, {
11827                          type: L.MEDIA_ERROR,
11828                          details: A.FRAG_PARSING_ERROR,
11829                          chunkMeta: a.chunkMeta,
11830                          fatal: !1,
11831                          error: t,
11832                          err: t,
11833                          reason: 'transmuxer-worker flush error',
11834                        });
11835                      }))
11836                  : jn(t, u, l);
11837            }
11838          });
11839        })(self);
11840      var qn = (function () {
11841        function e(e, r, i, n) {
11842          var a = this;
11843          (this.error = null),
11844            (this.hls = void 0),
11845            (this.id = void 0),
11846            (this.observer = void 0),
11847            (this.frag = null),
11848            (this.part = null),
11849            (this.useWorker = void 0),
11850            (this.workerContext = null),
11851            (this.onwmsg = void 0),
11852            (this.transmuxer = null),
11853            (this.onTransmuxComplete = void 0),
11854            (this.onFlush = void 0);
11855          var s = e.config;
11856          (this.hls = e),
11857            (this.id = r),
11858            (this.useWorker = !!s.enableWorker),
11859            (this.onTransmuxComplete = i),
11860            (this.onFlush = n);
11861          var o = function (t, e) {
11862            ((e = e || {}).frag = a.frag),
11863              (e.id = a.id),
11864              t === S.ERROR && (a.error = e.error),
11865              a.hls.trigger(t, e);
11866          };
11867          (this.observer = new Vn()),
11868            this.observer.on(S.FRAG_DECRYPTED, o),
11869            this.observer.on(S.ERROR, o);
11870          var l,
11871            u,
11872            h,
11873            d,
11874            c = se(s.preferManagedMediaSource) || {
11875              isTypeSupported: function () {
11876                return !1;
11877              },
11878            },
11879            f = {
11880              mpeg: c.isTypeSupported('audio/mpeg'),
11881              mp3: c.isTypeSupported('audio/mp4; codecs="mp3"'),
11882              ac3: c.isTypeSupported('audio/mp4; codecs="ac-3"'),
11883            };
11884          if (!this.useWorker || 'undefined' == typeof Worker || (s.workerPath, 0))
11885            this.transmuxer = new Nn(this.observer, f, s, '', r);
11886          else
11887            try {
11888              s.workerPath
11889                ? (w.log('loading Web Worker ' + s.workerPath + ' for "' + r + '"'),
11890                  (this.workerContext =
11891                    ((h = s.workerPath),
11892                    (d = new self.URL(h, self.location.href).href),
11893                    { worker: new self.Worker(d), scriptURL: d })))
11894                : (w.log('injecting Web Worker for "' + r + '"'),
11895                  (this.workerContext =
11896                    ((l = new self.Blob(
11897                      [
11898                        'var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(' +
11899                          t.toString() +
11900                          ')(true);',
11901                      ],
11902                      { type: 'text/javascript' }
11903                    )),
11904                    (u = self.URL.createObjectURL(l)),
11905                    { worker: new self.Worker(u), objectURL: u }))),
11906                (this.onwmsg = function (t) {
11907                  return a.onWorkerMessage(t);
11908                });
11909              var g = this.workerContext.worker;
11910              g.addEventListener('message', this.onwmsg),
11911                (g.onerror = function (t) {
11912                  var e = new Error(t.message + '  (' + t.filename + ':' + t.lineno + ')');
11913                  (s.enableWorker = !1),
11914                    w.warn('Error in "' + r + '" Web Worker, fallback to inline'),
11915                    a.hls.trigger(S.ERROR, {
11916                      type: L.OTHER_ERROR,
11917                      details: A.INTERNAL_EXCEPTION,
11918                      fatal: !1,
11919                      event: 'demuxerWorker',
11920                      error: e,
11921                    });
11922                }),
11923                g.postMessage({
11924                  cmd: 'init',
11925                  typeSupported: f,
11926                  vendor: '',
11927                  id: r,
11928                  config: JSON.stringify(s),
11929                });
11930            } catch (t) {
11931              w.warn('Error setting up "' + r + '" Web Worker, fallback to inline', t),
11932                this.resetWorker(),
11933                (this.error = null),
11934                (this.transmuxer = new Nn(this.observer, f, s, '', r));
11935            }
11936        }
11937        var r = e.prototype;
11938        return (
11939          (r.resetWorker = function () {
11940            if (this.workerContext) {
11941              var t = this.workerContext,
11942                e = t.worker,
11943                r = t.objectURL;
11944              r && self.URL.revokeObjectURL(r),
11945                e.removeEventListener('message', this.onwmsg),
11946                (e.onerror = null),
11947                e.terminate(),
11948                (this.workerContext = null);
11949            }
11950          }),
11951          (r.destroy = function () {
11952            if (this.workerContext) this.resetWorker(), (this.onwmsg = void 0);
11953            else {
11954              var t = this.transmuxer;
11955              t && (t.destroy(), (this.transmuxer = null));
11956            }
11957            var e = this.observer;
11958            e && e.removeAllListeners(),
11959              (this.frag = null),
11960              (this.observer = null),
11961              (this.hls = null);
11962          }),
11963          (r.push = function (t, e, r, i, n, a, s, o, l, u) {
11964            var h,
11965              d,
11966              c = this;
11967            l.transmuxing.start = self.performance.now();
11968            var f = this.transmuxer,
11969              g = a ? a.start : n.start,
11970              v = n.decryptdata,
11971              m = this.frag,
11972              p = !(m && n.cc === m.cc),
11973              y = !(m && l.level === m.level),
11974              E = m ? l.sn - m.sn : -1,
11975              T = this.part ? l.part - this.part.index : -1,
11976              S = 0 === E && l.id > 1 && l.id === (null == m ? void 0 : m.stats.chunkCount),
11977              L = !y && (1 === E || (0 === E && (1 === T || (S && T <= 0)
11977))),
11978              A = self.performance.now();
11979            (y || E || 0 === n.stats.parsing.start) && (n.stats.parsing.start = A),
11980              !a || (!T && L) || (a.stats.parsing.start = A);
11981            var R = !(
11982                m &&
11983                (null == (h = n.initSegment) ? void 0 : h.url) ===
11984                  (null == (d = m.initSegment) ? void 0 : d.url)
11985              ),
11986              b = new Kn(p, L, o, y, g, R);
11987            if (!L || p || R) {
11988              w.log(
11989                '[transmuxer-interface, ' +
11990                  n.type +
11991                  ']: Starting new transmux session for sn: ' +
11992                  l.sn +
11993                  ' p: ' +
11994                  l.part +
11995                  ' level: ' +
11996                  l.level +
11997                  ' id: ' +
11998                  l.id +
11999                  '\n        discontinuity: ' +
12000                  p +
12001                  '\n        trackSwitch: ' +
12002                  y +
12003                  '\n        contiguous: ' +
12004                  L +
12005                  '\n        accurateTimeOffset: ' +
12006                  o +
12007                  '\n        timeOffset: ' +
12008                  g +
12009                  '\n        initSegmentChange: ' +
12010                  R
12011              );
12012              var k = new Gn(r, i, e, s, u);
12013              this.configureTransmuxer(k);
12014            }
12015            if (((this.frag = n), (this.part = a), this.workerContext))
12016              this.workerContext.worker.postMessage(
12017                { cmd: 'demux', data: t, decryptdata: v, chunkMeta: l, state: b },
12018                t instanceof ArrayBuffer ? [t] : []
12019              );
12020            else if (f) {
12021              var D = f.push(t, v, l, b);
12022              Bn(D)
12023                ? ((f.async = !0),
12024                  D.then(function (t) {
12025                    c.handleTransmuxComplete(t);
12026                  }).catch(function (t) {
12027                    c.transmuxerError(t, l, 'transmuxer-interface push error');
12028                  }))
12029                : ((f.async = !1), this.handleTransmuxComplete(D));
12030            }
12031          }),
12032          (r.flush = function (t) {
12033            var e = this;
12034            t.transmuxing.start = self.performance.now();
12035            var r = this.transmuxer;
12036            if (this.workerContext)
12037              this.workerContext.worker.postMessage({ cmd: 'flush', chunkMeta: t });
12038            else if (r) {
12039              var i = r.flush(t);
12040              Bn(i) || r.async
12041                ? (Bn(i) || (i = Promise.resolve(i)),
12042                  i
12043                    .then(function (r) {
12044                      e.handleFlushResult(r, t);
12045                    })
12046                    .catch(function (r) {
12047                      e.transmuxerError(r, t, 'transmuxer-interface flush error');
12048                    }))
12049                : this.handleFlushResult(i, t);
12050            }
12051          }),
12052          (r.transmuxerError = function (t, e, r) {
12053            this.hls &&
12054              ((this.error = t),
12055              this.hls.trigger(S.ERROR, {
12056                type: L.MEDIA_ERROR,
12057                details: A.FRAG_PARSING_ERROR,
12058                chunkMeta: e,
12059                frag: this.frag || void 0,
12060                fatal: !1,
12061                error: t,
12062                err: t,
12063                reason: r,
12064              }));
12065          }),
12066          (r.handleFlushResult = function (t, e) {
12067            var r = this;
12068            t.forEach(function (t) {
12069              r.handleTransmuxComplete(t);
12070            }),
12071              this.onFlush(e);
12072          }),
12073          (r.onWorkerMessage = function (t) {
12074            var e = t.data;
12075            if (null != e && e.event) {
12076              var r = this.hls;
12077              if (this.hls)
12078                switch (e.event) {
12079                  case 'init':
12080                    var i,
12081                      n = null == (i = this.workerContext) ? void 0 : i.objectURL;
12082                    n && self.URL.revokeObjectURL(n);
12083                    break;
12084                  case 'transmuxComplete':
12085                    this.handleTransmuxComplete(e.data);
12086                    break;
12087                  case 'flush':
12088                    this.onFlush(e.data);
12089                    break;
12090                  case 'workerLog':
12091                    w[e.data.logType] && w[e.data.logType](e.data.message);
12092                    break;
12093                  default:
12094                    (e.data = e.data || {}),
12095                      (e.data.frag = this.frag),
12096                      (e.data.id = this.id),
12097                      r.trigger(e.event, e.data);
12098                }
12099            } else w.warn('worker message received with no ' + (e ? 'event name' : 'data'));
12100          }),
12101          (r.configureTransmuxer = function (t) {
12102            var e = this.transmuxer;
12103            this.workerContext
12104              ? this.workerContext.worker.postMessage({ cmd: 'configure', config: t })
12105              : e && e.configure(t);
12106          }),
12107          (r.handleTransmuxComplete = function (t) {
12108            (t.chunkMeta.transmuxing.end = self.performance.now()), this.onTransmuxComplete(t);
12109          }),
12110          e
12111        );
12112      })();
12113      function Xn(t, e) {
12114        if (t.length !== e.length) return !1;
12115        for (var r = 0; r < t.length; r++) if (!zn(t[r].attrs, e[r].attrs)) return !1;
12116        return !0;
12117      }
12118      function zn(t, e, r) {
12119        var i = t['STABLE-RENDITION-ID'];
12120        return i && !r
12121          ? i === e['STABLE-RENDITION-ID']
12122          : !(
12123              r || [
12124                'LANGUAGE',
12125                'NAME',
12126                'CHARACTERISTICS',
12127                'AUTOSELECT',
12128                'DEFAULT',
12129                'FORCED',
12130                'ASSOC-LANGUAGE',
12131              ]
12132            ).some(function (r) {
12133              return t[r] !== e[r];
12134            });
12135      }
12136      function Qn(t, e) {
12137        return (
12138          e.label.toLowerCase() === t.name.toLowerCase() &&
12139          (!e.language || e.language.toLowerCase() === (t.lang || '').toLowerCase())
12140        );
12141      }
12142      var Jn = (function (t) {
12143          function e(e, r, i) {
12144            var n;
12145            return (
12146              ((n = t.call(this, e, r, i, '[audio-stream-controller]', Me) || this).videoBuffer =
12147                null),
12148              (n.videoTrackCC = -1),
12149              (n.waitingVideoCC = -1),
12150              (n.bufferedTrack = null),
12151              (n.switchingTrack = null),
12152              (n.trackId = -1),
12153              (n.waitingData = null),
12154              (n.mainDetails = null),
12155              (n.flushing = !1),
12156              (n.bufferFlushed = !1),
12157              (n.cachedTrackLoadedData = null),
12158              n._registerListeners(),
12159              n
12160            );
12161          }
12162          l(e, t);
12163          var r = e.prototype;
12164          return (
12165            (r.onHandlerDestroying = function () {
12166              this._unregisterListeners(),
12167                t.prototype.onHandlerDestroying.call(this),
12168                (this.mainDetails = null),
12169                (this.bufferedTrack = null),
12170                (this.switchingTrack = null);
12171            }),
12172            (r._registerListeners = function () {
12173              var t = this.hls;
12174              t.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
12175                t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
12176                t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
12177                t.on(S.LEVEL_LOADED, this.onLevelLoaded, this),
12178                t.on(S.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this),
12179                t.on(S.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this),
12180                t.on(S.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this),
12181                t.on(S.ERROR, this.onError, this),
12182                t.on(S.BUFFER_RESET, this.onBufferReset, this),
12183                t.on(S.BUFFER_CREATED, this.onBufferCreated, this),
12184                t.on(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
12185                t.on(S.BUFFER_FLUSHED, this.onBufferFlushed, this),
12186                t.on(S.INIT_PTS_FOUND, this.onInitPtsFound, this),
12187                t.on(S.FRAG_BUFFERED, this.onFragBuffered, this);
12188            }),
12189            (r._unregisterListeners = function () {
12190              var t = this.hls;
12191              t.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
12192                t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
12193                t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
12194                t.off(S.LEVEL_LOADED, this.onLevelLoaded, this),
12195                t.off(S.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this),
12196                t.off(S.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this),
12197                t.off(S.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this),
12198                t.off(S.ERROR, this.onError, this),
12199                t.off(S.BUFFER_RESET, this.onBufferReset, this),
12200                t.off(S.BUFFER_CREATED, this.onBufferCreated, this),
12201                t.off(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
12202                t.off(S.BUFFER_FLUSHED, this.onBufferFlushed, this),
12203                t.off(S.INIT_PTS_FOUND, this.onInitPtsFound, this),
12204                t.off(S.FRAG_BUFFERED, this.onFragBuffered, this);
12205            }),
12206            (r.onInitPtsFound = function (t, e) {
12207              var r = e.frag,
12208                i = e.id,
12209                n = e.initPTS,
12210                a = e.timescale;
12211              if ('main' === i) {
12212                var s = r.cc;
12213                (this.initPTS[r.cc] = { baseTime: n, timescale: a }),
12214                  this.log('InitPTS for cc: ' + s + ' found from main: ' + n),
12215                  (this.videoTrackCC = s),
12216                  this.state === wi && this.tick();
12217              }
12218            }),
12219            (r.startLoad = function (t) {
12220              if (!this.levels) return (this.startPosition = t), void (this.state = Ei);
12221              var e = this.lastCurrentTime;
12222              this.stopLoad(),
12223                this.setInterval(100),
12224                e > 0 && -1 === t
12225                  ? (this.log('Override startPosition with lastCurrentTime @' + e.toFixed(3)),
12226                    (t = e),
12227                    (this.state = Ti))
12228                  : ((this.loadedmetadata = !1), (this.state = Ri)),
12229                (this.nextLoadPosition = this.startPosition = this.lastCurrentTime = t),
12230                this.tick();
12231            }),
12232            (r.doTick = function () {
12233              switch (this.state) {
12234                case Ti:
12235                  this.doTickIdle();
12236                  break;
12237                case Ri:
12238                  var e,
12239                    r = this.levels,
12240                    i = this.trackId,
12241                    n = null == r || null == (e = r[i]) ? void 0 : e.details;
12242                  if (n) {
12243                    if (this.waitForCdnTuneIn(n)) break;
12244                    this.state = wi;
12245                  }
12246                  break;
12247                case Ai:
12248                  var a,
12249                    s = performance.now(),
12250                    o = this.retryDate;
12251                  if (!o || s >= o || (null != (a = this.media) && a.seeking)) {
12252                    var l = this.levels,
12253                      u = this.trackId;
12254                    this.log('RetryDate reached, switch back to IDLE state'),
12255                      this.resetStartWhenNotLoaded((null == l ? void 0 : l[u]) || null),
12256                      (this.state = Ti);
12257                  }
12258                  break;
12259                case wi:
12260                  var h = this.waitingData;
12261                  if (h) {
12262                    var d = h.frag,
12263                      c = h.part,
12264                      f = h.cache,
12265                      g = h.complete;
12266                    if (void 0 !== this.initPTS[d.cc]) {
12267                      (this.waitingData = null), (this.waitingVideoCC = -1), (this.state = Li);
12268                      var v = { frag: d, part: c, payload: f.flush(), networkDetails: null };
12269                      this._handleFragmentLoadProgress(v),
12270                        g && t.prototype._handleFragmentLoadComplete.call(this, v);
12271                    } else if (this.videoTrackCC !== this.waitingVideoCC)
12272                      this.log(
12273                        'Waiting fragment cc (' +
12274                          d.cc +
12275                          ') cancelled because video is at cc ' +
12276                          this.videoTrackCC
12277                      ),
12278                        this.clearWaitingFragment();
12279                    else {
12280                      var m = this.getLoadPosition(),
12281                        p = ri.bufferInfo(this.mediaBuffer, m, this.config.maxBufferHole);
12282                      Rr(p.end, this.config.maxFragLookUpTolerance, d) < 0 &&
12283                        (this.log(
12284                          'Waiting fragment cc (' +
12285                            d.cc +
12286                            ') @ ' +
12287                            d.start +
12288                            ' cancelled because another fragment at ' +
12289                            p.end +
12290                            ' is needed'
12291                        ),
12292                        this.clearWaitingFragment());
12293                    }
12294                  } else this.state = Ti;
12295              }
12296              this.onTickEnd();
12297            }),
12298            (r.clearWaitingFragment = function () {
12299              var t = this.waitingData;
12300              t &&
12301                (this.fragmentTracker.removeFragment(t.frag),
12302                (this.waitingData = null),
12303                (this.waitingVideoCC = -1),
12304                (this.state = Ti));
12305            }),
12306            (r.resetLoadingState = function () {
12307              this.clearWaitingFragment(), t.prototype.resetLoadingState.call(this);
12308            }),
12309            (r.onTickEnd = function () {
12310              var t = this.media;
12311              null != t && t.readyState && (this.lastCurrentTime = t.currentTime);
12312            }),
12313            (r.doTickIdle = function () {
12314              var t = this.hls,
12315                e = this.levels,
12316                r = this.media,
12317                i = this.trackId,
12318                n = t.config;
12319              if (
12320                this.buffering &&
12321                (r || (!this.startFragRequested && n.startFragPrefetch)) &&
12322                null != e &&
12323                e[i]
12324              ) {
12325                var a = e[i],
12326                  s = a.details;
12327                if (!s || (s.live && this.levelLastLoaded !== a) || this.waitForCdnTuneIn(s))
12328                  this.state = Ri;
12329                else {
12330                  var o = this.mediaBuffer ? this.mediaBuffer : this.media;
12331                  this.bufferFlushed &&
12332                    o &&
12333                    ((this.bufferFlushed = !1), this.afterBufferFlushed(o, O, Me));
12334                  var l = this.getFwdBufferInfo(o, Me);
12335                  if (null !== l) {
12336                    var u = this.bufferedTrack,
12337                      h = this.switchingTrack;
12338                    if (!h && this._streamEnded(l, s))
12339                      return t.trigger(S.BUFFER_EOS, { type: 'audio' }), void (this.state = Di);
12340                    var d = this.getFwdBufferInfo(
12341                        this.videoBuffer ? this.videoBuffer : this.media,
12342                        Fe
12343                      ),
12344                      c = l.len,
12345                      f = this.getMaxBufferLength(null == d ? void 0 : d.len),
12346                      g = s.fragments,
12347                      v = g[0].start,
12348                      m = this.flushing ? this.getLoadPosition() : l.end;
12349                    if (h && r) {
12350                      var p = this.getLoadPosition();
12351                      u && !zn(h.attrs, u.attrs) && (m = p),
12352                        s.PTSKnown &&
12353                          p < v &&
12354                          (l.end > v || l.nextStart) &&
12355                          (this.log(
12356                            'Alt audio track ahead of main track, seek to start of alt audio track'
12357                          ),
12358                          (r.currentTime = v + 0.05));
12359                    }
12360                    if (!(c >= f && !h && m < g[g.length - 1].start)) {
12361                      var y = this.getNextFragment(m, s),
12362                        E = !1;
12363                      if (
12364                        (y &&
12365                          this.isLoopLoading(y, m) &&
12366                          ((E = !!y.gap), (y = this.getNextFragmentLoopLoading(y, s, l, Fe, f))),
12367                        y)
12368                      ) {
12369                        var T = d && y.start > d.end + s.targetduration;
12370                        if (T || ((null == d || !d.len) && l.len)) {
12371                          var L = this.getAppendedFrag(y.start, Fe);
12372                          if (null === L) return;
12373                          if (
12374                            (E || (E = !!L.gap || (!!T && 0 === d.len)),
12375                            (T && !E) || (E && l.nextStart && l.nextStart < L.end))
12376                          )
12377                            return;
12378                        }
12379                        this.loadFragment(y, a, m);
12380                      } else this.bufferFlushed = !0;
12381                    }
12382                  }
12383                }
12384              }
12385            }),
12386            (r.getMaxBufferLength = function (e) {
12387              var r = t.prototype.getMaxBufferLength.call(this);
12388              return e ? Math.min(Math.max(r, e), this.config.maxMaxBufferLength) : r;
12389            }),
12390            (r.onMediaDetaching = function () {
12391              (this.videoBuffer = null),
12392                (this.bufferFlushed = this.flushing = !1),
12393                t.prototype.onMediaDetaching.call(this);
12394            }),
12395            (r.onAudioTracksUpdated = function (t, e) {
12396              var r = e.audioTracks;
12397              this.resetTransmuxer(),
12398                (this.levels = r.map(function (t) {
12399                  return new or(t);
12400                }));
12401            }),
12402            (r.onAudioTrackSwitching = function (t, e) {
12403              var r = !!e.url;
12404              this.trackId = e.id;
12405              var i = this.fragCurrent;
12406              i && (i.abortRequests(), this.removeUnbufferedFrags(i.start)),
12407                this.resetLoadingState(),
12408                r ? this.setInterval(100) : this.resetTransmuxer(),
12409                r
12410                  ? ((this.switchingTrack = e), (this.state = Ti), this.flushAudioIfNeeded(e))
12411                  : ((this.switchingTrack = null), (this.bufferedTrack = e), (this.state = Ei)),
12412                this.tick();
12413            }),
12414            (r.onManifestLoading = function () {
12415              this.fragmentTracker.removeAllFragments(),
12416                (this.startPosition = this.lastCurrentTime = 0),
12417                (this.bufferFlushed = this.flushing = !1),
12418                (this.levels =
12419                  this.mainDetails =
12420                  this.waitingData =
12421                  this.bufferedTrack =
12422                  this.cachedTrackLoadedData =
12423                  this.switchingTrack =
12424                    null),
12425                (this.startFragRequested = !1),
12426                (this.trackId = this.videoTrackCC = this.waitingVideoCC = -1);
12427            }),
12428            (r.onLevelLoaded = function (t, e) {
12429              (this.mainDetails = e.details),
12430                null !== this.cachedTrackLoadedData &&
12431                  (this.hls.trigger(S.AUDIO_TRACK_LOADED, this.cachedTrackLoadedData),
12432                  (this.cachedTrackLoadedData = null));
12433            }),
12434            (r.onAudioTrackLoaded = function (t, e) {
12435              var r;
12436              if (null != this.mainDetails) {
12437                var i = this.levels,
12438                  n = e.details,
12439                  a = e.id;
12440                if (i) {
12441                  this.log(
12442                    'Audio track ' +
12443                      a +
12444                      ' loaded [' +
12445                      n.startSN +
12446                      ',' +
12447                      n.endSN +
12448                      ']' +
12449                      (n.lastPartSn ? '[part-' + n.lastPartSn + '-' + n.lastPartIndex + ']' : '') +
12450                      ',duration:' +
12451                      n.totalduration
12452                  );
12453                  var s = i[a],
12454                    o = 0;
12455                  if (n.live || (null != (r = s.details) && r.live)) {
12456                    this.checkLiveUpdate(n);
12457                    var l,
12458                      u = this.mainDetails;
12459                    if (n.deltaUpdateFailed || !u) return;
12460                    !s.details && n.hasProgramDateTime && u.hasProgramDateTime
12461                      ? (li(n, u), (o = n.fragments[0].start))
12462                      : (o = this.alignPlaylists(
12463                          n,
12464                          s.details,
12465                          null == (l = this.levelLastLoaded) ? void 0 : l.details
12466                        ));
12467                  }
12468                  (s.details = n),
12469                    (this.levelLastLoaded = s),
12470                    this.startFragRequested ||
12471                      (!this.mainDetails && n.live) ||
12472                      this.setStartPosition(this.mainDetails || n, o),
12473                    this.state !== Ri || this.waitForCdnTuneIn(n) || (this.state = Ti),
12474                    this.tick();
12475                } else this.warn('Audio tracks were reset while loading level ' + a);
12476              } else this.cachedTrackLoadedData = e;
12477            }),
12478            (r._handleFragmentLoadProgress = function (t) {
12479              var e,
12480                r = t.frag,
12481                i = t.part,
12482                n = t.payload,
12483                a = this.config,
12484                s = this.trackId,
12485                o = this.levels;
12486              if (o) {
12487                var l = o[s];
12488                if (l) {
12489                  var u = l.details;
12490                  if (!u)
12491                    return (
12492                      this.warn('Audio track details undefined on fragment load progress'),
12493                      void this.removeUnbufferedFrags(r.start)
12494                    );
12495                  var h = a.defaultAudioCodec || l.audioCodec || 'mp4a.40.2',
12496                    d = this.transmuxer;
12497                  d ||
12498                    (d = this.transmuxer =
12499                      new qn(
12500                        this.hls,
12501                        Me,
12502                        this._handleTransmuxComplete.bind(this),
12503                        this._handleTransmuxerFlush.bind(this)
12504                      ));
12505                  var c = this.initPTS[r.cc],
12506                    f = null == (e = r.initSegment) ? void 0 : e.data;
12507                  if (void 0 !== c) {
12508                    var g = i ? i.index : -1,
12509                      v = -1 !== g,
12510                      m = new ii(r.level, r.sn, r.stats.chunkCount, n.byteLength, g, v);
12511                    d.push(n, f, h, '', r, i, u.totalduration, !1, m, c);
12512                  } else
12513                    this.log(
12514                      'Unknown video PTS for cc ' +
12515                        r.cc +
12516                        ', waiting for video PTS before demuxing audio frag ' +
12517                        r.sn +
12518                        ' of [' +
12519                        u.startSN +
12520                        ' ,' +
12521                        u.endSN +
12522                        '],track ' +
12523                        s
12524                    ),
12525                      (this.waitingData = this.waitingData || {
12526                        frag: r,
12527                        part: i,
12528                        cache: new xi(),
12529                        complete: !1,
12530                      }).cache.push(new Uint8Array(n)),
12531                      (this.waitingVideoCC = this.videoTrackCC),
12532                      (this.state = wi);
12533                } else this.warn('Audio track is undefined on fragment load progress');
12534              } else
12535                this.warn(
12536                  'Audio tracks were reset while fragment load was in progress. Fragment ' +
12537                    r.sn +
12538                    ' of level ' +
12539                    r.level +
12540                    ' will not be buffered'
12541                );
12542            }),
12543            (r._handleFragmentLoadComplete = function (e) {
12544              this.waitingData
12545                ? (this.waitingData.complete = !0)
12546                : t.prototype._handleFragmentLoadComplete.call(this, e);
12547            }),
12548            (r.onBufferReset = function () {
12549              (this.mediaBuffer = this.videoBuffer = null), (this.loadedmetadata = !1);
12550            }),
12551            (r.onBufferCreated = function (t, e) {
12552              var r = e.tracks.audio;
12553              r && (this.mediaBuffer = r.buffer || null),
12554                e.tracks.video && (this.videoBuffer = e.tracks.video.buffer || null);
12555            }),
12556            (r.onFragBuffered = function (t, e) {
12557              var r = e.frag,
12558                n = e.part;
12559              if (r.type === Me)
12560                if (this.fragContextChanged(r))
12561                  this.warn(
12562                    'Fragment ' +
12563                      r.sn +
12564                      (n ? ' p: ' + n.index : '') +
12565                      ' of level ' +
12566                      r.level +
12567                      ' finished buffering, but was aborted. state: ' +
12568                      this.state +
12569                      ', audioSwitch: ' +
12570                      (this.switchingTrack ? this.switchingTrack.name : 'false')
12571                  );
12572                else {
12573                  if ('initSegment' !== r.sn) {
12574                    this.fragPrevious = r;
12575                    var a = this.switchingTrack;
12576                    a &&
12577                      ((this.bufferedTrack = a),
12578                      (this.switchingTrack = null),
12579                      this.hls.trigger(S.AUDIO_TRACK_SWITCHED, i({}, a)));
12580                  }
12581                  this.fragBufferedComplete(r, n);
12582                }
12583              else if (!this.loadedmetadata && r.type === Fe) {
12584                var s = this.videoBuffer || this.media;
12585                s && ri.getBuffered(s).length && (this.loadedmetadata = !0);
12586              }
12587            }),
12588            (r.onError = function (e, r) {
12589              var i;
12590              if (r.fatal) this.state = Ii;
12591              else
12592                switch (r.details) {
12593                  case A.FRAG_GAP:
12594                  case A.FRAG_PARSING_ERROR:
12595                  case A.FRAG_DECRYPT_ERROR:
12596                  case A.FRAG_LOAD_ERROR:
12597                  case A.FRAG_LOAD_TIMEOUT:
12598                  case A.KEY_LOAD_ERROR:
12599                  case A.KEY_LOAD_TIMEOUT:
12600                    this.onFragmentOrKeyLoadError(Me, r);
12601                    break;
12602                  case A.AUDIO_TRACK_LOAD_ERROR:
12603                  case A.AUDIO_TRACK_LOAD_TIMEOUT:
12604                  case A.LEVEL_PARSING_ERROR:
12605                    r.levelRetry ||
12606                      this.state !== Ri ||
12607                      (null == (i = r.context) ? void 0 : i.type) !== xe ||
12608                      (this.state = Ti);
12609                    break;
12610                  case A.BUFFER_APPEND_ERROR:
12611                  case A.BUFFER_FULL_ERROR:
12612                    if (!r.parent || 'audio' !== r.parent) return;
12613                    if (r.details === A.BUFFER_APPEND_ERROR) return void this.resetLoadingState();
12614                    this.reduceLengthAndFlushBuffer(r) &&
12615                      ((this.bufferedTrack = null),
12616                      t.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, 'audio'));
12617                    break;
12618                  case A.INTERNAL_EXCEPTION:
12619                    this.recoverWorkerError(r);
12620                }
12621            }),
12622            (r.onBufferFlushing = function (t, e) {
12623              e.type !== N && (this.flushing = !0);
12624            }),
12625            (r.onBufferFlushed = function (t, e) {
12626              var r = e.type;
12627              if (r !== N) {
12628                (this.flushing = !1),
12629                  (this.bufferFlushed = !0),
12630                  this.state === Di && (this.state = Ti);
12631                var i = this.mediaBuffer || this.media;
12632                i && (this.afterBufferFlushed(i, r, Me), this.tick());
12633              }
12634            }),
12635            (r._handleTransmuxComplete = function (t) {
12636              var e,
12637                r = 'audio',
12638                i = this.hls,
12639                n = t.remuxResult,
12640                a = t.chunkMeta,
12641                s = this.getCurrentContext(a);
12642              if (s) {
12643                var l = s.frag,
12644                  u = s.part,
12645                  h = s.level,
12646                  d = h.details,
12647                  c = n.audio,
12648                  f = n.text,
12649                  g = n.id3,
12650                  v = n.initSegment;
12651                if (!this.fragContextChanged(l) && d) {
12652                  if (
12653                    ((this.state = bi),
12654                    this.switchingTrack && c && this.completeAudioSwitch(this.switchingTrack),
12655                    null != v && v.tracks)
12656                  ) {
12657                    var m = l.initSegment || l;
12658                    this._bufferInitSegment(h, v.tracks, m, a),
12659                      i.trigger(S.FRAG_PARSING_INIT_SEGMENT, { frag: m, id: r, tracks: v.tracks });
12660                  }
12661                  if (c) {
12662                    var p = c.startPTS,
12663                      y = c.endPTS,
12664                      E = c.startDTS,
12665                      T = c.endDTS;
12666                    u &&
12667                      (u.elementaryStreams[O] = { startPTS: p, endPTS: y, startDTS: E, endDTS: T }),
12668                      l.setElementaryStreamInfo(O, p, y, E, T),
12669                      this.bufferFragmentData(c, l, u, a);
12670                  }
12671                  if (null != g && null != (e = g.samples) && e.length) {
12672                    var L = o({ id: r, frag: l, details: d }, g);
12673                    i.trigger(S.FRAG_PARSING_METADATA, L);
12674                  }
12675                  if (f) {
12676                    var A = o({ id: r, frag: l, details: d }, f);
12677                    i.trigger(S.FRAG_PARSING_USERDATA, A);
12678                  }
12679                } else this.fragmentTracker.removeFragment(l);
12680              } else this.resetWhenMissingContext(a);
12681            }),
12682            (r._bufferInitSegment = function (t, e, r, i) {
12683              if (this.state === bi) {
12684                e.video && delete e.video;
12685                var n = e.audio;
12686                if (n) {
12687                  n.id = 'audio';
12688                  var a = t.audioCodec;
12689                  this.log(
12690                    'Init audio buffer, container:' +
12691                      n.container +
12692                      ', codecs[level/parsed]=[' +
12693                      a +
12694                      '/' +
12695                      n.codec +
12696                      ']'
12697                  ),
12698                    a && 1 === a.split(',').length && (n.levelCodec = a),
12699                    this.hls.trigger(S.BUFFER_CODECS, e);
12700                  var s = n.initSegment;
12701                  if (null != s && s.byteLength) {
12702                    var o = {
12703                      type: 'audio',
12704                      frag: r,
12705                      part: null,
12706                      chunkMeta: i,
12707                      parent: r.type,
12708                      data: s,
12709                    };
12710                    this.hls.trigger(S.BUFFER_APPENDING, o);
12711                  }
12712                  this.tickImmediate();
12713                }
12714              }
12715            }),
12716            (r.loadFragment = function (e, r, i) {
12717              var n,
12718                a = this.fragmentTracker.getState(e);
12719              if (((this.fragCurrent = e), this.switchingTrack || a === Xr || a === Qr))
12720                if ('initSegment' === e.sn) this._loadInitSegment(e, r);
12721                else if (null != (n = r.details) && n.live && !this.initPTS[e.cc]) {
12722                  this.log(
12723                    'Waiting for video PTS in continuity counter ' +
12724                      e.cc +
12725                      ' of live stream before loading audio fragment ' +
12726                      e.sn +
12727                      ' of level ' +
12728                      this.trackId
12729                  ),
12730                    (this.state = wi);
12731                  var s = this.mainDetails;
12732                  s && s.fragments[0].start !== r.details.fragments[0].start && li(r.details, s);
12733                } else (this.startFragRequested = !0), t.prototype.loadFragment.call(this, e, r, i);
12734              else this.clearTrackerIfNeeded(e);
12735            }),
12736            (r.flushAudioIfNeeded = function (e) {
12737              var r = this.media,
12738                i = this.bufferedTrack,
12739                n = null == i ? void 0 : i.attrs,
12740                a = e.attrs;
12741              r &&
12742                n &&
12743                (n.CHANNELS !== a.CHANNELS || i.name !== e.name || i.lang !== e.lang) &&
12744                (this.log('Switching audio track : flushing all audio'),
12745                t.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, 'audio'),
12746                (this.bufferedTrack = null));
12747            }),
12748            (r.completeAudioSwitch = function (t) {
12749              var e = this.hls;
12750              this.flushAudioIfNeeded(t),
12751                (this.bufferedTrack = t),
12752                (this.switchingTrack = null),
12753                e.trigger(S.AUDIO_TRACK_SWITCHED, i({}, t));
12754            }),
12755            e
12756          );
12757        })(_i),
12758        $n = (function (t) {
12759          function e(e) {
12760            var r;
12761            return (
12762              ((r = t.call(this, e, '[audio-track-controller]') || this).tracks = []),
12763              (r.groupIds = null),
12764              (r.tracksInGroup = []),
12765              (r.trackId = -1),
12766              (r.currentTrack = null),
12767              (r.selectDefaultTrack = !0),
12768              r.registerListeners(),
12769              r
12770            );
12771          }
12772          l(e, t);
12773          var r = e.prototype;
12774          return (
12775            (r.registerListeners = function () {
12776              var t = this.hls;
12777              t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
12778                t.on(S.MANIFEST_PARSED, this.onManifestParsed, this),
12779                t.on(S.LEVEL_LOADING, this.onLevelLoading, this),
12780                t.on(S.LEVEL_SWITCHING, this.onLevelSwitching, this),
12781                t.on(S.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this),
12782                t.on(S.ERROR, this.onError, this);
12783            }),
12784            (r.unregisterListeners = function () {
12785              var t = this.hls;
12786              t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
12787                t.off(S.MANIFEST_PARSED, this.onManifestParsed, this),
12788                t.off(S.LEVEL_LOADING, this.onLevelLoading, this),
12789                t.off(S.LEVEL_SWITCHING, this.onLevelSwitching, this),
12790                t.off(S.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this),
12791                t.off(S.ERROR, this.onError, this);
12792            }),
12793            (r.destroy = function () {
12794              this.unregisterListeners(),
12795                (this.tracks.length = 0),
12796                (this.tracksInGroup.length = 0),
12797                (this.currentTrack = null),
12798                t.prototype.destroy.call(this);
12799            }),
12800            (r.onManifestLoading = function () {
12801              (this.tracks = []),
12802                (this.tracksInGroup = []),
12803                (this.groupIds = null),
12804                (this.currentTrack = null),
12805                (this.trackId = -1),
12806                (this.selectDefaultTrack = !0);
12807            }),
12808            (r.onManifestParsed = function (t, e) {
12809              this.tracks = e.audioTracks || [];
12810            }),
12811            (r.onAudioTrackLoaded = function (t, e) {
12812              var r = e.id,
12813                i = e.groupId,
12814                n = e.details,
12815                a = this.tracksInGroup[r];
12816              if (a && a.groupId === i) {
12817                var s = a.details;
12818                (a.details = e.details),
12819                  this.log(
12820                    'Audio track ' +
12821                      r +
12822                      ' "' +
12823                      a.name +
12824                      '" lang:' +
12825                      a.lang +
12826                      ' group:' +
12827                      i +
12828                      ' loaded [' +
12829                      n.startSN +
12830                      '-' +
12831                      n.endSN +
12832                      ']'
12833                  ),
12834                  r === this.trackId && this.playlistLoaded(r, e, s);
12835              } else
12836                this.warn(
12837                  'Audio track with id:' +
12838                    r +
12839                    ' and group:' +
12840                    i +
12841                    ' not found in active group ' +
12842                    (null == a ? void 0 : a.groupId)
12843                );
12844            }),
12845            (r.onLevelLoading = function (t, e) {
12846              this.switchLevel(e.level);
12847            }),
12848            (r.onLevelSwitching = function (t, e) {
12849              this.switchLevel(e.level);
12850            }),
12851            (r.switchLevel = function (t) {
12852              var e = this.hls.levels[t];
12853              if (e) {
12854                var r = e.audioGroups || null,
12855                  i = this.groupIds,
12856                  n = this.currentTrack;
12857                if (
12858                  !r ||
12859                  (null == i ? void 0 : i.length) !== (null == r ? void 0 : r.length) ||
12860                  (null != r &&
12861                    r.some(function (t) {
12862                      return -1 === (null == i ? void 0 : i.indexOf(t));
12863                    }))
12864                ) {
12865                  (this.groupIds = r), (this.trackId = -1), (this.currentTrack = null);
12866                  var a = this.tracks.filter(function (t) {
12867                    return !r || -1 !== r.indexOf(t.groupId);
12868                  });
12869                  if (a.length)
12870                    this.selectDefaultTrack &&
12871                      !a.some(function (t) {
12872                        return t.default;
12873                      }) &&
12874                      (this.selectDefaultTrack = !1),
12875                      a.forEach(function (t, e) {
12876                        t.id = e;
12877                      });
12878                  else if (!n && !this.tracksInGroup.length) return;
12879                  this.tracksInGroup = a;
12880                  var s = this.hls.config.audioPreference;
12881                  if (!n && s) {
12882                    var o = Hr(s, a, Yr);
12883                    if (o > -1) n = a[o];
12884                    else {
12885                      var l = Hr(s, this.tracks);
12886                      n = this.tracks[l];
12887                    }
12888                  }
12889                  var u = this.findTrackId(n);
12890                  -1 === u && n && (u = this.findTrackId(null));
12891                  var h = { audioTracks: a };
12892                  this.log(
12893                    'Updating audio tracks, ' +
12894                      a.length +
12895                      ' track(s) found in group(s): ' +
12896                      (null == r ? void 0 : r.join(','))
12897                  ),
12898                    this.hls.trigger(S.AUDIO_TRACKS_UPDATED, h);
12899                  var d = this.trackId;
12900                  if (-1 !== u && -1 === d) this.setAudioTrack(u);
12901                  else if (a.length && -1 === d) {
12902                    var c,
12903                      f = new Error(
12904                        'No audio track selected for current audio group-ID(s): ' +
12905                          (null == (c = this.groupIds) ? void 0 : c.join(',')) +
12906                          ' track count: ' +
12907                          a.length
12908                      );
12909                    this.warn(f.message),
12910                      this.hls.trigger(S.ERROR, {
12911                        type: L.MEDIA_ERROR,
12912                        details: A.AUDIO_TRACK_LOAD_ERROR,
12913                        fatal: !0,
12914                        error: f,
12915                      });
12916                  }
12917                } else this.shouldReloadPlaylist(n) && this.setAudioTrack(this.trackId);
12918              }
12919            }),
12920            (r.onError = function (t, e) {
12921              !e.fatal &&
12922                e.context &&
12923                (e.context.type !== xe ||
12924                  e.context.id !== this.trackId ||
12925                  (this.groupIds && -1 === this.groupIds.indexOf(e.context.groupId)) ||
12926                  ((this.requestScheduled = -1), this.checkRetry(e)));
12927            }),
12928            (r.setAudioOption = function (t) {
12929              var e = this.hls;
12930              if (((e.config.audioPreference = t), t)) {
12931                var r = this.allAudioTracks;
12932                if (((this.selectDefaultTrack = !1), r.length)) {
12933                  var i = this.currentTrack;
12934                  if (i && Vr(t, i, Yr)) return i;
12935                  var n = Hr(t, this.tracksInGroup, Yr);
12936                  if (n > -1) {
12937                    var a = this.tracksInGroup[n];
12938                    return this.setAudioTrack(n), a;
12939                  }
12940                  if (i) {
12941                    var s = e.loadLevel;
12942                    -1 === s && (s = e.firstAutoLevel);
12943                    var o = (function (t, e, r, i, n) {
12944                      var a = e[i],
12945                        s = e.reduce(function (t, e, r) {
12946                          var i = e.uri;
12947                          return (t[i] || (t[i] = [])).push(r), t;
12948                        }, {})[a.uri];
12949                      s.length > 1 && (i = Math.max.apply(Math, s));
12950                      var o = a.videoRange,
12951                        l = a.frameRate,
12952                        u = a.codecSet.substring(0, 4),
12953                        h = Wr(e, i, function (e) {
12954                          if (
12955                            e.videoRange !== o ||
12956                            e.frameRate !== l ||
12957                            e.codecSet.substring(0, 4) !== u
12958                          )
12959                            return !1;
12960                          var i = e.audioGroups,
12961                            a = r.filter(function (t) {
12962                              return !i || -1 !== i.indexOf(t.groupId);
12963                            });
12964                          return Hr(t, a, n) > -1;
12965                        });
12966                      return h > -1
12967                        ? h
12968                        : Wr(e, i, function (e) {
12969                            var i = e.audioGroups,
12970                              a = r.filter(function (t) {
12971                                return !i || -1 !== i.indexOf(t.groupId);
12972                              });
12973                            return Hr(t, a, n) > -1;
12974                          });
12975                    })(t, e.levels, r, s, Yr);
12976                    if (-1 === o) return null;
12977                    e.nextLoadLevel = o;
12978                  }
12979                  if (t.channels || t.audioCodec) {
12980                    var l = Hr(t, r);
12981                    if (l > -1) return r[l];
12982                  }
12983                }
12984              }
12985              return null;
12986            }),
12987            (r.setAudioTrack = function (t) {
12988              var e = this.tracksInGroup;
12989              if (t < 0 || t >= e.length) this.warn('Invalid audio track id: ' + t);
12990              else {
12991                this.clearTimer(), (this.selectDefaultTrack = !1);
12992                var r = this.currentTrack,
12993                  n = e[t],
12994                  a = n.details && !n.details.live;
12995                if (
12996                  !(
12997                    (t === this.trackId && n === r && a) ||
12998                    (this.log(
12999                      'Switching to audio-track ' +
13000                        t +
13001                        ' "' +
13002                        n.name +
13003                        '" lang:' +
13004                        n.lang +
13005                        ' group:' +
13006                        n.groupId +
13007                        ' channels:' +
13008                        n.channels
13009                    ),
13010                    (this.trackId = t),
13011                    (this.currentTrack = n),
13012                    this.hls.trigger(S.AUDIO_TRACK_SWITCHING, i({}, n)),
13013                    a)
13014                  )
13015                ) {
13016                  var s = this.switchParams(n.url, null == r ? void 0 : r.details, n.details);
13017                  this.loadPlaylist(s);
13018                }
13019              }
13020            }),
13021            (r.findTrackId = function (t) {
13022              for (var e = this.tracksInGroup, r = 0; r < e.length; r++) {
13023                var i = e[r];
13024                if ((!this.selectDefaultTrack || i.default) && (!t || Vr(t, i, Yr))) return r;
13025              }
13026              if (t) {
13027                for (
13028                  var n = t.name,
13029                    a = t.lang,
13030                    s = t.assocLang,
13031                    o = t.characteristics,
13032                    l = t.audioCodec,
13033                    u = t.channels,
13034                    h = 0;
13035                  h < e.length;
13036                  h++
13037                )
13038                  if (
13039                    Vr(
13040                      {
13041                        name: n,
13042                        lang: a,
13043                        assocLang: s,
13044                        characteristics: o,
13045                        audioCodec: l,
13046                        channels: u,
13047                      },
13048                      e[h],
13049                      Yr
13050                    )
13051                  )
13052                    return h;
13053                for (var d = 0; d < e.length; d++) {
13054                  var c = e[d];
13055                  if (zn(t.attrs, c.attrs, ['LANGUAGE', 'ASSOC-LANGUAGE', 'CHARACTERISTICS']))
13056                    return d;
13057                }
13058                for (var f = 0; f < e.length; f++) {
13059                  var g = e[f];
13060                  if (zn(t.attrs, g.attrs, ['LANGUAGE'])) return f;
13061                }
13062              }
13063              return -1;
13064            }),
13065            (r.loadPlaylist = function (e) {
13066              var r = this.currentTrack;
13067              if (this.shouldLoadPlaylist(r) && r) {
13068                t.prototype.loadPlaylist.call(this);
13069                var i = r.id,
13070                  n = r.groupId,
13071                  a = r.url;
13072                if (e)
13073                  try {
13074                    a = e.addDirectives(a);
13075                  } catch (t) {
13076                    this.warn('Could not construct new URL with HLS Delivery Directives: ' + t);
13077                  }
13078                this.log(
13079                  'loading audio-track playlist ' +
13080                    i +
13081                    ' "' +
13082                    r.name +
13083                    '" lang:' +
13084                    r.lang +
13085                    ' group:' +
13086                    n
13087                ),
13088                  this.clearTimer(),
13089                  this.hls.trigger(S.AUDIO_TRACK_LOADING, {
13090                    url: a,
13091                    id: i,
13092                    groupId: n,
13093                    deliveryDirectives: e || null,
13094                  });
13095              }
13096            }),
13097            s(e, [
13098              {
13099                key: 'allAudioTracks',
13100                get: function () {
13101                  return this.tracks;
13102                },
13103              },
13104              {
13105                key: 'audioTracks',
13106                get: function () {
13107                  return this.tracksInGroup;
13108                },
13109              },
13110              {
13111                key: 'audioTrack',
13112                get: function () {
13113                  return this.trackId;
13114                },
13115                set: function (t) {
13116                  (this.selectDefaultTrack = !1), this.setAudioTrack(t);
13117                },
13118              },
13119            ]),
13120            e
13121          );
13122        })(Fr),
13123        Zn = (function (t) {
13124          function e(e, r, i) {
13125            var n;
13126            return (
13127              ((n =
13128                t.call(this, e, r, i, '[subtitle-stream-controller]', Oe) || this).currentTrackId =
13129                -1),
13130              (n.tracksBuffered = []),
13131              (n.mainDetails = null),
13132              n._registerListeners(),
13133              n
13134            );
13135          }
13136          l(e, t);
13137          var r = e.prototype;
13138          return (
13139            (r.onHandlerDestroying = function () {
13140              this._unregisterListeners(),
13141                t.prototype.onHandlerDestroying.call(this),
13142                (this.mainDetails = null);
13143            }),
13144            (r._registerListeners = function () {
13145              var t = this.hls;
13146              t.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
13147                t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
13148                t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
13149                t.on(S.LEVEL_LOADED, this.onLevelLoaded, this),
13150                t.on(S.ERROR, this.onError, this),
13151                t.on(S.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this),
13152                t.on(S.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this),
13153                t.on(S.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this),
13154                t.on(S.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this),
13155                t.on(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
13156                t.on(S.FRAG_BUFFERED, this.onFragBuffered, this);
13157            }),
13158            (r._unregisterListeners = function () {
13159              var t = this.hls;
13160              t.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
13161                t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
13162                t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
13163                t.off(S.LEVEL_LOADED, this.onLevelLoaded, this),
13164                t.off(S.ERROR, this.onError, this),
13165                t.off(S.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUp
13165dated, this),
13166                t.off(S.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this),
13167                t.off(S.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this),
13168                t.off(S.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this),
13169                t.off(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
13170                t.off(S.FRAG_BUFFERED, this.onFragBuffered, this);
13171            }),
13172            (r.startLoad = function (t) {
13173              this.stopLoad(),
13174                (this.state = Ti),
13175                this.setInterval(500),
13176                (this.nextLoadPosition = this.startPosition = this.lastCurrentTime = t),
13177                this.tick();
13178            }),
13179            (r.onManifestLoading = function () {
13180              (this.mainDetails = null), this.fragmentTracker.removeAllFragments();
13181            }),
13182            (r.onMediaDetaching = function () {
13183              (this.tracksBuffered = []), t.prototype.onMediaDetaching.call(this);
13184            }),
13185            (r.onLevelLoaded = function (t, e) {
13186              this.mainDetails = e.details;
13187            }),
13188            (r.onSubtitleFragProcessed = function (t, e) {
13189              var r = e.frag,
13190                i = e.success;
13191              if (((this.fragPrevious = r), (this.state = Ti), i)) {
13192                var n = this.tracksBuffered[this.currentTrackId];
13193                if (n) {
13194                  for (var a, s = r.start, o = 0; o < n.length; o++)
13195                    if (s >= n[o].start && s <= n[o].end) {
13196                      a = n[o];
13197                      break;
13198                    }
13199                  var l = r.start + r.duration;
13200                  a ? (a.end = l) : ((a = { start: s, end: l }), n.push(a)),
13201                    this.fragmentTracker.fragBuffered(r),
13202                    this.fragBufferedComplete(r, null);
13203                }
13204              }
13205            }),
13206            (r.onBufferFlushing = function (t, e) {
13207              var r = e.startOffset,
13208                i = e.endOffset;
13209              if (0 === r && i !== Number.POSITIVE_INFINITY) {
13210                var n = i - 1;
13211                if (n <= 0) return;
13212                (e.endOffsetSubtitles = Math.max(0, n)),
13213                  this.tracksBuffered.forEach(function (t) {
13214                    for (var e = 0; e < t.length; )
13215                      if (t[e].end <= n) t.shift();
13216                      else {
13217                        if (!(t[e].start < n)) break;
13218                        (t[e].start = n), e++;
13219                      }
13220                  }),
13221                  this.fragmentTracker.removeFragmentsInRange(r, n, Oe);
13222              }
13223            }),
13224            (r.onFragBuffered = function (t, e) {
13225              var r;
13226              this.loadedmetadata ||
13227                e.frag.type !== Fe ||
13228                (null != (r = this.media) && r.buffered.length && (this.loadedmetadata = !0));
13229            }),
13230            (r.onError = function (t, e) {
13231              var r = e.frag;
13232              (null == r ? void 0 : r.type) === Oe &&
13233                (e.details === A.FRAG_GAP && this.fragmentTracker.fragBuffered(r, !0),
13234                this.fragCurrent && this.fragCurrent.abortRequests(),
13235                this.state !== Ei && (this.state = Ti));
13236            }),
13237            (r.onSubtitleTracksUpdated = function (t, e) {
13238              var r = this,
13239                i = e.subtitleTracks;
13240              this.levels && Xn(this.levels, i)
13241                ? (this.levels = i.map(function (t) {
13242                    return new or(t);
13243                  }))
13244                : ((this.tracksBuffered = []),
13245                  (this.levels = i.map(function (t) {
13246                    var e = new or(t);
13247                    return (r.tracksBuffered[e.id] = []), e;
13248                  })),
13249                  this.fragmentTracker.removeFragmentsInRange(0, Number.POSITIVE_INFINITY, Oe),
13250                  (this.fragPrevious = null),
13251                  (this.mediaBuffer = null));
13252            }),
13253            (r.onSubtitleTrackSwitch = function (t, e) {
13254              var r;
13255              if (
13256                ((this.currentTrackId = e.id),
13257                null != (r = this.levels) && r.length && -1 !== this.currentTrackId)
13258              ) {
13259                var i = this.levels[this.currentTrackId];
13260                null != i && i.details
13261                  ? (this.mediaBuffer = this.mediaBufferTimeRanges)
13262                  : (this.mediaBuffer = null),
13263                  i && this.setInterval(500);
13264              } else this.clearInterval();
13265            }),
13266            (r.onSubtitleTrackLoaded = function (t, e) {
13267              var r,
13268                i = this.currentTrackId,
13269                n = this.levels,
13270                a = e.details,
13271                s = e.id;
13272              if (n) {
13273                var o = n[s];
13274                if (!(s >= n.length) && o) {
13275                  this.log(
13276                    'Subtitle track ' +
13277                      s +
13278                      ' loaded [' +
13279                      a.startSN +
13280                      ',' +
13281                      a.endSN +
13282                      ']' +
13283                      (a.lastPartSn ? '[part-' + a.lastPartSn + '-' + a.lastPartIndex + ']' : '') +
13284                      ',duration:' +
13285                      a.totalduration
13286                  ),
13287                    (this.mediaBuffer = this.mediaBufferTimeRanges);
13288                  var l = 0;
13289                  if (a.live || (null != (r = o.details) && r.live)) {
13290                    var u = this.mainDetails;
13291                    if (a.deltaUpdateFailed || !u) return;
13292                    var h,
13293                      d = u.fragments[0];
13294                    o.details
13295                      ? 0 ===
13296                          (l = this.alignPlaylists(
13297                            a,
13298                            o.details,
13299                            null == (h = this.levelLastLoaded) ? void 0 : h.details
13300                          )) &&
13301                        d &&
13302                        fr(a, (l = d.start))
13303                      : a.hasProgramDateTime && u.hasProgramDateTime
13304                      ? (li(a, u), (l = a.fragments[0].start))
13305                      : d && fr(a, (l = d.start));
13306                  }
13307                  (o.details = a),
13308                    (this.levelLastLoaded = o),
13309                    s === i &&
13310                      (this.startFragRequested ||
13311                        (!this.mainDetails && a.live) ||
13312                        this.setStartPosition(this.mainDetails || a, l),
13313                      this.tick(),
13314                      a.live &&
13315                        !this.fragCurrent &&
13316                        this.media &&
13317                        this.state === Ti &&
13318                        (Ar(null, a.fragments, this.media.currentTime, 0) ||
13319                          (this.warn('Subtitle playlist not aligned with playback'),
13320                          (o.details = void 0))));
13321                }
13322              } else this.warn('Subtitle tracks were reset while loading level ' + s);
13323            }),
13324            (r._handleFragmentLoadComplete = function (t) {
13325              var e = this,
13326                r = t.frag,
13327                i = t.payload,
13328                n = r.decryptdata,
13329                a = this.hls;
13330              if (
13331                !this.fragContextChanged(r) &&
13332                i &&
13333                i.byteLength > 0 &&
13334                null != n &&
13335                n.key &&
13336                n.iv &&
13337                'AES-128' === n.method
13338              ) {
13339                var s = performance.now();
13340                this.decrypter
13341                  .decrypt(new Uint8Array(i), n.key.buffer, n.iv.buffer)
13342                  .catch(function (t) {
13343                    throw (
13344                      (a.trigger(S.ERROR, {
13345                        type: L.MEDIA_ERROR,
13346                        details: A.FRAG_DECRYPT_ERROR,
13347                        fatal: !1,
13348                        error: t,
13349                        reason: t.message,
13350                        frag: r,
13351                      }),
13352                      t)
13353                    );
13354                  })
13355                  .then(function (t) {
13356                    var e = performance.now();
13357                    a.trigger(S.FRAG_DECRYPTED, {
13358                      frag: r,
13359                      payload: t,
13360                      stats: { tstart: s, tdecrypt: e },
13361                    });
13362                  })
13363                  .catch(function (t) {
13364                    e.warn(t.name + ': ' + t.message), (e.state = Ti);
13365                  });
13366              }
13367            }),
13368            (r.doTick = function () {
13369              if (this.media) {
13370                if (this.state === Ti) {
13371                  var t = this.currentTrackId,
13372                    e = this.levels,
13373                    r = null == e ? void 0 : e[t];
13374                  if (!r || !e.length || !r.details) return;
13375                  var i = this.config,
13376                    n = this.getLoadPosition(),
13377                    a = ri.bufferedInfo(
13378                      this.tracksBuffered[this.currentTrackId] || [],
13379                      n,
13380                      i.maxBufferHole
13381                    ),
13382                    s = a.end,
13383                    o = a.len,
13384                    l = this.getFwdBufferInfo(this.media, Fe),
13385                    u = r.details;
13386                  if (
13387                    o >
13388                    this.getMaxBufferLength(null == l ? void 0 : l.len) + u.levelTargetDuration
13389                  )
13390                    return;
13391                  var h = u.fragments,
13392                    d = h.length,
13393                    c = u.edge,
13394                    f = null,
13395                    g = this.fragPrevious;
13396                  if (s < c) {
13397                    var v = i.maxFragLookUpTolerance,
13398                      m = s > c - v ? 0 : v;
13399                    !(f = Ar(g, h, Math.max(h[0].start, s), m)) &&
13400                      g &&
13401                      g.start < h[0].start &&
13402                      (f = h[0]);
13403                  } else f = h[d - 1];
13404                  if (!f) return;
13405                  if ('initSegment' !== (f = this.mapToInitFragWhenRequired(f)).sn) {
13406                    var p = h[f.sn - u.startSN - 1];
13407                    p && p.cc === f.cc && this.fragmentTracker.getState(p) === Xr && (f = p);
13408                  }
13409                  this.fragmentTracker.getState(f) === Xr && this.loadFragment(f, r, s);
13410                }
13411              } else this.state = Ti;
13412            }),
13413            (r.getMaxBufferLength = function (e) {
13414              var r = t.prototype.getMaxBufferLength.call(this);
13415              return e ? Math.max(r, e) : r;
13416            }),
13417            (r.loadFragment = function (e, r, i) {
13418              (this.fragCurrent = e),
13419                'initSegment' === e.sn
13420                  ? this._loadInitSegment(e, r)
13421                  : ((this.startFragRequested = !0), t.prototype.loadFragment.call(this, e, r, i));
13422            }),
13423            s(e, [
13424              {
13425                key: 'mediaBufferTimeRanges',
13426                get: function () {
13427                  return new ta(this.tracksBuffered[this.currentTrackId] || []);
13428                },
13429              },
13430            ]),
13431            e
13432          );
13433        })(_i),
13434        ta = function (t) {
13435          this.buffered = void 0;
13436          var e = function (e, r, i) {
13437            if ((r >>>= 0) > i - 1)
13438              throw new DOMException(
13439                "Failed to execute '" +
13440                  e +
13441                  "' on 'TimeRanges': The index provided (" +
13442                  r +
13443                  ') is greater than the maximum bound (' +
13444                  i +
13445                  ')'
13446              );
13447            return t[r][e];
13448          };
13449          this.buffered = {
13450            get length() {
13451              return t.length;
13452            },
13453            end: function (r) {
13454              return e('end', r, t.length);
13455            },
13456            start: function (r) {
13457              return e('start', r, t.length);
13458            },
13459          };
13460        },
13461        ea = (function (t) {
13462          function e(e) {
13463            var r;
13464            return (
13465              ((r = t.call(this, e, '[subtitle-track-controller]') || this).media = null),
13466              (r.tracks = []),
13467              (r.groupIds = null),
13468              (r.tracksInGroup = []),
13469              (r.trackId = -1),
13470              (r.currentTrack = null),
13471              (r.selectDefaultTrack = !0),
13472              (r.queuedDefaultTrack = -1),
13473              (r.asyncPollTrackChange = function () {
13474                return r.pollTrackChange(0);
13475              }),
13476              (r.useTextTrackPolling = !1),
13477              (r.subtitlePollingInterval = -1),
13478              (r._subtitleDisplay = !0),
13479              (r.onTextTracksChanged = function () {
13480                if (
13481                  (r.useTextTrackPolling || self.clearInterval(r.subtitlePollingInterval),
13482                  r.media && r.hls.config.renderTextTracksNatively)
13483                ) {
13484                  for (var t = null, e = Ye(r.media.textTracks), i = 0; i < e.length; i++)
13485                    if ('hidden' === e[i].mode) t = e[i];
13486                    else if ('showing' === e[i].mode) {
13487                      t = e[i];
13488                      break;
13489                    }
13490                  var n = r.findTrackForTextTrack(t);
13491                  r.subtitleTrack !== n && r.setSubtitleTrack(n);
13492                }
13493              }),
13494              r.registerListeners(),
13495              r
13496            );
13497          }
13498          l(e, t);
13499          var r = e.prototype;
13500          return (
13501            (r.destroy = function () {
13502              this.unregisterListeners(),
13503                (this.tracks.length = 0),
13504                (this.tracksInGroup.length = 0),
13505                (this.currentTrack = null),
13506                (this.onTextTracksChanged = this.asyncPollTrackChange = null),
13507                t.prototype.destroy.call(this);
13508            }),
13509            (r.registerListeners = function () {
13510              var t = this.hls;
13511              t.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
13512                t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
13513                t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
13514                t.on(S.MANIFEST_PARSED, this.onManifestParsed, this),
13515                t.on(S.LEVEL_LOADING, this.onLevelLoading, this),
13516                t.on(S.LEVEL_SWITCHING, this.onLevelSwitching, this),
13517                t.on(S.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this),
13518                t.on(S.ERROR, this.onError, this);
13519            }),
13520            (r.unregisterListeners = function () {
13521              var t = this.hls;
13522              t.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
13523                t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
13524                t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
13525                t.off(S.MANIFEST_PARSED, this.onManifestParsed, this),
13526                t.off(S.LEVEL_LOADING, this.onLevelLoading, this),
13527                t.off(S.LEVEL_SWITCHING, this.onLevelSwitching, this),
13528                t.off(S.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this),
13529                t.off(S.ERROR, this.onError, this);
13530            }),
13531            (r.onMediaAttached = function (t, e) {
13532              (this.media = e.media),
13533                this.media &&
13534                  (this.queuedDefaultTrack > -1 &&
13535                    ((this.subtitleTrack = this.queuedDefaultTrack),
13536                    (this.queuedDefaultTrack = -1)),
13537                  (this.useTextTrackPolling = !(
13538                    this.media.textTracks && 'onchange' in this.media.textTracks
13539                  )),
13540                  this.useTextTrackPolling
13541                    ? this.pollTrackChange(500)
13542                    : this.media.textTracks.addEventListener('change', this.asyncPollTrackChange));
13543            }),
13544            (r.pollTrackChange = function (t) {
13545              self.clearInterval(this.subtitlePollingInterval),
13546                (this.subtitlePollingInterval = self.setInterval(this.onTextTracksChanged, t));
13547            }),
13548            (r.onMediaDetaching = function () {
13549              this.media &&
13550                (self.clearInterval(this.subtitlePollingInterval),
13551                this.useTextTrackPolling ||
13552                  this.media.textTracks.removeEventListener('change', this.asyncPollTrackChange),
13553                this.trackId > -1 && (this.queuedDefaultTrack = this.trackId),
13554                Ye(this.media.textTracks).forEach(function (t) {
13555                  He(t);
13556                }),
13557                (this.subtitleTrack = -1),
13558                (this.media = null));
13559            }),
13560            (r.onManifestLoading = function () {
13561              (this.tracks = []),
13562                (this.groupIds = null),
13563                (this.tracksInGroup = []),
13564                (this.trackId = -1),
13565                (this.currentTrack = null),
13566                (this.selectDefaultTrack = !0);
13567            }),
13568            (r.onManifestParsed = function (t, e) {
13569              this.tracks = e.subtitleTracks;
13570            }),
13571            (r.onSubtitleTrackLoaded = function (t, e) {
13572              var r = e.id,
13573                i = e.groupId,
13574                n = e.details,
13575                a = this.tracksInGroup[r];
13576              if (a && a.groupId === i) {
13577                var s = a.details;
13578                (a.details = e.details),
13579                  this.log(
13580                    'Subtitle track ' +
13581                      r +
13582                      ' "' +
13583                      a.name +
13584                      '" lang:' +
13585                      a.lang +
13586                      ' group:' +
13587                      i +
13588                      ' loaded [' +
13589                      n.startSN +
13590                      '-' +
13591                      n.endSN +
13592                      ']'
13593                  ),
13594                  r === this.trackId && this.playlistLoaded(r, e, s);
13595              } else
13596                this.warn(
13597                  'Subtitle track with id:' +
13598                    r +
13599                    ' and group:' +
13600                    i +
13601                    ' not found in active group ' +
13602                    (null == a ? void 0 : a.groupId)
13603                );
13604            }),
13605            (r.onLevelLoading = function (t, e) {
13606              this.switchLevel(e.level);
13607            }),
13608            (r.onLevelSwitching = function (t, e) {
13609              this.switchLevel(e.level);
13610            }),
13611            (r.switchLevel = function (t) {
13612              var e = this.hls.levels[t];
13613              if (e) {
13614                var r = e.subtitleGroups || null,
13615                  i = this.groupIds,
13616                  n = this.currentTrack;
13617                if (
13618                  !r ||
13619                  (null == i ? void 0 : i.length) !== (null == r ? void 0 : r.length) ||
13620                  (null != r &&
13621                    r.some(function (t) {
13622                      return -1 === (null == i ? void 0 : i.indexOf(t));
13623                    }))
13624                ) {
13625                  (this.groupIds = r), (this.trackId = -1), (this.currentTrack = null);
13626                  var a = this.tracks.filter(function (t) {
13627                    return !r || -1 !== r.indexOf(t.groupId);
13628                  });
13629                  if (a.length)
13630                    this.selectDefaultTrack &&
13631                      !a.some(function (t) {
13632                        return t.default;
13633                      }) &&
13634                      (this.selectDefaultTrack = !1),
13635                      a.forEach(function (t, e) {
13636                        t.id = e;
13637                      });
13638                  else if (!n && !this.tracksInGroup.length) return;
13639                  this.tracksInGroup = a;
13640                  var s = this.hls.config.subtitlePreference;
13641                  if (!n && s) {
13642                    this.selectDefaultTrack = !1;
13643                    var o = Hr(s, a);
13644                    if (o > -1) n = a[o];
13645                    else {
13646                      var l = Hr(s, this.tracks);
13647                      n = this.tracks[l];
13648                    }
13649                  }
13650                  var u = this.findTrackId(n);
13651                  -1 === u && n && (u = this.findTrackId(null));
13652                  var h = { subtitleTracks: a };
13653                  this.log(
13654                    'Updating subtitle tracks, ' +
13655                      a.length +
13656                      ' track(s) found in "' +
13657                      (null == r ? void 0 : r.join(',')) +
13658                      '" group-id'
13659                  ),
13660                    this.hls.trigger(S.SUBTITLE_TRACKS_UPDATED, h),
13661                    -1 !== u && -1 === this.trackId && this.setSubtitleTrack(u);
13662                } else this.shouldReloadPlaylist(n) && this.setSubtitleTrack(this.trackId);
13663              }
13664            }),
13665            (r.findTrackId = function (t) {
13666              for (
13667                var e = this.tracksInGroup, r = this.selectDefaultTrack, i = 0;
13668                i < e.length;
13669                i++
13670              ) {
13671                var n = e[i];
13672                if ((!r || n.default) && (r || t) && (!t || Vr(n, t))) return i;
13673              }
13674              if (t) {
13675                for (var a = 0; a < e.length; a++) {
13676                  var s = e[a];
13677                  if (zn(t.attrs, s.attrs, ['LANGUAGE', 'ASSOC-LANGUAGE', 'CHARACTERISTICS']))
13678                    return a;
13679                }
13680                for (var o = 0; o < e.length; o++) {
13681                  var l = e[o];
13682                  if (zn(t.attrs, l.attrs, ['LANGUAGE'])) return o;
13683                }
13684              }
13685              return -1;
13686            }),
13687            (r.findTrackForTextTrack = function (t) {
13688              if (t)
13689                for (var e = this.tracksInGroup, r = 0; r < e.length; r++)
13690                  if (Qn(e[r], t)) return r;
13691              return -1;
13692            }),
13693            (r.onError = function (t, e) {
13694              !e.fatal &&
13695                e.context &&
13696                (e.context.type !== Pe ||
13697                  e.context.id !== this.trackId ||
13698                  (this.groupIds && -1 === this.groupIds.indexOf(e.context.groupId)) ||
13699                  this.checkRetry(e));
13700            }),
13701            (r.setSubtitleOption = function (t) {
13702              if (((this.hls.config.subtitlePreference = t), t)) {
13703                var e = this.allSubtitleTracks;
13704                if (((this.selectDefaultTrack = !1), e.length)) {
13705                  var r = this.currentTrack;
13706                  if (r && Vr(t, r)) return r;
13707                  var i = Hr(t, this.tracksInGroup);
13708                  if (i > -1) {
13709                    var n = this.tracksInGroup[i];
13710                    return this.setSubtitleTrack(i), n;
13711                  }
13712                  if (r) return null;
13713                  var a = Hr(t, e);
13714                  if (a > -1) return e[a];
13715                }
13716              }
13717              return null;
13718            }),
13719            (r.loadPlaylist = function (e) {
13720              t.prototype.loadPlaylist.call(this);
13721              var r = this.currentTrack;
13722              if (this.shouldLoadPlaylist(r) && r) {
13723                var i = r.id,
13724                  n = r.groupId,
13725                  a = r.url;
13726                if (e)
13727                  try {
13728                    a = e.addDirectives(a);
13729                  } catch (t) {
13730                    this.warn('Could not construct new URL with HLS Delivery Directives: ' + t);
13731                  }
13732                this.log('Loading subtitle playlist for id ' + i),
13733                  this.hls.trigger(S.SUBTITLE_TRACK_LOADING, {
13734                    url: a,
13735                    id: i,
13736                    groupId: n,
13737                    deliveryDirectives: e || null,
13738                  });
13739              }
13740            }),
13741            (r.toggleTrackModes = function () {
13742              var t = this.media;
13743              if (t) {
13744                var e,
13745                  r = Ye(t.textTracks),
13746                  i = this.currentTrack;
13747                if (
13748                  (i &&
13749                    ((e = r.filter(function (t) {
13750                      return Qn(i, t);
13751                    })[0]) ||
13752                      this.warn(
13753                        'Unable to find subtitle TextTrack with name "' +
13754                          i.name +
13755                          '" and language "' +
13756                          i.lang +
13757                          '"'
13758                      )),
13759                  [].slice.call(r).forEach(function (t) {
13760                    'disabled' !== t.mode && t !== e && (t.mode = 'disabled');
13761                  }),
13762                  e)
13763                ) {
13764                  var n = this.subtitleDisplay ? 'showing' : 'hidden';
13765                  e.mode !== n && (e.mode = n);
13766                }
13767              }
13768            }),
13769            (r.setSubtitleTrack = function (t) {
13770              var e = this.tracksInGroup;
13771              if (this.media)
13772                if (t < -1 || t >= e.length || !y(t)) this.warn('Invalid subtitle track id: ' + t);
13773                else {
13774                  this.clearTimer(), (this.selectDefaultTrack = !1);
13775                  var r = this.currentTrack,
13776                    i = e[t] || null;
13777                  if (((this.trackId = t), (this.currentTrack = i), this.toggleTrackModes(), i)) {
13778                    var n = !!i.details && !i.details.live;
13779                    if (t !== this.trackId || i !== r || !n) {
13780                      this.log(
13781                        'Switching to subtitle-track ' +
13782                          t +
13783                          (i ? ' "' + i.name + '" lang:' + i.lang + ' group:' + i.groupId : '')
13784                      );
13785                      var a = i.id,
13786                        s = i.groupId,
13787                        o = void 0 === s ? '' : s,
13788                        l = i.name,
13789                        u = i.type,
13790                        h = i.url;
13791                      this.hls.trigger(S.SUBTITLE_TRACK_SWITCH, {
13792                        id: a,
13793                        groupId: o,
13794                        name: l,
13795                        type: u,
13796                        url: h,
13797                      });
13798                      var d = this.switchParams(i.url, null == r ? void 0 : r.details, i.details);
13799                      this.loadPlaylist(d);
13800                    }
13801                  } else this.hls.trigger(S.SUBTITLE_TRACK_SWITCH, { id: t });
13802                }
13803              else this.queuedDefaultTrack = t;
13804            }),
13805            s(e, [
13806              {
13807                key: 'subtitleDisplay',
13808                get: function () {
13809                  return this._subtitleDisplay;
13810                },
13811                set: function (t) {
13812                  (this._subtitleDisplay = t), this.trackId > -1 && this.toggleTrackModes();
13813                },
13814              },
13815              {
13816                key: 'allSubtitleTracks',
13817                get: function () {
13818                  return this.tracks;
13819                },
13820              },
13821              {
13822                key: 'subtitleTracks',
13823                get: function () {
13824                  return this.tracksInGroup;
13825                },
13826              },
13827              {
13828                key: 'subtitleTrack',
13829                get: function () {
13830                  return this.trackId;
13831                },
13832                set: function (t) {
13833                  (this.selectDefaultTrack = !1), this.setSubtitleTrack(t);
13834                },
13835              },
13836            ]),
13837            e
13838          );
13839        })(Fr),
13840        ra = (function () {
13841          function t(t) {
13842            (this.buffers = void 0),
13843              (this.queues = { video: [], audio: [], audiovideo: [] }),
13844              (this.buffers = t);
13845          }
13846          var e = t.prototype;
13847          return (
13848            (e.append = function (t, e, r) {
13849              var i = this.queues[e];
13850              i.push(t), 1 !== i.length || r || this.executeNext(e);
13851            }),
13852            (e.insertAbort = function (t, e) {
13853              this.queues[e].unshift(t), this.executeNext(e);
13854            }),
13855            (e.appendBlocker = function (t) {
13856              var e,
13857                r = new Promise(function (t) {
13858                  e = t;
13859                }),
13860                i = {
13861                  execute: e,
13862                  onStart: function () {},
13863                  onComplete: function () {},
13864                  onError: function () {},
13865                };
13866              return this.append(i, t), r;
13867            }),
13868            (e.executeNext = function (t) {
13869              var e = this.queues[t];
13870              if (e.length) {
13871                var r = e[0];
13872                try {
13873                  r.execute();
13874                } catch (e) {
13875                  w.warn(
13876                    '[buffer-operation-queue]: Exception executing "' +
13877                      t +
13878                      '" SourceBuffer operation: ' +
13879                      e
13880                  ),
13881                    r.onError(e);
13882                  var i = this.buffers[t];
13883                  (null != i && i.updating) || this.shiftAndExecuteNext(t);
13884                }
13885              }
13886            }),
13887            (e.shiftAndExecuteNext = function (t) {
13888              this.queues[t].shift(), this.executeNext(t);
13889            }),
13890            (e.current = function (t) {
13891              return this.queues[t][0];
13892            }),
13893            t
13894          );
13895        })(),
13896        ia = /(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/,
13897        na = (function () {
13898          function t(t) {
13899            var e = this;
13900            (this.details = null),
13901              (this._objectUrl = null),
13902              (this.operationQueue = void 0),
13903              (this.listeners = void 0),
13904              (this.hls = void 0),
13905              (this.bufferCodecEventsExpected = 0),
13906              (this._bufferCodecEventsTotal = 0),
13907              (this.media = null),
13908              (this.mediaSource = null),
13909              (this.lastMpegAudioChunk = null),
13910              (this.appendSource = void 0),
13911              (this.appendErrors = { audio: 0, video: 0, audiovideo: 0 }),
13912              (this.tracks = {}),
13913              (this.pendingTracks = {}),
13914              (this.sourceBuffer = void 0),
13915              (this.log = void 0),
13916              (this.warn = void 0),
13917              (this.error = void 0),
13918              (this._onEndStreaming = function (t) {
13919                e.hls && e.hls.pauseBuffering();
13920              }),
13921              (this._onStartStreaming = function (t) {
13922                e.hls && e.hls.resumeBuffering();
13923              }),
13924              (this._onMediaSourceOpen = function () {
13925                var t = e.media,
13926                  r = e.mediaSource;
13927                e.log('Media source opened'),
13928                  t &&
13929                    (t.removeEventListener('emptied', e._onMediaEmptied),
13930                    e.updateMediaElementDuration(),
13931                    e.hls.trigger(S.MEDIA_ATTACHED, { media: t, mediaSource: r })),
13932                  r && r.removeEventListener('sourceopen', e._onMediaSourceOpen),
13933                  e.checkPendingTracks();
13934              }),
13935              (this._onMediaSourceClose = function () {
13936                e.log('Media source closed');
13937              }),
13938              (this._onMediaSourceEnded = function () {
13939                e.log('Media source ended');
13940              }),
13941              (this._onMediaEmptied = function () {
13942                var t = e.mediaSrc,
13943                  r = e._objectUrl;
13944                t !== r &&
13945                  w.error(
13946                    'Media element src was set while attaching MediaSource (' + r + ' > ' + t + ')'
13947                  );
13948              }),
13949              (this.hls = t);
13950            var r,
13951              i = '[buffer-controller]';
13952            (this.appendSource =
13953              ((r = se(t.config.preferManagedMediaSource)),
13954              'undefined' != typeof self && r === self.ManagedMediaSource)),
13955              (this.log = w.log.bind(w, i)),
13956              (this.warn = w.warn.bind(w, i)),
13957              (this.error = w.error.bind(w, i)),
13958              this._initSourceBuffer(),
13959              this.registerListeners();
13960          }
13961          var e = t.prototype;
13962          return (
13963            (e.hasSourceTypes = function () {
13964              return (
13965                this.getSourceBufferTypes().length > 0 || Object.keys(this.pendingTracks).length > 0
13966              );
13967            }),
13968            (e.destroy = function () {
13969              this.unregisterListeners(),
13970                (this.details = null),
13971                (this.lastMpegAudioChunk = null),
13972                (this.hls = null);
13973            }),
13974            (e.registerListeners = function () {
13975              var t = this.hls;
13976              t.on(S.MEDIA_ATTACHING, this.onMediaAttaching, this),
13977                t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
13978                t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
13979                t.on(S.MANIFEST_PARSED, this.onManifestParsed, this),
13980                t.on(S.BUFFER_RESET, this.onBufferReset, this),
13981                t.on(S.BUFFER_APPENDING, this.onBufferAppending, this),
13982                t.on(S.BUFFER_CODECS, this.onBufferCodecs, this),
13983                t.on(S.BUFFER_EOS, this.onBufferEos, this),
13984                t.on(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
13985                t.on(S.LEVEL_UPDATED, this.onLevelUpdated, this),
13986                t.on(S.FRAG_PARSED, this.onFragParsed, this),
13987                t.on(S.FRAG_CHANGED, this.onFragChanged, this);
13988            }),
13989            (e.unregisterListeners = function () {
13990              var t = this.hls;
13991              t.off(S.MEDIA_ATTACHING, this.onMediaAttaching, this),
13992                t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
13993                t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
13994                t.off(S.MANIFEST_PARSED, this.onManifestParsed, this),
13995                t.off(S.BUFFER_RESET, this.onBufferReset, this),
13996                t.off(S.BUFFER_APPENDING, this.onBufferAppending, this),
13997                t.off(S.BUFFER_CODECS, this.onBufferCodecs, this),
13998                t.off(S.BUFFER_EOS, this.onBufferEos, this),
13999                t.off(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
14000                t.off(S.LEVEL_UPDATED, this.onLevelUpdated, this),
14001                t.off(S.FRAG_PARSED, this.onFragParsed, this),
14002                t.off(S.FRAG_CHANGED, this.onFragChanged, this);
14003            }),
14004            (e._initSourceBuffer = function () {
14005              (this.sourceBuffer = {}),
14006                (this.operationQueue = new ra(this.sourceBuffer)),
14007                (this.listeners = { audio: [], video: [], audiovideo: [] }),
14008                (this.appendErrors = { audio: 0, video: 0, audiovideo: 0 }),
14009                (this.lastMpegAudioChunk = null);
14010            }),
14011            (e.onManifestLoading = function () {
14012              (this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = 0),
14013                (this.details = null);
14014            }),
14015            (e.onManifestParsed = function (t, e) {
14016              var r = 2;
14017              ((e.audio && !e.video) || !e.altAudio) && (r = 1),
14018                (this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = r),
14019                this.log(this.bufferCodecEventsExpected + ' bufferCodec event(s) expected');
14020            }),
14021            (e.onMediaAttaching = function (t, e) {
14022              var r = (this.media = e.media),
14023                i = se(this.appendSource);
14024              if (r && i) {
14025                var n,
14026                  a = (this.mediaSource = new i());
14027                this.log(
14028                  'created media source: ' + (null == (n = a.constructor) ? void 0 : n.name)
14029                ),
14030                  a.addEventListener('sourceopen', this._onMediaSourceOpen),
14031                  a.addEventListener('sourceended', this._onMediaSourceEnded),
14032                  a.addEventListener('sourceclose', this._onMediaSourceClose),
14033                  this.appendSource &&
14034                    (a.addEventListener('startstreaming', this._onStartStreaming),
14035                    a.addEventListener('endstreaming', this._onEndStreaming));
14036                var s = (this._objectUrl = self.URL.createObjectURL(a));
14037                if (this.appendSource)
14038                  try {
14039                    r.removeAttribute('src');
14040                    var o = self.ManagedMediaSource;
14041                    (r.disableRemotePlayback = r.disableRemotePlayback || (o && a instanceof o)),
14042                      aa(r),
14043                      (function (t, e) {
14044                        var r = self.document.createElement('source');
14045                        (r.type = 'video/mp4'), (r.src = e), t.appendChild(r);
14046                      })(r, s),
14047                      r.load();
14048                  } catch (t) {
14049                    r.src = s;
14050                  }
14051                else r.src = s;
14052                r.addEventListener('emptied', this._onMediaEmptied);
14053              }
14054            }),
14055            (e.onMediaDetaching = function () {
14056              var t = this.media,
14057                e = this.mediaSource,
14058                r = this._objectUrl;
14059              if (e) {
14060                if ((this.log('media source detaching'), 'open' === e.readyState))
14061                  try {
14062                    e.endOfStream();
14063                  } catch (t) {
14064                    this.warn('onMediaDetaching: ' + t.message + ' while calling endOfStream');
14065                  }
14066                this.onBufferReset(),
14067                  e.removeEventListener('sourceopen', this._onMediaSourceOpen),
14068                  e.removeEventListener('sourceended', this._onMediaSourceEnded),
14069                  e.removeEventListener('sourceclose', this._onMediaSourceClose),
14070                  this.appendSource &&
14071                    (e.removeEventListener('startstreaming', this._onStartStreaming),
14072                    e.removeEventListener('endstreaming', this._onEndStreaming)),
14073                  t &&
14074                    (t.removeEventListener('emptied', this._onMediaEmptied),
14075                    r && self.URL.revokeObjectURL(r),
14076                    this.mediaSrc === r
14077                      ? (t.removeAttribute('src'), this.appendSource && aa(t), t.load())
14078                      : this.warn('media|source.src was changed by a third party - skip cleanup')),
14079                  (this.mediaSource = null),
14080                  (this.media = null),
14081                  (this._objectUrl = null),
14082                  (this.bufferCodecEventsExpected = this._bufferCodecEventsTotal),
14083                  (this.pendingTracks = {}),
14084                  (this.tracks = {});
14085              }
14086              this.hls.trigger(S.MEDIA_DETACHED, void 0);
14087            }),
14088            (e.onBufferReset = function () {
14089              var t = this;
14090              this.getSourceBufferTypes().forEach(function (e) {
14091                t.resetBuffer(e);
14092              }),
14093                this._initSourceBuffer(),
14094                this.hls.resumeBuffering();
14095            }),
14096            (e.resetBuffer = function (t) {
14097              var e = this.sourceBuffer[t];
14098              try {
14099                var r;
14100                e &&
14101                  (this.removeBufferListeners(t),
14102                  (this.sourceBuffer[t] = void 0),
14103                  null != (r = this.mediaSource) &&
14104                    r.sourceBuffers.length &&
14105                    this.mediaSource.removeSourceBuffer(e));
14106              } catch (e) {
14107                this.warn('onBufferReset ' + t, e);
14108              }
14109            }),
14110            (e.onBufferCodecs = function (t, e) {
14111              var r = this,
14112                i = this.getSourceBufferTypes().length,
14113                n = Object.keys(e);
14114              if (
14115                (n.forEach(function (t) {
14116                  if (i) {
14117                    var n = r.tracks[t];
14118                    if (n && 'function' == typeof n.buffer.changeType) {
14119                      var a,
14120                        s = e[t],
14121                        o = s.id,
14122                        l = s.codec,
14123                        u = s.levelCodec,
14124                        h = s.container,
14125                        d = s.metadata,
14126                        c = me(n.codec, n.levelCodec),
14127                        f = null == c ? void 0 : c.replace(ia, '$1'),
14128                        g = me(l, u),
14129                        v = null == (a = g) ? void 0 : a.replace(ia, '$1');
14130                      if (g && f !== v) {
14131                        'audio' === t.slice(0, 5) && (g = ve(g, r.appendSource));
14132                        var m = h + ';codecs=' + g;
14133                        r.appendChangeType(t, m),
14134                          r.log('switching codec ' + c + ' to ' + g),
14135                          (r.tracks[t] = {
14136                            buffer: n.buffer,
14137                            codec: l,
14138                            container: h,
14139                            levelCodec: u,
14140                            metadata: d,
14141                            id: o,
14142                          });
14143                      }
14144                    }
14145                  } else r.pendingTracks[t] = e[t];
14146                }),
14147                !i)
14148              ) {
14149                var a = Math.max(this.bufferCodecEventsExpected - 1, 0);
14150                this.bufferCodecEventsExpected !== a &&
14151                  (this.log(a + ' bufferCodec event(s) expected ' + n.join(',')),
14152                  (this.bufferCodecEventsExpected = a)),
14153                  this.mediaSource &&
14154                    'open' === this.mediaSource.readyState &&
14155                    this.checkPendingTracks();
14156              }
14157            }),
14158            (e.appendChangeType = function (t, e) {
14159              var r = this,
14160                i = this.operationQueue,
14161                n = {
14162                  execute: function () {
14163                    var n = r.sourceBuffer[t];
14164                    n && (r.log('changing ' + t + ' sourceBuffer type to ' + e), n.changeType(e)),
14165                      i.shiftAndExecuteNext(t);
14166                  },
14167                  onStart: function () {},
14168                  onComplete: function () {},
14169                  onError: function (e) {
14170                    r.warn('Failed to change ' + t + ' SourceBuffer type', e);
14171                  },
14172                };
14173              i.append(n, t, !!this.pendingTracks[t]);
14174            }),
14175            (e.onBufferAppending = function (t, e) {
14176              var r = this,
14177                i = this.hls,
14178                n = this.operationQueue,
14179                a = this.tracks,
14180                s = e.data,
14181                o = e.type,
14182                l = e.frag,
14183                u = e.part,
14184                h = e.chunkMeta,
14185                d = h.buffering[o],
14186                c = self.performance.now();
14187              d.start = c;
14188              var f = l.stats.buffering,
14189                g = u ? u.stats.buffering : null;
14190              0 === f.start && (f.start = c), g && 0 === g.start && (g.start = c);
14191              var v = a.audio,
14192                m = !1;
14193              'audio' === o &&
14194                'audio/mpeg' === (null == v ? void 0 : v.container) &&
14195                ((m =
14196                  !this.lastMpegAudioChunk || 1 === h.id || this.lastMpegAudioChunk.sn !== h.sn),
14197                (this.lastMpegAudioChunk = h));
14198              var p = l.start,
14199                y = {
14200                  execute: function () {
14201                    if (((d.executeStart = self.performance.now()), m)) {
14202                      var t = r.sourceBuffer[o];
14203                      if (t) {
14204                        var e = p - t.timestampOffset;
14205                        Math.abs(e) >= 0.1 &&
14206                          (r.log(
14207                            'Updating audio SourceBuffer timestampOffset to ' +
14208                              p +
14209                              ' (delta: ' +
14210                              e +
14211                              ') sn: ' +
14212                              l.sn +
14213                              ')'
14214                          ),
14215                          (t.timestampOffset = p));
14216                      }
14217                    }
14218                    r.appendExecutor(s, o);
14219                  },
14220                  onStart: function () {},
14221                  onComplete: function () {
14222                    var t = self.performance.now();
14223                    (d.executeEnd = d.end = t),
14224                      0 === f.first && (f.first = t),
14225                      g && 0 === g.first && (g.first = t);
14226                    var e = r.sourceBuffer,
14227                      i = {};
14228                    for (var n in e) i[n] = ri.getBuffered(e[n]);
14229                    (r.appendErrors[o] = 0),
14230                      'audio' === o || 'video' === o
14231                        ? (r.appendErrors.audiovideo = 0)
14232                        : ((r.appendErrors.audio = 0), (r.appendErrors.video = 0)),
14233                      r.hls.trigger(S.BUFFER_APPENDED, {
14234                        type: o,
14235                        frag: l,
14236                        part: u,
14237                        chunkMeta: h,
14238                        parent: l.type,
14239                        timeRanges: i,
14240                      });
14241                  },
14242                  onError: function (t) {
14243                    var e = {
14244                      type: L.MEDIA_ERROR,
14245                      parent: l.type,
14246                      details: A.BUFFER_APPEND_ERROR,
14247                      sourceBufferName: o,
14248                      frag: l,
14249                      part: u,
14250                      chunkMeta: h,
14251                      error: t,
14252                      err: t,
14253                      fatal: !1,
14254                    };
14255                    if (t.code === DOMException.QUOTA_EXCEEDED_ERR) e.details = A.BUFFER_FULL_ERROR;
14256                    else {
14257                      var n = ++r.appendErrors[o];
14258                      (e.details = A.BUFFER_APPEND_ERROR),
14259                        r.warn(
14260                          'Failed ' +
14261                            n +
14262                            '/' +
14263                            i.config.appendErrorMaxRetry +
14264                            ' times to append segment in "' +
14265                            o +
14266                            '" sourceBuffer'
14267                        ),
14268                        n >= i.config.appendErrorMaxRetry && (e.fatal = !0);
14269                    }
14270                    i.trigger(S.ERROR, e);
14271                  },
14272                };
14273              n.append(y, o, !!this.pendingTracks[o]);
14274            }),
14275            (e.onBufferFlushing = function (t, e) {
14276              var r = this,
14277                i = this.operationQueue,
14278                n = function (t) {
14279                  return {
14280                    execute: r.removeExecutor.bind(r, t, e.startOffset, e.endOffset),
14281                    onStart: function () {},
14282                    onComplete: function () {
14283                      r.hls.trigger(S.BUFFER_FLUSHED, { type: t });
14284                    },
14285                    onError: function (e) {
14286                      r.warn('Failed to remove from ' + t + ' SourceBuffer', e);
14287                    },
14288                  };
14289                };
14290              e.type
14291                ? i.append(n(e.type), e.type)
14292                : this.getSourceBufferTypes().forEach(function (t) {
14293                    i.append(n(t), t);
14294                  });
14295            }),
14296            (e.onFragParsed = function (t, e) {
14297              var r = this,
14298                i = e.frag,
14299                n = e.part,
14300                a = [],
14301                s = n ? n.elementaryStreams : i.elementaryStreams;
14302              s[U] ? a.push('audiovideo') : (s[O] && a.push('audio'), s[N] && a.push('video')),
14303                0 === a.length &&
14304                  this.warn(
14305                    'Fragments must have at least one ElementaryStreamType set. type: ' +
14306                      i.type +
14307                      ' level: ' +
14308                      i.level +
14309                      ' sn: ' +
14310                      i.sn
14311                  ),
14312                this.blockBuffers(function () {
14313                  var t = self.performance.now();
14314                  (i.stats.buffering.end = t), n && (n.stats.buffering.end = t);
14315                  var e = n ? n.stats : i.stats;
14316                  r.hls.trigger(S.FRAG_BUFFERED, { frag: i, part: n, stats: e, id: i.type });
14317                }, a);
14318            }),
14319            (e.onFragChanged = function (t, e) {
14320              this.trimBuffers();
14321            }),
14322            (e.onBufferEos = function (t, e) {
14323              var r = this;
14324              this.getSourceBufferTypes().reduce(function (t, i) {
14325                var n = r.sourceBuffer[i];
14326                return (
14327                  !n ||
14328                    (e.type && e.type !== i) ||
14329                    ((n.ending = !0),
14330                    n.ended || ((n.ended = !0), r.log(i + ' sourceBuffer now EOS'))),
14331                  t && !(n && !n.ended)
14332                );
14333              }, !0) &&
14334                (this.log('Queueing mediaSource.endOfStream()'),
14335                this.blockBuffers(function () {
14336                  r.getSourceBufferTypes().forEach(function (t) {
14337                    var e = r.sourceBuffer[t];
14338                    e && (e.ending = !1);
14339                  });
14340                  var t = r.mediaSource;
14341                  t && 'open' === t.readyState
14342                    ? (r.log('Calling mediaSource.endOfStream()'), t.endOfStream())
14343                    : t &&
14344                      r.log(
14345                        'Could not call mediaSource.endOfStream(). mediaSource.readyState: ' +
14346                          t.readyState
14347                      );
14348                }));
14349            }),
14350            (e.onLevelUpdated = function (t, e) {
14351              var r = e.details;
14352              r.fragments.length &&
14353                ((this.details = r),
14354                this.getSourceBufferTypes().length
14355                  ? this.blockBuffers(this.updateMediaElementDuration.bind(this))
14356                  : this.updateMediaElementDuration());
14357            }),
14358            (e.trimBuffers = function () {
14359              var t = this.hls,
14360                e = this.details,
14361                r = this.media;
14362              if (r && null !== e && this.getSourceBufferTypes().length) {
14363                var i = t.config,
14364                  n = r.currentTime,
14365                  a = e.levelTargetDuration,
14366                  s =
14367                    e.live && null !== i.liveBackBufferLength
14368                      ? i.liveBackBufferLength
14369                      : i.backBufferLength;
14370                if (y(s) && s > 0) {
14371                  var o = Math.max(s, a),
14372                    l = Math.floor(n / a) * a - o;
14373                  this.flushBackBuffer(n, a, l);
14374                }
14375                if (y(i.frontBufferFlushThreshold) && i.frontBufferFlushThreshold > 0) {
14376                  var u = Math.max(i.maxBufferLength, i.frontBufferFlushThreshold),
14377                    h = Math.max(u, a),
14378                    d = Math.floor(n / a) * a + h;
14379                  this.flushFrontBuffer(n, a, d);
14380                }
14381              }
14382            }),
14383            (e.flushBackBuffer = function (t, e, r) {
14384              var i = this,
14385                n = this.details,
14386                a = this.sourceBuffer;
14387              this.getSourceBufferTypes().forEach(function (s) {
14388                var o = a[s];
14389                if (o) {
14390                  var l = ri.getBuffered(o);
14391                  if (l.length > 0 && r > l.start(0)) {
14392                    if (
14393                      (i.hls.trigger(S.BACK_BUFFER_REACHED, { bufferEnd: r }), null != n && n.live)
14394                    )
14395                      i.hls.trigger(S.LIVE_BACK_BUFFER_REACHED, { bufferEnd: r });
14396                    else if (o.ended && l.end(l.length - 1) - t < 2 * e)
14397                      return void i.log(
14398                        'Cannot flush ' + s + ' back buffer while SourceBuffer is in ended state'
14399                      );
14400                    i.hls.trigger(S.BUFFER_FLUSHING, { startOffset: 0, endOffset: r, type: s });
14401                  }
14402                }
14403              });
14404            }),
14405            (e.flushFrontBuffer = function (t, e, r) {
14406              var i = this,
14407                n = this.sourceBuffer;
14408              this.getSourceBufferTypes().forEach(function (a) {
14409                var s = n[a];
14410                if (s) {
14411                  var o = ri.getBuffered(s),
14412                    l = o.length;
14413                  if (l < 2) return;
14414                  var u = o.start(l - 1),
14415                    h = o.end(l - 1);
14416                  if (r > u || (t >= u && t <= h)) return;
14417                  if (s.ended && t - h < 2 * e)
14418                    return void i.log(
14419                      'Cannot flush ' + a + ' front buffer while SourceBuffer is in ended state'
14420                    );
14421                  i.hls.trigger(S.BUFFER_FLUSHING, { startOffset: u, endOffset: 1 / 0, type: a });
14422                }
14423              });
14424            }),
14425            (e.updateMediaElementDuration = function () {
14426              if (
14427                this.details &&
14428                this.media &&
14429                this.mediaSource &&
14430                'open' === this.mediaSource.readyState
14431              ) {
14432                var t = this.details,
14433                  e = this.hls,
14434                  r = this.media,
14435                  i = this.mediaSource,
14436                  n = t.fragments[0].start + t.totalduration,
14437                  a = r.duration,
14438                  s = y(i.duration) ? i.duration : 0;
14439                t.live && e.config.liveDurationInfinity
14440                  ? ((i.duration = 1 / 0), this.updateSeekableRange(t))
14441                  : ((n > s && n > a) || !y(a)) &&
14442                    (this.log('Updating Media Source duration to ' + n.toFixed(3)),
14443                    (i.duration = n));
14444              }
14445            }),
14446            (e.updateSeekableRange = function (t) {
14447              var e = this.mediaSource,
14448                r = t.fragments;
14449              if (r.length && t.live && null != e && e.setLiveSeekableRange) {
14450                var i = Math.max(0, r[0].start),
14451                  n = Math.max(i, i + t.totalduration);
14452                this.log(
14453                  'Media Source duration is set to ' +
14454                    e.duration +
14455                    '. Setting seekable range to ' +
14456                    i +
14457                    '-' +
14458                    n +
14459                    '.'
14460                ),
14461                  e.setLiveSeekableRange(i, n);
14462              }
14463            }),
14464            (e.checkPendingTracks = function () {
14465              var t = this.bufferCodecEventsExpected,
14466                e = this.operationQueue,
14467                r = this.pendingTracks,
14468                i = Object.keys(r).length;
14469              if (i && (!t || 2 === i || 'audiovideo' in r)) {
14470                this.createSourceBuffers(r), (this.pendingTracks = {});
14471                var n = this.getSourceBufferTypes();
14472                if (n.length)
14473                  this.hls.trigger(S.BUFFER_CREATED, { tracks: this.tracks }),
14474                    n.forEach(function (t) {
14475                      e.executeNext(t);
14476                    });
14477                else {
14478                  var a = new Error('could not create source buffer for media codec(s)');
14479                  this.hls.trigger(S.ERROR, {
14480                    type: L.MEDIA_ERROR,
14481                    details: A.BUFFER_INCOMPATIBLE_CODECS_ERROR,
14482                    fatal: !0,
14483                    error: a,
14484                    reason: a.message,
14485                  });
14486                }
14487              }
14488            }),
14489            (e.createSourceBuffers = function (t) {
14490              var e = this,
14491                r = this.sourceBuffer,
14492                i = this.mediaSource;
14493              if (!i) throw Error('createSourceBuffers called when mediaSource was null');
14494              var n = function (n) {
14495                if (!r[n]) {
14496                  var a,
14497                    s = t[n];
14498                  if (!s)
14499                    throw Error('source buffer exists for track ' + n + ', however track does not');
14500                  var o =
14501                    -1 === (null == (a = s.levelCodec) ? void 0 : a.indexOf(','))
14502                      ? s.levelCodec
14503                      : s.codec;
14504                  o && 'audio' === n.slice(0, 5) && (o = ve(o, e.appendSource));
14505                  var l = s.container + ';codecs=' + o;
14506                  e.log('creating sourceBuffer(' + l + ')');
14507                  try {
14508                    var u = (r[n] = i.addSourceBuffer(l)),
14509                      h = n;
14510                    e.addBufferListener(h, 'updatestart', e._onSBUpdateStart),
14511                      e.addBufferListener(h, 'updateend', e._onSBUpdateEnd),
14512                      e.addBufferListener(h, 'error', e._onSBUpdateError),
14513                      e.appendSource &&
14514                        e.addBufferListener(h, 'bufferedchange', function (t, r) {
14515                          var i = r.removedRanges;
14516                          null != i && i.length && e.hls.trigger(S.BUFFER_FLUSHED, { type: n });
14517                        }),
14518                      (e.tracks[n] = {
14519                        buffer: u,
14520                        codec: o,
14521                        container: s.container,
14522                        levelCodec: s.levelCodec,
14523                        metadata: s.metadata,
14524                        id: s.id,
14525                      });
14526                  } catch (t) {
14527                    e.error('error while trying to add sourceBuffer: ' + t.message),
14528                      e.hls.trigger(S.ERROR, {
14529                        type: L.MEDIA_ERROR,
14530                        details: A.BUFFER_ADD_CODEC_ERROR,
14531                        fatal: !1,
14532                        error: t,
14533                        sourceBufferName: n,
14534                        mimeType: l,
14535                      });
14536                  }
14537                }
14538              };
14539              for (var a in t) n(a);
14540            }),
14541            (e._onSBUpdateStart = function (t) {
14542              this.operationQueue.current(t).onStart();
14543            }),
14544            (e._onSBUpdateEnd = function (t) {
14545              var e;
14546              if ('closed' !== (null == (e = this.mediaSource) ? void 0 : e.readyState)) {
14547                var r = this.operationQueue;
14548                r.current(t).onComplete(), r.shiftAndExecuteNext(t);
14549              } else this.resetBuffer(t);
14550            }),
14551            (e._onSBUpdateError = function (t, e) {
14552              var r,
14553                i = new Error(
14554                  t +
14555                    ' SourceBuffer error. MediaSource readyState: ' +
14556                    (null == (r = this.mediaSource) ? void 0 : r.readyState)
14557                );
14558              this.error('' + i, e),
14559                this.hls.trigger(S.ERROR, {
14560                  type: L.MEDIA_ERROR,
14561                  details: A.BUFFER_APPENDING_ERROR,
14562                  sourceBufferName: t,
14563                  error: i,
14564                  fatal: !1,
14565                });
14566              var n = this.operationQueue.current(t);
14567              n && n.onError(i);
14568            }),
14569            (e.removeExecutor = function (t, e, r) {
14570              var i = this.media,
14571                n = this.mediaSource,
14572                a = this.operationQueue,
14573                s = this.sourceBuffer[t];
14574              if (!i || !n || !s)
14575                return (
14576                  this.warn(
14577                    'Attempting to remove from the ' + t + ' SourceBuffer, but it does not exist'
14578                  ),
14579                  void a.shiftAndExecuteNext(t)
14580                );
14581              var o = y(i.duration) ? i.duration : 1 / 0,
14582                l = y(n.duration) ? n.duration : 1 / 0,
14583                u = Math.max(0, e),
14584                h = Math.min(r, o, l);
14585              h > u && (!s.ending || s.ended)
14586                ? ((s.ended = !1),
14587                  this.log('Removing [' + u + ',' + h + '] from the ' + t + ' SourceBuffer'),
14588                  s.remove(u, h))
14589                : a.shiftAndExecuteNext(t);
14590            }),
14591            (e.appendExecutor = function (t, e) {
14592              var r = this.sourceBuffer[e];
14593              if (r) (r.ended = !1), r.appendBuffer(t);
14594              else if (!this.pendingTracks[e])
14595                throw new Error(
14596                  'Attempting to append to the ' + e + ' SourceBuffer, but it does not exist'
14597                );
14598            }),
14599            (e.blockBuffers = function (t, e) {
14600              var r = this;
14601              if ((void 0 === e && (e = this.getSourceBufferTypes()), !e.length))
14602                return (
14603                  this.log('Blocking operation requested, but no SourceBuffers exist'),
14604                  void Promise.resolve().then(t)
14605                );
14606              var i = this.operationQueue,
14607                n = e.map(function (t) {
14608                  return i.appendBlocker(t);
14609                });
14610              Promise.all(n).then(function () {
14611                t(),
14612                  e.forEach(function (t) {
14613                    var e = r.sourceBuffer[t];
14614                    (null != e && e.updating) || i.shiftAndExecuteNext(t);
14615                  });
14616              });
14617            }),
14618            (e.getSourceBufferTypes = function () {
14619              return Object.keys(this.sourceBuffer);
14620            }),
14621            (e.addBufferListener = function (t, e, r) {
14622              var i = this.sourceBuffer[t];
14623              if (i) {
14624                var n = r.bind(this, t);
14625                this.listeners[t].push({ event: e, listener: n }), i.addEventListener(e, n);
14626              }
14627            }),
14628            (e.removeBufferListeners = function (t) {
14629              var e = this.sourceBuffer[t];
14630              e &&
14631                this.listeners[t].forEach(function (t) {
14632                  e.removeEventListener(t.event, t.listener);
14633                });
14634            }),
14635            s(t, [
14636              {
14637                key: 'mediaSrc',
14638                get: function () {
14639                  var t,
14640                    e,
14641                    r =
14642                      (null == (t = this.media) || null == (e = t.querySelector)
14643                        ? void 0
14644                        : e.call(t, 'source')) || this.media;
14645                  return null == r ? void 0 : r.src;
14646                },
14647              },
14648            ]),
14649            t
14650          );
14651        })();
14652      function aa(t) {
14653        var e = t.querySelectorAll('source');
14654        [].slice.call(e).forEach(function (e) {
14655          t.removeChild(e);
14656        });
14657      }
14658      var sa = {
14659          42: 225,
14660          92: 233,
14661          94: 237,
14662          95: 243,
14663          96: 250,
14664          123: 231,
14665          124: 247,
14666          125: 209,
14667          126: 241,
14668          127: 9608,
14669          128: 174,
14670          129: 176,
14671          130: 189,
14672          131: 191,
14673          132: 8482,
14674          133: 162,
14675          134: 163,
14676          135: 9834,
14677          136: 224,
14678          137: 32,
14679          138: 232,
14680          139: 226,
14681          140: 234,
14682          141: 238,
14683          142: 244,
14684          143: 251,
14685          144: 193,
14686          145: 201,
14687          146: 211,
14688          147: 218,
14689          148: 220,
14690          149: 252,
14691          150: 8216,
14692          151: 161,
14693          152: 42,
14694          153: 8217,
14695          154: 9473,
14696          155: 169,
14697          156: 8480,
14698          157: 8226,
14699          158: 8220,
14700          159: 8221,
14701          160: 192,
14702          161: 194,
14703          162: 199,
14704          163: 200,
14705          164: 202,
14706          165: 203,
14707          166: 235,
14708          167: 206,
14709          168: 207,
14710          169: 239,
14711          170: 212,
14712          171: 217,
14713          172: 249,
14714          173: 219,
14715          174: 171,
14716          175: 187,
14717          176: 195,
14718          177: 227,
14719          178: 205,
14720          179: 204,
14721          180: 236,
14722          181: 210,
14723          182: 242,
14724          183: 213,
14725          184: 245,
14726          185: 123,
14727          186: 125,
14728          187: 92,
14729          188: 94,
14730          189: 95,
14731          190: 124,
14732          191: 8764,
14733          192: 196,
14734          193: 228,
14735          194: 214,
14736          195: 246,
14737          196: 223,
14738          197: 165,
14739          198: 164,
14740          199: 9475,
14741          200: 197,
14742          201: 229,
14743          202: 216,
14744          203: 248,
14745          204: 9487,
14746          205: 9491,
14747          206: 9495,
14748          207: 9499,
14749        },
14750        oa = function (t) {
14751          return String.fromCharCode(sa[t] || t);
14752        },
14753        la = 15,
14754        ua = 100,
14755        ha = { 17: 1, 18: 3, 21: 5, 22: 7, 23: 9, 16: 11, 19: 12, 20: 14 },
14756        da = { 17: 2, 18: 4, 21: 6, 22: 8, 23: 10, 19: 13, 20: 15 },
14757        ca = { 25: 1, 26: 3, 29: 5, 30: 7, 31: 9, 24: 11, 27: 12, 28: 14 },
14758        fa = { 25: 2, 26: 4, 29: 6, 30: 8, 31: 10, 27: 13, 28: 15 },
14759        ga = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'black', 'transparent'],
14760        va = (function () {
14761          function t() {
14762            (this.time = null), (this.verboseLevel = 0);
14763          }
14764          return (
14765            (t.prototype.log = function (t, e) {
14766              if (this.verboseLevel >= t) {
14767                var r = 'function' == typeof e ? e() : e;
14768                w.log(this.time + ' [' + t + '] ' + r);
14769              }
14770            }),
14771            t
14772          );
14773        })(),
14774        ma = function (t) {
14775          for (var e = [], r = 0; r < t.length; r++) e.push(t[r].toString(16));
14776          return e;
14777        },
14778        pa = (function () {
14779          function t() {
14780            (this.foreground = 'white'),
14781              (this.underline = !1),
14782              (this.italics = !1),
14783              (this.background = 'black'),
14784              (this.flash = !1);
14785          }
14786          var e = t.prototype;
14787          return (
14788            (e.reset = function () {
14789              (this.foreground = 'white'),
14790                (this.underline = !1),
14791                (this.italics = !1),
14792                (this.background = 'black'),
14793                (this.flash = !1);
14794            }),
14795            (e.setStyles = function (t) {
14796              for (
14797                var e = ['foreground', 'underline', 'italics', 'background', 'flash'], r = 0;
14798                r < e.length;
14799                r++
14800              ) {
14801                var i = e[r];
14802                t.hasOwnProperty(i) && (this[i] = t[i]);
14803              }
14804            }),
14805            (e.isDefault = function () {
14806              return (
14807                'white' === this.foreground &&
14808                !this.underline &&
14809                !this.italics &&
14810                'black' === this.background &&
14811                !this.flash
14812              );
14813            }),
14814            (e.equals = function (t) {
14815              return (
14816                this.foreground === t.foreground &&
14817                this.underline === t.underline &&
14818                this.italics === t.italics &&
14819                this.background === t.background &&
14820                this.flash === t.flash
14821              );
14822            }),
14823            (e.copy = function (t) {
14824              (this.foreground = t.foreground),
14825                (this.underline = t.underline),
14826                (this.italics = t.italics),
14827                (this.background = t.background),
14828                (this.flash = t.flash);
14829            }),
14830            (e.toString = function () {
14831              return (
14832                'color=' +
14833                this.foreground +
14834                ', underline=' +
14835                this.underline +
14836                ', italics=' +
14837                this.italics +
14838                ', background=' +
14839                this.background +
14840                ', flash=' +
14841                this.flash
14842              );
14843            }),
14844            t
14845          );
14846        })(),
14847        ya = (function () {
14848          function t() {
14849            (this.uchar = ' '), (this.penState = new pa());
14850          }
14851          var e = t.prototype;
14852          return (
14853            (e.reset = function () {
14854              (this.uchar = ' '), this.penState.reset();
14855            }),
14856            (e.setChar = function (t, e) {
14857              (this.uchar = t), this.penState.copy(e);
14858            }),
14859            (e.setPenState = function (t) {
14860              this.penState.copy(t);
14861            }),
14862            (e.equals = function (t) {
14863              return this.uchar === t.uchar && this.penState.equals(t.penState);
14864            }),
14865            (e.copy = function (t) {
14866              (this.uchar = t.uchar), this.penState.copy(t.penState);
14867            }),
14868            (e.isEmpty = function () {
14869              return ' ' === this.uchar && this.penState.isDefault();
14870            }),
14871            t
14872          );
14873        })(),
14874        Ea = (function () {
14875          function t(t) {
14876            (this.chars = []),
14877              (this.pos = 0),
14878              (this.currPenState = new pa()),
14879              (this.cueStartTime = null),
14880              (this.logger = void 0);
14881            for (var e = 0; e < ua; e++) this.chars.push(new ya());
14882            this.logger = t;
14883          }
14884          var e = t.prototype;
14885          return (
14886            (e.equals = function (t) {
14887              for (var e = 0; e < ua; e++) if (!this.chars[e].equals(t.chars[e])) return !1;
14888              return !0;
14889            }),
14890            (e.copy = function (t) {
14891              for (var e = 0; e < ua; e++) this.chars[e].copy(t.chars[e]);
14892            }),
14893            (e.isEmpty = function () {
14894              for (var t = !0, e = 0; e < ua; e++)
14895                if (!this.chars[e].isEmpty()) {
14896                  t = !1;
14897                  break;
14898                }
14899              return t;
14900            }),
14901            (e.setCursor = function (t) {
14902              this.pos !== t && (this.pos = t),
14903                this.pos < 0
14904                  ? (this.logger.log(3, 'Negative cursor position ' + this.pos), (this.pos = 0))
14905                  : this.pos > ua &&
14906                    (this.logger.log(3, 'Too large cursor position ' + this.pos), (this.pos = ua));
14907            }),
14908            (e.moveCursor = function (t) {
14909              var e = this.pos + t;
14910              if (t > 1)
14911                for (var r = this.pos + 1; r < e + 1; r++)
14912                  this.chars[r].setPenState(this.currPenState);
14913              this.setCursor(e);
14914            }),
14915            (e.backSpace = function () {
14916              this.moveCursor(-1), this.chars[this.pos].setChar(' ', this.currPenState);
14917            }),
14918            (e.insertChar = function (t) {
14919              var e = this;
14920              t >= 144 && this.backSpace();
14921              var r = oa(t);
14922              this.pos >= ua
14923                ? this.logger.log(0, function () {
14924                    return (
14925                      'Cannot insert ' +
14926                      t.toString(16) +
14927                      ' (' +
14928                      r +
14929                      ') at position ' +
14930                      e.pos +
14931                      '. Skipping it!'
14932                    );
14933                  })
14934                : (this.chars[this.pos].setChar(r, this.currPenState), this.moveCursor(1));
14935            }),
14936            (e.clearFromPos = function (t) {
14937              var e;
14938              for (e = t; e < ua; e++) this.chars[e].reset();
14939            }),
14940            (e.clear = function () {
14941              this.clearFromPos(0), (this.pos = 0), this.currPenState.reset();
14942            }),
14943            (e.clearToEndOfRow = function () {
14944              this.clearFromPos(this.pos);
14945            }),
14946            (e.getTextString = function () {
14947              for (var t = [], e = !0, r = 0; r < ua; r++) {
14948                var i = this.chars[r].uchar;
14949                ' ' !== i && (e = !1), t.push(i);
14950              }
14951              return e ? '' : t.join('');
14952            }),
14953            (e.setPenStyles = function (t) {
14954              this.currPenState.setStyles(t), this.chars[this.pos].setPenState(this.currPenState);
14955            }),
14956            t
14957          );
14958        })(),
14959        Ta = (function () {
14960          function t(t) {
14961            (this.rows = []),
14962              (this.currRow = 14),
14963              (this.nrRollUpRows = null),
14964              (this.lastOutputScreen = null),
14965              (this.logger = void 0);
14966            for (var e = 0; e < la; e++) this.rows.push(new Ea(t));
14967            this.logger = t;
14968          }
14969          var e = t.prototype;
14970          return (
14971            (e.reset = function () {
14972              for (var t = 0; t < la; t++) this.rows[t].clear();
14973              this.currRow = 14;
14974            }),
14975            (e.equals = function (t) {
14976              for (var e = !0, r = 0; r < la; r++)
14977                if (!this.rows[r].equals(t.rows[r])) {
14978                  e = !1;
14979                  break;
14980                }
14981              return e;
14982            }),
14983            (e.copy = function (t) {
14984              for (var e = 0; e < la; e++) this.rows[e].copy(t.rows[e]);
14985            }),
14986            (e.isEmpty = function () {
14987              for (var t = !0, e = 0; e < la; e++)
14988                if (!this.rows[e].isEmpty()) {
14989                  t = !1;
14990                  break;
14991                }
14992              return t;
14993            }),
14994            (e.backSpace = function () {
14995              this.rows[this.currRow].backSpace();
14996            }),
14997            (e.clearToEndOfRow = function () {
14998              this.rows[this.currRow].clearToEndOfRow();
14999            }),
15000            (e.insertChar = function (t) {
15001              this.rows[this.currRow].insertChar(t);
15002            }),
15003            (e.setPen = function (t) {
15004              this.rows[this.currRow].setPenStyles(t);
15005            }),
15006            (e.moveCursor = function (t) {
15007              this.rows[this.currRow].moveCursor(t);
15008            }),
15009            (e.setCursor = function (t) {
15010              this.logger.log(2, 'setCursor: ' + t), this.rows[this.currRow].setCursor(t);
15011            }),
15012            (e.setPAC = function (t) {
15013              this.logger.log(2, function () {
15014                return 'pacData = ' + JSON.stringify(t);
15015              });
15016              var e = t.row - 1;
15017              if (
15018                (this.nrRollUpRows && e < this.nrRollUpRows - 1 && (e = this.nrRollUpRows - 1),
15019                this.nrRollUpRows && this.currRow !== e)
15020              ) {
15021                for (var r = 0; r < la; r++) this.rows[r].clear();
15022                var i = this.currRow + 1 - this.nrRollUpRows,
15023                  n = this.lastOutputScreen;
15024                if (n) {
15025                  var a = n.rows[i].cueStartTime,
15026                    s = this.logger.time;
15027                  if (null !== a && null !== s && a < s)
15028                    for (var o = 0; o < this.nrRollUpRows; o++)
15029                      this.rows[e - this.nrRollUpRows + o + 1].copy(n.rows[i + o]);
15030                }
15031              }
15032              this.currRow = e;
15033              var l = this.rows[this.currRow];
15034              if (null !== t.indent) {
15035                var u = t.indent,
15036                  h = Math.max(u - 1, 0);
15037                l.setCursor(t.indent), (t.color = l.chars[h].penState.foreground);
15038              }
15039              var d = {
15040                foreground: t.color,
15041                underline: t.underline,
15042                italics: t.italics,
15043                background: 'black',
15044                flash: !1,
15045              };
15046              this.setPen(d);
15047            }),
15048            (e.setBkgData = function (t) {
15049              this.logger.log(2, function () {
15050                return 'bkgData = ' + JSON.stringify(t);
15051              }),
15052                this.backSpace(),
15053                this.setPen(t),
15054                this.insertChar(32);
15055            }),
15056            (e.setRollUpRows = function (t) {
15057              this.nrRollUpRows = t;
15058            }),
15059            (e.rollUp = function () {
15060              var t = this;
15061              if (null !== this.nrRollUpRows) {
15062                this.logger.log(1, function () {
15063                  return t.getDisplayText();
15064                });
15065                var e = this.currRow + 1 - this.nrRollUpRows,
15066                  r = this.rows.splice(e, 1)[0];
15067                r.clear(), this.rows.splice(this.currRow, 0, r), this.logger.log(2, 'Rolling up');
15068              } else this.logger.log(3, 'roll_up but nrRollUpRows not set yet');
15069            }),
15070            (e.getDisplayText = function (t) {
15071              t = t || !1;
15072              for (var e = [], r = '', i = -1, n = 0; n < la; n++) {
15073                var a = this.rows[n].getTextString();
15074                a && ((i = n + 1), t ? e.push('Row ' + i + ": '" + a + "'") : e.push(a.trim()));
15075              }
15076              return e.length > 0 && (r = t ? '[' + e.join(' | ') + ']' : e.join('\n')), r;
15077            }),
15078            (e.getTextAndFormat = function () {
15079              return this.rows;
15080            }),
15081            t
15082          );
15083        })(),
15084        Sa = (function () {
15085          function t(t, e, r) {
15086            (this.chNr = void 0),
15087              (this.outputFilter = void 0),
15088              (this.mode = void 0),
15089              (this.verbose = void 0),
15090              (this.displayedMemory = void 0),
15091              (this.nonDisplayedMemory = void 0),
15092              (this.lastOutputScreen = void 0),
15093              (this.currRollUpRow = void 0),
15094              (this.writeScreen = void 0),
15095              (this.cueStartTime = void 0),
15096              (this.logger = void 0),
15097              (this.chNr = t),
15098              (this.outputFilter = e),
15099              (this.mode = null),
15100              (this.verbose = 0),
15101              (this.displayedMemory = new Ta(r)),
15102              (this.nonDisplayedMemory = new Ta(r)),
15103              (this.lastOutputScreen = new Ta(r)),
15104              (this.currRollUpRow = this.displayedMemory.rows[14]),
15105              (this.writeScreen = this.displayedMemory),
15106              (this.mode = null),
15107              (this.cueStartTime = null),
15108              (this.logger = r);
15109          }
15110          var e = t.prototype;
15111          return (
15112            (e.reset = function () {
15113              (this.mode = null),
15114                this.displayedMemory.reset(),
15115                this.nonDisplayedMemory.reset(),
15116                this.lastOutputScreen.reset(),
15117                this.outputFilter.reset(),
15118                (this.currRollUpRow = this.displayedMemory.rows[14]),
15119                (this.writeScreen = this.displayedMemory),
15120                (this.mode = null),
15121                (this.cueStartTime = null);
15122            }),
15123            (e.getHandler = function () {
15124              return this.outputFilter;
15125            }),
15126            (e.setHandler = function (t) {
15127              this.outputFilter = t;
15128            }),
15129            (e.setPAC = function (t) {
15130              this.writeScreen.setPAC(t);
15131            }),
15132            (e.setBkgData = function (t) {
15133              this.writeScreen.setBkgData(t);
15134            }),
15135            (e.setMode = function (t) {
15136              t !== this.mode &&
15137                ((this.mode = t),
15138                this.logger.log(2, function () {
15139                  return 'MODE=' + t;
15140                }),
15141                'MODE_POP-ON' === this.mode
15142                  ? (this.writeScreen = this.nonDisplayedMemory)
15143                  : ((this.writeScreen = this.displayedMemory), this.writeScreen.reset()),
15144                'MODE_ROLL-UP' !== this.mode &&
15145                  ((this.displayedMemory.nrRollUpRows = null),
15146                  (this.nonDisplayedMemory.nrRollUpRows = null)),
15147                (this.mode = t));
15148            }),
15149            (e.insertChars = function (t) {
15150              for (var e = this, r = 0; r < t.length; r++) this.writeScreen.insertChar(t[r]);
15151              var i = this.writeScreen === this.displayedMemory ? 'DISP' : 'NON_DISP';
15152              this.logger.log(2, function () {
15153                return i + ': ' + e.writeScreen.getDisplayText(!0);
15154              }),
15155                ('MODE_PAINT-ON' !== this.mode && 'MODE_ROLL-UP' !== this.mode) ||
15156                  (this.logger.log(1, function () {
15157                    return 'DISPLAYED: ' + e.displayedMemory.getDisplayText(!0);
15158                  }),
15159                  this.outputDataUpdate());
15160            }),
15161            (e.ccRCL = function () {
15162              this.logger.log(2, 'RCL - Resume Caption Loading'), this.setMode('MODE_POP-ON');
15163            }),
15164            (e.ccBS = function () {
15165              this.logger.log(2, 'BS - BackSpace'),
15166                'MODE_TEXT' !== this.mode &&
15167                  (this.writeScreen.backSpace(),
15168                  this.writeScreen === this.displayedMemory && this.outputDataUpdate());
15169            }),
15170            (e.ccAOF = function () {}),
15171            (e.ccAON = function () {}),
15172            (e.ccDER = function () {
15173              this.logger.log(2, 'DER- Delete to End of Row'),
15174                this.writeScreen.clearToEndOfRow(),
15175                this.outputDataUpdate();
15176            }),
15177            (e.ccRU = function (t) {
15178              this.logger.log(2, 'RU(' + t + ') - Roll Up'),
15179                (this.writeScreen = this.displayedMemory),
15180                this.setMode('MODE_ROLL-UP'),
15181                this.writeScreen.setRollUpRows(t);
15182            }),
15183            (e.ccFON = function () {
15184              this.logger.log(2, 'FON - Flash On'), this.writeScreen.setPen({ flash: !0 });
15185            }),
15186            (e.ccRDC = function () {
15187              this.logger.log(2, 'RDC - Resume Direct Captioning'), this.setMode('MODE_PAINT-ON');
15188            }),
15189            (e.ccTR = function () {
15190              this.logger.log(2, 'TR'), this.setMode('MODE_TEXT');
15191            }),
15192            (e.ccRTD = function () {
15193              this.logger.log(2, 'RTD'), this.setMode('MODE_TEXT');
15194            }),
15195            (e.ccEDM = function () {
15196              this.logger.log(2, 'EDM - Erase Displayed Memory'),
15197                this.displayedMemory.reset(),
15198                this.outputDataUpdate(!0);
15199            }),
15200            (e.ccCR = function () {
15201              this.logger.log(2, 'CR - Carriage Return'),
15202                this.writeScreen.rollUp(),
15203                this.outputDataUpdate(!0);
15204            }),
15205            (e.ccENM = function () {
15206              this.logger.log(2, 'ENM - Erase Non-displayed Memory'),
15207                this.nonDisplayedMemory.reset();
15208            }),
15209            (e.ccEOC = function () {
15210              var t = this;
15211              if ((this.logger.log(2, 'EOC - End Of Caption'), 'MODE_POP-ON' === this.mode)) {
15212                var e = this.displayedMemory;
15213                (this.displayedMemory = this.nonDisplayedMemory),
15214                  (this.nonDisplayedMemory = e),
15215                  (this.writeScreen = this.nonDisplayedMemory),
15216                  this.logger.log(1, function () {
15217                    return 'DISP: ' + t.displayedMemory.getDisplayText();
15218                  });
15219              }
15220              this.outputDataUpdate(!0);
15221            }),
15222            (e.ccTO = function (t) {
15223              this.logger.log(2, 'TO(' + t + ') - Tab Offset'), this.writeScreen.moveCursor(t);
15224            }),
15225            (e.ccMIDROW = function (t) {
15226              var e = { flash: !1 };
15227              if (((e.underline = t % 2 == 1), (e.italics = t >= 46), e.italics))
15228                e.foreground = 'white';
15229              else {
15230                var r = Math.floor(t / 2) - 16;
15231                e.foreground = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta'][r];
15232              }
15233              this.logger.log(2, 'MIDROW: ' + JSON.stringify(e)), this.writeScreen.setPen(e);
15234            }),
15235            (e.outputDataUpdate = function (t) {
15236              void 0 === t && (t = !1);
15237              var e = this.logger.time;
15238              null !== e &&
15239                this.outputFilter &&
15240                (null !== this.cueStartTime || this.displayedMemory.isEmpty()
15241                  ? this.displayedMemory.equals(this.lastOutputScreen) ||
15242                    (this.outputFilter.newCue(this.cueStartTime, e, this.lastOutputScreen),
15243                    t && this.outputFilter.dispatchCue && this.outputFilter.dispatchCue(),
15244                    (this.cueStartTime = this.displayedMemory.isEmpty() ? null : e))
15245                  : (this.cueStartTime = e),
15246                this.lastOutputScreen.copy(this.displayedMemory));
15247            }),
15248            (e.cueSplitAtTime = function (t) {
15249              this.outputFilter &&
15250                (this.displayedMemory.isEmpty() ||
15251                  (this.outputFilter.newCue &&
15252                    this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory),
15253                  (this.cueStartTime = t)));
15254            }),
15255            t
15256          );
15257        })(),
15258        La = (function () {
15259          function t(t, e, r) {
15260            (this.channels = void 0),
15261              (this.currentChannel = 0),
15262              (this.cmdHistory = { a: null, b: null }),
15263              (this.logger = void 0);
15264            var i = (this.logger = new va());
15265            this.channels = [null, new Sa(t, e, i), new Sa(t + 1, r, i)];
15266          }
15267          var e = t.prototype;
15268          return (
15269            (e.getHandler = function (t) {
15270              return this.channels[t].getHandler();
15271            }),
15272            (e.setHandler = function (t, e) {
15273              this.channels[t].setHandler(e);
15274            }),
15275            (e.addData = function (t, e) {
15276              var r = this;
15277              this.logger.time = t;
15278              for (
15279                var i = function (t) {
15280                    var i = 127 & e[t],
15281                      n = 127 & e[t + 1],
15282                      a = !1,
15283                      s = null;
15284                    if (0 === i && 0 === n) return 0;
15285                    r.logger.log(3, function () {
15286                      return '[' + ma([e[t], e[t + 1]]) + '] -> (' + ma([i, n]) + ')';
15287                    });
15288                    var o = r.cmdHistory;
15289                    if (i >= 16 && i <= 31) {
15290                      if (
15291                        (function (t, e, r) {
15292                          return r.a === t && r.b === e;
15293                        })(i, n, o)
15294                      )
15295                        return (
15296                          Aa(null, null, o),
15297                          r.logger.log(3, function () {
15298                            return 'Repeated command (' + ma([i, n]) + ') is dropped';
15299                          }),
15300                          0
15301                        );
15302                      Aa(i, n, r.cmdHistory),
15303                        (a = r.parseCmd(i, n)) || (a = r.parseMidrow(i, n)),
15304                        a || (a = r.parsePAC(i, n)),
15305                        a || (a = r.parseBackgroundAttributes(i, n));
15306                    } else Aa(null, null, o);
15307                    if (!a && (s = r.parseChars(i, n))) {
15308                      var l = r.currentChannel;
15309                      l && l > 0
15310                        ? r.channels[l].insertChars(s)
15311                        : r.logger.log(2, 'No channel found yet. TEXT-MODE?');
15312                    }
15313                    a ||
15314                      s ||
15315                      r.logger.log(2, function () {
15316                        return (
15317                          "Couldn't parse cleaned data " +
15318                          ma([i, n]) +
15319                          ' orig: ' +
15320                          ma([e[t], e[t + 1]])
15321                        );
15322                      });
15323                  },
15324                  n = 0;
15325                n < e.length;
15326                n += 2
15327              )
15328                i(n);
15329            }),
15330            (e.parseCmd = function (t, e) {
15331              if (
15332                !(
15333                  ((20 === t || 28 === t || 21 === t || 29 === t) && e >= 32 && e <= 47) ||
15334                  ((23 === t || 31 === t) && e >= 33 && e <= 35)
15335                )
15336              )
15337                return !1;
15338              var r = 20 === t || 21 === t || 23 === t ? 1 : 2,
15339                i = this.channels[r];
15340              return (
15341                20 === t || 21 === t || 28 === t || 29 === t
15342                  ? 32 === e
15343                    ? i.ccRCL()
15344                    : 33 === e
15345                    ? i.ccBS()
15346                    : 34 === e
15347                    ? i.ccAOF()
15348                    : 35 === e
15349                    ? i.ccAON()
15350                    : 36 === e
15351                    ? i.ccDER()
15352                    : 37 === e
15353                    ? i.ccRU(2)
15354                    : 38 === e
15355                    ? i.ccRU(3)
15356                    : 39 === e
15357                    ? i.ccRU(4)
15358                    : 40 === e
15359                    ? i.ccFON()
15360                    : 41 === e
15361                    ? i.ccRDC()
15362                    : 42 === e
15363                    ? i.ccTR()
15364                    : 43 === e
15365                    ? i.ccRTD()
15366                    : 44 === e
15367                    ? i.ccEDM()
15368                    : 45 === e
15369                    ? i.ccCR()
15370                    : 46 === e
15371                    ? i.ccENM()
15372                    : 47 === e && i.ccEOC()
15373                  : i.ccTO(e - 32),
15374                (this.currentChannel = r),
15375                !0
15376              );
15377            }),
15378            (e.parseMidrow = function (t, e) {
15379              var r = 0;
15380              if ((17 === t || 25 === t) && e >= 32 && e <= 47) {
15381                if ((r = 17 === t ? 1 : 2) !== this.currentChannel)
15382                  return this.logger.log(0, 'Mismatch channel in midrow parsing'), !1;
15383                var i = this.channels[r];
15384                return (
15385                  !!i &&
15386                  (i.ccMIDROW(e),
15387                  this.logger.log(3, function () {
15388                    return 'MIDROW (' + ma([t, e]) + ')';
15389                  }),
15390                  !0)
15391                );
15392              }
15393              return !1;
15394            }),
15395            (e.parsePAC = function (t, e) {
15396              var r;
15397              if (
15398                !(
15399                  (((t >= 17 && t <= 23) || (t >= 25 && t <= 31)) && e >= 64 && e <= 127) ||
15400                  ((16 === t || 24 === t) && e >= 64 && e <= 95)
15401                )
15402              )
15403                return !1;
15404              var i = t <= 23 ? 1 : 2;
15405              r = e >= 64 && e <= 95 ? (1 === i ? ha[t] : ca[t]) : 1 === i ? da[t] : fa[t];
15406              var n = this.channels[i];
15407              return !!n && (n.setPAC(this.interpretPAC(r, e)), (this.currentChannel = i), !0);
15408            }),
15409            (e.interpretPAC = function (t, e) {
15410              var r,
15411                i = { color: null, italics: !1, indent: null, underline: !1, row: t };
15412              return (
15413                (r = e > 95 ? e - 96 : e - 64),
15414                (i.underline = 1 == (1 & r)),
15415                r <= 13
15416                  ? (i.color = [
15417                      'white',
15418                      'green',
15419                      'blue',
15420                      'cyan',
15421                      'red',
15422                      'yellow',
15423                      'magenta',
15424                      'white',
15425                    ][Math.floor(r / 2)])
15426                  : r <= 15
15427                  ? ((i.italics = !0), (i.color = 'white'))
15428                  : (i.indent = 4 * Math.floor((r - 16) / 2)),
15429                i
15430              );
15431            }),
15432            (e.parseChars = function (t, e) {
15433              var r,
15434                i,
15435                n = null,
15436                a = null;
15437              return (
15438                t >= 25 ? ((r = 2), (a = t - 8)) : ((r = 1), (a = t)),
15439                a >= 17 && a <= 19
15440                  ? ((i = 17 === a ? e + 80 : 18 === a ? e + 112 : e + 144),
15441                    this.logger.log(2, function () {
15442                      return "Special char '" + oa(i) + "' in channel " + r;
15443                    }),
15444                    (n = [i]))
15445                  : t >
15445= 32 && t <= 127 && (n = 0 === e ? [t] : [t, e]),
15446                n &&
15447                  this.logger.log(3, function () {
15448                    return 'Char codes =  ' + ma(n).join(',');
15449                  }),
15450                n
15451              );
15452            }),
15453            (e.parseBackgroundAttributes = function (t, e) {
15454              var r;
15455              if (
15456                !(
15457                  ((16 === t || 24 === t) && e >= 32 && e <= 47) ||
15458                  ((23 === t || 31 === t) && e >= 45 && e <= 47)
15459                )
15460              )
15461                return !1;
15462              var i = {};
15463              16 === t || 24 === t
15464                ? ((r = Math.floor((e - 32) / 2)),
15465                  (i.background = ga[r]),
15466                  e % 2 == 1 && (i.background = i.background + '_semi'))
15467                : 45 === e
15468                ? (i.background = 'transparent')
15469                : ((i.foreground = 'black'), 47 === e && (i.underline = !0));
15470              var n = t <= 23 ? 1 : 2;
15471              return this.channels[n].setBkgData(i), !0;
15472            }),
15473            (e.reset = function () {
15474              for (var t = 0; t < Object.keys(this.channels).length; t++) {
15475                var e = this.channels[t];
15476                e && e.reset();
15477              }
15478              Aa(null, null, this.cmdHistory);
15479            }),
15480            (e.cueSplitAtTime = function (t) {
15481              for (var e = 0; e < this.channels.length; e++) {
15482                var r = this.channels[e];
15483                r && r.cueSplitAtTime(t);
15484              }
15485            }),
15486            t
15487          );
15488        })();
15489      function Aa(t, e, r) {
15490        (r.a = t), (r.b = e);
15491      }
15492      var Ra = (function () {
15493          function t(t, e) {
15494            (this.timelineController = void 0),
15495              (this.cueRanges = []),
15496              (this.trackName = void 0),
15497              (this.startTime = null),
15498              (this.endTime = null),
15499              (this.screen = null),
15500              (this.timelineController = t),
15501              (this.trackName = e);
15502          }
15503          var e = t.prototype;
15504          return (
15505            (e.dispatchCue = function () {
15506              null !== this.startTime &&
15507                (this.timelineController.addCues(
15508                  this.trackName,
15509                  this.startTime,
15510                  this.endTime,
15511                  this.screen,
15512                  this.cueRanges
15513                ),
15514                (this.startTime = null));
15515            }),
15516            (e.newCue = function (t, e, r) {
15517              (null === this.startTime || this.startTime > t) && (this.startTime = t),
15518                (this.endTime = e),
15519                (this.screen = r),
15520                this.timelineController.createCaptionsTrack(this.trackName);
15521            }),
15522            (e.reset = function () {
15523              (this.cueRanges = []), (this.startTime = null);
15524            }),
15525            t
15526          );
15527        })(),
15528        ba = (function () {
15529          if (null != j && j.VTTCue) return self.VTTCue;
15530          var t = ['', 'lr', 'rl'],
15531            e = ['start', 'middle', 'end', 'left', 'right'];
15532          function r(t, e) {
15533            if ('string' != typeof e) return !1;
15534            if (!Array.isArray(t)) return !1;
15535            var r = e.toLowerCase();
15536            return !!~t.indexOf(r) && r;
15537          }
15538          function i(t) {
15539            return r(e, t);
15540          }
15541          function n(t) {
15542            for (var e = arguments.length, r = new Array(e > 1 ? e - 1 : 0), i = 1; i < e; i++)
15543              r[i - 1] = arguments[i];
15544            for (var n = 1; n < arguments.length; n++) {
15545              var a = arguments[n];
15546              for (var s in a) t[s] = a[s];
15547            }
15548            return t;
15549          }
15550          function a(e, a, s) {
15551            var o = this,
15552              l = { enumerable: !0 };
15553            o.hasBeenReset = !1;
15554            var u = '',
15555              h = !1,
15556              d = e,
15557              c = a,
15558              f = s,
15559              g = null,
15560              v = '',
15561              m = !0,
15562              p = 'auto',
15563              y = 'start',
15564              E = 50,
15565              T = 'middle',
15566              S = 50,
15567              L = 'middle';
15568            Object.defineProperty(
15569              o,
15570              'id',
15571              n({}, l, {
15572                get: function () {
15573                  return u;
15574                },
15575                set: function (t) {
15576                  u = '' + t;
15577                },
15578              })
15579            ),
15580              Object.defineProperty(
15581                o,
15582                'pauseOnExit',
15583                n({}, l, {
15584                  get: function () {
15585                    return h;
15586                  },
15587                  set: function (t) {
15588                    h = !!t;
15589                  },
15590                })
15591              ),
15592              Object.defineProperty(
15593                o,
15594                'startTime',
15595                n({}, l, {
15596                  get: function () {
15597                    return d;
15598                  },
15599                  set: function (t) {
15600                    if ('number' != typeof t)
15601                      throw new TypeError('Start time must be set to a number.');
15602                    (d = t), (this.hasBeenReset = !0);
15603                  },
15604                })
15605              ),
15606              Object.defineProperty(
15607                o,
15608                'endTime',
15609                n({}, l, {
15610                  get: function () {
15611                    return c;
15612                  },
15613                  set: function (t) {
15614                    if ('number' != typeof t)
15615                      throw new TypeError('End time must be set to a number.');
15616                    (c = t), (this.hasBeenReset = !0);
15617                  },
15618                })
15619              ),
15620              Object.defineProperty(
15621                o,
15622                'text',
15623                n({}, l, {
15624                  get: function () {
15625                    return f;
15626                  },
15627                  set: function (t) {
15628                    (f = '' + t), (this.hasBeenReset = !0);
15629                  },
15630                })
15631              ),
15632              Object.defineProperty(
15633                o,
15634                'region',
15635                n({}, l, {
15636                  get: function () {
15637                    return g;
15638                  },
15639                  set: function (t) {
15640                    (g = t), (this.hasBeenReset = !0);
15641                  },
15642                })
15643              ),
15644              Object.defineProperty(
15645                o,
15646                'vertical',
15647                n({}, l, {
15648                  get: function () {
15649                    return v;
15650                  },
15651                  set: function (e) {
15652                    var i = (function (e) {
15653                      return r(t, e);
15654                    })(e);
15655                    if (!1 === i)
15656                      throw new SyntaxError('An invalid or illegal string was specified.');
15657                    (v = i), (this.hasBeenReset = !0);
15658                  },
15659                })
15660              ),
15661              Object.defineProperty(
15662                o,
15663                'snapToLines',
15664                n({}, l, {
15665                  get: function () {
15666                    return m;
15667                  },
15668                  set: function (t) {
15669                    (m = !!t), (this.hasBeenReset = !0);
15670                  },
15671                })
15672              ),
15673              Object.defineProperty(
15674                o,
15675                'line',
15676                n({}, l, {
15677                  get: function () {
15678                    return p;
15679                  },
15680                  set: function (t) {
15681                    if ('number' != typeof t && 'auto' !== t)
15682                      throw new SyntaxError('An invalid number or illegal string was specified.');
15683                    (p = t), (this.hasBeenReset = !0);
15684                  },
15685                })
15686              ),
15687              Object.defineProperty(
15688                o,
15689                'lineAlign',
15690                n({}, l, {
15691                  get: function () {
15692                    return y;
15693                  },
15694                  set: function (t) {
15695                    var e = i(t);
15696                    if (!e) throw new SyntaxError('An invalid or illegal string was specified.');
15697                    (y = e), (this.hasBeenReset = !0);
15698                  },
15699                })
15700              ),
15701              Object.defineProperty(
15702                o,
15703                'position',
15704                n({}, l, {
15705                  get: function () {
15706                    return E;
15707                  },
15708                  set: function (t) {
15709                    if (t < 0 || t > 100) throw new Error('Position must be between 0 and 100.');
15710                    (E = t), (this.hasBeenReset = !0);
15711                  },
15712                })
15713              ),
15714              Object.defineProperty(
15715                o,
15716                'positionAlign',
15717                n({}, l, {
15718                  get: function () {
15719                    return T;
15720                  },
15721                  set: function (t) {
15722                    var e = i(t);
15723                    if (!e) throw new SyntaxError('An invalid or illegal string was specified.');
15724                    (T = e), (this.hasBeenReset = !0);
15725                  },
15726                })
15727              ),
15728              Object.defineProperty(
15729                o,
15730                'size',
15731                n({}, l, {
15732                  get: function () {
15733                    return S;
15734                  },
15735                  set: function (t) {
15736                    if (t < 0 || t > 100) throw new Error('Size must be between 0 and 100.');
15737                    (S = t), (this.hasBeenReset = !0);
15738                  },
15739                })
15740              ),
15741              Object.defineProperty(
15742                o,
15743                'align',
15744                n({}, l, {
15745                  get: function () {
15746                    return L;
15747                  },
15748                  set: function (t) {
15749                    var e = i(t);
15750                    if (!e) throw new SyntaxError('An invalid or illegal string was specified.');
15751                    (L = e), (this.hasBeenReset = !0);
15752                  },
15753                })
15754              ),
15755              (o.displayState = void 0);
15756          }
15757          return (
15758            (a.prototype.getCueAsHTML = function () {
15759              return self.WebVTT.convertCueToDOMTree(self, this.text);
15760            }),
15761            a
15762          );
15763        })(),
15764        ka = (function () {
15765          function t() {}
15766          return (
15767            (t.prototype.decode = function (t, e) {
15768              if (!t) return '';
15769              if ('string' != typeof t) throw new Error('Error - expected string data.');
15770              return decodeURIComponent(encodeURIComponent(t));
15771            }),
15772            t
15773          );
15774        })();
15775      function Da(t) {
15776        function e(t, e, r, i) {
15777          return 3600 * (0 | t) + 60 * (0 | e) + (0 | r) + parseFloat(i || 0);
15778        }
15779        var r = t.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);
15780        return r
15781          ? parseFloat(r[2]) > 59
15782            ? e(r[2], r[3], 0, r[4])
15783            : e(r[1], r[2], r[3], r[4])
15784          : null;
15785      }
15786      var Ia = (function () {
15787        function t() {
15788          this.values = Object.create(null);
15789        }
15790        var e = t.prototype;
15791        return (
15792          (e.set = function (t, e) {
15793            this.get(t) || '' === e || (this.values[t] = e);
15794          }),
15795          (e.get = function (t, e, r) {
15796            return r ? (this.has(t) ? this.values[t] : e[r]) : this.has(t) ? this.values[t] : e;
15797          }),
15798          (e.has = function (t) {
15799            return t in this.values;
15800          }),
15801          (e.alt = function (t, e, r) {
15802            for (var i = 0; i < r.length; ++i)
15803              if (e === r[i]) {
15804                this.set(t, e);
15805                break;
15806              }
15807          }),
15808          (e.integer = function (t, e) {
15809            /^-?\d+$/.test(e) && this.set(t, parseInt(e, 10));
15810          }),
15811          (e.percent = function (t, e) {
15812            if (/^([\d]{1,3})(\.[\d]*)?%$/.test(e)) {
15813              var r = parseFloat(e);
15814              if (r >= 0 && r <= 100) return this.set(t, r), !0;
15815            }
15816            return !1;
15817          }),
15818          t
15819        );
15820      })();
15821      function wa(t, e, r, i) {
15822        var n = i ? t.split(i) : [t];
15823        for (var a in n)
15824          if ('string' == typeof n[a]) {
15825            var s = n[a].split(r);
15826            2 === s.length && e(s[0], s[1]);
15827          }
15828      }
15829      var Ca = new ba(0, 0, ''),
15830        _a = 'middle' === Ca.align ? 'middle' : 'center';
15831      function xa(t, e, r) {
15832        var i = t;
15833        function n() {
15834          var e = Da(t);
15835          if (null === e) throw new Error('Malformed timestamp: ' + i);
15836          return (t = t.replace(/^[^\sa-zA-Z-]+/, '')), e;
15837        }
15838        function a() {
15839          t = t.replace(/^\s+/, '');
15840        }
15841        if ((a(), (e.startTime = n()), a(), '--\x3e' !== t.slice(0, 3)))
15842          throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): " + i);
15843        (t = t.slice(3)),
15844          a(),
15845          (e.endTime = n()),
15846          a(),
15847          (function (t, e) {
15848            var i = new Ia();
15849            wa(
15850              t,
15851              function (t, e) {
15852                var n;
15853                switch (t) {
15854                  case 'region':
15855                    for (var a = r.length - 1; a >= 0; a--)
15856                      if (r[a].id === e) {
15857                        i.set(t, r[a].region);
15858                        break;
15859                      }
15860                    break;
15861                  case 'vertical':
15862                    i.alt(t, e, ['rl', 'lr']);
15863                    break;
15864                  case 'line':
15865                    (n = e.split(',')),
15866                      i.integer(t, n[0]),
15867                      i.percent(t, n[0]) && i.set('snapToLines', !1),
15868                      i.alt(t, n[0], ['auto']),
15869                      2 === n.length && i.alt('lineAlign', n[1], ['start', _a, 'end']);
15870                    break;
15871                  case 'position':
15872                    (n = e.split(',')),
15873                      i.percent(t, n[0]),
15874                      2 === n.length &&
15875                        i.alt('positionAlign', n[1], [
15876                          'start',
15877                          _a,
15878                          'end',
15879                          'line-left',
15880                          'line-right',
15881                          'auto',
15882                        ]);
15883                    break;
15884                  case 'size':
15885                    i.percent(t, e);
15886                    break;
15887                  case 'align':
15888                    i.alt(t, e, ['start', _a, 'end', 'left', 'right']);
15889                }
15890              },
15891              /:/,
15892              /\s/
15893            ),
15894              (e.region = i.get('region', null)),
15895              (e.vertical = i.get('vertical', ''));
15896            var n = i.get('line', 'auto');
15897            'auto' === n && -1 === Ca.line && (n = -1),
15898              (e.line = n),
15899              (e.lineAlign = i.get('lineAlign', 'start')),
15900              (e.snapToLines = i.get('snapToLines', !0)),
15901              (e.size = i.get('size', 100)),
15902              (e.align = i.get('align', _a));
15903            var a = i.get('position', 'auto');
15904            'auto' === a &&
15905              50 === Ca.position &&
15906              (a =
15907                'start' === e.align || 'left' === e.align
15908                  ? 0
15909                  : 'end' === e.align || 'right' === e.align
15910                  ? 100
15911                  : 50),
15912              (e.position = a);
15913          })(t, e);
15914      }
15915      function Pa(t) {
15916        return t.replace(/<br(?: \/)?>/gi, '\n');
15917      }
15918      var Fa = (function () {
15919          function t() {
15920            (this.state = 'INITIAL'),
15921              (this.buffer = ''),
15922              (this.decoder = new ka()),
15923              (this.regionList = []),
15924              (this.cue = null),
15925              (this.oncue = void 0),
15926              (this.onparsingerror = void 0),
15927              (this.onflush = void 0);
15928          }
15929          var e = t.prototype;
15930          return (
15931            (e.parse = function (t) {
15932              var e = this;
15933              function r() {
15934                var t = e.buffer,
15935                  r = 0;
15936                for (t = Pa(t); r < t.length && '\r' !== t[r] && '\n' !== t[r]; ) ++r;
15937                var i = t.slice(0, r);
15938                return '\r' === t[r] && ++r, '\n' === t[r] && ++r, (e.buffer = t.slice(r)), i;
15939              }
15940              t && (e.buffer += e.decoder.decode(t, { stream: !0 }));
15941              try {
15942                var i = '';
15943                if ('INITIAL' === e.state) {
15944                  if (!/\r\n|\n/.test(e.buffer)) return this;
15945                  var n = (i = r()).match(/^()?WEBVTT([ \t].*)?$/);
15946                  if (null == n || !n[0]) throw new Error('Malformed WebVTT signature.');
15947                  e.state = 'HEADER';
15948                }
15949                for (var a = !1; e.buffer; ) {
15950                  if (!/\r\n|\n/.test(e.buffer)) return this;
15951                  switch ((a ? (a = !1) : (i = r()), e.state)) {
15952                    case 'HEADER':
15953                      /:/.test(i) ? wa(i, function (t, e) {}, /:/) : i || (e.state = 'ID');
15954                      continue;
15955                    case 'NOTE':
15956                      i || (e.state = 'ID');
15957                      continue;
15958                    case 'ID':
15959                      if (/^NOTE($|[ \t])/.test(i)) {
15960                        e.state = 'NOTE';
15961                        break;
15962                      }
15963                      if (!i) continue;
15964                      if (
15965                        ((e.cue = new ba(0, 0, '')), (e.state = 'CUE'), -1 === i.indexOf('--\x3e'))
15966                      ) {
15967                        e.cue.id = i;
15968                        continue;
15969                      }
15970                    case 'CUE':
15971                      if (!e.cue) {
15972                        e.state = 'BADCUE';
15973                        continue;
15974                      }
15975                      try {
15976                        xa(i, e.cue, e.regionList);
15977                      } catch (t) {
15978                        (e.cue = null), (e.state = 'BADCUE');
15979                        continue;
15980                      }
15981                      e.state = 'CUETEXT';
15982                      continue;
15983                    case 'CUETEXT':
15984                      var s = -1 !== i.indexOf('--\x3e');
15985                      if (!i || (s && (a = !0))) {
15986                        e.oncue && e.cue && e.oncue(e.cue), (e.cue = null), (e.state = 'ID');
15987                        continue;
15988                      }
15989                      if (null === e.cue) continue;
15990                      e.cue.text && (e.cue.text += '\n'), (e.cue.text += i);
15991                      continue;
15992                    case 'BADCUE':
15993                      i || (e.state = 'ID');
15994                  }
15995                }
15996              } catch (t) {
15997                'CUETEXT' === e.state && e.cue && e.oncue && e.oncue(e.cue),
15998                  (e.cue = null),
15999                  (e.state = 'INITIAL' === e.state ? 'BADWEBVTT' : 'BADCUE');
16000              }
16001              return this;
16002            }),
16003            (e.flush = function () {
16004              var t = this;
16005              try {
16006                if (
16007                  ((t.cue || 'HEADER' === t.state) && ((t.buffer += '\n\n'), t.parse()),
16008                  'INITIAL' === t.state || 'BADWEBVTT' === t.state)
16009                )
16010                  throw new Error('Malformed WebVTT signature.');
16011              } catch (e) {
16012                t.onparsingerror && t.onparsingerror(e);
16013              }
16014              return t.onflush && t.onflush(), this;
16015            }),
16016            t
16017          );
16018        })(),
16019        Ma = /\r\n|\n\r|\n|\r/g,
16020        Oa = function (t, e, r) {
16021          return void 0 === r && (r = 0), t.slice(r, r + e.length) === e;
16022        },
16023        Na = function (t) {
16024          for (var e = 5381, r = t.length; r; ) e = (33 * e) ^ t.charCodeAt(--r);
16025          return (e >>> 0).toString();
16026        };
16027      function Ua(t, e, r) {
16028        return Na(t.toString()) + Na(e.toString()) + Na(r);
16029      }
16030      function Ba(t, e, r, i, n, a, s) {
16031        var o,
16032          l,
16033          u,
16034          h = new Fa(),
16035          d = Rt(new Uint8Array(t)).trim().replace(Ma, '\n').split('\n'),
16036          c = [],
16037          f = e ? ((o = e.baseTime), void 0 === (l = e.timescale) && (l = 1), Rn(o, An, 1 / l)) : 0,
16038          g = '00:00.000',
16039          v = 0,
16040          m = 0,
16041          p = !0;
16042        (h.oncue = function (t) {
16043          var a = r[i],
16044            s = r.ccOffset,
16045            o = (v - f) / 9e4;
16046          if (
16047            (null != a &&
16048              a.new &&
16049              (void 0 !== m
16050                ? (s = r.ccOffset = a.start)
16051                : (function (t, e, r) {
16052                    var i = t[e],
16053                      n = t[i.prevCC];
16054                    if (!n || (!n.new && i.new))
16055                      return (t.ccOffset = t.presentationOffset = i.start), void (i.new = !1);
16056                    for (; null != (a = n) && a.new; ) {
16057                      var a;
16058                      (t.ccOffset += i.start - n.start), (i.new = !1), (n = t[(i = n).prevCC]);
16059                    }
16060                    t.presentationOffset = r;
16061                  })(r, i, o)),
16062            o)
16063          ) {
16064            if (!e) return void (u = new Error('Missing initPTS for VTT MPEGTS'));
16065            s = o - r.presentationOffset;
16066          }
16067          var l = t.endTime - t.startTime,
16068            h = wn(9e4 * (t.startTime + s - m), 9e4 * n) / 9e4;
16069          (t.startTime = Math.max(h, 0)), (t.endTime = Math.max(h + l, 0));
16070          var d = t.text.trim();
16071          (t.text = decodeURIComponent(encodeURIComponent(d))),
16072            t.id || (t.id = Ua(t.startTime, t.endTime, d)),
16073            t.endTime > 0 && c.push(t);
16074        }),
16075          (h.onparsingerror = function (t) {
16076            u = t;
16077          }),
16078          (h.onflush = function () {
16079            u ? s(u) : a(c);
16080          }),
16081          d.forEach(function (t) {
16082            if (p) {
16083              if (Oa(t, 'X-TIMESTAMP-MAP=')) {
16084                (p = !1),
16085                  t
16086                    .slice(16)
16087                    .split(',')
16088                    .forEach(function (t) {
16089                      Oa(t, 'LOCAL:')
16090                        ? (g = t.slice(6))
16091                        : Oa(t, 'MPEGTS:') && (v = parseInt(t.slice(7)));
16092                    });
16093                try {
16094                  m =
16095                    (function (t) {
16096                      var e = parseInt(t.slice(-3)),
16097                        r = parseInt(t.slice(-6, -4)),
16098                        i = parseInt(t.slice(-9, -7)),
16099                        n = t.length > 9 ? parseInt(t.substring(0, t.indexOf(':'))) : 0;
16100                      if (!(y(e) && y(r) && y(i) && y(n)))
16101                        throw Error('Malformed X-TIMESTAMP-MAP: Local:' + t);
16102                      return (e += 1e3 * r), (e += 6e4 * i) + 36e5 * n;
16103                    })(g) / 1e3;
16104                } catch (t) {
16105                  u = t;
16106                }
16107                return;
16108              }
16109              '' === t && (p = !1);
16110            }
16111            h.parse(t + '\n');
16112          }),
16113          h.flush();
16114      }
16115      var Ga = 'stpp.ttml.im1t',
16116        Ka = /^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,
16117        Ha = /^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,
16118        Va = { left: 'start', center: 'center', right: 'end', start: 'start', end: 'end' };
16119      function Ya(t, e, r, i) {
16120        var n = Ot(new Uint8Array(t), ['mdat']);
16121        if (0 !== n.length) {
16122          var a,
16123            s,
16124            l,
16125            u,
16126            h = n.map(function (t) {
16127              return Rt(t);
16128            }),
16129            d =
16130              ((a = e.baseTime),
16131              (s = 1),
16132              void 0 === (l = e.timescale) && (l = 1),
16133              void 0 === u && (u = !1),
16134              Rn(a, s, 1 / l, u));
16135          try {
16136            h.forEach(function (t) {
16137              return r(
16138                (function (t, e) {
16139                  var r = new DOMParser().parseFromString(t, 'text/xml'),
16140                    i = r.getElementsByTagName('tt')[0];
16141                  if (!i) throw new Error('Invalid ttml');
16142                  var n = { frameRate: 30, subFrameRate: 1, frameRateMultiplier: 0, tickRate: 0 },
16143                    a = Object.keys(n).reduce(function (t, e) {
16144                      return (t[e] = i.getAttribute('ttp:' + e) || n[e]), t;
16145                    }, {}),
16146                    s = 'preserve' !== i.getAttribute('xml:space'),
16147                    l = ja(Wa(i, 'styling', 'style')),
16148                    u = ja(Wa(i, 'layout', 'region')),
16149                    h = Wa(i, 'body', '[begin]');
16150                  return [].map
16151                    .call(h, function (t) {
16152                      var r = qa(t, s);
16153                      if (!r || !t.hasAttribute('begin')) return null;
16154                      var i = Qa(t.getAttribute('begin'), a),
16155                        n = Qa(t.getAttribute('dur'), a),
16156                        h = Qa(t.getAttribute('end'), a);
16157                      if (null === i) throw za(t);
16158                      if (null === h) {
16159                        if (null === n) throw za(t);
16160                        h = i + n;
16161                      }
16162                      var d = new ba(i - e, h - e, r);
16163                      d.id = Ua(d.startTime, d.endTime, d.text);
16164                      var c = (function (t, e, r) {
16165                          var i = 'http://www.w3.org/ns/ttml#styling',
16166                            n = null,
16167                            a = [
16168                              'displayAlign',
16169                              'textAlign',
16170                              'color',
16171                              'backgroundColor',
16172                              'fontSize',
16173                              'fontFamily',
16174                            ],
16175                            s =
16176                              null != t && t.hasAttribute('style') ? t.getAttribute('style') : null;
16177                          return (
16178                            s && r.hasOwnProperty(s) && (n = r[s]),
16179                            a.reduce(function (r, a) {
16180                              var s = Xa(e, i, a) || Xa(t, i, a) || Xa(n, i, a);
16181                              return s && (r[a] = s), r;
16182                            }, {})
16183                          );
16184                        })(u[t.getAttribute('region')], l[t.getAttribute('style')], l),
16185                        f = c.textAlign;
16186                      if (f) {
16187                        var g = Va[f];
16188                        g && (d.lineAlign = g), (d.align = f);
16189                      }
16190                      return o(d, c), d;
16191                    })
16192                    .filter(function (t) {
16193                      return null !== t;
16194                    });
16195                })(t, d)
16196              );
16197            });
16198          } catch (t) {
16199            i(t);
16200          }
16201        } else i(new Error('Could not parse IMSC1 mdat'));
16202      }
16203      function Wa(t, e, r) {
16204        var i = t.getElementsByTagName(e)[0];
16205        return i ? [].slice.call(i.querySelectorAll(r)) : [];
16206      }
16207      function ja(t) {
16208        return t.reduce(function (t, e) {
16209          var r = e.getAttribute('xml:id');
16210          return r && (t[r] = e), t;
16211        }, {});
16212      }
16213      function qa(t, e) {
16214        return [].slice.call(t.childNodes).reduce(function (t, r, i) {
16215          var n;
16216          return 'br' === r.nodeName && i
16217            ? t + '\n'
16218            : null != (n = r.childNodes) && n.length
16219            ? qa(r, e)
16220            : e
16221            ? t + r.textContent.trim().replace(/\s+/g, ' ')
16222            : t + r.textContent;
16223        }, '');
16224      }
16225      function Xa(t, e, r) {
16226        return t && t.hasAttributeNS(e, r) ? t.getAttributeNS(e, r) : null;
16227      }
16228      function za(t) {
16229        return new Error('Could not parse ttml timestamp ' + t);
16230      }
16231      function Qa(t, e) {
16232        if (!t) return null;
16233        var r = Da(t);
16234        return (
16235          null === r &&
16236            (Ka.test(t)
16237              ? (r = (function (t, e) {
16238                  var r = Ka.exec(t),
16239                    i = (0 | r[4]) + (0 | r[5]) / e.subFrameRate;
16240                  return 3600 * (0 | r[1]) + 60 * (0 | r[2]) + (0 | r[3]) + i / e.frameRate;
16241                })(t, e))
16242              : Ha.test(t) &&
16243                (r = (function (t, e) {
16244                  var r = Ha.exec(t),
16245                    i = Number(r[1]);
16246                  switch (r[2]) {
16247                    case 'h':
16248                      return 3600 * i;
16249                    case 'm':
16250                      return 60 * i;
16251                    case 'ms':
16252                      return 1e3 * i;
16253                    case 'f':
16254                      return i / e.frameRate;
16255                    case 't':
16256                      return i / e.tickRate;
16257                  }
16258                  return i;
16259                })(t, e))),
16260          r
16261        );
16262      }
16263      var Ja = (function () {
16264        function t(t) {
16265          (this.hls = void 0),
16266            (this.media = null),
16267            (this.config = void 0),
16268            (this.enabled = !0),
16269            (this.Cues = void 0),
16270            (this.textTracks = []),
16271            (this.tracks = []),
16272            (this.initPTS = []),
16273            (this.unparsedVttFrags = []),
16274            (this.captionsTracks = {}),
16275            (this.nonNativeCaptionsTracks = {}),
16276            (this.cea608Parser1 = void 0),
16277            (this.cea608Parser2 = void 0),
16278            (this.lastCc = -1),
16279            (this.lastSn = -1),
16280            (this.lastPartIndex = -1),
16281            (this.prevCC = -1),
16282            (this.vttCCs = {
16283              ccOffset: 0,
16284              presentationOffset: 0,
16285              0: { start: 0, prevCC: -1, new: !0 },
16286            }),
16287            (this.captionsProperties = void 0),
16288            (this.hls = t),
16289            (this.config = t.config),
16290            (this.Cues = t.config.cueHandler),
16291            (this.captionsProperties = {
16292              textTrack1: {
16293                label: this.config.captionsTextTrack1Label,
16294                languageCode: this.config.captionsTextTrack1LanguageCode,
16295              },
16296              textTrack2: {
16297                label: this.config.captionsTextTrack2Label,
16298                languageCode: this.config.captionsTextTrack2LanguageCode,
16299              },
16300              textTrack3: {
16301                label: this.config.captionsTextTrack3Label,
16302                languageCode: this.config.captionsTextTrack3LanguageCode,
16303              },
16304              textTrack4: {
16305                label: this.config.captionsTextTrack4Label,
16306                languageCode: this.config.captionsTextTrack4LanguageCode,
16307              },
16308            }),
16309            t.on(S.MEDIA_ATTACHING, this.onMediaAttaching, this),
16310            t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
16311            t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
16312            t.on(S.MANIFEST_LOADED, this.onManifestLoaded, this),
16313            t.on(S.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this),
16314            t.on(S.FRAG_LOADING, this.onFragLoading, this),
16315            t.on(S.FRAG_LOADED, this.onFragLoaded, this),
16316            t.on(S.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this),
16317            t.on(S.FRAG_DECRYPTED, this.onFragDecrypted, this),
16318            t.on(S.INIT_PTS_FOUND, this.onInitPtsFound, this),
16319            t.on(S.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this),
16320            t.on(S.BUFFER_FLUSHING, this.onBufferFlushing, this);
16321        }
16322        var e = t.prototype;
16323        return (
16324          (e.destroy = function () {
16325            var t = this.hls;
16326            t.off(S.MEDIA_ATTACHING, this.onMediaAttaching, this),
16327              t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
16328              t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
16329              t.off(S.MANIFEST_LOADED, this.onManifestLoaded, this),
16330              t.off(S.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this),
16331              t.off(S.FRAG_LOADING, this.onFragLoading, this),
16332              t.off(S.FRAG_LOADED, this.onFragLoaded, this),
16333              t.off(S.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this),
16334              t.off(S.FRAG_DECRYPTED, this.onFragDecrypted, this),
16335              t.off(S.INIT_PTS_FOUND, this.onInitPtsFound, this),
16336              t.off(S.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this),
16337              t.off(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
16338              (this.hls = this.config = null),
16339              (this.cea608Parser1 = this.cea608Parser2 = void 0);
16340          }),
16341          (e.initCea608Parsers = function () {
16342            if (this.config.enableCEA708Captions && (!this.cea608Parser1 || !this.cea608Parser2)) {
16343              var t = new Ra(this, 'textTrack1'),
16344                e = new Ra(this, 'textTrack2'),
16345                r = new Ra(this, 'textTrack3'),
16346                i = new Ra(this, 'textTrack4');
16347              (this.cea608Parser1 = new La(1, t, e)), (this.cea608Parser2 = new La(3, r, i));
16348            }
16349          }),
16350          (e.addCues = function (t, e, r, i, n) {
16351            for (var a, s, o, l, u = !1, h = n.length; h--; ) {
16352              var d = n[h],
16353                c = ((a = d[0]), (s = d[1]), (o = e), (l = r), Math.min(s, l) - Math.max(a, o));
16354              if (
16355                c >= 0 &&
16356                ((d[0] = Math.min(d[0], e)),
16357                (d[1] = Math.max(d[1], r)),
16358                (u = !0),
16359                c / (r - e) > 0.5)
16360              )
16361                return;
16362            }
16363            if ((u || n.push([e, r]), this.config.renderTextTracksNatively)) {
16364              var f = this.captionsTracks[t];
16365              this.Cues.newCue(f, e, r, i);
16366            } else {
16367              var g = this.Cues.newCue(null, e, r, i);
16368              this.hls.trigger(S.CUES_PARSED, { type: 'captions', cues: g, track: t });
16369            }
16370          }),
16371          (e.onInitPtsFound = function (t, e) {
16372            var r = this,
16373              i = e.frag,
16374              n = e.id,
16375              a = e.initPTS,
16376              s = e.timescale,
16377              o = this.unparsedVttFrags;
16378            'main' === n && (this.initPTS[i.cc] = { baseTime: a, timescale: s }),
16379              o.length &&
16380                ((this.unparsedVttFrags = []),
16381                o.forEach(function (t) {
16382                  r.onFragLoaded(S.FRAG_LOADED, t);
16383                }));
16384          }),
16385          (e.getExistingTrack = function (t, e) {
16386            var r = this.media;
16387            if (r)
16388              for (var i = 0; i < r.textTracks.length; i++) {
16389                var n = r.textTracks[i];
16390                if (Za(n, { name: t, lang: e, attrs: {} })) return n;
16391              }
16392            return null;
16393          }),
16394          (e.createCaptionsTrack = function (t) {
16395            this.config.renderTextTracksNatively
16396              ? this.createNativeTrack(t)
16397              : this.createNonNativeTrack(t);
16398          }),
16399          (e.createNativeTrack = function (t) {
16400            if (!this.captionsTracks[t]) {
16401              var e = this.captionsProperties,
16402                r = this.captionsTracks,
16403                i = this.media,
16404                n = e[t],
16405                a = n.label,
16406                s = n.languageCode,
16407                o = this.getExistingTrack(a, s);
16408              if (o) (r[t] = o), He(r[t]), Ge(r[t], i);
16409              else {
16410                var l = this.createTextTrack('captions', a, s);
16411                l && ((l[t] = !0), (r[t] = l));
16412              }
16413            }
16414          }),
16415          (e.createNonNativeTrack = function (t) {
16416            if (!this.nonNativeCaptionsTracks[t]) {
16417              var e = this.captionsProperties[t];
16418              if (e) {
16419                var r = {
16420                  _id: t,
16421                  label: e.label,
16422                  kind: 'captions',
16423                  default: !!e.media && !!e.media.default,
16424                  closedCaptions: e.media,
16425                };
16426                (this.nonNativeCaptionsTracks[t] = r),
16427                  this.hls.trigger(S.NON_NATIVE_TEXT_TRACKS_FOUND, { tracks: [r] });
16428              }
16429            }
16430          }),
16431          (e.createTextTrack = function (t, e, r) {
16432            var i = this.media;
16433            if (i) return i.addTextTrack(t, e, r);
16434          }),
16435          (e.onMediaAttaching = function (t, e) {
16436            (this.media = e.media), this._cleanTracks();
16437          }),
16438          (e.onMediaDetaching = function () {
16439            var t = this.captionsTracks;
16440            Object.keys(t).forEach(function (e) {
16441              He(t[e]), delete t[e];
16442            }),
16443              (this.nonNativeCaptionsTracks = {});
16444          }),
16445          (e.onManifestLoading = function () {
16446            (this.lastCc = -1),
16447              (this.lastSn = -1),
16448              (this.lastPartIndex = -1),
16449              (this.prevCC = -1),
16450              (this.vttCCs = {
16451                ccOffset: 0,
16452                presentationOffset: 0,
16453                0: { start: 0, prevCC: -1, new: !0 },
16454              }),
16455              this._cleanTracks(),
16456              (this.tracks = []),
16457              (this.captionsTracks = {}),
16458              (this.nonNativeCaptionsTracks = {}),
16459              (this.textTracks = []),
16460              (this.unparsedVttFrags = []),
16461              (this.initPTS = []),
16462              this.cea608Parser1 &&
16463                this.cea608Parser2 &&
16464                (this.cea608Parser1.reset(), this.cea608Parser2.reset());
16465          }),
16466          (e._cleanTracks = function () {
16467            var t = this.media;
16468            if (t) {
16469              var e = t.textTracks;
16470              if (e) for (var r = 0; r < e.length; r++) He(e[r]);
16471            }
16472          }),
16473          (e.onSubtitleTracksUpdated = function (t, e) {
16474            var r = this,
16475              i = e.subtitleTracks || [],
16476              n = i.some(function (t) {
16477                return t.textCodec === Ga;
16478              });
16479            if (this.config.enableWebVTT || (n && this.config.enableIMSC1)) {
16480              if (Xn(this.tracks, i)) return void (this.tracks = i);
16481              if (
16482                ((this.textTracks = []), (this.tracks = i), this.config.renderTextTracksNatively)
16483              ) {
16484                var a = this.media,
16485                  s = a ? Ye(a.textTracks) : null;
16486                if (
16487                  (this.tracks.forEach(function (t, e) {
16488                    var i;
16489                    if (s) {
16490                      for (var n = null, a = 0; a < s.length; a++)
16491                        if (s[a] && Za(s[a], t)) {
16492                          (n = s[a]), (s[a] = null);
16493                          break;
16494                        }
16495                      n && (i = n);
16496                    }
16497                    if (i) He(i);
16498                    else {
16499                      var o = $a(t);
16500                      (i = r.createTextTrack(o, t.name, t.lang)) && (i.mode = 'disabled');
16501                    }
16502                    i && r.textTracks.push(i);
16503                  }),
16504                  null != s && s.length)
16505                ) {
16506                  var o = s
16507                    .filter(function (t) {
16508                      return null !== t;
16509                    })
16510                    .map(function (t) {
16511                      return t.label;
16512                    });
16513                  o.length &&
16514                    w.warn(
16515                      'Media element contains unused subtitle tracks: ' +
16516                        o.join(', ') +
16517                        '. Replace media element for each source to clear TextTracks and captions menu.'
16518                    );
16519                }
16520              } else if (this.tracks.length) {
16521                var l = this.tracks.map(function (t) {
16522                  return {
16523                    label: t.name,
16524                    kind: t.type.toLowerCase(),
16525                    default: t.default,
16526                    subtitleTrack: t,
16527                  };
16528                });
16529                this.hls.trigger(S.NON_NATIVE_TEXT_TRACKS_FOUND, { tracks: l });
16530              }
16531            }
16532          }),
16533          (e.onManifestLoaded = function (t, e) {
16534            var r = this;
16535            this.config.enableCEA708Captions &&
16536              e.captions &&
16537              e.captions.forEach(function (t) {
16538                var e = /(?:CC|SERVICE)([1-4])/.exec(t.instreamId);
16539                if (e) {
16540                  var i = 'textTrack' + e[1],
16541                    n = r.captionsProperties[i];
16542                  n && ((n.label = t.name), t.lang && (n.languageCode = t.lang), (n.media = t));
16543                }
16544              });
16545          }),
16546          (e.closedCaptionsForLevel = function (t) {
16547            var e = this.hls.levels[t.level];
16548            return null == e ? void 0 : e.attrs['CLOSED-CAPTIONS'];
16549          }),
16550          (e.onFragLoading = function (t, e) {
16551            if (this.enabled && e.frag.type === Fe) {
16552              var r,
16553                i,
16554                n = this.cea608Parser1,
16555                a = this.cea608Parser2,
16556                s = this.lastSn,
16557                o = e.frag,
16558                l = o.cc,
16559                u = o.sn,
16560                h = null != (r = null == (i = e.part) ? void 0 : i.index) ? r : -1;
16561              n &&
16562                a &&
16563                (u !== s + 1 || (u === s && h !== this.lastPartIndex + 1) || l !== this.lastCc) &&
16564                (n.reset(), a.reset()),
16565                (this.lastCc = l),
16566                (this.lastSn = u),
16567                (this.lastPartIndex = h);
16568            }
16569          }),
16570          (e.onFragLoaded = function (t, e) {
16571            var r = e.frag,
16572              i = e.payload;
16573            if (r.type === Oe)
16574              if (i.byteLength) {
16575                var n = r.decryptdata,
16576                  a = 'stats' in e;
16577                if (null == n || !n.encrypted || a) {
16578                  var s = this.tracks[r.level],
16579                    o = this.vttCCs;
16580                  o[r.cc] ||
16581                    ((o[r.cc] = { start: r.start, prevCC: this.prevCC, new: !0 }),
16582                    (this.prevCC = r.cc)),
16583                    s && s.textCodec === Ga ? this._parseIMSC1(r, i) : this._parseVTTs(e);
16584                }
16585              } else
16586                this.hls.trigger(S.SUBTITLE_FRAG_PROCESSED, {
16587                  success: !1,
16588                  frag: r,
16589                  error: new Error('Empty subtitle payload'),
16590                });
16591          }),
16592          (e._parseIMSC1 = function (t, e) {
16593            var r = this,
16594              i = this.hls;
16595            Ya(
16596              e,
16597              this.initPTS[t.cc],
16598              function (e) {
16599                r._appendCues(e, t.level),
16600                  i.trigger(S.SUBTITLE_FRAG_PROCESSED, { success: !0, frag: t });
16601              },
16602              function (e) {
16603                w.log('Failed to parse IMSC1: ' + e),
16604                  i.trigger(S.SUBTITLE_FRAG_PROCESSED, { success: !1, frag: t, error: e });
16605              }
16606            );
16607          }),
16608          (e._parseVTTs = function (t) {
16609            var e,
16610              r = this,
16611              i = t.frag,
16612              n = t.payload,
16613              a = this.initPTS,
16614              s = this.unparsedVttFrags,
16615              o = a.length - 1;
16616            if (a[i.cc] || -1 !== o) {
16617              var l = this.hls;
16618              Ba(
16619                null != (e = i.initSegment) && e.data
16620                  ? Wt(i.initSegment.data, new Uint8Array(n))
16621                  : n,
16622                this.initPTS[i.cc],
16623                this.vttCCs,
16624                i.cc,
16625                i.start,
16626                function (t) {
16627                  r._appendCues(t, i.level),
16628                    l.trigger(S.SUBTITLE_FRAG_PROCESSED, { success: !0, frag: i });
16629                },
16630                function (e) {
16631                  var a = 'Missing initPTS for VTT MPEGTS' === e.message;
16632                  a ? s.push(t) : r._fallbackToIMSC1(i, n),
16633                    w.log('Failed to parse VTT cue: ' + e),
16634                    (a && o > i.cc) ||
16635                      l.trigger(S.SUBTITLE_FRAG_PROCESSED, { success: !1, frag: i, error: e });
16636                }
16637              );
16638            } else s.push(t);
16639          }),
16640          (e._fallbackToIMSC1 = function (t, e) {
16641            var r = this,
16642              i = this.tracks[t.level];
16643            i.textCodec ||
16644              Ya(
16645                e,
16646                this.initPTS[t.cc],
16647                function () {
16648                  (i.textCodec = Ga), r._parseIMSC1(t, e);
16649                },
16650                function () {
16651                  i.textCodec = 'wvtt';
16652                }
16653              );
16654          }),
16655          (e._appendCues = function (t, e) {
16656            var r = this.hls;
16657            if (this.config.renderTextTracksNatively) {
16658              var i = this.textTracks[e];
16659              if (!i || 'disabled' === i.mode) return;
16660              t.forEach(function (t) {
16661                return Ke(i, t);
16662              });
16663            } else {
16664              var n = this.tracks[e];
16665              if (!n) return;
16666              var a = n.default ? 'default' : 'subtitles' + e;
16667              r.trigger(S.CUES_PARSED, { type: 'subtitles', cues: t, track: a });
16668            }
16669          }),
16670          (e.onFragDecrypted = function (t, e) {
16671            e.frag.type === Oe && this.onFragLoaded(S.FRAG_LOADED, e);
16672          }),
16673          (e.onSubtitleTracksCleared = function () {
16674            (this.tracks = []), (this.captionsTracks = {});
16675          }),
16676          (e.onFragParsingUserdata = function (t, e) {
16677            this.initCea608Parsers();
16678            var r = this.cea608Parser1,
16679              i = this.cea608Parser2;
16680            if (this.enabled && r && i) {
16681              var n = e.frag,
16682                a = e.samples;
16683              if (n.type !== Fe || 'NONE' !== this.closedCaptionsForLevel(n))
16684                for (var s = 0; s < a.length; s++) {
16685                  var o = a[s].bytes;
16686                  if (o) {
16687                    var l = this.extractCea608Data(o);
16688                    r.addData(a[s].pts, l[0]), i.addData(a[s].pts, l[1]);
16689                  }
16690                }
16691            }
16692          }),
16693          (e.onBufferFlushing = function (t, e) {
16694            var r = e.startOffset,
16695              i = e.endOffset,
16696              n = e.endOffsetSubtitles,
16697              a = e.type,
16698              s = this.media;
16699            if (s && !(s.currentTime < i)) {
16700              if (!a || 'video' === a) {
16701                var o = this.captionsTracks;
16702                Object.keys(o).forEach(function (t) {
16703                  return Ve(o[t], r, i);
16704                });
16705              }
16706              if (this.config.renderTextTracksNatively && 0 === r && void 0 !== n) {
16707                var l = this.textTracks;
16708                Object.keys(l).forEach(function (t) {
16709                  return Ve(l[t], r, n);
16710                });
16711              }
16712            }
16713          }),
16714          (e.extractCea608Data = function (t) {
16715            for (var e = [[], []], r = 31 & t[0], i = 2, n = 0; n < r; n++) {
16716              var a = t[i++],
16717                s = 127 & t[i++],
16718                o = 127 & t[i++];
16719              if ((0 !== s || 0 !== o) && 0 != (4 & a)) {
16720                var l = 3 & a;
16721                (0 !== l && 1 !== l) || (e[l].push(s), e[l].push(o));
16722              }
16723            }
16724            return e;
16725          }),
16726          t
16727        );
16728      })();
16729      function $a(t) {
16730        return t.characteristics &&
16731          /transcribes-spoken-dialog/gi.test(t.characteristics) &&
16732          /describes-music-and-sound/gi.test(t.characteristics)
16733          ? 'captions'
16734          : 'subtitles';
16735      }
16736      function Za(t, e) {
16737        return !!t && t.kind === $a(e) && Qn(e, t);
16738      }
16739      var ts = (function () {
16740          function t(t) {
16741            (this.hls = void 0),
16742              (this.autoLevelCapping = void 0),
16743              (this.firstLevel = void 0),
16744              (this.media = void 0),
16745              (this.restrictedLevels = void 0),
16746              (this.timer = void 0),
16747              (this.clientRect = void 0),
16748              (this.streamController = void 0),
16749              (this.hls = t),
16750              (this.autoLevelCapping = Number.POSITIVE_INFINITY),
16751              (this.firstLevel = -1),
16752              (this.media = null),
16753              (this.restrictedLevels = []),
16754              (this.timer = void 0),
16755              (this.clientRect = null),
16756              this.registerListeners();
16757          }
16758          var e = t.prototype;
16759          return (
16760            (e.setStreamController = function (t) {
16761              this.streamController = t;
16762            }),
16763            (e.destroy = function () {
16764              this.hls && this.unregisterListener(),
16765                this.timer && this.stopCapping(),
16766                (this.media = null),
16767                (this.clientRect = null),
16768                (this.hls = this.streamController = null);
16769            }),
16770            (e.registerListeners = function () {
16771              var t = this.hls;
16772              t.on(S.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this),
16773                t.on(S.MEDIA_ATTACHING, this.onMediaAttaching, this),
16774                t.on(S.MANIFEST_PARSED, this.onManifestParsed, this),
16775                t.on(S.LEVELS_UPDATED, this.onLevelsUpdated, this),
16776                t.on(S.BUFFER_CODECS, this.onBufferCodecs, this),
16777                t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this);
16778            }),
16779            (e.unregisterListener = function () {
16780              var t = this.hls;
16781              t.off(S.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this),
16782                t.off(S.MEDIA_ATTACHING, this.onMediaAttaching, this),
16783                t.off(S.MANIFEST_PARSED, this.onManifestParsed, this),
16784                t.off(S.LEVELS_UPDATED, this.onLevelsUpdated, this),
16785                t.off(S.BUFFER_CODECS, this.onBufferCodecs, this),
16786                t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this);
16787            }),
16788            (e.onFpsDropLevelCapping = function (t, e) {
16789              var r = this.hls.levels[e.droppedLevel];
16790              this.isLevelAllowed(r) &&
16791                this.restrictedLevels.push({
16792                  bitrate: r.bitrate,
16793                  height: r.height,
16794                  width: r.width,
16795                });
16796            }),
16797            (e.onMediaAttaching = function (t, e) {
16798              (this.media = e.media instanceof HTMLVideoElement ? e.media : null),
16799                (this.clientRect = null),
16800                this.timer && this.hls.levels.length && this.detectPlayerSize();
16801            }),
16802            (e.onManifestParsed = function (t, e) {
16803              var r = this.hls;
16804              (this.restrictedLevels = []),
16805                (this.firstLevel = e.firstLevel),
16806                r.config.capLevelToPlayerSize && e.video && this.startCapping();
16807            }),
16808            (e.onLevelsUpdated = function (t, e) {
16809              this.timer && y(this.autoLevelCapping) && this.detectPlayerSize();
16810            }),
16811            (e.onBufferCodecs = function (t, e) {
16812              this.hls.config.capLevelToPlayerSize && e.video && this.startCapping();
16813            }),
16814            (e.onMediaDetaching = function () {
16815              this.stopCapping();
16816            }),
16817            (e.detectPlayerSize = function () {
16818              if (this.media) {
16819                if (this.mediaHeight <= 0 || this.mediaWidth <= 0)
16820                  return void (this.clientRect = null);
16821                var t = this.hls.levels;
16822                if (t.length) {
16823                  var e = this.hls,
16824                    r = this.getMaxLevel(t.length - 1);
16825                  r !== this.autoLevelCapping &&
16826                    w.log(
16827                      'Setting autoLevelCapping to ' +
16828                        r +
16829                        ': ' +
16830                        t[r].height +
16831                        'p@' +
16832                        t[r].bitrate +
16833                        ' for media ' +
16834                        this.mediaWidth +
16835                        'x' +
16836                        this.mediaHeight
16837                    ),
16838                    (e.autoLevelCapping = r),
16839                    e.autoLevelCapping > this.autoLevelCapping &&
16840                      this.streamController &&
16841                      this.streamController.nextLevelSwitch(),
16842                    (this.autoLevelCapping = e.autoLevelCapping);
16843                }
16844              }
16845            }),
16846            (e.getMaxLevel = function (e) {
16847              var r = this,
16848                i = this.hls.levels;
16849              if (!i.length) return -1;
16850              var n = i.filter(function (t, i) {
16851                return r.isLevelAllowed(t) && i <= e;
16852              });
16853              return (
16854                (this.clientRect = null),
16855                t.getMaxLevelByMediaSize(n, this.mediaWidth, this.mediaHeight)
16856              );
16857            }),
16858            (e.startCapping = function () {
16859              this.timer ||
16860                ((this.autoLevelCapping = Number.POSITIVE_INFINITY),
16861                self.clearInterval(this.timer),
16862                (this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1e3)),
16863                this.detectPlayerSize());
16864            }),
16865            (e.stopCapping = function () {
16866              (this.restrictedLevels = []),
16867                (this.firstLevel = -1),
16868                (this.autoLevelCapping = Number.POSITIVE_INFINITY),
16869                this.timer && (self.clearInterval(this.timer), (this.timer = void 0));
16870            }),
16871            (e.getDimensions = function () {
16872              if (this.clientRect) return this.clientRect;
16873              var t = this.media,
16874                e = { width: 0, height: 0 };
16875              if (t) {
16876                var r = t.getBoundingClientRect();
16877                (e.width = r.width),
16878                  (e.height = r.height),
16879                  e.width ||
16880                    e.height ||
16881                    ((e.width = r.right - r.left || t.width || 0),
16882                    (e.height = r.bottom - r.top || t.height || 0));
16883              }
16884              return (this.clientRect = e), e;
16885            }),
16886            (e.isLevelAllowed = function (t) {
16887              return !this.restrictedLevels.some(function (e) {
16888                return t.bitrate === e.bitrate && t.width === e.width && t.height === e.height;
16889              });
16890            }),
16891            (t.getMaxLevelByMediaSize = function (t, e, r) {
16892              if (null == t || !t.length) return -1;
16893              for (var i, n, a = t.length - 1, s = Math.max(e, r), o = 0; o < t.length; o += 1) {
16894                var l = t[o];
16895                if (
16896                  (l.width >= s || l.height >= s) &&
16897                  ((i = l), !(n = t[o + 1]) || i.width !== n.width || i.height !== n.height)
16898                ) {
16899                  a = o;
16900                  break;
16901                }
16902              }
16903              return a;
16904            }),
16905            s(t, [
16906              {
16907                key: 'mediaWidth',
16908                get: function () {
16909                  return this.getDimensions().width * this.contentScaleFactor;
16910                },
16911              },
16912              {
16913                key: 'mediaHeight',
16914                get: function () {
16915                  return this.getDimensions().height * this.contentScaleFactor;
16916                },
16917              },
16918              {
16919                key: 'contentScaleFactor',
16920                get: function () {
16921                  var t = 1;
16922                  if (!this.hls.config.ignoreDevicePixelRatio)
16923                    try {
16924                      t = self.devicePixelRatio;
16925                    } catch (t) {}
16926                  return t;
16927                },
16928              },
16929            ]),
16930            t
16931          );
16932        })(),
16933        es = (function () {
16934          function t(t) {
16935            (this.hls = void 0),
16936              (this.isVideoPlaybackQualityAvailable = !1),
16937              (this.timer = void 0),
16938              (this.media = null),
16939              (this.lastTime = void 0),
16940              (this.lastDroppedFrames = 0),
16941              (this.lastDecodedFrames = 0),
16942              (this.streamController = void 0),
16943              (this.hls = t),
16944              this.registerListeners();
16945          }
16946          var e = t.prototype;
16947          return (
16948            (e.setStreamController = function (t) {
16949              this.streamController = t;
16950            }),
16951            (e.registerListeners = function () {
16952              this.hls.on(S.MEDIA_ATTACHING, this.onMediaAttaching, this);
16953            }),
16954            (e.unregisterListeners = function () {
16955              this.hls.off(S.MEDIA_ATTACHING, this.onMediaAttaching, this);
16956            }),
16957            (e.destroy = function () {
16958              this.timer && clearInterval(this.timer),
16959                this.unregisterListeners(),
16960                (this.isVideoPlaybackQualityAvailable = !1),
16961                (this.media = null);
16962            }),
16963            (e.onMediaAttaching = function (t, e) {
16964              var r = this.hls.config;
16965              if (r.capLevelOnFPSDrop) {
16966                var i = e.media instanceof self.HTMLVideoElement ? e.media : null;
16967                (this.media = i),
16968                  i &&
16969                    'function' == typeof i.getVideoPlaybackQuality &&
16970                    (this.isVideoPlaybackQualityAvailable = !0),
16971                  self.clearInterval(this.timer),
16972                  (this.timer = self.setInterval(
16973                    this.checkFPSInterval.bind(this),
16974                    r.fpsDroppedMonitoringPeriod
16975                  ));
16976              }
16977            }),
16978            (e.checkFPS = function (t, e, r) {
16979              var i = performance.now();
16980              if (e) {
16981                if (this.lastTime) {
16982                  var n = i - this.lastTime,
16983                    a = r - this.lastDroppedFrames,
16984                    s = e - this.lastDecodedFrames,
16985                    o = (1e3 * a) / n,
16986                    l = this.hls;
16987                  if (
16988                    (l.trigger(S.FPS_DROP, {
16989                      currentDropped: a,
16990                      currentDecoded: s,
16991                      totalDroppedFrames: r,
16992                    }),
16993                    o > 0 && a > l.config.fpsDroppedMonitoringThreshold * s)
16994                  ) {
16995                    var u = l.currentLevel;
16996                    w.warn('drop FPS ratio greater than max allowed value for currentLevel: ' + u),
16997                      u > 0 &&
16998                        (-1 === l.autoLevelCapping || l.autoLevelCapping >= u) &&
16999                        ((u -= 1),
17000                        l.trigger(S.FPS_DROP_LEVEL_CAPPING, {
17001                          level: u,
17002                          droppedLevel: l.currentLevel,
17003                        }),
17004                        (l.autoLevelCapping = u),
17005                        this.streamController.nextLevelSwitch());
17006                  }
17007                }
17008                (this.lastTime = i), (this.lastDroppedFrames = r), (this.lastDecodedFrames = e);
17009              }
17010            }),
17011            (e.checkFPSInterval = function () {
17012              var t = this.media;
17013              if (t)
17014                if (this.isVideoPlaybackQualityAvailable) {
17015                  var e = t.getVideoPlaybackQuality();
17016                  this.checkFPS(t, e.totalVideoFrames, e.droppedVideoFrames);
17017                } else this.checkFPS(t, t.webkitDecodedFrameCount, t.webkitDroppedFrameCount);
17018            }),
17019            t
17020          );
17021        })(),
17022        rs = '[eme]',
17023        is = (function () {
17024          function t(e) {
17025            (this.hls = void 0),
17026              (this.config = void 0),
17027              (this.media = null),
17028              (this.keyFormatPromise = null),
17029              (this.keySystemAccessPromises = {}),
17030              (this._requestLicenseFailureCount = 0),
17031              (this.mediaKeySessions = []),
17032              (this.keyIdToKeySessionPromise = {}),
17033              (this.setMediaKeysQueue = t.CDMCleanupPromise ? [t.CDMCleanupPromise] : []),
17034              (this.onMediaEncrypted = this._onMediaEncrypted.bind(this)),
17035              (this.onWaitingForKey = this._onWaitingForKey.bind(this)),
17036              (this.debug = w.debug.bind(w, rs)),
17037              (this.log = w.log.bind(w, rs)),
17038              (this.warn = w.warn.bind(w, rs)),
17039              (this.error = w.error.bind(w, rs)),
17040              (this.hls = e),
17041              (this.config = e.config),
17042              this.registerListeners();
17043          }
17044          var e = t.prototype;
17045          return (
17046            (e.destroy = function () {
17047              this.unregisterListeners(), this.onMediaDetached();
17048              var t = this.config;
17049              (t.requestMediaKeySystemAccessFunc = null),
17050                (t.licenseXhrSetup = t.licenseResponseCallback = void 0),
17051                (t.drmSystems = t.drmSystemOptions = {}),
17052                (this.hls =
17053                  this.onMediaEncrypted =
17054                  this.onWaitingForKey =
17055                  this.keyIdToKeySessionPromise =
17056                    null),
17057                (this.config = null);
17058            }),
17059            (e.registerListeners = function () {
17060              this.hls.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
17061                this.hls.on(S.MEDIA_DETACHED, this.onMediaDetached, this),
17062                this.hls.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
17063                this.hls.on(S.MANIFEST_LOADED, this.onManifestLoaded, this);
17064            }),
17065            (e.unregisterListeners = function () {
17066              this.hls.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
17067                this.hls.off(S.MEDIA_DETACHED, this.onMediaDetached, this),
17068                this.hls.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
17069                this.hls.off(S.MANIFEST_LOADED, this.onManifestLoaded, this);
17070            }),
17071            (e.getLicenseServerUrl = function (t) {
17072              var e = this.config,
17073                r = e.drmSystems,
17074                i = e.widevineLicenseUrl,
17075                n = r[t];
17076              if (n) return n.licenseUrl;
17077              if (t === q.WIDEVINE && i) return i;
17078              throw new Error('no license server URL configured for key-system "' + t + '"');
17079            }),
17080            (e.getServerCertificateUrl = function (t) {
17081              var e = this.config.drmSystems[t];
17082              if (e) return e.serverCertificateUrl;
17083              this.log('No Server Certificate in config.drmSystems["' + t + '"]');
17084            }),
17085            (e.attemptKeySystemAccess = function (t) {
17086              var e = this,
17087                r = this.hls.levels,
17088                i = function (t, e, r) {
17089                  return !!t && r.indexOf(t) === e;
17090                },
17091                n = r
17092                  .map(function (t) {
17093                    return t.audioCodec;
17094                  })
17095                  .filter(i),
17096                a = r
17097                  .map(function (t) {
17098                    return t.videoCodec;
17099                  })
17100                  .filter(i);
17101              return (
17102                n.length + a.length === 0 && a.push('avc1.42e01e'),
17103                new Promise(function (r, i) {
17104                  !(function t(s) {
17105                    var o = s.shift();
17106                    e.getMediaKeysPromise(o, n, a)
17107                      .then(function (t) {
17108                        return r({ keySystem: o, mediaKeys: t });
17109                      })
17110                      .catch(function (e) {
17111                        s.length
17112                          ? t(s)
17113                          : i(
17114                              e instanceof ls
17115                                ? e
17116                                : new ls(
17117                                    {
17118                                      type: L.KEY_SYSTEM_ERROR,
17119                                      details: A.KEY_SYSTEM_NO_ACCESS,
17120                                      error: e,
17121                                      fatal: !0,
17122                                    },
17123                                    e.message
17124                                  )
17125                            );
17126                      });
17127                  })(t);
17128                })
17129              );
17130            }),
17131            (e.requestMediaKeySystemAccess = function (t, e) {
17132              var r = this.config.requestMediaKeySystemAccessFunc;
17133              if ('function' != typeof r) {
17134                var i = 'Configured requestMediaKeySystemAccess is not a function ' + r;
17135                return (
17136                  null === ot &&
17137                    'http:' === self.location.protocol &&
17138                    (i =
17139                      'navigator.requestMediaKeySystemAccess is not available over insecure protocol ' +
17140                      location.protocol),
17141                  Promise.reject(new Error(i))
17142                );
17143              }
17144              return r(t, e);
17145            }),
17146            (e.getMediaKeysPromise = function (t, e, r) {
17147              var i = this,
17148                n = (function (t, e, r, i) {
17149                  var n;
17150                  switch (t) {
17151                    case q.FAIRPLAY:
17152                      n = ['cenc', 'sinf'];
17153                      break;
17154                    case q.WIDEVINE:
17155                    case q.PLAYREADY:
17156                      n = ['cenc'];
17157                      break;
17158                    case q.CLEARKEY:
17159                      n = ['cenc', 'keyids'];
17160                      break;
17161                    default:
17162                      throw new Error('Unknown key-system: ' + t);
17163                  }
17164                  return (function (t, e, r, i) {
17165                    return [
17166                      {
17167                        initDataTypes: t,
17168                        persistentState: i.persistentState || 'optional',
17169                        distinctiveIdentifier: i.distinctiveIdentifier || 'optional',
17170                        sessionTypes: i.sessionTypes || [i.sessionType || 'temporary'],
17171                        audioCapabilities: e.map(function (t) {
17172                          return {
17173                            contentType: 'audio/mp4; codecs="' + t + '"',
17174                            robustness: i.audioRobustness || '',
17175                            encryptionScheme: i.audioEncryptionScheme || null,
17176                          };
17177                        }),
17178                        videoCapabilities: r.map(function (t) {
17179                          return {
17180                            contentType: 'video/mp4; codecs="' + t + '"',
17181                            robustness: i.videoRobustness || '',
17182                            encryptionScheme: i.videoEncryptionScheme || null,
17183                          };
17184                        }),
17185                      },
17186                    ];
17187                  })(n, e, r, i);
17188                })(t, e, r, this.config.drmSystemOptions),
17189                a = this.keySystemAccessPromises[t],
17190                s = null == a ? void 0 : a.keySystemAccess;
17191              if (!s) {
17192                this.log(
17193                  'Requesting encrypted media "' +
17194                    t +
17195                    '" key-system access with config: ' +
17196                    JSON.stringify(n)
17197                ),
17198                  (s = this.requestMediaKeySystemAccess(t, n));
17199                var o = (this.keySystemAccessPromises[t] = { keySystemAccess: s });
17200                return (
17201                  s.catch(function (e) {
17202                    i.log('Failed to obtain access to key-system "' + t + '": ' + e);
17203                  }),
17204                  s.then(function (e) {
17205                    i.log('Access for key-system "' + e.keySystem + '" obtained');
17206                    var r = i.fetchServerCertificate(t);
17207                    return (
17208                      i.log('Create media-keys for "' + t + '"'),
17209                      (o.mediaKeys = e.createMediaKeys().then(function (e) {
17210                        return (
17211                          i.log('Media-keys created for "' + t + '"'),
17212                          r.then(function (r) {
17213                            return r ? i.setMediaKeysServerCertificate(e, t, r) : e;
17214                          })
17215                        );
17216                      })),
17217                      o.mediaKeys.catch(function (e) {
17218                        i.error('Failed to create media-keys for "' + t + '"}: ' + e);
17219                      }),
17220                      o.mediaKeys
17221                    );
17222                  })
17223                );
17224              }
17225              return s.then(function () {
17226                return a.mediaKeys;
17227              });
17228            }),
17229            (e.createMediaKeySessionContext = function (t) {
17230              var e = t.decryptdata,
17231                r = t.keySystem,
17232                i = t.mediaKeys;
17233              this.log(
17234                'Creating key-system session "' + r + '" keyId: ' + kt.hexDump(e.keyId || [])
17235              );
17236              var n = i.createSession(),
17237                a = {
17238                  decryptdata: e,
17239                  keySystem: r,
17240                  mediaKeys: i,
17241                  mediaKeysSession: n,
17242                  keyStatus: 'status-pending',
17243                };
17244              return this.mediaKeySessions.push(a), a;
17245            }),
17246            (e.renewKeySession = function (t) {
17247              var e = t.decryptdata;
17248              if (e.pssh) {
17249                var r = this.createMediaKeySessionContext(t),
17250                  i = this.getKeyIdString(e);
17251                this.keyIdToKeySessionPromise[i] = this.generateRequestWithPreferredKeySession(
17252                  r,
17253                  'cenc',
17254                  e.pssh,
17255                  'expired'
17256                );
17257              } else this.warn('Could not renew expired session. Missing pssh initData.');
17258              this.removeSession(t);
17259            }),
17260            (e.getKeyIdString = function (t) {
17261              if (!t) throw new Error('Could not read keyId of undefined decryptdata');
17262              if (null === t.keyId) throw new Error('keyId is null');
17263              return kt.hexDump(t.keyId);
17264            }),
17265            (e.updateKeySession = function (t, e) {
17266              var r,
17267                i = t.mediaKeysSession;
17268              return (
17269                this.log(
17270                  'Updating key-session "' +
17271                    i.sessionId +
17272                    '" for keyID ' +
17273                    kt.hexDump((null == (r = t.decryptdata) ? void 0 : r.keyId) || []) +
17274                    '\n      } (data length: ' +
17275                    (e ? e.byteLength : e) +
17276                    ')'
17277                ),
17278                i.update(e)
17279              );
17280            }),
17281            (e.selectKeySystemFormat = function (t) {
17282              var e = Object.keys(t.levelkeys || {});
17283              return (
17284                this.keyFormatPromise ||
17285                  (this.log(
17286                    'Selecting key-system from fragment (sn: ' +
17287                      t.sn +
17288                      ' ' +
17289                      t.type +
17290                      ': ' +
17291                      t.level +
17292                      ') key formats ' +
17293                      e.join(', ')
17294                  ),
17295                  (this.keyFormatPromise = this.getKeyFormatPromise(e))),
17296                this.keyFormatPromise
17297              );
17298            }),
17299            (e.getKeyFormatPromise = function (t) {
17300              var e = this;
17301              return new Promise(function (r, i) {
17302                var n = at(e.config),
17303                  a = t.map($).filter(function (t) {
17304                    return !!t && -1 !== n.indexOf(t);
17305                  });
17306                return e
17307                  .getKeySystemSelectionPromise(a)
17308                  .then(function (t) {
17309                    var e = t.keySystem,
17310                      n = nt(e);
17311                    n ? r(n) : i(new Error('Unable to find format for key-system "' + e + '"'));
17312                  })
17313                  .catch(i);
17314              });
17315            }),
17316            (e.loadKey = function (t) {
17317              var e = this,
17318                r = t.keyInfo.decryptdata,
17319                i = this.getKeyIdString(r),
17320                n =
17321                  '(keyId: ' +
17322                  i +
17323                  ' format: "' +
17324                  r.keyFormat +
17325                  '" method: ' +
17326                  r.method +
17327                  ' uri: ' +
17328                  r.uri +
17329                  ')';
17330              this.log('Starting session for key ' + n);
17331              var a = this.keyIdToKeySessionPromise[i];
17332              return (
17333                a ||
17334                  (a = this.keyIdToKeySessionPromise[i] =
17335                    this.getKeySystemForKeyPromise(r).then(function (i) {
17336                      var a = i.keySystem,
17337                        s = i.mediaKeys;
17338                      return (
17339                        e.throwIfDestroyed(),
17340                        e.log(
17341                          'Handle encrypted media sn: ' +
17342                            t.frag.sn +
17343                            ' ' +
17344                            t.frag.type +
17345                            ': ' +
17346                            t.frag.level +
17347                            ' using key ' +
17348                            n
17349                        ),
17350                        e.attemptSetMediaKeys(a, s).then(function () {
17351                          e.throwIfDestroyed();
17352                          var t = e.createMediaKeySessionContext({
17353                            keySystem: a,
17354                            mediaKeys: s,
17355                            decryptdata: r,
17356                          });
17357                          return e.generateRequestWithPreferredKeySession(
17358                            t,
17359                            'cenc',
17360                            r.pssh,
17361                            'playlist-key'
17362                          );
17363                        })
17364                      );
17365                    })).catch(function (t) {
17366                    return e.handleError(t);
17367                  }),
17368                a
17369              );
17370            }),
17371            (e.throwIfDestroyed = function (t) {
17372              if (!this.hls) throw new Error('invalid state');
17373            }),
17374            (e.handleError = function (t) {
17375              this.hls &&
17376                (this.error(t.message),
17377                t instanceof ls
17378                  ? this.hls.trigger(S.ERROR, t.data)
17379                  : this.hls.trigger(S.ERROR, {
17380                      type: L.KEY_SYSTEM_ERROR,
17381                      details: A.KEY_SYSTEM_NO_KEYS,
17382                      error: t,
17383                      fatal: !0,
17384                    }));
17385            }),
17386            (e.getKeySystemForKeyPromise = function (t) {
17387              var e = this.getKeyIdString(t),
17388                r = this.keyIdToKeySessionPromise[e];
17389              if (!r) {
17390                var i = $(t.keyFormat),
17391                  n = i ? [i] : at(this.config);
17392                return this.attemptKeySystemAccess(n);
17393              }
17394              return r;
17395            }),
17396            (e.getKeySystemSelectionPromise = function (t) {
17397              if ((t.length || (t = at(this.config)), 0 === t.length))
17398                throw new ls(
17399                  {
17400                    type: L.KEY_SYSTEM_ERROR,
17401                    details: A.KEY_SYSTEM_NO_CONFIGURED_LICENSE,
17402                    fatal: !0,
17403                  },
17404                  'Missing key-system license configuration options ' +
17405                    JSON.stringify({ drmSystems: this.config.drmSystems })
17406                );
17407              return this.attemptKeySystemAccess(t);
17408            }),
17409            (e._onMediaEncrypted = function (t) {
17410              var e = this,
17411                r = t.initDataType,
17412                i = t.initData,
17413                n = '"' + t.type + '" event: init data type: "' + r + '"';
17414              if ((this.debug(n), null !== i)) {
17415                var a, s;
17416                if ('sinf' === r && this.config.drmSystems[q.FAIRPLAY]) {
17417                  var o = Ct(new Uint8Array(i));
17418                  try {
17419                    var l = V(JSON.parse(o).sinf),
17420                      u = Vt(new Uint8Array(l));
17421                    if (!u) throw new Error("'schm' box missing or not cbcs/cenc with schi > tenc");
17422                    (a = u.subarray(8, 24)), (s = q.FAIRPLAY);
17423                  } catch (t) {
17424                    return void this.warn(n + ' Failed to parse sinf: ' + t);
17425                  }
17426                } else {
17427                  var h = (function (t) {
17428                      var e = [];
17429                      if (t instanceof ArrayBuffer)
17430                        for (var r = t.byteLength, i = 0; i + 32 < r; ) {
17431                          var n = Jt(new DataView(t, i));
17432                          e.push(n), (i += n.size);
17433                        }
17434                      return e;
17435                    })(i),
17436                    d = h.filter(function (t) {
17437                      return t.systemId === rt;
17438                    })[0];
17439                  if (!d)
17440                    return void (0 === h.length ||
17441                    h.some(function (t) {
17442                      return !t.systemId;
17443                    })
17444                      ? this.warn(n + ' contains incomplete or invalid pssh data')
17445                      : this.log(
17446                          'ignoring ' +
17447                            n +
17448                            ' for ' +
17449                            h
17450                              .map(function (t) {
17451                                return it(t.systemId);
17452                              })
17453                              .join(',') +
17454                            ' pssh data in favor of playlist keys'
17455                        ));
17456                  if (((s = it(d.systemId)), 0 === d.version && d.data)) {
17457                    var c = d.data.length - 22;
17458                    a = d.data.subarray(c, c + 16);
17459                  }
17460                }
17461                if (s && a) {
17462                  for (
17463                    var f,
17464                      g = kt.hexDump(a),
17465                      v = this.keyIdToKeySessionPromise,
17466                      m = this.mediaKeySessions,
17467                      p = v[g],
17468                      y = function () {
17469                        var t = m[E],
17470                          n = t.decryptdata;
17471                        if (!n.keyId) return 0;
17472                        var s = kt.hexDump(n.keyId);
17473                        return g === s || -1 !== n.uri.replace(/-/g, '').indexOf(g)
17474                          ? ((p = v[s]),
17475                            n.pssh ||
17476                              (delete v[s],
17477                              (n.pssh = new Uint8Array(i)),
17478                              (n.keyId = a),
17479                              (p = v[g] =
17480                                p.then(function () {
17481                                  return e.generateRequestWithPreferredKeySession(
17482                                    t,
17483                                    r,
17484                                    i,
17485                                    'encrypted-event-key-match'
17486                                  );
17487                                }))),
17488                            1)
17489                          : void 0;
17490                      },
17491                      E = 0;
17492                    E < m.length && (0 === (f = y()) || 1 !== f);
17493                    E++
17494                  );
17495                  p ||
17496                    (p = v[g] =
17497                      this.getKeySystemSelectionPromise([s]).then(function (t) {
17498                        var n,
17499                          s = t.keySystem,
17500                          o = t.mediaKeys;
17501                        e.throwIfDestroyed();
17502                        var l = new Zt('ISO-23001-7', g, null != (n = nt(s)) ? n : '');
17503                        return (
17504                          (l.pssh = new Uint8Array(i)),
17505                          (l.keyId = a),
17506                          e.attemptSetMediaKeys(s, o).then(function () {
17507                            e.throwIfDestroyed();
17508                            var t = e.createMediaKeySessionContext({
17509                              decryptdata: l,
17510                              keySystem: s,
17511                              mediaKeys: o,
17512                            });
17513                            return e.generateRequestWithPreferredKeySession(
17514                              t,
17515                              r,
17516                              i,
17517                              'encrypted-event-no-match'
17518                            );
17519                          })
17520                        );
17521                      })),
17522                    p.catch(function (t) {
17523                      return e.handleError(t);
17524                    });
17525                }
17526              }
17527            }),
17528            (e._onWaitingForKey = function (t) {
17529              this.log('"' + t.type + '" event');
17530            }),
17531            (e.attemptSetMediaKeys = function (t, e) {
17532              var r = this,
17533                i = this.setMediaKeysQueue.slice();
17534              this.log('Setting media-keys for "' + t + '"');
17535              var n = Promise.all(i).then(function () {
17536                if (!r.media)
17537                  throw new Error('Attempted to set mediaKeys without media element attached');
17538                return r.media.setMediaKeys(e);
17539              });
17540              return (
17541                this.setMediaKeysQueue.push(n),
17542                n.then(function () {
17543                  r.log('Media-keys set for "' + t + '"'),
17544                    i.push(n),
17545                    (r.setMediaKeysQueue = r.setMediaKeysQueue.filter(function (t) {
17546                      return -1 === i.indexOf(t);
17547                    }));
17548                })
17549              );
17550            }),
17551            (e.generateRequestWithPreferredKeySession = function (t, e, r, i) {
17552              var n,
17553                a,
17554                s = this,
17555                o =
17556                  null == (n = this.config.drmSystems) || null == (a = n[t.keySystem])
17557                    ? void 0
17558                    : a.generateRequest;
17559              if (o)
17560                try {
17561                  var l = o.call(this.hls, e, r, t);
17562                  if (!l)
17563                    throw new Error('Invalid response from configured generateRequest filter');
17564                  (e = l.initDataType),
17565                    (r = t.decryptdata.pssh = l.initData ? new Uint8Array(l.initData) : null);
17566                } catch (t) {
17567                  var u;
17568                  if ((this.warn(t.message), null != (u = this.hls) && u.config.debug)) throw t;
17569                }
17570              if (null === r)
17571                return (
17572                  this.log('Skipping key-session request for "' + i + '" (no initData)'),
17573                  Promise.resolve(t)
17574                );
17575              var h = this.getKeyIdString(t.decryptdata);
17576              this.log(
17577                'Generating key-session request for "' +
17578                  i +
17579                  '": ' +
17580                  h +
17581                  ' (init data type: ' +
17582                  e +
17583                  ' length: ' +
17584                  (r ? r.byteLength : null) +
17585                  ')'
17586              );
17587              var d = new Vn(),
17588                c = (t._onmessage = function (e) {
17589                  var r = t.mediaKeysSession;
17590                  if (r) {
17591                    var i = e.messageType,
17592                      n = e.message;
17593                    s.log(
17594                      '"' +
17595                        i +
17596                        '" message event for session "' +
17597                        r.sessionId +
17598                        '" message size: ' +
17599                        n.byteLength
17600                    ),
17601                      'license-request' === i || 'license-renewal' === i
17602                        ? s.renewLicense(t, n).catch(function (t) {
17603                            s.handleError(t), d.emit('error', t);
17604                          })
17605                        : 'license-release' === i
17606                        ? t.keySystem === q.FAIRPLAY &&
17607                          (s.updateKeySession(t, W('acknowledged')), s.removeSession(t))
17608                        : s.warn('unhandled media key message type "' + i + '"');
17609                  } else d.emit('error', new Error('invalid state'));
17610                }),
17611                f = (t._onkeystatuseschange = function (e) {
17612                  if (t.mediaKeysSession) {
17613                    s.onKeyStatusChange(t);
17614                    var r = t.keyStatus;
17615                    d.emit('keyStatus', r),
17616                      'expired' === r &&
17617                        (s.warn(t.keySystem + ' expired for key ' + h), s.renewKeySession(t));
17618                  } else d.emit('error', new Error('invalid state'));
17619                });
17620              t.mediaKeysSession.addEventListener('message', c),
17621                t.mediaKeysSession.addEventListener('keystatuseschange', f);
17622              var g = new Promise(function (t, e) {
17623                d.on('error', e),
17624                  d.on('keyStatus', function (r) {
17625                    r.startsWith('usable')
17626                      ? t()
17627                      : 'output-restricted' === r
17628                      ? e(
17629                          new ls(
17630                            {
17631                              type: L.KEY_SYSTEM_ERROR,
17632                              details: A.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,
17633                              fatal: !1,
17634                            },
17635                            'HDCP level output restricted'
17636                          )
17637                        )
17638                      : 'internal-error' === r
17639                      ? e(
17640                          new ls(
17641                            {
17642                              type: L.KEY_SYSTEM_ERROR,
17643                              details: A.KEY_SYSTEM_STATUS_INTERNAL_ERROR,
17644                              fatal: !0,
17645                            },
17646                            'key status changed to "' + r + '"'
17647                          )
17648                        )
17649                      : 'expired' === r
17650                      ? e(new Error('key expired while generating request'))
17651                      : s.warn('unhandled key status change "' + r + '"');
17652                  });
17653              });
17654              return t.mediaKeysSession
17655                .generateRequest(e, r)
17656                .then(function () {
17657                  var e;
17658                  s.log(
17659                    'Request generated for key-session "' +
17660                      (null == (e = t.mediaKeysSession) ? void 0 : e.sessionId) +
17661                      '" keyId: ' +
17662                      h
17663                  );
17664                })
17665                .catch(function (t) {
17666                  throw new ls(
17667                    {
17668                      type: L.KEY_SYSTEM_ERROR,
17669                      details: A.KEY_SYSTEM_NO_SESSION,
17670                      error: t,
17671                      fatal: !1,
17672                    },
17673                    'Error generating key-session request: ' + t
17674                  );
17675                })
17676                .then(function () {
17677                  return g;
17678                })
17679                .catch(function (e) {
17680                  throw (d.removeAllListeners(), s.removeSession(t), e);
17681                })
17682                .then(function () {
17683                  return d.removeAllListeners(), t;
17684                });
17685            }),
17686            (e.onKeyStatusChange = function (t) {
17687              var e = this;
17688              t.mediaKeysSession.keyStatuses.forEach(function (r, i) {
17689                e.log(
17690                  'key status change "' +
17691                    r +
17692                    '" for keyStatuses keyId: ' +
17693                    kt.hexDump(
17694                      'buffer' in i
17695                        ? new Uint8Array(i.buffer, i.byteOffset, i.byteLength)
17696                        : new Uint8Array(i)
17697                    ) +
17698                    ' session keyId: ' +
17699                    kt.hexDump(new Uint8Array(t.decryptdata.keyId || [])) +
17700                    ' uri: ' +
17701                    t.decryptdata.uri
17702                ),
17703                  (t.keyStatus = r);
17704              });
17705            }),
17706            (e.fetchServerCertificate = function (t) {
17707              var e = this.config,
17708                r = new (0, e.loader)(e),
17709                n = this.getServerCertificateUrl(t);
17710              return n
17711                ? (this.log('Fetching server certificate for "' + t + '"'),
17712                  new Promise(function (a, s) {
17713                    var o = { responseType: 'arraybuffer', url: n },
17714                      l = e.certLoadPolicy.default,
17715                      u = {
17716                        loadPolicy: l,
17717                        timeout: l.maxLoadTimeMs,
17718                        maxRetry: 0,
17719                        retryDelay: 0,
17720                        maxRetryDelay: 0,
17721                      },
17722                      h = {
17723                        onSuccess: function (t, e, r, i) {
17724                          a(t.data);
17725                        },
17726                        onError: function (e, r, a, l) {
17727                          s(
17728                            new ls(
17729                              {
17730                                type: L.KEY_SYSTEM_ERROR,
17731                                details: A.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,
17732                                fatal: !0,
17733                                networkDetails: a,
17734                                response: i({ url: o.url, data: void 0 }, e),
17735                              },
17736                              '"' +
17737                                t +
17738                                '" certificate request failed (' +
17739                                n +
17740                                '). Status: ' +
17741                                e.code +
17742                                ' (' +
17743                                e.text +
17744                                ')'
17745                            )
17746                          );
17747                        },
17748                        onTimeout: function (e, r, i) {
17749                          s(
17750                            new ls(
17751                              {
17752                                type: L.KEY_SYSTEM_ERROR,
17753                                details: A.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,
17754                                fatal: !0,
17755                                networkDetails: i,
17756                                response: { url: o.url, data: void 0 },
17757                              },
17758                              '"' + t + '" certificate request timed out (' + n + ')'
17759                            )
17760                          );
17761                        },
17762                        onAbort: function (t, e, r) {
17763                          s(new Error('aborted'));
17764                        },
17765                      };
17766                    r.load(o, u, h);
17767                  }))
17768                : Promise.resolve();
17769            }),
17770            (e.setMediaKeysServerCertificate = function (t, e, r) {
17771              var i = this;
17772              return new Promise(function (n, a) {
17773                t.setServerCertificate(r)
17774                  .then(function (a) {
17775                    i.log(
17776                      'setServerCertificate ' +
17777                        (a ? 'success' : 'not supported by CDM') +
17778                        ' (' +
17779                        (null == r ? void 0 : r.byteLength) +
17780                        ') on "' +
17781                        e +
17782                        '"'
17783                    ),
17784                      n(t);
17785                  })
17786                  .catch(function (t) {
17787                    a(
17788                      new ls(
17789                        {
17790                          type: L.KEY_SYSTEM_ERROR,
17791                          details: A.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,
17792                          error: t,
17793                          fatal: !0,
17794                        },
17795                        t.message
17796                      )
17797                    );
17798                  });
17799              });
17800            }),
17801            (e.renewLicense = function (t, e) {
17802              var r = this;
17803              return this.requestLicense(t, new Uint8Array(e)).then(function (e) {
17804                return r.updateKeySession(t, new Uint8Array(e)).catch(function (t) {
17805                  throw new ls(
17806                    {
17807                      type: L.KEY_SYSTEM_ERROR,
17808                      details: A.KEY_SYSTEM_SESSION_UPDATE_FAILED,
17809                      error: t,
17810                      fatal: !0,
17811                    },
17812                    t.message
17813                  );
17814                });
17815              });
17816            }),
17817            (e.unpackPlayReadyKeyMessage = function (t, e) {
17818              var r = String.fromCharCode.apply(null, new Uint16Array(e.buffer));
17819              if (!r.includes('PlayReadyKeyMessage'))
17820                return t.setRequestHeader('Content-Type', 'text/xml; charset=utf-8'), e;
17821              var i = new DOMParser().parseFromString(r, 'application/xml'),
17822                n = i.querySelectorAll('HttpHeader');
17823              if (n.length > 0)
17824                for (var a, s = 0, o = n.length; s < o; s++) {
17825                  var l,
17826                    u,
17827                    h = null == (l = (a = n[s]).querySelector('name')) ? void 0 : l.textContent,
17828                    d = null == (u = a.querySelector('value')) ? void 0 : u.textContent;
17829                  h && d && t.setRequestHeader(h, d);
17830                }
17831              var c = i.querySelector('Challenge'),
17832                f = null == c ? void 0 : c.textContent;
17833              if (!f) throw new Error('Cannot find <Challenge> in key message');
17834              return W(atob(f));
17835            }),
17836            (e.setupLicenseXHR = function (t, e, r, i) {
17837              var n = this,
17838                a = this.config.licenseXhrSetup;
17839              return a
17840                ? Promise.resolve()
17841                    .then(function () {
17842                      if (!r.decryptdata) throw new Error('Key removed');
17843                      return a.call(n.hls, t, e, r, i);
17844                    })
17845                    .catch(function (s) {
17846                      if (!r.decryptdata) throw s;
17847                      return t.open('POST', e, !0), a.call(n.hls, t, e, r, i);
17848                    })
17849                    .then(function (r) {
17850                      return (
17851                        t.readyState || t.open('POST', e, !0), { xhr: t, licenseChallenge: r || i }
17852                      );
17853                    })
17854                : (t.open('POST', e, !0), Promise.resolve({ xhr: t, licenseChallenge: i }));
17855            }),
17856            (e.requestLicense = function (t, e) {
17857              var r = this,
17858                i = this.config.keyLoadPolicy.default;
17859              return new Promise(function (n, a) {
17860                var s = r.getLicenseServerUrl(t.keySystem);
17861                r.log('Sending license request to URL: ' + s);
17862                var o = new XMLHttpRequest();
17863                (o.responseType = 'arraybuffer'),
17864                  (o.onreadystatechange = function () {
17865                    if (!r.hls || !t.mediaKeysSession) return a(new Error('invalid state'));
17866                    if (4 === o.readyState)
17867                      if (200 === o.status) {
17868                        r._requestLicenseFailureCount = 0;
17869                        var l = o.response;
17870                        r.log('License received ' + (l instanceof ArrayBuffer ? l.byteLength : l));
17871                        var u = r.config.licenseResponseCallback;
17872                        if (u)
17873                          try {
17874                            l = u.call(r.hls, o, s, t);
17875                          } catch (t) {
17876                            r.error(t);
17877                          }
17878                        n(l);
17879                      } else {
17880                        var h = i.errorRetry,
17881                          d = h ? h.maxNumRetry : 0;
17882                        if (
17883                          (r._requestLicenseFailureCount++,
17884                          r._requestLicenseFailureCount > d || (o.status >= 400 && o.status < 500))
17885                        )
17886                          a(
17887                            new ls(
17888                              {
17889                                type: L.KEY_SYSTEM_ERROR,
17890                                details: A.KEY_SYSTEM_LICENSE_REQUEST_FAILED,
17891                                fatal: !0,
17892                                networkDetails: o,
17893                                response: {
17894                                  url: s,
17895                                  data: void 0,
17896                                  code: o.status,
17897                                  text: o.statusText,
17898                                },
17899                              },
17900                              'License Request XHR failed (' +
17901                                s +
17902                                '). Status: ' +
17903                                o.status +
17904                                ' (' +
17905                                o.statusText +
17906                                ')'
17907                            )
17908                          );
17909                        else {
17910                          var c = d - r._requestLicenseFailureCount + 1;
17911                          r.warn('Retrying license request, ' + c + ' attempts left'),
17912                            r.requestLicense(t, e).then(n, a);
17913                        }
17914                      }
17915                  }),
17916                  t.licenseXhr &&
17917                    t.licenseXhr.readyState !== XMLHttpRequest.DONE &&
17918                    t.licenseXhr.abort(),
17919                  (t.licenseXhr = o),
17920                  r.setupLicenseXHR(o, s, t, e).then(function (e) {
17921                    var i = e.xhr,
17922                      n = e.licenseChallenge;
17923                    t.keySystem == q.PLAYREADY && (n = r.unpackPlayReadyKeyMessage(i, n)),
17924                      i.send(n);
17925                  });
17926              });
17927            }),
17928            (e.onMediaAttached = function (t, e) {
17929              if (this.config.emeEnabled) {
17930                var r = e.media;
17931                (this.media = r),
17932                  r.addEventListener('encrypted', this.onMediaEncrypted),
17933                  r.addEventListener('waitingforkey', this.onWaitingForKey);
17934              }
17935            }),
17936            (e.onMediaDetached = function () {
17937              var e = this,
17938                r = this.media,
17939                i = this.mediaKeySessions;
17940              r &&
17941                (r.removeEventListener('encrypted', this.onMediaEncrypted),
17942                r.removeEventListener('waitingforkey', this.onWaitingForKey),
17943                (this.media = null)),
17944                (this._requestLicenseFailureCount = 0),
17945                (this.setMediaKeysQueue = []),
17946                (this.mediaKeySessions = []),
17947                (this.keyIdToKeySessionPromise = {}),
17948                Zt.clearKeyUriToKeyIdMap();
17949              var n = i.length;
17950              t.CDMCleanupPromise = Promise.all(
17951                i
17952                  .map(function (t) {
17953                    return e.removeSession(t);
17954                  })
17955                  .concat(
17956                    null == r
17957                      ? void 0
17958                      : r.setMediaKeys(null).catch(function (t) {
17959                          e.log('Could not clear media keys: ' + t);
17960                        })
17961                  )
17962              )
17963                .then(function () {
17964                  n &&
17965                    (e.log('finished closing key sessions and clearing media keys'),
17966                    (i.length = 0));
17967                })
17968                .catch(function (t) {
17969                  e.log('Could not close sessions and clear media keys: ' + t);
17970                });
17971            }),
17972            (e.onManifestLoading = function () {
17973              this.keyFormatPromise = null;
17974            }),
17975            (e.onManifestLoaded = function (t, e) {
17976              var r = e.sessionKeys;
17977              if (r && this.config.emeEnabled && !this.keyFormatPromise) {
17978                var i = r.reduce(function (t, e) {
17979                  return -1 === t.indexOf(e.keyFormat) && t.push(e.keyFormat), t;
17980                }, []);
17981                this.log('Selecting key-system from session-keys ' + i.join(', ')),
17982                  (this.keyFormatPromise = this.getKeyFormatPromise(i));
17983              }
17984            }),
17985            (e.removeSession = function (t) {
17986              var e = this,
17987                r = t.mediaKeysSession,
17988                i = t.licenseXhr;
17989              if (r) {
17990                this.log('Remove licenses and keys and close session ' + r.sessionId),
17991                  t._onmessage &&
17992                    (r.removeEventListener('message', t._onmessage), (t._onmessage = void 0)),
17993                  t._onkeystatuseschange &&
17994                    (r.removeEventListener('keystatuseschange', t._onkeystatuseschange),
17995                    (t._onkeystatuseschange = void 0)),
17996                  i && i.readyState !== XMLHttpRequest.DONE && i.abort(),
17997                  (t.mediaKeysSession = t.decryptdata = t.licenseXhr = void 0);
17998                var n = this.mediaKeySessions.indexOf(t);
17999                return (
18000                  n > -1 && this.mediaKeySessions.splice(n, 1),
18001                  r
18002                    .remove()
18003                    .catch(function (t) {
18004                      e.log('Could not remove session: ' + t);
18005                    })
18006                    .then(function () {
18007                      return r.close();
18008                    })
18009                    .catch(function (t) {
18010                      e.log('Could not close session: ' + t);
18011                    })
18012                );
18013              }
18014            }),
18015            t
18016          );
18017        })();
18018      is.CDMCleanupPromise = void 0;
18019      var ns,
18020        as,
18021        ss,
18022        os,
18023        ls = (function (t) {
18024          function e(e, r) {
18025            var i;
18026            return (
18027              ((i = t.call(this, r) || this).data = void 0),
18028              e.error || (e.error = new Error(r)),
18029              (i.data = e),
18030              (e.err = e.error),
18031              i
18032            );
18033          }
18034          return l(e, t), e;
18035        })(c(Error));
18036      !(function (t) {
18037        (t.MANIFEST = 'm'),
18038          (t.AUDIO = 'a'),
18039          (t.VIDEO = 'v'),
18040          (t.MUXED = 'av'),
18041          (t.INIT = 'i'),
18042          (t.CAPTION = 'c'),
18043          (t.TIMED_TEXT = 'tt'),
18044          (t.KEY = 'k'),
18045          (t.OTHER = 'o');
18046      })(ns || (ns = {})),
18047        (function (t) {
18048          (t.DASH = 'd'), (t.HLS = 'h'), (t.SMOOTH = 's'), (t.OTHER = 'o');
18049        })(as || (as = {})),
18050        (function (t) {
18051          (t.OBJECT = 'CMCD-Object'),
18052            (t.REQUEST = 'CMCD-Request'),
18053            (t.SESSION = 'CMCD-Session'),
18054            (t.STATUS = 'CMCD-Status');
18055        })(ss || (ss = {}));
18056      var us =
18057          (((os = {})[ss.OBJECT] = ['br', 'd', 'ot', 'tb']),
18058          (os[ss.REQUEST] = ['bl', 'dl', 'mtp', 'nor', 'nrr', 'su']),
18059          (os[ss.SESSION] = ['cid', 'pr', 'sf', 'sid', 'st', 'v']),
18060          (os[ss.STATUS] = ['bs', 'rtp']),
18061          os),
18062        hs = function t(e, r) {
18063          (this.value = void 0),
18064            (this.params = void 0),
18065            Array.isArray(e) &&
18066              (e = e.map(function (e) {
18067                return e instanceof t ? e : new t(e);
18068              })),
18069            (this.value = e),
18070            (this.params = r);
18071        },
18072        ds = function (t) {
18073          (this.description = void 0), (this.description = t);
18074        },
18075        cs = 'Dict';
18076      function fs(t, e, r, i) {
18077        return new Error(
18078          'failed to ' +
18079            t +
18080            ' "' +
18081            ((n = e),
18082            (Array.isArray(n)
18083              ? JSON.stringify(n)
18084              : n instanceof Map
18085              ? 'Map{}'
18086              : n instanceof Set
18087              ? 'Set{}'
18088              : 'object' == typeof n
18089              ? JSON.stringify(n)
18090              : String(n)) + '" as ') +
18091            r,
18092          { cause: i }
18093        );
18094        var n;
18095      }
18096      var gs = 'Bare Item',
18097        vs = 'Boolean',
18098        ms = 'Byte Sequence',
18099        ps = 'Decimal',
18100        ys = 'Integer',
18101        Es = /[\x00-\x1f\x7f]+/,
18102        Ts = 'Token',
18103        Ss = 'Key';
18104      function Ls(t, e, r) {
18105        return fs('serialize', t, e, r);
18106      }
18107      function As(t) {
18108        if (!1 === ArrayBuffer.isView(t)) throw Ls(t, ms);
18109        return ':' + ((e = t), btoa(String.fromCharCode.apply(String, e)) + ':');
18110        var e;
18111      }
18112      function Rs(t) {
18113        if (
18114          (function (t) {
18115            return t < -999999999999999 || 999999999999999 < t;
18116          })(t)
18117        )
18118          throw Ls(t, ys);
18119        return t.toString();
18120      }
18121      function bs(t, e) {
18122        if (t < 0) return -bs(-t, e);
18123        var r = Math.pow(10, e);
18124        if (Math.abs(((t * r) % 1) - 0.5) < Number.EPSILON) {
18125          var i = Math.floor(t * r);
18126          return (i % 2 == 0 ? i : i + 1) / r;
18127        }
18128        return Math.round(t * r) / r;
18129      }
18130      function ks(t) {
18131        var e = bs(t, 3);
18132        if (Math.floor(Math.abs(e)).toString().length > 12) throw Ls(t, ps);
18133        var r = e.toString();
18134        return r.includes('.') ? r : r + '.0';
18135      }
18136      var Ds = 'String';
18137      function Is(t) {
18138        var e,
18139          r = (e = t).description || e.toString().slice(7, -1);
18140        if (!1 === /^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(r)) throw Ls(r, Ts);
18141        return r;
18142      }
18143      function ws(t) {
18144        switch (typeof t) {
18145          case 'number':
18146            if (!y(t)) throw Ls(t, gs);
18147            return Number.isInteger(t) ? Rs(t) : ks(t);
18148          case 'string':
18149            return (function (t) {
18150              if (Es.test(t)) throw Ls(t, Ds);
18151              return '"' + t.replace(/\\/g, '\\\\').replace(/"/g, '\\"') + '"';
18152            })(t);
18153          case 'symbol':
18154            return Is(t);
18155          case 'boolean':
18156            return (function (t) {
18157              if ('boolean' != typeof t) throw Ls(t, vs);
18158              return t ? '?1' : '?0';
18159            })(t);
18160          case 'object':
18161            if (t instanceof Date)
18162              return (function (t) {
18163                return '@' + Rs(t.getTime() / 1e3);
18164              })(t);
18165            if (t instanceof Uint8Array) return As(t);
18166            if (t instanceof ds) return Is(t);
18167          default:
18168            throw Ls(t, gs);
18169        }
18170      }
18171      function Cs(t) {
18172        if (!1 === /^[a-z*][a-z0-9\-_.*]*$/.test(t)) throw Ls(t, Ss);
18173        return t;
18174      }
18175      function _s(t) {
18176        return null == t
18177          ? ''
18178          : Object.entries(t)
18179              .map(function (t) {
18180                var e = t[0],
18181                  r = t[1];
18182                return !0 === r ? ';' + Cs(e) : ';' + Cs(e) + '=' + ws(r);
18183              })
18184              .join('');
18185      }
18186      function xs(t) {
18187        return t instanceof hs ? '' + ws(t.value) + _s(t.params) : ws(t);
18188      }
18189      function Ps(t, e) {
18190        var r;
18191        if ((void 0 === e && (e = { whitespace: !0 }), 'object' != typeof t)) throw Ls(t, cs);
18192        var i = t instanceof Map ? t.entries() : Object.entries(t),
18193          n = null != (r = e) && r.whitespace ? ' ' : '';
18194        return Array.from(i)
18195          .map(function (t) {
18196            var e = t[0],
18197              r = t[1];
18198            r instanceof hs == 0 && (r = new hs(r));
18199            var i,
18200              n = Cs(e);
18201            return (
18202              !0 === r.value
18203                ? (n += _s(r.params))
18204                : ((n += '='),
18205                  Array.isArray(r.value)
18206                    ? (n += '(' + (i = r).value.map(xs).join(' ') + ')' + _s(i.params))
18207                    : (n += xs(r))),
18208              n
18209            );
18210          })
18211          .join(',' + n);
18212      }
18213      var Fs = function (t) {
18214          return 'ot' === t || 'sf' === t || 'st' === t;
18215        },
18216        Ms = function (t) {
18217          return 'number' == typeof t ? y(t) : null != t && '' !== t && !1 !== t;
18218        },
18219        Os = function (t) {
18220          return Math.round(t);
18221        },
18222        Ns = function (t) {
18223          return 100 * Os(t / 100);
18224        },
18225        Us = {
18226          br: Os,
18227          d: Os,
18228          bl: Ns,
18229          dl: Ns,
18230          mtp: Ns,
18231          nor: function (t, e) {
18232            return (
18233              null != e &&
18234                e.baseUrl &&
18235                (t = (function (t, e) {
18236                  var r = new URL(t),
18237                    i = new URL(e);
18238                  if (r.origin !== i.origin) return t;
18239                  for (
18240                    var n = r.pathname.split('/').slice(1), a = i.pathname.split('/').slice(1, -1);
18241                    n[0] === a[0];
18242
18243                  )
18244                    n.shift(), a.shift();
18245                  for (; a.length; ) a.shift(), n.unshift('..');
18246                  return n.join('/');
18247                })(t, e.baseUrl)),
18248              encodeURIComponent(t)
18249            );
18250          },
18251          rtp: Ns,
18252          tb: Os,
18253        };
18254      function Bs(t, e) {
18255        return (
18256          void 0 === e && (e = {}),
18257          t
18258            ? (function (t, e) {
18259                return Ps(t, e);
18260              })(
18261                (function (t, e) {
18262                  var r = {};
18263                  if (null == t || 'object' != typeof t) return r;
18264                  var i = Object.keys(t).sort(),
18265                    n = o({}, Us, null == e ? void 0 : e.formatters),
18266                    a = null == e ? void 0 : e.filter;
18267                  return (
18268                    i.forEach(function (i) {
18269                      if (null == a || !a(i)) {
18270                        var s = t[i],
18271                          o = n[i];
18272                        o && (s = o(s, e)),
18273                          ('v' === i && 1 === s) ||
18274                            ('pr' == i && 1 === s) ||
18275                            (Ms(s) &&
18276                              (Fs(i) && 'string' == typeof s && (s = new ds(s)), (r[i] = s)));
18277                      }
18278                    }),
18279                    r
18280                  );
18281                })(t, e),
18282                o({ whitespace: !1 }, e)
18283              )
18284            : ''
18285        );
18286      }
18287      function Gs(t, e, r) {
18288        return o(
18289          t,
18290          (function (t, e) {
18291            var r;
18292            if ((void 0 === e && (e = {}), !t)) return {};
18293            var i = Object.entries(t),
18294              n = Object.entries(us).concat(
18295                Object.entries((null == (r = e) ? void 0 : r.customHeaderMap) || {})
18296              ),
18297              a = i.reduce(function (t, e) {
18298                var r,
18299                  i = e[0],
18300                  a = e[1],
18301                  s =
18302                    (null ==
18303                    (r = n.find(function (t) {
18304                      return t[1].includes(i);
18305                    }))
18306                      ? void 0
18307                      : r[0]) || ss.REQUEST;
18308                return null != t[s] || (t[s] = {}), (t[s][i] = a), t;
18309              }, {});
18310            return Object.entries(a).reduce(function (t, r) {
18311              var i = r[0],
18312                n = r[1];
18313              return (t[i] = Bs(n, e)), t;
18314            }, {});
18315          })(e, r)
18316        );
18317      }
18318      var Ks = 'CMCD',
18319        Hs = /CMCD=[^&#]+/;
18320      function Vs(t, e, r) {
18321        var i = (function (t, e) {
18322          if ((void 0 === e && (e = {}), !t)) return '';
18323          var r = Bs(t, e);
18324          return Ks + '=' + encodeURIComponent(r);
18325        })(e, r);
18326        if (!i) return t;
18327        if (Hs.test(t)) return t.replace(Hs, i);
18328        var n = t.includes('?') ? '&' : '?';
18329        return '' + t + n + i;
18330      }
18331      var Ys = (function () {
18332          function t(t) {
18333            var e = this;
18334            (this.hls = void 0),
18335              (this.config = void 0),
18336              (this.media = void 0),
18337              (this.sid = void 0),
18338              (this.cid = void 0),
18339              (this.useHeaders = !1),
18340              (this.includeKeys = void 0),
18341              (this.initialized = !1),
18342              (this.starved = !1),
18343              (this.buffering = !0),
18344              (this.audioBuffer = void 0),
18345              (this.videoBuffer = void 0),
18346              (this.onWaiting = function () {
18347                e.initialized && (e.starved = !0), (e.buffering = !0);
18348              }),
18349              (this.onPlaying = function () {
18350                e.initialized || (e.initialized = !0), (e.buffering = !1);
18351              }),
18352              (this.applyPlaylistData = function (t) {
18353                try {
18354                  e.apply(t, { ot: ns.MANIFEST, su: !e.initialized });
18355                } catch (t) {
18356                  w.warn('Could not generate manifest CMCD data.', t);
18357                }
18358              }),
18359              (this.applyFragmentData = function (t) {
18360                try {
18361                  var r = t.frag,
18362                    i = e.hls.levels[r.level],
18363                    n = e.getObjectType(r),
18364                    a = { d: 1e3 * r.duration, ot: n };
18365                  (n !== ns.VIDEO && n !== ns.AUDIO && n != ns.MUXED) ||
18366                    ((a.br = i.bitrate / 1e3),
18367                    (a.tb = e.getTopBandwidth(n) / 1e3),
18368                    (a.bl = e.getBufferLength(n))),
18369                    e.apply(t, a);
18370                } catch (t) {
18371                  w.warn('Could not generate segment CMCD data.', t);
18372                }
18373              }),
18374              (this.hls = t);
18375            var r = (this.config = t.config),
18376              i = r.cmcd;
18377            null != i &&
18378              ((r.pLoader = this.createPlaylistLoader()),
18379              (r.fLoader = this.createFragmentLoader()),
18380              (this.sid =
18381                i.sessionId ||
18382                (function () {
18383                  try {
18384                    return crypto.randomUUID();
18385                  } catch (i) {
18386                    try {
18387                      var t = URL.createObjectURL(new Blob()),
18388                        e = t.toString();
18389                      return URL.revokeObjectURL(t), e.slice(e.lastIndexOf('/') + 1);
18390                    } catch (t) {
18391                      var r = new Date().getTime();
18392                      return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (t) {
18393                        var e = (r + 16 * Math.random()) % 16 | 0;
18394                        return (r = Math.floor(r / 16)), ('x' == t ? e : (3 & e) | 8).toString(16);
18395                      });
18396                    }
18397                  }
18398                })()),
18399              (this.cid = i.contentId),
18400              (this.useHeaders = !0 === i.useHeaders),
18401              (this.includeKeys = i.includeKeys),
18402              this.registerListeners());
18403          }
18404          var e = t.prototype;
18405          return (
18406            (e.registerListeners = function () {
18407              var t = this.hls;
18408              t.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
18409                t.on(S.MEDIA_DETACHED, this.onMediaDetached, this),
18410                t.on(S.BUFFER_CREATED, this.onBufferCreated, this);
18411            }),
18412            (e.unregisterListeners = function () {
18413              var t = this.hls;
18414              t.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
18415                t.off(S.MEDIA_DETACHED, this.onMediaDetached, this),
18416                t.off(S.BUFFER_CREATED, this.onBufferCreated, this);
18417            }),
18418            (e.destroy = function () {
18419              this.unregisterListeners(),
18420                this.onMediaDetached(),
18421                (this.hls = this.config = this.audioBuffer = this.videoBuffer = null),
18422                (this.onWaiting = this.onPlaying = null);
18423            }),
18424            (e.onMediaAttached = function (t, e) {
18425              (this.media = e.media),
18426                this.media.addEventListener('waiting', this.onWaiting),
18427                this.media.addEventListener('playing', this.onPlaying);
18428            }),
18429            (e.onMediaDetached = function () {
18430              this.media &&
18431                (this.media.removeEventListener('waiting', this.onWaiting),
18432                this.media.removeEventListener('playing', this.onPlaying),
18433                (this.media = null));
18434            }),
18435            (e.onBufferCreated = function (t, e) {
18436              var r, i;
18437              (this.audioBuffer = null == (r = e.tracks.audio) ? void 0 : r.buffer),
18438                (this.videoBuffer = null == (i = e.tracks.video) ? void 0 : i.buffer);
18439            }),
18440            (e.createData = function () {
18441              var t;
18442              return {
18443                v: 1,
18444                sf: as.HLS,
18445                sid: this.sid,
18446                cid: this.cid,
18447                pr: null == (t = this.media) ? void 0 : t.playbackRate,
18448                mtp: this.hls.bandwidthEstimate / 1e3,
18449              };
18450            }),
18451            (e.apply = function (t, e) {
18452              void 0 === e && (e = {}), o(e, this.createData());
18453              var r = e.ot === ns.INIT || e.ot === ns.VIDEO || e.ot === ns.MUXED;
18454              this.starved && r && ((e.bs = !0), (e.su = !0), (this.starved = !1)),
18455                null == e.su && (e.su = this.buffering);
18456              var i = this.includeKeys;
18457              i &&
18458                (e = Object.keys(e).reduce(function (t, r) {
18459                  return i.includes(r) && (t[r] = e[r]), t;
18460                }, {})),
18461                this.useHeaders
18462                  ? (t.headers || (t.headers = {}), Gs(t.headers, e))
18463                  : (t.url = Vs(t.url, e));
18464            }),
18465            (e.getObjectType = function (t) {
18466              var e = t.type;
18467              return 'subtitle' === e
18468                ? ns.TIMED_TEXT
18469                : 'initSegment' === t.sn
18470                ? ns.INIT
18471                : 'audio' === e
18472                ? ns.AUDIO
18473                : 'main' === e
18474                ? this.hls.audioTracks.length
18475                  ? ns.VIDEO
18476                  : ns.MUXED
18477                : void 0;
18478            }),
18479            (e.getTopBandwidth = function (t) {
18480              var e,
18481                r = 0,
18482                i = this.hls;
18483              if (t === ns.AUDIO) e = i.audioTracks;
18484              else {
18485                var n = i.maxAutoLevel,
18486                  a = n > -1 ? n + 1 : i.levels.length;
18487                e = i.levels.slice(0, a);
18488              }
18489              for (var s, o = g(e); !(s = o()).done; ) {
18490                var l = s.value;
18491                l.bitrate > r && (r = l.bitrate);
18492              }
18493              return r > 0 ? r : NaN;
18494            }),
18495            (e.getBufferLength = function (t) {
18496              var e = this.hls.media,
18497                r = t === ns.AUDIO ? this.audioBuffer : this.videoBuffer;
18498              return r && e
18499                ? 1e3 * ri.bufferInfo(r, e.currentTime, this.config.maxBufferHole).len
18500                : NaN;
18501            }),
18502            (e.createPlaylistLoader = function () {
18503              var t = this.config.pLoader,
18504                e = this.applyPlaylistData,
18505                r = t || this.config.loader;
18506              return (function () {
18507                function t(t) {
18508                  (this.loader = void 0), (this.loader = new r(t));
18509                }
18510                var i = t.prototype;
18511                return (
18512                  (i.destroy = function () {
18513                    this.loader.destroy();
18514                  }),
18515                  (i.abort = function () {
18516                    this.loader.abort();
18517                  }),
18518                  (i.load = function (t, r, i) {
18519                    e(t), this.loader.load(t, r, i);
18520                  }),
18521                  s(t, [
18522                    {
18523                      key: 'stats',
18524                      get: function () {
18525                        return this.loader.stats;
18526                      },
18527                    },
18528                    {
18529                      key: 'context',
18530                      get: function () {
18531                        return this.loader.context;
18532                      },
18533                    },
18534                  ]),
18535                  t
18536                );
18537              })();
18538            }),
18539            (e.createFragmentLoader = function () {
18540              var t = this.config.fLoader,
18541                e = this.applyFragmentData,
18542                r = t || this.config.loader;
18543              return (function () {
18544                function t(t) {
18545                  (this.loader = void 0), (this.loader = new r(t));
18546                }
18547                var i = t.prototype;
18548                return (
18549                  (i.destroy = function () {
18550                    this.loader.destroy();
18551                  }),
18552                  (i.abort = function () {
18553                    this.loader.abort();
18554                  }),
18555                  (i.load = function (t, r, i) {
18556                    e(t), this.loader.load(t, r, i);
18557                  }),
18558                  s(t, [
18559                    {
18560                      key: 'stats',
18561                      get: function () {
18562                        return this.loader.stats;
18563                      },
18564                    },
18565                    {
18566                      key: 'context',
18567                      get: function () {
18568                        return this.loader.context;
18569                      },
18570                    },
18571                  ]),
18572                  t
18573                );
18574              })();
18575            }),
18576            t
18577          );
18578        })(),
18579        Ws = (function () {
18580          function t(t) {
18581            (this.hls = void 0),
18582              (this.log = void 0),
18583              (this.loader = null),
18584              (this.uri = null),
18585              (this.pathwayId = '.'),
18586              (this.pathwayPriority = null),
18587              (this.timeToLoad = 300),
18588              (this.reloadTimer = -1),
18589              (this.updated = 0),
18590              (this.started = !1),
18591              (this.enabled = !0),
18592              (this.levels = null),
18593              (this.audioTracks = null),
18594              (this.subtitleTracks = null),
18595              (this.penalizedPathways = {}),
18596              (this.hls = t),
18597              (this.log = w.log.bind(w, '[content-steering]:')),
18598              this.registerListeners();
18599          }
18600          var e = t.prototype;
18601          return (
18602            (e.registerListeners = function () {
18603              var t = this.hls;
18604              t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
18605                t.on(S.MANIFEST_LOADED, this.onManifestLoaded, this),
18606                t.on(S.MANIFEST_PARSED, this.onManifestParsed, this),
18607                t.on(S.ERROR, this.onError, this);
18608            }),
18609            (e.unregisterListeners = function () {
18610              var t = this.hls;
18611              t &&
18612                (t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
18613                t.off(S.MANIFEST_LOADED, this.onManifestLoaded, this),
18614                t.off(S.MANIFEST_PARSED, this.onManifestParsed, this),
18615                t.off(S.ERROR, this.onError, this));
18616            }),
18617            (e.startLoad = function () {
18618              if (((this.started = !0), this.clearTimeout(), this.enabled && this.uri)) {
18619                if (this.updated) {
18620                  var t = 1e3 * this.timeToLoad - (performance.now() - this.updated);
18621                  if (t > 0) return void this.scheduleRefresh(this.uri, t);
18622                }
18623                this.loadSteeringManifest(this.uri);
18624              }
18625            }),
18626            (e.stopLoad = function () {
18627              (this.started = !1),
18628                this.loader && (this.loader.destroy(), (this.loader = null)),
18629                this.clearTimeout();
18630            }),
18631            (e.clearTimeout = function () {
18632              -1 !== this.reloadTimer &&
18633                (self.clearTimeout(this.reloadTimer), (this.reloadTimer = -1));
18634            }),
18635            (e.destroy = function () {
18636              this.unregisterListeners(),
18637                this.stopLoad(),
18638                (this.hls = null),
18639                (this.levels = this.audioTracks = this.subtitleTracks = null);
18640            }),
18641            (e.removeLevel = function (t) {
18642              var e = this.levels;
18643              e &&
18644                (this.levels = e.filter(function (e) {
18645                  return e !== t;
18646                }));
18647            }),
18648            (e.onManifestLoading = function () {
18649              this.stopLoad(),
18650                (this.enabled = !0),
18651                (this.timeToLoad = 300),
18652                (this.updated = 0),
18653                (this.uri = null),
18654                (this.pathwayId = '.'),
18655                (this.levels = this.audioTracks = this.subtitleTracks = null);
18656            }),
18657            (e.onManifestLoaded = function (t, e) {
18658              var r = e.contentSteering;
18659              null !== r &&
18660                ((this.pathwayId = r.pathwayId),
18661                (this.uri = r.uri),
18662                this.started && this.startLoad());
18663            }),
18664            (e.onManifestParsed = function (t, e) {
18665              (this.audioTracks = e.audioTracks), (this.subtitleTracks = e.subtitleTracks);
18666            }),
18667            (e.onError = function (t, e) {
18668              var r = e.errorAction;
18669              if ((null == r ? void 0 : r.action) === Dr && r.flags === _r) {
18670                var i = this.levels,
18671                  n = this.pathwayPriority,
18672                  a = this.pathwayId;
18673                if (e.context) {
18674                  var s = e.context,
18675                    o = s.groupId,
18676                    l = s.pathwayId,
18677                    u = s.type;
18678                  o && i ? (a = this.getPathwayForGroupId(o, u, a)) : l && (a = l);
18679                }
18680                a in this.penalizedPathways || (this.penalizedPathways[a] = performance.now()),
18681                  !n &&
18682                    i &&
18683                    (n = i.reduce(function (t, e) {
18684                      return -1 === t.indexOf(e.pathwayId) && t.push(e.pathwayId), t;
18685                    }, [])),
18686                  n &&
18687                    n.length > 1 &&
18688                    (this.updatePathwayPriority(n), (r.resolved = this.pathwayId !== a)),
18689                  r.resolved ||
18690                    w.warn(
18691                      'Could not resolve ' +
18692                        e.details +
18693                        ' ("' +
18694                        e.error.message +
18695                        '") with content-steering for Pathway: ' +
18696                        a +
18697                        ' levels: ' +
18698                        (i ? i.length : i) +
18699                        ' priorities: ' +
18700                        JSON.stringify(n) +
18701                        ' penalized: ' +
18702                        JSON.stringify(this.penalizedPathways)
18703                    );
18704              }
18705            }),
18706            (e.filterParsedLevels = function (t) {
18707              this.levels = t;
18708              var e = this.getLevelsForPathway(this.pathwayId);
18709              if (0 === e.length) {
18710                var r = t[0].pathwayId;
18711                this.log(
18712                  'No levels found in Pathway ' +
18713                    this.pathwayId +
18714                    '. Setting initial Pathway to "' +
18715                    r +
18716                    '"'
18717                ),
18718                  (e = this.getLevelsForPathway(r)),
18719                  (this.pathwayId = r);
18720              }
18721              return (
18722                e.length !== t.length &&
18723                  this.log(
18724                    'Found ' +
18725                      e.length +
18726                      '/' +
18727                      t.length +
18728                      ' levels in Pathway "' +
18729                      this.pathwayId +
18730                      '"'
18731                  ),
18732                e
18733              );
18734            }),
18735            (e.getLevelsForPathway = function (t) {
18736              return null === this.levels
18737                ? []
18738                : this.levels.filter(function (e) {
18739                    return t === e.pathwayId;
18740                  });
18741            }),
18742            (e.updatePathwayPriority = function (t) {
18743              var e;
18744              this.pathwayPriority = t;
18745              var r = this.penalizedPathways,
18746                i = performance.now();
18747              Object.keys(r).forEach(function (t) {
18748                i - r[t] > 3e5 && delete r[t];
18749              });
18750              for (var n = 0; n < t.length; n++) {
18751                var a = t[n];
18752                if (!(a in r)) {
18753                  if (a === this.pathwayId) return;
18754                  var s = this.hls.nextLoadLevel,
18755                    o = this.hls.levels[s];
18756                  if ((e = this.getLevelsForPathway(a)).length > 0) {
18757                    this.log('Setting Pathway to "' + a + '"'),
18758                      (this.pathwayId = a),
18759                      mr(e),
18760                      this.hls.trigger(S.LEVELS_UPDATED, { levels: e });
18761                    var l = this.hls.levels[s];
18762                    o &&
18763                      l &&
18764                      this.levels &&
18765                      (l.attrs['STABLE-VARIANT-ID'] !== o.attrs['STABLE-VARIANT-ID'] &&
18766                        l.bitrate !== o.bitrate &&
18767                        this.log(
18768                          'Unstable Pathways change from bitrate ' + o.bitrate + ' to ' + l.bitrate
18769                        ),
18770                      (this.hls.nextLoadLevel = s));
18771                    break;
18772                  }
18773                }
18774              }
18775            }),
18776            (e.getPathwayForGroupId = function (t, e, r) {
18777              for (
18778                var i = this.getLevelsForPathway(r).concat(this.levels || []), n = 0;
18779                n < i.length;
18780                n++
18781              )
18782                if ((e === xe && i[n].hasAudioGroup(t)) || (e === Pe && i[n].hasSubtitleGroup(t)))
18783                  return i[n].pathwayId;
18784              return r;
18785            }),
18786            (e.clonePathways = function (t) {
18787              var e = this,
18788                r = this.levels;
18789              if (r) {
18790                var i = {},
18791                  n = {};
18792                t.forEach(function (t) {
18793                  var a = t.ID,
18794                    s = t['BASE-ID'],
18795                    o = t['URI-REPLACEMENT'];
18796                  if (
18797                    !r.some(function (t) {
18798                      return t.pathwayId === a;
18799                    })
18800                  ) {
18801                    var l = e.getLevelsForPathway(s).map(function (t) {
18802                      var e = new x(t.attrs);
18803                      e['PATHWAY-ID'] = a;
18804                      var r = e.AUDIO && e.AUDIO + '_clone_' + a,
18805                        s = e.SUBTITLES && e.SUBTITLES + '_clone_' + a;
18806                      r && ((i[e.AUDIO] = r), (e.AUDIO = r)),
18807                        s && ((n[e.SUBTITLES] = s), (e.SUBTITLES = s));
18808                      var l = qs(t.uri, e['STABLE-VARIANT-ID'], 'PER-VARIANT-URIS', o),
18809                        u = new or({
18810                          attrs: e,
18811                          audioCodec: t.audioCodec,
18812                          bitrate: t.bitrate,
18813                          height: t.height,
18814                          name: t.name,
18815                          url: l,
18816                          videoCodec: t.videoCodec,
18817                          width: t.width,
18818                        });
18819                      if (t.audioGroups)
18820                        for (var h = 1; h < t.audioGroups.length; h++)
18821                          u.addGroupId('audio', t.audioGroups[h] + '_clone_' + a);
18822                      if (t.subtitleGroups)
18823                        for (var d = 1; d < t.subtitleGroups.length; d++)
18824                          u.addGroupId('text', t.subtitleGroups[d] + '_clone_' + a);
18825                      return u;
18826                    });
18827                    r.push.apply(r, l), js(e.audioTracks, i, o, a), js(e.subt
18827itleTracks, n, o, a);
18828                  }
18829                });
18830              }
18831            }),
18832            (e.loadSteeringManifest = function (t) {
18833              var e,
18834                r = this,
18835                i = this.hls.config,
18836                n = i.loader;
18837              this.loader && this.loader.destroy(), (this.loader = new n(i));
18838              try {
18839                e = new self.URL(t);
18840              } catch (e) {
18841                return (
18842                  (this.enabled = !1), void this.log('Failed to parse Steering Manifest URI: ' + t)
18843                );
18844              }
18845              if ('data:' !== e.protocol) {
18846                var a = 0 | (this.hls.bandwidthEstimate || i.abrEwmaDefaultEstimate);
18847                e.searchParams.set('_HLS_pathway', this.pathwayId),
18848                  e.searchParams.set('_HLS_throughput', '' + a);
18849              }
18850              var s = { responseType: 'json', url: e.href },
18851                o = i.steeringManifestLoadPolicy.default,
18852                l = o.errorRetry || o.timeoutRetry || {},
18853                u = {
18854                  loadPolicy: o,
18855                  timeout: o.maxLoadTimeMs,
18856                  maxRetry: l.maxNumRetry || 0,
18857                  retryDelay: l.retryDelayMs || 0,
18858                  maxRetryDelay: l.maxRetryDelayMs || 0,
18859                },
18860                h = {
18861                  onSuccess: function (t, i, n, a) {
18862                    r.log('Loaded steering manifest: "' + e + '"');
18863                    var s = t.data;
18864                    if (1 === s.VERSION) {
18865                      (r.updated = performance.now()), (r.timeToLoad = s.TTL);
18866                      var o = s['RELOAD-URI'],
18867                        l = s['PATHWAY-CLONES'],
18868                        u = s['PATHWAY-PRIORITY'];
18869                      if (o)
18870                        try {
18871                          r.uri = new self.URL(o, e).href;
18872                        } catch (t) {
18873                          return (
18874                            (r.enabled = !1),
18875                            void r.log('Failed to parse Steering Manifest RELOAD-URI: ' + o)
18876                          );
18877                        }
18878                      r.scheduleRefresh(r.uri || n.url), l && r.clonePathways(l);
18879                      var h = { steeringManifest: s, url: e.toString() };
18880                      r.hls.trigger(S.STEERING_MANIFEST_LOADED, h), u && r.updatePathwayPriority(u);
18881                    } else r.log('Steering VERSION ' + s.VERSION + ' not supported!');
18882                  },
18883                  onError: function (t, e, i, n) {
18884                    if (
18885                      (r.log(
18886                        'Error loading steering manifest: ' +
18887                          t.code +
18888                          ' ' +
18889                          t.text +
18890                          ' (' +
18891                          e.url +
18892                          ')'
18893                      ),
18894                      r.stopLoad(),
18895                      410 === t.code)
18896                    )
18897                      return (
18898                        (r.enabled = !1),
18899                        void r.log('Steering manifest ' + e.url + ' no longer available')
18900                      );
18901                    var a = 1e3 * r.timeToLoad;
18902                    if (429 !== t.code) r.scheduleRefresh(r.uri || e.url, a);
18903                    else {
18904                      var s = r.loader;
18905                      if ('function' == typeof (null == s ? void 0 : s.getResponseHeader)) {
18906                        var o = s.getResponseHeader('Retry-After');
18907                        o && (a = 1e3 * parseFloat(o));
18908                      }
18909                      r.log('Steering manifest ' + e.url + ' rate limited');
18910                    }
18911                  },
18912                  onTimeout: function (t, e, i) {
18913                    r.log('Timeout loading steering manifest (' + e.url + ')'),
18914                      r.scheduleRefresh(r.uri || e.url);
18915                  },
18916                };
18917              this.log('Requesting steering manifest: ' + e), this.loader.load(s, u, h);
18918            }),
18919            (e.scheduleRefresh = function (t, e) {
18920              var r = this;
18921              void 0 === e && (e = 1e3 * this.timeToLoad),
18922                this.clearTimeout(),
18923                (this.reloadTimer = self.setTimeout(function () {
18924                  var e,
18925                    i = null == (e = r.hls) ? void 0 : e.media;
18926                  !i || i.ended
18927                    ? r.scheduleRefresh(t, 1e3 * r.timeToLoad)
18928                    : r.loadSteeringManifest(t);
18929                }, e));
18930            }),
18931            t
18932          );
18933        })();
18934      function js(t, e, r, i) {
18935        t &&
18936          Object.keys(e).forEach(function (n) {
18937            var a = t
18938              .filter(function (t) {
18939                return t.groupId === n;
18940              })
18941              .map(function (t) {
18942                var a = o({}, t);
18943                return (
18944                  (a.details = void 0),
18945                  (a.attrs = new x(a.attrs)),
18946                  (a.url = a.attrs.URI =
18947                    qs(t.url, t.attrs['STABLE-RENDITION-ID'], 'PER-RENDITION-URIS', r)),
18948                  (a.groupId = a.attrs['GROUP-ID'] = e[n]),
18949                  (a.attrs['PATHWAY-ID'] = i),
18950                  a
18951                );
18952              });
18953            t.push.apply(t, a);
18954          });
18955      }
18956      function qs(t, e, r, i) {
18957        var n,
18958          a = i.HOST,
18959          s = i.PARAMS,
18960          o = i[r];
18961        e && (n = null == o ? void 0 : o[e]) && (t = n);
18962        var l = new self.URL(t);
18963        return (
18964          a && !n && (l.host = a),
18965          s &&
18966            Object.keys(s)
18967              .sort()
18968              .forEach(function (t) {
18969                t && l.searchParams.set(t, s[t]);
18970              }),
18971          l.href
18972        );
18973      }
18974      var Xs = /^age:\s*[\d.]+\s*$/im,
18975        zs = (function () {
18976          function t(t) {
18977            (this.xhrSetup = void 0),
18978              (this.requestTimeout = void 0),
18979              (this.retryTimeout = void 0),
18980              (this.retryDelay = void 0),
18981              (this.config = null),
18982              (this.callbacks = null),
18983              (this.context = null),
18984              (this.loader = null),
18985              (this.stats = void 0),
18986              (this.xhrSetup = (t && t.xhrSetup) || null),
18987              (this.stats = new M()),
18988              (this.retryDelay = 0);
18989          }
18990          var e = t.prototype;
18991          return (
18992            (e.destroy = function () {
18993              (this.callbacks = null),
18994                this.abortInternal(),
18995                (this.loader = null),
18996                (this.config = null),
18997                (this.context = null),
18998                (this.xhrSetup = null);
18999            }),
19000            (e.abortInternal = function () {
19001              var t = this.loader;
19002              self.clearTimeout(this.requestTimeout),
19003                self.clearTimeout(this.retryTimeout),
19004                t &&
19005                  ((t.onreadystatechange = null),
19006                  (t.onprogress = null),
19007                  4 !== t.readyState && ((this.stats.aborted = !0), t.abort()));
19008            }),
19009            (e.abort = function () {
19010              var t;
19011              this.abortInternal(),
19012                null != (t = this.callbacks) &&
19013                  t.onAbort &&
19014                  this.callbacks.onAbort(this.stats, this.context, this.loader);
19015            }),
19016            (e.load = function (t, e, r) {
19017              if (this.stats.loading.start) throw new Error('Loader can only be used once.');
19018              (this.stats.loading.start = self.performance.now()),
19019                (this.context = t),
19020                (this.config = e),
19021                (this.callbacks = r),
19022                this.loadInternal();
19023            }),
19024            (e.loadInternal = function () {
19025              var t = this,
19026                e = this.config,
19027                r = this.context;
19028              if (e && r) {
19029                var i = (this.loader = new self.XMLHttpRequest()),
19030                  n = this.stats;
19031                (n.loading.first = 0), (n.loaded = 0), (n.aborted = !1);
19032                var a = this.xhrSetup;
19033                a
19034                  ? Promise.resolve()
19035                      .then(function () {
19036                        if (t.loader === i && !t.stats.aborted) return a(i, r.url);
19037                      })
19038                      .catch(function (e) {
19039                        if (t.loader === i && !t.stats.aborted)
19040                          return i.open('GET', r.url, !0), a(i, r.url);
19041                      })
19042                      .then(function () {
19043                        t.loader !== i || t.stats.aborted || t.openAndSendXhr(i, r, e);
19044                      })
19045                      .catch(function (e) {
19046                        t.callbacks.onError({ code: i.status, text: e.message }, r, i, n);
19047                      })
19048                  : this.openAndSendXhr(i, r, e);
19049              }
19050            }),
19051            (e.openAndSendXhr = function (t, e, r) {
19052              t.readyState || t.open('GET', e.url, !0);
19053              var i = e.headers,
19054                n = r.loadPolicy,
19055                a = n.maxTimeToFirstByteMs,
19056                s = n.maxLoadTimeMs;
19057              if (i) for (var o in i) t.setRequestHeader(o, i[o]);
19058              e.rangeEnd &&
19059                t.setRequestHeader('Range', 'bytes=' + e.rangeStart + '-' + (e.rangeEnd - 1)),
19060                (t.onreadystatechange = this.readystatechange.bind(this)),
19061                (t.onprogress = this.loadprogress.bind(this)),
19062                (t.responseType = e.responseType),
19063                self.clearTimeout(this.requestTimeout),
19064                (r.timeout = a && y(a) ? a : s),
19065                (this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), r.timeout)),
19066                t.send();
19067            }),
19068            (e.readystatechange = function () {
19069              var t = this.context,
19070                e = this.loader,
19071                r = this.stats;
19072              if (t && e) {
19073                var i = e.readyState,
19074                  n = this.config;
19075                if (
19076                  !r.aborted &&
19077                  i >= 2 &&
19078                  (0 === r.loading.first &&
19079                    ((r.loading.first = Math.max(self.performance.now(), r.loading.start)),
19080                    n.timeout !== n.loadPolicy.maxLoadTimeMs &&
19081                      (self.clearTimeout(this.requestTimeout),
19082                      (n.timeout = n.loadPolicy.maxLoadTimeMs),
19083                      (this.requestTimeout = self.setTimeout(
19084                        this.loadtimeout.bind(this),
19085                        n.loadPolicy.maxLoadTimeMs - (r.loading.first - r.loading.start)
19086                      )))),
19087                  4 === i)
19088                ) {
19089                  self.clearTimeout(this.requestTimeout),
19090                    (e.onreadystatechange = null),
19091                    (e.onprogress = null);
19092                  var a = e.status,
19093                    s = 'text' === e.responseType ? e.responseText : null;
19094                  if (a >= 200 && a < 300) {
19095                    var o = null != s ? s : e.response;
19096                    if (null != o) {
19097                      r.loading.end = Math.max(self.performance.now(), r.loading.first);
19098                      var l = 'arraybuffer' === e.responseType ? o.byteLength : o.length;
19099                      if (
19100                        ((r.loaded = r.total = l),
19101                        (r.bwEstimate = (8e3 * r.total) / (r.loading.end - r.loading.first)),
19102                        !this.callbacks)
19103                      )
19104                        return;
19105                      var u = this.callbacks.onProgress;
19106                      if ((u && u(r, t, o, e), !this.callbacks)) return;
19107                      var h = { url: e.responseURL, data: o, code: a };
19108                      return void this.callbacks.onSuccess(h, r, t, e);
19109                    }
19110                  }
19111                  var d = n.loadPolicy.errorRetry;
19112                  Sr(d, r.retry, !1, { url: t.url, data: void 0, code: a })
19113                    ? this.retry(d)
19114                    : (w.error(a + ' while loading ' + t.url),
19115                      this.callbacks.onError({ code: a, text: e.statusText }, t, e, r));
19116                }
19117              }
19118            }),
19119            (e.loadtimeout = function () {
19120              if (this.config) {
19121                var t = this.config.loadPolicy.timeoutRetry;
19122                if (Sr(t, this.stats.retry, !0)) this.retry(t);
19123                else {
19124                  var e;
19125                  w.warn('timeout while loading ' + (null == (e = this.context) ? void 0 : e.url));
19126                  var r = this.callbacks;
19127                  r && (this.abortInternal(), r.onTimeout(this.stats, this.context, this.loader));
19128                }
19129              }
19130            }),
19131            (e.retry = function (t) {
19132              var e = this.context,
19133                r = this.stats;
19134              (this.retryDelay = Er(t, r.retry)),
19135                r.retry++,
19136                w.warn(
19137                  (status ? 'HTTP Status ' + status : 'Timeout') +
19138                    ' while loading ' +
19139                    (null == e ? void 0 : e.url) +
19140                    ', retrying ' +
19141                    r.retry +
19142                    '/' +
19143                    t.maxNumRetry +
19144                    ' in ' +
19145                    this.retryDelay +
19146                    'ms'
19147                ),
19148                this.abortInternal(),
19149                (this.loader = null),
19150                self.clearTimeout(this.retryTimeout),
19151                (this.retryTimeout = self.setTimeout(
19152                  this.loadInternal.bind(this),
19153                  this.retryDelay
19154                ));
19155            }),
19156            (e.loadprogress = function (t) {
19157              var e = this.stats;
19158              (e.loaded = t.loaded), t.lengthComputable && (e.total = t.total);
19159            }),
19160            (e.getCacheAge = function () {
19161              var t = null;
19162              if (this.loader && Xs.test(this.loader.getAllResponseHeaders())) {
19163                var e = this.loader.getResponseHeader('age');
19164                t = e ? parseFloat(e) : null;
19165              }
19166              return t;
19167            }),
19168            (e.getResponseHeader = function (t) {
19169              return this.loader &&
19170                new RegExp('^' + t + ':\\s*[\\d.]+\\s*$', 'im').test(
19171                  this.loader.getAllResponseHeaders()
19172                )
19173                ? this.loader.getResponseHeader(t)
19174                : null;
19175            }),
19176            t
19177          );
19178        })(),
19179        Qs = /(\d+)-(\d+)\/(\d+)/,
19180        Js = (function () {
19181          function t(t) {
19182            (this.fetchSetup = void 0),
19183              (this.requestTimeout = void 0),
19184              (this.request = null),
19185              (this.response = null),
19186              (this.controller = void 0),
19187              (this.context = null),
19188              (this.config = null),
19189              (this.callbacks = null),
19190              (this.stats = void 0),
19191              (this.loader = null),
19192              (this.fetchSetup = t.fetchSetup || $s),
19193              (this.controller = new self.AbortController()),
19194              (this.stats = new M());
19195          }
19196          var e = t.prototype;
19197          return (
19198            (e.destroy = function () {
19199              (this.loader = this.callbacks = this.context = this.config = this.request = null),
19200                this.abortInternal(),
19201                (this.response = null),
19202                (this.fetchSetup = this.controller = this.stats = null);
19203            }),
19204            (e.abortInternal = function () {
19205              this.controller &&
19206                !this.stats.loading.end &&
19207                ((this.stats.aborted = !0), this.controller.abort());
19208            }),
19209            (e.abort = function () {
19210              var t;
19211              this.abortInternal(),
19212                null != (t = this.callbacks) &&
19213                  t.onAbort &&
19214                  this.callbacks.onAbort(this.stats, this.context, this.response);
19215            }),
19216            (e.load = function (t, e, r) {
19217              var i = this,
19218                n = this.stats;
19219              if (n.loading.start) throw new Error('Loader can only be used once.');
19220              n.loading.start = self.performance.now();
19221              var a = (function (t, e) {
19222                  var r = {
19223                    method: 'GET',
19224                    mode: 'cors',
19225                    credentials: 'same-origin',
19226                    signal: e,
19227                    headers: new self.Headers(o({}, t.headers)),
19228                  };
19229                  return (
19230                    t.rangeEnd &&
19231                      r.headers.set(
19232                        'Range',
19233                        'bytes=' + t.rangeStart + '-' + String(t.rangeEnd - 1)
19234                      ),
19235                    r
19236                  );
19237                })(t, this.controller.signal),
19238                s = r.onProgress,
19239                l = 'arraybuffer' === t.responseType,
19240                u = l ? 'byteLength' : 'length',
19241                h = e.loadPolicy,
19242                d = h.maxTimeToFirstByteMs,
19243                c = h.maxLoadTimeMs;
19244              (this.context = t),
19245                (this.config = e),
19246                (this.callbacks = r),
19247                (this.request = this.fetchSetup(t, a)),
19248                self.clearTimeout(this.requestTimeout),
19249                (e.timeout = d && y(d) ? d : c),
19250                (this.requestTimeout = self.setTimeout(function () {
19251                  i.abortInternal(), r.onTimeout(n, t, i.response);
19252                }, e.timeout)),
19253                self
19254                  .fetch(this.request)
19255                  .then(function (a) {
19256                    i.response = i.loader = a;
19257                    var o = Math.max(self.performance.now(), n.loading.start);
19258                    if (
19259                      (self.clearTimeout(i.requestTimeout),
19260                      (e.timeout = c),
19261                      (i.requestTimeout = self.setTimeout(function () {
19262                        i.abortInternal(), r.onTimeout(n, t, i.response);
19263                      }, c - (o - n.loading.start))),
19264                      !a.ok)
19265                    ) {
19266                      var u = a.status,
19267                        h = a.statusText;
19268                      throw new to(h || 'fetch, bad network response', u, a);
19269                    }
19270                    return (
19271                      (n.loading.first = o),
19272                      (n.total =
19273                        (function (t) {
19274                          var e = t.get('Content-Range');
19275                          if (e) {
19276                            var r = (function (t) {
19277                              var e = Qs.exec(t);
19278                              if (e) return parseInt(e[2]) - parseInt(e[1]) + 1;
19279                            })(e);
19280                            if (y(r)) return r;
19281                          }
19282                          var i = t.get('Content-Length');
19283                          if (i) return parseInt(i);
19284                        })(a.headers) || n.total),
19285                      s && y(e.highWaterMark)
19286                        ? i.loadProgressively(a, n, t, e.highWaterMark, s)
19287                        : l
19288                        ? a.arrayBuffer()
19289                        : 'json' === t.responseType
19290                        ? a.json()
19291                        : a.text()
19292                    );
19293                  })
19294                  .then(function (a) {
19295                    var o = i.response;
19296                    if (!o) throw new Error('loader destroyed');
19297                    self.clearTimeout(i.requestTimeout),
19298                      (n.loading.end = Math.max(self.performance.now(), n.loading.first));
19299                    var l = a[u];
19300                    l && (n.loaded = n.total = l);
19301                    var h = { url: o.url, data: a, code: o.status };
19302                    s && !y(e.highWaterMark) && s(n, t, a, o), r.onSuccess(h, n, t, o);
19303                  })
19304                  .catch(function (e) {
19305                    if ((self.clearTimeout(i.requestTimeout), !n.aborted)) {
19306                      var a = (e && e.code) || 0,
19307                        s = e ? e.message : null;
19308                      r.onError({ code: a, text: s }, t, e ? e.details : null, n);
19309                    }
19310                  });
19311            }),
19312            (e.getCacheAge = function () {
19313              var t = null;
19314              if (this.response) {
19315                var e = this.response.headers.get('age');
19316                t = e ? parseFloat(e) : null;
19317              }
19318              return t;
19319            }),
19320            (e.getResponseHeader = function (t) {
19321              return this.response ? this.response.headers.get(t) : null;
19322            }),
19323            (e.loadProgressively = function (t, e, r, i, n) {
19324              void 0 === i && (i = 0);
19325              var a = new xi(),
19326                s = t.body.getReader();
19327              return (function o() {
19328                return s
19329                  .read()
19330                  .then(function (s) {
19331                    if (s.done)
19332                      return (
19333                        a.dataLength && n(e, r, a.flush(), t), Promise.resolve(new ArrayBuffer(0))
19334                      );
19335                    var l = s.value,
19336                      u = l.length;
19337                    return (
19338                      (e.loaded += u),
19339                      u < i || a.dataLength
19340                        ? (a.push(l), a.dataLength >= i && n(e, r, a.flush(), t))
19341                        : n(e, r, l, t),
19342                      o()
19343                    );
19344                  })
19345                  .catch(function () {
19346                    return Promise.reject();
19347                  });
19348              })();
19349            }),
19350            t
19351          );
19352        })();
19353      function $s(t, e) {
19354        return new self.Request(t.url, e);
19355      }
19356      var Zs,
19357        to = (function (t) {
19358          function e(e, r, i) {
19359            var n;
19360            return (
19361              ((n = t.call(this, e) || this).code = void 0),
19362              (n.details = void 0),
19363              (n.code = r),
19364              (n.details = i),
19365              n
19366            );
19367          }
19368          return l(e, t), e;
19369        })(c(Error)),
19370        eo = /\s/,
19371        ro = i(
19372          i(
19373            {
19374              autoStartLoad: !0,
19375              startPosition: -1,
19376              defaultAudioCodec: void 0,
19377              debug: !1,
19378              capLevelOnFPSDrop: !1,
19379              capLevelToPlayerSize: !1,
19380              ignoreDevicePixelRatio: !1,
19381              preferManagedMediaSource: !0,
19382              initialLiveManifestSize: 1,
19383              maxBufferLength: 30,
19384              backBufferLength: 1 / 0,
19385              frontBufferFlushThreshold: 1 / 0,
19386              maxBufferSize: 6e7,
19387              maxBufferHole: 0.1,
19388              highBufferWatchdogPeriod: 2,
19389              nudgeOffset: 0.1,
19390              nudgeMaxRetry: 3,
19391              maxFragLookUpTolerance: 0.25,
19392              liveSyncDurationCount: 3,
19393              liveMaxLatencyDurationCount: 1 / 0,
19394              liveSyncDuration: void 0,
19395              liveMaxLatencyDuration: void 0,
19396              maxLiveSyncPlaybackRate: 1,
19397              liveDurationInfinity: !1,
19398              liveBackBufferLength: null,
19399              maxMaxBufferLength: 600,
19400              enableWorker: !0,
19401              workerPath: null,
19402              enableSoftwareAES: !0,
19403              startLevel: void 0,
19404              startFragPrefetch: !1,
19405              fpsDroppedMonitoringPeriod: 5e3,
19406              fpsDroppedMonitoringThreshold: 0.2,
19407              appendErrorMaxRetry: 3,
19408              loader: zs,
19409              fLoader: void 0,
19410              pLoader: void 0,
19411              xhrSetup: void 0,
19412              licenseXhrSetup: void 0,
19413              licenseResponseCallback: void 0,
19414              abrController: jr,
19415              bufferController: na,
19416              capLevelController: ts,
19417              errorController: Pr,
19418              fpsController: es,
19419              stretchShortVideoTrack: !1,
19420              maxAudioFramesDrift: 1,
19421              forceKeyFrameOnDiscontinuity: !0,
19422              abrEwmaFastLive: 3,
19423              abrEwmaSlowLive: 9,
19424              abrEwmaFastVoD: 3,
19425              abrEwmaSlowVoD: 9,
19426              abrEwmaDefaultEstimate: 5e5,
19427              abrEwmaDefaultEstimateMax: 5e6,
19428              abrBandWidthFactor: 0.95,
19429              abrBandWidthUpFactor: 0.7,
19430              abrMaxWithRealBitrate: !1,
19431              maxStarvationDelay: 4,
19432              maxLoadingDelay: 4,
19433              minAutoBitrate: 0,
19434              emeEnabled: !1,
19435              widevineLicenseUrl: void 0,
19436              drmSystems: {},
19437              drmSystemOptions: {},
19438              requestMediaKeySystemAccessFunc: ot,
19439              testBandwidth: !0,
19440              progressive: !1,
19441              lowLatencyMode: !0,
19442              cmcd: void 0,
19443              enableDateRangeMetadataCues: !0,
19444              enableEmsgMetadataCues: !0,
19445              enableID3MetadataCues: !0,
19446              useMediaCapabilities: !0,
19447              certLoadPolicy: {
19448                default: {
19449                  maxTimeToFirstByteMs: 8e3,
19450                  maxLoadTimeMs: 2e4,
19451                  timeoutRetry: null,
19452                  errorRetry: null,
19453                },
19454              },
19455              keyLoadPolicy: {
19456                default: {
19457                  maxTimeToFirstByteMs: 8e3,
19458                  maxLoadTimeMs: 2e4,
19459                  timeoutRetry: {
19460                    maxNumRetry: 1,
19461                    retryDelayMs: 1e3,
19462                    maxRetryDelayMs: 2e4,
19463                    backoff: 'linear',
19464                  },
19465                  errorRetry: {
19466                    maxNumRetry: 8,
19467                    retryDelayMs: 1e3,
19468                    maxRetryDelayMs: 2e4,
19469                    backoff: 'linear',
19470                  },
19471                },
19472              },
19473              manifestLoadPolicy: {
19474                default: {
19475                  maxTimeToFirstByteMs: 1 / 0,
19476                  maxLoadTimeMs: 2e4,
19477                  timeoutRetry: { maxNumRetry: 2, retryDelayMs: 0, maxRetryDelayMs: 0 },
19478                  errorRetry: { maxNumRetry: 1, retryDelayMs: 1e3, maxRetryDelayMs: 8e3 },
19479                },
19480              },
19481              playlistLoadPolicy: {
19482                default: {
19483                  maxTimeToFirstByteMs: 1e4,
19484                  maxLoadTimeMs: 2e4,
19485                  timeoutRetry: { maxNumRetry: 2, retryDelayMs: 0, maxRetryDelayMs: 0 },
19486                  errorRetry: { maxNumRetry: 2, retryDelayMs: 1e3, maxRetryDelayMs: 8e3 },
19487                },
19488              },
19489              fragLoadPolicy: {
19490                default: {
19491                  maxTimeToFirstByteMs: 1e4,
19492                  maxLoadTimeMs: 12e4,
19493                  timeoutRetry: { maxNumRetry: 4, retryDelayMs: 0, maxRetryDelayMs: 0 },
19494                  errorRetry: { maxNumRetry: 6, retryDelayMs: 1e3, maxRetryDelayMs: 8e3 },
19495                },
19496              },
19497              steeringManifestLoadPolicy: {
19498                default: {
19499                  maxTimeToFirstByteMs: 1e4,
19500                  maxLoadTimeMs: 2e4,
19501                  timeoutRetry: { maxNumRetry: 2, retryDelayMs: 0, maxRetryDelayMs: 0 },
19502                  errorRetry: { maxNumRetry: 1, retryDelayMs: 1e3, maxRetryDelayMs: 8e3 },
19503                },
19504              },
19505              manifestLoadingTimeOut: 1e4,
19506              manifestLoadingMaxRetry: 1,
19507              manifestLoadingRetryDelay: 1e3,
19508              manifestLoadingMaxRetryTimeout: 64e3,
19509              levelLoadingTimeOut: 1e4,
19510              levelLoadingMaxRetry: 4,
19511              levelLoadingRetryDelay: 1e3,
19512              levelLoadingMaxRetryTimeout: 64e3,
19513              fragLoadingTimeOut: 2e4,
19514              fragLoadingMaxRetry: 6,
19515              fragLoadingRetryDelay: 1e3,
19516              fragLoadingMaxRetryTimeout: 64e3,
19517            },
19518            {
19519              cueHandler: {
19520                newCue: function (t, e, r, i) {
19521                  for (
19522                    var n, a, s, o, l, u = [], h = self.VTTCue || self.TextTrackCue, d = 0;
19523                    d < i.rows.length;
19524                    d++
19525                  )
19526                    if (((s = !0), (o = 0), (l = ''), !(n = i.rows[d]).isEmpty())) {
19527                      for (var c, f = 0; f < n.chars.length; f++)
19528                        eo.test(n.chars[f].uchar) && s ? o++ : ((l += n.chars[f].uchar), (s = !1));
19529                      (n.cueStartTime = e), e === r && (r += 1e-4), o >= 16 ? o-- : o++;
19530                      var g = Pa(l.trim()),
19531                        v = Ua(e, r, g);
19532                      (null != t && null != (c = t.cues) && c.getCueById(v)) ||
19533                        (((a = new h(e, r, g)).id = v),
19534                        (a.line = d + 1),
19535                        (a.align = 'left'),
19536                        (a.position = 10 + Math.min(80, 10 * Math.floor((8 * o) / 32))),
19537                        u.push(a));
19538                    }
19539                  return (
19540                    t &&
19541                      u.length &&
19542                      (u.sort(function (t, e) {
19543                        return 'auto' === t.line || 'auto' === e.line
19544                          ? 0
19545                          : t.line > 8 && e.line > 8
19546                          ? e.line - t.line
19547                          : t.line - e.line;
19548                      }),
19549                      u.forEach(function (e) {
19550                        return Ke(t, e);
19551                      })),
19552                    u
19553                  );
19554                },
19555              },
19556              enableWebVTT: !0,
19557              enableIMSC1: !0,
19558              enableCEA708Captions: !0,
19559              captionsTextTrack1Label: 'English',
19560              captionsTextTrack1LanguageCode: 'en',
19561              captionsTextTrack2Label: 'Spanish',
19562              captionsTextTrack2LanguageCode: 'es',
19563              captionsTextTrack3Label: 'Unknown CC',
19564              captionsTextTrack3LanguageCode: '',
19565              captionsTextTrack4Label: 'Unknown CC',
19566              captionsTextTrack4LanguageCode: '',
19567              renderTextTracksNatively: !0,
19568            }
19569          ),
19570          {},
19571          {
19572            subtitleStreamController: Zn,
19573            subtitleTrackController: ea,
19574            timelineController: Ja,
19575            audioStreamController: Jn,
19576            audioTrackController: $n,
19577            emeController: is,
19578            cmcdController: Ys,
19579            contentSteeringController: Ws,
19580          }
19581        );
19582      function io(t) {
19583        return t && 'object' == typeof t
19584          ? Array.isArray(t)
19585            ? t.map(io)
19586            : Object.keys(t).reduce(function (e, r) {
19587                return (e[r] = io(t[r])), e;
19588              }, {})
19589          : t;
19590      }
19591      function no(t) {
19592        var e = t.loader;
19593        e !== Js && e !== zs
19594          ? (w.log('[config]: Custom loader detected, cannot enable progressive streaming'),
19595            (t.progressive = !1))
19596          : (function () {
19597              if (self.fetch && self.AbortController && self.ReadableStream && self.Request)
19598                try {
19599                  return new self.ReadableStream({}), !0;
19600                } catch (t) {}
19601              return !1;
19602            })() &&
19603            ((t.loader = Js),
19604            (t.progressive = !0),
19605            (t.enableSoftwareAES = !0),
19606            w.log('[config]: Progressive streaming enabled, using FetchLoader'));
19607      }
19608      var ao = (function (t) {
19609        function e(e, r) {
19610          var i;
19611          return (
19612            ((i = t.call(this, e, '[level-controller]') || this)._levels = []),
19613            (i._firstLevel = -1),
19614            (i._maxAutoLevel = -1),
19615            (i._startLevel = void 0),
19616            (i.currentLevel = null),
19617            (i.currentLevelIndex = -1),
19618            (i.manualLevelIndex = -1),
19619            (i.steering = void 0),
19620            (i.onParsedComplete = void 0),
19621            (i.steering = r),
19622            i._registerListeners(),
19623            i
19624          );
19625        }
19626        l(e, t);
19627        var r = e.prototype;
19628        return (
19629          (r._registerListeners = function () {
19630            var t = this.hls;
19631            t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
19632              t.on(S.MANIFEST_LOADED, this.onManifestLoaded, this),
19633              t.on(S.LEVEL_LOADED, this.onLevelLoaded, this),
19634              t.on(S.LEVELS_UPDATED, this.onLevelsUpdated, this),
19635              t.on(S.FRAG_BUFFERED, this.onFragBuffered, this),
19636              t.on(S.ERROR, this.onError, this);
19637          }),
19638          (r._unregisterListeners = function () {
19639            var t = this.hls;
19640            t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
19641              t.off(S.MANIFEST_LOADED, this.onManifestLoaded, this),
19642              t.off(S.LEVEL_LOADED, this.onLevelLoaded, this),
19643              t.off(S.LEVELS_UPDATED, this.onLevelsUpdated, this),
19644              t.off(S.FRAG_BUFFERED, this.onFragBuffered, this),
19645              t.off(S.ERROR, this.onError, this);
19646          }),
19647          (r.destroy = function () {
19648            this._unregisterListeners(),
19649              (this.steering = null),
19650              this.resetLevels(),
19651              t.prototype.destroy.call(this);
19652          }),
19653          (r.stopLoad = function () {
19654            this._levels.forEach(function (t) {
19655              (t.loadError = 0), (t.fragmentError = 0);
19656            }),
19657              t.prototype.stopLoad.call(this);
19658          }),
19659          (r.resetLevels = function () {
19660            (this._startLevel = void 0),
19661              (this.manualLevelIndex = -1),
19662              (this.currentLevelIndex = -1),
19663              (this.currentLevel = null),
19664              (this._levels = []),
19665              (this._maxAutoLevel = -1);
19666          }),
19667          (r.onManifestLoading = function (t, e) {
19668            this.resetLevels();
19669          }),
19670          (r.onManifestLoaded = function (t, e) {
19671            var r = this.hls.config.preferManagedMediaSource,
19672              i = [],
19673              n = {},
19674              a = {},
19675              s = !1,
19676              o = !1,
19677              l = !1;
19678            e.levels.forEach(function (t) {
19679              var e,
19680                u,
19681                h = t.attrs,
19682                d = t.audioCodec,
19683                c = t.videoCodec;
19684              -1 !== (null == (e = d) ? void 0 : e.indexOf('mp4a.40.34')) &&
19685                (Zs || (Zs = /chrome|firefox/i.test(navigator.userAgent)),
19686                Zs && (t.audioCodec = d = void 0)),
19687                d && (t.audioCodec = d = ve(d, r)),
19688                0 === (null == (u = c) ? void 0 : u.indexOf('avc1')) &&
19689                  (c = t.videoCodec =
19690                    (function (t) {
19691                      for (var e = t.split(','), r = 0; r < e.length; r++) {
19692                        var i = e[r].split('.');
19693                        if (i.length > 2) {
19694                          var n = i.shift() + '.';
19695                          (n += parseInt(i.shift()).toString(16)),
19696                            (n += ('000' + parseInt(i.shift()).toString(16)).slice(-4)),
19697                            (e[r] = n);
19698                        }
19699                      }
19700                      return e.join(',');
19701                    })(c));
19702              var f = t.width,
19703                g = t.height,
19704                v = t.unknownCodecs;
19705              if (
19706                (s || (s = !(!f || !g)),
19707                o || (o = !!c),
19708                l || (l = !!d),
19709                !(
19710                  (null != v && v.length) ||
19711                  (d && !le(d, 'audio', r)) ||
19712                  (c && !le(c, 'video', r))
19713                ))
19714              ) {
19715                var m = h.CODECS,
19716                  p = h['FRAME-RATE'],
19717                  y = h['HDCP-LEVEL'],
19718                  E = h['PATHWAY-ID'],
19719                  T = h.RESOLUTION,
19720                  S = h['VIDEO-RANGE'],
19721                  L =
19722                    (E || '.') + '-' + t.bitrate + '-' + T + '-' + p + '-' + m + '-' + S + '-' + y;
19723                if (n[L])
19724                  if (n[L].uri === t.url || t.attrs['PATHWAY-ID'])
19725                    n[L].addGroupId('audio', h.AUDIO), n[L].addGroupId('text', h.SUBTITLES);
19726                  else {
19727                    var A = (a[L] += 1);
19728                    t.attrs['PATHWAY-ID'] = new Array(A + 1).join('.');
19729                    var R = new or(t);
19730                    (n[L] = R), i.push(R);
19731                  }
19732                else {
19733                  var b = new or(t);
19734                  (n[L] = b), (a[L] = 1), i.push(b);
19735                }
19736              }
19737            }),
19738              this.filterAndSortMediaOptions(i, e, s, o, l);
19739          }),
19740          (r.filterAndSortMediaOptions = function (t, e, r, i, n) {
19741            var a = this,
19742              s = [],
19743              o = [],
19744              l = t;
19745            if (
19746              ((r || i) &&
19747                n &&
19748                (l = l.filter(function (t) {
19749                  var e,
19750                    r = t.videoCodec,
19751                    i = t.videoRange,
19752                    n = t.width,
19753                    a = t.height;
19754                  return (!!r || !(!n || !a)) && !!(e = i) && er.indexOf(e) > -1;
19755                })),
19756              0 !== l.length)
19757            ) {
19758              if (e.audioTracks) {
19759                var u = this.hls.config.preferManagedMediaSource;
19760                so(
19761                  (s = e.audioTracks.filter(function (t) {
19762                    return !t.audioCodec || le(t.audioCodec, 'audio', u);
19763                  }))
19764                );
19765              }
19766              e.subtitles && so((o = e.subtitles));
19767              var h = l.slice(0);
19768              l.sort(function (t, e) {
19769                if (t.attrs['HDCP-LEVEL'] !== e.attrs['HDCP-LEVEL'])
19770                  return (t.attrs['HDCP-LEVEL'] || '') > (e.attrs['HDCP-LEVEL'] || '') ? 1 : -1;
19771                if (r && t.height !== e.height) return t.height - e.height;
19772                if (t.frameRate !== e.frameRate) return t.frameRate - e.frameRate;
19773                if (t.videoRange !== e.videoRange)
19774                  return er.indexOf(t.videoRange) - er.indexOf(e.videoRange);
19775                if (t.videoCodec !== e.videoCodec) {
19776                  var i = de(t.videoCodec),
19777                    n = de(e.videoCodec);
19778                  if (i !== n) return n - i;
19779                }
19780                if (t.uri === e.uri && t.codecSet !== e.codecSet) {
19781                  var a = ce(t.codecSet),
19782                    s = ce(e.codecSet);
19783                  if (a !== s) return s - a;
19784                }
19785                return t.averageBitrate !== e.averageBitrate
19786                  ? t.averageBitrate - e.averageBitrate
19787                  : 0;
19788              });
19789              var d = h[0];
19790              if (this.steering && (l = this.steering.filterParsedLevels(l)).length !== h.length)
19791                for (var c = 0; c < h.length; c++)
19792                  if (h[c].pathwayId === l[0].pathwayId) {
19793                    d = h[c];
19794                    break;
19795                  }
19796              this._levels = l;
19797              for (var f = 0; f < l.length; f++)
19798                if (l[f] === d) {
19799                  var g;
19800                  this._firstLevel = f;
19801                  var v = d.bitrate,
19802                    m = this.hls.bandwidthEstimate;
19803                  if (
19804                    (this.log(
19805                      'manifest loaded, ' + l.length + ' level(s) found, first bitrate: ' + v
19806                    ),
19807                    void 0 ===
19808                      (null == (g = this.hls.userConfig) ? void 0 : g.abrEwmaDefaultEstimate))
19809                  ) {
19810                    var p = Math.min(v, this.hls.config.abrEwmaDefaultEstimateMax);
19811                    p > m && m === ro.abrEwmaDefaultEstimate && (this.hls.bandwidthEstimate = p);
19812                  }
19813                  break;
19814                }
19815              var y = n && !i,
19816                E = {
19817                  levels: l,
19818                  audioTracks: s,
19819                  subtitleTracks: o,
19820                  sessionData: e.sessionData,
19821                  sessionKeys: e.sessionKeys,
19822                  firstLevel: this._firstLevel,
19823                  stats: e.stats,
19824                  audio: n,
19825                  video: i,
19826                  altAudio:
19827                    !y &&
19828                    s.some(function (t) {
19829                      return !!t.url;
19830                    }),
19831                };
19832              this.hls.trigger(S.MANIFEST_PARSED, E),
19833                (this.hls.config.autoStartLoad || this.hls.forceStartLoad) &&
19834                  this.hls.startLoad(this.hls.config.startPosition);
19835            } else
19836              Promise.resolve().then(function () {
19837                if (a.hls) {
19838                  e.levels.length &&
19839                    a.warn(
19840                      'One or more CODECS in variant not supported: ' +
19841                        JSON.stringify(e.levels[0].attrs)
19842                    );
19843                  var t = new Error('no level with compatible codecs found in manifest');
19844                  a.hls.trigger(S.ERROR, {
19845                    type: L.MEDIA_ERROR,
19846                    details: A.MANIFEST_INCOMPATIBLE_CODECS_ERROR,
19847                    fatal: !0,
19848                    url: e.url,
19849                    error: t,
19850                    reason: t.message,
19851                  });
19852                }
19853              });
19854          }),
19855          (r.onError = function (t, e) {
19856            !e.fatal &&
19857              e.context &&
19858              e.context.type === _e &&
19859              e.context.level === this.level &&
19860              this.checkRetry(e);
19861          }),
19862          (r.onFragBuffered = function (t, e) {
19863            var r = e.frag;
19864            if (void 0 !== r && r.type === Fe) {
19865              var i = r.elementaryStreams;
19866              if (
19867                !Object.keys(i).some(function (t) {
19868                  return !!i[t];
19869                })
19870              )
19871                return;
19872              var n = this._levels[r.level];
19873              null != n &&
19874                n.loadError &&
19875                (this.log('Resetting level error count of ' + n.loadError + ' on frag buffered'),
19876                (n.loadError = 0));
19877            }
19878          }),
19879          (r.onLevelLoaded = function (t, e) {
19880            var r,
19881              i,
19882              n = e.level,
19883              a = e.details,
19884              s = this._levels[n];
19885            if (!s)
19886              return (
19887                this.warn('Invalid level index ' + n),
19888                void (null != (i = e.deliveryDirectives) && i.skip && (a.deltaUpdateFailed = !0))
19889              );
19890            n === this.currentLevelIndex
19891              ? (0 === s.fragmentError && (s.loadError = 0), this.playlistLoaded(n, e, s.details))
19892              : null != (r = e.deliveryDirectives) && r.skip && (a.deltaUpdateFailed = !0);
19893          }),
19894          (r.loadPlaylist = function (e) {
19895            t.prototype.loadPlaylist.call(this);
19896            var r = this.currentLevelIndex,
19897              i = this.currentLevel;
19898            if (i && this.shouldLoadPlaylist(i)) {
19899              var n = i.uri;
19900              if (e)
19901                try {
19902                  n = e.addDirectives(n);
19903                } catch (t) {
19904                  this.warn('Could not construct new URL with HLS Delivery Directives: ' + t);
19905                }
19906              var a = i.attrs['PATHWAY-ID'];
19907              this.log(
19908                'Loading level index ' +
19909                  r +
19910                  (void 0 !== (null == e ? void 0 : e.msn)
19911                    ? ' at sn ' + e.msn + ' part ' + e.part
19912                    : '') +
19913                  ' with' +
19914                  (a ? ' Pathway ' + a : '') +
19915                  ' ' +
19916                  n
19917              ),
19918                this.clearTimer(),
19919                this.hls.trigger(S.LEVEL_LOADING, {
19920                  url: n,
19921                  level: r,
19922                  pathwayId: i.attrs['PATHWAY-ID'],
19923                  id: 0,
19924                  deliveryDirectives: e || null,
19925                });
19926            }
19927          }),
19928          (r.removeLevel = function (t) {
19929            var e,
19930              r = this,
19931              i = this._levels.filter(function (e, i) {
19932                return (
19933                  i !== t ||
19934                  (r.steering && r.steering.removeLevel(e),
19935                  e === r.currentLevel &&
19936                    ((r.currentLevel = null),
19937                    (r.currentLevelIndex = -1),
19938                    e.details &&
19939                      e.details.fragments.forEach(function (t) {
19940                        return (t.level = -1);
19941                      })),
19942                  !1)
19943                );
19944              });
19945            mr(i),
19946              (this._levels = i),
19947              this.currentLevelIndex > -1 &&
19948                null != (e = this.currentLevel) &&
19949                e.details &&
19950                (this.currentLevelIndex = this.currentLevel.details.fragments[0].level),
19951              this.hls.trigger(S.LEVELS_UPDATED, { levels: i });
19952          }),
19953          (r.onLevelsUpdated = function (t, e) {
19954            var r = e.levels;
19955            this._levels = r;
19956          }),
19957          (r.checkMaxAutoUpdated = function () {
19958            var t = this.hls,
19959              e = t.autoLevelCapping,
19960              r = t.maxAutoLevel,
19961              i = t.maxHdcpLevel;
19962            this._maxAutoLevel !== r &&
19963              ((this._maxAutoLevel = r),
19964              this.hls.trigger(S.MAX_AUTO_LEVEL_UPDATED, {
19965                autoLevelCapping: e,
19966                levels: this.levels,
19967                maxAutoLevel: r,
19968                minAutoLevel: this.hls.minAutoLevel,
19969                maxHdcpLevel: i,
19970              }));
19971          }),
19972          s(e, [
19973            {
19974              key: 'levels',
19975              get: function () {
19976                return 0 === this._levels.length ? null : this._levels;
19977              },
19978            },
19979            {
19980              key: 'level',
19981              get: function () {
19982                return this.currentLevelIndex;
19983              },
19984              set: function (t) {
19985                var e = this._levels;
19986                if (0 !== e.length) {
19987                  if (t < 0 || t >= e.length) {
19988                    var r = new Error('invalid level idx'),
19989                      i = t < 0;
19990                    if (
19991                      (this.hls.trigger(S.ERROR, {
19992                        type: L.OTHER_ERROR,
19993                        details: A.LEVEL_SWITCH_ERROR,
19994                        level: t,
19995                        fatal: i,
19996                        error: r,
19997                        reason: r.message,
19998                      }),
19999                      i)
20000                    )
20001                      return;
20002                    t = Math.min(t, e.length - 1);
20003                  }
20004                  var n = this.currentLevelIndex,
20005                    a = this.currentLevel,
20006                    s = a ? a.attrs['PATHWAY-ID'] : void 0,
20007                    o = e[t],
20008                    l = o.attrs['PATHWAY-ID'];
20009                  if (
20010                    ((this.currentLevelIndex = t),
20011                    (this.currentLevel = o),
20012                    n !== t || !o.details || !a || s !== l)
20013                  ) {
20014                    this.log(
20015                      'Switching to level ' +
20016                        t +
20017                        ' (' +
20018                        (o.height ? o.height + 'p ' : '') +
20019                        (o.videoRange ? o.videoRange + ' ' : '') +
20020                        (o.codecSet ? o.codecSet + ' ' : '') +
20021                        '@' +
20022                        o.bitrate +
20023                        ')' +
20024                        (l ? ' with Pathway ' + l : '') +
20025                        ' from level ' +
20026                        n +
20027                        (s ? ' with Pathway ' + s : '')
20028                    );
20029                    var u = {
20030                      level: t,
20031                      attrs: o.attrs,
20032                      details: o.details,
20033                      bitrate: o.bitrate,
20034                      averageBitrate: o.averageBitrate,
20035                      maxBitrate: o.maxBitrate,
20036                      realBitrate: o.realBitrate,
20037                      width: o.width,
20038                      height: o.height,
20039                      codecSet: o.codecSet,
20040                      audioCodec: o.audioCodec,
20041                      videoCodec: o.videoCodec,
20042                      audioGroups: o.audioGroups,
20043                      subtitleGroups: o.subtitleGroups,
20044                      loaded: o.loaded,
20045                      loadError: o.loadError,
20046                      fragmentError: o.fragmentError,
20047                      name: o.name,
20048                      id: o.id,
20049                      uri: o.uri,
20050                      url: o.url,
20051                      urlId: 0,
20052                      audioGroupIds: o.audioGroupIds,
20053                      textGroupIds: o.textGroupIds,
20054                    };
20055                    this.hls.trigger(S.LEVEL_SWITCHING, u);
20056                    var h = o.details;
20057                    if (!h || h.live) {
20058                      var d = this.switchParams(o.uri, null == a ? void 0 : a.details, h);
20059                      this.loadPlaylist(d);
20060                    }
20061                  }
20062                }
20063              },
20064            },
20065            {
20066              key: 'manualLevel',
20067              get: function () {
20068                return this.manualLevelIndex;
20069              },
20070              set: function (t) {
20071                (this.manualLevelIndex = t),
20072                  void 0 === this._startLevel && (this._startLevel = t),
20073                  -1 !== t && (this.level = t);
20074              },
20075            },
20076            {
20077              key: 'firstLevel',
20078              get: function () {
20079                return this._firstLevel;
20080              },
20081              set: function (t) {
20082                this._firstLevel = t;
20083              },
20084            },
20085            {
20086              key: 'startLevel',
20087              get: function () {
20088                if (void 0 === this._startLevel) {
20089                  var t = this.hls.config.startLevel;
20090                  return void 0 !== t ? t : this.hls.firstAutoLevel;
20091                }
20092                return this._startLevel;
20093              },
20094              set: function (t) {
20095                this._startLevel = t;
20096              },
20097            },
20098            {
20099              key: 'nextLoadLevel',
20100              get: function () {
20101                return -1 !== this.manualLevelIndex
20102                  ? this.manualLevelIndex
20103                  : this.hls.nextAutoLevel;
20104              },
20105              set: function (t) {
20106                (this.level = t), -1 === this.manualLevelIndex && (this.hls.nextAutoLevel = t);
20107              },
20108            },
20109          ]),
20110          e
20111        );
20112      })(Fr);
20113      function so(t) {
20114        var e = {};
20115        t.forEach(function (t) {
20116          var r = t.groupId || '';
20117          (t.id = e[r] = e[r] || 0), e[r]++;
20118        });
20119      }
20120      var oo = (function () {
20121        function t(t) {
20122          (this.config = void 0),
20123            (this.keyUriToKeyInfo = {}),
20124            (this.emeController = null),
20125            (this.config = t);
20126        }
20127        var e = t.prototype;
20128        return (
20129          (e.abort = function (t) {
20130            for (var e in this.keyUriToKeyInfo) {
20131              var r = this.keyUriToKeyInfo[e].loader;
20132              if (r) {
20133                var i;
20134                if (t && t !== (null == (i = r.context) ? void 0 : i.frag.type)) return;
20135                r.abort();
20136              }
20137            }
20138          }),
20139          (e.detach = function () {
20140            for (var t in this.keyUriToKeyInfo) {
20141              var e = this.keyUriToKeyInfo[t];
20142              (e.mediaKeySessionContext || e.decryptdata.isCommonEncryption) &&
20143                delete this.keyUriToKeyInfo[t];
20144            }
20145          }),
20146          (e.destroy = function () {
20147            for (var t in (this.detach(), this.keyUriToKeyInfo)) {
20148              var e = this.keyUriToKeyInfo[t].loader;
20149              e && e.destroy();
20150            }
20151            this.keyUriToKeyInfo = {};
20152          }),
20153          (e.createKeyLoadError = function (t, e, r, i, n) {
20154            return (
20155              void 0 === e && (e = A.KEY_LOAD_ERROR),
20156              new fi({
20157                type: L.NETWORK_ERROR,
20158                details: e,
20159                fatal: !1,
20160                frag: t,
20161                response: n,
20162                error: r,
20163                networkDetails: i,
20164              })
20165            );
20166          }),
20167          (e.loadClear = function (t, e) {
20168            var r = this;
20169            if (this.emeController && this.config.emeEnabled)
20170              for (
20171                var i = t.sn,
20172                  n = t.cc,
20173                  a = function () {
20174                    var t = e[s];
20175                    if (n <= t.cc && ('initSegment' === i || 'initSegment' === t.sn || i < t.sn))
20176                      return (
20177                        r.emeController.selectKeySystemFormat(t).then(function (e) {
20178                          t.setKeyFormat(e);
20179                        }),
20180                        1
20181                      );
20182                  },
20183                  s = 0;
20184                s < e.length && !a();
20185                s++
20186              );
20187          }),
20188          (e.load = function (t) {
20189            var e = this;
20190            return !t.decryptdata && t.encrypted && this.emeController
20191              ? this.emeController.selectKeySystemFormat(t).then(function (r) {
20192                  return e.loadInternal(t, r);
20193                })
20194              : this.loadInternal(t);
20195          }),
20196          (e.loadInternal = function (t, e) {
20197            var r, i;
20198            e && t.setKeyFormat(e);
20199            var n = t.decryptdata;
20200            if (!n) {
20201              var a = new Error(
20202                e
20203                  ? 'Expected frag.decryptdata to be defined after setting format ' + e
20204                  : 'Missing decryption data on fragment in onKeyLoading'
20205              );
20206              return Promise.reject(this.createKeyLoadError(t, A.KEY_LOAD_ERROR, a));
20207            }
20208            var s = n.uri;
20209            if (!s)
20210              return Promise.reject(
20211                this.createKeyLoadError(
20212                  t,
20213                  A.KEY_LOAD_ERROR,
20214                  new Error('Invalid key URI: "' + s + '"')
20215                )
20216              );
20217            var o,
20218              l = this.keyUriToKeyInfo[s];
20219            if (null != (r = l) && r.decryptdata.key)
20220              return (n.key = l.decryptdata.key), Promise.resolve({ frag: t, keyInfo: l });
20221            if (null != (i = l) && i.keyLoadPromise)
20222              switch (null == (o = l.mediaKeySessionContext) ? void 0 : o.keyStatus) {
20223                case void 0:
20224                case 'status-pending':
20225                case 'usable':
20226                case 'usable-in-future':
20227                  return l.keyLoadPromise.then(function (e) {
20228                    return (n.key = e.keyInfo.decryptdata.key), { frag: t, keyInfo: l };
20229                  });
20230              }
20231            switch (
20232              ((l = this.keyUriToKeyInfo[s] =
20233                {
20234                  decryptdata: n,
20235                  keyLoadPromise: null,
20236                  loader: null,
20237                  mediaKeySessionContext: null,
20238                }),
20239              n.method)
20240            ) {
20241              case 'ISO-23001-7':
20242              case 'SAMPLE-AES':
20243              case 'SAMPLE-AES-CENC':
20244              case 'SAMPLE-AES-CTR':
20245                return 'identity' === n.keyFormat ? this.loadKeyHTTP(l, t) : this.loadKeyEME(l, t);
20246              case 'AES-128':
20247                return this.loadKeyHTTP(l, t);
20248              default:
20249                return Promise.reject(
20250                  this.createKeyLoadError(
20251                    t,
20252                    A.KEY_LOAD_ERROR,
20253                    new Error('Key supplied with unsupported METHOD: "' + n.method + '"')
20254                  )
20255                );
20256            }
20257          }),
20258          (e.loadKeyEME = function (t, e) {
20259            var r = { frag: e, keyInfo: t };
20260            if (this.emeController && this.config.emeEnabled) {
20261              var i = this.emeController.loadKey(r);
20262              if (i)
20263                return (t.keyLoadPromise = i.then(function (e) {
20264                  return (t.mediaKeySessionContext = e), r;
20265                })).catch(function (e) {
20266                  throw ((t.keyLoadPromise = null), e);
20267                });
20268            }
20269            return Promise.resolve(r);
20270          }),
20271          (e.loadKeyHTTP = function (t, e) {
20272            var r = this,
20273              n = this.config,
20274              a = new (0, n.loader)(n);
20275            return (
20276              (e.keyLoader = t.loader = a),
20277              (t.keyLoadPromise = new Promise(function (s, o) {
20278                var l = {
20279                    keyInfo: t,
20280                    frag: e,
20281                    responseType: 'arraybuffer',
20282                    url: t.decryptdata.uri,
20283                  },
20284                  u = n.keyLoadPolicy.default,
20285                  h = {
20286                    loadPolicy: u,
20287                    timeout: u.maxLoadTimeMs,
20288                    maxRetry: 0,
20289                    retryDelay: 0,
20290                    maxRetryDelay: 0,
20291                  },
20292                  d = {
20293                    onSuccess: function (t, e, i, n) {
20294                      var a = i.frag,
20295                        l = i.keyInfo,
20296                        u = i.url;
20297                      if (!a.decryptdata || l !== r.keyUriToKeyInfo[u])
20298                        return o(
20299                          r.createKeyLoadError(
20300                            a,
20301                            A.KEY_LOAD_ERROR,
20302                            new Error('after key load, decryptdata unset or changed'),
20303                            n
20304                          )
20305                        );
20306                      (l.decryptdata.key = a.decryptdata.key = new Uint8Array(t.data)),
20307                        (a.keyLoader = null),
20308                        (l.loader = null),
20309                        s({ frag: a, keyInfo: l });
20310                    },
20311                    onError: function (t, n, a, s) {
20312                      r.resetLoader(n),
20313                        o(
20314                          r.createKeyLoadError(
20315                            e,
20316                            A.KEY_LOAD_ERROR,
20317                            new Error('HTTP Error ' + t.code + ' loading key ' + t.text),
20318                            a,
20319                            i({ url: l.url, data: void 0 }, t)
20320                          )
20321                        );
20322                    },
20323                    onTimeout: function (t, i, n) {
20324                      r.resetLoader(i),
20325                        o(
20326                          r.createKeyLoadError(
20327                            e,
20328                            A.KEY_LOAD_TIMEOUT,
20329                            new Error('key loading timed out'),
20330                            n
20331                          )
20332                        );
20333                    },
20334                    onAbort: function (t, i, n) {
20335                      r.resetLoader(i),
20336                        o(
20337                          r.createKeyLoadError(
20338                            e,
20339                            A.INTERNAL_ABORTED,
20340                            new Error('key loading aborted'),
20341                            n
20342                          )
20343                        );
20344                    },
20345                  };
20346                a.load(l, h, d);
20347              }))
20348            );
20349          }),
20350          (e.resetLoader = function (t) {
20351            var e = t.frag,
20352              r = t.keyInfo,
20353              i = t.url,
20354              n = r.loader;
20355            e.keyLoader === n && ((e.keyLoader = null), (r.loader = null)),
20356              delete this.keyUriToKeyInfo[i],
20357              n && n.destroy();
20358          }),
20359          t
20360        );
20361      })();
20362      function lo() {
20363        return self.SourceBuffer || self.WebKitSourceBuffer;
20364      }
20365      function uo() {
20366        if (!se()) return !1;
20367        var t = lo();
20368        return (
20369          !t ||
20370          (t.prototype &&
20371            'function' == typeof t.prototype.appendBuffer &&
20372            'function' == typeof t.prototype.remove)
20373        );
20374      }
20375      var ho = (function () {
20376          function t(t, e, r, i) {
20377            (this.config = void 0),
20378              (this.media = null),
20379              (this.fragmentTracker = void 0),
20380              (this.hls = void 0),
20381              (this.nudgeRetry = 0),
20382              (this.stallReported = !1),
20383              (this.stalled = null),
20384              (this.moved = !1),
20385              (this.seeking = !1),
20386              (this.config = t),
20387              (this.media = e),
20388              (this.fragmentTracker = r),
20389              (this.hls = i);
20390          }
20391          var e = t.prototype;
20392          return (
20393            (e.destroy = function () {
20394              (this.media = null), (this.hls = this.fragmentTracker = null);
20395            }),
20396            (e.poll = function (t, e) {
20397              var r = this.config,
20398                i = this.media,
20399                n = this.stalled;
20400              if (null !== i) {
20401                var a = i.currentTime,
20402                  s = i.seeking,
20403                  o = this.seeking && !s,
20404                  l = !this.seeking && s;
20405                if (((this.seeking = s), a === t))
20406                  if (l || o) this.stalled = null;
20407                  else if (
20408                    (i.paused && !s) ||
20409                    i.ended ||
20410                    0 === i.playbackRate ||
20411                    !ri.getBuffered(i).length
20412                  )
20413                    this.nudgeRetry = 0;
20414                  else {
20415                    var u = ri.bufferInfo(i, a, 0),
20416                      h = u.nextStart || 0;
20417                    if (s) {
20418                      var d = u.len > 2,
20419                        c =
20420                          !h ||
20421                          (e && e.start <= a) ||
20422                          (h - a > 2 && !this.fragmentTracker.getPartialFragment(a));
20423                      if (d || c) return;
20424                      this.moved = !1;
20425                    }
20426                    if (!this.moved && null !== this.stalled) {
20427                      var f;
20428                      if (!(u.len > 0 || h)) return;
20429                      var g = Math.max(h, u.start || 0) - a,
20430                        v = this.hls.levels ? this.hls.levels[this.hls.currentLevel] : null,
20431                        m = (null == v || null == (f = v.details) ? void 0 : f.live)
20432                          ? 2 * v.details.targetduration
20433                          : 2,
20434                        p = this.fragmentTracker.getPartialFragment(a);
20435                      if (g > 0 && (g <= m || p))
20436                        return void (i.paused || this._trySkipBufferHole(p));
20437                    }
20438                    var y = self.performance.now();
20439                    if (null !== n) {
20440                      var E = y - n;
20441                      if (s || !(E >= 250) || (this._reportStall(u), this.media)) {
20442                        var T = ri.bufferInfo(i, a, r.maxBufferHole);
20443                        this._tryFixBufferStall(T, E);
20444                      }
20445                    } else this.stalled = y;
20446                  }
20447                else if (((this.moved = !0), s || (this.nudgeRetry = 0), null !== n)) {
20448                  if (this.stallReported) {
20449                    var S = self.performance.now() - n;
20450                    w.warn('playback not stuck anymore @' + a + ', after ' + Math.round(S) + 'ms'),
20451                      (this.stallReported = !1);
20452                  }
20453                  this.stalled = null;
20454                }
20455              }
20456            }),
20457            (e._tryFixBufferStall = function (t, e) {
20458              var r = this.config,
20459                i = this.fragmentTracker,
20460                n = this.media;
20461              if (null !== n) {
20462                var a = n.currentTime,
20463                  s = i.getPartialFragment(a);
20464                if (s && (this._trySkipBufferHole(s) || !this.media)) return;
20465                (t.len >
20465 r.maxBufferHole || (t.nextStart && t.nextStart - a < r.maxBufferHole)) &&
20466                  e > 1e3 * r.highBufferWatchdogPeriod &&
20467                  (w.warn('Trying to nudge playhead over buffer-hole'),
20468                  (this.stalled = null),
20469                  this._tryNudgeBuffer());
20470              }
20471            }),
20472            (e._reportStall = function (t) {
20473              var e = this.hls,
20474                r = this.media;
20475              if (!this.stallReported && r) {
20476                this.stallReported = !0;
20477                var i = new Error(
20478                  'Playback stalling at @' +
20479                    r.currentTime +
20480                    ' due to low buffer (' +
20481                    JSON.stringify(t) +
20482                    ')'
20483                );
20484                w.warn(i.message),
20485                  e.trigger(S.ERROR, {
20486                    type: L.MEDIA_ERROR,
20487                    details: A.BUFFER_STALLED_ERROR,
20488                    fatal: !1,
20489                    error: i,
20490                    buffer: t.len,
20491                  });
20492              }
20493            }),
20494            (e._trySkipBufferHole = function (t) {
20495              var e = this.config,
20496                r = this.hls,
20497                i = this.media;
20498              if (null === i) return 0;
20499              var n = i.currentTime,
20500                a = ri.bufferInfo(i, n, 0),
20501                s = n < a.start ? a.start : a.nextStart;
20502              if (s) {
20503                var o = a.len <= e.maxBufferHole,
20504                  l = a.len > 0 && a.len < 1 && i.readyState < 3,
20505                  u = s - n;
20506                if (u > 0 && (o || l)) {
20507                  if (u > e.maxBufferHole) {
20508                    var h = this.fragmentTracker,
20509                      d = !1;
20510                    if (0 === n) {
20511                      var c = h.getAppendedFrag(0, Fe);
20512                      c && s < c.end && (d = !0);
20513                    }
20514                    if (!d) {
20515                      var f = t || h.getAppendedFrag(n, Fe);
20516                      if (f) {
20517                        for (var g = !1, v = f.end; v < s; ) {
20518                          var m = h.getPartialFragment(v);
20519                          if (!m) {
20520                            g = !0;
20521                            break;
20522                          }
20523                          v += m.duration;
20524                        }
20525                        if (g) return 0;
20526                      }
20527                    }
20528                  }
20529                  var p = Math.max(s + 0.05, n + 0.1);
20530                  if (
20531                    (w.warn('skipping hole, adjusting currentTime from ' + n + ' to ' + p),
20532                    (this.moved = !0),
20533                    (this.stalled = null),
20534                    (i.currentTime = p),
20535                    t && !t.gap)
20536                  ) {
20537                    var y = new Error(
20538                      'fragment loaded with buffer holes, seeking from ' + n + ' to ' + p
20539                    );
20540                    r.trigger(S.ERROR, {
20541                      type: L.MEDIA_ERROR,
20542                      details: A.BUFFER_SEEK_OVER_HOLE,
20543                      fatal: !1,
20544                      error: y,
20545                      reason: y.message,
20546                      frag: t,
20547                    });
20548                  }
20549                  return p;
20550                }
20551              }
20552              return 0;
20553            }),
20554            (e._tryNudgeBuffer = function () {
20555              var t = this.config,
20556                e = this.hls,
20557                r = this.media,
20558                i = this.nudgeRetry;
20559              if (null !== r) {
20560                var n = r.currentTime;
20561                if ((this.nudgeRetry++, i < t.nudgeMaxRetry)) {
20562                  var a = n + (i + 1) * t.nudgeOffset,
20563                    s = new Error("Nudging 'currentTime' from " + n + ' to ' + a);
20564                  w.warn(s.message),
20565                    (r.currentTime = a),
20566                    e.trigger(S.ERROR, {
20567                      type: L.MEDIA_ERROR,
20568                      details: A.BUFFER_NUDGE_ON_STALL,
20569                      error: s,
20570                      fatal: !1,
20571                    });
20572                } else {
20573                  var o = new Error(
20574                    'Playhead still not moving while enough data buffered @' +
20575                      n +
20576                      ' after ' +
20577                      t.nudgeMaxRetry +
20578                      ' nudges'
20579                  );
20580                  w.error(o.message),
20581                    e.trigger(S.ERROR, {
20582                      type: L.MEDIA_ERROR,
20583                      details: A.BUFFER_STALLED_ERROR,
20584                      error: o,
20585                      fatal: !0,
20586                    });
20587                }
20588              }
20589            }),
20590            t
20591          );
20592        })(),
20593        co = (function (t) {
20594          function e(e, r, i) {
20595            var n;
20596            return (
20597              ((n = t.call(this, e, r, i, '[stream-controller]', Fe) || this).audioCodecSwap = !1),
20598              (n.gapController = null),
20599              (n.level = -1),
20600              (n._forceStartLoad = !1),
20601              (n.altAudio = !1),
20602              (n.audioOnly = !1),
20603              (n.fragPlaying = null),
20604              (n.onvplaying = null),
20605              (n.onvseeked = null),
20606              (n.fragLastKbps = 0),
20607              (n.couldBacktrack = !1),
20608              (n.backtrackFragment = null),
20609              (n.audioCodecSwitch = !1),
20610              (n.videoBuffer = null),
20611              n._registerListeners(),
20612              n
20613            );
20614          }
20615          l(e, t);
20616          var r = e.prototype;
20617          return (
20618            (r._registerListeners = function () {
20619              var t = this.hls;
20620              t.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
20621                t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
20622                t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
20623                t.on(S.MANIFEST_PARSED, this.onManifestParsed, this),
20624                t.on(S.LEVEL_LOADING, this.onLevelLoading, this),
20625                t.on(S.LEVEL_LOADED, this.onLevelLoaded, this),
20626                t.on(S.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this),
20627                t.on(S.ERROR, this.onError, this),
20628                t.on(S.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this),
20629                t.on(S.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this),
20630                t.on(S.BUFFER_CREATED, this.onBufferCreated, this),
20631                t.on(S.BUFFER_FLUSHED, this.onBufferFlushed, this),
20632                t.on(S.LEVELS_UPDATED, this.onLevelsUpdated, this),
20633                t.on(S.FRAG_BUFFERED, this.onFragBuffered, this);
20634            }),
20635            (r._unregisterListeners = function () {
20636              var t = this.hls;
20637              t.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
20638                t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
20639                t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
20640                t.off(S.MANIFEST_PARSED, this.onManifestParsed, this),
20641                t.off(S.LEVEL_LOADED, this.onLevelLoaded, this),
20642                t.off(S.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this),
20643                t.off(S.ERROR, this.onError, this),
20644                t.off(S.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this),
20645                t.off(S.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this),
20646                t.off(S.BUFFER_CREATED, this.onBufferCreated, this),
20647                t.off(S.BUFFER_FLUSHED, this.onBufferFlushed, this),
20648                t.off(S.LEVELS_UPDATED, this.onLevelsUpdated, this),
20649                t.off(S.FRAG_BUFFERED, this.onFragBuffered, this);
20650            }),
20651            (r.onHandlerDestroying = function () {
20652              this._unregisterListeners(), t.prototype.onHandlerDestroying.call(this);
20653            }),
20654            (r.startLoad = function (t) {
20655              if (this.levels) {
20656                var e = this.lastCurrentTime,
20657                  r = this.hls;
20658                if (
20659                  (this.stopLoad(),
20660                  this.setInterval(100),
20661                  (this.level = -1),
20662                  !this.startFragRequested)
20663                ) {
20664                  var i = r.startLevel;
20665                  -1 === i &&
20666                    (r.config.testBandwidth && this.levels.length > 1
20667                      ? ((i = 0), (this.bitrateTest = !0))
20668                      : (i = r.firstAutoLevel)),
20669                    (r.nextLoadLevel = i),
20670                    (this.level = r.loadLevel),
20671                    (this.loadedmetadata = !1);
20672                }
20673                e > 0 &&
20674                  -1 === t &&
20675                  (this.log('Override startPosition with lastCurrentTime @' + e.toFixed(3)),
20676                  (t = e)),
20677                  (this.state = Ti),
20678                  (this.nextLoadPosition = this.startPosition = this.lastCurrentTime = t),
20679                  this.tick();
20680              } else (this._forceStartLoad = !0), (this.state = Ei);
20681            }),
20682            (r.stopLoad = function () {
20683              (this._forceStartLoad = !1), t.prototype.stopLoad.c
20683all(this);
20684            }),
20685            (r.doTick = function () {
20686              switch (this.state) {
20687                case Ci:
20688                  var t = this.levels,
20689                    e = this.level,
20690                    r = null == t ? void 0 : t[e],
20691                    i = null == r ? void 0 : r.details;
20692                  if (i && (!i.live || this.levelLastLoaded === r)) {
20693                    if (this.waitForCdnTuneIn(i)) break;
20694                    this.state = Ti;
20695                    break;
20696                  }
20697                  if (this.hls.nextLoadLevel !== this.level) {
20698                    this.state = Ti;
20699                    break;
20700                  }
20701                  break;
20702                case Ai:
20703                  var n,
20704                    a = self.performance.now(),
20705                    s = this.retryDate;
20706                  if (!s || a >= s || (null != (n = this.media) && n.seeking)) {
20707                    var o = this.levels,
20708                      l = this.level,
20709                      u = null == o ? void 0 : o[l];
20710                    this.resetStartWhenNotLoaded(u || null), (this.state = Ti);
20711                  }
20712              }
20713              this.state === Ti && this.doTickIdle(), this.onTickEnd();
20714            }),
20715            (r.onTickEnd = function () {
20716              t.prototype.onTickEnd.call(this), this.checkBuffer(), this.checkFragmentChanged();
20717            }),
20718            (r.doTickIdle = function () {
20719              var t = this.hls,
20720                e = this.levelLastLoaded,
20721                r = this.levels,
20722                i = this.media;
20723              if (
20724                null !== e &&
20725                (i || (!this.startFragRequested && t.config.startFragPrefetch)) &&
20726                (!this.altAudio || !this.audioOnly)
20727              ) {
20728                var n = this.buffering ? t.nextLoadLevel : t.loadLevel;
20729                if (null != r && r[n]) {
20730                  var a = r[n],
20731                    s = this.getMainFwdBufferInfo();
20732                  if (null !== s) {
20733                    var o = this.getLevelDetails();
20734                    if (o && this._streamEnded(s, o)) {
20735                      var l = {};
20736                      return (
20737                        this.altAudio && (l.type = 'video'),
20738                        this.hls.trigger(S.BUFFER_EOS, l),
20739                        void (this.state = Di)
20740                      );
20741                    }
20742                    if (this.buffering) {
20743                      t.loadLevel !== n &&
20744                        -1 === t.manualLevel &&
20745                        this.log('Adapting to level ' + n + ' from level ' + this.level),
20746                        (this.level = t.nextLoadLevel = n);
20747                      var u = a.details;
20748                      if (!u || this.state === Ci || (u.live && this.levelLastLoaded !== a))
20749                        return (this.level = n), void (this.state = Ci);
20750                      var h = s.len,
20751                        d = this.getMaxBufferLength(a.maxBitrate);
20752                      if (!(h >= d)) {
20753                        this.backtrackFragment &&
20754                          this.backtrackFragment.start > s.end &&
20755                          (this.backtrackFragment = null);
20756                        var c = this.backtrackFragment ? this.backtrackFragment.start : s.end,
20757                          f = this.getNextFragment(c, u);
20758                        if (
20759                          this.couldBacktrack &&
20760                          !this.fragPrevious &&
20761                          f &&
20762                          'initSegment' !== f.sn &&
20763                          this.fragmentTracker.getState(f) !== Jr
20764                        ) {
20765                          var g,
20766                            v = (null != (g = this.backtrackFragment) ? g : f).sn - u.startSN,
20767                            m = u.fragments[v - 1];
20768                          m && f.cc === m.cc && ((f = m), this.fragmentTracker.removeFragment(m));
20769                        } else this.backtrackFragment && s.len && (this.backtrackFragment = null);
20770                        if (f && this.isLoopLoading(f, c)) {
20771                          if (!f.gap) {
20772                            var p = this.audioOnly && !this.altAudio ? O : N,
20773                              y = (p === N ? this.videoBuffer : this.mediaBuffer) || this.media;
20774                            y && this.afterBufferFlushed(y, p, Fe);
20775                          }
20776                          f = this.getNextFragmentLoopLoading(f, u, s, Fe, d);
20777                        }
20778                        f &&
20779                          (!f.initSegment ||
20780                            f.initSegment.data ||
20781                            this.bitrateTest ||
20782                            (f = f.initSegment),
20783                          this.loadFragment(f, a, c));
20784                      }
20785                    }
20786                  }
20787                }
20788              }
20789            }),
20790            (r.loadFragment = function (e, r, i) {
20791              var n = this.fragmentTracker.getState(e);
20792              (this.fragCurrent = e),
20793                n === Xr || n === Qr
20794                  ? 'initSegment' === e.sn
20795                    ? this._loadInitSegment(e, r)
20796                    : this.bitrateTest
20797                    ? (this.log(
20798                        'Fragment ' +
20799                          e.sn +
20800                          ' of level ' +
20801                          e.level +
20802                          ' is being downloaded to test bitrate and will not be buffered'
20803                      ),
20804                      this._loadBitrateTestFrag(e, r))
20805                    : ((this.startFragRequested = !0), t.prototype.loadFragment.call(this, e, r, i))
20806                  : this.clearTrackerIfNeeded(e);
20807            }),
20808            (r.getBufferedFrag = function (t) {
20809              return this.fragmentTracker.getBufferedFrag(t, Fe);
20810            }),
20811            (r.followingBufferedFrag = function (t) {
20812              return t ? this.getBufferedFrag(t.end + 0.5) : null;
20813            }),
20814            (r.immediateLevelSwitch = function () {
20815              this.abortCurrentFrag(), this.flushMainBuffer(0, Number.POSITIVE_INFINITY);
20816            }),
20817            (r.nextLevelSwitch = function () {
20818              var t = this.levels,
20819                e = this.media;
20820              if (null != e && e.readyState) {
20821                var r,
20822                  i = this.getAppendedFrag(e.currentTime);
20823                i && i.start > 1 && this.flushMainBuffer(0, i.start - 1);
20824                var n = this.getLevelDetails();
20825                if (null != n && n.live) {
20826                  var a = this.getMainFwdBufferInfo();
20827                  if (!a || a.len < 2 * n.targetduration) return;
20828                }
20829                if (!e.paused && t) {
20830                  var s = t[this.hls.nextLoadLevel],
20831                    o = this.fragLastKbps;
20832                  r =
20833                    o && this.fragCurrent
20834                      ? (this.fragCurrent.duration * s.maxBitrate) / (1e3 * o) + 1
20835                      : 0;
20836                } else r = 0;
20837                var l = this.getBufferedFrag(e.currentTime + r);
20838                if (l) {
20839                  var u = this.followingBufferedFrag(l);
20840                  if (u) {
20841                    this.abortCurrentFrag();
20842                    var h = u.maxStartPTS ? u.maxStartPTS : u.start,
20843                      d = u.duration,
20844                      c = Math.max(
20845                        l.end,
20846                        h +
20847                          Math.min(
20848                            Math.max(
20849                              d - this.config.maxFragLookUpTolerance,
20850                              d * (this.couldBacktrack ? 0.5 : 0.125)
20851                            ),
20852                            d * (this.couldBacktrack ? 0.75 : 0.25)
20853                          )
20854                      );
20855                    this.flushMainBuffer(c, Number.POSITIVE_INFINITY);
20856                  }
20857                }
20858              }
20859            }),
20860            (r.abortCurrentFrag = function () {
20861              var t = this.fragCurrent;
20862              switch (
20863                ((this.fragCurrent = null),
20864                (this.backtrackFragment = null),
20865                t && (t.abortRequests(), this.fragmentTracker.removeFragment(t)),
20866                this.state)
20867              ) {
20868                case Si:
20869                case Li:
20870                case Ai:
20871                case bi:
20872                case ki:
20873                  this.state = Ti;
20874              }
20875              this.nextLoadPosition = this.getLoadPosition();
20876            }),
20877            (r.flushMainBuffer = function (e, r) {
20878              t.prototype.flushMainBuffer.call(this, e, r, this.altAudio ? 'video' : null);
20879            }),
20880            (r.onMediaAttached = function (e, r) {
20881              t.prototype.onMediaAttached.call(this, e, r);
20882              var i = r.media;
20883              (this.onvplaying = this.onMediaPlaying.bind(this)),
20884                (this.onvseeked = this.onMediaSeeked.bind(this)),
20885                i.addEventListener('playing', this.onvplaying),
20886                i.addEventListener('seeked', this.onvseeked),
20887                (this.gapController = new ho(this.config, i, this.fragmentTracker, this.hls));
20888            }),
20889            (r.onMediaDetaching = function () {
20890              var e = this.media;
20891              e &&
20892                this.onvplaying &&
20893                this.onvseeked &&
20894                (e.removeEventListener('playing', this.onvplaying),
20895                e.removeEventListener('seeked', this.onvseeked),
20896                (this.onvplaying = this.onvseeked = null),
20897                (this.videoBuffer = null)),
20898                (this.fragPlaying = null),
20899                this.gapController && (this.gapController.destroy(), (this.gapController = null)),
20900                t.prototype.onMediaDetaching.call(this);
20901            }),
20902            (r.onMediaPlaying = function () {
20903              this.tick();
20904            }),
20905            (r.onMediaSeeked = function () {
20906              var t = this.media,
20907                e = t ? t.currentTime : null;
20908              y(e) && this.log('Media seeked to ' + e.toFixed(3));
20909              var r = this.getMainFwdBufferInfo();
20910              null !== r && 0 !== r.len
20911                ? this.tick()
20912                : this.warn(
20913                    'Main forward buffer length on "seeked" event ' + (r ? r.len : 'empty') + ')'
20914                  );
20915            }),
20916            (r.onManifestLoading = function () {
20917              this.log('Trigger BUFFER_RESET'),
20918                this.hls.trigger(S.BUFFER_RESET, void 0),
20919                this.fragmentTracker.removeAllFragments(),
20920                (this.couldBacktrack = !1),
20921                (this.startPosition = this.lastCurrentTime = this.fragLastKbps = 0),
20922                (this.levels =
20923                  this.fragPlaying =
20924                  this.backtrackFragment =
20925                  this.levelLastLoaded =
20926                    null),
20927                (this.altAudio = this.audioOnly = this.startFragRequested = !1);
20928            }),
20929            (r.onManifestParsed = function (t, e) {
20930              var r,
20931                i,
20932                n = !1,
20933                a = !1;
20934              e.levels.forEach(function (t) {
20935                var e = t.audioCodec;
20936                e &&
20937                  ((n = n || -1 !== e.indexOf('mp4a.40.2')),
20938                  (a = a || -1 !== e.indexOf('mp4a.40.5')));
20939              }),
20940                (this.audioCodecSwitch =
20941                  n &&
20942                  a &&
20943                  !(
20944                    'function' ==
20945                    typeof (null == (i = lo()) || null == (r = i.prototype) ? void 0 : r.changeType)
20946                  )),
20947                this.audioCodecSwitch &&
20948                  this.log(
20949                    'Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC'
20950                  ),
20951                (this.levels = e.levels),
20952                (this.startFragRequested = !1);
20953            }),
20954            (r.onLevelLoading = function (t, e) {
20955              var r = this.levels;
20956              if (r && this.state === Ti) {
20957                var i = r[e.level];
20958                (!i.details ||
20959                  (i.details.live && this.levelLastLoaded !== i) ||
20960                  this.waitForCdnTuneIn(i.details)) &&
20961                  (this.state = Ci);
20962              }
20963            }),
20964            (r.onLevelLoaded = function (t, e) {
20965              var r,
20966                i = this.levels,
20967                n = e.level,
20968                a = e.details,
20969                s = a.totalduration;
20970              if (i) {
20971                this.log(
20972                  'Level ' +
20973                    n +
20974                    ' loaded [' +
20975                    a.startSN +
20976                    ',' +
20977                    a.endSN +
20978                    ']' +
20979                    (a.lastPartSn ? '[part-' + a.lastPartSn + '-' + a.lastPartIndex + ']' : '') +
20980                    ', cc [' +
20981                    a.startCC +
20982                    ', ' +
20983                    a.endCC +
20984                    '] duration:' +
20985                    s
20986                );
20987                var o = i[n],
20988                  l = this.fragCurrent;
20989                !l ||
20990                  (this.state !== Li && this.state !== Ai) ||
20991                  (l.level !== e.level && l.loader && this.abortCurrentFrag());
20992                var u = 0;
20993                if (a.live || (null != (r = o.details) && r.live)) {
20994                  var h;
20995                  if ((this.checkLiveUpdate(a), a.deltaUpdateFailed)) return;
20996                  u = this.alignPlaylists(
20997                    a,
20998                    o.details,
20999                    null == (h = this.levelLastLoaded) ? void 0 : h.details
21000                  );
21001                }
21002                if (
21003                  ((o.details = a),
21004                  (this.levelLastLoaded = o),
21005                  this.hls.trigger(S.LEVEL_UPDATED, { details: a, level: n }),
21006                  this.state === Ci)
21007                ) {
21008                  if (this.waitForCdnTuneIn(a)) return;
21009                  this.state = Ti;
21010                }
21011                this.startFragRequested
21012                  ? a.live && this.synchronizeToLiveEdge(a)
21013                  : this.setStartPosition(a, u),
21014                  this.tick();
21015              } else this.warn('Levels were reset while loading level ' + n);
21016            }),
21017            (r._handleFragmentLoadProgress = function (t) {
21018              var e,
21019                r = t.frag,
21020                i = t.part,
21021                n = t.payload,
21022                a = this.levels;
21023              if (a) {
21024                var s = a[r.level],
21025                  o = s.details;
21026                if (!o)
21027                  return (
21028                    this.warn(
21029                      'Dropping fragment ' +
21030                        r.sn +
21031                        ' of level ' +
21032                        r.level +
21033                        ' after level details were reset'
21034                    ),
21035                    void this.fragmentTracker.removeFragment(r)
21036                  );
21037                var l = s.videoCodec,
21038                  u = o.PTSKnown || !o.live,
21039                  h = null == (e = r.initSegment) ? void 0 : e.data,
21040                  d = this._getAudioCodec(s),
21041                  c = (this.transmuxer =
21042                    this.transmuxer ||
21043                    new qn(
21044                      this.hls,
21045                      Fe,
21046                      this._handleTransmuxComplete.bind(this),
21047                      this._handleTransmuxerFlush.bind(this)
21048                    )),
21049                  f = i ? i.index : -1,
21050                  g = -1 !== f,
21051                  v = new ii(r.level, r.sn, r.stats.chunkCount, n.byteLength, f, g),
21052                  m = this.initPTS[r.cc];
21053                c.push(n, h, d, l, r, i, o.totalduration, u, v, m);
21054              } else
21055                this.warn(
21056                  'Levels were reset while fragment load was in progress. Fragment ' +
21057                    r.sn +
21058                    ' of level ' +
21059                    r.level +
21060                    ' will not be buffered'
21061                );
21062            }),
21063            (r.onAudioTrackSwitching = function (t, e) {
21064              var r = this.altAudio;
21065              if (!e.url) {
21066                if (this.mediaBuffer !== this.media) {
21067                  this.log(
21068                    'Switching on main audio, use media.buffered to schedule main fragment loading'
21069                  ),
21070                    (this.mediaBuffer = this.media);
21071                  var i = this.fragCurrent;
21072                  i &&
21073                    (this.log('Switching to main audio track, cancel main fragment load'),
21074                    i.abortRequests(),
21075                    this.fragmentTracker.removeFragment(i)),
21076                    this.resetTransmuxer(),
21077                    this.resetLoadingState();
21078                } else this.audioOnly && this.resetTransmuxer();
21079                var n = this.hls;
21080                r &&
21081                  (n.trigger(S.BUFFER_FLUSHING, {
21082                    startOffset: 0,
21083                    endOffset: Number.POSITIVE_INFINITY,
21084                    type: null,
21085                  }),
21086                  this.fragmentTracker.removeAllFragments()),
21087                  n.trigger(S.AUDIO_TRACK_SWITCHED, e);
21088              }
21089            }),
21090            (r.onAudioTrackSwitched = function (t, e) {
21091              var r = e.id,
21092                i = !!this.hls.audioTracks[r].url;
21093              if (i) {
21094                var n = this.videoBuffer;
21095                n &&
21096                  this.mediaBuffer !== n &&
21097                  (this.log(
21098                    'Switching on alternate audio, use video.buffered to schedule main fragment loading'
21099                  ),
21100                  (this.mediaBuffer = n));
21101              }
21102              (this.altAudio = i), this.tick();
21103            }),
21104            (r.onBufferCreated = function (t, e) {
21105              var r,
21106                i,
21107                n = e.tracks,
21108                a = !1;
21109              for (var s in n) {
21110                var o = n[s];
21111                if ('main' === o.id) {
21112                  if (((i = s), (r = o), 'video' === s)) {
21113                    var l = n[s];
21114                    l && (this.videoBuffer = l.buffer);
21115                  }
21116                } else a = !0;
21117              }
21118              a && r
21119                ? (this.log(
21120                    'Alternate track found, use ' +
21121                      i +
21122                      '.buffered to schedule main fragment loading'
21123                  ),
21124                  (this.mediaBuffer = r.buffer))
21125                : (this.mediaBuffer = this.media);
21126            }),
21127            (r.onFragBuffered = function (t, e) {
21128              var r = e.frag,
21129                i = e.part;
21130              if (!r || r.type === Fe) {
21131                if (this.fragContextChanged(r))
21132                  return (
21133                    this.warn(
21134                      'Fragment ' +
21135                        r.sn +
21136                        (i ? ' p: ' + i.index : '') +
21137                        ' of level ' +
21138                        r.level +
21139                        ' finished buffering, but was aborted. state: ' +
21140                        this.state
21141                    ),
21142                    void (this.state === ki && (this.state = Ti))
21143                  );
21144                var n = i ? i.stats : r.stats;
21145                (this.fragLastKbps = Math.round(
21146                  (8 * n.total) / (n.buffering.end - n.loading.first)
21147                )),
21148                  'initSegment' !== r.sn && (this.fragPrevious = r),
21149                  this.fragBufferedComplete(r, i);
21150              }
21151            }),
21152            (r.onError = function (t, e) {
21153              var r;
21154              if (e.fatal) this.state = Ii;
21155              else
21156                switch (e.details) {
21157                  case A.FRAG_GAP:
21158                  case A.FRAG_PARSING_ERROR:
21159                  case A.FRAG_DECRYPT_ERROR:
21160                  case A.FRAG_LOAD_ERROR:
21161                  case A.FRAG_LOAD_TIMEOUT:
21162                  case A.KEY_LOAD_ERROR:
21163                  case A.KEY_LOAD_TIMEOUT:
21164                    this.onFragmentOrKeyLoadError(Fe, e);
21165                    break;
21166                  case A.LEVEL_LOAD_ERROR:
21167                  case A.LEVEL_LOAD_TIMEOUT:
21168                  case A.LEVEL_PARSING_ERROR:
21169                    e.levelRetry ||
21170                      this.state !== Ci ||
21171                      (null == (r = e.context) ? void 0 : r.type) !== _e ||
21172                      (this.state = Ti);
21173                    break;
21174                  case A.BUFFER_APPEND_ERROR:
21175                  case A.BUFFER_FULL_ERROR:
21176                    if (!e.parent || 'main' !== e.parent) return;
21177                    if (e.details === A.BUFFER_APPEND_ERROR) return void this.resetLoadingState();
21178                    this.reduceLengthAndFlushBuffer(e) &&
21179                      this.flushMainBuffer(0, Number.POSITIVE_INFINITY);
21180                    break;
21181                  case A.INTERNAL_EXCEPTION:
21182                    this.recoverWorkerError(e);
21183                }
21184            }),
21185            (r.checkBuffer = function () {
21186              var t = this.media,
21187                e = this.gapController;
21188              if (t && e && t.readyState) {
21189                if (this.loadedmetadata || !ri.getBuffered(t).length) {
21190                  var r = this.state !== Ti ? this.fragCurrent : null;
21191                  e.poll(this.lastCurrentTime, r);
21192                }
21193                this.lastCurrentTime = t.currentTime;
21194              }
21195            }),
21196            (r.onFragLoadEmergencyAborted = function () {
21197              (this.state = Ti),
21198                this.loadedmetadata ||
21199                  ((this.startFragRequested = !1), (this.nextLoadPosition = this.startPosition)),
21200                this.tickImmediate();
21201            }),
21202            (r.onBufferFlushed = function (t, e) {
21203              var r = e.type;
21204              if (r !== O || (this.audioOnly && !this.altAudio)) {
21205                var i = (r === N ? this.videoBuffer : this.mediaBuffer) || this.media;
21206                this.afterBufferFlushed(i, r, Fe), this.tick();
21207              }
21208            }),
21209            (r.onLevelsUpdated = function (t, e) {
21210              this.level > -1 && this.fragCurrent && (this.level = this.fragCurrent.level),
21211                (this.levels = e.levels);
21212            }),
21213            (r.swapAudioCodec = function () {
21214              this.audioCodecSwap = !this.audioCodecSwap;
21215            }),
21216            (r.seekToStartPos = function () {
21217              var t = this.media;
21218              if (t) {
21219                var e = t.currentTime,
21220                  r = this.startPosition;
21221                if (r >= 0 && e < r) {
21222                  if (t.seeking)
21223                    return void this.log('could not seek to ' + r + ', already seeking at ' + e);
21224                  var i = ri.getBuffered(t),
21225                    n = (i.length ? i.start(0) : 0) - r;
21226                  n > 0 &&
21227                    (n < this.config.maxBufferHole || n < this.config.maxFragLookUpTolerance) &&
21228                    (this.log('adjusting start position by ' + n + ' to match buffer start'),
21229                    (r += n),
21230                    (this.startPosition = r)),
21231                    this.log('seek to target start position ' + r + ' from current time ' + e),
21232                    (t.currentTime = r);
21233                }
21234              }
21235            }),
21236            (r._getAudioCodec = function (t) {
21237              var e = this.config.defaultAudioCodec || t.audioCodec;
21238              return (
21239                this.audioCodecSwap &&
21240                  e &&
21241                  (this.log('Swapping audio codec'),
21242                  (e = -1 !== e.indexOf('mp4a.40.5') ? 'mp4a.40.2' : 'mp4a.40.5')),
21243                e
21244              );
21245            }),
21246            (r._loadBitrateTestFrag = function (t, e) {
21247              var r = this;
21248              (t.bitrateTest = !0),
21249                this._doFragLoad(t, e).then(function (i) {
21250                  var n = r.hls;
21251                  if (i && !r.fragContextChanged(t)) {
21252                    (e.fragmentError = 0),
21253                      (r.state = Ti),
21254                      (r.startFragRequested = !1),
21255                      (r.bitrateTest = !1);
21256                    var a = t.stats;
21257                    (a.parsing.start =
21258                      a.parsing.end =
21259                      a.buffering.start =
21260                      a.buffering.end =
21261                        self.performance.now()),
21262                      n.trigger(S.FRAG_LOADED, i),
21263                      (t.bitrateTest = !1);
21264                  }
21265                });
21266            }),
21267            (r._handleTransmuxComplete = function (t) {
21268              var e,
21269                r = 'main',
21270                i = this.hls,
21271                n = t.remuxResult,
21272                a = t.chunkMeta,
21273                s = this.getCurrentContext(a);
21274              if (s) {
21275                var o = s.frag,
21276                  l = s.part,
21277                  u = s.level,
21278                  h = n.video,
21279                  d = n.text,
21280                  c = n.id3,
21281                  f = n.initSegment,
21282                  g = u.details,
21283                  v = this.altAudio ? void 0 : n.audio;
21284                if (this.fragContextChanged(o)) this.fragmentTracker.removeFragment(o);
21285                else {
21286                  if (((this.state = bi), f)) {
21287                    if (null != f && f.tracks) {
21288                      var m = o.initSegment || o;
21289                      this._bufferInitSegment(u, f.tracks, m, a),
21290                        i.trigger(S.FRAG_PARSING_INIT_SEGMENT, {
21291                          frag: m,
21292                          id: r,
21293                          tracks: f.tracks,
21294                        });
21295                    }
21296                    var p = f.initPTS,
21297                      E = f.timescale;
21298                    y(p) &&
21299                      ((this.initPTS[o.cc] = { baseTime: p, timescale: E }),
21300                      i.trigger(S.INIT_PTS_FOUND, { frag: o, id: r, initPTS: p, timescale: E }));
21301                  }
21302                  if (h && g && 'initSegment' !== o.sn) {
21303                    var T = g.fragments[o.sn - 1 - g.startSN],
21304                      L = o.sn === g.startSN,
21305                      A = !T || o.cc > T.cc;
21306                    if (!1 !== n.independent) {
21307                      var R = h.startPTS,
21308                        b = h.endPTS,
21309                        k = h.startDTS,
21310                        D = h.endDTS;
21311                      if (l)
21312                        l.elementaryStreams[h.type] = {
21313                          startPTS: R,
21314                          endPTS: b,
21315                          startDTS: k,
21316                          endDTS: D,
21317                        };
21318                      else if (
21319                        (h.firstKeyFrame &&
21320                          h.independent &&
21321                          1 === a.id &&
21322                          !A &&
21323                          (this.couldBacktrack = !0),
21324                        h.dropped && h.independent)
21325                      ) {
21326                        var I = this.getMainFwdBufferInfo(),
21327                          w = (I ? I.end : this.getLoadPosition()) + this.config.maxBufferHole,
21328                          C = h.firstKeyFramePTS ? h.firstKeyFramePTS : R;
21329                        if (!L && w < C - this.config.maxBufferHole && !A)
21330                          return void this.backtrack(o);
21331                        A && (o.gap = !0),
21332                          o.setElementaryStreamInfo(h.type, o.start, b, o.start, D, !0);
21333                      } else L && R > 2 && (o.gap = !0);
21334                      o.setElementaryStreamInfo(h.type, R, b, k, D),
21335                        this.backtrackFragment && (this.backtrackFragment = o),
21336                        this.bufferFragmentData(h, o, l, a, L || A);
21337                    } else {
21338                      if (!L && !A) return void this.backtrack(o);
21339                      o.gap = !0;
21340                    }
21341                  }
21342                  if (v) {
21343                    var _ = v.startPTS,
21344                      x = v.endPTS,
21345                      P = v.startDTS,
21346                      F = v.endDTS;
21347                    l &&
21348                      (l.elementaryStreams[O] = { startPTS: _, endPTS: x, startDTS: P, endDTS: F }),
21349                      o.setElementaryStreamInfo(O, _, x, P, F),
21350                      this.bufferFragmentData(v, o, l, a);
21351                  }
21352                  if (g && null != c && null != (e = c.samples) && e.length) {
21353                    var M = { id: r, frag: o, details: g, samples: c.samples };
21354                    i.trigger(S.FRAG_PARSING_METADATA, M);
21355                  }
21356                  if (g && d) {
21357                    var N = { id: r, frag: o, details: g, samples: d.samples };
21358                    i.trigger(S.FRAG_PARSING_USERDATA, N);
21359                  }
21360                }
21361              } else this.resetWhenMissingContext(a);
21362            }),
21363            (r._bufferInitSegment = function (t, e, r, i) {
21364              var n = this;
21365              if (this.state === bi) {
21366                (this.audioOnly = !!e.audio && !e.video),
21367                  this.altAudio && !this.audioOnly && delete e.audio;
21368                var a = e.audio,
21369                  s = e.video,
21370                  o = e.audiovideo;
21371                if (a) {
21372                  var l = t.audioCodec,
21373                    u = navigator.userAgent.toLowerCase();
21374                  if (this.audioCodecSwitch) {
21375                    l && (l = -1 !== l.indexOf('mp4a.40.5') ? 'mp4a.40.2' : 'mp4a.40.5');
21376                    var h = a.metadata;
21377                    h &&
21378                      'channelCount' in h &&
21379                      1 !== (h.channelCount || 1) &&
21380                      -1 === u.indexOf('firefox') &&
21381                      (l = 'mp4a.40.5');
21382                  }
21383                  l &&
21384                    -1 !== l.indexOf('mp4a.40.5') &&
21385                    -1 !== u.indexOf('android') &&
21386                    'audio/mpeg' !== a.container &&
21387                    ((l = 'mp4a.40.2'), this.log('Android: force audio codec to ' + l)),
21388                    t.audioCodec &&
21389                      t.audioCodec !== l &&
21390                      this.log(
21391                        'Swapping manifest audio codec "' + t.audioCodec + '" for "' + l + '"'
21392                      ),
21393                    (a.levelCodec = l),
21394                    (a.id = 'main'),
21395                    this.log(
21396                      'Init audio buffer, container:' +
21397                        a.container +
21398                        ', codecs[selected/level/parsed]=[' +
21399                        (l || '') +
21400                        '/' +
21401                        (t.audioCodec || '') +
21402                        '/' +
21403                        a.codec +
21404                        ']'
21405                    );
21406                }
21407                s &&
21408                  ((s.levelCodec = t.videoCodec),
21409                  (s.id = 'main'),
21410                  this.log(
21411                    'Init video buffer, container:' +
21412                      s.container +
21413                      ', codecs[level/parsed]=[' +
21414                      (t.videoCodec || '') +
21415                      '/' +
21416                      s.codec +
21417                      ']'
21418                  )),
21419                  o &&
21420                    this.log(
21421                      'Init audiovideo buffer, container:' +
21422                        o.container +
21423                        ', codecs[level/parsed]=[' +
21424                        t.codecs +
21425                        '/' +
21426                        o.codec +
21427                        ']'
21428                    ),
21429                  this.hls.trigger(S.BUFFER_CODECS, e),
21430                  Object.keys(e).forEach(function (t) {
21431                    var a = e[t].initSegment;
21432                    null != a &&
21433                      a.byteLength &&
21434                      n.hls.trigger(S.BUFFER_APPENDING, {
21435                        type: t,
21436                        data: a,
21437                        frag: r,
21438                        part: null,
21439                        chunkMeta: i,
21440                        parent: r.type,
21441                      });
21442                  }),
21443                  this.tickImmediate();
21444              }
21445            }),
21446            (r.getMainFwdBufferInfo = function () {
21447              return this.getFwdBufferInfo(this.mediaBuffer ? this.mediaBuffer : this.media, Fe);
21448            }),
21449            (r.backtrack = function (t) {
21450              (this.couldBacktrack = !0),
21451                (this.backtrackFragment = t),
21452                this.resetTransmuxer(),
21453                this.flushBufferGap(t),
21454                this.fragmentTracker.removeFragment(t),
21455                (this.fragPrevious = null),
21456                (this.nextLoadPosition = t.start),
21457                (this.state = Ti);
21458            }),
21459            (r.checkFragmentChanged = function () {
21460              var t = this.media,
21461                e = null;
21462              if (t && t.readyState > 1 && !1 === t.seeking) {
21463                var r = t.currentTime;
21464                if (
21465                  (ri.isBuffered(t, r)
21466                    ? (e = this.getAppendedFrag(r))
21467                    : ri.isBuffered(t, r + 0.1) && (e = this.getAppendedFrag(r + 0.1)),
21468                  e)
21469                ) {
21470                  this.backtrackFragment = null;
21471                  var i = this.fragPlaying,
21472                    n = e.level;
21473                  (i && e.sn === i.sn && i.level === n) ||
21474                    ((this.fragPlaying = e),
21475                    this.hls.trigger(S.FRAG_CHANGED, { frag: e }),
21476                    (i && i.level === n) || this.hls.trigger(S.LEVEL_SWITCHED, { level: n }));
21477                }
21478              }
21479            }),
21480            s(e, [
21481              {
21482                key: 'nextLevel',
21483                get: function () {
21484                  var t = this.nextBufferedFrag;
21485                  return t ? t.level : -1;
21486                },
21487              },
21488              {
21489                key: 'currentFrag',
21490                get: function () {
21491                  var t = this.media;
21492                  return t ? this.fragPlaying || this.getAppendedFrag(t.currentTime) : null;
21493                },
21494              },
21495              {
21496                key: 'currentProgramDateTime',
21497                get: function () {
21498                  var t = this.media;
21499                  if (t) {
21500                    var e = t.currentTime,
21501                      r = this.currentFrag;
21502                    if (r && y(e) && y(r.programDateTime)) {
21503                      var i = r.programDateTime + 1e3 * (e - r.start);
21504                      return new Date(i);
21505                    }
21506                  }
21507                  return null;
21508                },
21509              },
21510              {
21511                key: 'currentLevel',
21512                get: function () {
21513                  var t = this.currentFrag;
21514                  return t ? t.level : -1;
21515                },
21516              },
21517              {
21518                key: 'nextBufferedFrag',
21519                get: function () {
21520                  var t = this.currentFrag;
21521                  return t ? this.followingBufferedFrag(t) : null;
21522                },
21523              },
21524              {
21525                key: 'forceStartLoad',
21526                get: function () {
21527                  return this._forceStartLoad;
21528                },
21529              },
21530            ]),
21531            e
21532          );
21533        })(_i),
21534        fo = (function () {
21535          function t(e) {
21536            void 0 === e && (e = {}),
21537              (this.config = void 0),
21538              (this.userConfig = void 0),
21539              (this.coreComponents = void 0),
21540              (this.networkControllers = void 0),
21541              (this.started = !1),
21542              (this._emitter = new Vn()),
21543              (this._autoLevelCapping = -1),
21544              (this._maxHdcpLevel = null),
21545              (this.abrController = void 0),
21546              (this.bufferController = void 0),
21547              (this.capLevelController = void 0),
21548              (this.latencyController = void 0),
21549              (this.levelController = void 0),
21550              (this.streamController = void 0),
21551              (this.audioTrackController = void 0),
21552              (this.subtitleTrackController = void 0),
21553              (this.emeController = void 0),
21554              (this.cmcdController = void 0),
21555              (this._media = null),
21556              (this.url = null),
21557              (this.triggeringException = void 0),
21558              I(e.debug || !1, 'Hls instance');
21559            var r = (this.config = (function (t, e) {
21560              if (
21561                (e.liveSyncDurationCount || e.liveMaxLatencyDurationCount) &&
21562                (e.liveSyncDuration || e.liveMaxLatencyDuration)
21563              )
21564                throw new Error(
21565                  "Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration"
21566                );
21567              if (
21568                void 0 !== e.liveMaxLatencyDurationCount &&
21569                (void 0 === e.liveSyncDurationCount ||
21570                  e.liveMaxLatencyDurationCount <= e.liveSyncDurationCount)
21571              )
21572                throw new Error(
21573                  'Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"'
21574                );
21575              if (
21576                void 0 !== e.liveMaxLatencyDuration &&
21577                (void 0 === e.liveSyncDuration || e.liveMaxLatencyDuration <= e.liveSyncDuration)
21578              )
21579                throw new Error(
21580                  'Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"'
21581                );
21582              var r = io(t),
21583                n = ['TimeOut', 'MaxRetry', 'RetryDelay', 'MaxRetryTimeout'];
21584              return (
21585                ['manifest', 'level', 'frag'].forEach(function (t) {
21586                  var i = ('level' === t ? 'playlist' : t) + 'LoadPolicy',
21587                    a = void 0 === e[i],
21588                    s = [];
21589                  n.forEach(function (n) {
21590                    var o = t + 'Loading' + n,
21591                      l = e[o];
21592                    if (void 0 !== l && a) {
21593                      s.push(o);
21594                      var u = r[i].default;
21595                      switch (((e[i] = { default: u }), n)) {
21596                        case 'TimeOut':
21597                          (u.maxLoadTimeMs = l), (u.maxTimeToFirstByteMs = l);
21598                          break;
21599                        case 'MaxRetry':
21600                          (u.errorRetry.maxNumRetry = l), (u.timeoutRetry.maxNumRetry = l);
21601                          break;
21602                        case 'RetryDelay':
21603                          (u.errorRetry.retryDelayMs = l), (u.timeoutRetry.retryDelayMs = l);
21604                          break;
21605                        case 'MaxRetryTimeout':
21606                          (u.errorRetry.maxRetryDelayMs = l), (u.timeoutRetry.maxRetryDelayMs = l);
21607                      }
21608                    }
21609                  }),
21610                    s.length &&
21611                      w.warn(
21612                        'hls.js config: "' +
21613                          s.join('", "') +
21614                          '" setting(s) are deprecated, use "' +
21615                          i +
21616                          '": ' +
21617                          JSON.stringify(e[i])
21618                      );
21619                }),
21620                i(i({}, r), e)
21621              );
21622            })(t.DefaultConfig, e));
21623            (this.userConfig = e), r.progressive && no(r);
21624            var n = r.abrController,
21625              a = r.bufferController,
21626              s = r.capLevelController,
21627              o = r.errorController,
21628              l = r.fpsController,
21629              u = new o(this),
21630              h = (this.abrController = new n(this)),
21631              d = (this.bufferController = new a(this)),
21632              c = (this.capLevelController = new s(this)),
21633              f = new l(this),
21634              g = new Be(this),
21635              v = new $e(this),
21636              m = r.contentSteeringController,
21637              p = m ? new m(this) : null,
21638              y = (this.levelController = new ao(this, p)),
21639              E = new $r(this),
21640              T = new oo(this.config),
21641              L = (this.streamController = new co(this, E, T));
21642            c.setStreamController(L), f.setStreamController(L);
21643            var A = [g, y, L];
21644            p && A.splice(1, 0, p), (this.networkControllers = A);
21645            var R = [h, d, c, f, v, E];
21646            this.audioTrackController = this.createController(r.audioTrackController, A);
21647            var b = r.audioStreamController;
21648            b && A.push(new b(this, E, T)),
21649              (this.subtitleTrackController = this.createController(r.subtitleTrackController, A));
21650            var k = r.subtitleStreamController;
21651            k && A.push(new k(this, E, T)),
21652              this.createController(r.timelineController, R),
21653              (T.emeController = this.emeController = this.createController(r.emeController, R)),
21654              (this.cmcdController = this.createController(r.cmcdController, R)),
21655              (this.latencyController = this.createController(Ze, R)),
21656              (this.coreComponents = R),
21657              A.push(u);
21658            var D = u.onErrorOut;
21659            'function' == typeof D && this.on(S.ERROR, D, u);
21660          }
21661          (t.isMSESupported = function () {
21662            return uo();
21663          }),
21664            (t.isSupported = function () {
21665              return (function () {
21666                if (!uo()) return !1;
21667                var t = se();
21668                return (
21669                  'function' == typeof (null == t ? void 0 : t.isTypeSupported) &&
21670                  (['avc1.42E01E,mp4a.40.2', 'av01.0.01M.08', 'vp09.00.50.08'].some(function (e) {
21671                    return t.isTypeSupported(he(e, 'video'));
21672                  }) ||
21673                    ['mp4a.40.2', 'fLaC'].some(function (e) {
21674                      return t.isTypeSupported(he(e, 'audio'));
21675                    }))
21676                );
21677              })();
21678            }),
21679            (t.getMediaSource = function () {
21680              return se();
21681            });
21682          var e = t.prototype;
21683          return (
21684            (e.createController = function (t, e) {
21685              if (t) {
21686                var r = new t(this);
21687                return e && e.push(r), r;
21688              }
21689              return null;
21690            }),
21691            (e.on = function (t, e, r) {
21692              void 0 === r && (r = this), this._emitter.on(t, e, r);
21693            }),
21694            (e.once = function (t, e, r) {
21695              void 0 === r && (r = this), this._emitter.once(t, e, r);
21696            }),
21697            (e.removeAllListeners = function (t) {
21698              this._emitter.removeAllListeners(t);
21699            }),
21700            (e.off = function (t, e, r, i) {
21701              void 0 === r && (r = this), this._emitter.off(t, e, r, i);
21702            }),
21703            (e.listeners = function (t) {
21704              return this._emitter.listeners(t);
21705            }),
21706            (e.emit = function (t, e, r) {
21707              return this._emitter.emit(t, e, r);
21708            }),
21709            (e.trigger = function (t, e) {
21710              if (this.config.debug) return this.emit(t, t, e);
21711              try {
21712                return this.emit(t, t, e);
21713              } catch (e) {
21714                if (
21715                  (w.error(
21716                    'An internal error happened while handling event ' +
21717                      t +
21718                      '. Error message: "' +
21719                      e.message +
21720                      '". Here is a stacktrace:',
21721                    e
21722                  ),
21723                  !this.triggeringException)
21724                ) {
21725                  this.triggeringException = !0;
21726                  var r = t === S.ERROR;
21727                  this.trigger(S.ERROR, {
21728                    type: L.OTHER_ERROR,
21729                    details: A.INTERNAL_EXCEPTION,
21730                    fatal: r,
21731                    event: t,
21732                    error: e,
21733                  }),
21734                    (this.triggeringException = !1);
21735                }
21736              }
21737              return !1;
21738            }),
21739            (e.listenerCount = function (t) {
21740              return this._emitter.listenerCount(t);
21741            }),
21742            (e.destroy = function () {
21743              w.log('destroy'),
21744                this.trigger(S.DESTROYING, void 0),
21745                this.detachMedia(),
21746                this.removeAllListeners(),
21747                (this._autoLevelCapping = -1),
21748                (this.url = null),
21749                this.networkControllers.forEach(function (t) {
21750                  return t.destroy();
21751                }),
21752                (this.networkControllers.length = 0),
21753                this.coreComponents.forEach(function (t) {
21754                  return t.destroy();
21755                }),
21756                (this.coreComponents.length = 0);
21757              var t = this.config;
21758              (t.xhrSetup = t.fetchSetup = void 0), (this.userConfig = null);
21759            }),
21760            (e.attachMedia = function (t) {
21761              w.log('attachMedia'),
21762                (this._media = t),
21763                this.trigger(S.MEDIA_ATTACHING, { media: t });
21764            }),
21765            (e.detachMedia = function () {
21766              w.log('detachMedia'), this.trigger(S.MEDIA_DETACHING, void 0), (this._media = null);
21767            }),
21768            (e.loadSource = function (t) {
21769              this.stopLoad();
21770              var e = this.media,
21771                r = this.url,
21772                i = (this.url = p.buildAbsoluteURL(self.location.href, t, { alwaysNormalize: !0 }));
21773              (this._autoLevelCapping = -1),
21774                (this._maxHdcpLevel = null),
21775                w.log('loadSource:' + i),
21776                e &&
21777                  r &&
21778                  (r !== i || this.bufferController.hasSourceTypes()) &&
21779                  (this.detachMedia(), this.attachMedia(e)),
21780                this.trigger(S.MANIFEST_LOADING, { url: t });
21781            }),
21782            (e.startLoad = function (t) {
21783              void 0 === t && (t = -1),
21784                w.log('startLoad(' + t + ')'),
21785                (this.started = !0),
21786                this.resumeBuffering();
21787              for (
21788                var e = 0;
21789                e < this.networkControllers.length &&
21790                (this.networkControllers[e].startLoad(t), this.started && this.networkControllers);
21791                e++
21792              );
21793            }),
21794            (e.stopLoad = function () {
21795              w.log('stopLoad'), (this.started = !1);
21796              for (
21797                var t = 0;
21798                t < this.networkControllers.length &&
21799                (this.networkControllers[t].stopLoad(), !this.started && this.networkControllers);
21800                t++
21801              );
21802            }),
21803            (e.resumeBuffering = function () {
21804              w.log('resume buffering'),
21805                this.networkControllers.forEach(function (t) {
21806                  t.resumeBuffering && t.resumeBuffering();
21807                });
21808            }),
21809            (e.pauseBuffering = function () {
21810              w.log('pause buffering'),
21811                this.networkControllers.forEach(function (t) {
21812                  t.pauseBuffering && t.pauseBuffering();
21813                });
21814            }),
21815            (e.swapAudioCodec = function () {
21816              w.log('swapAudioCodec'), this.streamController.swapAudioCodec();
21817            }),
21818            (e.recoverMediaError = function () {
21819              w.log('recoverMediaError');
21820              var t = this._media;
21821              this.detachMedia(), t && this.attachMedia(t);
21822            }),
21823            (e.removeLevel = function (t) {
21824              this.levelController.removeLevel(t);
21825            }),
21826            (e.setAudioOption = function (t) {
21827              var e;
21828              return null == (e = this.audioTrackController) ? void 0 : e.setAudioOption(t);
21829            }),
21830            (e.setSubtitleOption = function (t) {
21831              var e;
21832              return null == (e = this.subtitleTrackController) || e.setSubtitleOption(t), null;
21833            }),
21834            s(
21835              t,
21836              [
21837                {
21838                  key: 'levels',
21839                  get: function () {
21840                    var t = this.levelController.levels;
21841                    return t || [];
21842                  },
21843                },
21844                {
21845                  key: 'currentLevel',
21846                  get: function () {
21847                    return this.streamController.currentLevel;
21848                  },
21849                  set: function (t) {
21850                    w.log('set currentLevel:' + t),
21851                      (this.levelController.manualLevel = t),
21852                      this.streamController.immediateLevelSwitch();
21853                  },
21854                },
21855                {
21856                  key: 'nextLevel',
21857                  get: function () {
21858                    return this.streamController.nextLevel;
21859                  },
21860                  set: function (t) {
21861                    w.log('set nextLevel:' + t),
21862                      (this.levelController.manualLevel = t),
21863                      this.streamController.nextLevelSwitch();
21864                  },
21865                },
21866                {
21867                  key: 'loadLevel',
21868                  get: function () {
21869                    return this.levelController.level;
21870                  },
21871                  set: function (t) {
21872                    w.log('set loadLevel:' + t), (this.levelController.manualLevel = t);
21873                  },
21874                },
21875                {
21876                  key: 'nextLoadLevel',
21877                  get: function () {
21878                    return this.levelController.nextLoadLevel;
21879                  },
21880                  set: function (t) {
21881                    this.levelController.nextLoadLevel = t;
21882                  },
21883                },
21884                {
21885                  key: 'firstLevel',
21886                  get: function () {
21887                    return Math.max(this.levelController.firstLevel, this.minAutoLevel);
21888                  },
21889                  set: function (t) {
21890                    w.log('set firstLevel:' + t), (this.levelController.firstLevel = t);
21891                  },
21892                },
21893                {
21894                  key: 'startLevel',
21895                  get: function () {
21896                    var t = this.levelController.startLevel;
21897                    return -1 === t && this.abrController.forcedAutoLevel > -1
21898                      ? this.abrController.forcedAutoLevel
21899                      : t;
21900                  },
21901                  set: function (t) {
21902                    w.log('set startLevel:' + t),
21903                      -1 !== t && (t = Math.max(t, this.minAutoLevel)),
21904                      (this.levelController.startLevel = t);
21905                  },
21906                },
21907                {
21908                  key: 'capLevelToPlayerSize',
21909                  get: function () {
21910                    return this.config.capLevelToPlayerSize;
21911                  },
21912                  set: function (t) {
21913                    var e = !!t;
21914                    e !== this.config.capLevelToPlayerSize &&
21915                      (e
21916                        ? this.capLevelController.startCapping()
21917                        : (this.capLevelController.stopCapping(),
21918                          (this.autoLevelCapping = -1),
21919                          this.streamController.nextLevelSwitch()),
21920                      (this.config.capLevelToPlayerSize = e));
21921                  },
21922                },
21923                {
21924                  key: 'autoLevelCapping',
21925                  get: function () {
21926                    return this._autoLevelCapping;
21927                  },
21928                  set: function (t) {
21929                    this._autoLevelCapping !== t &&
21930                      (w.log('set autoLevelCapping:' + t),
21931                      (this._autoLevelCapping = t),
21932                      this.levelController.checkMaxAutoUpdated());
21933                  },
21934                },
21935                {
21936                  key: 'bandwidthEstimate',
21937                  get: function () {
21938                    var t = this.abrController.bwEstimator;
21939                    return t ? t.getEstimate() : NaN;
21940                  },
21941                  set: function (t) {
21942                    this.abrController.resetEstimator(t);
21943                  },
21944                },
21945                {
21946                  key: 'ttfbEstimate',
21947                  get: function () {
21948                    var t = this.abrController.bwEstimator;
21949                    return t ? t.getEstimateTTFB() : NaN;
21950                  },
21951                },
21952                {
21953                  key: 'maxHdcpLevel',
21954                  get: function () {
21955                    return this._maxHdcpLevel;
21956                  },
21957                  set: function (t) {
21958                    (function (t) {
21959                      return tr.indexOf(t) > -1;
21960                    })(t) &&
21961                      this._maxHdcpLevel !== t &&
21962                      ((this._maxHdcpLevel = t), this.levelController.checkMaxAutoUpdated());
21963                  },
21964                },
21965                {
21966                  key: 'autoLevelEnabled',
21967                  get: function () {
21968                    return -1 === this.levelController.manualLevel;
21969                  },
21970                },
21971                {
21972                  key: 'manualLevel',
21973                  get: function () {
21974                    return this.levelController.manualLevel;
21975                  },
21976                },
21977                {
21978                  key: 'minAutoLevel',
21979                  get: function () {
21980                    var t = this.levels,
21981                      e = this.config.minAutoBitrate;
21982                    if (!t) return 0;
21983                    for (var r = t.length, i = 0; i < r; i++) if (t[i].maxBitrate >= e) return i;
21984                    return 0;
21985                  },
21986                },
21987                {
21988                  key: 'maxAutoLevel',
21989                  get: function () {
21990                    var t,
21991                      e = this.levels,
21992                      r = this.autoLevelCapping,
21993                      i = this.maxHdcpLevel;
21994                    if (((t = -1 === r && null != e && e.length ? e.length - 1 : r), i))
21995                      for (var n = t; n--; ) {
21996                        var a = e[n].attrs['HDCP-LEVEL'];
21997                        if (a && a <= i) return n;
21998                      }
21999                    return t;
22000                  },
22001                },
22002                {
22003                  key: 'firstAutoLevel',
22004                  get: function () {
22005                    return this.abrController.firstAutoLevel;
22006                  },
22007                },
22008                {
22009                  key: 'nextAutoLevel',
22010                  get: function () {
22011                    return this.abrController.nextAutoLevel;
22012                  },
22013                  set: function (t) {
22014                    this.abrController.nextAutoLevel = t;
22015                  },
22016                },
22017                {
22018                  key: 'playingDate',
22019                  get: function () {
22020                    return this.streamController.currentProgramDateTime;
22021                  },
22022                },
22023                {
22024                  key: 'mainForwardBufferInfo',
22025                  get: function () {
22026                    return this.streamController.getMainFwdBufferInfo();
22027                  },
22028                },
22029                {
22030                  key: 'allAudioTracks',
22031                  get: function () {
22032                    var t = this.audioTrackController;
22033                    return t ? t.allAudioTracks : [];
22034                  },
22035                },
22036                {
22037                  key: 'audioTracks',
22038                  get: function () {
22039                    var t = this.audioTrackController;
22040                    return t ? t.audioTracks : [];
22041                  },
22042                },
22043                {
22044                  key: 'audioTrack',
22045                  get: function () {
22046                    var t = this.audioTrackController;
22047                    return t ? t.audioTrack : -1;
22048                  },
22049                  set: function (t) {
22050                    var e = this.audioTrackController;
22051                    e && (e.audioTrack = t);
22052                  },
22053                },
22054                {
22055                  key: 'allSubtitleTracks',
22056                  get: function () {
22057                    var t = this.subtitleTrackController;
22058                    return t ? t.allSubtitleTracks : [];
22059                  },
22060                },
22061                {
22062                  key: 'subtitleTracks',
22063                  get: function () {
22064                    var t = this.subtitleTrackController;
22065                    return t ? t.subtitleTracks : [];
22066                  },
22067                },
22068                {
22069                  key: 'subtitleTrack',
22070                  get: function () {
22071                    var t = this.subtitleTrackController;
22072                    return t ? t.subtitleTrack : -1;
22073                  },
22074                  set: function (t) {
22075                    var e = this.subtitleTrackController;
22076                    e && (e.subtitleTrack = t);
22077                  },
22078                },
22079                {
22080                  key: 'media',
22081                  get: function () {
22082                    return this._media;
22083                  },
22084                },
22085                {
22086                  key: 'subtitleDisplay',
22087                  get: function () {
22088                    var t = this.subtitleTrackController;
22089                    return !!t && t.subtitleDisplay;
22090                  },
22091                  set: function (t) {
22092                    var e = this.subtitleTrackController;
22093                    e && (e.subtitleDisplay = t);
22094                  },
22095                },
22096                {
22097                  key: 'lowLatencyMode',
22098                  get: function () {
22099                    return this.config.lowLatencyMode;
22100                  },
22101                  set: function (t) {
22102                    this.config.lowLatencyMode = t;
22103                  },
22104                },
22105                {
22106                  key: 'liveSyncPosition',
22107                  get: function () {
22108                    return this.latencyController.liveSyncPosition;
22109                  },
22110                },
22111                {
22112                  key: 'latency',
22113                  get: function () {
22114                    return this.latencyController.latency;
22115                  },
22116                },
22117                {
22118                  key: 'maxLatency',
22119                  get: function () {
22120                    return this.latencyController.maxLatency;
22121                  },
22122                },
22123                {
22124                  key: 'targetLatency',
22125                  get: function () {
22126                    return this.latencyController.targetLatency;
22127                  },
22128                },
22129                {
22130                  key: 'drift',
22131                  get: function () {
22132                    return this.latencyController.drift;
22133                  },
22134                },
22135                {
22136                  key: 'forceStartLoad',
22137                  get: function () {
22138                    return this.streamController.forceStartLoad;
22139                  },
22140                },
22141              ],
22142              [
22143                {
22144                  key: 'version',
22145                  get: function () {
22146                    return '1.5.18';
22147                  },
22148                },
22149                {
22150                  key: 'Events',
22151                  get: function () {
22152                    return S;
22153                  },
22154                },
22155                {
22156                  key: 'ErrorTypes',
22157                  get: function () {
22158                    return L;
22159                  },
22160                },
22161                {
22162                  key: 'ErrorDetails',
22163                  get: function () {
22164                    return A;
22165                  },
22166                },
22167                {
22168                  key: 'DefaultConfig',
22169                  get: function () {
22170                    return t.defaultConfig ? t.defaultConfig : ro;
22171                  },
22172                  set: function (e) {
22173                    t.defaultConfig = e;
22174                  },
22175                },
22176              ]
22177            ),
22178            t
22179          );
22180        })();
22181      return (fo.defaultConfig = void 0), fo;
22182    }),
22183    'object' == typeof exports && 'undefined' != typeof module
22184      ? (module.exports = i())
22185      : 'function' == typeof define && define.amd
22186      ? define(i)
22187      : ((r = 'undefined' != typeof globalThis ? globalThis : r || self).Hls = i());
22188})(!1);
22189//# sourceMappingURL=hls.min.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.