@vindral/web-sdk 3.0.6 → 3.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +2 -1
- package/index.mjs +863 -827
- package/index.umd.js +5 -5
- package/package.json +1 -1
- package/style.css +1 -1
package/index.mjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
1
|
+
var wg = Object.defineProperty, Sg = Object.defineProperties;
|
|
2
|
+
var Dg = Object.getOwnPropertyDescriptors;
|
|
3
|
+
var Rt = Object.getOwnPropertySymbols;
|
|
4
|
+
var fg = Object.prototype.hasOwnProperty, pg = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var ve = (i, A, e) => A in i ? wg(i, A, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[A] = e, r = (i, A) => {
|
|
6
6
|
for (var e in A || (A = {}))
|
|
7
|
-
|
|
8
|
-
if (
|
|
9
|
-
for (var e of
|
|
10
|
-
|
|
7
|
+
fg.call(A, e) && ve(i, e, A[e]);
|
|
8
|
+
if (Rt)
|
|
9
|
+
for (var e of Rt(A))
|
|
10
|
+
pg.call(A, e) && ve(i, e, A[e]);
|
|
11
11
|
return i;
|
|
12
|
-
}, b = (i, A) =>
|
|
13
|
-
var t = (i, A, e) => (
|
|
14
|
-
var
|
|
12
|
+
}, b = (i, A) => Sg(i, Dg(A));
|
|
13
|
+
var t = (i, A, e) => (ve(i, typeof A != "symbol" ? A + "" : A, e), e);
|
|
14
|
+
var m = (i, A, e) => new Promise((g, s) => {
|
|
15
15
|
var I = (o) => {
|
|
16
16
|
try {
|
|
17
17
|
n(e.next(o));
|
|
@@ -27,10 +27,10 @@ var u = (i, A, e) => new Promise((g, s) => {
|
|
|
27
27
|
}, n = (o) => o.done ? g(o.value) : Promise.resolve(o.value).then(I, B);
|
|
28
28
|
n((e = e.apply(i, A)).next());
|
|
29
29
|
});
|
|
30
|
-
const
|
|
30
|
+
const Fg = (i) => i ? {
|
|
31
31
|
Authorization: `Bearer ${i}`
|
|
32
32
|
} : void 0;
|
|
33
|
-
class
|
|
33
|
+
class Gt {
|
|
34
34
|
constructor(A) {
|
|
35
35
|
t(this, "maxSize", 0);
|
|
36
36
|
t(this, "size", 0);
|
|
@@ -55,7 +55,7 @@ class Rt {
|
|
|
55
55
|
return this._borrowedBuffers;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
class
|
|
58
|
+
class _i {
|
|
59
59
|
constructor(A, e = 0) {
|
|
60
60
|
t(this, "buffer");
|
|
61
61
|
t(this, "bytes");
|
|
@@ -88,7 +88,7 @@ class ji {
|
|
|
88
88
|
this.buffer = A, this.bytes = new Uint8Array(this.buffer), this.bitOffset = e;
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
-
class
|
|
91
|
+
class yg {
|
|
92
92
|
constructor(A = 100, e = 100) {
|
|
93
93
|
t(this, "resizeSteps");
|
|
94
94
|
t(this, "internalBuffer");
|
|
@@ -194,7 +194,7 @@ const VA = (i) => i.reduce((A, e) => A + e, 0) / i.length, fA = (i) => ({
|
|
|
194
194
|
average: i.length === 0 ? 0 : VA(i),
|
|
195
195
|
max: i.length === 0 ? 0 : Math.max(...i),
|
|
196
196
|
min: i.length === 0 ? 0 : Math.min(...i)
|
|
197
|
-
}),
|
|
197
|
+
}), Rg = (i) => {
|
|
198
198
|
let A = 0, e = 0, g = 0, s = 0, I = 0;
|
|
199
199
|
for (let C = 0; C < i.length; C++) {
|
|
200
200
|
const { x: a, y: Q } = i[C];
|
|
@@ -206,7 +206,7 @@ const VA = (i) => i.reduce((A, e) => A + e, 0) / i.length, fA = (i) => ({
|
|
|
206
206
|
);
|
|
207
207
|
return { slope: B, intercept: n, r2: o, predict: (C) => B * (i.length + C) + n };
|
|
208
208
|
};
|
|
209
|
-
class
|
|
209
|
+
class Gg {
|
|
210
210
|
constructor(A = 10) {
|
|
211
211
|
t(this, "rates");
|
|
212
212
|
t(this, "_total", 0);
|
|
@@ -267,8 +267,8 @@ class z {
|
|
|
267
267
|
s ? s.push(I) : this.listeners[A] = [I];
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
|
-
const
|
|
271
|
-
},
|
|
270
|
+
const _e = 1e3, $e = _e * 1e3, kt = $e * 1e3, Ne = (i, A, e) => i % A === 0 ? i / A : (i / A).toFixed(e), kg = (i, A = 1) => i >= kt ? `${Ne(i, kt, A)} Gbit/s` : i >= $e ? `${Ne(i, $e, A)} Mbit/s` : i >= _e ? `${Ne(i, _e, A)} Kbit/s` : `${i} bit/s`, Ug = ({ width: i, height: A }) => `${i}x${A}`, bg = (i) => i % 1e3 === 0 ? `${i / 1e3} kHz` : i > 1e3 ? `${(i / 1e3).toFixed(1)} kHz` : `${i} Hz`, j = () => {
|
|
271
|
+
}, Ut = (i, A) => {
|
|
272
272
|
const e = r({}, i);
|
|
273
273
|
return typeof e != "object" || A.forEach((g) => {
|
|
274
274
|
delete e[g];
|
|
@@ -284,27 +284,27 @@ const je = 1e3, _e = je * 1e3, Gt = _e * 1e3, ve = (i, A, e) => i % A === 0 ? i
|
|
|
284
284
|
}, SA = (i) => i.reduce((A, e) => {
|
|
285
285
|
var g;
|
|
286
286
|
return A + (((g = e.end) != null ? g : Date.now()) - e.start);
|
|
287
|
-
}, 0),
|
|
287
|
+
}, 0), bt = (i, A, e = Date.now()) => i.reduce((g, s) => {
|
|
288
288
|
var n;
|
|
289
289
|
const I = Math.max(e - A, s.start), B = (n = s.end) != null ? n : e;
|
|
290
290
|
return Math.max(0, B - I) + g;
|
|
291
|
-
}, 0),
|
|
291
|
+
}, 0), Jg = (i) => {
|
|
292
292
|
try {
|
|
293
293
|
return JSON.parse(i);
|
|
294
294
|
} catch (A) {
|
|
295
295
|
return;
|
|
296
296
|
}
|
|
297
|
-
},
|
|
297
|
+
}, Jt = () => {
|
|
298
298
|
const i = [...Array(256).keys()].map((e) => e.toString(16).padStart(2, "0")), A = crypto.getRandomValues(new Uint8Array(16));
|
|
299
299
|
return A[6] = A[6] & 15 | 64, A[8] = A[8] & 63 | 128, [...A.entries()].map(([e, g]) => [4, 6, 8, 10].includes(e) ? `-${i[g]}` : i[g]).join("");
|
|
300
|
-
},
|
|
300
|
+
}, $i = (i) => m(void 0, null, function* () {
|
|
301
301
|
return new Promise((A) => setTimeout(A, i));
|
|
302
|
-
}),
|
|
302
|
+
}), Lg = (e, ...g) => m(void 0, [e, ...g], function* (i, A = new Error("Timeout")) {
|
|
303
303
|
return new Promise((s, I) => setTimeout(() => I(A), i));
|
|
304
|
-
}),
|
|
305
|
-
class
|
|
304
|
+
}), vg = (i) => typeof i == "object" && i !== null && "message" in i;
|
|
305
|
+
class Ng extends Error {
|
|
306
306
|
constructor({ status: e, url: g, body: s }) {
|
|
307
|
-
const I =
|
|
307
|
+
const I = Jg(s), B = vg(I) ? I.message : `Url ${g.toString()}, Status code: ${e}, Body: ${s}`;
|
|
308
308
|
super(B);
|
|
309
309
|
t(this, "status");
|
|
310
310
|
t(this, "body");
|
|
@@ -312,28 +312,28 @@ class vg extends Error {
|
|
|
312
312
|
this.status = e, this.body = s, this.url = g, Object.setPrototypeOf(this, new.target.prototype);
|
|
313
313
|
}
|
|
314
314
|
}
|
|
315
|
-
const
|
|
315
|
+
const Hg = (i) => typeof i.status == "number", Ag = (i, A) => m(void 0, null, function* () {
|
|
316
316
|
const e = yield fetch(i.toString(), r({ mode: "cors" }, A));
|
|
317
317
|
if (!e.ok)
|
|
318
|
-
throw new
|
|
318
|
+
throw new Ng({ status: e.status, url: i, body: yield e.text() });
|
|
319
319
|
return e;
|
|
320
|
-
}),
|
|
321
|
-
return yield (yield
|
|
322
|
-
}),
|
|
323
|
-
return
|
|
324
|
-
}),
|
|
320
|
+
}), He = (i, A) => m(void 0, null, function* () {
|
|
321
|
+
return yield (yield Ag(i, r({}, A))).json();
|
|
322
|
+
}), Mg = (i, A) => m(void 0, null, function* () {
|
|
323
|
+
return Ag(i, r({ method: "POST" }, A));
|
|
324
|
+
}), Lt = {
|
|
325
325
|
lbConnect: (i) => i.channelGroupId ? `connect/?channelId=${i.channelId}&channelGroupId=${i.channelGroupId}` : `connect/?channelId=${i.channelId}`,
|
|
326
326
|
thumbnails: (i, A) => A ? i.channelGroupId ? `thumbnail/?channelGroupId=${i.channelGroupId}&auth.token=${A}&auth.type=jwt` : i.channelId ? `thumbnail/?channelId=${i.channelId}&auth.token=${A}&auth.type=jwt` : "thumbnail" : "thumbnail"
|
|
327
327
|
};
|
|
328
|
-
class
|
|
328
|
+
class Pg {
|
|
329
329
|
constructor(A) {
|
|
330
330
|
t(this, "baseUrl");
|
|
331
331
|
t(this, "tokenFactory");
|
|
332
332
|
this.baseUrl = new URL("/api/v2/", A.publicEndpoint).toString(), this.tokenFactory = A.tokenFactory;
|
|
333
333
|
}
|
|
334
334
|
connect(A) {
|
|
335
|
-
return
|
|
336
|
-
const { channelId: e, channelGroupId: g } = A, s = { channelId: e, channelGroupId: g }, I = new URL(
|
|
335
|
+
return m(this, null, function* () {
|
|
336
|
+
const { channelId: e, channelGroupId: g } = A, s = { channelId: e, channelGroupId: g }, I = new URL(Lt.lbConnect(A), this.baseUrl), B = this.getAuthToken(s), n = yield He(I, { headers: this.getHeaders(B) });
|
|
337
337
|
return {
|
|
338
338
|
channels: n.channels.map((C) => {
|
|
339
339
|
const a = this.toChannel(C, s);
|
|
@@ -350,20 +350,20 @@ class Mg {
|
|
|
350
350
|
});
|
|
351
351
|
}
|
|
352
352
|
getChannel(A) {
|
|
353
|
-
return
|
|
354
|
-
const e = { channelId: A }, g = new URL(`channel/${A}`, this.baseUrl), s = this.getAuthToken(e), I = yield
|
|
353
|
+
return m(this, null, function* () {
|
|
354
|
+
const e = { channelId: A }, g = new URL(`channel/${A}`, this.baseUrl), s = this.getAuthToken(e), I = yield He(g, { headers: this.getHeaders(s) });
|
|
355
355
|
return this.toChannel(I, e, s);
|
|
356
356
|
});
|
|
357
357
|
}
|
|
358
358
|
getChannels(A) {
|
|
359
|
-
return
|
|
360
|
-
const e = { channelGroupId: A }, g = new URL(`channels/${A}`, this.baseUrl), s = this.getAuthToken(e), I = yield
|
|
359
|
+
return m(this, null, function* () {
|
|
360
|
+
const e = { channelGroupId: A }, g = new URL(`channels/${A}`, this.baseUrl), s = this.getAuthToken(e), I = yield He(g, { headers: this.getHeaders(s) });
|
|
361
361
|
return this.toChannels(I, e, s);
|
|
362
362
|
});
|
|
363
363
|
}
|
|
364
364
|
getHeaders(A) {
|
|
365
365
|
var g;
|
|
366
|
-
return (g =
|
|
366
|
+
return (g = Fg(A)) != null ? g : {};
|
|
367
367
|
}
|
|
368
368
|
getAuthToken(A) {
|
|
369
369
|
return this.tokenFactory ? this.tokenFactory(A) : void 0;
|
|
@@ -372,8 +372,8 @@ class Mg {
|
|
|
372
372
|
return A.map((s) => this.toChannel(s, e, g));
|
|
373
373
|
}
|
|
374
374
|
toChannel(A, e, g) {
|
|
375
|
-
const { baseUrl: s, sizes: I } = A.thumbnail, B = s || new URL(
|
|
376
|
-
`?channelId=${A.channelId}&width=${o.width}&height=${o.height}${
|
|
375
|
+
const { baseUrl: s, sizes: I } = A.thumbnail, B = s || new URL(Lt.thumbnails(e, g), this.baseUrl), n = I.map((o) => new URL(
|
|
376
|
+
`?channelId=${A.channelId}&width=${o.width}&height=${o.height}${qg(
|
|
377
377
|
e,
|
|
378
378
|
g
|
|
379
379
|
)}`,
|
|
@@ -387,8 +387,8 @@ class Mg {
|
|
|
387
387
|
};
|
|
388
388
|
}
|
|
389
389
|
}
|
|
390
|
-
const
|
|
391
|
-
class
|
|
390
|
+
const qg = (i, A) => A ? i.channelGroupId ? `&channelGroupId=${i.channelGroupId}&auth.token=${A}&auth.type=jwt` : `&auth.token=${A}&auth.type=jwt` : "";
|
|
391
|
+
class Tg extends z {
|
|
392
392
|
constructor(e) {
|
|
393
393
|
super();
|
|
394
394
|
t(this, "state", "not casting");
|
|
@@ -404,7 +404,7 @@ class qg extends z {
|
|
|
404
404
|
var e;
|
|
405
405
|
this.unloaded = !0, (e = this.getSession()) == null || e.removeMessageListener("urn:x-cast:com.vindral.castdata", this.onMessage);
|
|
406
406
|
});
|
|
407
|
-
t(this, "init", () =>
|
|
407
|
+
t(this, "init", () => m(this, null, function* () {
|
|
408
408
|
return new Promise((e, g) => {
|
|
409
409
|
let s = !1;
|
|
410
410
|
const I = setTimeout(() => {
|
|
@@ -427,7 +427,7 @@ class qg extends z {
|
|
|
427
427
|
}, this.castLibrariesAdded() && window.cast ? window.__onGCastApiAvailable(!0) : this.verifyCastLibraries();
|
|
428
428
|
});
|
|
429
429
|
}));
|
|
430
|
-
t(this, "start", () =>
|
|
430
|
+
t(this, "start", () => m(this, null, function* () {
|
|
431
431
|
var e;
|
|
432
432
|
yield (e = this.getInstance()) == null ? void 0 : e.requestSession();
|
|
433
433
|
}));
|
|
@@ -553,7 +553,7 @@ class qg extends z {
|
|
|
553
553
|
}));
|
|
554
554
|
}
|
|
555
555
|
}
|
|
556
|
-
const xA = (i) => "width" in i && typeof i.width == "number", vA = (i) => !xA(i),
|
|
556
|
+
const xA = (i) => "width" in i && typeof i.width == "number", vA = (i) => !xA(i), Me = (i) => {
|
|
557
557
|
switch (i.codec) {
|
|
558
558
|
case "opus":
|
|
559
559
|
return 'audio/mp4; codecs="opus"';
|
|
@@ -569,12 +569,12 @@ const xA = (i) => "width" in i && typeof i.width == "number", vA = (i) => !xA(i)
|
|
|
569
569
|
}, IA = () => Number.MAX_SAFE_INTEGER, ue = () => ({
|
|
570
570
|
width: Number.MAX_SAFE_INTEGER,
|
|
571
571
|
height: Number.MAX_SAFE_INTEGER
|
|
572
|
-
}),
|
|
573
|
-
var
|
|
574
|
-
class
|
|
572
|
+
}), vt = (i) => !(typeof i != "object" || i === null || !("type" in i));
|
|
573
|
+
var Fe = /* @__PURE__ */ ((i) => (i.TRACE = "trace", i.DEBUG = "debug", i.INFO = "info", i.WARN = "warn", i.ERROR = "error", i.CRITICAL = "critical", i))(Fe || {});
|
|
574
|
+
class gt {
|
|
575
575
|
constructor(A) {
|
|
576
576
|
t(this, "options");
|
|
577
|
-
t(this, "getLogger", (A) => new
|
|
577
|
+
t(this, "getLogger", (A) => new gt(b(r({}, this.options), {
|
|
578
578
|
parent: this,
|
|
579
579
|
category: A
|
|
580
580
|
})));
|
|
@@ -592,7 +592,7 @@ class it {
|
|
|
592
592
|
this.options = A;
|
|
593
593
|
}
|
|
594
594
|
}
|
|
595
|
-
const
|
|
595
|
+
const Kg = {
|
|
596
596
|
sizeBasedResolutionCapEnabled: !0,
|
|
597
597
|
pictureInPictureEnabled: !0,
|
|
598
598
|
abrEnabled: !0,
|
|
@@ -602,7 +602,7 @@ const Tg = {
|
|
|
602
602
|
muted: !1,
|
|
603
603
|
minBufferTime: 1500,
|
|
604
604
|
maxBufferTime: 1500,
|
|
605
|
-
logLevel:
|
|
605
|
+
logLevel: Fe.CRITICAL,
|
|
606
606
|
maxSize: ue(),
|
|
607
607
|
maxVideoBitRate: IA(),
|
|
608
608
|
maxAudioBitRate: IA(),
|
|
@@ -621,8 +621,8 @@ const Tg = {
|
|
|
621
621
|
height: 1280
|
|
622
622
|
}
|
|
623
623
|
}
|
|
624
|
-
},
|
|
625
|
-
class
|
|
624
|
+
}, Yg = "connection_failed", xg = "connection_failed_will_not_attempt_again", Wg = "authentication_error", Vg = "authentication_expired", Zg = "channel_not_found", Og = "no_incoming_data_error", Xg = "connection_inactivity", zg = "missing_init_segment", jg = "no_track_context", _g = "invalid_track_context_state", $g = "disconnected_by_edge", As = "decoder_error", es = "audio_player_error", ts = "media_source_error", is = "webgl_context_lost_error", gs = "access_forbidden";
|
|
625
|
+
class p extends Error {
|
|
626
626
|
constructor(e, g, s = {}) {
|
|
627
627
|
super(e);
|
|
628
628
|
t(this, "props");
|
|
@@ -649,50 +649,50 @@ class F extends Error {
|
|
|
649
649
|
this.props = g, this.extra = s, Object.setPrototypeOf(this, new.target.prototype);
|
|
650
650
|
}
|
|
651
651
|
}
|
|
652
|
-
const
|
|
652
|
+
const ss = (i, A) => new p(
|
|
653
653
|
"MediaElement Error",
|
|
654
654
|
{ isFatal: i, code: "media_element_error", source: A },
|
|
655
655
|
{ mediaErrorCode: A.code }
|
|
656
|
-
),
|
|
656
|
+
), eg = (i, A) => new p("Decoder Error", { isFatal: i, code: As, source: A, type: "internal" }), tg = (i, A) => new p("Audio Player Error", { isFatal: i, code: es, source: A, type: "internal" }), Is = (i, A) => new p(`No init segment for rendition id ${i} for channel ${A}`, {
|
|
657
657
|
isFatal: !1,
|
|
658
|
-
code:
|
|
658
|
+
code: zg,
|
|
659
659
|
type: "internal"
|
|
660
|
-
}),
|
|
660
|
+
}), Nt = (i, A, e, g) => new p(
|
|
661
661
|
"MediaSource Error",
|
|
662
|
-
{ isFatal: i, code:
|
|
662
|
+
{ isFatal: i, code: ts, source: A, type: "internal" },
|
|
663
663
|
{ type: g, consecutiveErrorsCount: e }
|
|
664
|
-
),
|
|
664
|
+
), Pe = (i, A) => new p(`No track context for ${i}${A ? `, rendition id ${A}` : ""}`, {
|
|
665
665
|
isFatal: !1,
|
|
666
|
-
code:
|
|
666
|
+
code: jg,
|
|
667
667
|
type: "internal"
|
|
668
|
-
}),
|
|
668
|
+
}), Bs = (i, A) => new p(
|
|
669
669
|
`Track context is in an invalid state for ${i}${A ? `, rendition id ${A}` : ""}`,
|
|
670
670
|
{
|
|
671
671
|
isFatal: !1,
|
|
672
|
-
code:
|
|
672
|
+
code: _g,
|
|
673
673
|
type: "internal"
|
|
674
674
|
}
|
|
675
|
-
),
|
|
675
|
+
), ns = () => new p("Web Audio Context resume timeout", { isFatal: !1, code: "web_audio_context_resume_timeout" }), JA = (i) => new p("Disconnected From Edge Server", {
|
|
676
676
|
type: "external",
|
|
677
677
|
source: i,
|
|
678
678
|
isFatal: !1,
|
|
679
|
-
code:
|
|
680
|
-
}), me = (i) => new
|
|
679
|
+
code: $g
|
|
680
|
+
}), me = (i) => new p("Authentication Failed", { isFatal: !0, code: Wg, source: i }), os = (i) => new p("Authentication Expired", { isFatal: !0, code: Vg, source: i }), Cs = (i, A) => new p("Connection closed due to inactivity", { isFatal: !1, code: Xg, source: A, type: i }), ig = (i, A) => new p("Channel not found", { isFatal: !1, code: Zg, source: A, type: i }), Qs = (i) => new p("No Incoming Data", { isFatal: !1, code: Og, source: i }), as = (i) => new p("Connection attempt failed", {
|
|
681
681
|
isFatal: !1,
|
|
682
|
-
code:
|
|
682
|
+
code: Yg,
|
|
683
683
|
source: i
|
|
684
|
-
}),
|
|
684
|
+
}), Es = () => new p("Connection failed - no more reconnect attempts", {
|
|
685
685
|
isFatal: !0,
|
|
686
|
-
code:
|
|
687
|
-
}),
|
|
688
|
-
if (!
|
|
689
|
-
throw new
|
|
686
|
+
code: xg
|
|
687
|
+
}), rs = (i) => new p("WebGL Context Lost", { isFatal: !1, code: is, source: i, type: "internal" }), Ht = (i) => new p(i, { isFatal: !1, code: gs }), Mt = (i, A) => i && typeof i == "object" && A in i, gg = (i) => !(typeof i != "object" || !Mt(i, "channelId") || typeof i.channelId != "string" || !Mt(i, "url") || typeof i.url != "string" || i.channelId.length === 0 || i.url.length === 0), hs = (i) => {
|
|
688
|
+
if (!gg(i))
|
|
689
|
+
throw new p("Invalid options", { isFatal: !0, code: "invalid_options" });
|
|
690
690
|
const A = r({}, i);
|
|
691
691
|
return Object.keys(A).forEach((e) => {
|
|
692
692
|
const g = A;
|
|
693
693
|
typeof g[e] == "undefined" && delete g[e];
|
|
694
694
|
}), A;
|
|
695
|
-
},
|
|
695
|
+
}, cs = (i) => {
|
|
696
696
|
switch (i) {
|
|
697
697
|
case "h264":
|
|
698
698
|
case "av1":
|
|
@@ -704,28 +704,28 @@ const is = (i, A) => new F(
|
|
|
704
704
|
default:
|
|
705
705
|
throw new Error("Unknown codec");
|
|
706
706
|
}
|
|
707
|
-
},
|
|
707
|
+
}, ds = 7, ls = 8, us = (i) => {
|
|
708
708
|
const A = i.getUint32(0, !1), e = i.getUint8(0) << 16 | i.getUint16(1, !1);
|
|
709
709
|
let g = 0;
|
|
710
710
|
return e === 1 ? g += 3 : A === 1 && (g += 4), g;
|
|
711
|
-
},
|
|
711
|
+
}, ms = (i) => us(new DataView(i, 0)) !== 0, Pt = (i, A = 0) => {
|
|
712
712
|
for (let e = A; e < i.byteLength - 4; e++) {
|
|
713
713
|
const g = i.getUint32(e) === 1, s = (i.getUint8(e) << 16 | i.getUint16(e + 1)) === 1;
|
|
714
714
|
if (g || s)
|
|
715
715
|
return { position: e, nalPrefixSize: g ? 4 : 3 };
|
|
716
716
|
}
|
|
717
|
-
},
|
|
717
|
+
}, ws = (i) => i & 31, Ss = (i, A) => {
|
|
718
718
|
const e = new DataView(i, 0);
|
|
719
|
-
let g =
|
|
719
|
+
let g = Pt(e);
|
|
720
720
|
for (; g; ) {
|
|
721
|
-
const { position: s, nalPrefixSize: I } = g, B =
|
|
721
|
+
const { position: s, nalPrefixSize: I } = g, B = Pt(e, s + 4), n = B ? B.position - s - I : void 0;
|
|
722
722
|
if (!A(new DataView(i, s + I, n), I))
|
|
723
723
|
return;
|
|
724
724
|
g = B;
|
|
725
725
|
}
|
|
726
|
-
},
|
|
726
|
+
}, sg = (i) => {
|
|
727
727
|
const A = [], e = [];
|
|
728
|
-
if (!
|
|
728
|
+
if (!ms(i)) {
|
|
729
729
|
const g = new DataView(i, 0), s = g.getUint8(5) & 31;
|
|
730
730
|
let I = 6;
|
|
731
731
|
for (let n = 0; n < s; n++) {
|
|
@@ -743,21 +743,21 @@ const is = (i, A) => new F(
|
|
|
743
743
|
pictureParameterSets: e
|
|
744
744
|
};
|
|
745
745
|
}
|
|
746
|
-
return
|
|
746
|
+
return Ss(i, (g) => {
|
|
747
747
|
const s = g.byteOffset + g.byteLength;
|
|
748
|
-
switch (
|
|
749
|
-
case
|
|
748
|
+
switch (ws(g.getUint8(0))) {
|
|
749
|
+
case ls:
|
|
750
750
|
e.push(g.buffer.slice(g.byteOffset, s));
|
|
751
751
|
break;
|
|
752
|
-
case
|
|
752
|
+
case ds:
|
|
753
753
|
A.push(g.buffer.slice(g.byteOffset, s));
|
|
754
754
|
break;
|
|
755
755
|
}
|
|
756
756
|
return !0;
|
|
757
757
|
}), { sequenceParameterSets: A, pictureParameterSets: e };
|
|
758
|
-
},
|
|
759
|
-
var
|
|
760
|
-
const A = new DataView(i), e = A.getUint8(1), g = A.getUint8(2), s = A.getUint8(3), I = new
|
|
758
|
+
}, Ds = (i) => {
|
|
759
|
+
var l;
|
|
760
|
+
const A = new DataView(i), e = A.getUint8(1), g = A.getUint8(2), s = A.getUint8(3), I = new _i(i, 4 * 8);
|
|
761
761
|
I.readUnsignedExpGolomb();
|
|
762
762
|
let B = 1;
|
|
763
763
|
switch (e) {
|
|
@@ -798,19 +798,19 @@ const is = (i, A) => new F(
|
|
|
798
798
|
const D = B == 1 ? 1 : 0, q = 1 << (B == 1 || B == 2 ? 1 : 0), H = 2 - a << D, G = I.readUnsignedExpGolomb() * q, K = I.readUnsignedExpGolomb() * q, T = I.readUnsignedExpGolomb() * H, Y = I.readUnsignedExpGolomb() * H;
|
|
799
799
|
Q -= G + K, h -= T + Y;
|
|
800
800
|
}
|
|
801
|
-
let
|
|
801
|
+
let u = {
|
|
802
802
|
numerator: 1,
|
|
803
803
|
denumerator: 1
|
|
804
804
|
};
|
|
805
|
-
return I.readBit() && I.readBit() && (
|
|
805
|
+
return I.readBit() && I.readBit() && (u = (l = fs[I.readBits(8)]) != null ? l : { numerator: 0, denumerator: 0 }), {
|
|
806
806
|
width: Q,
|
|
807
807
|
height: h,
|
|
808
|
-
pixelAspectRatio:
|
|
808
|
+
pixelAspectRatio: u,
|
|
809
809
|
profileIdc: e,
|
|
810
810
|
constraintFlags: g,
|
|
811
811
|
levelIdc: s
|
|
812
812
|
};
|
|
813
|
-
},
|
|
813
|
+
}, fs = [
|
|
814
814
|
{ numerator: 0, denumerator: 0 },
|
|
815
815
|
{ numerator: 1, denumerator: 1 },
|
|
816
816
|
{ numerator: 12, denumerator: 11 },
|
|
@@ -868,40 +868,40 @@ const is = (i, A) => new F(
|
|
|
868
868
|
tfdt: d("tfdt"),
|
|
869
869
|
trun: d("trun"),
|
|
870
870
|
mdat: d("mdat")
|
|
871
|
-
},
|
|
871
|
+
}, ps = 1e3, WA = d("iso6"), qt = new Uint8Array([0, 0, 2, 0]), Fs = [
|
|
872
872
|
WA,
|
|
873
873
|
new Uint8Array([105, 115, 111, 109]),
|
|
874
874
|
new Uint8Array([105, 115, 111, 50]),
|
|
875
875
|
new Uint8Array([97, 118, 99, 49]),
|
|
876
876
|
new Uint8Array([109, 112, 52, 49])
|
|
877
|
-
],
|
|
877
|
+
], ys = [
|
|
878
878
|
WA,
|
|
879
879
|
new Uint8Array([105, 115, 111, 109]),
|
|
880
880
|
new Uint8Array([105, 115, 111, 50]),
|
|
881
881
|
new Uint8Array([97, 118, 48, 49]),
|
|
882
882
|
new Uint8Array([109, 112, 52, 49])
|
|
883
|
-
],
|
|
883
|
+
], Rs = [
|
|
884
884
|
WA,
|
|
885
885
|
new Uint8Array([105, 115, 111, 109]),
|
|
886
886
|
new Uint8Array([105, 115, 111, 50]),
|
|
887
887
|
new Uint8Array([109, 112, 52, 49])
|
|
888
888
|
];
|
|
889
|
-
class
|
|
889
|
+
class Ig {
|
|
890
890
|
constructor() {
|
|
891
|
-
t(this, "writer", new
|
|
891
|
+
t(this, "writer", new yg());
|
|
892
892
|
}
|
|
893
893
|
}
|
|
894
894
|
const J = (i, A, e) => {
|
|
895
895
|
i.writer.writeUint32(e + 8), i.writer.writeBytes(A);
|
|
896
896
|
}, P = (i, A, e, g, s) => {
|
|
897
897
|
J(i, A, e + 4), i.writer.writeUint8(g), i.writer.writeUint24(s);
|
|
898
|
-
},
|
|
898
|
+
}, qe = (i, A) => {
|
|
899
899
|
J(
|
|
900
900
|
i,
|
|
901
901
|
y.ftyp,
|
|
902
|
-
WA.byteLength +
|
|
903
|
-
), i.writer.writeBytes(WA), i.writer.writeBytes(
|
|
904
|
-
},
|
|
902
|
+
WA.byteLength + qt.byteLength + A.reduce((e, g) => e + g.byteLength, 0)
|
|
903
|
+
), i.writer.writeBytes(WA), i.writer.writeBytes(qt), A.forEach((e) => i.writer.writeBytes(e));
|
|
904
|
+
}, Gs = (i, A, e) => {
|
|
905
905
|
P(i, y.mvhd, 96, 0, 0), i.writer.writeUint32(0), i.writer.writeUint32(0), i.writer.writeUint32(e), i.writer.writeUint32(A), i.writer.writeUint32(65536), i.writer.writeUint16(256), i.writer.writeBytes(new Uint8Array([
|
|
906
906
|
0,
|
|
907
907
|
0,
|
|
@@ -974,7 +974,7 @@ const J = (i, A, e) => {
|
|
|
974
974
|
0,
|
|
975
975
|
0
|
|
976
976
|
])), i.writer.writeUint32(2);
|
|
977
|
-
},
|
|
977
|
+
}, Bg = (i) => "sequenceParameterSets" in i, At = (i) => "sequenceHeader" in i, cA = (i) => i.type == "video", NA = (i) => i.type == "audio", ks = (i, A, e) => {
|
|
978
978
|
const g = i.writer.position();
|
|
979
979
|
P(i, y.tkhd, 0, 0, 3), i.writer.writeUint32(0), i.writer.writeUint32(0), i.writer.writeUint32(A.trackId), i.writer.writeUint32(0), i.writer.writeUint32(A.duration * e / A.timescale), i.writer.writeUint32(0), i.writer.writeUint32(0), i.writer.writeUint16(0), i.writer.writeUint16(NA(A) ? 1 : 0), i.writer.writeUint16(NA(A) ? 256 : 0), i.writer.writeUint16(0), i.writer.writeBytes(new Uint8Array(
|
|
980
980
|
[
|
|
@@ -1016,24 +1016,24 @@ const J = (i, A, e) => {
|
|
|
1016
1016
|
0
|
|
1017
1017
|
]
|
|
1018
1018
|
)), cA(A) ? (i.writer.writeUint32(A.width * 65536), i.writer.writeUint32(A.height * 65536)) : NA(A) && (i.writer.writeUint32(0), i.writer.writeUint32(0)), i.writer.writeUint32At(g, i.writer.position() - g);
|
|
1019
|
-
},
|
|
1019
|
+
}, Us = (i, A) => {
|
|
1020
1020
|
P(i, y.mdhd, 20, 0, 0), i.writer.writeUint32(0), i.writer.writeUint32(0), i.writer.writeUint32(A.timescale), i.writer.writeUint32(A.duration);
|
|
1021
1021
|
const e = A.lang || "und", g = (e.charCodeAt(0) & 31) << 10 | (e.charCodeAt(1) & 31) << 5 | e.charCodeAt(2) & 31;
|
|
1022
1022
|
i.writer.writeUint16(g), i.writer.writeUint16(0);
|
|
1023
|
-
},
|
|
1023
|
+
}, bs = (i, A) => {
|
|
1024
1024
|
const e = i.writer.position();
|
|
1025
1025
|
P(i, y.hdlr, 0, 0, 0), i.writer.writeUint32(0), i.writer.writeBytes(d(cA(A) ? "vide" : "soun")), i.writer.writeUint32(0), i.writer.writeUint32(0), i.writer.writeUint32(0), i.writer.writeBytes(d(cA(A) ? "VideoHandler\0" : "SoundHandler\0")), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1026
|
-
},
|
|
1026
|
+
}, Js = (i) => {
|
|
1027
1027
|
const A = i.writer.position();
|
|
1028
1028
|
J(i, y.dinf, 0), P(i, y.dref, 16, 0, 0), i.writer.writeUint32(1), P(i, d("url "), 0, 0, 1), i.writer.writeUint32At(A, i.writer.position() - A);
|
|
1029
|
-
},
|
|
1029
|
+
}, Ls = (i, A) => {
|
|
1030
1030
|
const e = i.writer.position();
|
|
1031
1031
|
J(i, y.avcC, 0), i.writer.writeUint8(1), i.writer.writeUint8(A.sequenceParameterSets[0][1]), i.writer.writeUint8(A.sequenceParameterSets[0][2]), i.writer.writeUint8(A.sequenceParameterSets[0][3]), i.writer.writeUint8(255), i.writer.writeUint8(224 | A.sequenceParameterSets.length), A.sequenceParameterSets.forEach((g) => {
|
|
1032
1032
|
i.writer.writeUint16(g.byteLength), i.writer.writeBytes(g);
|
|
1033
1033
|
}), i.writer.writeUint8(A.pictureParameterSets.length), A.pictureParameterSets.forEach((g) => {
|
|
1034
1034
|
i.writer.writeUint16(g.byteLength), i.writer.writeBytes(g);
|
|
1035
1035
|
}), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1036
|
-
},
|
|
1036
|
+
}, vs = (i, A) => {
|
|
1037
1037
|
var n, o;
|
|
1038
1038
|
const e = i.writer.position();
|
|
1039
1039
|
J(i, y.av1C, 0);
|
|
@@ -1041,20 +1041,20 @@ const J = (i, A, e) => {
|
|
|
1041
1041
|
i.writer.writeUint8(129), i.writer.writeUint8(g << 5 | ((n = B == null ? void 0 : B.seqLevelIdx) != null ? n : 0)), i.writer.writeUint8(
|
|
1042
1042
|
((o = B == null ? void 0 : B.tier) != null ? o : 0 << 7) | (I.highBitDepth ? 1 : 0 << 6) | (I.bitDepth === 12 ? 1 : 0) << 5 | (I.monoChrome ? 1 : 0) << 4 | I.subsamplingX << 3 | I.subsamplingY << 2 | I.chromaSamplePosition & 65535
|
|
1043
1043
|
), i.writer.writeUint8(0), i.writer.writeBytes(A.sequenceHeader), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1044
|
-
},
|
|
1045
|
-
const e = i.writer.position(), g =
|
|
1046
|
-
J(i, g, 0), i.writer.writeUint32(0), i.writer.writeUint16(0), i.writer.writeUint16(1), i.writer.writeUint16(0), i.writer.writeUint16(0), i.writer.writeUint32(0), i.writer.writeUint32(0), i.writer.writeUint32(0), i.writer.writeUint16(A.width), i.writer.writeUint16(A.height), i.writer.writeUint32(4718592), i.writer.writeUint32(4718592), i.writer.writeUint32(0), i.writer.writeUint16(1), i.writer.writeUint8(0), i.writer.writeBytes(new Uint8Array(31)), i.writer.writeUint16(24), i.writer.writeUint16(-1),
|
|
1044
|
+
}, Ns = (i, A) => {
|
|
1045
|
+
const e = i.writer.position(), g = At(A) ? y.av01 : y.avc1;
|
|
1046
|
+
J(i, g, 0), i.writer.writeUint32(0), i.writer.writeUint16(0), i.writer.writeUint16(1), i.writer.writeUint16(0), i.writer.writeUint16(0), i.writer.writeUint32(0), i.writer.writeUint32(0), i.writer.writeUint32(0), i.writer.writeUint16(A.width), i.writer.writeUint16(A.height), i.writer.writeUint32(4718592), i.writer.writeUint32(4718592), i.writer.writeUint32(0), i.writer.writeUint16(1), i.writer.writeUint8(0), i.writer.writeBytes(new Uint8Array(31)), i.writer.writeUint16(24), i.writer.writeUint16(-1), Bg(A) ? Ls(i, A) : At(A) && (vs(i, A), A.parsedSequenceHeader.colorConfig && (J(i, d("colr"), 11), i.writer.writeBytes(y.nclx), i.writer.writeUint16(A.parsedSequenceHeader.colorConfig.colorPrimaries), i.writer.writeUint16(A.parsedSequenceHeader.colorConfig.transferCharacteristics), i.writer.writeUint16(A.parsedSequenceHeader.colorConfig.matrixCoefficients), i.writer.writeUint8(A.parsedSequenceHeader.colorConfig.colorRange ? 1 : 0 << 7))), A.pixelAspectRatio && (J(i, d("pasp"), 8), i.writer.writeUint32(A.pixelAspectRatio.numerator), i.writer.writeUint32(A.pixelAspectRatio.denumerator)), A.bitrate && (J(i, d("btrt"), 12), i.writer.writeUint32(0), i.writer.writeUint32(A.bitrate), i.writer.writeUint32(A.bitrate)), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1047
1047
|
}, jA = (i, A, e) => {
|
|
1048
1048
|
let g = 3;
|
|
1049
1049
|
for (i.writer.writeUint8(A); g > 0; g--)
|
|
1050
1050
|
i.writer.writeUint8(e >> 7 * g | 128);
|
|
1051
1051
|
i.writer.writeUint8(e & 127);
|
|
1052
|
-
},
|
|
1052
|
+
}, Hs = (i, A) => {
|
|
1053
1053
|
const e = A.decoderConfig.byteLength > 0 ? A.decoderConfig.byteLength + 5 : 0, g = i.writer.position();
|
|
1054
1054
|
P(i, y.esds, 0, 0, 0), jA(i, 3, 3 + 5 + 13 + e + 5 + 1), i.writer.writeUint16(A.trackId), i.writer.writeUint8(0), jA(i, 4, 13 + e);
|
|
1055
1055
|
const s = A.codec === "mp3" && A.sampleRate > 24e3 ? 107 : 64;
|
|
1056
1056
|
i.writer.writeUint8(s), i.writer.writeUint8(21), i.writer.writeUint24(0), i.writer.writeUint32(A.bitrate || 0), i.writer.writeUint32(A.bitrate || 0), A.decoderConfig.byteLength > 0 && (jA(i, 5, A.decoderConfig.byteLength), i.writer.writeBytes(A.decoderConfig)), jA(i, 6, 1), i.writer.writeUint8(2), i.writer.writeUint32At(g, i.writer.position() - g);
|
|
1057
|
-
},
|
|
1057
|
+
}, Ms = (i) => {
|
|
1058
1058
|
switch (i) {
|
|
1059
1059
|
case "aac":
|
|
1060
1060
|
case "mp3":
|
|
@@ -1062,93 +1062,93 @@ const J = (i, A, e) => {
|
|
|
1062
1062
|
case "opus":
|
|
1063
1063
|
return "Opus";
|
|
1064
1064
|
}
|
|
1065
|
-
},
|
|
1065
|
+
}, Ps = (i, A) => {
|
|
1066
1066
|
const e = i.writer.position();
|
|
1067
1067
|
J(i, d("dOps"), 0), i.writer.writeUint8(0);
|
|
1068
1068
|
const g = A.decoderConfig, s = new DataView(g.buffer, g.byteOffset, g.byteLength);
|
|
1069
1069
|
i.writer.writeUint8(s.getUint8(9)), i.writer.writeUint16(s.getUint16(10, !0)), i.writer.writeUint32(s.getUint32(12, !0)), i.writer.writeUint16(s.getUint16(16, !0)), i.writer.writeBytes(A.decoderConfig.slice(18)), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1070
|
-
},
|
|
1070
|
+
}, qs = (i, A) => {
|
|
1071
1071
|
const e = i.writer.position();
|
|
1072
|
-
switch (J(i, d(
|
|
1072
|
+
switch (J(i, d(Ms(A.codec)), 0), i.writer.writeUint32(0), i.writer.writeUint16(0), i.writer.writeUint16(1), i.writer.writeUint16(0), i.writer.writeUint16(0), i.writer.writeUint32(0), i.writer.writeUint16(A.channelCount), i.writer.writeUint16(16), i.writer.writeUint32(0), i.writer.writeUint16(A.sampleRate), i.writer.writeUint16(0), A.codec) {
|
|
1073
1073
|
case "aac":
|
|
1074
1074
|
case "mp3":
|
|
1075
|
-
|
|
1075
|
+
Hs(i, A);
|
|
1076
1076
|
break;
|
|
1077
1077
|
case "opus":
|
|
1078
|
-
|
|
1078
|
+
Ps(i, A);
|
|
1079
1079
|
break;
|
|
1080
1080
|
}
|
|
1081
1081
|
A.bitrate && (J(i, d("btrt"), 12), i.writer.writeUint32(0), i.writer.writeUint32(A.bitrate), i.writer.writeUint32(A.bitrate)), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1082
|
-
},
|
|
1082
|
+
}, Ts = (i, A) => {
|
|
1083
1083
|
const e = i.writer.position();
|
|
1084
1084
|
J(i, y.stbl, 0);
|
|
1085
1085
|
const g = i.writer.position();
|
|
1086
|
-
P(i, y.stsd, 0, 0, 0), i.writer.writeUint32(1), cA(A) ?
|
|
1087
|
-
},
|
|
1086
|
+
P(i, y.stsd, 0, 0, 0), i.writer.writeUint32(1), cA(A) ? Ns(i, A) : NA(A) && qs(i, A), i.writer.writeUint32At(g, i.writer.position() - g), P(i, d("stts"), 4, 0, 0), i.writer.writeUint32(0), P(i, d("stsc"), 4, 0, 0), i.writer.writeUint32(0), P(i, d("stsz"), 8, 0, 0), i.writer.writeUint32(0), i.writer.writeUint32(0), P(i, d("stco"), 4, 0, 0), i.writer.writeUint32(0), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1087
|
+
}, Ks = (i, A) => {
|
|
1088
1088
|
const e = i.writer.position();
|
|
1089
|
-
J(i, y.minf, 0), cA(A) ? (P(i, y.vmhd, 8, 0, 1), i.writer.writeUint32(0), i.writer.writeUint32(0)) : NA(A) && (P(i, y.smhd, 4, 0, 0), i.writer.writeUint16(0), i.writer.writeUint16(0)),
|
|
1090
|
-
},
|
|
1089
|
+
J(i, y.minf, 0), cA(A) ? (P(i, y.vmhd, 8, 0, 1), i.writer.writeUint32(0), i.writer.writeUint32(0)) : NA(A) && (P(i, y.smhd, 4, 0, 0), i.writer.writeUint16(0), i.writer.writeUint16(0)), Js(i), Ts(i, A), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1090
|
+
}, Ys = (i, A) => {
|
|
1091
1091
|
const e = i.writer.position();
|
|
1092
|
-
J(i, y.mdia, 0),
|
|
1093
|
-
},
|
|
1092
|
+
J(i, y.mdia, 0), Us(i, A), bs(i, A), Ks(i, A), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1093
|
+
}, xs = (i, A, e) => {
|
|
1094
1094
|
const g = i.writer.position();
|
|
1095
|
-
J(i, y.trak, 0),
|
|
1096
|
-
},
|
|
1095
|
+
J(i, y.trak, 0), ks(i, A, e), Ys(i, A), i.writer.writeUint32At(g, i.writer.position() - g);
|
|
1096
|
+
}, Ws = (i, A) => {
|
|
1097
1097
|
P(i, y.trex, 20, 0, 0), i.writer.writeUint32(A.trackId), i.writer.writeUint32(1), i.writer.writeUint32(0), i.writer.writeUint32(0), i.writer.writeUint32(0);
|
|
1098
|
-
},
|
|
1098
|
+
}, Vs = (i, A) => {
|
|
1099
1099
|
const e = i.writer.position();
|
|
1100
|
-
J(i, y.mvex, 0), A.forEach((g) =>
|
|
1101
|
-
},
|
|
1100
|
+
J(i, y.mvex, 0), A.forEach((g) => Ws(i, g)), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1101
|
+
}, Zs = (i, A, e) => {
|
|
1102
1102
|
const g = i.writer.position();
|
|
1103
1103
|
J(i, d(A), 0), J(i, d("data"), 0), i.writer.writeUint32(1), i.writer.writeUint32(0), i.writer.writeBytes(d(e)), i.writer.writeUint32At(g, i.writer.position() - g), i.writer.writeUint32At(g + 8, i.writer.position() - g - 8);
|
|
1104
|
-
},
|
|
1104
|
+
}, Os = (i, A) => {
|
|
1105
1105
|
const e = i.writer.position();
|
|
1106
1106
|
P(i, y.meta, 0, 0, 0);
|
|
1107
1107
|
const g = i.writer.position();
|
|
1108
1108
|
J(i, y.hdlr, 25), i.writer.writeUint32(0), i.writer.writeUint32(0), i.writer.writeBytes(d("mdir")), i.writer.writeBytes(d("appl")), i.writer.writeUint32(0), i.writer.writeUint32(0), i.writer.writeUint8(0), i.writer.writeUint32At(g, i.writer.position() - g);
|
|
1109
1109
|
const s = i.writer.position();
|
|
1110
|
-
J(i, y.ilst, 0), A == null || A.forEach((I, B) =>
|
|
1111
|
-
},
|
|
1110
|
+
J(i, y.ilst, 0), A == null || A.forEach((I, B) => Zs(i, B, I)), i.writer.writeUint32At(s, i.writer.position() - s), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1111
|
+
}, Xs = (i, A) => {
|
|
1112
1112
|
const e = i.writer.position();
|
|
1113
|
-
J(i, y.udta, 0),
|
|
1114
|
-
},
|
|
1113
|
+
J(i, y.udta, 0), Os(i, A), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1114
|
+
}, zs = (i, A, e, g) => {
|
|
1115
1115
|
const s = i.writer.position();
|
|
1116
|
-
J(i, y.moov, 0),
|
|
1117
|
-
},
|
|
1116
|
+
J(i, y.moov, 0), Gs(i, 0, e), A.forEach((I) => xs(i, I, e)), Vs(i, A), g && Xs(i, g), i.writer.writeUint32At(s, i.writer.position() - s);
|
|
1117
|
+
}, js = (i, A) => {
|
|
1118
1118
|
const e = i.writer.position();
|
|
1119
1119
|
P(i, y.tfhd, 16, 0, 56), i.writer.writeUint32(A.trackId), i.writer.writeUint32(A.defaultDuration || 0), i.writer.writeUint32(A.defaultSize || 0), i.writer.writeUint32(A.defaultFlags || 0), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1120
|
-
},
|
|
1120
|
+
}, _s = (i, A) => {
|
|
1121
1121
|
const e = i.writer.position();
|
|
1122
1122
|
P(i, y.tfdt, 8, 1, 0);
|
|
1123
1123
|
const g = Math.floor(A.timestamp / 4294967296), s = (A.timestamp & 4294967295) >>> 0;
|
|
1124
1124
|
i.writer.writeUint32(g), i.writer.writeUint32(s), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1125
|
-
},
|
|
1126
|
-
const e = A.samples.some((n) => !!n.compositionTimeOffset), g =
|
|
1125
|
+
}, $s = (i, A) => {
|
|
1126
|
+
const e = A.samples.some((n) => !!n.compositionTimeOffset), g = Tt(A.samples[0]) !== A.defaultFlags;
|
|
1127
1127
|
let s = 1;
|
|
1128
1128
|
g && (s |= 4), e && (s |= 2048);
|
|
1129
1129
|
const I = i.writer.position();
|
|
1130
1130
|
P(i, y.trun, 16, 1, s), i.writer.writeUint32(A.samples.length);
|
|
1131
1131
|
const B = i.writer.position();
|
|
1132
|
-
i.writer.writeUint32(0), g && i.writer.writeUint32(
|
|
1133
|
-
},
|
|
1132
|
+
i.writer.writeUint32(0), g && i.writer.writeUint32(Tt(A.samples[0])), e && A.samples.forEach((n) => i.writer.writeUint32(n.compositionTimeOffset || 0)), i.writer.writeUint32At(B, i.writer.position() + 8), i.writer.writeUint32At(I, i.writer.position() - I);
|
|
1133
|
+
}, Tt = (i) => i.isSync ? 33554432 : 16842752, AI = (i, A) => {
|
|
1134
1134
|
const e = i.writer.position();
|
|
1135
|
-
J(i, y.traf, 0),
|
|
1136
|
-
},
|
|
1135
|
+
J(i, y.traf, 0), js(i, A), _s(i, A), $s(i, A), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1136
|
+
}, eI = (i, A) => {
|
|
1137
1137
|
P(i, y.mfhd, 4, 0, 0), i.writer.writeUint32(A);
|
|
1138
|
-
},
|
|
1138
|
+
}, tI = (i, A) => {
|
|
1139
1139
|
const e = i.writer.position();
|
|
1140
|
-
J(i, y.moof, 0),
|
|
1141
|
-
},
|
|
1140
|
+
J(i, y.moof, 0), eI(i, A.sequenceNumber), AI(i, A), i.writer.writeUint32At(e, i.writer.position() - e);
|
|
1141
|
+
}, iI = (i, A) => {
|
|
1142
1142
|
J(i, y.mdat, A.samples[0].data.length), i.writer.writeBytes(A.samples[0].data);
|
|
1143
|
-
},
|
|
1144
|
-
const e = new
|
|
1145
|
-
return i.filter((I) => cA(I) &&
|
|
1146
|
-
},
|
|
1147
|
-
const A = new
|
|
1143
|
+
}, ye = (i, A) => {
|
|
1144
|
+
const e = new Ig(), g = i.filter((I) => cA(I) && Bg(I)).length > 0;
|
|
1145
|
+
return i.filter((I) => cA(I) && At(I)).length > 0 ? qe(e, ys) : g ? qe(e, Fs) : qe(e, Rs), zs(e, i, ps, A), e.writer.buffer();
|
|
1146
|
+
}, Re = (i) => {
|
|
1147
|
+
const A = new Ig();
|
|
1148
1148
|
if (i.samples.length !== 1)
|
|
1149
1149
|
throw new Error("Only one sample is supported");
|
|
1150
|
-
return
|
|
1151
|
-
},
|
|
1150
|
+
return tI(A, i), iI(A, i), A.writer.buffer();
|
|
1151
|
+
}, gI = ({ isSync: i, timestamp: A, data: e, duration: g }, s) => Re({
|
|
1152
1152
|
trackId: 1,
|
|
1153
1153
|
timestamp: A,
|
|
1154
1154
|
sequenceNumber: s,
|
|
@@ -1162,7 +1162,7 @@ const J = (i, A, e) => {
|
|
|
1162
1162
|
duration: g
|
|
1163
1163
|
}
|
|
1164
1164
|
]
|
|
1165
|
-
}),
|
|
1165
|
+
}), sI = (i, A, e, g) => ye([
|
|
1166
1166
|
{
|
|
1167
1167
|
type: "audio",
|
|
1168
1168
|
codec: "aac",
|
|
@@ -1173,12 +1173,12 @@ const J = (i, A, e) => {
|
|
|
1173
1173
|
duration: 0,
|
|
1174
1174
|
trackId: 1
|
|
1175
1175
|
}
|
|
1176
|
-
]),
|
|
1177
|
-
const { sequenceParameterSets: A, pictureParameterSets: e } =
|
|
1176
|
+
]), ng = (i) => {
|
|
1177
|
+
const { sequenceParameterSets: A, pictureParameterSets: e } = sg(i), g = A[0], s = e[0];
|
|
1178
1178
|
if (!g || !s)
|
|
1179
1179
|
throw new Error("No sps or pps provided");
|
|
1180
|
-
return
|
|
1181
|
-
},
|
|
1180
|
+
return Ds(g);
|
|
1181
|
+
}, II = ({ isSync: i, timestamp: A, data: e, duration: g, compositionTimeOffset: s }, I) => Re({
|
|
1182
1182
|
trackId: 1,
|
|
1183
1183
|
timestamp: A,
|
|
1184
1184
|
sequenceNumber: I,
|
|
@@ -1193,9 +1193,9 @@ const J = (i, A, e) => {
|
|
|
1193
1193
|
compositionTimeOffset: s
|
|
1194
1194
|
}
|
|
1195
1195
|
]
|
|
1196
|
-
}),
|
|
1197
|
-
const { sequenceParameterSets: e, pictureParameterSets: g } =
|
|
1198
|
-
return
|
|
1196
|
+
}), BI = (i, A) => {
|
|
1197
|
+
const { sequenceParameterSets: e, pictureParameterSets: g } = sg(i), s = ng(i);
|
|
1198
|
+
return ye([
|
|
1199
1199
|
{
|
|
1200
1200
|
type: "video",
|
|
1201
1201
|
sequenceParameterSets: e.map((I) => new Uint8Array(I)),
|
|
@@ -1207,7 +1207,7 @@ const J = (i, A, e) => {
|
|
|
1207
1207
|
trackId: 1
|
|
1208
1208
|
}
|
|
1209
1209
|
]);
|
|
1210
|
-
},
|
|
1210
|
+
}, nI = (i, A, e) => ye([
|
|
1211
1211
|
{
|
|
1212
1212
|
type: "audio",
|
|
1213
1213
|
trackId: 1,
|
|
@@ -1218,7 +1218,7 @@ const J = (i, A, e) => {
|
|
|
1218
1218
|
duration: 0,
|
|
1219
1219
|
sampleRate: 48e3
|
|
1220
1220
|
}
|
|
1221
|
-
]),
|
|
1221
|
+
]), oI = ({ isSync: i, timestamp: A, data: e, duration: g }, s) => Re({
|
|
1222
1222
|
trackId: 1,
|
|
1223
1223
|
timestamp: A,
|
|
1224
1224
|
sequenceNumber: s,
|
|
@@ -1232,8 +1232,8 @@ const J = (i, A, e) => {
|
|
|
1232
1232
|
duration: g
|
|
1233
1233
|
}
|
|
1234
1234
|
]
|
|
1235
|
-
}),
|
|
1236
|
-
class
|
|
1235
|
+
}), CI = () => (i) => og(i.buffered.start(0), i.buffered.end(i.buffered.length - 1)), og = (i, A) => (e) => e.remove(Math.max(0, i), Math.min(Number.POSITIVE_INFINITY, A)), QI = (i) => (A) => A.appendBuffer(i), aI = (i) => (A) => A.changeType(i), EI = (i) => (A) => i(A);
|
|
1236
|
+
class rI {
|
|
1237
1237
|
constructor(A) {
|
|
1238
1238
|
t(this, "commandQueue", []);
|
|
1239
1239
|
t(this, "sourceBuffer");
|
|
@@ -1242,11 +1242,11 @@ class aI {
|
|
|
1242
1242
|
this.sourceBuffer.updating || (A = this.commandQueue.shift()) == null || A.execute(this.sourceBuffer);
|
|
1243
1243
|
});
|
|
1244
1244
|
t(this, "appendBuffer", (A) => new Promise((e, g) => {
|
|
1245
|
-
const s = new bA(
|
|
1245
|
+
const s = new bA(QI(A), e, g);
|
|
1246
1246
|
this.commandQueue.push(s), this.handleQueue();
|
|
1247
1247
|
}));
|
|
1248
1248
|
t(this, "execute", (A) => new Promise((e, g) => {
|
|
1249
|
-
const s = new bA(
|
|
1249
|
+
const s = new bA(EI(A), e, g);
|
|
1250
1250
|
this.commandQueue.push(s), this.handleQueue();
|
|
1251
1251
|
}));
|
|
1252
1252
|
t(this, "buffered", () => this.sourceBuffer.buffered);
|
|
@@ -1254,21 +1254,21 @@ class aI {
|
|
|
1254
1254
|
A.removeSourceBuffer(this.sourceBuffer);
|
|
1255
1255
|
});
|
|
1256
1256
|
t(this, "changeType", (A) => new Promise((e, g) => {
|
|
1257
|
-
const s = new bA(
|
|
1257
|
+
const s = new bA(aI(A), e, g);
|
|
1258
1258
|
this.commandQueue.push(s), this.handleQueue();
|
|
1259
1259
|
}));
|
|
1260
1260
|
t(this, "removeBuffer", (A, e) => new Promise((g, s) => {
|
|
1261
|
-
const I = new bA(
|
|
1261
|
+
const I = new bA(og(A, e), g, s);
|
|
1262
1262
|
this.commandQueue.push(I), this.handleQueue();
|
|
1263
1263
|
}));
|
|
1264
1264
|
t(this, "flush", () => new Promise((A, e) => {
|
|
1265
|
-
const g = new bA(
|
|
1265
|
+
const g = new bA(CI, A, e);
|
|
1266
1266
|
this.commandQueue.push(g), this.handleQueue();
|
|
1267
1267
|
}));
|
|
1268
1268
|
this.sourceBuffer = A, this.sourceBuffer.addEventListener("updateend", this.handleQueue);
|
|
1269
1269
|
}
|
|
1270
1270
|
}
|
|
1271
|
-
class
|
|
1271
|
+
class Cg extends z {
|
|
1272
1272
|
constructor() {
|
|
1273
1273
|
super();
|
|
1274
1274
|
t(this, "mediaSource", new MediaSource());
|
|
@@ -1278,7 +1278,7 @@ class og extends z {
|
|
|
1278
1278
|
t(this, "createObjectURL", () => URL.createObjectURL(this.mediaSource));
|
|
1279
1279
|
t(this, "addSourceBuffer", (e) => {
|
|
1280
1280
|
const g = this.mediaSource.addSourceBuffer(e);
|
|
1281
|
-
return new
|
|
1281
|
+
return new rI(g);
|
|
1282
1282
|
});
|
|
1283
1283
|
t(this, "removeSourceBuffer", (e) => {
|
|
1284
1284
|
e.removeFromMediaSource(this.mediaSource);
|
|
@@ -1304,11 +1304,11 @@ class og extends z {
|
|
|
1304
1304
|
this.mediaSource.addEventListener("sourceopen", this.onSourceOpen), this.mediaSource.addEventListener("sourceclose", this.onSourceClosed), this.mediaSource.addEventListener("sourceended", this.onSourceEnded);
|
|
1305
1305
|
}
|
|
1306
1306
|
}
|
|
1307
|
-
t(
|
|
1308
|
-
const
|
|
1309
|
-
const A = new DataView(i, 0), e = A.getUint8(0), g = A.getUint16(1), s = A.getUint8(3), I = A.getUint8(4), B =
|
|
1307
|
+
t(Cg, "isTypeSupported", (e) => MediaSource.isTypeSupported(e));
|
|
1308
|
+
const we = (i) => !!(i & 1), hI = (i) => !!(i & 2), cI = (i) => !!(i & 4), dI = (i) => !!(i & 8), lI = (i) => !!(i & 16), uI = (i) => {
|
|
1309
|
+
const A = new DataView(i, 0), e = A.getUint8(0), g = A.getUint16(1), s = A.getUint8(3), I = A.getUint8(4), B = mI(new Uint8Array(i), 5, 12), n = A.getUint32(13), o = lI(s) ? A.getInt16(17) : void 0, C = i.slice(g);
|
|
1310
1310
|
return { version: e, renditionId: I, flags: s, timestamp: B, timescale: n, payload: C, compositionTimeOffset: o };
|
|
1311
|
-
},
|
|
1311
|
+
}, mI = (i, A, e) => {
|
|
1312
1312
|
let g = 0;
|
|
1313
1313
|
for (let s = A; s <= e; s++)
|
|
1314
1314
|
if (s === A) {
|
|
@@ -1317,10 +1317,10 @@ const qt = (i) => !!(i & 1), EI = (i) => !!(i & 2), rI = (i) => !!(i & 4), hI =
|
|
|
1317
1317
|
} else
|
|
1318
1318
|
g = g * 256 + i[s];
|
|
1319
1319
|
return g;
|
|
1320
|
-
},
|
|
1321
|
-
const A = new
|
|
1322
|
-
return A.peekBit() === 1 && A.readBits(32),
|
|
1323
|
-
},
|
|
1320
|
+
}, Qg = (i) => {
|
|
1321
|
+
const A = new _i(i);
|
|
1322
|
+
return A.peekBit() === 1 && A.readBits(32), DI(A), UI(A);
|
|
1323
|
+
}, wI = (i) => {
|
|
1324
1324
|
let A = 0;
|
|
1325
1325
|
for (let e = 0; e < 8; e++) {
|
|
1326
1326
|
const g = i.readBits(8);
|
|
@@ -1328,37 +1328,37 @@ const qt = (i) => !!(i & 1), EI = (i) => !!(i & 2), rI = (i) => !!(i & 4), hI =
|
|
|
1328
1328
|
break;
|
|
1329
1329
|
}
|
|
1330
1330
|
return A;
|
|
1331
|
-
},
|
|
1331
|
+
}, SI = (i) => {
|
|
1332
1332
|
let A = 0;
|
|
1333
1333
|
for (; A < 100 && i.readBit() === 0; )
|
|
1334
1334
|
A++;
|
|
1335
1335
|
return A >= 32 ? (1 << 32) - 1 : i.readBits(A) + (1 << A) - 1;
|
|
1336
|
-
},
|
|
1336
|
+
}, DI = (i) => {
|
|
1337
1337
|
const A = i.readBits(8);
|
|
1338
1338
|
if ((A >> 7 & 1) !== 0)
|
|
1339
1339
|
return;
|
|
1340
1340
|
const g = A >> 3 & 15, s = A >> 2 & 1, I = A >> 1 & 1;
|
|
1341
|
-
return s == 1 && i.readBits(8), I == 1 &&
|
|
1341
|
+
return s == 1 && i.readBits(8), I == 1 && wI(i), {
|
|
1342
1342
|
headerLength: 1 + s,
|
|
1343
1343
|
type: g
|
|
1344
1344
|
};
|
|
1345
|
-
},
|
|
1345
|
+
}, fI = (i) => {
|
|
1346
1346
|
const A = i.readBits(32), e = i.readBits(32), g = i.readBit() !== 0;
|
|
1347
1347
|
let s = 0;
|
|
1348
|
-
return g && (s =
|
|
1348
|
+
return g && (s = SI(i) + 1), {
|
|
1349
1349
|
timescale: e,
|
|
1350
1350
|
equalPictureInterval: g,
|
|
1351
1351
|
numUnitsInDisplayTick: A,
|
|
1352
1352
|
numTicksPerPicture: s
|
|
1353
1353
|
};
|
|
1354
|
-
},
|
|
1354
|
+
}, Kt = 2, Te = 2, pI = 1, FI = 2, yI = 2, RI = 13, GI = 0, kI = 2, Yt = 0, UI = (i) => {
|
|
1355
1355
|
const A = i.readBits(3), g = i.readBit() !== 0, s = i.readBit() !== 0;
|
|
1356
1356
|
let I, B = !1, n = !1, o = !1, C = 0, a = 0;
|
|
1357
1357
|
const Q = [];
|
|
1358
1358
|
if (s)
|
|
1359
1359
|
i.readBits(5);
|
|
1360
1360
|
else {
|
|
1361
|
-
if (n = i.readBit() !== 0, n && (I =
|
|
1361
|
+
if (n = i.readBit() !== 0, n && (I = fI(i), B = i.readBit() !== 0, B))
|
|
1362
1362
|
throw new Error("Not implemented");
|
|
1363
1363
|
o = i.readBit() !== 0;
|
|
1364
1364
|
const eA = i.readBits(5) + 1;
|
|
@@ -1370,12 +1370,12 @@ const qt = (i) => !!(i & 1), EI = (i) => !!(i & 2), rI = (i) => !!(i & 4), hI =
|
|
|
1370
1370
|
o && i.readBit() !== 0 && i.readBits(4), Q.push({ tier: L, operatingPointIdc: f, seqLevelIdx: R });
|
|
1371
1371
|
}
|
|
1372
1372
|
}
|
|
1373
|
-
const h = i.readBits(4) + 1,
|
|
1373
|
+
const h = i.readBits(4) + 1, u = i.readBits(4) + 1, l = i.readBits(h) + 1, D = i.readBits(u) + 1;
|
|
1374
1374
|
let S = !1;
|
|
1375
1375
|
s ? S = !1 : S = i.readBit() !== 0, S && (C = i.readBits(4) + 2, a = i.readBits(3) + 1);
|
|
1376
1376
|
const q = i.readBit() !== 0, H = i.readBit() !== 0, G = i.readBit() !== 0;
|
|
1377
|
-
let K = !1, T = !1, Y = !1, _ = !1, $ = !1, E = !1, w = !1, k =
|
|
1378
|
-
s || (K = i.readBit() !== 0, T = i.readBit() !== 0, Y = i.readBit() !== 0, _ = i.readBit() !== 0, $ = i.readBit() !== 0, $ && (E = i.readBit() !== 0, w = i.readBit() !== 0), i.readBit() !== 0 ? k =
|
|
1377
|
+
let K = !1, T = !1, Y = !1, _ = !1, $ = !1, E = !1, w = !1, k = Kt, U = Te, v = 0;
|
|
1378
|
+
s || (K = i.readBit() !== 0, T = i.readBit() !== 0, Y = i.readBit() !== 0, _ = i.readBit() !== 0, $ = i.readBit() !== 0, $ && (E = i.readBit() !== 0, w = i.readBit() !== 0), i.readBit() !== 0 ? k = Kt : k = i.readBit(), k > 0 ? i.readBit() > 0 ? U = Te : U = i.readBit() : U = Te, $ ? v = i.readBits(3) : v = 0);
|
|
1379
1379
|
const N = i.readBit() !== 0, V = i.readBit() !== 0, lA = i.readBit() !== 0;
|
|
1380
1380
|
return {
|
|
1381
1381
|
seqProfile: A,
|
|
@@ -1392,8 +1392,8 @@ const qt = (i) => !!(i & 1), EI = (i) => !!(i & 2), rI = (i) => !!(i & 4), hI =
|
|
|
1392
1392
|
initialDisplayDelayPresentFlag: o,
|
|
1393
1393
|
operatingPoints: Q,
|
|
1394
1394
|
frameWidthBits: h,
|
|
1395
|
-
frameHeightBits:
|
|
1396
|
-
maxFrameWidth:
|
|
1395
|
+
frameHeightBits: u,
|
|
1396
|
+
maxFrameWidth: l,
|
|
1397
1397
|
maxFrameHeight: D,
|
|
1398
1398
|
frameIdNumbersPresentFlag: S,
|
|
1399
1399
|
deltaFrameIdLength: C,
|
|
@@ -1414,63 +1414,63 @@ const qt = (i) => !!(i & 1), EI = (i) => !!(i & 2), rI = (i) => !!(i & 4), hI =
|
|
|
1414
1414
|
enableSuperres: N,
|
|
1415
1415
|
enableCdef: V,
|
|
1416
1416
|
enableRestoration: lA,
|
|
1417
|
-
colorConfig:
|
|
1417
|
+
colorConfig: bI(i, A),
|
|
1418
1418
|
filmGrainParamsPresent: i.readBit() !== 0
|
|
1419
1419
|
};
|
|
1420
|
-
},
|
|
1420
|
+
}, bI = (i, A) => {
|
|
1421
1421
|
const e = i.readBit() !== 0;
|
|
1422
1422
|
let g = 8, s = !1;
|
|
1423
1423
|
A === 2 && e ? g = i.readBit() !== 0 ? 12 : 10 : A <= 2 && (g = e ? 10 : 8), A === 1 ? s = !1 : s = i.readBit() !== 0;
|
|
1424
1424
|
const I = s ? 1 : 3, B = i.readBit() !== 0;
|
|
1425
|
-
let n =
|
|
1426
|
-
return B && (n = i.readBits(8), o = i.readBits(8), C = i.readBits(8)), s ? (a = i.readBit() !== 0, Q = 1, h = 1,
|
|
1425
|
+
let n = FI, o = yI, C = kI, a = !1, Q = 0, h = 0, u = Yt, l = !1;
|
|
1426
|
+
return B && (n = i.readBits(8), o = i.readBits(8), C = i.readBits(8)), s ? (a = i.readBit() !== 0, Q = 1, h = 1, u = Yt, l = !1, {
|
|
1427
1427
|
highBitDepth: e,
|
|
1428
1428
|
bitDepth: g,
|
|
1429
1429
|
monoChrome: s,
|
|
1430
|
-
chromaSamplePosition:
|
|
1430
|
+
chromaSamplePosition: u,
|
|
1431
1431
|
colorPrimaries: n,
|
|
1432
1432
|
colorRange: a,
|
|
1433
1433
|
matrixCoefficients: C,
|
|
1434
1434
|
numPlanes: I,
|
|
1435
|
-
separateUvDeltaQ:
|
|
1435
|
+
separateUvDeltaQ: l,
|
|
1436
1436
|
subsamplingX: Q,
|
|
1437
1437
|
subsamplingY: h,
|
|
1438
1438
|
transferCharacteristics: o
|
|
1439
|
-
}) : n ===
|
|
1439
|
+
}) : n === pI && o == RI && C == GI ? (a = !0, Q = 0, h = 0, {
|
|
1440
1440
|
highBitDepth: e,
|
|
1441
1441
|
bitDepth: g,
|
|
1442
1442
|
monoChrome: s,
|
|
1443
|
-
chromaSamplePosition:
|
|
1443
|
+
chromaSamplePosition: u,
|
|
1444
1444
|
colorPrimaries: n,
|
|
1445
1445
|
colorRange: a,
|
|
1446
1446
|
matrixCoefficients: C,
|
|
1447
1447
|
numPlanes: I,
|
|
1448
|
-
separateUvDeltaQ:
|
|
1448
|
+
separateUvDeltaQ: l,
|
|
1449
1449
|
subsamplingX: Q,
|
|
1450
1450
|
subsamplingY: h,
|
|
1451
1451
|
transferCharacteristics: o
|
|
1452
|
-
}) : (a = i.readBit() !== 0, A === 0 ? (Q = 1, h = 1) : A === 1 ? (Q = 0, h = 0) : g === 12 ? (Q = i.readBit(), Q !== 0 ? h = i.readBit() : h = 0) : (Q = 1, h = 0), Q !== 0 && h !== 0 && (
|
|
1452
|
+
}) : (a = i.readBit() !== 0, A === 0 ? (Q = 1, h = 1) : A === 1 ? (Q = 0, h = 0) : g === 12 ? (Q = i.readBit(), Q !== 0 ? h = i.readBit() : h = 0) : (Q = 1, h = 0), Q !== 0 && h !== 0 && (u = i.readBits(2)), l = i.readBit() !== 0, {
|
|
1453
1453
|
highBitDepth: e,
|
|
1454
1454
|
bitDepth: g,
|
|
1455
1455
|
monoChrome: s,
|
|
1456
|
-
chromaSamplePosition:
|
|
1456
|
+
chromaSamplePosition: u,
|
|
1457
1457
|
colorPrimaries: n,
|
|
1458
1458
|
colorRange: a,
|
|
1459
1459
|
matrixCoefficients: C,
|
|
1460
1460
|
numPlanes: I,
|
|
1461
|
-
separateUvDeltaQ:
|
|
1461
|
+
separateUvDeltaQ: l,
|
|
1462
1462
|
subsamplingX: Q,
|
|
1463
1463
|
subsamplingY: h,
|
|
1464
1464
|
transferCharacteristics: o
|
|
1465
1465
|
});
|
|
1466
|
-
},
|
|
1467
|
-
const A =
|
|
1466
|
+
}, JI = (i) => {
|
|
1467
|
+
const A = Qg(i);
|
|
1468
1468
|
if (A)
|
|
1469
1469
|
return {
|
|
1470
1470
|
width: A.maxFrameWidth,
|
|
1471
1471
|
height: A.maxFrameHeight
|
|
1472
1472
|
};
|
|
1473
|
-
},
|
|
1473
|
+
}, LI = ({ isSync: i, timestamp: A, data: e, duration: g, compositionTimeOffset: s }, I) => Re({
|
|
1474
1474
|
trackId: 1,
|
|
1475
1475
|
timestamp: A,
|
|
1476
1476
|
sequenceNumber: I,
|
|
@@ -1485,11 +1485,11 @@ const qt = (i) => !!(i & 1), EI = (i) => !!(i & 2), rI = (i) => !!(i & 4), hI =
|
|
|
1485
1485
|
compositionTimeOffset: s
|
|
1486
1486
|
}
|
|
1487
1487
|
]
|
|
1488
|
-
}),
|
|
1489
|
-
const e =
|
|
1488
|
+
}), vI = (i, A) => {
|
|
1489
|
+
const e = Qg(i);
|
|
1490
1490
|
if (!e)
|
|
1491
1491
|
throw new Error("Failed to parse sequence header");
|
|
1492
|
-
return
|
|
1492
|
+
return ye([
|
|
1493
1493
|
{
|
|
1494
1494
|
type: "video",
|
|
1495
1495
|
parsedSequenceHeader: e,
|
|
@@ -1501,41 +1501,41 @@ const qt = (i) => !!(i & 1), EI = (i) => !!(i & 2), rI = (i) => !!(i & 4), hI =
|
|
|
1501
1501
|
trackId: 1
|
|
1502
1502
|
}
|
|
1503
1503
|
]);
|
|
1504
|
-
},
|
|
1504
|
+
}, NI = (i, A, e) => {
|
|
1505
1505
|
switch (i) {
|
|
1506
1506
|
case "h264":
|
|
1507
|
-
return
|
|
1507
|
+
return MI(A, e);
|
|
1508
1508
|
case "av1":
|
|
1509
|
-
return
|
|
1509
|
+
return PI(A, e);
|
|
1510
1510
|
case "opus":
|
|
1511
|
-
return
|
|
1511
|
+
return qI(A, e);
|
|
1512
1512
|
case "aac":
|
|
1513
|
-
return
|
|
1513
|
+
return TI(A, e);
|
|
1514
1514
|
default:
|
|
1515
1515
|
throw new Error(`Failed to initialize ${i} segment`);
|
|
1516
1516
|
}
|
|
1517
|
-
},
|
|
1517
|
+
}, HI = (i, A) => {
|
|
1518
1518
|
switch (i) {
|
|
1519
1519
|
case "h264":
|
|
1520
|
-
return
|
|
1520
|
+
return ng(A);
|
|
1521
1521
|
case "av1":
|
|
1522
|
-
return
|
|
1522
|
+
return JI(A);
|
|
1523
1523
|
}
|
|
1524
|
-
},
|
|
1524
|
+
}, MI = (i, A) => BI(i, A), PI = (i, A) => vI(i, A), qI = (i, A) => nI(new Uint8Array(i), 2, A), TI = (i, A) => sI(new Uint8Array(i), 2, A, A), KI = (i, A) => {
|
|
1525
1525
|
switch (i.codec) {
|
|
1526
1526
|
case "h264":
|
|
1527
|
-
return
|
|
1527
|
+
return II(i, A);
|
|
1528
1528
|
case "opus":
|
|
1529
|
-
return
|
|
1529
|
+
return oI(i, A);
|
|
1530
1530
|
case "aac":
|
|
1531
|
-
return
|
|
1531
|
+
return gI(i, A);
|
|
1532
1532
|
case "av1":
|
|
1533
|
-
return
|
|
1533
|
+
return LI(i, A);
|
|
1534
1534
|
default:
|
|
1535
1535
|
throw new Error(`Unsupported codec ${i.codec}`);
|
|
1536
1536
|
}
|
|
1537
|
-
},
|
|
1538
|
-
class
|
|
1537
|
+
}, YI = "data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2YzhkOCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxfaHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJycnJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEASZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAGQZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJkAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRraEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEAAAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsAAAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28AAAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAAAASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4AAAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIAAAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEAAAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIAAAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEAAAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIAAAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEAAAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oAAAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UAAANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUAAATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw", _A = () => "wakeLock" in navigator && window.navigator.userAgent.indexOf("Samsung") === -1;
|
|
1538
|
+
class xI {
|
|
1539
1539
|
constructor() {
|
|
1540
1540
|
t(this, "enabled", !1);
|
|
1541
1541
|
t(this, "wakeLockVideo");
|
|
@@ -1556,7 +1556,7 @@ class KI {
|
|
|
1556
1556
|
if (!_A()) {
|
|
1557
1557
|
if (!this.wakeLockVideo) {
|
|
1558
1558
|
const e = document.createElement("video");
|
|
1559
|
-
this.wakeLockVideo = e, this.wakeLockVideo.setAttribute("title", "Live Stream"), this.wakeLockVideo.setAttribute("playsinline", ""), this._addSourceToVideo(this.wakeLockVideo, "mp4",
|
|
1559
|
+
this.wakeLockVideo = e, this.wakeLockVideo.setAttribute("title", "Live Stream"), this.wakeLockVideo.setAttribute("playsinline", ""), this._addSourceToVideo(this.wakeLockVideo, "mp4", YI), Object.assign(this.wakeLockVideo.style, {
|
|
1560
1560
|
position: "absolute",
|
|
1561
1561
|
left: "-100%",
|
|
1562
1562
|
top: "-100%"
|
|
@@ -1570,7 +1570,7 @@ class KI {
|
|
|
1570
1570
|
}
|
|
1571
1571
|
}
|
|
1572
1572
|
enable() {
|
|
1573
|
-
return
|
|
1573
|
+
return m(this, null, function* () {
|
|
1574
1574
|
var A, e;
|
|
1575
1575
|
return _A() ? navigator.wakeLock.request("screen").then((g) => {
|
|
1576
1576
|
this._wakeLock = g, this.enabled = !0, this._wakeLock.addEventListener("release", () => {
|
|
@@ -1590,23 +1590,13 @@ class KI {
|
|
|
1590
1590
|
document.removeEventListener("visibilitychange", this.handleVisibilityChange), document.removeEventListener("fullscreenchange", this.handleVisibilityChange), this.disable();
|
|
1591
1591
|
}
|
|
1592
1592
|
}
|
|
1593
|
-
const
|
|
1594
|
-
let A = i;
|
|
1595
|
-
return (g) => {
|
|
1596
|
-
const s = A;
|
|
1597
|
-
A = g;
|
|
1598
|
-
const I = s.timestamp / s.timescale, B = g.timestamp / g.timescale;
|
|
1599
|
-
return b(r({}, s), {
|
|
1600
|
-
duration: Math.max(0, Math.round((B - I) * s.timescale))
|
|
1601
|
-
});
|
|
1602
|
-
};
|
|
1603
|
-
}, xI = new RegExp(
|
|
1593
|
+
const WI = new RegExp(
|
|
1604
1594
|
"(android|bbd+|meego).+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/",
|
|
1605
1595
|
"i"
|
|
1606
|
-
), O = navigator.userAgent.toLowerCase(),
|
|
1596
|
+
), O = navigator.userAgent.toLowerCase(), VI = WI.test(O), ZI = () => {
|
|
1607
1597
|
const i = document.createElement("video");
|
|
1608
1598
|
return i.canPlayType("application/vnd.apple.mpegURL") !== "" || i.canPlayType("audio/mpegurl") !== "";
|
|
1609
|
-
},
|
|
1599
|
+
}, OI = () => {
|
|
1610
1600
|
try {
|
|
1611
1601
|
if (typeof WebAssembly == "object" && typeof WebAssembly.instantiate == "function") {
|
|
1612
1602
|
const i = new WebAssembly.Module(Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0));
|
|
@@ -1617,37 +1607,37 @@ const YI = (i) => {
|
|
|
1617
1607
|
return !1;
|
|
1618
1608
|
}
|
|
1619
1609
|
return !1;
|
|
1620
|
-
},
|
|
1621
|
-
function
|
|
1610
|
+
}, XI = () => O.indexOf("CrKey") !== -1, ag = () => navigator.platform === "MacIntel" && navigator.maxTouchPoints === 0, Ge = () => navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1, zI = () => O.indexOf("iphone") >= 0 && O.indexOf("like iphone") < 0 || O.indexOf("ipad") >= 0 && O.indexOf("like ipad") < 0 || O.indexOf("ipod") >= 0 && O.indexOf("like ipod") < 0 || Ge(), jI = () => Ge() ? !1 : window.MediaSource.isTypeSupported('audio/mp4; codecs="opus"');
|
|
1611
|
+
function _I() {
|
|
1622
1612
|
var i, A;
|
|
1623
1613
|
if (/(iPhone|iPod|iPad)/i.test(O))
|
|
1624
1614
|
return (A = (i = O == null ? void 0 : O.match(/OS [\d_]+/i)) == null ? void 0 : i[0]) == null ? void 0 : A.substring(3).split("_").map((e) => parseInt(e))[0];
|
|
1625
1615
|
}
|
|
1626
|
-
const
|
|
1616
|
+
const Eg = () => {
|
|
1627
1617
|
var e;
|
|
1628
1618
|
const i = !!window.MediaSource;
|
|
1629
1619
|
let A = !1;
|
|
1630
|
-
return i && (A =
|
|
1631
|
-
isMobile:
|
|
1620
|
+
return i && (A = jI()), {
|
|
1621
|
+
isMobile: VI,
|
|
1632
1622
|
supportsMp4Opus: A,
|
|
1633
1623
|
supportsMediaSource: i,
|
|
1634
|
-
supportsHls:
|
|
1635
|
-
supportsWebAssembly:
|
|
1624
|
+
supportsHls: ZI(),
|
|
1625
|
+
supportsWebAssembly: OI(),
|
|
1636
1626
|
platform: {
|
|
1637
|
-
iosVersion: (e =
|
|
1638
|
-
isIpadOS:
|
|
1639
|
-
isMacOS:
|
|
1640
|
-
isIOS:
|
|
1627
|
+
iosVersion: (e = _I()) != null ? e : Number.MAX_SAFE_INTEGER,
|
|
1628
|
+
isIpadOS: Ge(),
|
|
1629
|
+
isMacOS: ag(),
|
|
1630
|
+
isIOS: zI()
|
|
1641
1631
|
}
|
|
1642
1632
|
};
|
|
1643
|
-
},
|
|
1633
|
+
}, $I = "__vindral_debug_name__", AB = (i) => {
|
|
1644
1634
|
var s;
|
|
1645
|
-
const e = new URLSearchParams((s = window == null ? void 0 : window.location) == null ? void 0 : s.search).get(
|
|
1635
|
+
const e = new URLSearchParams((s = window == null ? void 0 : window.location) == null ? void 0 : s.search).get($I);
|
|
1646
1636
|
if (!e)
|
|
1647
1637
|
return;
|
|
1648
1638
|
const g = window;
|
|
1649
1639
|
g[e] = i;
|
|
1650
|
-
},
|
|
1640
|
+
}, ot = class {
|
|
1651
1641
|
constructor() {
|
|
1652
1642
|
t(this, "pendingTimeouts", /* @__PURE__ */ new Set());
|
|
1653
1643
|
t(this, "pendingIntervals", /* @__PURE__ */ new Set());
|
|
@@ -1674,9 +1664,9 @@ const ag = () => {
|
|
|
1674
1664
|
});
|
|
1675
1665
|
}
|
|
1676
1666
|
};
|
|
1677
|
-
let x =
|
|
1678
|
-
t(x, "create", () => new
|
|
1679
|
-
class
|
|
1667
|
+
let x = ot;
|
|
1668
|
+
t(x, "create", () => new ot());
|
|
1669
|
+
class et extends z {
|
|
1680
1670
|
constructor({ type: e, autoplay: g, muted: s, logger: I, poster: B }) {
|
|
1681
1671
|
super();
|
|
1682
1672
|
t(this, "element");
|
|
@@ -1688,6 +1678,14 @@ class At extends z {
|
|
|
1688
1678
|
t(this, "_userHasProvidedInput", !1);
|
|
1689
1679
|
t(this, "_isPaused", !0);
|
|
1690
1680
|
t(this, "isActivated", !1);
|
|
1681
|
+
t(this, "dummy");
|
|
1682
|
+
t(this, "_iosHackEnterPiPMode", () => {
|
|
1683
|
+
const e = this.element.parentElement, g = this.element.clientWidth / this.element.clientHeight;
|
|
1684
|
+
this.element.style.position = "fixed", this.element.style.opacity = "0", this.element.style.pointerEvents = "none", e && (this.dummy = document.createElement("video"), this.dummy.style.paddingBottom = "calc(100% / " + g + ")", this.dummy.style.width = "100%", this.dummy.style.height = "0px", e.appendChild(this.dummy));
|
|
1685
|
+
});
|
|
1686
|
+
t(this, "_iosHackExitPiPMode", () => {
|
|
1687
|
+
this.element.style.position = "relative", this.element.style.opacity = "1", this.element.style.pointerEvents = "auto", this.dummy && (this.dummy.remove(), this.dummy = void 0);
|
|
1688
|
+
});
|
|
1691
1689
|
t(this, "attach", (e) => {
|
|
1692
1690
|
this.element.remove(), e.appendChild(this.element);
|
|
1693
1691
|
});
|
|
@@ -1713,10 +1711,10 @@ class At extends z {
|
|
|
1713
1711
|
t(this, "pause", () => {
|
|
1714
1712
|
this._isPaused = !1, this.element.pause();
|
|
1715
1713
|
});
|
|
1716
|
-
t(this, "play", () =>
|
|
1714
|
+
t(this, "play", () => m(this, null, function* () {
|
|
1717
1715
|
this.element.muted = this._userProvidedMuted, yield this._play();
|
|
1718
1716
|
}));
|
|
1719
|
-
t(this, "_play", () =>
|
|
1717
|
+
t(this, "_play", () => m(this, null, function* () {
|
|
1720
1718
|
try {
|
|
1721
1719
|
yield this.element.play(), this._userHasProvidedInput = !this.muted || this._userProvidedMuted;
|
|
1722
1720
|
} catch (e) {
|
|
@@ -1802,7 +1800,7 @@ class At extends z {
|
|
|
1802
1800
|
return this._isPaused;
|
|
1803
1801
|
}
|
|
1804
1802
|
}
|
|
1805
|
-
const
|
|
1803
|
+
const eB = 0.15, tB = 0.2, xt = 0.4, iB = 0.5, gB = 0.6, Ke = 15, sB = {
|
|
1806
1804
|
cooldownTime: 3e3,
|
|
1807
1805
|
maxBufferingEvents: {
|
|
1808
1806
|
last10Seconds: 0
|
|
@@ -1817,7 +1815,7 @@ const AB = 0.15, eB = 0.2, Yt = 0.4, tB = 0.5, iB = 0.6, Te = 15, gB = {
|
|
|
1817
1815
|
ratio: 0.1
|
|
1818
1816
|
},
|
|
1819
1817
|
maxCooldownRatio: 2
|
|
1820
|
-
},
|
|
1818
|
+
}, Ye = (i) => (A) => A > i, Ct = class {
|
|
1821
1819
|
constructor(A, e, g, s) {
|
|
1822
1820
|
t(this, "qualityOfServiceSource");
|
|
1823
1821
|
t(this, "config");
|
|
@@ -1845,7 +1843,7 @@ const AB = 0.15, eB = 0.2, Yt = 0.4, tB = 0.5, iB = 0.6, Te = 15, gB = {
|
|
|
1845
1843
|
isAbrEnabled: this.isEnabled
|
|
1846
1844
|
}));
|
|
1847
1845
|
t(this, "isQoSOk", (A) => {
|
|
1848
|
-
const e = this.qualityOfServiceSource.getLevelStats(A), { upgradesFromLevel: g, downgradesFromLevel: s } = e != null ? e : { upgradesFromLevel: [], downgradesFromLevel: [] }, I = Date.now() - this.config.maxDowngradeLookbackMs, B = s.filter(
|
|
1846
|
+
const e = this.qualityOfServiceSource.getLevelStats(A), { upgradesFromLevel: g, downgradesFromLevel: s } = e != null ? e : { upgradesFromLevel: [], downgradesFromLevel: [] }, I = Date.now() - this.config.maxDowngradeLookbackMs, B = s.filter(Ye(I)).length, n = g.filter(Ye(I)).length;
|
|
1849
1847
|
if (B - n > this.config.maxRecentDowngradesCount)
|
|
1850
1848
|
return this.logger.debug("Recent downgrades count is over maximum", {
|
|
1851
1849
|
downgrades: B - n,
|
|
@@ -1862,9 +1860,9 @@ const AB = 0.15, eB = 0.2, Yt = 0.4, tB = 0.5, iB = 0.6, Te = 15, gB = {
|
|
|
1862
1860
|
recentDowngrades: B,
|
|
1863
1861
|
timeSpentPlayingInAtLeastLevelRatio: o
|
|
1864
1862
|
}), !1;
|
|
1865
|
-
const Q = Math.max(0, s.length - g.length - a), h = Date.now() - this.config.maxDowngradeLookbackMs * Q,
|
|
1866
|
-
return
|
|
1867
|
-
downgradesWithinCooldownTime:
|
|
1863
|
+
const Q = Math.max(0, s.length - g.length - a), h = Date.now() - this.config.maxDowngradeLookbackMs * Q, u = s.filter(Ye(h)).length;
|
|
1864
|
+
return u && Q > this.config.maxCooldownRatio ? (this.logger.debug("Too many downgrades compared to time spent playing", {
|
|
1865
|
+
downgradesWithinCooldownTime: u,
|
|
1868
1866
|
cooldownRatio: Q
|
|
1869
1867
|
}), !1) : !0;
|
|
1870
1868
|
});
|
|
@@ -1874,8 +1872,8 @@ const AB = 0.15, eB = 0.2, Yt = 0.4, tB = 0.5, iB = 0.6, Te = 15, gB = {
|
|
|
1874
1872
|
const { bufferFullness: e, general: g } = this.qualityOfServiceSource.getMetrics(), s = this.qualityOfServiceSource.getBufferFullnessRegression();
|
|
1875
1873
|
if (!s)
|
|
1876
1874
|
return;
|
|
1877
|
-
const I = 10 * 1e3, { slope: B } = s, n = s.predict(
|
|
1878
|
-
if (e < 0.15 &&
|
|
1875
|
+
const I = 10 * 1e3, { slope: B } = s, n = s.predict(Ke), o = B < 0, C = s.predict(Ke) < xt && s.slope < 0, a = s.predict(Ke) > gB, Q = this.qualityOfServiceSource.timeSpentBufferingLast(30 * 1e3), h = this.qualityOfServiceSource.timeSpentActiveLast(30 * 1e3), u = Q / h;
|
|
1876
|
+
if (e < 0.15 && u > 0.8) {
|
|
1879
1877
|
this.adaptLevel("reconnect");
|
|
1880
1878
|
return;
|
|
1881
1879
|
}
|
|
@@ -1883,13 +1881,13 @@ const AB = 0.15, eB = 0.2, Yt = 0.4, tB = 0.5, iB = 0.6, Te = 15, gB = {
|
|
|
1883
1881
|
this.adaptLevel("downgrade");
|
|
1884
1882
|
return;
|
|
1885
1883
|
}
|
|
1886
|
-
C || e <
|
|
1884
|
+
C || e < eB ? o && e < xt && n < tB && this.adaptLevel(A.playbackState === "buffering" ? "double downgrade" : "downgrade") : e > iB && a && !this.tooMuchTimeBuffering(I) && !this.tooManyBufferingEvents(I) && this.adaptLevel("upgrade");
|
|
1887
1885
|
});
|
|
1888
1886
|
t(this, "onAdaptedLevel", () => {
|
|
1889
1887
|
this.reset();
|
|
1890
1888
|
});
|
|
1891
1889
|
t(this, "adaptLevel", (A) => this.emitter.emit("adapt level", A));
|
|
1892
|
-
this.qualityOfServiceSource = g, this.config = r(r({},
|
|
1890
|
+
this.qualityOfServiceSource = g, this.config = r(r({}, sB), s), this.emitter = A, this.logger = e;
|
|
1893
1891
|
}
|
|
1894
1892
|
tooMuchTimeBuffering(A) {
|
|
1895
1893
|
return this.qualityOfServiceSource.timeSpentBufferingLast(A) / this.qualityOfServiceSource.timeSpentActiveLast(A) > this.config.maxBufferingRatio.last10Seconds;
|
|
@@ -1898,9 +1896,9 @@ const AB = 0.15, eB = 0.2, Yt = 0.4, tB = 0.5, iB = 0.6, Te = 15, gB = {
|
|
|
1898
1896
|
return this.qualityOfServiceSource.timeSpentBufferingLast(A) > this.config.maxBufferingEvents.last10Seconds;
|
|
1899
1897
|
}
|
|
1900
1898
|
};
|
|
1901
|
-
let ie =
|
|
1902
|
-
t(ie, "create", (A, e, g, s = {}) => new
|
|
1903
|
-
const
|
|
1899
|
+
let ie = Ct;
|
|
1900
|
+
t(ie, "create", (A, e, g, s = {}) => new Ct(A, e, g, s));
|
|
1901
|
+
const IB = {
|
|
1904
1902
|
minBufferTime: 1500,
|
|
1905
1903
|
maxBufferTime: 1500,
|
|
1906
1904
|
cooldownTime: 3e4,
|
|
@@ -1953,7 +1951,7 @@ const sB = {
|
|
|
1953
1951
|
this.targetBufferTimeTarget.targetBufferTime + C
|
|
1954
1952
|
), this.bufferTimeAdjustmentCount++, this.reset());
|
|
1955
1953
|
});
|
|
1956
|
-
this.qualityOfServiceSource = g, this.targetBufferTimeTarget = s, this.config = r(r({},
|
|
1954
|
+
this.qualityOfServiceSource = g, this.targetBufferTimeTarget = s, this.config = r(r({}, IB), I), this.emitter = A, this.logger = e;
|
|
1957
1955
|
}
|
|
1958
1956
|
updateConfig(A) {
|
|
1959
1957
|
this.config = r(r({}, this.config), A);
|
|
@@ -1961,7 +1959,7 @@ const sB = {
|
|
|
1961
1959
|
};
|
|
1962
1960
|
let pA = TA;
|
|
1963
1961
|
t(pA, "BUFFER_TIME_STEP_SIZE", 500), t(pA, "BUFFER_TIME_MAX_STEPS", 3), t(pA, "create", (A, e, g, s, I = {}) => new TA(A, e, g, s, I));
|
|
1964
|
-
class
|
|
1962
|
+
class BB extends z {
|
|
1965
1963
|
constructor(e, g) {
|
|
1966
1964
|
super();
|
|
1967
1965
|
t(this, "options");
|
|
@@ -2029,13 +2027,13 @@ class IB extends z {
|
|
|
2029
2027
|
this.emit("error", me(JA()));
|
|
2030
2028
|
break;
|
|
2031
2029
|
case 4002:
|
|
2032
|
-
this.emit("error",
|
|
2030
|
+
this.emit("error", os(JA()));
|
|
2033
2031
|
break;
|
|
2034
2032
|
case 4003:
|
|
2035
|
-
this.emit("error",
|
|
2033
|
+
this.emit("error", ig("internal", JA())), this.connect(!0);
|
|
2036
2034
|
break;
|
|
2037
2035
|
case 4010:
|
|
2038
|
-
this.emit("error",
|
|
2036
|
+
this.emit("error", Cs("internal", JA())), this.connect(!0);
|
|
2039
2037
|
break;
|
|
2040
2038
|
default:
|
|
2041
2039
|
this.connect(!0);
|
|
@@ -2044,16 +2042,16 @@ class IB extends z {
|
|
|
2044
2042
|
t(this, "onOpen", () => {
|
|
2045
2043
|
this.logger.info("Opened", r({}, this.options)), this.readyState() === WebSocket.OPEN && (this._connectTime = Date.now() - this.connectStartTime, this.reconnectState.reconnectRetries = 0, this._isConnectInProgress = !1, this.emit("open", this));
|
|
2046
2044
|
});
|
|
2047
|
-
t(this, "connect", (e = !1) =>
|
|
2045
|
+
t(this, "connect", (e = !1) => m(this, null, function* () {
|
|
2048
2046
|
if (this.isConnectInProgress)
|
|
2049
2047
|
return this.logger.info("Connect already in progress"), !1;
|
|
2050
2048
|
if (this.isSuspended)
|
|
2051
2049
|
return !1;
|
|
2052
2050
|
if (this.readyState() !== WebSocket.CLOSED && this.close("new connection in progress"), this.shouldContinueConnecting = !0, this._isConnectInProgress = !0, e && this.options.reconnectDelay > 0) {
|
|
2053
|
-
this.logger.info("Waiting for reconnect delay", r({}, this.options)), yield
|
|
2051
|
+
this.logger.info("Waiting for reconnect delay", r({}, this.options)), yield $i(this.options.reconnectDelay);
|
|
2054
2052
|
const g = yield this.options.reconnectHandler(this.reconnectState);
|
|
2055
2053
|
if (this.reconnectState.reconnectRetries++, !g)
|
|
2056
|
-
return this._isConnectInProgress = !1, this.emit("error",
|
|
2054
|
+
return this._isConnectInProgress = !1, this.emit("error", Es()), !1;
|
|
2057
2055
|
}
|
|
2058
2056
|
this._connectionAttemptCount++;
|
|
2059
2057
|
try {
|
|
@@ -2069,7 +2067,7 @@ class IB extends z {
|
|
|
2069
2067
|
}
|
|
2070
2068
|
return !0;
|
|
2071
2069
|
} catch (g) {
|
|
2072
|
-
return this._isConnectInProgress = !1, g instanceof
|
|
2070
|
+
return this._isConnectInProgress = !1, g instanceof p && (this.logger.error("Failed to connect", g.toStringifiable()), g.isFatal()) ? !1 : this.shouldContinueConnecting ? (this.logger.info("Connection aborted", { error: g }), this.connect(!0)) : !1;
|
|
2073
2071
|
}
|
|
2074
2072
|
}));
|
|
2075
2073
|
this.options = e, this.logger = g;
|
|
@@ -2087,7 +2085,7 @@ class IB extends z {
|
|
|
2087
2085
|
return this._connectTime;
|
|
2088
2086
|
}
|
|
2089
2087
|
}
|
|
2090
|
-
const
|
|
2088
|
+
const nB = 65536 * 8, oB = 0.9, tt = (i) => nB * oB * 1e3 / i, RA = class {
|
|
2091
2089
|
constructor(A, e, g) {
|
|
2092
2090
|
t(this, "timers", x.create());
|
|
2093
2091
|
t(this, "emitter");
|
|
@@ -2139,7 +2137,7 @@ const BB = 65536 * 8, nB = 0.9, et = (i) => BB * nB * 1e3 / i, RA = class {
|
|
|
2139
2137
|
const A = fA(this.rtts.items());
|
|
2140
2138
|
return {
|
|
2141
2139
|
rtt: A,
|
|
2142
|
-
estimatedBandwidth:
|
|
2140
|
+
estimatedBandwidth: tt(A.average),
|
|
2143
2141
|
edgeUrl: (e = this.transport) == null ? void 0 : e.url(),
|
|
2144
2142
|
connectCount: this.connectCount,
|
|
2145
2143
|
connectionAttemptCount: (s = (g = this.transport) == null ? void 0 : g.connectionAttemptCount) != null ? s : 0
|
|
@@ -2155,7 +2153,7 @@ const BB = 65536 * 8, nB = 0.9, et = (i) => BB * nB * 1e3 / i, RA = class {
|
|
|
2155
2153
|
if (this.contextSwitchesInProgress.has(A)) {
|
|
2156
2154
|
if (!(e instanceof ArrayBuffer)) {
|
|
2157
2155
|
const s = JSON.parse(e);
|
|
2158
|
-
if (
|
|
2156
|
+
if (vt(s) && s.type === "context switch complete") {
|
|
2159
2157
|
this.logger.info("context switch completed", { socketId: A }), this.emitter.emit("context switch complete"), this.contextSwitchesCompleted.add(A);
|
|
2160
2158
|
return;
|
|
2161
2159
|
}
|
|
@@ -2170,7 +2168,7 @@ const BB = 65536 * 8, nB = 0.9, et = (i) => BB * nB * 1e3 / i, RA = class {
|
|
|
2170
2168
|
this.emitter.emit("received data", e);
|
|
2171
2169
|
else {
|
|
2172
2170
|
const g = JSON.parse(e);
|
|
2173
|
-
if (!
|
|
2171
|
+
if (!vt(g))
|
|
2174
2172
|
return;
|
|
2175
2173
|
switch (g.type) {
|
|
2176
2174
|
case "pong":
|
|
@@ -2186,7 +2184,7 @@ const BB = 65536 * 8, nB = 0.9, et = (i) => BB * nB * 1e3 / i, RA = class {
|
|
|
2186
2184
|
}
|
|
2187
2185
|
});
|
|
2188
2186
|
t(this, "connect", (A) => {
|
|
2189
|
-
this.disconnect("user connected"), this.transport = new
|
|
2187
|
+
this.disconnect("user connected"), this.transport = new BB(
|
|
2190
2188
|
{
|
|
2191
2189
|
reconnectDelay: 1e3,
|
|
2192
2190
|
connectionsCount: A,
|
|
@@ -2242,7 +2240,7 @@ const BB = 65536 * 8, nB = 0.9, et = (i) => BB * nB * 1e3 / i, RA = class {
|
|
|
2242
2240
|
return this.rtts.items().length > 0 ? VA(this.rtts.items()) : 0;
|
|
2243
2241
|
}
|
|
2244
2242
|
get estimatedBandwidth() {
|
|
2245
|
-
return this.rtt > 0 ?
|
|
2243
|
+
return this.rtt > 0 ? tt(this.rtt) : void 0;
|
|
2246
2244
|
}
|
|
2247
2245
|
get connectTime() {
|
|
2248
2246
|
var A;
|
|
@@ -2257,18 +2255,18 @@ const BB = 65536 * 8, nB = 0.9, et = (i) => BB * nB * 1e3 / i, RA = class {
|
|
|
2257
2255
|
};
|
|
2258
2256
|
let CA = RA;
|
|
2259
2257
|
t(CA, "PING_INTERVAL", 5e3), t(CA, "MAX_MISSED_PINGS", 4), t(CA, "TLS_ROUNDTRIPS", 3), t(CA, "create", (A, e, g) => new RA(A, e, g));
|
|
2260
|
-
const
|
|
2258
|
+
const xe = () => ({
|
|
2261
2259
|
video: b(r({}, ue()), {
|
|
2262
2260
|
bitRate: IA()
|
|
2263
2261
|
}),
|
|
2264
2262
|
audio: {
|
|
2265
2263
|
bitRate: IA()
|
|
2266
2264
|
}
|
|
2267
|
-
}),
|
|
2265
|
+
}), CB = () => ({
|
|
2268
2266
|
width: window.innerWidth,
|
|
2269
2267
|
height: window.innerHeight,
|
|
2270
2268
|
bitRate: IA()
|
|
2271
|
-
}),
|
|
2269
|
+
}), Se = class {
|
|
2272
2270
|
constructor(A, e, g, s) {
|
|
2273
2271
|
t(this, "emitter");
|
|
2274
2272
|
t(this, "timers", new x());
|
|
@@ -2288,14 +2286,14 @@ const Ye = () => ({
|
|
|
2288
2286
|
window.ResizeObserver && (this.resizeObserver = new ResizeObserver(this.onResize), this.resizeObserver.observe(this.element)), this.evaluateConstraintCap();
|
|
2289
2287
|
});
|
|
2290
2288
|
t(this, "unsuspend", () => {
|
|
2291
|
-
this.timers.setInterval(this.evaluateConstraintCap,
|
|
2289
|
+
this.timers.setInterval(this.evaluateConstraintCap, Se.CHECK_SIZE_INTERVAL), this.evaluateConstraintCap();
|
|
2292
2290
|
});
|
|
2293
2291
|
t(this, "suspend", () => {
|
|
2294
2292
|
this.timers.unload();
|
|
2295
2293
|
});
|
|
2296
2294
|
t(this, "setUserSpecifiedCap", (A) => {
|
|
2297
2295
|
var g;
|
|
2298
|
-
const e = (g = this.getUserSpecifiedCap()) != null ? g :
|
|
2296
|
+
const e = (g = this.getUserSpecifiedCap()) != null ? g : xe();
|
|
2299
2297
|
this.userSpecifiedCap = b(r({}, e), {
|
|
2300
2298
|
video: r(r({}, e.video), A.video),
|
|
2301
2299
|
audio: r(r({}, e.audio), A.audio)
|
|
@@ -2322,7 +2320,7 @@ const Ye = () => ({
|
|
|
2322
2320
|
});
|
|
2323
2321
|
t(this, "evaluateConstraintCap", () => {
|
|
2324
2322
|
var B, n, o, C, a;
|
|
2325
|
-
const A = this.sizeBasedResolutionCapEnabled ? b(r({},
|
|
2323
|
+
const A = this.sizeBasedResolutionCapEnabled ? b(r({}, xe()), { video: CB() }) : xe();
|
|
2326
2324
|
if (!this.resizeObserver) {
|
|
2327
2325
|
const Q = this.element.getBoundingClientRect();
|
|
2328
2326
|
this.elementSize = { width: Q.width, height: Q.height };
|
|
@@ -2333,8 +2331,8 @@ const Ye = () => ({
|
|
|
2333
2331
|
}
|
|
2334
2332
|
const g = this.renditionLevelSource.getRenditionLevels().find((Q) => {
|
|
2335
2333
|
if (Q.video) {
|
|
2336
|
-
const h = Q.video.width / Q.video.height,
|
|
2337
|
-
return h >
|
|
2334
|
+
const h = Q.video.width / Q.video.height, u = A.video.width / A.video.height;
|
|
2335
|
+
return h > u ? Q.video.width > A.video.width : Q.video.height > A.video.height;
|
|
2338
2336
|
}
|
|
2339
2337
|
});
|
|
2340
2338
|
g && g.video && (A.video.width = g.video.width, A.video.height = g.video.height);
|
|
@@ -2358,9 +2356,9 @@ const Ye = () => ({
|
|
|
2358
2356
|
this._sizeBasedResolutionCapEnabled = A, this.evaluateConstraintCap();
|
|
2359
2357
|
}
|
|
2360
2358
|
};
|
|
2361
|
-
let LA =
|
|
2362
|
-
t(LA, "CHECK_SIZE_INTERVAL", 1e3), t(LA, "create", (A, e, g, s) => new
|
|
2363
|
-
const
|
|
2359
|
+
let LA = Se;
|
|
2360
|
+
t(LA, "CHECK_SIZE_INTERVAL", 1e3), t(LA, "create", (A, e, g, s) => new Se(A, e, g, s));
|
|
2361
|
+
const De = class {
|
|
2364
2362
|
constructor(A, e) {
|
|
2365
2363
|
t(this, "decodedSamples", []);
|
|
2366
2364
|
t(this, "codedSamples", []);
|
|
@@ -2424,8 +2422,8 @@ const Se = class {
|
|
|
2424
2422
|
return this.errors.pop();
|
|
2425
2423
|
}
|
|
2426
2424
|
};
|
|
2427
|
-
let ge =
|
|
2428
|
-
t(ge, "create", (A) =>
|
|
2425
|
+
let ge = De;
|
|
2426
|
+
t(ge, "create", (A) => m(De, null, function* () {
|
|
2429
2427
|
const e = new Worker(URL.createObjectURL(new Blob(['var MA=Object.defineProperty,qA=Object.defineProperties;var YA=Object.getOwnPropertyDescriptors;var SA=Object.getOwnPropertySymbols;var KA=Object.prototype.hasOwnProperty,rA=Object.prototype.propertyIsEnumerable;var AA=(R,F,G)=>F in R?MA(R,F,{enumerable:!0,configurable:!0,writable:!0,value:G}):R[F]=G,IA=(R,F)=>{for(var G in F||(F={}))KA.call(F,G)&&AA(R,G,F[G]);if(SA)for(var G of SA(F))rA.call(F,G)&&AA(R,G,F[G]);return R},gA=(R,F)=>qA(R,YA(F));var o=(R,F,G)=>(AA(R,typeof F!="symbol"?F+"":F,G),G);var P=(R,F,G)=>new Promise((X,e)=>{var j=J=>{try{n(G.next(J))}catch(D){e(D)}},V=J=>{try{n(G.throw(J))}catch(D){e(D)}},n=J=>J.done?X(J.value):Promise.resolve(J.value).then(j,V);n((G=G.apply(R,F)).next())});(function(){"use strict";const G=B=>{const g=B.getUint32(0,!1),A=B.getUint8(0)<<16|B.getUint16(1,!1);let C=0;return A===1?C+=3:g===1&&(C+=4),C},X=B=>G(new DataView(B,0))!==0,e=(B,g=0)=>{for(let A=g;A<B.byteLength-4;A++){const C=B.getUint32(A)===1,E=(B.getUint8(A)<<16|B.getUint16(A+1))===1;if(C||E)return{position:A,nalPrefixSize:C?4:3}}},j=B=>B&31,V=(B,g)=>{const A=new DataView(B,0);let C=e(A);for(;C;){const{position:E,nalPrefixSize:i}=C,s=e(A,E+4),S=s?s.position-E-i:void 0;if(!g(new DataView(B,E+i,S),i))return;C=s}},n=(B,g)=>{const A=new DataView(B,0),C=4;let E=0;for(;E<B.byteLength;){const i=A.getUint32(E);if(!g(new DataView(B,E+C,i)))return;E+=i+C}},J=B=>{const g=[],A=[];if(!X(B)){const C=new DataView(B,0),E=C.getUint8(5)&31;let i=6;for(let S=0;S<E;S++){const N=C.getUint16(i);g.push(B.slice(i+2,i+2+N)),i+=N+2}const s=C.getUint8(i);i+=1;for(let S=0;S<s;S++){const N=C.getUint16(i);A.push(B.slice(i+2,i+2+N)),i+=N+2}return{sequenceParameterSets:g,pictureParameterSets:A}}return V(B,C=>{const E=C.byteOffset+C.byteLength;switch(j(C.getUint8(0))){case 8:A.push(C.buffer.slice(C.byteOffset,E));break;case 7:g.push(C.buffer.slice(C.byteOffset,E));break}return!0}),{sequenceParameterSets:g,pictureParameterSets:A}},D=B=>{const g=new ArrayBuffer(B.length),A=new Uint8Array(g);for(let C=0,E=B.length;C<E;C++)A[C]=B.charCodeAt(C);return new Uint8Array(g)};D("ftyp"),D("mvhd"),D("moov"),D("trak"),D("tkhd"),D("mdia"),D("mdhd"),D("hdlr"),D("minf"),D("vmhd"),D("smhd"),D("dinf"),D("dref"),D("stbl"),D("stsd"),D("avc1"),D("av01"),D("av1C"),D("avcC"),D("esds"),D("colr"),D("nclx"),D("mvex"),D("trex"),D("udta"),D("meta"),D("ilst"),D("moof"),D("mfhd"),D("traf"),D("tfhd"),D("tfdt"),D("trun"),D("mdat"),D("iso6");var hA=function(){var B=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(g){g=g||{};var A;A||(A=typeof g!="undefined"?g:{});var C,E;A.ready=new Promise(function(I,Q){C=I,E=Q});var i={},s;for(s in A)A.hasOwnProperty(s)&&(i[s]=A[s]);var S="",N;S=self.location.href,B&&(S=B),S.indexOf("blob:")!==0?S=S.substr(0,S.lastIndexOf("/")+1):S="",N=function(I){try{var Q=new XMLHttpRequest;return Q.open("GET",I,!1),Q.responseType="arraybuffer",Q.send(null),new Uint8Array(Q.response)}catch(a){if(I=aA(I))return I;throw a}};var L=A.printErr||console.warn.bind(console);for(s in i)i.hasOwnProperty(s)&&(A[s]=i[s]);i=null;var q;A.wasmBinary&&(q=A.wasmBinary),A.noExitRuntime,typeof WebAssembly!="object"&&W("no native wasm support detected");var w,O=!1,p,Y,r,d,c,h,m;function QA(){var I=w.buffer;p=I,A.HEAP8=Y=new Int8Array(I),A.HEAP16=d=new Int16Array(I),A.HEAP32=c=new Int32Array(I),A.HEAPU8=r=new Uint8Array(I),A.HEAPU16=new Uint16Array(I),A.HEAPU32=new Uint32Array(I),A.HEAPF32=h=new Float32Array(I),A.HEAPF64=m=new Float64Array(I)}var z,CA=[],EA=[],iA=[];function LA(){var I=A.preRun.shift();CA.unshift(I)}var K=0,f=null;A.preloadedImages={},A.preloadedAudios={};function W(I){throw A.onAbort&&A.onAbort(I),L(I),O=!0,I=new WebAssembly.RuntimeError("abort("+I+"). Build with -s ASSERTIONS=1 for more info."),E(I),I}var T="data:application/octet-stream;base64,",M="data:application/octet-stream;base64,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agwNCyAEQRt2QeATagwMCyAEQRt2QYAUagwLCyAEQRp2QaAUagwKCyAEQRp2QeAUagwJCyAEQRp2QaAVagwICyAEQRp2QeAVagwHCyAEQRt2QaAWagwGCyAEQRx2QcAWagwFCyAEQRx2QdAWagwECyAEQR12QeAWagwDCyAEQR52QegWagwCCyAEQQBIBEBBASECDAQLQREhAiAKQQNGDQNBEiECIARB/////wNLDQNBIiECIApBAkYNA0EzQSMgBEGAgICAAkkbIQIMAwsgBEEXdkHAEmogBEEbdkGgEmogBEGAgICAAUkbCy0AACICDQEMBAtBAUERIARBf0obIQILIAJBBHYhByAGIAJBD3EiA2shAiAEIAN0IQQLIApBAWsiBQRAA0ACQCAHBEAgAkEKTQRAIABBICACaxALQX9GBEAMBwsgABAQIQRBICECCwJAAn8CQAJAAkACQAJAAkACQCAHQQFrDgYGAAECAwQFCyAEQR52Qe4WagwGCyAEQR52QfIWagwFCyAEQR12QfYWagwECyAEQR12Qf4WagwDCyAEQR12QYYXagwCCwJ/QfMAIARBGXZB8ABxayAEQYCAgIACTw0AGkH0ACAEQf////8ASw0AGkGFASAEQf///z9LDQAaQZYBIARB////H0sNABpBpwEgBEH///8PSw0AGkG4ASAEQf///wdLDQAaQckBIARB////A0sNABpB2gEgBEH///8BSw0AGkEAQesBIARBgICAAUkbCyIGQQR2IAdNDQIMCAsgBEEfdkHsFmoLLQAAIQYLIAZFBEAMBgsgCSAIQQJ0aiAGQQR2IgNBAWo2AgAgByADayEHIAIgBkEPcSIDayECIAQgA3QhBAwBCyAJIAhBAnRqQQE2AgBBACEHCyAIQQFqIgggBUcNAAsgASAHQQJ0aiAJQUBrIAVBAnRqKAIANgIAQQEgB3QhBiAFRQ0BIApBAmshAyAFQQFxBH8gASAJIANBAnQiBGooAgAgB2oiB0ECdGogCUFAayAEaigCADYCAEEBIAd0IAZyIQYgCkEDawUgAwshBCADRQ0BA0AgASAJIARBAnQiBWooAgAgB2oiA0ECdGogCUFAayAFaigCADYCACABIAkgBEEBayIFQQJ0IgxqKAIAIANqIgdBAnRqIAlBQGsgDGooAgA2AgBBASADdCAGckEBIAd0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FUUEQANAIAMgAiIALQAAOgAAIAMgAC0AAToAASADIAAtAAI6AAIgAyAALQADOgADIAMgAC0ABDoABCADIAAtAAU6AAUgAyAALQAGOgAGIAMgAC0ABzoAByADQQhqIQMgAEEIaiECIAdBCGsiBw0ACyAAQQdqIQALIAMgAC0AACAOEAQaIAEgCGohASAKQQFrIgoNAAsMAwsgC0EHcSEQIAQgBmogDWogBCAPIAQgD0obQX9zaiANQQAgDUEAShtrQQdJIREDQCALIQcgASEDIAkhACAQIgIEQANAIAMgAC0AADoAACAHQQFrIQcgA0EBaiEDIABBAWohACACQQFrIgINAAsLIBFFBEADQCADIAAtAAA6AAAgAyAALQABOgABIAMgAC0AAjoAAiADIAAtAAM6AAMgAyAALQAEOgAEIAMgAC0ABToABSADIAAtAAY6AAYgAyAALQAHOgAHIANBCGohAyAAQQhqIQAgB0EIayIHDQALCyABIAhqIQEgCkEBayIKDQALDAILIA4EQCALQQdxIRAgBCAGaiANaiAEIA8gBCAPShtBf3NqIA1BACANQQBKG2tBB0khEQNAIAEgCS0AACAMEAQiFSAMaiEDIAshByAJIQIgECIBBEADQCADIAIiAC0AADoAACAHQQFrIQcgA0EBaiEDIABBAWohAiABQQFrIgENAAsLIBFFBEADQCADIAIiAC0AADoAACADIAAtAAE6AAEgAyAALQACOgACIAMgAC0AAzoAAyADIAAtAAQ6AAQgAyAALQAFOgAFIAMgAC0ABjoABiADIAAtAAc6AAcgA0EIaiEDIABBCGohAiAHQQhrIgcNAAsgAEEHaiEACyADIAAtAAAgDhAEGiAIIBVqIQEgCkEBayIKDQALDAILIAtBB3EhECAEIAZqIA1qIAQgDyAEIA9KG0F/c2ogDUEAIA1BAEoba0EHSSERA0AgASAJLQAAIAwQBCIBIAxqIQMgCyEHIAkhACAQIgIEQANAIAMgAC0AADoAACAHQQFrIQcgA0EBaiEDIABBAWohACACQQFrIgINAAsLIBFFBEADQCADIAAtAAA6AAAgAyAALQABOgABIAMgAC0AAjoAAiADIAAtAAM6AAMgAyAALQAEOgAEIAMgAC0ABToABSADIAAtAAY6AAYgAyAALQAHOgAHIANBCGohAyAAQQhqIQAgB0EIayIHDQALCyABIAhqIQEgCkEBayIKDQALDAELIAEgCCAKbGohAQsgEkUNACALQQdxIRAgBCAGaiANaiAEIA8gBCAPShtBf3NqIA1BACANQQBKG2tBB0khEQNAIAEhAyAMBEAgASAJLQAAIAwQBCAMaiEDCwJAIAtFBEAgCSEADAELIAshByAJIQAgECICBEADQCADIAAtAAA6AAAgB0EBayEHIANBAWohAyAAQQFqIQAgAkEBayICDQALCyARDQADQCADIAAtAAA6AAAgAyAALQABOgABIAMgAC0AAjoAAiADIAAtAAM6AAMgAyAALQAEOgAEIAMgAC0ABToABSADIAAtAAY6AAYgAyAALQAHOgAHIANBCGohAyAAQQhqIQAgB0EIayIHDQALCyAOBEAgAyAAQQFrLQAAIA4QBBoLIAEgCGohASAEIAlqIQkgEkEBayISDQALCwJAIBZFDQAgCSAEayEJIBdFBEAgFCAFa0EDcSIDBEADQCATQQFrIRMgASAJIAsQCCAIaiEBIANBAWsiAw0ACwsgFCAFQX9zakEDSQ0BA0AgASAJIAsQCCAIaiAJIAsQCCAIaiAJIAsQCCAIaiAJIAsQCCAIaiEBIBNBBGsiEw0ACwwBCyALQQdxIQUgBCAGaiANaiAEIA8gBCAPShtBf3NqIA1BACANQQBKG2tBB0khBANAIAEhAyAMBEAgASAJLQAAIAwQBCAMaiEDCwJAIAtFBEAgCSEADAELIAshByAJIQAgBSICBEADQCADIAAtAAA6AAAgB0EBayEHIANBAWohAyAAQQFqIQAgAkEBayICDQALCyAEDQADQCADIAAtAAA6AAAgAyAALQABOgABIAMgAC0AAjoAAiADIAAtAAM6AAMgAyAALQAEOgAEIAMgAC0ABToABSADIAAtAAY6AAYgAyAALQAHOgAHIANBCGohAyAAQQhqIQAgB0EIayIHDQALCyAOBEAgAyAAQQFrLQAAIA4QBBoLIAEgCGohASATQQFrIhMNAAsLC+kCAQN/IAFBA3RB8DZqIgMoAgAhBSADLQAEIQMgAUEDdEGwNWoiAS0ABCEEAkAgASgCAEEERgRAIAIgBEEBdGouAQAhASAFQQRGBEAgASACIANBAXRqLgEAakEBakEBdQ8LAn8gACgCzAEiAgRAIAAoAgQgAigCBEYMAQtBAAtFDQEgASAAKALMASADQQF0ai4BHGpBAWpBAXUPCyAFQQRGBEAgAiADQQF0ai4BACEBAn8gACgCyAEiAgRAIAAoAgQgAigCBEYMAQtBAAtFDQEgASAAKALIASAEQQF0ai4BHGpBAWpBAXUPCwJ/IAAoAsgBIgEEQCAAKAIEIAEoAgRGDAELQQALIgIEfyAAKALIASAEQQF0ai4BHAVBAAshAQJ/IAAoAswBIgQEQCAAKAIEIAQoAgRGDAELQQALRQ0AIAAoAswBIANBAXRqLgEcIQAgAkUEQCAADwsgACABakEBakEBdSEBCyABC/IDAQN/IAEoAgAiA0H///8HRwRAIAEoAgQhBCAAIAIgAkEDcSACQRBJIgIbQQJ0IgVB8ClqKAIAQRBBCCACGyICbGogBUGwKWooAgBqIgAgAyAALQAAakGwLmotAAA6AAAgASgCCCEDIAAgBCAALQABakGwLmotAAA6AAEgASgCDCEEIAAgAyAALQACakGwLmotAAA6AAIgACAEIAAtAANqQbAuai0AADoAAyABKAIUIQMgACACaiIAIAEoAhAgAC0AAGpBsC5qLQAAOgAAIAEoAhghBCAAIAMgAC0AAWpBsC5qLQAAOgABIAEoAhwhAyAAIAQgAC0AAmpBsC5qLQAAOgACIAAgAyAALQADakGwLmotAAA6AAMgASgCJCEDIAAgAmoiACABKAIgIAAtAABqQbAuai0AADoAACABKAIoIQQgACADIAAtAAFqQbAuai0AADoAASABKAIsIQMgACAEIAAtAAJqQbAuai0AADoAAiAAIAMgAC0AA2pBsC5qLQAAOgADIAEoAjQhAyAAIAJqIgAgASgCMCAALQAAakGwLmotAAA6AAAgASgCOCECIAAgAyAALQABakGwLmotAAA6AAEgASgCPCEBIAAgAiAALQACakGwLmotAAA6AAIgACABIAAtAANqQbAuai0AADoAAwsL8CUBFH8gAyAFaiIbIAEuAQAiDkECdWohDSAEIAZqIhwgAS4BAiIKQQJ1aiELIAIoAghBBHQhAyACKAIEQQR0IQQgACAGQQR0aiAFaiEJAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAOQQNxQQR0IApBA3FBAnRyQdA7aigCAA4PAAECAwQFBgcICQoLDA0ODwsgAigCACAJIA0gCyAEIAMgByAIQRAQDAwPCyACKAIAIAkgDSALQQJrIAQgAyAHIAhBABAjDA4LIAIoAgAhDiALQQJrIQwgAyEKIAchAyMAQcADayILJAACQAJAIA1BAEgNACAMQQBIDQAgAyANaiAESw0AIAggDGpBBWogCksNACAEIAxsIA1qIQ8MAQsgDiALIA0gDCAEIAogAyAIQQVqIAMQDCALIQ4gAyEECwJAIAhBAnYiFEUNACADRQ0AQcAAIANrIRYgBEEBdCESIARBAnQgA2shFUEAIARrIhdBAXQhGCAOIA9qIARqIg4gBEEFbGohCgNAIAMhDQNAIAkgDiASai0AACIMIAogEmotAAAgBCAKai0AACIZIAogGGotAAAiD2oiEGsgEEECdGtqIAotAAAiEyAKIBdqLQAAIhBqQRRsakEQakEFdUGwLmotAAA6ADAgCSAEIA5qLQAAIhEgGSAPIBBqIhpBBHRqIAwgE2oiGWtqIBogGWtBAnRqQRBqQQV1QbAuai0AADoAICAJIA4tAAAiGSATIAwgD2oiGkEEdGogECARaiITa2ogGiATa0ECdGpBEGpBBXVBsC5qLQAAOgAQIAkgDiAXai0AACAQIAwgEWoiDEEEdGogDyAZaiIPa2ogDCAPa0ECdGpBEGpBBXVBsC5qLQAAOgAAIA5BAWohDiAJQQFqIQkgCkEBaiEKIA1BAWsiDQ0ACyAJIBZqIQkgCiAVaiEKIA4gFWohDiAUQQFrIhQNAAsLIAtBwANqJAAMDQsgAigCACAJIA0gC0ECayAEIAMgByAIQQEQIwwMCyACKAIAIAkgDUECayALIAQgAyAHIAhBABAiDAsLIAIoAgAgCSANQQJrIAtBAmsgBCADIAcgCEEAEBcMCgsgAigCACAJIA1BAmsgC0ECayAEIAMgByAIQQAQIAwJCyACKAIAIAkgDUECayALQQJrIAQgAyAHIAhBAhAXDAgLIAIoAgAhDiAJIQogCyEJIAQhCyADIRAgCCEMQQAhBCMAQcADayIPJAAgB0EFaiEDAkACQCANQQJrIhNBAEgNACAJIAxqIBBLDQAgCUEASA0AIAMgE2ogC0sNACALIQMgCSEEDAELIA4gDyATIAkgCyAQIAMgDCADEAwgDyEOQQAhEwsCQCAMRQ0AIAdBAnYiFUUNAEEQIAdrIREgAyAHayEWIA4gAyAEbCATampBBWohEwNAIBNBAWstAAAhAyATQQJrLQAAIQkgE0EDay0AACEOIBNBBGstAAAhBCATQQVrLQAAIRAgFSEUA0AgCiATLQAAIgsgECAJIA5qIg1BBHRqIAMgBGoiEGsgDSAQa0ECdGpqQRBqQQV1QbAuai0AADoAACAKIBMtAAEiDSAEIAMgCWoiEEEEdGogCyAOaiIEa2ogECAEa0ECdGpBEGpBBXVBsC5qLQAAOgABIAogEy0AAiISIA4gAyALaiIEQQR0aiAJIA1qIg5raiAEIA5rQQJ0akEQakEFdUGwLmotAAA6AAIgCiATLQADIhcgCSALIA1qIgRBBHRqIAMgEmoiCWtqIAQgCWtBAnRqQRBqQQV1QbAuai0AADoAAyAKQQRqIQogE0EEaiETIAMhECALIQQgDSEOIBIhCSAXIQMgFEEBayIUDQALIAogEWohCiATIBZqIRMgDEEBayIMDQALCyAPQcADaiQADAcLIAIoAgAgCSANQQJrIAtBAmsgBCADIAcgCEEAECEMBgsgAigCACEOIAkhCiALQQJrIQ8gBCELIAMhEEEAIQkjAEGADmsiDCQAIAciBEEFaiEDAkACQCANQQJrIhFBAEgNACAPQQBIDQAgAyARaiALSw0AIAhBBWoiFiAPaiAQSw0AIAshAyAPIQkMAQsgDiAMQcAKaiARIA8gCyAQIAMgCEEFaiIWIAMQDCAMQcAKaiEOQQAhEQsCQCAWRQ0AIARBAnYiF0UNACADIARrIRggDiADIAlsIBFqakEFaiERIAwhDgNAIBFBAWstAAAhAyARQQJrLQAAIQsgEUEDay0AACENIBFBBGstAAAhCSARQQVrLQAAIRQgFyESA0AgDiARLQAAIg8gFCALIA1qIhBBBHRqIAMgCWoiFGsgECAUa0ECdGpqNgIAIA4gES0AASIQIAkgAyALaiIUQQR0aiANIA9qIglraiAUIAlrQQJ0ajYCBCAOIBEtAAIiFSANIAMgD2oiCUEEdGogCyAQaiINa2ogCSANa0ECdGo2AgggDiARLQADIhMgCyAPIBBqIglBBHRqIAMgFWoiC2tqIAkgC2tBAnRqNgIMIA5BEGohDiARQQRqIREgAyEUIA8hCSAQIQ0gFSELIBMhAyASQQFrIhINAAsgESAYaiERIBZBAWsiFg0ACwsCQCAIQQJ2Ig9FDQAgBEUNAEHAACAEayEXIAwgBEECdGoiAyAEQRRsaiERQQAgBGsiE0EDdCEWIARBA3QhECAEQQNsQQJ0IRQDQCAEIQ4DQCAKIAMgEGooAgAiCSAQIBFqKAIAIBEgBEECdCIVaigCACIYIBEgFmooAgAiC2oiDWsgDUECdGtqIBEoAgAiEiARIBNBAnQiGWooAgAiDWpBFGxqQYAEakEKdUGwLmotAAA6ADAgCiADIBVqKAIAIhUgGCALIA1qIhpBBHRqIAkgEmoiGGtqIBogGGtBAnRqQYAEakEKdUGwLmotAAA6ACAgCiADKAIAIhggEiAJIAtqIhpBBHRqIA0gFWoiEmtqIBogEmtBAnRqQYAEakEKdUGwLmotAAA6ABAgCiADIBlqKAIAIA0gCSAVaiIJQQR0aiALIBhqIgtraiAJIAtrQQJ0akGABGpBCnVBsC5qLQAAOgAAIANBBGohAyAKQQFqIQogEUEEaiERIA5BAWsiDg0ACyAKIBdqIQogESAUaiERIAMgFGohAyAPQQFrIg8NAAsLIAxBgA5qJAAMBQsgAigCACAJIA1BAmsgC0ECayAEIAMgByAIQQEQIQwECyACKAIAIAkgDUECayALIAQgAyAHIAhBARAiDAMLIAIoAgAgCSANQQJrIAtBAmsgBCADIAcgCEEBEBcMAgsgAigCACAJIA1BAmsgC0ECayAEIAMgByAIQQEQIAwBCyACKAIAIAkgDUECayALQQJrIAQgAyAHIAhBAxAXCyABLgEAIglBA3UgG0EBdmohAyABLgECIgFBA3UgHEEBdmohBCACKAIAIAIoAgQiDiACKAIIIgtsQQh0aiECIAAgBkECdEF4cWogBUEBdmpBgAJqIQUgCEEBdiEGIAdBAXYhByABQQdxIQggC0EDdCEAIA5BA3QhAQJAIAlBB3EiCUUNACAIRQ0AIAYhDUEAIQojAEGwAWsiDiQAIAciDEEBaiEGAkACQCADIgdBAEgNACAEQQBIDQAgBiAHaiABSw0AIAQgDWpBAWogAEsNACAAIQsgASEGIAQhCgwBCyACIA4gByAEIAEgACAGIA1BAWoiCyAGEAwgAiAAIAFsaiAOIAYgC2xqIAcgBCABIAAgBiALIAYQDCAOIQJBACEHCwJAIA1BAXYiBEUNACAMQQF2IgFFDQBBECAMayEXQQggCGshD0EIIAlrIRAgBkEBdCIUIAxrIRMgAiAGIApsaiAHaiEMIAUhAyAEIQ0DQCAMIBRqLQAAIAhsIA8gBiAMai0AACIAbGohEiAAIAhsIA8gDC0AAGxqIRUgASEAA0AgDEEBaiIRIBRqLQAAIRYgAyAQIBVsIAYgEWotAAAiFSAIbCAPIAwtAAFsaiIRIAlsakEgakEGdjoAACADIBAgEmwgCCAWbCAPIBVsaiISIAlsakEgakEGdjoACCAMLQACIRUgDEECaiIMIBRqLQAAIRYgAyAQIBFsIAYgDGotAAAiESAIbCAPIBVsaiIVIAlsakEgakEGdjoAASADIBAgEmwgCCAWbCAPIBFsaiISIAlsakEgakEGdjoACSADQQJqIQMgAEEBayIADQALIAwgE2ohDCADIBdqIQMgDUEBayINDQALIAVBQGshAyACIAogC2ogBmxqIAdqIQwDQCAMIBRqLQAAIAhsIA8gBiAMai0AACIAbGohEiAAIAhsIA8gDC0AAGxqIRUgASEAA0AgDEEBaiICIBRqLQAAIQUgAyAQIBVsIAIgBmotAAAiAiAIbCAPIAwtAAFsaiIHIAlsakEgakEGdjoAACADIBAgEmwgBSAIbCACIA9saiICIAlsakEgakEGdjoACCAMLQACIQUgDEECaiIMIBRqLQAAIQsgAyAHIBBsIAYgDGotAAAiByAIbCAFIA9saiIVIAlsakEgakEGdjoAASADIAIgEGwgCCALbCAHIA9saiISIAlsakEgakEGdjoACSADQQJqIQMgAEEBayIADQALIAwgE2ohDCADIBdqIQMgBEEBayIEDQALCyAOQbABaiQADwsgCQRAQQAhCyMAQZABayIOJAAgByINQQFqIQcCQAJAIAMiCEEASA0AIAQgBmogAEsNACAEQQBIDQAgByAIaiABSw0AIAEhByAEIQsMAQsgAiAOIAggBCABIAAgByAGIAcQDCACIAAgAWxqIA4gBiAHbGogCCAEIAEgACAHIAYgBxAMIA4hAiAGIQBBACEICwJAIAZBAXYiBkUNACANQQF2IgNFDQBBECANayEPQQggCWshDCAHQQF0IA1rIRAgAiAHIAtsaiAIaiEKIAUhBCAGIQ0DQCADIQEDQCAKQQFqIAdqLQAAIRQgByAKai0AACESIAQgCi0AASIVIAlsIAwgCi0AAGxqQQN0QSBqQQZ2OgAAIAQgCSAUbCAMIBJsakEDdEEgakEGdjoACCAKLQACIRIgCkECaiIKIAdqLQAAIRcgBCAJIBJsIAwgFWxqQQN0QSBqQQZ2OgABIAQgCSAXbCAMIBRsakEDdEEgakEGdjoACSAEQQJqIQQgAUEBayIBDQALIAogEGohCiAEIA9qIQQgDUEBayINDQALIAVBQGshBCACIAAgC2ogB2xqIAhqIQoDQCADIQEDQCAKQQFqIAdqLQAAIQAgByAKai0AACECIAQgCi0AASIFIAlsIAwgCi0AAGxqQQN0QSBqQQZ2OgAAIAQgACAJbCACIAxsakEDdEEgakEGdjoACCAKLQACIQIgCkECaiIKIAdqLQAAIQggBCACIAlsIAUgDGxqQQN0QSBqQQZ2OgABIAQgCCAJbCAAIAxsakEDdEEgakEGdjoACSAEQQJqIQQgAUEBayIBDQALIAogEGohCiAEIA9qIQQgBkEBayIGDQALCyAOQZABaiQADwsgCARAIAYhC0EAIQ0jAEGQAWsiCSQAAkACQCADIgZBAEgNACAEQQBIDQAgBiAHaiABSw0AIAQgC2pBAWogAEsNACAAIQ4gBCENDAELIAIgCSAGIAQgASAAIAcgC0EBaiIOIAcQDCACIAAgAWxqIAkgByAObGogBiAEIAEgACAHIA4gBxAMIAkhAiAHIQFBACEGCwJAIAtBAXYiC0UNACAHQQF2IgNFDQBBECAHayEQQQggCGshDCABQQF0Ig8gB2shFCACIAEgDWxqIAZqIQogBSEEIAshBwNAIAMhAANAIAogD2otAAAhEiAEIAwgCi0AAGwgASAKai0AACIVIAhsakEDdEEgakEGdjoAACAEIAwgFWwgCCASbGpBA3RBIGpBBnY6AAggCkEBaiISIA9qLQAAIRUgBCAMIAotAAFsIAEgEmotAAAiEiAIbGpBA3RBIGpBBnY6AAEgBCAMIBJsIAggFWxqQQN0QSBqQQZ2OgAJIARBAmohBCAKQQJqIQogAEEBayIADQALIAogFGohCiAEIBBqIQQgB0EBayIHDQALIAVBQGshBCACIA0gDmogAWxqIAZqIQoDQCADIQADQCAKIA9qLQAAIQIgBCAMIAotAABsIAEgCmotAAAiBSAIbGpBA3RBIGpBBnY6AAAgBCAFIAxsIAIgCGxqQQN0QSBqQQZ2OgAIIApBAWoiAiAPai0AACEFIAQgDCAKLQABbCABIAJqLQAAIgIgCGxqQQN0QSBqQQZ2OgABIAQgAiAMbCAFIAhsakEDdEEgakEGdjoACSAEQQJqIQQgCkECaiEKIABBAWsiAA0ACyAKIBRqIQogBCAQaiEEIAtBAWsiCw0ACwsgCUGQAWokAA8LIAIgBSADIAQgASAAIAcgBkEIEAwgAiAAIAFsaiAFQUBrIAMgBCABIAAgByAGQQgQDAvHAQEEfyAAKAIEIQICQCAAKAIMQQN0IAAoAhBrIgNBIE4EQCACKAAAIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZyciEBIAAoAggiAEUNASABIAB0IAItAARBCCAAa3ZyDwsgA0EBSARAQQAPCyACLQAAIAAoAggiAEEYaiIEdCEBIAAgA2pBCGsiAEEBSA0AA0AgAi0AASAEQQhrIgR0IAFyIQEgAEEISiEDIAJBAWohAiAAQQhrIQAgAw0ACwsgAQtAAAJAAkACQAJAAkACQCABDgUAAQIDBQQLIAAoAsgBDwsgACgCzAEPCyAAKALQAQ8LIAAoAtQBDwtBACEACyAAC1IBAn9BsMAAKAIAIgEgAEEDakF8cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQAUUNAQtBsMAAIAA2AgAgAQ8LQbTAAEEwNgIAQX8LNAEBfwJAIAFBEEsNACAAKAIEIAFBAnRqKAIAIgBFDQAgACgCFEECSQ0AIAAoAgAhAgsgAgs2ACACBEAgACABEAIPC0EBIQIgASAAQQEQAyIANgIAIABBf0cEfyABIABBAXM2AgBBAAVBAQsL0BcBH38jAEHQA2siBiQAIAEoAgghDSABIAEoAgQiCCACbCIUIANqEBwgASgCACEVIABBADYCCCAAQig3AhQgAEIANwIMIABBBjYCACADQQR0IQkCQAJAAkAgBEECaw4GAQAAAAABAAsgBkEANgIMIAYgDTYCGCAGIAg2AhQgBiAFNgIQIAVFBEAMAQsgBkHQAGogBkEMaiAGQRBqIAkgAkEEdEEAQQBBEEEQEA8MAQsgBkHQAGpBAEGAAxAEGiAVIBRBCHRqIAlqIQsgBkIANwNIIAZBQGtCADcDACAGQgA3AzggBkIANwMwIAZCADcDKCAGQgA3AyAgBkIANwMYIAZCADcDEAJ/AkAgAgRAIABBACAIa0HYAWxqKALEAQ0BC0EADAELIAYgCyAIQQR0ayIELQAFIAQtAARqIAQtAAZqIAQtAAdqIhggBC0AAyAELQACIAQtAAEgBC0AAGpqaiIXaiIFIAQtAA8gBC0ADiAELQANIAQtAAxqamoiGiAELQALIAQtAAogBC0ACSAELQAIampqIhlqIgRrIgc2AhQgBiAEIAVqIgo2AhBBASEbQQELIQUCQCANQQFrIAJGDQAgACAIQdgBbGooAsQBRQRADAELIAYgCyAIQQh0aiICLQAFIAItAARqIAItAAZqIAItAAdqIh4gAi0AAyACLQACIAItAAEgAi0AAGpqaiIfaiIEIAItAA8gAi0ADiACLQANIAItAAxqamoiICACLQALIAItAAogAi0ACSACLQAIampqIiFqIgJrIAdqIgc2AhQgBiACIARqIApqIgo2AhBBASEWIAVBAWohBQsCfwJAIANFDQAgAEEUaygCAEUNACAGIAtBAWsiAiAIQQZ0IhBqIgQgCEEEdCIJai0AACAELQAAaiAEIAhBBXQiDmotAABqIAQgCEEwbCIPai0AAGoiHCACIA9qLQAAIAIgDmotAAAgAiAJai0AACACLQAAampqIh1qIgwgBCAQaiICIBBqIgQgCWotAAAgBC0AAGogBCAOai0AAGogBCAPai0AAGoiECACIA9qLQAAIAIgDmotAAAgAiAJai0AACACLQAAampqIg5qIgJrIgQ2AiAgBiACIAxqIApqIgo2AhBBASEPIAVBAWohCUEBDAELQQAhBCAFIQlBAAshAgJAAkACQAJAAkAgAyAIQQFrRwRAIAAoApwDDQELQQAhDCAFDQEMAgsgBCALQRBqIgQgCEEGdCIRaiIAIAhBBHQiDGotAAAgAC0AAGogACAIQQV0IhJqLQAAaiAAIAhBMGwiE2otAABqIAQgE2otAAAgBCASai0AACAEIAxqLQAAIAstABBqampqIgsgACARaiIAIBFqIgQgDGotAAAgBC0AAGogBCASai0AAGogBCATai0AAGoiESAAIBNqLQAAIAAgEmotAAAgACAMai0AACAALQAAampqIgBqIgxraiEEIAsgDGogCmohCkEBIQwgAkEBaiECIAlBAWohCSAPRSAFQQBHckUEQCAcIB1qIA5qIBBqIAAgC2ogEWpr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IAhrQQJ0ampBEGpBBXVBsC5qLQAAIAAtABBqQQFqQQF2OgAQIAAgAiALai0AACAHIAQgEGoiBEEEdGogBSANaiIFayAEIAVrQQJ0ampBEGpBBXVBsC5qLQAAIAAtAABqQQFqQQF2OgAAIAJBAWohAiAAQQFqIQAgAUEBaiEBIANBAWsiAw0ACyAAIBFqIQAgASAPaiEBIAIgD2ohAiAKQQFrIgoNAAsLIBJBwANqJAALtQUBBH8gACgCFCEDIAAoAhAhBCAAKAIEIQUgACgCDCICIAEpAgA3AgAgAiABKQIINwIIIAIgBUEEdCIAaiICIAEpAhA3AgAgAiABKQIYNwIIIAAgAmoiAiABKQIgNwIAIAIgASkCKDcCCCAAIAJqIgIgASkCMDcCACACIAEpAjg3AgggACACaiICIAEpAkA3AgAgAiABKQJINwIIIAAgAmoiAiABKQJQNwIAIAIgASkCWDcCCCAAIAJqIgIgASkCYDcCACACIAEpAmg3AgggACACaiICIAEpAnA3AgAgAiABKQJ4NwIIIAAgAmoiAiABKQKAATcCACACIAEpAogBNwIIIAAgAmoiAiABKQKQATcCACACIAEpApgBNwIIIAAgAmoiAiABKQKgATcCACACIAEpAqgBNwIIIAAgAmoiAiABKQKwATcCACACIAEpArgBNwIIIAAgAmoiAiABKQLAATcCACACIAEpAsgBNwIIIAAgAmoiAiABKQLQATcCACACIAEpAtgBNwIIIAAgAmoiAiABKQLgATcCACACIAEpAugBNwIIIAAgAmoiACABKQLwATcCACAAIAEpAvgBNwIIIAQgASkCgAI3AgAgBCAFQQN0IgBqIgQgASkCiAI3AgAgACAEaiIEIAEpApACNwIAIAAgBGoiBCABKQKYAjcCACAAIARqIgQgASkCoAI3AgAgACAEaiIEIAEpAqgCNwIAIAAgBGoiBCABKQKwAjcCACAAIARqIAEpArgCNwIAIAMgASkCwAI3AgAgACADaiIDIAEpAsgCNwIAIAAgA2oiAyABKQLQAjcCACAAIANqIgMgASkC2AI3AgAgACADaiIDIAEpAuACNwIAIAAgA2oiAyABKQLoAjcCACAAIANqIgMgASkC8AI3AgAgACADaiABKQL4AjcCAAsDAAELqAwBCn8CQCABQQRPBEBBACADayIMQQF0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aiICIAYoAgA2AgAgAiAGKAIkNgIMIAIgBigCHDYCBCACIAYoAiA2AgggACAEQQFqNgIQIAZBADYCGCAGKAIUDQAgACABQQFrIgE2AiwLIAEgA0sNAAsMAQsgASgCACECIAAoAgwgACgCECIDQQR0aiIBIAU2AgwgASACNgIAIAEgBzYCCCABIAY2AgQgACADQQFqNgIQIAAoAhwhAwsgACgCACADQQFqECYLC14BAX8gAEHECWoiACgCFCIEIAAoAhBJBH8gACAEQQFqNgIUIAAoAgwgBEEEdGoFQQALIgBFBEBBAA8LIAEgACgCBDYCACACIAAoAgw2AgAgAyAAKAIINgIAIAAoAgALtAMBA38DQCAAIAJBAnRqIgEoAhQiAwRAIAMoAigQBSABKAIUQQA2AiggASgCFCgCVBAFIAEoAhRBADYCVCABKAIUEAUgAUEANgIUCyACQQFqIgJBIEcNAAtBACECA0AgACACQQJ0aiIBKAKUASIDBEAgAygCFBAFIAEoApQBQQA2AhQgASgClAEoAhgQBSABKAKUAUEANgIYIAEoApQBKAIcEAUgASgClAFBADYCHCABKAKUASgCLBAFIAEoApQBQQA2AiwgASgClAEQBSABQQA2ApQBCyACQQFqIgJBgAJHDQALIAAoArAaEAUgAEEANgKwGiAAKAK8CRAFIABBADYCvAkgACgClAkQBSAAQQA2ApQJIAAoArwaIgEEQCABEAUgAEEANgK8GgtBACEBQQAhAwJAIABBxAlqIgIoAgAiAEUNACACKAIcQX9GBEAgACEBDAELIAAhAQNAIAEgA0EobCIAaigCBBAFIAIoAgAiASAAakEANgIEIANBAWoiAyACKAIcQQFqSQ0ACwsgARAFIAJBADYCACACKAIEEAUgAkEANgIEIAIoAgwQBSACQQA2AgwL/tEDAkN/An4jAEGQAWsiGCQAIBhBADYCDAJAAkACQCAAKAKQGkUNACAAKAKUGiABRw0AIBggAEGsGmooAgA2AiAgGCAAQaQaaikCADcDGCAAKQKcGiFIIBhBADYCICAYQQA2AhggGCBINwMQIBggSD4CFCAEIAAoApgaNgIADAELQQYhIgJ/IAEhCAJAAkAgAkEESQ0AIAgtAAANACAILQABDQAgCC0AAiINQQFLDQBBAyEGIAhBA2ohBUECIQcCQANA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NgIEIAEgA0EIahACIgINACADKAIIQR9LBEBBASECDAELIAEgBUEMahACIgINAEEBIQIgBSgCDCIEQQxLDQAgA0EBIARBBGp0NgIMIAEgBUEMahACIgINACAFKAIMIgJBAksEQEEBIQIMAQsgAyACNgIQAkACQAJAIAIOAgABAgsgASAFQQxqEAIiAg0CIAUoAgwiAkEMSwRAQQEhAgwDCyADQQEgAkEEanQ2AhQMAQtBASECIAFBARADIgRBf0YNASADIARBAUY2AhggASADQRxqEAYiAg0BIAEgA0EgahAGIgINASABIANBJGoQAiICDQFBASECIAMoAiQiBEH/AUsNASAEBEAgAyAEQQJ0EAoiAjYCKCACRQRAQf//AyECDAMLIAEgAhAGIgINAkEBIQYDQCAGIAMoAiRPDQIgBkECdCECIAZBAWohBiABIAIgAygCKGoQBiICRQ0ACwwCCyADQQA2AigLIAEgA0EsahACIgINAEEBIQIgAygCLEEQSw0AIAFBARADIgRBf0YNACADIARBAUY2AjAgASAFQQxqEAIiAg0AIAMgBSgCDEEBajYCNCABIAVBDGoQAiICDQBBASECIAMgBSgCDEEBajYCOCABQQEQA0EBakECSQ0AIAFBARADQX9GDQAgAUEBEAMiBEF/Rg0AIAMgBEEBRiICNgI8AkAgAkUEQCADKAI4IQkgAygCNCEGDAELIAEgA0FAaxACIgINASABIANBxABqEAIiAg0BIAEgA0HIAGoQAiICDQEgASADQcwAahACIgINAUEBIQIgAygCQCADKAJEQX9zIAMoAjQiBkEDdGpKDQEgAygCSCADKAJMQX9zIAMoAjgiCUEDdGpKDQELIAYgCWwhAkH/////ByEGAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADKAIEQQprDioAAQIDEBAQEBAQBAUGEBAQEBAQEAcICRAQEBAQEBAKCwwQEBAQEBAQDQ4QC0GApAkhBCACQeMASwwOC0GAjBUhBCACQYwDSwwNC0GA2DchBCACQYwDSwwMC0GA2DchBCACQYwDSwwLC0GA2DchBCACQYwDSwwKC0GAsO8AIQQgAkGYBksMCQtBgOy9ASEEIAJB1AxLDAgLQYDsvQEhBCACQdQMSwwHC0GA8KUDIQQgAkGQHEsMBgtBgIDg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OA0CIAEoAgAhEANAQQAhBEH/////ByEDQQAhAgNAIBAgAkEobGoiCigCGARAIAogBCAKKAIQIgogA0giDxshBCAKIAMgDxshAwsgAkEBaiICIAdNDQALAkAgBEUNACABKAIMIAEoAhAiA0EEdGoiAiAEKAIANgIAIAIgBCgCJDYCDCACIAQoAhw2AgQgAiAEKAIgNgIIIAEgA0EBajYCECAEQQA2AhggBCgCFA0AIAEgBkEBayIGNgIsCyAGIAdPDQALCyABKAIAIgMgB0EobGoiAiAFNgIMIAJCgICAgBA3AhAgAkEANgIYIAIgBTYCCCABIAlBAWo2AiggASAGQQFqNgIsIAMgB0EBahAmIAVBAWogASgCICIGcCIFIAhHDQALAkAgASgCECIJRQ0AIAEoAgAiBiABKAIcIgNBKGxqIgUoAgAhBCABKAIMIQdBACECA0AgBCAHIAJBBHRqKAIARwRAIAkgAkEBaiICRw0BDAILCyADRQ0AQQAhAgNAIAsgBiACQShsaiIJKAIARwRAIAMgAkEBaiICRw0BDAILCyAJIAQ2AgAgBSALNgIACyANDQQgASgCMCECDAILA0AMAAsACyANDQILIAIgCEYNACABIAggASgCICIBakEBayABcDYCMAtBAAwCCyABIAg2AjBBAAwBCyANCw0DCyAAQcQJaiIBIAEoAgAgASgCHEEobGoiATYCCCAAIAEoAgA2ArgKCyAAQdgKaiAdQdwHEAghFCAAQQE2AqQJIAAgGCkDiAE3AtAKIAAoApQJIQ0gAEGYC2ooAgAhA0EAIQlBACEQIAAoAhAiASgCNCIKIAEoAjgiBWwhBgJAIAAoAgwiASgCDCIHQQFGBEAgDUEAIAZBAnQQBBoMAQsCQAJAAkAgASgCECICQQNrQQJNBEAgASgCJCADbCIDIAYgAyAGSRshDyABKAIgIQMgAkF+cUEERw0BIAYgD2sgDyADGyEJCwJAAkACQAJAAkACQCACDgYBAgMABQQACyAGRQ0HIAZBA3EhECABKAIsIQJBACEBIAZBAWtBA08EQCAGQXxxIQQDQCANIAFBAnQiA2ogAiADaigCADYCACANIANBBHIiCWogAiAJaigCADYCACANIANBCHIiCWogAiAJaigCADYCACANIANBDHIiA2ogAiADaigCADYCACABQQRqIQEgBEEEayIEDQALCyAQRQ0HA0AgDSABQQJ0IgNqIAIgA2ooAgA2AgAgAUEBaiEBIBBBAWsiEA0ACwwHCyAHRQ0FIAEoAhQhA0EAIQkDQEEAIRAgBiAJTQ0HA0AgAyAQQQJ0aiIFKAIAIQQCQCAGIAlNDQAgBEUNAEEBIQEgCSECA0AgDSACQQJ0aiAQNgIAIAEgBSgCACIETw0BIAEgCWoiAiAGTw0BIAFBAWohAQwACwALIAcgEEEBaiIQS0EAIAYgBCAJaiIJSxsNAAsgBiAJSw0ACwwGCyAGRQ0FQQAhAQNAIA0gAUECdGogASAKbiICIAdsQQF2IAEgAiAKbGtqIAdwNgIAIAFBAWoiASAGRw0ACwwFCyABKAIcIQUgASgCGCEIAkAgBkUNACAHQQFrIQEgBkEHcSEQQQAhCSAGQQFrQQdPBEAgBkF4cSEEA0AgDSAJQQJ0IgJqIAE2AgAgDSACQQRyaiABNgIAIA0gAkEIcmogATYCACANIAJBDHJqIAE2AgAgDSACQRByaiABNgIAIA0gAkEUcmogATYCACANIAJBGHJqIAE2AgAgDSACQRxyaiABNgIAIAlBCGohCSAEQQhrIgQNAAsLIBBFDQADQCANIAlBAnRqIAE2AgAgCUEBaiEJIBBBAWsiEA0ACwsgB0ECayEBA0ACQCAIIAEiAkECdCIBaigCACIDIApuIgQgASAFaigCACIBIApuIglLDQAgAyAEIApsayIDIAEgCSAKbGsiBksNAANAIAQgCmwhByADIQEDQCANIAEgB2pBAnRqIAI2AgAgAUEBaiIBIAZNDQALIARBAWoiBCAJTQ0ACwsgAkEBayEBIAINAAsMBAsgCkUNAyAFRQ0DQQEgASgCICIHayEIIAVBfnEhBiAFQQFxIQtBACEDA0AgAyEBQQAhAiAGIQQgBUEBRwRAA0AgDSACIApsIBBqQQJ0aiAHIAggASAJSRs2AgAgDSACQQFyIApsIBBqQQJ0aiAHIAggAUEBaiAJSRs2AgAgAkECaiECIAFBAmohASAEQQJrIgQNAAsLIAsEQCANIAIgCmwgEGpBAnRqIAcgCCABIAlJGzYCAAsgAyAFaiEDIBBBAWoiECAKRw0ACwwDCyAGRQ0CQQEgASgCICICayEDIAZBA3EhBEEAIQEgBkEBa0EDTwRAIAZBfHEhBQNAIA0gAUECdGogAiADIAEgCUkbNgIAIA0gAUEBciIGQQJ0aiACIAMgBiAJSRs2AgAgDSABQQJyIgZBAnRqIAIgAyAGIAlJGzYCACANIAFBA3IiBkECdGogAiADIAYgCUkbNgIAIAFBBGohASAFQQRrIgUNAAsLIARFDQIDQCANIAFBAnRqIAIgAyABIAlJGzYCACABQQFqIQEgBEEBayIEDQALDAILAkAgBkUNACAGQQdxIQlBACECIAZBAWtBB08EQCAGQXhxIRADQCANIAJBAnQiAWpBATYCACANIAFBBHJqQQE2AgAgDSABQQhyakEBNgIAIA0gAUEMcmpBATYCACANIAFBEHJqQQE2AgAgDSABQRRyakEBNgIAIA0gAUEYcmpBATYCACANIAFBHHJqQQE2AgAgAkEIaiECIBBBCGsiEA0ACwsgCUUNAANAIA0gAkECdGpBATYCACACQQFqIQIgCUEBayIJDQALCyAPRQ0BIApBAWshDCAFQQFrIR1BASADQQF0IgFrIQQgAUEBayEGIANBAWshAiAFIANrQQF2IgghCyAKIANrQQF2IgchCSAIIQUgByEBQQAhEANAIA0gBSAKbCABakECdGoiESgCACIbQQFGBEAgEUEANgIACyAbQQFGIRECQAJAIAJBf0cNACABIAlHDQBBACECIAYhAyAJQQEgCUEBShtBAWsiASEJDAELAkAgAkEBRw0AIAEgB0cNAEEAIQIgBCEDIAdBAWoiASAMIAEgDEgbIgEhBwwBCwJAIANBf0cNACAFIAtHDQBBACEDIAQhAiALQQEgC0EBShtBAWsiBSELDAELAkAgA0EBRw0AIAUgCEcNAEEAIQMgBiECIAhBAWoiBSAdIAUgHUgbIgUhCAwBCyADIAVqIQUgASACaiEBCyAQIBFqIhAgD0kNAAsMAQsgBkUNAANADAALAAsLIABBxAlqIggQJEEPISICfyAAQeQKaigCACEFIABBhAtqKAIAIQlBACECIAgoAigiAwRAIAgoAgAhBANAIAQgAkEobGoiASgCFEEBa0EBTQRAIAEgBSABKAIMIgFJBH8gASAIKAIgawUgAQs2AggLIAJBAWoiAiADRw0ACwtBACAAQZwLaiINKAIARQ0AGkEAIQZBACANKAIEIgJBAksNABogBSEBA0ACQAJAAkACQAJAAkACQAJAIAIOAwABAwELIAEgDSAGQQxsaigCCGsiAUF/Sg0BIAgoAiAgAWohAQwBCyANIAZBDGxqKAIIIAFqIgFBACAIKAIgIgIgASACSBtrIQELIAEiAyAFSwRAIAEgCCgCIGshAwtBASAIKAIYIgtFDQYaIAgoAgAhBEEAIQIDQCAEIAJBKGxqIgcoAhQiCkEBa0EBTQRAIAcoAgggA0YNAwtBASEHIAJBAWoiAiALRw0ACwwEC0EBIQcgCCgCGCIDRQ0DIA0gBkEMbGooAgwhCyAIKAIAIQRBACECA0AgBCACQShsaiIHKAIUQQNGBEAgBygCCCALRg0DC0EBIQcgAkEBaiICIANHDQALDAMLQQEgAkEASA0EGkEBIQcgCkEBSw0BDAILQQEhByACQQBIDQELIAYgCUkEQCAJIgQgBmtBA3EiBwRAA0AgCCgCBCIDIARBAnRqIAMgBEEBayIEQQJ0aigCADYCACAHQQFrIgcNAAsLIAZBf3MgCWpBA08EQANAIAgoAgQiByAEQQJ0IgNqIAcgA0EEayILaigCADYCACAIKAIEIgcgC2ogByADQQhrIgtqKAIANgIAIAgoAgQiByALaiAHIANBDGsiA2ooAgA2AgAgAyAIKAIEIgdqIAcgBEEEayIEQQJ0aigCADYCACAEIAZLDQALCyAIKAIAIQQLIAgoAgQgBkECdGogBCACQShsIgNqNgIAIAZBAWoiBiEEIAYiAiAJTQRAA0AgCCgCBCIHIAJBAnRqKAIAIgsgCCgCACADakcEQCAHIARBAnRqIAs2AgAgBEEBaiEECyACQQFqIgIgCU0NAAsLQQAhByANIAZBDGxqKAIEIgJBA0kNAQsLIAcLDQECfyAYQRBqIRsgAEG4CmohHUEAIQlBACEiIwBBwANrIiMkACAUKAIAIQQgACIgKAKwGiENICNBADYCDCAAQbAJakEANgIAIAAgACgCqAlBAWo2AqgJICMgFCgCMCAAKAIMKAI0ajYCCCAAQcQJaiEoIA1BDGohMAJAA0AgICgCvAkhAQJAIBQoAiQNACABIARB2AFsaigCxAFFDQBBASEGDAILIBQpAjQhSCAUKAI8IQIgICgCqAkhAyABIARB2AFsIilqIgEgICgCDCgCODYCGCABIAI2AhAgASBINwIIIAEgAzYCBAJAIBQoAgQiAUECRg0AIAkNACABQQdGDQAgGyAjQQxqEAIiBg0CICMoAgwiASAgKAKYCSAEa0sEQEEBIQYMAwsgAUUEQEEAIQkMAQsgMEEAQaQBEAQaIA1BADYCAEEBIQkLAkAgIygCDCIBBEAgIyABQQFrNgIMDAELQQAhCSAgKAK8CSApaiEHIBQoAgQhAiAUKAIsIQhBACEKIwBBEGsiBiQAIA1BAEGoEBAEIQUgGyAGQQRqEAIhAQJAAkACQAJAIAJBAmsOBgABAQEBAAELQQEhAiAGKAIEQQZqIgtBH0sNAiABRQ0BDAILQQEhAiAGKAIEQQFqIgtBH0sNASABDQELIAUgCzYCAAJAIAtBH0YEQANAIBsoAggEQCAbQQEQA0UNAQwECwsgBUHIAmohCwNAIAYgG0EIEAMiATYCBCABQX9GDQMgCyABNgIAIAtBBGohCyAKQQFqIgpBgANHDQALDAELQQIgC0EGRyALQQZJGyEQAkAgC0F+cUEERgRAIBsgBkEMahACDQEgBigCDCIBQQNLDQEgBSABNgKwASAbIAZBDGoQAg0BIAYoAgwiAUEDSw0BIAUgATYCtAEgGyAGQQxqEAINASAGKAIMIgFBA0sNASAFIAE2ArgBIBsgBkEMahACDQEgBigCDCIBQQNLDQEgBSABNgK8AQJAIAhBAkkNACALQQVGDQAgGyAGQQxqIAhBAksiARAUDQIgBigCDCIDIAhPDQIgBSADNgLAASAbIAZBDGogARAUDQIgBigCDCIDIAhPDQIgBSADNgLEASAbIAZBDGogARAUDQIgBigCDCIDIAhPDQIgBSADNgLIASAbIAZBDGogARAUDQIgBigCDCIBIAhPDQIgBSABNgLMAQsgBiAFKAKwASIBQQJNBH8gAUECdEHwNGooAgAFQQMLNgIMQQAhCwNAIBsgBkEIahAGIgINAiAFIAtBAnRqIgEgBigCCDsB0AEgGyAGQQhqEAYiAg0CIAEgBigCCDsB0gEgBiAGKAIMIgFBAWs2AgwgC0EBaiELIAENAAsgBiAFKAK0ASIBQQNJBH8gAUECdEHwNGooAgAFQQMLNgIMQQAhCwNAIBsgBkEIahAGIgINAiAFIAtBAnRqIgEgBigCCDsB4AEgGyAGQQhqEAYiAg0CIAEgBigCCDsB4gEgBiAGKAIMIgFBAWs2AgwgC0EBaiELIAENAAsgBiAFKAK4ASIBQQJNBH8gAUECdEHwNGooAgAFQQMLNgIMQQAhCwNAIBsgBkEIahAGIgINAiAFIAtBAnRqIgEgBigCCDsB8AEgGyAGQQhqEAYiAg0CIAEgBigCCDsB8gEgBiAGKAIMIgFBAWs2AgwgC0EBaiELIAENAAsgBiAFKAK8ASIBQQJNBH8gAUECdEHwNGooAgAFQQMLNgIMQQAhCwNAIBsgBkEIahAGIgINAiAFIAtBAnRqIgEgBigCCDsBgAIgGyAGQQhqEAYiAg0CIAEgBigCCDsBggIgBiAGKAIMIgFBAWs2AgwgC0EBaiELQQAhAiABDQALDAELQQAhAgJAAn8CQAJAAkAgEA4DAAQBBQsgBSAbEBAiAUEfdjYCDCABQX9KDQEgAUEBdCELQQAMAgsgCEECTwRAQQMhAyALQQNNBEAgC0ECdEH8NGooAgAhAwsgCEECSyEPQQEhAgNAIBsgBkEMaiAPEBQNBSAGKAIMIgEgCE8NBSAFIApBAnRqIAE2ApABIAMiAUEBayEDIApBAWohCiABDQALC0EDIQIgC0EDTQRAIAtBAnRB/DRqKAIAIQILQQAhCwNAIAIhASAbIAZBCGoQBiICDQQgBSALQQJ0aiIDIAYoAgg7AaABIBsgBkEIahAGIgINBCADIAYoAgg7AaIBIAFBAWshAiALQQFqIQsgAQ0AC0EAIQIMAwsgBSABQRx2NgJMIAFBBHQhC0EBCyECIAUgC0EfdjYCECAFIAtBf0wEfyALQQF0BSAFIAtBHHY2AlAgAkEBaiECIAtBBHQLIgFBH3Y2AhQgBSABQQBIBH8gAUEBdAUgBSABQRx2NgJUIAJBAWohAiABQQR0CyIBQR92NgIYIAUgAUEASAR/IAFBAXQFIAUgAUEcdjYCWCACQQFqIQIgAUEEdAsiAUEfdjYCHCAFIAFBAEgEfyABQQF0BSAFIAFBHHY2AlwgAkEBaiECIAFBBHQLIgFBH3Y2AiAgBSABQQBIBH8gAUEBdAUgBSABQRx2NgJgIAJBAWohAiABQQR0CyIBQR92NgIkIAUgAUEASAR/IAFBAXQFIAUgAUEcdjYCZCACQQFqIQIgAUEEdAsiAUEfdjYCKAJAIBsgAUEATgR/IAUgAUEcdjYCaCACQQFqBSACC0EDbEEIahALQX9HBEAgBSAbEBAiAUEfdjYCLAJ/IAFBf0wEQCABQQF0IQtBAAwBCyAFIAFBHHY2AmwgAUEEdCELQQELIQIgBSALQR92NgIwIAUgC0EASAR/IAtBAXQFIAUgC0EcdjYCcCACQQFqIQIgC0EEdAsiAUEfdjYCNCAFIAFBAEgEfyABQQF0BSAFIAFBHHY2AnQgAkEBaiECIAFBBHQLIgFBH3Y2AjggBSABQQBIBH8gAUEBdAUgBSABQRx2NgJ4IAJBAWohAiABQQR0CyIBQR92NgI8IAVBQGsgAUEASAR/IAFBAXQFIAUgAUEcdjYCfCACQQFqIQIgAUEEdAsiAUEfdjYCACAFIAFBAEgEfyABQQF0BSAFIAFBHHY2AoABIAJBAWohAiABQQR0CyIBQR92NgJEIAUgAUEASAR/IAFBAXQFIAUgAUEcdjYChAEgAkEBaiECIAFBBHQLIgFBH3Y2AkggAUEASAR/IAFBAXQFIAUgAUEcdjYCiAEgAkEBaiECIAFBBHQLIQEgGyACQQNsQQhqEAtBf0cNAQtBASECDAILIAZBAjYCCCAGIAE2AgwLQQEhAiAbIAZBDGoQAg0AIAYoAgwiAUEDSw0AIAUgATYCjAFBACECCyACDQECQCAQQQFHBEAgEEUhAyMAQRBrIgEkAEEBIQICQCAbIAFBDGoQAg0AIAEoAgwiCEEvSw0AIAZB0D9BgMAAIAMbIAhqLQAANgIEQQAhAgsgAUEQaiQAIAINAyAFIAYoAgQiATYCBCABRQ0CDAELIAUgBSgCACIBQQdrIgJBAnRBcHEiA0EwayADIAJBC0sbQQ9BACABQRJLG3I2AgQLQQEhAiAbIAZBDGoQBg0BIAYoAgwiAUFmSA0BIAFBGUoNASAFIAE2AggCfyAFQZACaiEDIAUoAgQhC0EAIQoCQAJAAkAgBSgCAEEHSQRAQQMhAgNAIAIhASALQQFxBEAgAyAKQQJ0akG4DWogGyADIApBBnRqQThqIAcgCiADEA1BEBAJIgJBEHY2AgAgAkEPcQ0EIAMgCkEBdGogAkEEdkH/AXE7AQAgAyAKQQFyIgVBAnRqQbgNaiAbIAMgBUEGdGpBOGogByAFIAMQDUEQEAkiAkEQdjYCACACQQ9xDQQgAyAFQQF0aiACQQR2Qf8BcTsBACADIApBAnIiBUECdGpBuA1qIBsgAyAFQQZ0akE4aiAHIAUgAxANQRAQCSICQRB2NgIAIAJBD3ENBCADIAVBAXRqIAJBBHZB/wFxOwEAIAMgCkEDciIFQQJ0akG4DWogGyADIAVBBnRqQThqIAcgBSADEA1BEBAJIgJBEHY2AgAgAkEPcQ0EIAMgBUEBdGogAkEEdkH/AXE7AQALIAtBAXYhCyABQQFrIQIgCkEEaiEKIAENAAsMAQsgGyADQbgMaiAHQQAgAxANQRAQCSICQQ9xDQEgAyACQQR2Qf8BcTsBMEEDIQIDQCACIQEgC0EBcQRAIAMgCkECdGpBuA1qIBsgAyAKQQZ0akE8aiAHIAogAxANQQ8QCSICQQ92NgIAIAJBD3ENAyADIApBAXRqIAJBBHZB/wFxOwEAIAMgCkEBciIFQQJ0akG4DWogGyADIAVBBnRqQTxqIAcgBSADEA1BDxAJIgJBD3Y2AgAgAkEPcQ0DIAMgBUEBdGogAkEEdkH/AXE7AQAgAyAKQQJyIgVBAnRqQbgNaiAbIAMgBUEGdGpBPGogByAFIAMQDUEPEAkiAkEPdjYCACACQQ9xDQMgAyAFQQF0aiACQQR2Qf8BcTsBACADIApBA3IiBUECdGpBuA1qIBsgAyAFQQZ0akE8aiAHIAUgAxANQQ8QCSICQQ92NgIAIAJBD3ENAyADIAVBAXRqIAJBBHZB/wFxOwEACyALQQF2IQsgAUEBayECIApBBGohCiABDQALCyALQQNxBEAgGyADQfgMakF/QQQQCSICQQ9xDQEgAyACQQR2Qf8BcTsBMiAbIANBiA1qQX9BBBAJIgJBD3ENASADIAJBBHZB/wFxOwE0C0EAIQIgC0ECcUUNACAbIAMgCkEGdGpBPGogByAKIAMQDUEPEAkiAUEPcQRAIAEMAwsgAyAKQQF0aiABQQR2Qf8BcTsBACADIApBAnRqQbgNaiABQQ92NgIAIBsgAyAKQQFqIgFBBnRqQTxqIAcgASADEA1BDxAJIgJBD3FFDQELIAIMAQsgAyABQQF0aiACQQR2Qf8BcTsBACADIAFBAnRqQbgNaiACQQ92NgIAIBsgAyAKQQJqIgFBBnRqQTxqIAcgASADEA1BDxAJIgJBD3EEQCACDAELIAMgAUEBdGogAkEEdkH/AXE7AQAgAyABQQJ0akG4DWogAkEPdjYCACAbIAMgCkEDaiIBQQZ0akE8aiAHIAEgAxANQQ8QCSICQQ9xBEAgAgwBCyADIAFBAXRqIAJBBHZB/wFxOwEAIAMgAUECdGpBuA1qIAJBD3Y2AgAgGyADIApBBGoiAUEGdGpBPGogByABIAMQDUEPEAkiAkEPcQRAIAIMAQsgAyABQQF0aiACQQR2Qf8BcTsBACADIAFBAnRqQbgNaiACQQ92NgIAIBsgAyAKQQVqIgFBBnRqQTxqIAcgASADEA1BDxAJIgJBD3EEQCACDAELIAMgAUEBdGogAkEEdkH/AXE7AQAgAyABQQJ0akG4DWogAkEPdjYCACAbIAMgCkEGaiIBQQZ0akE8aiAHIAEgAxANQQ8QCSICQQ9xBEAgAgwBCyADIAFBAXRqIAJBBHZB/wFxOwEAIAMgAUECdGpBuA1qIAJBD3Y2AgAgGyADIApBB2oiAUEGdGpBPGogByABIAMQDUEPEAkiAkEPcQRAIAIMAQsgAyABQQF0aiACQQR2Qf8BcTsBACADIAFBAnRqQbgNaiACQQ92NgIAQQALIQIgGyAbKAIIIBsoAgQgGygCAGtBA3RqNgIQIAINAQtBACECCyAGQRBqJAAgAiIGDQILAn8gICgCDCgCQCETICNBEGohASAgKAK8CSApaiIGIA0oAgAiKjYCACAGIAYoAsQBQQFqNgLEASAdIAQQHAJAAkACQAJAICoEQCAqQR9GBEAgBkEANgIUIAYoAsQBQQJPBEAgBkKQgMCAgIKACDcBHCAGQpCAwICAgoAINwFEIAZCkIDAgICCgAg3ATwgBkKQgMCAgIKACDcBNCAGQpCAwICAgoAINwEsIAZCkIDAgICCgAg3ASRBAAwHCyAGQRxqIQ8gDUHIAmohBUEXIQMgASECA0AgD0EQOwEAIAIgBSgCADoAACACIAUoAgQ6AAEgAiAFKAIIOgACIAIgBSgCDDoAAyACIAUoAhA6AAQgAiAFKAIUOgAFIAIgBSgCGDoABiACIAUoAhw6AAcgAiAFKAIgOgAIIAIgBSgCJDoACSACIAUoAig6AAogAiAFKAIsOgALIAIgBSgCMDoADCACIAUoAjQ6AA0gAiAFKAI4OgAOIAIgBSgCPDoADyADIgZBAWshAyAPQQJqIQ8gAkEQaiECIAVBQGshBSAGDQALIB0gARAYDAQLIAYgDSkCkAI3AhwgBiANKQG+AjcBSiAGIA0pArgCNwJEIAYgDSkCsAI3AjwgBiANKQKoAjcCNCAGIA0pAqACNwIsIAYgDSkCmAI3AiQgIygCCCELAkAgDSgCCCICRQ0AICMgAiALaiILNgIIICMgC0F/TAR/IAtBNGoFIAtBNEgNASALQTRrCyILNgIICyAGQRxqIQogBiALNgIUIA1ByA9qIQ8gDUHIAmohAgJAAkAgBigCAEEGTQRAIAovAQBFDQFBASEDIAIgC0EAIA8oAgAQB0UNAgwHCyAGLwFMBEACQCANQcgOaiIDKAI4IgUgAygCJCIHaiIIIAMoAjwiDCADKAIoIhFqIg5rIRAgByAFayIFIBEgDGsiB2shDCAFIAdqIREgCCAOaiEOIAMoAiwiBSADKAIMIgdqIgggAygCNCIZIAMoAiAiFmoiFWshEiAHIAVrIgUgFiAZayIHayEZIAUgB2ohFiAIIBVqIRUgAygCHCIFIAMoAggiB2oiCCADKAIwIhwgAygCECIeaiIkayEXIAcgBWsiBSAeIBxrIgdrIRwgBSAHaiEeIAggJGohJCADKAIUIgUgAygCACIHaiIIIAMoAhgiJSADKAIEIhpqIiFrISYgByAFayIFIBogJWsiB2shJSAFIAdqIRogCCAhaiEhIAtBkDxqLQAAIQggC0GgPWotAABBDGxB0DxqKAIAIQUgC0EMTwRAIAMgBSAIQQJrdCIFIBUgIWoiByAOICRqIghrbDYCMCADICEgFWsiCyAkIA5rIg5rIAVsNgIgIAMgCyAOaiAFbDYCECADIAcgCGogBWw2AgAgAyAWIBpqIgcgESAeaiIIayAFbDYCNCADIBogFmsiCyAeIBFrIhFrIAVsNgIkIAMgCyARaiAFbDYCFCADIAcgCGogBWw2AgQgAyAZICVqIgcgDCAcaiIIayAFbDYCOCADICUgGWsiCyAcIAxrIgxrIAVsNgIoIAMgCyAMaiAFbDYCGCADIAcgCGogBWw2AgggAyASICZqIgcgECAXaiIIayAFbDYCPCADICYgEmsiCyAXIBBrIhBrIAVsNgIsIAMgCyAQaiAFbDYCHCADIAcgCGogBWw2AgwMAQsgA0EBQQIgC0EGa0EGSRsiByAVICFqIgsgDiAkaiIuayAFbGpBAiAIayIIdTYCMCADICEgFWsiFSAkIA5rIg5rIAVsIAdqIAh1NgIgIAMgDiAVaiAFbCAHaiAIdTYCECADIAsgLmogBWwgB2ogCHU2AgAgAyAWIBpqIgsgESAeaiIOayAFbCAHaiAIdTYCNCADIBogFmsiFiAeIBFrIhFrIAVsIAdqIAh1NgIkIAMgESAWaiAFbCAHaiAIdTYCFCADIAsgDmogBWwgB2ogCHU2AgQgAyAZICVqIgsgDCAcaiIRayAFbCAHaiAIdTYCOCADICUgGWsiDiAcIAxrIgxrIAVsIAdqIAh1NgIoIAMgDCAOaiAFbCAHaiAIdTYCGCADIAsgEWogBWwgB2ogCHU2AgggAyASICZqIgsgECAXaiIMayAFbCAHaiAIdTYCPCADICYgEmsiESAXIBBrIhBrIAVsIAdqIAh1NgIsIAMgECARaiAFbCAHaiAIdTYCHCADIAsgDGogBWwgB2ogCHU2AgwLC0GwNCELQQ8hAwNAIAMhBSACIA0gCygCAEECdGpByA5qKAIAIgM2AgACQAJAIANFBEAgCi8BAEUNAQtBASEDIAIgBigCFEEBIA8oAgAQB0UNAQwJCyACQf///wc2AgALIAtBBGohCyAFQQFrIQMgD0EEaiEPIApBAmohCiACQUBrIQIgBQ0ACwwDCyACQf///wc2AgALIA1BiANqIQICQCAGLwEeBEBBASEDIAIgBigCFEEAIA1BzA9qKAIAEAdFDQEMBgsgAkH///8HNgIACyANQcgDaiECAkAgBi8BIARAQQEhAyACIAYoAhRBACANQdAPaigCABAHRQ0BDAYLIAJB////BzYCAAsgDUGIBGohAgJAIAYvASIEQEEBIQMgAiAGKAIUQQAgDUHUD2ooAgAQB0UNAQwGCyACQf///wc2AgALIA1ByARqIQICQCAGLwEkBEBBASEDIAIgBigCFEEAIA1B2A9qKAIAEAdFDQEMBgsgAkH///8HNgIACyANQYgFaiECAkAgBi8BJgRAQQEhAyACIAYoAhRBACANQdwPaigCABAHRQ0BDAYLIAJB////BzYCAAsgDUHIBWohAgJAIAYvASgEQEEBIQMgAiAGKAIUQQAgDUHgD2ooAgAQB0UNAQwGCyACQf///wc2AgALIA1BiAZqIQICQCAGLwEqBEBBASEDIAIgBigCFEEAIA1B5A9qKAIAEAdFDQEMBgsgAkH///8HNgIACyANQcgGaiECAkAgBi8BLARAQQEhAyACIAYoAhRBACANQegPaigCABAHRQ0BDAYLIAJB////BzYCAAsgDUGIB2ohAgJAIAYvAS4EQEEBIQMgAiAGKAIUQQAgDUHsD2ooAgAQB0UNAQwGCyACQf///wc2AgALIA1ByAdqIQICQCAGLwEwBEBBASEDIAIgBigCFEEAIA1B8A9qKAIAEAdFDQEMBgsgAkH///8HNgIACyANQYgIaiECAkAgBi8BMgRAQQEhAyACIAYoAhRBACANQfQPaigCABAHRQ0BDAYLIAJB////BzYCAAsgDUHICGohAgJAIAYvATQEQEEBIQMgAiAGKAIUQQAgDUH4D2ooAgAQB0UNAQwGCyACQf///wc2AgALIA1BiAlqIQICQCAGLwE2BEBBASEDIAIgBigCFEEAIA1B/A9qKAIAEAdFDQEMBgsgAkH///8HNgIACyANQcgJaiECAkAgBi8BOARAQQEhAyACIAYoAhRBACANQYAQaigCABAHRQ0BDAYLIAJB////BzYCAAsgDUGICmohAgJAIAYvAToEQEEBIQMgAiAGKAIUQQAgDUGEEGooAgAQB0UNAQwGCyACQf///wc2AgALIA1BiBBqIQ8gDUHICmohAgwBCyAGQgA3AhwgBkIANwFKIAZCADcCRCAGQgA3AjwgBkIANwI0IAZCADcCLCAGQgA3AiQgBiAjKAIINgIUDAELIAYoAhggBigCFGoiA0EzIANBM0gbIgNBACADQQBKG0ECdEHgPWooAgAhBQJAIAYvAU5FBEAgBi8BUEUNAQsgBUGgPWotAABBDGxB0DxqKAIAIQtBASEKIA1BiA9qIgMCfyAFQQZPBEBBACEKIAsgBUGQPGotAABBAWt0IQsLIAMoAgAiByADKAIIIghrIhAgAygCBCIMIAMoAgwiEWsiDmsgC2wgCnULNgIMIAMgDiAQaiALbCAKdTYCCCADIAcgCGoiByAMIBFqIghrIAtsIAp1NgIEIAMgByAIaiALbCAKdTYCACADIAMoAhwiByADKAIUIghqIhAgAygCGCIMIAMoAhAiEWoiDmogC2wgCnU2AhAgAyAIIAdrIgcgESAMayIIaiALbCAKdTYCGCADIA4gEGsgC2wgCnU2AhQgAyAIIAdrIAtsIAp1NgIcCyACIA1BiA9qKAIAIgM2AgACQAJAIANFBEAgBi8BPEUNAQtBASEDIAIgBUEBIA8oAgAQB0UNAQwECyACQf///wc2AgALIAIgDSgCjA8iAzYCQCACQUBrIQcCQAJAIANFBEAgBi8BPkUNAQtBASEDIAcgBUEBIA8oAgQQB0UNAQwECyAHQf///wc2AgALIAIgDSgCkA8iAzYCgAEgAkGAAWohBwJAAkAgA0UEQCAGQUBrLwEARQ0BC0EBIQMgByAFQQEgDygCCBAHRQ0BDAQLIAdB////BzYCAAsgAiANKAKUDyIDNgLAASACQcABaiEHAkACQCADRQRAIAYvAUJFDQELQQEhAyAHIAVBASAPKAIMEAdFDQEMBAsgB0H///8HNgIACyACIA0oApgPIgM2AoACIAJBgAJqIQcCQAJAIANFBEAgBi8BREUNAQtBASEDIAcgBUEBIA8oAhAQB0UNAQwECyAHQf///wc2AgALIAIgDSgCnA8iAzYCwAIgAkHAAmohBwJAAkAgA0UEQCAGLwFGRQ0BC0EBIQMgByAFQQEgDygCFBAHRQ0BDAQLIAdB////BzYCAAsgAiANKAKgDyIDNgKAAyACQYADaiEHAkACQCADRQRAIAYvAUhFDQELQQEhAyAHIAVBASAPKAIYEAdFDQEMBAsgB0H///8HNgIACyACIA0oAqQPIgM2AsADIAJBwANqIQICQAJAIANFBEAgBi8BSkUNAQtBASEDIAIgBUEBIA8oAhwQB0UNAQwECyACQf///wc2AgALICpBBkkNACABIQxBACEHQQAhHiMAQdAAayIRJAAgEUEgaiEIIBEhAwJAIARFDQAgHSgCACAEIB0oAgQiBW4iDyAFbCIBQQh0aiAEIAFrIgtBBHRqIQogBUEEdCECIB0oAgghECAEIAVJIg5FBEAgCCAKIAJBf3NqIgEtAAA6AAAgCCAKIAJrLQAAOgABIAggAS0AAjoAAiAIIAEtAAM6AAMgCCABLQAEOgAEIAggAS0ABToABSAIIAEtAAY6AAYgCCABLQAHOgAHIAggAS0ACDoACCAIIAEtAAk6AAkgCCABLQAKOgAKIAggAS0ACzoACyAIIAEtAAw6AAwgCCABLQANOgANIAggAS0ADjoADiAIIAEtAA86AA8gCCABLQAQOgAQIAggAS0AEToAESAIIAEtABI6ABIgCCABLQATOgATIAggAS0AFDoAFCAIQRVqIQgLIAsEQCADIApBAWsiAS0AADoAACADIAEgAmoiAS0AADoAASADIAEgAmoiAS0AADoAAiADIAEgAmoiAS0AADoAAyADIAEgAmoiAS0AADoABCADIAEgAmoiAS0AADoABSADIAEgAmoiAS0AADoABiADIAEgAmoiAS0AADoAByADIAEgAmoiAS0AADoACCADIAEgAmoiAS0AADoACSADIAEgAmoiAS0AADoACiADIAEgAmoiAS0AADoACyADIAEgAmoiAS0AADoADCADIAEgAmoiAS0AADoADSADIAEgAmoiAS0AADoADiADIAEgAmotAAA6AA8gA0EQaiEDCyAdKAIAIAUgEGwiEEEIdGogDyAFQQN0IgFsQQN0aiALQQN0aiEKIAFB+P///wdxIQEgDkUEQCAIIAogAUF/c2oiAi0AADoAACAIIAogAWstAAA6AAEgCCACLQACOgACIAggAi0AAzoAAyAIIAItAAQ6AAQgCCACLQAFOgAFIAggAi0ABjoABiAIIAItAAc6AAcgCCACQQhqIgItAAA6AAggCCAQQQZ0IAJqIgJBCGstAAA6AAkgCCACQQdrLQAAOgAKIAggAkEGay0AADoACyAIIAJBBWstAAA6AAwgCCACQQRrLQAAOgANIAggAkEDay0AADoADiAIIAJBAmstAAA6AA8gCCACQQFrLQAAOgAQIAggAi0AADoAEQsgC0UNACADIApBAWsiAi0AADoAACADIAEgAmoiAi0AADoAASADIAEgAmoiAi0AADoAAiADIAEgAmoiAi0AADoAAyADIAEgAmoiAi0AADoABCADIAEgAmoiAi0AADoABSADIAEgAmoiAi0AADoABiADIAEgAmoiAi0AADoAByADIAEgAmogECAFa0EGdGoiAi0AADoACCADIAEgAmoiAi0AADoACSADIAEgAmoiAi0AADoACiADIAEgAmoiAi0AADoACyADIAEgAmoiAi0AADoADCADIAEgAmoiAi0AADoADSADIAEgAmoiAi0AADoADiADIAEgAmotAAA6AA8LAkACQEECIAYoAgAiAUEGRyABQQZJG0EBRgRAAn8gDCEDIA1ByAJqIQgCfyAGKALIASIBBEAgBigCBCABKAIERgwBC0EACyELAkAgE0UNACALRQ0AQQAgC0ECIAYoAsgBKAIAIgFBBkcgAUEGSRtBAkYbIQsLAn8gBigCzAEiAQRAIAYoAgQgASgCBEYMAQtBAAshBQJAIBNFDQAgBUUNAEEAIAVBAiAGKALMASgCACIBQQZHIAFBBkkbQQJGGyEFCwJ/IAYoAtQBIgEEQCAGKAIEIAEoAgRGDAELQQALIQICQCATRQ0AIAJFDQBBAiAGKALUASgCACIBQQZHIAFBBkkbQQJHIQILAkACQAJAAkACQAJAIAYoAgBBAWpBA3EOAwABAgMLQQEgBUUNBRpBASEHIAMhAQNAIAEgES0AIToAACABIBEtACI6AAEgASARLQAjOgACIAEgES0AJDoAAyABIBEtACU6AAQgASARLQAmOgAFIAEgES0AJzoABiABIBEtACg6AAcgASARLQApOgAIIAEgES0AKjoACSABIBEtACs6AAogASARLQAsOgALIAEgES0ALToADCABIBEtAC46AA0gASARLQAvOgAOIAEgES0AMDoADyAHQRBGDQQgAUEQaiEBIAdBAWohBwwACwALQQEgC0UNBBogAyEBA0AgASAHIBFqIgItAAA6AAAgASACLQAAOgABIAEgAi0AADoAAiABIAItAAA6AAMgASACLQAAOgAEIAEgAi0AADoABSABIAItAAA6AAYgASACLQAAOgAHIAEgAi0AADoACCABIAItAAA6AAkgASACLQAAOgAKIAEgAi0AADoACyABIAItAAA6AAwgASACLQAAOgANIAEgAi0AADoADiABIAItAAA6AA8gAUEQaiEBIAdBAWoiB0EQRw0ACwwCCyADAn8CQCALRQ0AIAVFDQAgES0ADyARLQAwIBEtAA4gES0ALyARLQANIBEtAC4gES0ADCARLQAtIBEtAAsgES0ALCARLQAKIBEtACsgES0ACSARLQAqIBEtAAggES0AKSARLQAHIBEtACggES0ABiARLQAnIBEtAAUgES0AJiARLQAEIBEtACUgES0AAyARLQAkIBEtAAIgES0AIyARLQABIBEtACIgES0AISARLQAAampqampqampqampqampqampqampqampqampqampqakEQakEFdgwBCyALBEAgES0ADyARLQAOIBEtAA0gES0ADCARLQALIBEtAAogES0ACSARLQAIIBEtAAcgES0ABiARLQAFIBEtAAQgES0AAyARLQACIBEtAAAgES0AAWpqampqampqampqampqakEIakEEdgwBC0GAASAFRQ0AGiARLQAwIBEtAC8gES0ALiARLQAtIBEtACwgES0AKyARLQAqIBEtACkgES0AKCAR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BS0AAyAFLQACIAUtAAAgBS0AAWpqakECakECdiIDCyEGIAIgA0H/AXFBgYKECGwiAzYAHCACIAZB/wFxQYGChAhsIgY2ABggAiADNgAUIAIgBjYAECACIAM2AAwgAiAGNgAIIAIgAzYABCACIAY2AAACQCAZBEAgBS0AByAFLQAGIAUtAAUgBS0ABGpqaiIKQQJqQQJ2IQMgEEUEQCADIQYMAgsgAyEGIActAAggBy0AByAHLQAGIAogBy0ABWpqampBBGpBA3YhAwwBCyAQRQRAQYABIQNBgAEhBgwBCyAHLQAIIActAAcgBy0ABSAHLQAGampqQQJqQQJ2IQMgBy0ABCAHLQADIActAAEgBy0AAmpqakECakECdiEGCyACIANB/wFxQYGChAhsIgM2ADwgAiAGQf8BcUGBgoQIbCIGNgA4IAIgAzYANCACIAY2ADAgAiADNgAsIAIgBjYAKCACIAM2ACQgAiAGNgAgDAQLIBkNAkEBDAULQQEgEEUNBBogAiAHLQABOgAAIAIgBy0AAToACCACIActAAE6ABAgAiAHLQABOgAYIAIgBy0AAToAICACIActAAE6ACggAiAHLQABOgAwIAIgBy0AAToAOCACIActAAI6AAEgAiAHLQACOgAJIAIgBy0AAjoAESACIActAAI6ABkgAiAHLQACOgAhIAIgBy0AAjoAKSACIActAAI6ADEgAiAHLQACOgA5IAIgBy0AAzoAAiACIActAAM6AAogAiAHLQADOgASIAIgBy0AAzoAGiACIActAAM6ACIgAiAHLQADOgAqIAIgBy0AAzoAMiACIActAAM6ADogAiAHLQAEOgADIAIgBy0ABDoACyACIActAAQ6ABMgAiAHLQAEOgAbIAIgBy0ABDoAIyACIActAAQ6ACsgAiAHLQAEOgAzIAIgBy0ABDoAOyACIActAAU6AAQgAiAHLQAFOgAMIAIgBy0ABToAFCACIActAAU6ABwgAiAHLQAFOgAkIAIgBy0ABToALCACIActAAU6ADQgAiAHLQAFOgA8IAIgBy0ABjoABSACIActAAY6AA0gAiAHLQAGOgAVIAIgBy0ABjoAHSACIActAAY6ACUgAiAHLQAGOgAtIAIgBy0ABjoANSACIActAAY6AD0gAiAHLQAHOgAGIAIgBy0ABzoADiACIActAAc6ABYgAiAH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IAMgDiARakGwLmotAAA6AAEgAigCHCERIAEtAAshDiADIBIgE2pBsC5qLQAAOgACIAMgDiARakGwLmotAAA6AAMgAigCJCERIAEtABEhDiADIAVqIgMgAigCICABLQAQakGwLmotAAA6AAAgAigCKCESIAEtABIhEyADIA4gEWpBsC5qLQAAOgABIAIoAiwhESABLQATIQ4gAyASIBNqQbAuai0AADoAAiADIA4gEWpBsC5qLQAAOgADIAIoAjQhESABLQAZIQ4gAyAFaiIDIAIoAjAgAS0AGGpBsC5qLQAAOgAAIAIoAjghEiABLQAaIRMgAyAOIBFqQbAuai0AADoAASACKAI8IQIgAS0AGyEBIAMgEiATakGwLmotAAA6AAIgAyABIAJqQbAuai0AADoAAwwBCyABKAIIIQIgAyABKAIANgIAIAMgB2oiAyACNgIAIAEoAhghAiADIAdqIgMgASgCEDYCACADIAdqIAI2AgALIAZBAWoiBkEYRw0ACwwBCyAdIAsQGAsgEEEgaiQAIAgiAw0BC0EAIQMLIAMLIgYNASAgKAK8CSApaigCxAEhAgJ/QQAhAwJAIBsoAgxBA3QgGygCEGsiAUUNAEEBIQMgAUEISw0AQQEgAUEBa3QgGxAQQSAgAWt2RwwBCyADCyAjKAIMckEARyEBAkACQCAUKAIEQQJrDgYAAQEBAQABCyAgIAQ2ArAJC0EBIQZBACABICAoApQJICAoApgJIAQQHSIEGw0BICIgAkEBRmohIiABDQALICBBrAlqKAIAICJqIgEgICgCmAlLDQAgICABNgKsCUEAIQYLICNBwANqJAAgBgsEQCAgKALYCiEAQQAhAyAgKAKoCSECAkAgIEGwCWooAgAiAUUNACAAIAFBAWsiAU8EQCABIQAMAQsgICgCvAkhBANAAkAgBCABQdgBbGooAgQgAkcNACADQQFqIgMgICgCECgCNCIJQQogCUEKSxtJDQAgASEADAILIAFBAWsiASAASw0ACwsDQAJAICAoArwJIABB2AFsaiIBKAIEIAJHDQAgASgCxAEiA0UNACABIANBAWs2AsQBICAoApQJICAoApgJIAAQHSIADQELC0ENISIMAgtBACEiQQAhAgJAAkACQAJAAkAgIEH8CmooAgAEQCAAKAKYCSIERQ0DIARBA3EhBiAAKAK8CSED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IARrQQJ0IAtrIAZqQQRqQQN1IgMgAyAMShsgAyAKSBsiAyAEakGwLmotAAA6AAAgASAJIANrQbAuai0AADoAAAwBCyAKIAQgC2ogBkEBdGpBAmpBAnY6AAAgASAJIAtBAXRqIAZqQQJqQQJ2OgAACyANICBqIgFBBGohAyAHKAI0IQQCQCAIKAIcIAEtAAMiCSABLQAEIgZrIgsgC0EfdSILaiALc00NACAIKAIgIgwgA0ECay0AACILIAlrIgogCkEfdSIKaiAKc00NACAMIAEtAAUiCiAGayIOIA5BH3UiDmogDnNNDQAgBEEDTQRAIAEgBCAIKAIYakEBay0AACIBQX9zIgwgAUEBaiIOIAYgCWtBAnQgCmsgC2pBBGpBA3UiASABIA5KGyABIAxIGyIBIAlqQbAuai0AADoAAyADIAYgAWtBsC5qLQAAOgAADAELIAEgCSAKaiALQQF0akECakECdjoAAyADIAYgCkEBdGogC2pBAmpBAnY6AAALIAgoAhwgAyAdaiIBQQFrIgotAAAiAyABLQAAIglrIgYgBkEfdSIGaiAGc00NACAIKAIgIgwgAUECay0AACIGIANrIgsgC0EfdSILaiALc00NACAMIAEtAAEiCyAJayIOIA5BH3UiDmogDnNNDQAgBEEDTQRAIAogAyAEIAgoAhhqQQFrLQAAIgRBf3MiCiAEQQFqIgwgCSADa0ECdCALayAGakEEakEDdSIEIAQgDEobIAQgCkgbIgRqQbAuai0AADoAACABIAkgBGtBsC5qLQAAOgAADAELIAogAyALaiAGQQF0akECakECdjoAACABIAkgC0EBdGogBmpBAmpBAnY6AAALAkACQCAHKAIAIgEgBygCCCIMRw0AIAEgBygCEEcNACABIAcoAhhHDQAgAUUNASACIAEgCCAQQQxsaiIBIB0QGiANIAcoAgAgASAdEBoMAQsgAQRAIAggEEEMbGoiAyEJIAEgAygCAGpBAWstAAAiBEF/cyEBIARBAWohBgJAIAMoAgQiBCACIBFqIgwtAAAiCyACLQAAIgprIg4gDkEfdSIOaiAOc00NACAJKAIIIg4gAiAbai0AACISIAtrIhMgE0EfdSITaiATc00NACAOIAIgHWotAAAiEyAKayIUIBRBH3UiFGogFHNNDQAgDCABIAYgCiALa0ECdCATayAS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AAEAAAABAAAADgAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAAEAAAAOAAAABAAAAAQAAAD/AAAAAAAAAP8AAAAAAAAAAQAAAA4AAAABAAAADwAAAP8AAAAAAAAA/wAAAAAAAAABAAAADgAAAAEAAAAPAAAABAAAAAQAAAAEAAAABQAAAAQAAAACAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAAAABAAAAAIAAAAEAAAACAAAAP8AAAAAAAAA/wAAAAAAAAAEAAAAAgAAAAQAAAADAAAA/wAAAAAAAAD/AAAAAAAAAAQAAAACAAAABAAAAAMAAAAEAAAACAAAAAQAAAAJAAAABAAAAAYAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAAEAAAABgAAAAQAAAAMAAAA/wAAAAAAAAD/AAAAAAAAAAQAAAAGAAAABAAAAAcAAAD/AAAAAAAAAP8AAAAAAAAABAAAAAYAAAAEAAAABwAAAAQAAAAMAAAABAAAAA0AAAABAAAADgAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAAEAAAAOAAAA/wAAAAQAAAD/AAAAAAAAAP8AAAAAAAAAAQAAAAsAAAABAAAADgAAAP8AAAAAAAAA/wAAAAAAAAABAAAACwAAAAEAAAAOAAAABAAAAAEAAAD/AAAABAAAAAIAAAAKAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAAAAAgAAAAoAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAABAAAADwAAAAIAAAAKAAAA/wAAAAAAAAD/AAAAAAAAAAEAAAAPAAAAAgAAAAoAAAAEAAAABQAAAP8AAAAAAAAABAAAAAYAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAAEAAAABgAAAP8AAAAMAAAA/wAAAAAAAAD/AAAAAAAAAAQAAAADAAAABAAAAAYAAAD/AAAAAAAAAP8AAAAAAAAABAAAAAMAAAAEAAAABgAAAAQAAAAJAAAA/wAAAAwAAAD/AAAAAgAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAACAAAA/wAAAAgAAAD/AAAAAAAAAP8AAAAAAAAABAAAAAcAAAD/AAAAAgAAAP8AAAAAAAAA/wAAAAAAAAAEAAAABwAAAP8AAAACAAAABAAAAA0AAAD/AAAACAAAAAMAAAAPAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAAAAAwAAAA8AAAAAAAAABQAAAP8AAAAAAAAA/wAAAAAAAAADAAAADwAAAAEAAAAKAAAA/wAAAAAAAAD/AAAAAAAAAAMAAAAPAAAAAQAAAAoAAAAAAAAABQAAAAQAAAAAAAAAAQAAAAsAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAABAAAACwAAAAQAAAABAAAA/wAAAAAAAAD/AAAAAAAAAAEAAAALAAAAAQAAAA4AAAD/AAAAAAAAAP8AAAAAAAAAAQAAAAsAAAABAAAADgAAAAQAAAABAAAABAAAAAQAAAAAAAAABwAAAP8AAAAAAAAA/wAAAAAAAAD/AEHUJwsVBwAAAAAAAAANAAAA/wAAAAAAAAD/AEH0JwsVBwAAAAQAAAACAAAA/wAAAAAAAAD/AEGUKAvZAQcAAAAEAAAAAgAAAAAAAAANAAAABAAAAAgAAAAEAAAAAwAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAAQAAAADAAAABAAAAAkAAAD/AAAAAAAAAP8AAAAAAAAABAAAAAMAAAAEAAAABgAAAP8AAAAAAAAA/wAAAAAAAAAEAAAAAwAAAAQAAAAGAAAABAAAAAkAAAAEAAAADAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAADAAAAAgAAAAMAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAMAAAACAAAAAwAQfgpCwUEAAAABABBiCoLJQQAAAAEAAAACAAAAAgAAAAMAAAADAAAAAgAAAAIAAAADAAAAAwAQbEuC8gGAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAQAAAAQAAAAFAAAAAgAAAAMAAAAGAAAABwAAAAgAAAAJAAAADAAAAA0AAAAKAAAACwAAAA4AAAAPAAAAAAAAAAEAAAABAEGENQshAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAQAAAAIAAAACAEG0NQsFBQAAAAQAQcQ1C8kGBwAAAAQAAAACAAAABAAAAAEAAAAEAAAABAAAAAQAAAADAAAABAAAAAYAAAAAAAAADQAAAAQAAAAIAAAAAAAAAA8AAAAEAAAACgAAAAQAAAAJAAAABAAAAAwAAAAEAAAACwAAAAQAAAAOAAAAAAAAABEAAAAEAAAAEAAAAAAAAAATAAAABAAAABIAAAAAAAAAFQAAAAQAAAAUAAAAAAAAABcAAAAEAAAAFgAAAAEAAAAKAAAAAQAAAAsAAAAEAAAAAAAAAAQAAAABAAAAAQAAAA4AAAABAAAADwAAAAQAAAAEAAAABAAAAAUAAAAEAAAAAgAAAAQAAAADAAAABAAAAAgAAAAEAAAACQAAAAQAAAAGAAAABAAAAAcAAAAEAAAADAAAAAQAAAANAAAAAQAAABIAAAABAAAAEwAAAAQAAAAQAAAABAAAABEAAAABAAAAFgAAAAEAAAAXAAAABAAAABQAAAAEAAAAFQAAAAEAAAALAAAAAQAAAA4AAAAEAAAAAQAAAP8AAAAEAAAAAQAAAA8AAAACAAAACgAAAAQAAAAFAAAA/wAAAAAAAAAEAAAAAwAAAAQAAAAGAAAABAAAAAkAAAD/AAAADAAAAAQAAAAHAAAA/wAAAAIAAAAEAAAADQAAAP8AAAAIAAAAAQAAABMAAAACAAAAEgAAAAQAAAARAAAA/wAAABAAAAABAAAAFwAAAAIAAAAWAAAABAAAABUAAAD/AAAAFAAAAAMAAAAPAAAAAQAAAAoAAAAAAAAABQAAAAQAAAAAAAAAAQAAAAsAAAABAAAADgAAAAQAAAABAAAABAAAAAQAAAAAAAAABwAAAAQAAAACAAAAAAAAAA0AAAAEAAAACAAAAAQAAAADAAAABAAAAAYAAAAEAAAACQAAAAQAAAAMAAAAAwAAABMAAAABAAAAEgAAAAAAAAARAAAABAAAABAAAAADAAAAFwAAAAEAAAAWAAAAAAAAABUAAAAEAAAAFAAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwBBljwLLgEBAQEBAQICAgICAgMDAwMDAwQEBAQEBAUFBQUFBQYGBgYGBgcHBwcHBwgICAgAQdA8C0UKAAAADQAAABAAAAALAAAADgAAABIAAAANAAAAEAAAABQAAAAOAAAAEgAAABcAAAAQAAAAFAAAABkAAAASAAAAFwAAAB0AQaE9CzMBAgMEBQABAgMEBQABAgMEBQABAgMEBQABAgMEBQABAgMEBQABAgMEBQABAgMEBQABAgMAQeQ9C8wCAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAdAAAAHgAAAB8AAAAgAAAAIAAAACEAAAAiAAAAIgAAACMAAAAjAAAAJAAAACQAAAAlAAAAJQAAACUAAAAmAAAAJgAAACYAAAAnAAAAJwAAACcAAAAnAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAvHw8AFxsdHgcLDQ4nKy0uEAMFCgwTFRocIyUqLAECBAgREhQYBgkWGSAhIiQoJikAEAECBAggAwUKDA8vBwsNDgYJHyMlKiwhIiQoJystLhESFBgTFRocFxsdHhYZJikAQbDAAAsDMCJQ";if(!M.startsWith(T)){var DA=M;M=A.locateFile?A.locateFile(DA,S):S+DA}function oA(){var I=M;try{if(I==M&&q)return new Uint8Array(q);var Q=aA(I);if(Q)return Q;if(N)return N(I);throw"both async and sync fetching of the wasm failed"}catch(a){W(a)}}function UA(){return q||typeof fetch!="function"?Promise.resolve().then(function(){return oA()}):fetch(M,{credentials:"same-origin"}).then(function(I){if(!I.ok)throw"failed to load wasm binary file at \'"+M+"\'";return I.arrayBuffer()}).catch(function(){return oA()})}var H,v;function _(I){for(;0<I.length;){var Q=I.shift();if(typeof Q=="function")Q(A);else{var a=Q.u;typeof a=="number"?Q.s===void 0?z.get(a)():z.get(a)(Q.s):a(Q.s===void 0?null:Q.s)}}}var kA=typeof atob=="function"?atob:function(I){var Q="",a=0;I=I.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(I.charAt(a++)),y="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(I.charAt(a++)),k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(I.charAt(a++)),sA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(I.charAt(a++));t=t<<2|y>>4,y=(y&15)<<4|k>>2;var cA=(k&3)<<6|sA;Q+=String.fromCharCode(t),k!==64&&(Q+=String.fromCharCode(y)),sA!==64&&(Q+=String.fromCharCode(cA))}while(a<I.length);return Q};function aA(I){if(I.startsWith(T)){try{var Q=kA(I.slice(T.length)),a=new Uint8Array(Q.length);for(I=0;I<Q.length;++I)a[I]=Q.charCodeAt(I)}catch(t){throw Error("Converting base64 string to bytes failed.")}return a}}var JA={a:function(I,Q,a){r.copyWithin(I,Q,Q+a)},b:function(I){var Q=r.length;if(I>>>=0,2147483648<I)return!1;for(var a=1;4>=a;a*=2){var t=Q*(1+.2/a);t=Math.min(t,I+100663296),t=Math.max(I,t),0<t%65536&&(t+=65536-t%65536);A:{try{w.grow(Math.min(2147483648,t)-p.byteLength+65535>>>16),QA();var y=1;break A}catch(k){}y=void 0}if(y)return!0}return!1}};(function(){function I(y){A.asm=y.exports,w=A.asm.c,QA(),z=A.asm.r,EA.unshift(A.asm.d),K--,A.monitorRunDependencies&&A.monitorRunDependencies(K),K==0&&f&&(y=f,f=null,y())}function Q(y){I(y.instance)}function a(y){return UA().then(function(k){return WebAssembly.instantiate(k,t)}).then(y,function(k){L("failed to asynchronously prepare wasm: "+k),W(k)})}var t={a:JA};if(K++,A.monitorRunDependencies&&A.monitorRunDependencies(K),A.instantiateWasm)try{return A.instantiateWasm(t,I)}catch(y){return L("Module.instantiateWasm callback failed with error: "+y),!1}return function(){return q||typeof WebAssembly.instantiateStreaming!="function"||M.startsWith(T)||typeof fetch!="function"?a(Q):fetch(M,{credentials:"same-origin"}).then(function(y){return WebAssembly.instantiateStreaming(y,t).then(Q,function(k){return L("wasm streaming compile failed: "+k),L("falling back to ArrayBuffer instantiation"),a(Q)})})}().catch(E),{}})(),A.___wasm_call_ctors=function(){return(A.___wasm_call_ctors=A.asm.d).apply(null,arguments)},A._memcpy=function(){return(A._memcpy=A.asm.e).apply(null,arguments)},A._h264bsdInit=function(){return(A._h264bsdInit=A.asm.f).apply(null,arguments)},A._malloc=function(){return(A._malloc=A.asm.g).apply(null,arguments)},A._h264bsdDecode=function(){return(A._h264bsdDecode=A.asm.h).apply(null,arguments)},A._free=function(){return(A._free=A.asm.i).apply(null,arguments)},A._h264bsdShutdown=function(){return(A._h264bsdShutdown=A.asm.j).apply(null,arguments)},A._h264bsdNextOutputPicture=function(){return(A._h264bsdNextOutputPicture=A.asm.k).apply(null,arguments)},A._h264bsdNextOutputPictureRGBA=function(){return(A._h264bsdNextOutputPictureRGBA=A.asm.l).apply(null,arguments)},A._h264bsdPicWidth=function(){return(A._h264bsdPicWidth=A.asm.m).apply(null,arguments)},A._h264bsdPicHeight=function(){return(A._h264bsdPicHeight=A.asm.n).apply(null,arguments)},A._h264bsdCroppingParams=function(){return(A._h264bsdCroppingParams=A.asm.o).apply(null,arguments)},A._h264bsdAlloc=function(){return(A._h264bsdAlloc=A.asm.p).apply(null,arguments)},A._h264bsdFree=function(){return(A._h264bsdFree=A.asm.q).apply(null,arguments)},A.setValue=function(I,Q,a){switch(a=a||"i8",a.charAt(a.length-1)==="*"&&(a="i32"),a){case"i1":Y[I>>0]=Q;break;case"i8":Y[I>>0]=Q;break;case"i16":d[I>>1]=Q;break;case"i32":c[I>>2]=Q;break;case"i64":v=[Q>>>0,(H=Q,1<=+Math.abs(H)?0<H?(Math.min(+Math.floor(H/4294967296),4294967295)|0)>>>0:~~+Math.ceil((H-+(~~H>>>0))/4294967296)>>>0:0)],c[I>>2]=v[0],c[I+4>>2]=v[1];break;case"float":h[I>>2]=Q;break;case"double":m[I>>3]=Q;break;default:W("invalid type for setValue: "+a)}},A.getValue=function(I,Q){switch(Q=Q||"i8",Q.charAt(Q.length-1)==="*"&&(Q="i32"),Q){case"i1":return Y[I>>0];case"i8":return Y[I>>0];case"i16":return d[I>>1];case"i32":return c[I>>2];case"i64":return c[I>>2];case"float":return h[I>>2];case"double":return m[I>>3];default:W("invalid type for getValue: "+Q)}return null};var Z;f=function I(){Z||$(),Z||(f=I)};function $(){function I(){if(!Z&&(Z=!0,A.calledRun=!0,!O)){if(_(EA),C(A),A.onRuntimeInitialized&&A.onRuntimeInitialized(),A.postRun)for(typeof A.postRun=="function"&&(A.postRun=[A.postRun]);A.postRun.length;){var Q=A.postRun.shift();iA.unshift(Q)}_(iA)}}if(!(0<K)){if(A.preRun)for(typeof A.preRun=="function"&&(A.preRun=[A.preRun]);A.preRun.length;)LA();_(CA),0<K||(A.setStatus?(A.setStatus("Running..."),setTimeout(function(){setTimeout(function(){A.setStatus("")},1),I()},1)):I())}}if(A.run=$,A.preInit)for(typeof A.preInit=="function"&&(A.preInit=[A.preInit]);0<A.preInit.length;)A.preInit.pop()();return $(),g.ready}}();const GA=B=>B>=3&&B<=15,NA=B=>{switch(B){case 5:return"Memory allocation error";case 4:return"Failed to activate param set";case 6:return"Byte stream error";case 7:return"NAL unit error";case 8:return"Access unit boundary check error";case 9:return"Pending activation error";case 10:return"Sequence parameter set error";case 11:return"Picture parameter set error";case 12:return"Slice header error";case 13:return"Slice data error";case 14:return"Gaps in frame num error";case 15:return"Reordering error";case 3:default:return"Decode error"}},b=class{constructor(g){o(this,"h264Module");o(this,"decoderInstancePointer",0);o(this,"inputBufferPointer",0);o(this,"inputBufferLength",1024*1024);o(this,"bytesRead",0);o(this,"isIdrPointer",0);o(this,"picIdPointer",0);o(this,"numErrMbs",0);o(this,"croppingPointers",{croppingFlag:0,leftOffset:0,width:0,topOffset:0,height:0});o(this,"parameters");o(this,"getParameters",()=>this.parameters);o(this,"unload",()=>{this.shutdownDecoder(),this.h264Module._free(this.inputBufferPointer),this.h264Module._free(this.bytesRead),this.h264Module._free(this.isIdrPointer),this.h264Module._free(this.picIdPointer),this.h264Module._free(this.numErrMbs),this.h264Module._free(this.croppingPointers.croppingFlag),this.h264Module._free(this.croppingPointers.leftOffset),this.h264Module._free(this.croppingPointers.width),this.h264Module._free(this.croppingPointers.topOffset),this.h264Module._free(this.croppingPointers.height),this.inputBufferPointer=0,this.bytesRead=0,this.isIdrPointer=0,this.picIdPointer=0,this.numErrMbs=0,this.decoderInstancePointer=0,this.croppingPointers={croppingFlag:0,leftOffset:0,width:0,topOffset:0,height:0}});o(this,"shutdownDecoder",()=>{this.decoderInstancePointer!=0&&(this.h264Module._h264bsdShutdown(this.decoderInstancePointer),this.h264Module._h264bsdFree(this.decoderInstancePointer)),this.parameters=void 0});o(this,"initDecoder",()=>{this.decoderInstancePointer=this.h264Module._h264bsdAlloc(),this.h264Module._h264bsdInit(this.decoderInstancePointer,0)});o(this,"decode",g=>{if(g.byteLength>this.inputBufferLength){const i=this.h264Module._malloc(g.byteLength);this.h264Module._free(this.inputBufferPointer),this.inputBufferPointer=i}this.h264Module.HEAPU8.set(g,this.inputBufferPointer);let A=g.byteLength,C=0,E=0;do E=this.h264Module._h264bsdDecode(this.decoderInstancePointer,this.inputBufferPointer+C,A,0,this.bytesRead),C=this.h264Module.getValue(this.bytesRead,"i32"),A-=C;while(A>0&&!GA(E));switch(E){case 0:case 1:case 2:{if(E===1)return this.receiveFrame();if(E===2)return this.receiveHeader()}break;case 1024:break;default:throw new Error(NA(E))}});o(this,"receiveFrame",()=>{const g=this.h264Module._h264bsdNextOutputPicture(this.decoderInstancePointer,this.picIdPointer,this.isIdrPointer,this.numErrMbs);if(!g)return;if(!this.parameters){const C=this.h264Module._h264bsdPicWidth(this.decoderInstancePointer)*16,E=this.h264Module._h264bsdPicHeight(this.decoderInstancePointer)*16;this.h264Module._h264bsdCroppingParams(this.decoderInstancePointer,this.croppingPointers.croppingFlag,this.croppingPointers.leftOffset,this.croppingPointers.width,this.croppingPointers.topOffset,this.croppingPointers.height);const i=this.h264Module.getValue(this.croppingPointers.croppingFlag,"i32"),s=this.h264Module.getValue(this.croppingPointers.leftOffset,"i32"),S=this.h264Module.getValue(this.croppingPointers.width,"i32"),N=this.h264Module.getValue(this.croppingPointers.topOffset,"i32"),L=this.h264Module.getValue(this.croppingPointers.height,"i32");this.parameters={width:C,height:E,cropping:i?{left:s,top:N,width:S,height:L}:void 0}}const A=this.parameters.width*this.parameters.height*3/2;return this.h264Module.HEAPU8.subarray(g,g+A)});o(this,"receiveHeader",()=>{});this.h264Module=g,this.initDecoder(),this.inputBufferPointer=this.h264Module._malloc(this.inputBufferLength),this.bytesRead=g._malloc(4),this.isIdrPointer=g._malloc(4),this.picIdPointer=g._malloc(4),this.numErrMbs=g._malloc(4),this.croppingPointers={croppingFlag:g._malloc(4),leftOffset:g._malloc(4),width:g._malloc(4),topOffset:g._malloc(4),height:g._malloc(4)}}};let l=b;o(l,"create",()=>P(b,null,function*(){return new b(yield hA())}));const FA="missing_init_segment";class yA extends Error{constructor(A,C,E={}){super(A);o(this,"props");o(this,"extra",{});o(this,"code",()=>this.props.code);o(this,"isFatal",()=>this.props.isFatal);o(this,"source",()=>this.props.source);o(this,"type",()=>{var A;return(A=this.props.type)!=null?A:"external"});o(this,"toStringifiable",()=>{var E;const A=this.source(),C=A instanceof Error?A.stack:this.stack;return gA(IA({},this.extra),{code:this.props.code,isFatal:this.props.isFatal,type:this.props.type,message:this.message,sourceMessage:(E=this.source())==null?void 0:E.message,stack:C})});this.props=C,this.extra=E,Object.setPrototypeOf(this,new.target.prototype)}}const tA=(B,g)=>new yA(`No init segment for rendition id ${B} for channel ${g}`,{isFatal:!1,code:FA,type:"internal"}),BA=B=>{const{pictureParameterSets:g,sequenceParameterSets:A}=J(B.data),C=[...A,...g],E=new Uint8Array(C.reduce((s,S)=>s+S.byteLength+4,0));let i=0;return C.forEach(s=>{E[0+i]=0,E[1+i]=0,E[2+i]=0,E[3+i]=1,E.set(new Uint8Array(s),i+4),i+=s.byteLength+4}),E},x=class{constructor(g){o(this,"decodedSamples",[]);o(this,"decoder");o(this,"initSegments",new Map);o(this,"previousSample");o(this,"isWaitingForSync",!0);o(this,"unload",()=>{this.decoder.unload()});o(this,"initSegment",g=>{this.initSegments.set(g.renditionId,g)});o(this,"enqueue",g=>{var S,N,L,q;const A=this.initSegments.get(g.renditionId);if(!A)throw tA(g.renditionId,g.channelId);const C=((S=this.previousSample)==null?void 0:S.width)!==g.width||((N=this.previousSample)==null?void 0:N.height)!==g.height,E=((L=this.previousSample)==null?void 0:L.channelId)!==g.channelId,i=((q=this.previousSample)==null?void 0:q.renditionId)!==g.renditionId;if(this.previousSample){if(E||i||C){this.decoder.shutdownDecoder(),this.decoder.initDecoder();const w=BA(A);this.decoder.decode(w),this.isWaitingForSync=!0}}else{const w=BA(A);this.decoder.decode(w),this.isWaitingForSync=!0}if(this.previousSample){const w=this.previousSample;g.timestamp/g.timescale>(w.timestamp+w.duration*2)/w.timescale&&(this.isWaitingForSync=!0)}if(this.previousSample=g,this.isWaitingForSync&&!g.isSync)return;this.isWaitingForSync=!1;const s=Date.now();n(g.data,w=>{var Y,r,d,c;const O=new Uint8Array(w.buffer,w.byteOffset,w.byteLength),p=this.decoder.decode(O);if(p){if(!g.buffer)throw new Error("Expected sample to contain buffer");const h=this.decoder.getParameters();if(new Uint8Array(g.buffer).set(p),h){const m=[new Uint8Array(g.buffer,0,h.width*h.height),new Uint8Array(g.buffer,h.width*h.height,h.width/2*h.height/2),new Uint8Array(g.buffer,h.width*h.height+h.width/2*h.height/2,h.width/2*h.height/2)];this.decodedSamples.push(gA(IA({},g),{buffer:g.buffer,type:"video",format:"yuv420",colorPrimaries:"bt709",width:(r=(Y=h.cropping)==null?void 0:Y.width)!=null?r:h.width,height:(c=(d=h.cropping)==null?void 0:d.height)!=null?c:h.height,codedWidth:h.width,codedHeight:h.height,data:m,statistics:{decodeTime:Date.now()-s,transportTimeFromWorker:0,transportTimeToWorker:0,samplesInBatch:1}}))}}return!0})});o(this,"take",()=>this.decodedSamples.shift());this.decoder=g}};let u=x;o(u,"create",()=>P(x,null,function*(){return new x(yield l.create())}));const U=self,wA=()=>P(this,null,function*(){try{U.decoder=yield u.create(),U.postMessage({type:"ready"})}catch(B){U.postMessage({type:"error",message:B instanceof Error?B.message:void 0})}}),RA=B=>{const g=B;g.data=null};wA(),U.addEventListener("message",B=>{var g,A,C;switch(B.data.type){case"decode samples":try{const E=Date.now()-B.data.timestamp,i=[];B.data.samples.map(N=>{var L;return(L=U.decoder)==null?void 0:L.enqueue(N)});let s;for(;s=(g=U.decoder)==null?void 0:g.take();)s.statistics&&(s.statistics.transportTimeToWorker=E,s.statistics.samplesInBatch=B.data.samples.length),i.push(s);const S=i.map(N=>N.buffer);B.data.samples.map(N=>RA(N)),U.postMessage({type:"decoded samples",samples:i,timestamp:Date.now(),samplesProcessedCount:B.data.samples.length},S)}catch(E){U.postMessage({type:"error",message:E instanceof Error?E.message:void 0})}break;case"unload":(A=U.decoder)==null||A.unload(),U.decoder=void 0;break;case"init segment":(C=U.decoder)==null||C.initSegment(B.data.initSegment);break}})})(); '],{type:'application/javascript'})));
|
|
2430
2428
|
return yield new Promise((g, s) => {
|
|
2431
2429
|
const I = (B) => {
|
|
@@ -2440,9 +2438,9 @@ t(ge, "create", (A) => u(Se, null, function* () {
|
|
|
2440
2438
|
}
|
|
2441
2439
|
};
|
|
2442
2440
|
e.addEventListener("message", I);
|
|
2443
|
-
}), new
|
|
2441
|
+
}), new De(e, A);
|
|
2444
2442
|
}));
|
|
2445
|
-
var
|
|
2443
|
+
var QB = function() {
|
|
2446
2444
|
var i = typeof document != "undefined" && document.currentScript ? document.currentScript.src : void 0;
|
|
2447
2445
|
return function(A) {
|
|
2448
2446
|
A = A || {};
|
|
@@ -2463,7 +2461,7 @@ var CB = function() {
|
|
|
2463
2461
|
I = null;
|
|
2464
2462
|
var a;
|
|
2465
2463
|
e.wasmBinary && (a = e.wasmBinary), e.noExitRuntime, typeof WebAssembly != "object" && _("no native wasm support detected");
|
|
2466
|
-
var Q, h = !1,
|
|
2464
|
+
var Q, h = !1, u = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : void 0, l, D, S, q = [], H = [], G = [];
|
|
2467
2465
|
function K() {
|
|
2468
2466
|
var c = e.preRun.shift();
|
|
2469
2467
|
q.unshift(c);
|
|
@@ -2497,9 +2495,9 @@ var CB = function() {
|
|
|
2497
2495
|
}
|
|
2498
2496
|
else
|
|
2499
2497
|
L = void 0;
|
|
2500
|
-
var
|
|
2501
|
-
if (
|
|
2502
|
-
return
|
|
2498
|
+
var F = L;
|
|
2499
|
+
if (F)
|
|
2500
|
+
return F;
|
|
2503
2501
|
throw "both async and sync fetching of the wasm failed";
|
|
2504
2502
|
} catch (M) {
|
|
2505
2503
|
_(M);
|
|
@@ -2531,69 +2529,69 @@ var CB = function() {
|
|
|
2531
2529
|
var f = "", R = 0;
|
|
2532
2530
|
c = c.replace(/[^A-Za-z0-9\+\/=]/g, "");
|
|
2533
2531
|
do {
|
|
2534
|
-
var L = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(R++)),
|
|
2535
|
-
L = L << 2 |
|
|
2532
|
+
var L = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(R++)), F = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(R++)), M = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(R++)), uA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(R++));
|
|
2533
|
+
L = L << 2 | F >> 4, F = (F & 15) << 4 | M >> 2;
|
|
2536
2534
|
var zA = (M & 3) << 6 | uA;
|
|
2537
|
-
f += String.fromCharCode(L), M !== 64 && (f += String.fromCharCode(
|
|
2535
|
+
f += String.fromCharCode(L), M !== 64 && (f += String.fromCharCode(F)), uA !== 64 && (f += String.fromCharCode(zA));
|
|
2538
2536
|
} while (R < c.length);
|
|
2539
2537
|
return f;
|
|
2540
2538
|
}, lA = { d: function() {
|
|
2541
2539
|
_();
|
|
2542
2540
|
}, f: function(c, f, R) {
|
|
2543
|
-
|
|
2541
|
+
l.copyWithin(c, f, f + R);
|
|
2544
2542
|
}, c: function() {
|
|
2545
2543
|
return !1;
|
|
2546
2544
|
}, e: function() {
|
|
2547
2545
|
return 0;
|
|
2548
2546
|
}, b: function() {
|
|
2549
2547
|
}, a: function(c, f, R, L) {
|
|
2550
|
-
for (var
|
|
2551
|
-
for (var uA = D[f + 8 * M >> 2], zA = D[f + (8 * M + 4) >> 2],
|
|
2552
|
-
var UA =
|
|
2548
|
+
for (var F = 0, M = 0; M < R; M++) {
|
|
2549
|
+
for (var uA = D[f + 8 * M >> 2], zA = D[f + (8 * M + 4) >> 2], be = 0; be < zA; be++) {
|
|
2550
|
+
var UA = l[uA + be], Je = N[c];
|
|
2553
2551
|
if (UA === 0 || UA === 10) {
|
|
2554
2552
|
UA = c === 1 ? o : C;
|
|
2555
|
-
for (var AA =
|
|
2553
|
+
for (var AA = Je, tA = 0, BA = tA + NaN, mA = tA; AA[mA] && !(mA >= BA); )
|
|
2556
2554
|
++mA;
|
|
2557
|
-
if (16 < mA - tA && AA.subarray &&
|
|
2558
|
-
AA =
|
|
2555
|
+
if (16 < mA - tA && AA.subarray && u)
|
|
2556
|
+
AA = u.decode(AA.subarray(tA, mA));
|
|
2559
2557
|
else {
|
|
2560
2558
|
for (BA = ""; tA < mA; ) {
|
|
2561
2559
|
var Z = AA[tA++];
|
|
2562
2560
|
if (Z & 128) {
|
|
2563
|
-
var
|
|
2561
|
+
var Le = AA[tA++] & 63;
|
|
2564
2562
|
if ((Z & 224) == 192)
|
|
2565
|
-
BA += String.fromCharCode((Z & 31) << 6 |
|
|
2563
|
+
BA += String.fromCharCode((Z & 31) << 6 | Le);
|
|
2566
2564
|
else {
|
|
2567
|
-
var
|
|
2568
|
-
Z = (Z & 240) == 224 ? (Z & 15) << 12 |
|
|
2565
|
+
var yt = AA[tA++] & 63;
|
|
2566
|
+
Z = (Z & 240) == 224 ? (Z & 15) << 12 | Le << 6 | yt : (Z & 7) << 18 | Le << 12 | yt << 6 | AA[tA++] & 63, 65536 > Z ? BA += String.fromCharCode(Z) : (Z -= 65536, BA += String.fromCharCode(55296 | Z >> 10, 56320 | Z & 1023));
|
|
2569
2567
|
}
|
|
2570
2568
|
} else
|
|
2571
2569
|
BA += String.fromCharCode(Z);
|
|
2572
2570
|
}
|
|
2573
2571
|
AA = BA;
|
|
2574
2572
|
}
|
|
2575
|
-
UA(AA),
|
|
2573
|
+
UA(AA), Je.length = 0;
|
|
2576
2574
|
} else
|
|
2577
|
-
|
|
2575
|
+
Je.push(UA);
|
|
2578
2576
|
}
|
|
2579
|
-
|
|
2577
|
+
F += zA;
|
|
2580
2578
|
}
|
|
2581
|
-
return D[L >> 2] =
|
|
2579
|
+
return D[L >> 2] = F, 0;
|
|
2582
2580
|
} };
|
|
2583
2581
|
(function() {
|
|
2584
|
-
function c(
|
|
2585
|
-
e.asm =
|
|
2582
|
+
function c(F) {
|
|
2583
|
+
e.asm = F.exports, Q = e.asm.g, F = Q.buffer, e.HEAP8 = new Int8Array(F), e.HEAP16 = new Int16Array(F), e.HEAP32 = D = new Int32Array(F), e.HEAPU8 = l = new Uint8Array(F), e.HEAPU16 = new Uint16Array(F), e.HEAPU32 = new Uint32Array(F), e.HEAPF32 = new Float32Array(F), e.HEAPF64 = new Float64Array(F), S = e.asm.n, H.unshift(e.asm.h), T--, e.monitorRunDependencies && e.monitorRunDependencies(T), T == 0 && Y && (F = Y, Y = null, F());
|
|
2586
2584
|
}
|
|
2587
|
-
function f(
|
|
2588
|
-
c(
|
|
2585
|
+
function f(F) {
|
|
2586
|
+
c(F.instance);
|
|
2589
2587
|
}
|
|
2590
|
-
function R(
|
|
2588
|
+
function R(F) {
|
|
2591
2589
|
return U().then(function(M) {
|
|
2592
2590
|
return WebAssembly.instantiate(
|
|
2593
2591
|
M,
|
|
2594
2592
|
L
|
|
2595
2593
|
);
|
|
2596
|
-
}).then(
|
|
2594
|
+
}).then(F, function(M) {
|
|
2597
2595
|
C("failed to asynchronously prepare wasm: " + M), _(M);
|
|
2598
2596
|
});
|
|
2599
2597
|
}
|
|
@@ -2601,12 +2599,12 @@ var CB = function() {
|
|
|
2601
2599
|
if (T++, e.monitorRunDependencies && e.monitorRunDependencies(T), e.instantiateWasm)
|
|
2602
2600
|
try {
|
|
2603
2601
|
return e.instantiateWasm(L, c);
|
|
2604
|
-
} catch (
|
|
2605
|
-
return C("Module.instantiateWasm callback failed with error: " +
|
|
2602
|
+
} catch (F) {
|
|
2603
|
+
return C("Module.instantiateWasm callback failed with error: " + F), !1;
|
|
2606
2604
|
}
|
|
2607
2605
|
return function() {
|
|
2608
|
-
return a || typeof WebAssembly.instantiateStreaming != "function" || $(E) || typeof fetch != "function" ? R(f) : fetch(E, { credentials: "same-origin" }).then(function(
|
|
2609
|
-
return WebAssembly.instantiateStreaming(
|
|
2606
|
+
return a || typeof WebAssembly.instantiateStreaming != "function" || $(E) || typeof fetch != "function" ? R(f) : fetch(E, { credentials: "same-origin" }).then(function(F) {
|
|
2607
|
+
return WebAssembly.instantiateStreaming(F, L).then(
|
|
2610
2608
|
f,
|
|
2611
2609
|
function(M) {
|
|
2612
2610
|
return C("wasm streaming compile failed: " + M), C("falling back to ArrayBuffer instantiation"), R(f);
|
|
@@ -2658,7 +2656,7 @@ var CB = function() {
|
|
|
2658
2656
|
e.preInit.pop()();
|
|
2659
2657
|
return eA(), A.ready;
|
|
2660
2658
|
};
|
|
2661
|
-
}(),
|
|
2659
|
+
}(), rg = /* @__PURE__ */ ((i) => (i[i.OK = 0] = "OK", i[i["Bad argument"] = -1] = "Bad argument", i[i["Buffer too small"] = -2] = "Buffer too small", i[i["Internal error"] = -3] = "Internal error", i[i["Invalid packet"] = -4] = "Invalid packet", i[i.Unimplemented = -5] = "Unimplemented", i[i["Invalid state"] = -6] = "Invalid state", i[i["Memory allocation fail"] = -7] = "Memory allocation fail", i))(rg || {});
|
|
2662
2660
|
const gA = class {
|
|
2663
2661
|
constructor(A, e, g) {
|
|
2664
2662
|
t(this, "opusModule");
|
|
@@ -2684,7 +2682,7 @@ const gA = class {
|
|
|
2684
2682
|
0
|
|
2685
2683
|
);
|
|
2686
2684
|
if (e < 0)
|
|
2687
|
-
throw new Error(
|
|
2685
|
+
throw new Error(rg[e]);
|
|
2688
2686
|
return this.pcm.subarray(0, e * this.channels);
|
|
2689
2687
|
});
|
|
2690
2688
|
this.opusModule = A, this.channels = g, this.sampleRate = e, this.decoderInstance = this.opusModule._opus_decoder_create(e, g, 0), this.opusBufferPointer = this.opusModule._malloc(gA.MAX_OPUS_BUFFER), this.opus = this.opusModule.HEAPU8.subarray(
|
|
@@ -2699,10 +2697,10 @@ const gA = class {
|
|
|
2699
2697
|
}
|
|
2700
2698
|
};
|
|
2701
2699
|
let FA = gA;
|
|
2702
|
-
t(FA, "MAX_OPUS_BUFFER", 1e3 * 1e3), t(FA, "MAX_SAMPLES", 6 * 960), t(FA, "create", (A, e) =>
|
|
2703
|
-
return new gA(yield
|
|
2700
|
+
t(FA, "MAX_OPUS_BUFFER", 1e3 * 1e3), t(FA, "MAX_SAMPLES", 6 * 960), t(FA, "create", (A, e) => m(gA, null, function* () {
|
|
2701
|
+
return new gA(yield QB(), A, e);
|
|
2704
2702
|
}));
|
|
2705
|
-
const
|
|
2703
|
+
const fe = class {
|
|
2706
2704
|
constructor(A) {
|
|
2707
2705
|
t(this, "decodedSamples", []);
|
|
2708
2706
|
t(this, "decoder");
|
|
@@ -2725,7 +2723,7 @@ const De = class {
|
|
|
2725
2723
|
}
|
|
2726
2724
|
}));
|
|
2727
2725
|
} catch (e) {
|
|
2728
|
-
e instanceof Error && this.errors.push(
|
|
2726
|
+
e instanceof Error && this.errors.push(eg(!1, e));
|
|
2729
2727
|
}
|
|
2730
2728
|
});
|
|
2731
2729
|
t(this, "initSegment", j);
|
|
@@ -2736,9 +2734,9 @@ const De = class {
|
|
|
2736
2734
|
return this.errors.pop();
|
|
2737
2735
|
}
|
|
2738
2736
|
};
|
|
2739
|
-
let se =
|
|
2740
|
-
t(se, "create", (A, e) =>
|
|
2741
|
-
return new
|
|
2737
|
+
let se = fe;
|
|
2738
|
+
t(se, "create", (A, e) => m(fe, null, function* () {
|
|
2739
|
+
return new fe(yield FA.create(A, e));
|
|
2742
2740
|
}));
|
|
2743
2741
|
const rA = class {
|
|
2744
2742
|
constructor(A, e, g, s) {
|
|
@@ -2783,7 +2781,7 @@ const rA = class {
|
|
|
2783
2781
|
var g;
|
|
2784
2782
|
const e = (g = this.trackContexts.get(A.type)) == null ? void 0 : g.decoderContext;
|
|
2785
2783
|
if (!e)
|
|
2786
|
-
throw new
|
|
2784
|
+
throw new p("No known decoder context", {
|
|
2787
2785
|
code: "no_known_decoder_context",
|
|
2788
2786
|
isFatal: !1
|
|
2789
2787
|
});
|
|
@@ -2792,7 +2790,7 @@ const rA = class {
|
|
|
2792
2790
|
t(this, "decode", (A) => {
|
|
2793
2791
|
const e = this.trackContexts.get(A.type);
|
|
2794
2792
|
if (!e)
|
|
2795
|
-
throw new
|
|
2793
|
+
throw new p("No known decoder context", {
|
|
2796
2794
|
code: "no_known_decoder_context",
|
|
2797
2795
|
isFatal: !1
|
|
2798
2796
|
});
|
|
@@ -2808,7 +2806,7 @@ const rA = class {
|
|
|
2808
2806
|
var s, I;
|
|
2809
2807
|
let g;
|
|
2810
2808
|
for (; (g = (I = (s = e.decoderContext).error) == null ? void 0 : I.call(s)) !== void 0; )
|
|
2811
|
-
this.emitter.emit("error",
|
|
2809
|
+
this.emitter.emit("error", eg(!1, g));
|
|
2812
2810
|
for (; (A = e.decoderContext.take()) !== void 0; ) {
|
|
2813
2811
|
const { statistics: B } = A;
|
|
2814
2812
|
B && (e.decodeTime.push(B.decodeTime), e.transportTime.push(
|
|
@@ -2845,7 +2843,7 @@ const rA = class {
|
|
|
2845
2843
|
}
|
|
2846
2844
|
};
|
|
2847
2845
|
let QA = rA;
|
|
2848
|
-
t(QA, "BUFFER_GAP_THRESHOLD", 5), t(QA, "DECODED_FRAMES_CHECK_INTERVAL", 100), t(QA, "DECODE_RATE_INTERVAL", 1e3), t(QA, "create", (A, e, g, s, I) =>
|
|
2846
|
+
t(QA, "BUFFER_GAP_THRESHOLD", 5), t(QA, "DECODED_FRAMES_CHECK_INTERVAL", 100), t(QA, "DECODE_RATE_INTERVAL", 1e3), t(QA, "create", (A, e, g, s, I) => m(rA, null, function* () {
|
|
2849
2847
|
const B = /* @__PURE__ */ new Map();
|
|
2850
2848
|
for (const n of g)
|
|
2851
2849
|
switch (n.type) {
|
|
@@ -2870,7 +2868,7 @@ t(QA, "BUFFER_GAP_THRESHOLD", 5), t(QA, "DECODED_FRAMES_CHECK_INTERVAL", 100), t
|
|
|
2870
2868
|
}
|
|
2871
2869
|
return new rA(A, e, B, s);
|
|
2872
2870
|
}));
|
|
2873
|
-
const
|
|
2871
|
+
const Qt = class {
|
|
2874
2872
|
constructor(A) {
|
|
2875
2873
|
t(this, "emitter");
|
|
2876
2874
|
t(this, "isVisibleCount", 0);
|
|
@@ -2920,14 +2918,14 @@ const Ct = class {
|
|
|
2920
2918
|
return document.visibilityState === "visible";
|
|
2921
2919
|
}
|
|
2922
2920
|
};
|
|
2923
|
-
let Ie =
|
|
2924
|
-
t(Ie, "create", (A) => new
|
|
2925
|
-
const
|
|
2921
|
+
let Ie = Qt;
|
|
2922
|
+
t(Ie, "create", (A) => new Qt(A));
|
|
2923
|
+
const aB = (i) => (A, e, g) => A.timestamp <= e || A.timestampAdded <= g - i, KA = class {
|
|
2926
2924
|
constructor(A, e, g) {
|
|
2927
2925
|
t(this, "logger");
|
|
2928
2926
|
t(this, "emitter");
|
|
2929
2927
|
t(this, "waitingEvents", []);
|
|
2930
|
-
t(this, "isTriggered",
|
|
2928
|
+
t(this, "isTriggered", aB(KA.EVENT_TIMEOUT));
|
|
2931
2929
|
t(this, "timeSource");
|
|
2932
2930
|
t(this, "timers", new x());
|
|
2933
2931
|
t(this, "load", () => {
|
|
@@ -2990,7 +2988,7 @@ const hA = class {
|
|
|
2990
2988
|
});
|
|
2991
2989
|
t(this, "add", (A, e) => {
|
|
2992
2990
|
let g = this.bytesReceived.get(A);
|
|
2993
|
-
g || (g = new
|
|
2991
|
+
g || (g = new Gg(20), this.bytesReceived.set(A, g)), e > 0 && (this.lastBytesUpdated = Date.now(), this.timeoutInterval || (this.timeoutInterval = this.timers.setInterval(
|
|
2994
2992
|
this.checkTimeout,
|
|
2995
2993
|
hA.UPDATE_RECEIVED_BYTES_INTERVAL
|
|
2996
2994
|
))), g.add(e);
|
|
@@ -3009,7 +3007,7 @@ const hA = class {
|
|
|
3009
3007
|
t(this, "checkTimeout", () => {
|
|
3010
3008
|
const A = Date.now() - this.lastBytesUpdated;
|
|
3011
3009
|
if (this.totalBytesReceived() === 0 && A > hA.NO_DATA_ERROR_TIMEOUT) {
|
|
3012
|
-
this.emitter.emit("error",
|
|
3010
|
+
this.emitter.emit("error", Qs()), this.emitter.emit("reconnect", "no incoming data"), this.clearTimeoutInterval();
|
|
3013
3011
|
return;
|
|
3014
3012
|
}
|
|
3015
3013
|
A > hA.NO_DATA_TIMEOUT && this.totalBytesReceived() > 0 && (this.emitter.emit("no data timeout", this.totalBytesReceived()), this.clearTimeoutInterval());
|
|
@@ -3022,10 +3020,10 @@ const hA = class {
|
|
|
3022
3020
|
};
|
|
3023
3021
|
let aA = hA;
|
|
3024
3022
|
t(aA, "NO_DATA_ERROR_TIMEOUT", 20 * 1e3), t(aA, "NO_DATA_TIMEOUT", 5 * 1e3), t(aA, "UPDATE_RECEIVED_BYTES_INTERVAL", 1e3), t(aA, "create", (A) => new hA(A));
|
|
3025
|
-
const
|
|
3023
|
+
const EB = window.AudioContext || window.webkitAudioContext, at = class extends z {
|
|
3026
3024
|
constructor() {
|
|
3027
3025
|
super();
|
|
3028
|
-
t(this, "context", new
|
|
3026
|
+
t(this, "context", new EB());
|
|
3029
3027
|
t(this, "timers", x.create());
|
|
3030
3028
|
t(this, "previousCurrentTime", 0);
|
|
3031
3029
|
t(this, "_isStuck", !1);
|
|
@@ -3036,17 +3034,17 @@ const aB = window.AudioContext || window.webkitAudioContext, Qt = class extends
|
|
|
3036
3034
|
t(this, "createBufferSource", () => this.context.createBufferSource());
|
|
3037
3035
|
t(this, "getMediaStreamDestination", () => (this.mediaStreamDestination || (this.mediaStreamDestination = this.context.createMediaStreamDestination()), this.mediaStreamDestination));
|
|
3038
3036
|
t(this, "getDefaultDestination", () => this.context.destination);
|
|
3039
|
-
t(this, "resume", () =>
|
|
3040
|
-
yield Promise.race([this.context.resume(),
|
|
3037
|
+
t(this, "resume", () => m(this, null, function* () {
|
|
3038
|
+
yield Promise.race([this.context.resume(), Lg(1e3, ns())]);
|
|
3041
3039
|
}));
|
|
3042
|
-
t(this, "suspend", () =>
|
|
3040
|
+
t(this, "suspend", () => m(this, null, function* () {
|
|
3043
3041
|
var e;
|
|
3044
3042
|
yield (e = this.context.suspend()) != null ? e : Promise.resolve();
|
|
3045
3043
|
}));
|
|
3046
3044
|
t(this, "onStateChange", () => this.emit("state", this.state));
|
|
3047
3045
|
this.context.addEventListener("statechange", this.onStateChange), this.timers.setInterval(() => {
|
|
3048
3046
|
this._isStuck = this.isRunning && this.context.currentTime === this.previousCurrentTime, this._isStuck && this.emit("stuck"), this.previousCurrentTime = this.context.currentTime;
|
|
3049
|
-
},
|
|
3047
|
+
}, at.CHECK_INTERVAL);
|
|
3050
3048
|
}
|
|
3051
3049
|
get isStuck() {
|
|
3052
3050
|
return this._isStuck;
|
|
@@ -3064,9 +3062,9 @@ const aB = window.AudioContext || window.webkitAudioContext, Qt = class extends
|
|
|
3064
3062
|
return this.context.state;
|
|
3065
3063
|
}
|
|
3066
3064
|
};
|
|
3067
|
-
let Be =
|
|
3065
|
+
let Be = at;
|
|
3068
3066
|
t(Be, "CHECK_INTERVAL", 1e3);
|
|
3069
|
-
const
|
|
3067
|
+
const Et = class extends z {
|
|
3070
3068
|
constructor(e, g, { muted: s, reInitWhenStuck: I }) {
|
|
3071
3069
|
super();
|
|
3072
3070
|
t(this, "logger");
|
|
@@ -3089,7 +3087,7 @@ const at = class extends z {
|
|
|
3089
3087
|
t(this, "reInitWhenStuck");
|
|
3090
3088
|
t(this, "ignoreSuspendCalls", !1);
|
|
3091
3089
|
t(this, "isActivated", !1);
|
|
3092
|
-
t(this, "unload", () =>
|
|
3090
|
+
t(this, "unload", () => m(this, null, function* () {
|
|
3093
3091
|
var e, g;
|
|
3094
3092
|
(e = this.gainNode) == null || e.disconnect(), yield (g = this.audio) == null ? void 0 : g.unload(), this.reset(), this.audio = void 0, this.gainNode = void 0;
|
|
3095
3093
|
}));
|
|
@@ -3098,7 +3096,7 @@ const at = class extends z {
|
|
|
3098
3096
|
});
|
|
3099
3097
|
t(this, "unsuspend", () => {
|
|
3100
3098
|
var e;
|
|
3101
|
-
this.setGain(this._volume), this.ignoreSuspendCalls = !!this.audio, (e = this.audio) == null || e.suspend().then(() =>
|
|
3099
|
+
this.setGain(this._volume), this.ignoreSuspendCalls = !!this.audio, (e = this.audio) == null || e.suspend().then(() => m(this, null, function* () {
|
|
3102
3100
|
yield this.resume(), this.ignoreSuspendCalls = !1;
|
|
3103
3101
|
})).catch(() => {
|
|
3104
3102
|
this.ignoreSuspendCalls = !1, this.emit("state change", "suspended");
|
|
@@ -3106,7 +3104,7 @@ const at = class extends z {
|
|
|
3106
3104
|
});
|
|
3107
3105
|
t(this, "flush", () => {
|
|
3108
3106
|
if (!this.audio || !this.gainNode)
|
|
3109
|
-
throw new
|
|
3107
|
+
throw new p("AudioContext must be initialized to flush", {
|
|
3110
3108
|
isFatal: !1,
|
|
3111
3109
|
code: "audiocontext_must_be_initialized"
|
|
3112
3110
|
});
|
|
@@ -3148,7 +3146,7 @@ const at = class extends z {
|
|
|
3148
3146
|
this.samples.set(e.data, this.index), this.index += e.data.length, this.channels = e.channels, this.sampleRate = e.sampleRate, this.samples.length <= this.index && (this.index = 0, this.flush());
|
|
3149
3147
|
}
|
|
3150
3148
|
});
|
|
3151
|
-
t(this, "play", () =>
|
|
3149
|
+
t(this, "play", () => m(this, null, function* () {
|
|
3152
3150
|
this.audio = this.getAudioContext(), yield this.resume();
|
|
3153
3151
|
}));
|
|
3154
3152
|
t(this, "pause", () => {
|
|
@@ -3156,7 +3154,7 @@ const at = class extends z {
|
|
|
3156
3154
|
t(this, "flushBuffer", () => {
|
|
3157
3155
|
this.unplayedBufferSources.items().forEach(([e, g]) => g.stop()), this.index = 0;
|
|
3158
3156
|
});
|
|
3159
|
-
t(this, "resume", () =>
|
|
3157
|
+
t(this, "resume", () => m(this, null, function* () {
|
|
3160
3158
|
var e;
|
|
3161
3159
|
if (!this._userProvidedMuted)
|
|
3162
3160
|
try {
|
|
@@ -3223,9 +3221,9 @@ const at = class extends z {
|
|
|
3223
3221
|
return (s = this.gainNode) == null || s.connect(g), g;
|
|
3224
3222
|
}
|
|
3225
3223
|
};
|
|
3226
|
-
let HA =
|
|
3227
|
-
t(HA, "create", (e, g, s) => new
|
|
3228
|
-
const
|
|
3224
|
+
let HA = Et;
|
|
3225
|
+
t(HA, "create", (e, g, s) => new Et(e, g, s));
|
|
3226
|
+
const Wt = `
|
|
3229
3227
|
precision mediump float;
|
|
3230
3228
|
uniform sampler2D y_texture;
|
|
3231
3229
|
uniform sampler2D u_texture;
|
|
@@ -3241,7 +3239,7 @@ void main() {
|
|
|
3241
3239
|
|
|
3242
3240
|
gl_FragColor = vec4(y, u, v, 1) * conversion;
|
|
3243
3241
|
}
|
|
3244
|
-
`,
|
|
3242
|
+
`, Vt = `
|
|
3245
3243
|
attribute vec2 position;
|
|
3246
3244
|
varying vec2 texture_coordinate;
|
|
3247
3245
|
uniform mat4 model;
|
|
@@ -3250,10 +3248,10 @@ void main() {
|
|
|
3250
3248
|
texture_coordinate = position;
|
|
3251
3249
|
gl_Position = model * vec4(position, 0.0, 1.0);
|
|
3252
3250
|
}
|
|
3253
|
-
`,
|
|
3251
|
+
`, Zt = (i, A) => {
|
|
3254
3252
|
let e = i.getContext("webgl", A);
|
|
3255
3253
|
if (e || (e = i.getContext("experimental-webgl", A)), !e)
|
|
3256
|
-
throw new
|
|
3254
|
+
throw new p("Failed to create webgl context", {
|
|
3257
3255
|
isFatal: !0,
|
|
3258
3256
|
code: "failed_to_create_web_gl_context"
|
|
3259
3257
|
});
|
|
@@ -3261,10 +3259,10 @@ void main() {
|
|
|
3261
3259
|
}, $A = (i, A, e) => {
|
|
3262
3260
|
const g = i.createShader(A);
|
|
3263
3261
|
if (!g)
|
|
3264
|
-
throw new
|
|
3262
|
+
throw new p("Failed to create shader", { isFatal: !0, code: "failed_to_create_shader" });
|
|
3265
3263
|
if (i.shaderSource(g, e), i.compileShader(g), !i.getShaderParameter(g, i.COMPILE_STATUS)) {
|
|
3266
3264
|
const s = i.getShaderInfoLog(g);
|
|
3267
|
-
throw new
|
|
3265
|
+
throw new p(`Failed to compile shader: ${s != null ? s : ""}`, {
|
|
3268
3266
|
isFatal: !0,
|
|
3269
3267
|
code: "failed_to_compile_shader"
|
|
3270
3268
|
});
|
|
@@ -3273,79 +3271,87 @@ void main() {
|
|
|
3273
3271
|
}, DA = (i) => {
|
|
3274
3272
|
const A = i.createTexture();
|
|
3275
3273
|
if (!A)
|
|
3276
|
-
throw new
|
|
3274
|
+
throw new p("Failed to create texture", {
|
|
3277
3275
|
isFatal: !0,
|
|
3278
3276
|
code: "failed_to_create_texture"
|
|
3279
3277
|
});
|
|
3280
3278
|
return i.bindTexture(i.TEXTURE_2D, A), i.texParameteri(i.TEXTURE_2D, i.TEXTURE_MAG_FILTER, i.NEAREST), i.texParameteri(i.TEXTURE_2D, i.TEXTURE_MIN_FILTER, i.NEAREST), i.texParameteri(i.TEXTURE_2D, i.TEXTURE_WRAP_S, i.CLAMP_TO_EDGE), i.texParameteri(i.TEXTURE_2D, i.TEXTURE_WRAP_T, i.CLAMP_TO_EDGE), A;
|
|
3281
|
-
},
|
|
3279
|
+
}, Ot = (i, A) => {
|
|
3282
3280
|
const e = i.createBuffer();
|
|
3283
3281
|
if (!e)
|
|
3284
|
-
throw new
|
|
3282
|
+
throw new p("Failed to create buffer", {
|
|
3285
3283
|
isFatal: !0,
|
|
3286
3284
|
code: "failed_to_create_buffer"
|
|
3287
3285
|
});
|
|
3288
3286
|
return i.bindBuffer(i.ARRAY_BUFFER, e), i.bufferData(i.ARRAY_BUFFER, A.buffer, i.STATIC_DRAW), e;
|
|
3289
|
-
},
|
|
3287
|
+
}, Xt = (i, A, e) => {
|
|
3290
3288
|
const g = i.createProgram();
|
|
3291
3289
|
if (!g)
|
|
3292
|
-
throw new
|
|
3290
|
+
throw new p("Failed to create program", {
|
|
3293
3291
|
isFatal: !0,
|
|
3294
3292
|
code: "failed_to_create_program"
|
|
3295
3293
|
});
|
|
3296
3294
|
if (i.attachShader(g, e), i.attachShader(g, A), i.linkProgram(g), !i.getProgramParameter(g, i.LINK_STATUS)) {
|
|
3297
3295
|
const s = i.getShaderInfoLog(g);
|
|
3298
|
-
throw new
|
|
3296
|
+
throw new p(`Failed to link program: ${s != null ? s : ""}`, {
|
|
3299
3297
|
isFatal: !0,
|
|
3300
3298
|
code: "failed_to_link_program"
|
|
3301
3299
|
});
|
|
3302
3300
|
}
|
|
3303
3301
|
return g;
|
|
3304
|
-
},
|
|
3302
|
+
}, zt = {
|
|
3305
3303
|
width: 256,
|
|
3306
3304
|
codedWidth: 256,
|
|
3307
3305
|
height: 144,
|
|
3308
3306
|
codedHeight: 144
|
|
3309
|
-
},
|
|
3307
|
+
}, jt = {
|
|
3310
3308
|
preserveDrawingBuffer: !1,
|
|
3311
3309
|
alpha: !1,
|
|
3312
3310
|
depth: !1,
|
|
3313
3311
|
stencil: !1,
|
|
3314
3312
|
antialias: !1,
|
|
3315
3313
|
premultipliedAlpha: !1
|
|
3316
|
-
},
|
|
3314
|
+
}, pe = class extends z {
|
|
3317
3315
|
constructor() {
|
|
3318
3316
|
super();
|
|
3319
3317
|
t(this, "canvas", document.createElement("canvas"));
|
|
3320
|
-
t(this, "context",
|
|
3321
|
-
t(this, "pixelShader", $A(this.context, this.context.FRAGMENT_SHADER,
|
|
3322
|
-
t(this, "vertexShader", $A(this.context, this.context.VERTEX_SHADER,
|
|
3323
|
-
t(this, "buffer",
|
|
3324
|
-
t(this, "program",
|
|
3318
|
+
t(this, "context", Zt(this.canvas, jt));
|
|
3319
|
+
t(this, "pixelShader", $A(this.context, this.context.FRAGMENT_SHADER, Wt));
|
|
3320
|
+
t(this, "vertexShader", $A(this.context, this.context.VERTEX_SHADER, Vt));
|
|
3321
|
+
t(this, "buffer", Ot(this.context, pe.SQUARE_VERTICES));
|
|
3322
|
+
t(this, "program", Xt(this.context, this.vertexShader, this.pixelShader));
|
|
3325
3323
|
t(this, "textures", {
|
|
3326
3324
|
y: DA(this.context),
|
|
3327
3325
|
u: DA(this.context),
|
|
3328
3326
|
v: DA(this.context)
|
|
3329
3327
|
});
|
|
3330
|
-
t(this, "size",
|
|
3328
|
+
t(this, "size", zt);
|
|
3331
3329
|
t(this, "onContextLost", (e) => {
|
|
3332
3330
|
const g = new Error(e instanceof WebGLContextEvent ? e.statusMessage : "webgl context lost");
|
|
3333
|
-
this.emit("context lost",
|
|
3331
|
+
this.emit("context lost", rs(g)), e.preventDefault();
|
|
3334
3332
|
});
|
|
3335
3333
|
t(this, "onContextRestored", () => {
|
|
3336
|
-
this.emit("context restored"), this.context =
|
|
3334
|
+
this.emit("context restored"), this.context = Zt(this.canvas, jt), this.pixelShader = $A(this.context, this.context.FRAGMENT_SHADER, Wt), this.vertexShader = $A(this.context, this.context.VERTEX_SHADER, Vt), this.buffer = Ot(this.context, pe.SQUARE_VERTICES), this.program = Xt(this.context, this.vertexShader, this.pixelShader), this.textures = {
|
|
3337
3335
|
y: DA(this.context),
|
|
3338
3336
|
u: DA(this.context),
|
|
3339
3337
|
v: DA(this.context)
|
|
3340
3338
|
}, this.load();
|
|
3341
3339
|
});
|
|
3342
3340
|
t(this, "load", () => {
|
|
3343
|
-
this.context.useProgram(this.program), this.setupPositionVertexAttributes(), this.setSize(
|
|
3341
|
+
this.context.useProgram(this.program), this.setupPositionVertexAttributes(), this.setSize(zt), this.context.uniform1i(this.context.getUniformLocation(this.program, "y_texture"), 0), this.context.uniform1i(this.context.getUniformLocation(this.program, "u_texture"), 1), this.context.uniform1i(this.context.getUniformLocation(this.program, "v_texture"), 2), this.setConversionMatrix(this.rec709());
|
|
3344
3342
|
});
|
|
3345
3343
|
t(this, "unload", () => {
|
|
3346
3344
|
var g;
|
|
3347
3345
|
this.setSize({ width: 1, height: 1, codedHeight: 1, codedWidth: 1 }), [this.textures.y, this.textures.u, this.textures.v].forEach((s) => this.context.deleteTexture(s)), this.context.deleteShader(this.pixelShader), this.context.deleteShader(this.vertexShader), this.context.deleteProgram(this.program), this.context.deleteBuffer(this.buffer), this.canvas.removeEventListener("webglcontextlost", this.onContextLost), this.canvas.removeEventListener("webglcontextrestored", this.onContextRestored), (g = this.context.getExtension("WEBGL_lose_context")) == null || g.loseContext();
|
|
3348
3346
|
});
|
|
3347
|
+
t(this, "resetSize", () => {
|
|
3348
|
+
this.setSize({
|
|
3349
|
+
width: this.size.width / 2,
|
|
3350
|
+
height: this.size.height / 2,
|
|
3351
|
+
codedHeight: this.size.codedHeight / 2,
|
|
3352
|
+
codedWidth: this.size.codedWidth / 2
|
|
3353
|
+
});
|
|
3354
|
+
});
|
|
3349
3355
|
t(this, "render", (e) => {
|
|
3350
3356
|
this.setSize({
|
|
3351
3357
|
width: e.width,
|
|
@@ -3430,9 +3436,9 @@ void main() {
|
|
|
3430
3436
|
this.canvas.addEventListener("webglcontextlost", this.onContextLost), this.canvas.addEventListener("webglcontextrestored", this.onContextRestored, !1), this.canvas.style.width = "100%", this.canvas.style.position = "relative";
|
|
3431
3437
|
}
|
|
3432
3438
|
};
|
|
3433
|
-
let ne =
|
|
3439
|
+
let ne = pe;
|
|
3434
3440
|
t(ne, "SQUARE_VERTICES", new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]));
|
|
3435
|
-
const
|
|
3441
|
+
const rt = class {
|
|
3436
3442
|
constructor(A, e, g) {
|
|
3437
3443
|
t(this, "oldTimestampLimit", 400);
|
|
3438
3444
|
t(this, "pool");
|
|
@@ -3461,6 +3467,9 @@ const Et = class {
|
|
|
3461
3467
|
contextLostCount: 0,
|
|
3462
3468
|
contextRestoredCount: 0
|
|
3463
3469
|
}));
|
|
3470
|
+
t(this, "resetSize", () => {
|
|
3471
|
+
this.videoRenderer.resetSize();
|
|
3472
|
+
});
|
|
3464
3473
|
t(this, "onDecodedFrame", (A) => {
|
|
3465
3474
|
if (A.type === "video")
|
|
3466
3475
|
if (this.isFirstFrame)
|
|
@@ -3491,15 +3500,15 @@ const Et = class {
|
|
|
3491
3500
|
this.logger = A, this.clockSource = e, this.pool = g;
|
|
3492
3501
|
}
|
|
3493
3502
|
};
|
|
3494
|
-
let MA =
|
|
3495
|
-
t(MA, "create", (A, e, g) => new
|
|
3503
|
+
let MA = rt;
|
|
3504
|
+
t(MA, "create", (A, e, g) => new rt(A, e, g));
|
|
3496
3505
|
const nA = (i, A) => {
|
|
3497
3506
|
let e;
|
|
3498
3507
|
for (e = A; i > 1; i--)
|
|
3499
3508
|
e += A;
|
|
3500
3509
|
return e;
|
|
3501
3510
|
};
|
|
3502
|
-
class
|
|
3511
|
+
class rB {
|
|
3503
3512
|
constructor() {
|
|
3504
3513
|
t(this, "audio");
|
|
3505
3514
|
t(this, "unmute", () => this.audio.play().catch(j));
|
|
@@ -3512,14 +3521,14 @@ class EB {
|
|
|
3512
3521
|
throw new Error("Failed to create audio tag");
|
|
3513
3522
|
}
|
|
3514
3523
|
}
|
|
3515
|
-
const
|
|
3524
|
+
const ht = class {
|
|
3516
3525
|
constructor(A, e, g, s, I) {
|
|
3517
3526
|
t(this, "logger");
|
|
3518
3527
|
t(this, "emitter");
|
|
3519
3528
|
t(this, "audioPlayer");
|
|
3520
3529
|
t(this, "videoPlayer");
|
|
3521
3530
|
t(this, "pool");
|
|
3522
|
-
t(this, "unmuter", new
|
|
3531
|
+
t(this, "unmuter", new rB());
|
|
3523
3532
|
t(this, "_isPaused", !1);
|
|
3524
3533
|
t(this, "isDisconnected", !1);
|
|
3525
3534
|
t(this, "reset", () => {
|
|
@@ -3546,7 +3555,7 @@ const rt = class {
|
|
|
3546
3555
|
try {
|
|
3547
3556
|
this.audioPlayer.onDecodedFrame(A);
|
|
3548
3557
|
} catch (e) {
|
|
3549
|
-
e instanceof Error && this.emitter.emit("error",
|
|
3558
|
+
e instanceof Error && this.emitter.emit("error", tg(!1, e));
|
|
3550
3559
|
}
|
|
3551
3560
|
this.videoPlayer.onDecodedFrame(A);
|
|
3552
3561
|
});
|
|
@@ -3597,7 +3606,7 @@ const rt = class {
|
|
|
3597
3606
|
return this.audioPlayer.isSeeking;
|
|
3598
3607
|
}
|
|
3599
3608
|
play() {
|
|
3600
|
-
return
|
|
3609
|
+
return m(this, null, function* () {
|
|
3601
3610
|
try {
|
|
3602
3611
|
yield this.activateAudioPlayer();
|
|
3603
3612
|
} catch (A) {
|
|
@@ -3613,13 +3622,13 @@ const rt = class {
|
|
|
3613
3622
|
this._isPaused = !0, this.audioPlayer.pause(), this.emitter.emit("media element state", "paused");
|
|
3614
3623
|
}
|
|
3615
3624
|
};
|
|
3616
|
-
let oe =
|
|
3617
|
-
t(oe, "create", (A, e, g, s, I) => new
|
|
3618
|
-
const
|
|
3625
|
+
let oe = ht;
|
|
3626
|
+
t(oe, "create", (A, e, g, s, I) => new ht(A, e, g, s, I));
|
|
3627
|
+
const _t = Object.values(Fe), $t = (i, A) => _t.indexOf(i) < _t.indexOf(A), ct = class {
|
|
3619
3628
|
constructor() {
|
|
3620
|
-
t(this, "level",
|
|
3629
|
+
t(this, "level", Fe.DEBUG);
|
|
3621
3630
|
t(this, "categoryLevels", /* @__PURE__ */ new Map());
|
|
3622
|
-
t(this, "getLogger", (A) => new
|
|
3631
|
+
t(this, "getLogger", (A) => new gt({
|
|
3623
3632
|
category: A,
|
|
3624
3633
|
onLog: this.onLog
|
|
3625
3634
|
}));
|
|
@@ -3629,19 +3638,19 @@ const jt = Object.values(pe), _t = (i, A) => jt.indexOf(i) < jt.indexOf(A), ht =
|
|
|
3629
3638
|
t(this, "unload", () => {
|
|
3630
3639
|
});
|
|
3631
3640
|
t(this, "onLog", (A, e, g, s) => {
|
|
3632
|
-
if (
|
|
3641
|
+
if ($t(e, this.level))
|
|
3633
3642
|
return;
|
|
3634
3643
|
const I = A.category(), B = this.categoryLevels.get(I);
|
|
3635
|
-
if (B &&
|
|
3644
|
+
if (B && $t(e, B))
|
|
3636
3645
|
return;
|
|
3637
3646
|
const n = A.getFullCategory().reduceRight((C, a) => (C.length ? C + " > " : "") + a, ""), o = `[${new Date().toISOString()}][${e}][${n}] ${g}`;
|
|
3638
3647
|
console.log(o, s);
|
|
3639
3648
|
});
|
|
3640
3649
|
}
|
|
3641
3650
|
};
|
|
3642
|
-
let Ce =
|
|
3643
|
-
t(Ce, "create", () => new
|
|
3644
|
-
const
|
|
3651
|
+
let Ce = ct;
|
|
3652
|
+
t(Ce, "create", () => new ct());
|
|
3653
|
+
const dt = class {
|
|
3645
3654
|
constructor(A, e, g, s, { muted: I, type: B, poster: n }) {
|
|
3646
3655
|
t(this, "logger");
|
|
3647
3656
|
t(this, "emitter");
|
|
@@ -3655,10 +3664,10 @@ const ct = class {
|
|
|
3655
3664
|
t(this, "reset", () => {
|
|
3656
3665
|
});
|
|
3657
3666
|
t(this, "load", () => {
|
|
3658
|
-
this.mediaElement.load(), this.emitter.on("decoded frame", this.onDecodedFrame), this.emitter.on("flush buffers", this.flushBuffers), this.videoPlayer.load();
|
|
3667
|
+
this.mediaElement.load(), this.emitter.on("decoded frame", this.onDecodedFrame), this.emitter.on("flush buffers", this.flushBuffers), this.emitter.on("ios-hack: reset size", this.resetCanvasSize), this.emitter.on("enter picture in picture", this.onEnterPictureInPicture), this.emitter.on("exit picture in picture", this.onExitPictureInPicture), this.videoPlayer.load();
|
|
3659
3668
|
});
|
|
3660
3669
|
t(this, "unload", () => {
|
|
3661
|
-
this.emitter.off("decoded frame", this.onDecodedFrame), this.emitter.off("flush buffers", this.flushBuffers), this.mediaElement.unload(), this.audioPlayer.unload(), this.videoPlayer.unload();
|
|
3670
|
+
this.emitter.off("decoded frame", this.onDecodedFrame), this.emitter.off("flush buffers", this.flushBuffers), this.emitter.off("ios-hack: reset size", this.resetCanvasSize), this.emitter.off("enter picture in picture", this.onEnterPictureInPicture), this.emitter.off("exit picture in picture", this.onExitPictureInPicture), this.mediaElement.unload(), this.audioPlayer.unload(), this.videoPlayer.unload();
|
|
3662
3671
|
});
|
|
3663
3672
|
t(this, "suspend", () => {
|
|
3664
3673
|
this.videoPlayer.suspend(), this.audioPlayer.suspend();
|
|
@@ -3672,11 +3681,20 @@ const ct = class {
|
|
|
3672
3681
|
t(this, "flushBuffers", () => {
|
|
3673
3682
|
this.audioPlayer.flushBuffer();
|
|
3674
3683
|
});
|
|
3684
|
+
t(this, "resetCanvasSize", () => {
|
|
3685
|
+
this.videoPlayer.resetSize();
|
|
3686
|
+
});
|
|
3687
|
+
t(this, "onEnterPictureInPicture", () => {
|
|
3688
|
+
this.mediaElement._iosHackEnterPiPMode();
|
|
3689
|
+
});
|
|
3690
|
+
t(this, "onExitPictureInPicture", () => {
|
|
3691
|
+
this.mediaElement._iosHackExitPiPMode();
|
|
3692
|
+
});
|
|
3675
3693
|
t(this, "onDecodedFrame", (A) => {
|
|
3676
3694
|
try {
|
|
3677
3695
|
this.audioPlayer.onDecodedFrame(A);
|
|
3678
3696
|
} catch (e) {
|
|
3679
|
-
e instanceof Error && this.emitter.emit("error",
|
|
3697
|
+
e instanceof Error && this.emitter.emit("error", tg(!1, e));
|
|
3680
3698
|
}
|
|
3681
3699
|
this.videoPlayer.onDecodedFrame(A);
|
|
3682
3700
|
});
|
|
@@ -3691,7 +3709,7 @@ const ct = class {
|
|
|
3691
3709
|
};
|
|
3692
3710
|
dA(A, this.volumeState) || (this.volumeState = A, this.emitter.emit("volume state", this.volumeState));
|
|
3693
3711
|
});
|
|
3694
|
-
this.logger = e, this.emitter = A, this.pool = g, this._userProvidedMuted = I, this.mediaElement = new
|
|
3712
|
+
this.logger = e, this.emitter = A, this.pool = g, this._userProvidedMuted = I, this.mediaElement = new et({
|
|
3695
3713
|
poster: n,
|
|
3696
3714
|
type: B,
|
|
3697
3715
|
muted: I,
|
|
@@ -3745,7 +3763,7 @@ const ct = class {
|
|
|
3745
3763
|
return this.mediaElement.isSeeking;
|
|
3746
3764
|
}
|
|
3747
3765
|
play() {
|
|
3748
|
-
return
|
|
3766
|
+
return m(this, null, function* () {
|
|
3749
3767
|
const A = this._userProvidedMuted;
|
|
3750
3768
|
return this.activateAudioPlayer().catch(() => {
|
|
3751
3769
|
A || this.emitter.emit("needs user input", {
|
|
@@ -3759,9 +3777,9 @@ const ct = class {
|
|
|
3759
3777
|
this.mediaElement.pause();
|
|
3760
3778
|
}
|
|
3761
3779
|
};
|
|
3762
|
-
let Qe =
|
|
3763
|
-
t(Qe, "create", (A, e, g, s, I) => new
|
|
3764
|
-
class
|
|
3780
|
+
let Qe = dt;
|
|
3781
|
+
t(Qe, "create", (A, e, g, s, I) => new dt(A, e, g, s, I));
|
|
3782
|
+
class hg {
|
|
3765
3783
|
constructor() {
|
|
3766
3784
|
t(this, "initSegments", /* @__PURE__ */ new Map());
|
|
3767
3785
|
t(this, "set", (A, e, g) => {
|
|
@@ -3775,7 +3793,7 @@ class rg {
|
|
|
3775
3793
|
});
|
|
3776
3794
|
}
|
|
3777
3795
|
}
|
|
3778
|
-
function
|
|
3796
|
+
function hB(i, { mediaSource: A, mimeType: e }) {
|
|
3779
3797
|
return b(r({}, i), {
|
|
3780
3798
|
state: "initialized",
|
|
3781
3799
|
mimeType: e,
|
|
@@ -3784,13 +3802,13 @@ function rB(i, { mediaSource: A, mimeType: e }) {
|
|
|
3784
3802
|
sequenceNumber: 0
|
|
3785
3803
|
});
|
|
3786
3804
|
}
|
|
3787
|
-
function
|
|
3805
|
+
function Ai({
|
|
3788
3806
|
initSegments: i,
|
|
3789
3807
|
pendingSamples: A
|
|
3790
3808
|
}) {
|
|
3791
3809
|
return {
|
|
3792
3810
|
state: "uninitialized",
|
|
3793
|
-
initSegments: i != null ? i : new
|
|
3811
|
+
initSegments: i != null ? i : new hg(),
|
|
3794
3812
|
sequenceNumber: 0,
|
|
3795
3813
|
isWorkingOnPendingSamples: !1,
|
|
3796
3814
|
hasFirstSync: !!A,
|
|
@@ -3799,7 +3817,7 @@ function $t({
|
|
|
3799
3817
|
successfulAppendCalls: 0
|
|
3800
3818
|
};
|
|
3801
3819
|
}
|
|
3802
|
-
const
|
|
3820
|
+
const lt = class {
|
|
3803
3821
|
constructor(A, e, g) {
|
|
3804
3822
|
t(this, "maxChunkSize", 20);
|
|
3805
3823
|
t(this, "minConsecutiveErrorsBeforeEmit", 5);
|
|
@@ -3807,7 +3825,7 @@ const dt = class {
|
|
|
3807
3825
|
t(this, "timers", x.create());
|
|
3808
3826
|
t(this, "emitter");
|
|
3809
3827
|
t(this, "mediaElement");
|
|
3810
|
-
t(this, "mediaSource", new
|
|
3828
|
+
t(this, "mediaSource", new Cg());
|
|
3811
3829
|
t(this, "trackContexts", /* @__PURE__ */ new Map());
|
|
3812
3830
|
t(this, "autoRecoverFromMediaErrors", !0);
|
|
3813
3831
|
t(this, "quotaErrorCount", 0);
|
|
@@ -3843,16 +3861,16 @@ const dt = class {
|
|
|
3843
3861
|
});
|
|
3844
3862
|
});
|
|
3845
3863
|
});
|
|
3846
|
-
t(this, "setTrackContexts", (...e) =>
|
|
3864
|
+
t(this, "setTrackContexts", (...e) => m(this, [...e], function* (A = /* @__PURE__ */ new Map()) {
|
|
3847
3865
|
this.logger.debug("setTrackContexts"), ["audio", "video"].forEach((s) => {
|
|
3848
3866
|
var n, o, C, a;
|
|
3849
3867
|
const I = (o = (n = A.get(s)) == null ? void 0 : n.pendingSamples) != null ? o : [], B = (C = A.get(s)) == null ? void 0 : C.initSegments;
|
|
3850
3868
|
for (; I.length > 0 && !((a = I[0]) != null && a.isSync); )
|
|
3851
3869
|
I.shift();
|
|
3852
|
-
this.trackContexts.set(s,
|
|
3870
|
+
this.trackContexts.set(s, Ai({ pendingSamples: I, initSegments: B }));
|
|
3853
3871
|
});
|
|
3854
3872
|
}));
|
|
3855
|
-
t(this, "setSourceBuffers", (A) =>
|
|
3873
|
+
t(this, "setSourceBuffers", (A) => m(this, null, function* () {
|
|
3856
3874
|
if (this.mediaSource.isClosed()) {
|
|
3857
3875
|
this.pendingTracksToAddSourceBuffers = A;
|
|
3858
3876
|
return;
|
|
@@ -3871,9 +3889,9 @@ const dt = class {
|
|
|
3871
3889
|
}
|
|
3872
3890
|
for (const g of A) {
|
|
3873
3891
|
let s = this.trackContexts.get(g.type);
|
|
3874
|
-
s || (s =
|
|
3892
|
+
s || (s = Ai({ pendingSamples: [], initSegments: new hg() }), this.trackContexts.set(g.type, s)), s.state === "initialized" ? g.mimeType !== s.mimeType && (yield s.sourceBuffer.changeType(g.mimeType)) : this.trackContexts.set(
|
|
3875
3893
|
g.type,
|
|
3876
|
-
|
|
3894
|
+
hB(s, { mimeType: g.mimeType, mediaSource: this.mediaSource })
|
|
3877
3895
|
);
|
|
3878
3896
|
}
|
|
3879
3897
|
}));
|
|
@@ -3899,11 +3917,11 @@ const dt = class {
|
|
|
3899
3917
|
this.logger.debug("Added init segment", { channel: A.channelId, renditionId: A.renditionId });
|
|
3900
3918
|
const e = this.trackContexts.get(A.type);
|
|
3901
3919
|
if (!e)
|
|
3902
|
-
throw
|
|
3903
|
-
const g =
|
|
3920
|
+
throw Pe(A.type, A.renditionId);
|
|
3921
|
+
const g = NI(A.codec, A.data, A.timescale);
|
|
3904
3922
|
g && e.initSegments.set(A.channelId, A.renditionId, g);
|
|
3905
3923
|
});
|
|
3906
|
-
t(this, "append", (A, e) =>
|
|
3924
|
+
t(this, "append", (A, e) => m(this, null, function* () {
|
|
3907
3925
|
var B;
|
|
3908
3926
|
const g = A[0];
|
|
3909
3927
|
if (!g)
|
|
@@ -3911,18 +3929,18 @@ const dt = class {
|
|
|
3911
3929
|
const s = this.trackContexts.get(g.type), I = s == null ? void 0 : s.initSegments.get(g.channelId, g.renditionId);
|
|
3912
3930
|
if (!this.mediaSource.isClosed()) {
|
|
3913
3931
|
if (!I)
|
|
3914
|
-
throw
|
|
3932
|
+
throw Is(g.renditionId, g.channelId);
|
|
3915
3933
|
if (!s)
|
|
3916
|
-
throw
|
|
3934
|
+
throw Pe(g.type, g.renditionId);
|
|
3917
3935
|
if (s.state === "uninitialized")
|
|
3918
|
-
throw
|
|
3936
|
+
throw Bs(g.type, g.renditionId);
|
|
3919
3937
|
if (e) {
|
|
3920
3938
|
const n = (g.timestamp + ((B = g.compositionTimeOffset) != null ? B : 0)) / g.timescale;
|
|
3921
3939
|
yield s.sourceBuffer.removeBuffer(n, Number.POSITIVE_INFINITY), yield s.sourceBuffer.appendBuffer(I);
|
|
3922
3940
|
}
|
|
3923
3941
|
try {
|
|
3924
3942
|
let n = s.sequenceNumber;
|
|
3925
|
-
const o =
|
|
3943
|
+
const o = cB(A.map((C) => KI(C, n++)));
|
|
3926
3944
|
yield s.sourceBuffer.appendBuffer(o), s.sequenceNumber = n, s.consecutiveQuotaExceededErrorCount = 0, s.successfulAppendCalls++;
|
|
3927
3945
|
} catch (n) {
|
|
3928
3946
|
throw n instanceof DOMException && (n.code === DOMException.QUOTA_EXCEEDED_ERR ? (this.quotaErrorCount++, s.consecutiveQuotaExceededErrorCount++, this.logger.error("quota exceeded error", { error: n }), s.pendingSamples.unshift(...A)) : this.mediaElement.error && s.pendingSamples.unshift(...A)), n;
|
|
@@ -3934,22 +3952,22 @@ const dt = class {
|
|
|
3934
3952
|
return;
|
|
3935
3953
|
const e = this.trackContexts.get(A.type);
|
|
3936
3954
|
if (!e)
|
|
3937
|
-
throw
|
|
3955
|
+
throw Pe(A.type, A.renditionId);
|
|
3938
3956
|
if (!(!e.hasFirstSync && !A.isSync)) {
|
|
3939
3957
|
if (this.hasAddedInitialPosterFrame && A.isSync && A.type === "video") {
|
|
3940
3958
|
this.hasAddedInitialPosterFrame = !1;
|
|
3941
3959
|
const g = r({}, A);
|
|
3942
3960
|
g.timestamp = 0, e.pendingSamples.push(g);
|
|
3943
3961
|
}
|
|
3944
|
-
e.hasFirstSync = !0, e.pendingSamples.push(A), e.state !== "uninitialized" && (e.isWorkingOnPendingSamples ||
|
|
3962
|
+
e.hasFirstSync = !0, e.pendingSamples.push(A), e.state !== "uninitialized" && (e.isWorkingOnPendingSamples || dB(e, this.append, this.maxChunkSize).catch((g) => {
|
|
3945
3963
|
if (e.isWorkingOnPendingSamples = !1, g instanceof Error) {
|
|
3946
3964
|
if (this.logger.error("append failed", { message: g.message, name: g.name }), g instanceof DOMException && g.code === DOMException.QUOTA_EXCEEDED_ERR) {
|
|
3947
3965
|
if (e.consecutiveQuotaExceededErrorCount >= this.minConsecutiveErrorsBeforeEmit) {
|
|
3948
|
-
const s =
|
|
3966
|
+
const s = Nt(!1, g, e.consecutiveQuotaExceededErrorCount, A.type);
|
|
3949
3967
|
this.emitter.emit("error", s);
|
|
3950
3968
|
}
|
|
3951
3969
|
} else {
|
|
3952
|
-
const s =
|
|
3970
|
+
const s = Nt(!1, g, e.consecutiveQuotaExceededErrorCount, A.type);
|
|
3953
3971
|
this.emitter.emit("error", s);
|
|
3954
3972
|
}
|
|
3955
3973
|
this.mediaElement.error && this.onSourceEnded();
|
|
@@ -3963,7 +3981,7 @@ const dt = class {
|
|
|
3963
3981
|
t(this, "onSourceEnded", () => {
|
|
3964
3982
|
const { error: A } = this.mediaElement;
|
|
3965
3983
|
if (A) {
|
|
3966
|
-
const e = /AUDIO_RENDERER/.test(A.message) || !this.autoRecoverFromMediaErrors, g =
|
|
3984
|
+
const e = /AUDIO_RENDERER/.test(A.message) || !this.autoRecoverFromMediaErrors, g = ss(e, A);
|
|
3967
3985
|
if (this.logger.error("MediaElement error", { error: g }), this.emitter.emit("error", g), !g.isFatal()) {
|
|
3968
3986
|
this.logger.info("Re-opening MediaSource"), this.emitter.emit("recovered from media error", { error: g, count: this.recoveredFromErrorCount }), this.recoveredFromErrorCount++;
|
|
3969
3987
|
const s = !this.mediaElement.paused, I = [];
|
|
@@ -3977,40 +3995,40 @@ const dt = class {
|
|
|
3977
3995
|
this.logger = A, this.mediaElement = g, this.emitter = e;
|
|
3978
3996
|
}
|
|
3979
3997
|
};
|
|
3980
|
-
let ae =
|
|
3998
|
+
let ae = lt;
|
|
3981
3999
|
t(ae, "create", (A, e, g) => {
|
|
3982
|
-
const s = new
|
|
4000
|
+
const s = new lt(A, e, g);
|
|
3983
4001
|
return s.setTrackContexts(), s.mediaSource.on("source ended", s.onSourceEnded), s.mediaSource.on("source open", s.onSourceOpen), g.src = s.mediaSource.createObjectURL(), s;
|
|
3984
4002
|
});
|
|
3985
|
-
const
|
|
4003
|
+
const ei = (i, A) => {
|
|
3986
4004
|
var B;
|
|
3987
4005
|
const e = i.renditionId !== A.renditionId, g = i.channelId !== A.channelId, s = ((B = i.timestamp) != null ? B : 0) > A.timestamp;
|
|
3988
4006
|
let I = !1;
|
|
3989
4007
|
return i.type === "video" && A.type === "video" && (I = A.width !== i.width || A.height !== i.height), g || e || s || I;
|
|
3990
|
-
},
|
|
4008
|
+
}, cB = function(i) {
|
|
3991
4009
|
const A = i.reduce((s, I) => s + I.byteLength, 0), e = new Uint8Array(A);
|
|
3992
4010
|
let g = 0;
|
|
3993
4011
|
return i.forEach((s) => {
|
|
3994
4012
|
e.set(new Uint8Array(s), g), g += s.byteLength;
|
|
3995
4013
|
}), e.buffer;
|
|
3996
|
-
},
|
|
4014
|
+
}, dB = (i, A, e) => m(void 0, null, function* () {
|
|
3997
4015
|
for (i.isWorkingOnPendingSamples = !0; i.pendingSamples.length > 0; ) {
|
|
3998
4016
|
const g = [];
|
|
3999
4017
|
let s = 0;
|
|
4000
4018
|
for (let n = 0; n < i.pendingSamples.length; n++) {
|
|
4001
4019
|
s = n;
|
|
4002
4020
|
const o = i.pendingSamples[n], C = i.pendingSamples[n + 1];
|
|
4003
|
-
if (o && (g.push(o), C &&
|
|
4021
|
+
if (o && (g.push(o), C && ei(o, C)) || n === e - 1)
|
|
4004
4022
|
break;
|
|
4005
4023
|
}
|
|
4006
4024
|
const I = g[0];
|
|
4007
4025
|
if (!I)
|
|
4008
4026
|
break;
|
|
4009
|
-
const B = i.previousSample ?
|
|
4027
|
+
const B = i.previousSample ? ei(i.previousSample, I) : !0;
|
|
4010
4028
|
yield A(g, B), i.pendingSamples = i.pendingSamples.slice(s + 1), i.previousSample = g[g.length - 1];
|
|
4011
4029
|
}
|
|
4012
4030
|
i.isWorkingOnPendingSamples = !1;
|
|
4013
|
-
}),
|
|
4031
|
+
}), ut = class {
|
|
4014
4032
|
constructor(A, e) {
|
|
4015
4033
|
t(this, "logger");
|
|
4016
4034
|
t(this, "emitter");
|
|
@@ -4029,30 +4047,30 @@ const Ai = (i, A) => {
|
|
|
4029
4047
|
t(this, "getPictureInPictureSize", () => this.pictureInPictureWindow);
|
|
4030
4048
|
t(this, "isPictureInPictureActive", () => this.isWebkitPresentationModeActive() || this.isStandardPictureInPictureActive());
|
|
4031
4049
|
t(this, "isPictureInPictureSupported", () => this.isWebkitPresentationModeSupported() || this.isStandardPictureInPictureSupported());
|
|
4032
|
-
t(this, "requestPictureInPicture", () => this.isStandardPictureInPictureSupported() ? this.requestStandardPictureInPicture() : this.isWebkitPresentationModeSupported() ? this.requestWebkitPresentationMode("picture-in-picture") : Promise.reject(new Error("Picture in picture is not supported")));
|
|
4050
|
+
t(this, "requestPictureInPicture", () => (this.emitter.emit("ios-hack: reset size"), this.isStandardPictureInPictureSupported() ? this.requestStandardPictureInPicture() : this.isWebkitPresentationModeSupported() ? this.requestWebkitPresentationMode("picture-in-picture") : Promise.reject(new Error("Picture in picture is not supported"))));
|
|
4033
4051
|
t(this, "exitPictureInPicture", () => this.isStandardPictureInPictureSupported() ? this.exitStandardPictureInPicture() : this.isWebkitPresentationModeSupported() ? this.requestWebkitPresentationMode("inline") : Promise.reject(new Error("Picture in picture is not supported")));
|
|
4034
4052
|
t(this, "getStatistics", () => ({
|
|
4035
4053
|
isPictureInPictureActive: this.isPictureInPictureActive()
|
|
4036
4054
|
}));
|
|
4037
|
-
t(this, "requestStandardPictureInPicture", () =>
|
|
4055
|
+
t(this, "requestStandardPictureInPicture", () => m(this, null, function* () {
|
|
4038
4056
|
return yield this.element.requestPictureInPicture();
|
|
4039
4057
|
}));
|
|
4040
|
-
t(this, "exitStandardPictureInPicture", () =>
|
|
4058
|
+
t(this, "exitStandardPictureInPicture", () => m(this, null, function* () {
|
|
4041
4059
|
return yield document.exitPictureInPicture();
|
|
4042
4060
|
}));
|
|
4043
4061
|
t(this, "isStandardPictureInPictureSupported", () => !!this.element && !!this.element.requestPictureInPicture && !!document.pictureInPictureEnabled);
|
|
4044
4062
|
t(this, "isStandardPictureInPictureActive", () => !!this.element && !!document.pictureInPictureElement);
|
|
4045
4063
|
t(this, "isWebkitPresentationModeActive", () => !!this.element && this.element.webkitPresentationMode === "picture-in-picture");
|
|
4046
|
-
t(this, "requestWebkitPresentationMode", (A) =>
|
|
4064
|
+
t(this, "requestWebkitPresentationMode", (A) => m(this, null, function* () {
|
|
4047
4065
|
return this.element.webkitSetPresentationMode(A), Promise.resolve();
|
|
4048
4066
|
}));
|
|
4049
4067
|
t(this, "isWebkitPresentationModeSupported", () => !!this.element && !!this.element.webkitSetPresentationMode);
|
|
4050
4068
|
this.emitter = A, this.logger = e, this.emitter.on("add picture in picture listener", this.onEnablePictureInPicture);
|
|
4051
4069
|
}
|
|
4052
4070
|
};
|
|
4053
|
-
let Ee =
|
|
4054
|
-
t(Ee, "create", (A, e) => new
|
|
4055
|
-
const
|
|
4071
|
+
let Ee = ut;
|
|
4072
|
+
t(Ee, "create", (A, e) => new ut(A, e));
|
|
4073
|
+
const mt = class {
|
|
4056
4074
|
constructor(A, e, g, s) {
|
|
4057
4075
|
t(this, "emitter");
|
|
4058
4076
|
t(this, "logger");
|
|
@@ -4089,27 +4107,27 @@ const ut = class {
|
|
|
4089
4107
|
this.emitter = A, this.logger = e, this.clockSource = g, this.targetBufferTime = s, this.emitter.on("buffer state", this.onBufferedStateChanged), this.emitter.on("needs user input", this.onNeedsUserInput);
|
|
4090
4108
|
}
|
|
4091
4109
|
};
|
|
4092
|
-
let re =
|
|
4093
|
-
t(re, "create", (A, e, g, s) => new
|
|
4094
|
-
const
|
|
4110
|
+
let re = mt;
|
|
4111
|
+
t(re, "create", (A, e, g, s) => new mt(A, e, g, s));
|
|
4112
|
+
const it = () => ({
|
|
4095
4113
|
upgradesFromLevel: [],
|
|
4096
4114
|
downgradesFromLevel: [],
|
|
4097
4115
|
bufferingRanges: [],
|
|
4098
4116
|
activeRanges: [],
|
|
4099
4117
|
decodeRate: Number.MAX_SAFE_INTEGER
|
|
4100
|
-
}),
|
|
4118
|
+
}), lB = () => ({
|
|
4101
4119
|
levels: {},
|
|
4102
4120
|
levelDowngrades: [],
|
|
4103
4121
|
levelUpgrades: [],
|
|
4104
4122
|
bufferFullness: 0,
|
|
4105
|
-
general:
|
|
4106
|
-
}),
|
|
4123
|
+
general: it()
|
|
4124
|
+
}), wt = class {
|
|
4107
4125
|
constructor(A, e) {
|
|
4108
4126
|
t(this, "minBufferFullnessLengthForRegression", 6);
|
|
4109
4127
|
t(this, "logger");
|
|
4110
4128
|
t(this, "emitter");
|
|
4111
4129
|
t(this, "timers", x.create());
|
|
4112
|
-
t(this, "metrics",
|
|
4130
|
+
t(this, "metrics", lB());
|
|
4113
4131
|
t(this, "bufferFullness", new W(30));
|
|
4114
4132
|
t(this, "bufferFullnessRegression");
|
|
4115
4133
|
t(this, "currentLevel");
|
|
@@ -4172,15 +4190,15 @@ const tt = () => ({
|
|
|
4172
4190
|
return A;
|
|
4173
4191
|
});
|
|
4174
4192
|
t(this, "bufferingEventsLast", (A) => this.metrics.general.bufferingRanges.filter((e) => e.start >= Date.now() - A).length);
|
|
4175
|
-
t(this, "timeSpentBufferingLast", (A) =>
|
|
4176
|
-
t(this, "timeSpentActiveLast", (A) =>
|
|
4193
|
+
t(this, "timeSpentBufferingLast", (A) => bt(this.metrics.general.bufferingRanges, A));
|
|
4194
|
+
t(this, "timeSpentActiveLast", (A) => bt(this.metrics.general.activeRanges, A));
|
|
4177
4195
|
t(this, "timeSpentPlayingInAtLeastLevelRatio", (A) => {
|
|
4178
4196
|
var o, C, a, Q;
|
|
4179
4197
|
const e = this.timeSpentBuffering(), g = this.timeActive(), s = this.bufferingRatios(), I = this.activeRatios(), B = ((C = (o = A.video) == null ? void 0 : o.bitRate) != null ? C : 0) + ((Q = (a = A.audio) == null ? void 0 : a.bitRate) != null ? Q : 0), n = e / g;
|
|
4180
4198
|
return Object.keys(this.metrics.levels).map((h) => parseInt(h, 10)).filter((h) => h >= B).reduce(
|
|
4181
|
-
(h,
|
|
4182
|
-
var
|
|
4183
|
-
return ((
|
|
4199
|
+
(h, u) => {
|
|
4200
|
+
var l, D;
|
|
4201
|
+
return ((l = I.get(u.toString())) != null ? l : 0) - ((D = s.get(u.toString())) != null ? D : 0) * n + h;
|
|
4184
4202
|
},
|
|
4185
4203
|
0
|
|
4186
4204
|
);
|
|
@@ -4194,18 +4212,18 @@ const tt = () => ({
|
|
|
4194
4212
|
fatalQosCount: this.fatalQosCount
|
|
4195
4213
|
}));
|
|
4196
4214
|
t(this, "onRenditionLevelChanged", (A) => {
|
|
4197
|
-
var I, B, n, o, C, a, Q, h,
|
|
4198
|
-
const e = ((n = (B = (I = A.from) == null ? void 0 : I.video) == null ? void 0 : B.bitRate) != null ? n : 0) + ((a = (C = (o = A.from) == null ? void 0 : o.audio) == null ? void 0 : C.bitRate) != null ? a : 0), g = ((
|
|
4215
|
+
var I, B, n, o, C, a, Q, h, u, l, D, S, q, H;
|
|
4216
|
+
const e = ((n = (B = (I = A.from) == null ? void 0 : I.video) == null ? void 0 : B.bitRate) != null ? n : 0) + ((a = (C = (o = A.from) == null ? void 0 : o.audio) == null ? void 0 : C.bitRate) != null ? a : 0), g = ((u = (h = (Q = A.to) == null ? void 0 : Q.video) == null ? void 0 : h.bitRate) != null ? u : 0) + ((S = (D = (l = A.to) == null ? void 0 : l.audio) == null ? void 0 : D.bitRate) != null ? S : 0);
|
|
4199
4217
|
this.logger.info("rendition level changed", { fromLevel: e, toLevel: g }), this.metrics.general.activeRanges.length === 0 && this.setActive(), A.from && A.to && (e < g ? this.metrics.general.upgradesFromLevel.push(Date.now()) : this.metrics.general.downgradesFromLevel.push(Date.now()));
|
|
4200
4218
|
let s = !1;
|
|
4201
4219
|
if (A.from) {
|
|
4202
|
-
const G = (q = this.metrics.levels[e]) != null ? q :
|
|
4220
|
+
const G = (q = this.metrics.levels[e]) != null ? q : it();
|
|
4203
4221
|
e < g ? G.upgradesFromLevel.push(Date.now()) : G.downgradesFromLevel.push(Date.now()), oA(G.activeRanges);
|
|
4204
4222
|
const K = G.bufferingRanges[G.bufferingRanges.length - 1];
|
|
4205
4223
|
s = !!K && !K.end, oA(G.bufferingRanges), this.metrics.levels[e] = G;
|
|
4206
4224
|
}
|
|
4207
4225
|
if (A.to) {
|
|
4208
|
-
const G = (H = this.metrics.levels[g]) != null ? H :
|
|
4226
|
+
const G = (H = this.metrics.levels[g]) != null ? H : it();
|
|
4209
4227
|
wA(G.activeRanges), s && wA(G.bufferingRanges), this.metrics.levels[g] = G, this.currentLevel = g;
|
|
4210
4228
|
}
|
|
4211
4229
|
});
|
|
@@ -4229,7 +4247,7 @@ const tt = () => ({
|
|
|
4229
4247
|
const e = this.metrics.levels[(g = this.currentLevel) != null ? g : 0];
|
|
4230
4248
|
e && (e.decodeRate = A);
|
|
4231
4249
|
});
|
|
4232
|
-
t(this, "calculateLinearRegression", () =>
|
|
4250
|
+
t(this, "calculateLinearRegression", () => Rg(
|
|
4233
4251
|
this.bufferFullness.items().map((A, e) => ({
|
|
4234
4252
|
x: e,
|
|
4235
4253
|
y: A
|
|
@@ -4269,9 +4287,9 @@ const tt = () => ({
|
|
|
4269
4287
|
wA(this.metrics.general.activeRanges);
|
|
4270
4288
|
}
|
|
4271
4289
|
};
|
|
4272
|
-
let he =
|
|
4273
|
-
t(he, "create", (A, e) => new
|
|
4274
|
-
const
|
|
4290
|
+
let he = wt;
|
|
4291
|
+
t(he, "create", (A, e) => new wt(A, e));
|
|
4292
|
+
const St = class {
|
|
4275
4293
|
constructor(A, e) {
|
|
4276
4294
|
t(this, "renditions", /* @__PURE__ */ new Map());
|
|
4277
4295
|
t(this, "renditionLevels", []);
|
|
@@ -4354,9 +4372,9 @@ const wt = class {
|
|
|
4354
4372
|
var a;
|
|
4355
4373
|
const { video: e, audio: g, channelId: s } = A, I = (a = this.renditions.get(s)) != null ? a : [], B = I.filter(xA).filter((Q) => e && Q.codec === e.codec), n = I.filter(vA).filter((Q) => g && Q.codec === g.codec && Q.language === g.language), o = Math.max(B.length, n.length), C = [];
|
|
4356
4374
|
for (let Q = 0; Q < o; Q++) {
|
|
4357
|
-
const h = B[Math.min(B.length - 1, Q)],
|
|
4375
|
+
const h = B[Math.min(B.length - 1, Q)], u = n[Math.min(n.length - 1, Q)];
|
|
4358
4376
|
C.push({
|
|
4359
|
-
audio:
|
|
4377
|
+
audio: u,
|
|
4360
4378
|
video: h
|
|
4361
4379
|
});
|
|
4362
4380
|
}
|
|
@@ -4366,9 +4384,9 @@ const wt = class {
|
|
|
4366
4384
|
this.subscriptionSource = e, this.emitter = A, this.emitter.on("renditions", this.onRenditions), this.emitter.on("subscription changed", this.onSubscriptionChanged);
|
|
4367
4385
|
}
|
|
4368
4386
|
};
|
|
4369
|
-
let ce =
|
|
4370
|
-
t(ce, "create", (A, e) => new
|
|
4371
|
-
const
|
|
4387
|
+
let ce = St;
|
|
4388
|
+
t(ce, "create", (A, e) => new St(A, e));
|
|
4389
|
+
const ti = (i) => JSON.parse(JSON.stringify(i)), Dt = class {
|
|
4372
4390
|
constructor(A, e, g) {
|
|
4373
4391
|
t(this, "logger");
|
|
4374
4392
|
t(this, "timers", new x());
|
|
@@ -4419,13 +4437,13 @@ const ei = (i) => JSON.parse(JSON.stringify(i)), St = class {
|
|
|
4419
4437
|
});
|
|
4420
4438
|
t(this, "isNewSubscription", () => {
|
|
4421
4439
|
const A = ["burstMs", "meta", "initiator", "channelGroupId"];
|
|
4422
|
-
return !dA(
|
|
4440
|
+
return !dA(Ut(this.currentSubscription, A), Ut(this.targetSubscription, A));
|
|
4423
4441
|
});
|
|
4424
4442
|
t(this, "onSubscriptionChanged", ({ to: A }) => {
|
|
4425
4443
|
this.logger.debug("onSubscriptionChanged", { to: A }), this.currentSubscription = r({}, A), this._isSwitchingSubscription = this.isNewSubscription();
|
|
4426
4444
|
});
|
|
4427
4445
|
t(this, "scheduleSubscriptionChange", () => {
|
|
4428
|
-
this.targetSubscription =
|
|
4446
|
+
this.targetSubscription = ti(this.targetSubscription), this._isSwitchingSubscription = this.isNewSubscription();
|
|
4429
4447
|
const A = this.currentSubscription.channelId !== this.targetSubscription.channelId;
|
|
4430
4448
|
this._isSwitchingSubscription && (A && this.burstMs ? this.setBurst(this.burstMs) : this.setBurst(0), this.pendingSubscriptionTimeoutId && (this.timers.clearTimeout(this.pendingSubscriptionTimeoutId), this.pendingSubscriptionTimeoutId = void 0), this.pendingSubscriptionTimeoutId = this.timers.setTimeout(
|
|
4431
4449
|
() => this.emitter.emit(
|
|
@@ -4438,12 +4456,12 @@ const ei = (i) => JSON.parse(JSON.stringify(i)), St = class {
|
|
|
4438
4456
|
0
|
|
4439
4457
|
));
|
|
4440
4458
|
});
|
|
4441
|
-
this.logger = A, this.targetSubscription = e, this.currentSubscription =
|
|
4459
|
+
this.logger = A, this.targetSubscription = e, this.currentSubscription = ti(e), this.emitter = g, this.emitter.on("subscription changed", this.onSubscriptionChanged);
|
|
4442
4460
|
}
|
|
4443
4461
|
};
|
|
4444
|
-
let de =
|
|
4445
|
-
t(de, "create", (A, e, g) => new
|
|
4446
|
-
const
|
|
4462
|
+
let de = Dt;
|
|
4463
|
+
t(de, "create", (A, e, g) => new Dt(A, g, e));
|
|
4464
|
+
const uB = 5e3, mB = () => ag() || Ge() || XI(), ii = () => mB() ? 100 : 0, gi = (i) => (A) => A > i, ft = class {
|
|
4447
4465
|
constructor(A, e, g, s, I) {
|
|
4448
4466
|
t(this, "emitter");
|
|
4449
4467
|
t(this, "logger");
|
|
@@ -4464,8 +4482,8 @@ const lB = 5e3, uB = () => Qg() || Re() || OI(), ti = () => uB() ? 100 : 0, ii =
|
|
|
4464
4482
|
maxBehind: 50,
|
|
4465
4483
|
multiplier: 1,
|
|
4466
4484
|
maxBehindAllowed: 600,
|
|
4467
|
-
overshoot:
|
|
4468
|
-
minOvershootAllowed:
|
|
4485
|
+
overshoot: ii(),
|
|
4486
|
+
minOvershootAllowed: ii(),
|
|
4469
4487
|
maxOvershootAllowed: 500
|
|
4470
4488
|
});
|
|
4471
4489
|
t(this, "maxTimeSyncDifferenceTolerance", 150);
|
|
@@ -4538,7 +4556,7 @@ const lB = 5e3, uB = () => Qg() || Re() || OI(), ti = () => uB() ? 100 : 0, ii =
|
|
|
4538
4556
|
var g;
|
|
4539
4557
|
if (!A.channelId)
|
|
4540
4558
|
throw new Error("Sample must be assigned to a channel");
|
|
4541
|
-
if (this.currentChannelId || (this.currentChannelId = A.channelId), this.timestampOffset || (this.timestampOffset = A.timestamp / A.timescale * 1e3 -
|
|
4559
|
+
if (this.currentChannelId || (this.currentChannelId = A.channelId), this.timestampOffset || (this.timestampOffset = A.timestamp / A.timescale * 1e3 - uB), this.currentChannelId !== A.channelId) {
|
|
4542
4560
|
let s = Number.MAX_SAFE_INTEGER;
|
|
4543
4561
|
console.assert(this.highestSeenTimestamps.size !== 0, "no known timestamps"), this.highestSeenTimestamps.forEach((B) => {
|
|
4544
4562
|
s = Math.min(s, B);
|
|
@@ -4581,7 +4599,7 @@ const lB = 5e3, uB = () => Qg() || Re() || OI(), ti = () => uB() ? 100 : 0, ii =
|
|
|
4581
4599
|
}
|
|
4582
4600
|
if (!this.timestampOffset)
|
|
4583
4601
|
return;
|
|
4584
|
-
const e = Date.now() - this.seekTimeoutTime * this.timeshiftSync.multiplier, g = this.timeShiftAdjustments.filter(
|
|
4602
|
+
const e = Date.now() - this.seekTimeoutTime * this.timeshiftSync.multiplier, g = this.timeShiftAdjustments.filter(gi(e)).length;
|
|
4585
4603
|
if (g && this.timeshiftSync.multiplier > 2)
|
|
4586
4604
|
return this.logger.debug("Too many diff timeShifts within sliding window", {
|
|
4587
4605
|
timeShiftsCooldownMs: e,
|
|
@@ -4606,7 +4624,7 @@ const lB = 5e3, uB = () => Qg() || Re() || OI(), ti = () => uB() ? 100 : 0, ii =
|
|
|
4606
4624
|
const A = (B = this.drift) != null ? B : 0;
|
|
4607
4625
|
if (A < 0 && -A < this.currentSyncMaxAhead() || A > 0 && A < this.currentSyncMaxBehind() || Math.abs(A) < 1 || !this.isSeekCooldownExpired())
|
|
4608
4626
|
return;
|
|
4609
|
-
const e = Date.now() - this.seekTimeoutTime * this.syncMaxBehindMultiplier, g = this.driftAdjustments.filter(
|
|
4627
|
+
const e = Date.now() - this.seekTimeoutTime * this.syncMaxBehindMultiplier, g = this.driftAdjustments.filter(gi(e)).length;
|
|
4610
4628
|
if (g && this.syncMaxBehindMultiplier > 2)
|
|
4611
4629
|
return this.logger.debug("Too many diff adjustments within sliding window", {
|
|
4612
4630
|
adjustmentsCooldownMs: e,
|
|
@@ -4677,9 +4695,9 @@ const lB = 5e3, uB = () => Qg() || Re() || OI(), ti = () => uB() ? 100 : 0, ii =
|
|
|
4677
4695
|
return this.serverCurrentTime - this.playbackSource.currentTime;
|
|
4678
4696
|
}
|
|
4679
4697
|
};
|
|
4680
|
-
let le =
|
|
4681
|
-
t(le, "create", (A, e, g, s, I) => new
|
|
4682
|
-
const
|
|
4698
|
+
let le = ft;
|
|
4699
|
+
t(le, "create", (A, e, g, s, I) => new ft(A, e, g, s, I));
|
|
4700
|
+
const wB = {
|
|
4683
4701
|
enabled: !0,
|
|
4684
4702
|
interval: 3e4,
|
|
4685
4703
|
includeErrors: !0,
|
|
@@ -4688,7 +4706,7 @@ const mB = {
|
|
|
4688
4706
|
maxRetries: 10,
|
|
4689
4707
|
maxErrorReports: 50,
|
|
4690
4708
|
maxEvents: 50
|
|
4691
|
-
},
|
|
4709
|
+
}, We = (i, A) => b(r({}, A), { type: i, timestamp: new Date().toISOString(), discriminator: "web" }), pt = class {
|
|
4692
4710
|
constructor(A, e, g, s) {
|
|
4693
4711
|
t(this, "logger");
|
|
4694
4712
|
t(this, "timers", new x());
|
|
@@ -4711,19 +4729,19 @@ const mB = {
|
|
|
4711
4729
|
t(this, "addStats", ({ isFinal: A, initiator: e } = { isFinal: !1, initiator: "interval" }, g = {}) => {
|
|
4712
4730
|
if (!this.options.includeStats)
|
|
4713
4731
|
return;
|
|
4714
|
-
const s = this.parentContext.getStatistics(), I =
|
|
4732
|
+
const s = this.parentContext.getStatistics(), I = We("stats", b(r(r({}, g), s), { isFinal: A, initiator: e, count: this.statsCount++ }));
|
|
4715
4733
|
this.unsentLines.push(I);
|
|
4716
4734
|
});
|
|
4717
4735
|
t(this, "addEvent", (A) => {
|
|
4718
4736
|
if (!this.options.includeEvents || this.eventCount > this.options.maxEvents)
|
|
4719
4737
|
return;
|
|
4720
|
-
const e = this.parentContext.getStatistics(), g =
|
|
4738
|
+
const e = this.parentContext.getStatistics(), g = We("event", r(r({}, e), A));
|
|
4721
4739
|
this.eventCount++, this.unsentLines.push(g);
|
|
4722
4740
|
});
|
|
4723
4741
|
t(this, "getStatistics", () => ({
|
|
4724
4742
|
errorCount: this.errorCount
|
|
4725
4743
|
}));
|
|
4726
|
-
t(this, "send", (A) =>
|
|
4744
|
+
t(this, "send", (A) => m(this, null, function* () {
|
|
4727
4745
|
if (this.options.enabled && !(this.retries >= this.options.maxRetries) && !this.unsentLines.isEmpty()) {
|
|
4728
4746
|
this.logger.debug("Sending telemetry", { lines: this.unsentLines.items() });
|
|
4729
4747
|
try {
|
|
@@ -4741,7 +4759,7 @@ const mB = {
|
|
|
4741
4759
|
type: "telemetry",
|
|
4742
4760
|
body: e
|
|
4743
4761
|
})
|
|
4744
|
-
) : yield
|
|
4762
|
+
) : yield Mg(new URL(this.options.url), { body: e, headers: { "Content-Type": "text/plain" } });
|
|
4745
4763
|
break;
|
|
4746
4764
|
}
|
|
4747
4765
|
this.retries = 0, this.unsentLines.clear();
|
|
@@ -4760,21 +4778,21 @@ const mB = {
|
|
|
4760
4778
|
t(this, "onError", (A) => this.addError(A.error));
|
|
4761
4779
|
t(this, "addError", (A) => {
|
|
4762
4780
|
const { includeErrors: e, maxErrorReports: g } = this.options;
|
|
4763
|
-
if (e && A instanceof
|
|
4781
|
+
if (e && A instanceof p) {
|
|
4764
4782
|
if (this.errorCount++, this.errorCount > g)
|
|
4765
4783
|
return;
|
|
4766
4784
|
const s = this.parentContext.getStatistics();
|
|
4767
4785
|
this.unsentLines.push(
|
|
4768
|
-
|
|
4786
|
+
We("error", r(r({}, s), A.toStringifiable()))
|
|
4769
4787
|
);
|
|
4770
4788
|
}
|
|
4771
4789
|
});
|
|
4772
|
-
this.logger = A, this.emitter = e, this.options = r(r({},
|
|
4790
|
+
this.logger = A, this.emitter = e, this.options = r(r({}, wB), g), this.parentContext = s;
|
|
4773
4791
|
}
|
|
4774
4792
|
};
|
|
4775
|
-
let PA =
|
|
4776
|
-
t(PA, "create", (A, e, g, s) => new
|
|
4777
|
-
const
|
|
4793
|
+
let PA = pt;
|
|
4794
|
+
t(PA, "create", (A, e, g, s) => new pt(A, e, g, s));
|
|
4795
|
+
const Ft = class {
|
|
4778
4796
|
constructor(A, e, g) {
|
|
4779
4797
|
t(this, "logger");
|
|
4780
4798
|
t(this, "element");
|
|
@@ -4789,13 +4807,13 @@ const pt = class {
|
|
|
4789
4807
|
this.logger = A, this.element = e, this.documentState = g, this.timers.setInterval(this.unpause, 100);
|
|
4790
4808
|
}
|
|
4791
4809
|
};
|
|
4792
|
-
let qA =
|
|
4793
|
-
t(qA, "create", (A, e, g) => new
|
|
4794
|
-
const
|
|
4795
|
-
function
|
|
4796
|
-
return
|
|
4810
|
+
let qA = Ft;
|
|
4811
|
+
t(qA, "create", (A, e, g) => new Ft(A, e, g));
|
|
4812
|
+
const SB = ["minBufferTime", "maxBufferTime", "burstEnabled"];
|
|
4813
|
+
function DB(i) {
|
|
4814
|
+
return SB.includes(i);
|
|
4797
4815
|
}
|
|
4798
|
-
class
|
|
4816
|
+
class fB {
|
|
4799
4817
|
constructor(A) {
|
|
4800
4818
|
t(this, "options");
|
|
4801
4819
|
t(this, "overrides", /* @__PURE__ */ new Map());
|
|
@@ -4812,7 +4830,7 @@ class DB {
|
|
|
4812
4830
|
}
|
|
4813
4831
|
get(A, e) {
|
|
4814
4832
|
var g;
|
|
4815
|
-
if (e &&
|
|
4833
|
+
if (e && DB(A)) {
|
|
4816
4834
|
const s = (g = this.overrides.get(e)) == null ? void 0 : g[A];
|
|
4817
4835
|
if (typeof s != "undefined")
|
|
4818
4836
|
return s;
|
|
@@ -4824,15 +4842,26 @@ class DB {
|
|
|
4824
4842
|
return (g = this.overrides.get(e)) == null ? void 0 : g[A];
|
|
4825
4843
|
}
|
|
4826
4844
|
}
|
|
4827
|
-
const
|
|
4845
|
+
const pB = (i) => {
|
|
4846
|
+
let A = i, e = 0, g = 0;
|
|
4847
|
+
return (I) => {
|
|
4848
|
+
var l, D, S;
|
|
4849
|
+
const B = A;
|
|
4850
|
+
A = I, B.flags && we(B.flags) && (e = (l = B.compositionTimeOffset) != null ? l : 0), B.timestamp += e, B.compositionTimeOffset = ((D = B.compositionTimeOffset) != null ? D : 0) - e;
|
|
4851
|
+
const n = B.timestamp / B.timescale, C = I.flags && we(I.flags) ? (S = I.compositionTimeOffset) != null ? S : 0 : e, Q = (I.timestamp + C) / I.timescale, h = Math.max(0, Math.round((Q - n) * B.timescale));
|
|
4852
|
+
return h > 0 && (g = h), b(r({}, B), {
|
|
4853
|
+
duration: h > 0 ? h : g
|
|
4854
|
+
});
|
|
4855
|
+
};
|
|
4856
|
+
}, FB = (i, A) => {
|
|
4828
4857
|
if (!i)
|
|
4829
4858
|
return;
|
|
4830
4859
|
const e = new URL("/subscribe", i);
|
|
4831
4860
|
return e.searchParams.append("channelId", A.channelId), e.searchParams.append("sessionId", A.sessionId), e.searchParams.append("clientId", A.clientId), A.audio && A.audio.codec && (e.searchParams.append("audio.bitRate", Math.round(A.audio.bitRate).toString()), e.searchParams.append("audio.codec", A.audio.codec), A.audio.language && e.searchParams.append("audio.language", A.audio.language)), A.video && A.video.codec && (e.searchParams.append("video.width", A.video.width.toString()), e.searchParams.append("video.height", A.video.height.toString()), e.searchParams.append("video.bitRate", Math.round(A.video.bitRate).toString()), e.searchParams.append("video.codec", A.video.codec)), A.expectAdditionalConnection && e.searchParams.append("expectAdditionalConnection", A.expectAdditionalConnection.toString()), A.burstMs && e.searchParams.append("burstMs", A.burstMs.toString()), A.channelGroupId && e.searchParams.append("channelGroupId", A.channelGroupId), A.authToken && (e.searchParams.append("auth.token", A.authToken), e.searchParams.append("auth.type", "jwt")), e.toString();
|
|
4832
|
-
},
|
|
4861
|
+
}, yB = (i, A, e) => xA(A) ? r(b(r({}, i), {
|
|
4833
4862
|
type: "video",
|
|
4834
4863
|
codec: A.codec,
|
|
4835
|
-
isSync:
|
|
4864
|
+
isSync: we(i.flags),
|
|
4836
4865
|
data: i.payload,
|
|
4837
4866
|
duration: 0,
|
|
4838
4867
|
width: A.width,
|
|
@@ -4843,10 +4872,10 @@ const fB = (i, A) => {
|
|
|
4843
4872
|
sampleRate: A.sampleRate,
|
|
4844
4873
|
codec: A.codec,
|
|
4845
4874
|
language: A.language,
|
|
4846
|
-
isSync:
|
|
4875
|
+
isSync: we(i.flags),
|
|
4847
4876
|
data: i.payload,
|
|
4848
4877
|
duration: 0
|
|
4849
|
-
}),
|
|
4878
|
+
}), RB = () => {
|
|
4850
4879
|
var g;
|
|
4851
4880
|
const i = window.location.origin, e = !i || i == "null" ? "" : `${window.location.pathname}${window.location.search}`.substring(0, 1e3);
|
|
4852
4881
|
return {
|
|
@@ -4855,7 +4884,7 @@ const fB = (i, A) => {
|
|
|
4855
4884
|
locationPath: e,
|
|
4856
4885
|
ancestorOrigins: ((g = window.location.ancestorOrigins) == null ? void 0 : g.length) > 0 ? Array.from(window.location.ancestorOrigins) : void 0
|
|
4857
4886
|
};
|
|
4858
|
-
},
|
|
4887
|
+
}, GB = (i) => {
|
|
4859
4888
|
if (typeof i != "object" || i === null)
|
|
4860
4889
|
throw new Error("not an object");
|
|
4861
4890
|
if (!("video" in i))
|
|
@@ -4869,7 +4898,7 @@ const fB = (i, A) => {
|
|
|
4869
4898
|
constructor(e) {
|
|
4870
4899
|
super();
|
|
4871
4900
|
t(this, "pictureInPicture");
|
|
4872
|
-
t(this, "browser",
|
|
4901
|
+
t(this, "browser", Eg());
|
|
4873
4902
|
t(this, "options");
|
|
4874
4903
|
t(this, "element");
|
|
4875
4904
|
t(this, "playbackSource");
|
|
@@ -4878,7 +4907,7 @@ const fB = (i, A) => {
|
|
|
4878
4907
|
t(this, "modules");
|
|
4879
4908
|
t(this, "clientIp");
|
|
4880
4909
|
t(this, "sessionId");
|
|
4881
|
-
t(this, "clientId",
|
|
4910
|
+
t(this, "clientId", Jt());
|
|
4882
4911
|
t(this, "_channels", []);
|
|
4883
4912
|
t(this, "createdAt", Date.now());
|
|
4884
4913
|
t(this, "hasCalledConnect", !1);
|
|
@@ -4887,8 +4916,8 @@ const fB = (i, A) => {
|
|
|
4887
4916
|
t(this, "wakeLock");
|
|
4888
4917
|
t(this, "cachedEdges", []);
|
|
4889
4918
|
t(this, "shiftedEdges", []);
|
|
4890
|
-
t(this, "pool", new
|
|
4891
|
-
t(this, "
|
|
4919
|
+
t(this, "pool", new Gt(sA.MAX_POOL_SIZE));
|
|
4920
|
+
t(this, "sampleProcessingSesssions", /* @__PURE__ */ new Map());
|
|
4892
4921
|
t(this, "sizes", /* @__PURE__ */ new Map());
|
|
4893
4922
|
t(this, "isSuspended", !0);
|
|
4894
4923
|
t(this, "disconnectTimeout");
|
|
@@ -4919,7 +4948,7 @@ const fB = (i, A) => {
|
|
|
4919
4948
|
var e, g;
|
|
4920
4949
|
this.hasCalledConnect || (this.hasCalledConnect = !0, Object.values(this.modules).forEach((s) => {
|
|
4921
4950
|
s && "load" in s && s.load();
|
|
4922
|
-
}), this.unsuspend(), this.playbackSource instanceof
|
|
4951
|
+
}), this.unsuspend(), this.playbackSource instanceof et && ((g = (e = this.playbackSource).load) == null || g.call(e)), this.modules.connection.connect(this.options.get("media") === "audio+video" ? 2 : 1));
|
|
4923
4952
|
});
|
|
4924
4953
|
t(this, "getCastOptions", () => ({
|
|
4925
4954
|
url: this.options.get("url"),
|
|
@@ -4934,43 +4963,45 @@ const fB = (i, A) => {
|
|
|
4934
4963
|
edgeUrl: this.options.get("edgeUrl"),
|
|
4935
4964
|
media: this.options.get("media")
|
|
4936
4965
|
}));
|
|
4937
|
-
t(this, "connectionInfo", () =>
|
|
4966
|
+
t(this, "connectionInfo", () => m(this, null, function* () {
|
|
4938
4967
|
try {
|
|
4939
4968
|
return yield this.apiClient.connect(this.options.getOptions());
|
|
4940
4969
|
} catch (e) {
|
|
4941
|
-
if (
|
|
4970
|
+
if (Hg(e))
|
|
4942
4971
|
switch (e.status) {
|
|
4943
4972
|
case 401:
|
|
4944
4973
|
throw this.emitter.emit("error", me(e)), me(e);
|
|
4974
|
+
case 403:
|
|
4975
|
+
throw this.emitter.emit("error", Ht(e.message)), Ht(e.message);
|
|
4945
4976
|
}
|
|
4946
|
-
throw this.emitter.emit("error",
|
|
4977
|
+
throw this.emitter.emit("error", as(e instanceof Error ? e : void 0)), e;
|
|
4947
4978
|
}
|
|
4948
4979
|
}));
|
|
4949
|
-
t(this, "estimateRTT", () =>
|
|
4980
|
+
t(this, "estimateRTT", () => m(this, null, function* () {
|
|
4950
4981
|
const e = Date.now(), g = () => Date.now() - e;
|
|
4951
4982
|
return Promise.race([
|
|
4952
|
-
|
|
4983
|
+
$i(sA.PING_TIMEOUT),
|
|
4953
4984
|
fetch(new URL("/api/v2/connect/ping", this.options.get("url")).toString(), {
|
|
4954
4985
|
method: "HEAD"
|
|
4955
4986
|
})
|
|
4956
4987
|
]).then(g, g);
|
|
4957
4988
|
}));
|
|
4958
|
-
t(this, "connectHandler", () =>
|
|
4989
|
+
t(this, "connectHandler", () => m(this, null, function* () {
|
|
4959
4990
|
var D;
|
|
4960
|
-
this.sessionId =
|
|
4961
|
-
const e = this.modules.subscription.getTargetSubscription(), [g, s] = yield Promise.all([this.connectionInfo(), this.estimateRTT()]), I = s / 2, B =
|
|
4991
|
+
this.sessionId = Jt();
|
|
4992
|
+
const e = this.modules.subscription.getTargetSubscription(), [g, s] = yield Promise.all([this.connectionInfo(), this.estimateRTT()]), I = s / 2, B = tt(I), n = g.channels.find((S) => S.channelId === e.channelId);
|
|
4962
4993
|
if (this.emitter.emit("connect info", g), this._channels = g.channels, g.channels.forEach((S) => {
|
|
4963
4994
|
S.overrides && this.options.addOverrides(S.channelId, S.overrides), S.renditions = this.filterRenditions(S.renditions), this.modules.renditions.setRenditions(S.channelId, S.renditions);
|
|
4964
4995
|
}), !n)
|
|
4965
|
-
throw
|
|
4996
|
+
throw ig("external");
|
|
4966
4997
|
const o = this.options.getOverride("minBufferTime", this.channelId), C = this.options.getOverride("maxBufferTime", this.channelId);
|
|
4967
4998
|
if ((o || C) && (this.modules.bufferTime.updateConfig({
|
|
4968
4999
|
minBufferTime: o,
|
|
4969
5000
|
maxBufferTime: C
|
|
4970
5001
|
}), this.targetBufferTime = this.options.get("minBufferTime", this.channelId)), this.options.get("burstEnabled", this.channelId) && this.modules.subscription.enableBurst(this.targetBufferTime), this.emit("is live", n.isLive), !n.isLive)
|
|
4971
5002
|
throw new Error("Waiting for channel to go live");
|
|
4972
|
-
this.patchSubscription(n, B), yield this.initializeDecodingModule(), this.resetModules(), this.emit("rendition levels", this.modules.renditions.getRenditionLevels()), this.emit("channels", this.channels), this.emitLanguagesIfChanged(), this.
|
|
4973
|
-
const Q = (this.options.get("edgeUrl") ? [this.options.get("edgeUrl")] : [this.cachedEdges.shift()])[0], h = this.options.get("burstEnabled", this.channelId),
|
|
5003
|
+
this.patchSubscription(n, B), yield this.initializeDecodingModule(), this.resetModules(), this.emit("rendition levels", this.modules.renditions.getRenditionLevels()), this.emit("channels", this.channels), this.emitLanguagesIfChanged(), this.sampleProcessingSesssions.clear(), this.cachedEdges = this.cachedEdges.length === 0 ? g.edges : this.cachedEdges;
|
|
5004
|
+
const Q = (this.options.get("edgeUrl") ? [this.options.get("edgeUrl")] : [this.cachedEdges.shift()])[0], h = this.options.get("burstEnabled", this.channelId), u = FB(Q, {
|
|
4974
5005
|
video: this.targetSubscription.video,
|
|
4975
5006
|
audio: this.targetSubscription.audio,
|
|
4976
5007
|
burstMs: h ? this.targetBufferTime : void 0,
|
|
@@ -4981,10 +5012,10 @@ const fB = (i, A) => {
|
|
|
4981
5012
|
expectAdditionalConnection: this.options.get("media") === "audio+video",
|
|
4982
5013
|
authToken: this.options.get("authenticationToken")
|
|
4983
5014
|
});
|
|
4984
|
-
if (!
|
|
4985
|
-
throw new
|
|
4986
|
-
const
|
|
4987
|
-
return
|
|
5015
|
+
if (!u || !Q)
|
|
5016
|
+
throw new p("Failed to resolve edge url", { isFatal: !0, code: "failed_to_resolve_edge_url" });
|
|
5017
|
+
const l = this.shiftedEdges[this.shiftedEdges.length - 1];
|
|
5018
|
+
return l && ((D = this.modules.telemetry) == null || D.addEvent({ code: "shifted_edge", edgeUrl: l })), this.shiftedEdges.push(Q), this.logger.debug("resolved edge url", { edgeUrl: u }), Promise.resolve(u);
|
|
4988
5019
|
}));
|
|
4989
5020
|
t(this, "emitLanguagesIfChanged", () => {
|
|
4990
5021
|
const e = this.modules.renditions.getLanguages(), g = this.latestEmittedLanguages;
|
|
@@ -5014,28 +5045,28 @@ const fB = (i, A) => {
|
|
|
5014
5045
|
sA.INITIAL_MAX_BIT_RATE,
|
|
5015
5046
|
g,
|
|
5016
5047
|
this.targetSubscription.audio.bitRate
|
|
5017
|
-
), B = this.options.get("media") === "audio" ? [] : ["av1", "h264"], n = this.supportedAudioCodecs(), o = e.renditions.filter(vA), C = e.renditions.filter(xA), a = n.find((
|
|
5048
|
+
), B = this.options.get("media") === "audio" ? [] : ["av1", "h264"], n = this.supportedAudioCodecs(), o = e.renditions.filter(vA), C = e.renditions.filter(xA), a = n.find((l) => o.find((D) => D.codec === l) !== void 0), Q = B.find((l) => C.find((D) => D.codec === l) !== void 0), h = o.map((l) => l.language);
|
|
5018
5049
|
if (this.logger.debug("supported and selected codecs", { audioCodecs: n, videoCodecs: B, audioCodec: a, videoCodec: Q }), Q) {
|
|
5019
|
-
const
|
|
5050
|
+
const l = this.options.get("maxSize");
|
|
5020
5051
|
this.modules.subscription.setVideoConstraint(r({
|
|
5021
5052
|
codec: Q,
|
|
5022
5053
|
bitRate: this.abrEnabled ? s : this.options.get("maxVideoBitRate")
|
|
5023
|
-
},
|
|
5054
|
+
}, l));
|
|
5024
5055
|
}
|
|
5025
5056
|
a && (this.modules.subscription.setAudioConstraint({
|
|
5026
5057
|
codec: a,
|
|
5027
5058
|
bitRate: this.abrEnabled ? I : this.options.get("maxAudioBitRate"),
|
|
5028
5059
|
language: this.options.get("language")
|
|
5029
5060
|
}), (!h.includes(this.options.get("language")) || this.language === void 0) && this.modules.subscription.setLanguage(h[0])), this.alignSizeAndBitRate(this.targetSubscription);
|
|
5030
|
-
const
|
|
5061
|
+
const u = this.modules.subscription.getTargetSubscription();
|
|
5031
5062
|
this.emitter.emit("subscription changed", {
|
|
5032
|
-
to:
|
|
5063
|
+
to: u,
|
|
5033
5064
|
from: this.modules.subscription.getCurrentSubscription()
|
|
5034
5065
|
});
|
|
5035
5066
|
});
|
|
5036
5067
|
t(this, "isSupportedVideoCodecProfile", (e, g) => {
|
|
5037
5068
|
if (this.willUseMediaSource())
|
|
5038
|
-
return window.MediaSource ? window.MediaSource.isTypeSupported(
|
|
5069
|
+
return window.MediaSource ? window.MediaSource.isTypeSupported(Me({ codec: e, codecString: g })) : !0;
|
|
5039
5070
|
if (e === "h264") {
|
|
5040
5071
|
const s = !!(g != null && g.startsWith("avc1.42")), I = !!(g != null && g.startsWith("avc1.66."));
|
|
5041
5072
|
return s || I;
|
|
@@ -5048,19 +5079,19 @@ const fB = (i, A) => {
|
|
|
5048
5079
|
const e = [];
|
|
5049
5080
|
return (this.browser.supportsMp4Opus && this.options.get("mseOpusEnabled") || !this.willUseMediaSource()) && e.push("opus"), this.willUseMediaSource() && e.push("aac"), e;
|
|
5050
5081
|
});
|
|
5051
|
-
t(this, "initializeDecodingModule", () =>
|
|
5082
|
+
t(this, "initializeDecodingModule", () => m(this, null, function* () {
|
|
5052
5083
|
var s, I;
|
|
5053
5084
|
const e = this.currentRenditionLevel, g = [];
|
|
5054
5085
|
if (!e)
|
|
5055
|
-
throw new
|
|
5086
|
+
throw new p("No currentRenditionLevel", { code: "no_current_rendition_level", isFatal: !1 });
|
|
5056
5087
|
if (e != null && e.video && g.push({
|
|
5057
5088
|
type: "video",
|
|
5058
|
-
mimeType:
|
|
5089
|
+
mimeType: Me(e.video)
|
|
5059
5090
|
}), e != null && e.audio && g.push({
|
|
5060
5091
|
type: "audio",
|
|
5061
|
-
mimeType:
|
|
5092
|
+
mimeType: Me(e.audio)
|
|
5062
5093
|
}), g.length === 0)
|
|
5063
|
-
throw new
|
|
5094
|
+
throw new p("Can't initialize decoding module without tracks", { code: "no_tracks", isFatal: !1 });
|
|
5064
5095
|
if (this.willUseMediaSource() && this.element instanceof HTMLMediaElement)
|
|
5065
5096
|
this.emitter.emit("flush buffers"), yield (s = this.modules.mseModule) == null ? void 0 : s.setSourceBuffers(g);
|
|
5066
5097
|
else {
|
|
@@ -5074,9 +5105,9 @@ const fB = (i, A) => {
|
|
|
5074
5105
|
(I = this.modules.decoder) == null || I.unload(), this.modules.decoder = B, this.modules.decoder.load();
|
|
5075
5106
|
}
|
|
5076
5107
|
}));
|
|
5077
|
-
t(this, "unload", () =>
|
|
5108
|
+
t(this, "unload", () => m(this, null, function* () {
|
|
5078
5109
|
var e, g, s;
|
|
5079
|
-
this.logger.debug("Unloading modules..."), yield Promise.all(Object.values(this.modules).map((I) => I == null ? void 0 : I.unload())), (e = this.wakeLock) == null || e.unload(), this.pool = new
|
|
5110
|
+
this.logger.debug("Unloading modules..."), yield Promise.all(Object.values(this.modules).map((I) => I == null ? void 0 : I.unload())), (e = this.wakeLock) == null || e.unload(), this.pool = new Gt(sA.MAX_POOL_SIZE), (s = (g = this.playbackSource).unload) == null || s.call(g), this.element.remove(), this.emitter.reset(), this.reset(), this.logger.debug("Unloaded modules");
|
|
5080
5111
|
}));
|
|
5081
5112
|
t(this, "userInput", () => {
|
|
5082
5113
|
this.play();
|
|
@@ -5084,7 +5115,7 @@ const fB = (i, A) => {
|
|
|
5084
5115
|
t(this, "pause", () => {
|
|
5085
5116
|
this.options.get("pauseSupportEnabled") && (this.playbackSource.pause(), this.hasCalledConnect && this.suspend());
|
|
5086
5117
|
});
|
|
5087
|
-
t(this, "play", () =>
|
|
5118
|
+
t(this, "play", () => m(this, null, function* () {
|
|
5088
5119
|
var e;
|
|
5089
5120
|
this.hasCalledConnect ? this.unsuspend() : this._connect(), (e = this.wakeLock) == null || e.enable(), this.playbackState === "paused" && (this.resetModules(), this.emitter.emit("flush buffers"));
|
|
5090
5121
|
try {
|
|
@@ -5099,13 +5130,13 @@ const fB = (i, A) => {
|
|
|
5099
5130
|
t(this, "resetModules", () => {
|
|
5100
5131
|
Object.values(this.modules).forEach((e) => {
|
|
5101
5132
|
e && "reset" in e && e.reset();
|
|
5102
|
-
}), this.
|
|
5133
|
+
}), this.sampleProcessingSesssions.clear(), this.playbackSource.currentTime = 0, this.playbackSource.isActivated = !1;
|
|
5103
5134
|
});
|
|
5104
5135
|
t(this, "getRuntimeInfo", () => {
|
|
5105
5136
|
const e = this.modules.canvasModule ? this.options.get("iosMediaElementEnabled") : void 0;
|
|
5106
5137
|
return r({
|
|
5107
5138
|
uptime: Date.now() - this.createdAt,
|
|
5108
|
-
version: "3.0.
|
|
5139
|
+
version: "3.0.7",
|
|
5109
5140
|
clientId: this.clientId,
|
|
5110
5141
|
sessionId: this.sessionId,
|
|
5111
5142
|
channelId: this.channelId,
|
|
@@ -5114,7 +5145,7 @@ const fB = (i, A) => {
|
|
|
5114
5145
|
url: this.options.get("url"),
|
|
5115
5146
|
timeToFirstFrame: this.timeToFirstFrame(),
|
|
5116
5147
|
iosMediaElementEnabled: e
|
|
5117
|
-
},
|
|
5148
|
+
}, RB());
|
|
5118
5149
|
});
|
|
5119
5150
|
t(this, "onMediaElementState", (e) => {
|
|
5120
5151
|
this.logger.info("media element state", { state: e }), this.options.get("pauseSupportEnabled") && (e === "paused" ? this.modules.documentState.isVisible && (this.suspend(), this.modules.connection.disconnect()) : this.unsuspend());
|
|
@@ -5139,7 +5170,7 @@ const fB = (i, A) => {
|
|
|
5139
5170
|
return e - g;
|
|
5140
5171
|
});
|
|
5141
5172
|
t(this, "willUseMediaSource", () => this.browser.supportsMediaSource && this.options.get("mseEnabled"));
|
|
5142
|
-
this.options = new
|
|
5173
|
+
this.options = new fB(r(r({}, Kg), hs(e)));
|
|
5143
5174
|
const g = ["localhost", "127.0.0.1"];
|
|
5144
5175
|
e.telemetryEnabled === void 0 && g.includes(location.hostname) && this.options.set("telemetryEnabled", !1);
|
|
5145
5176
|
const s = {
|
|
@@ -5159,7 +5190,7 @@ const fB = (i, A) => {
|
|
|
5159
5190
|
this.emitter,
|
|
5160
5191
|
this.logger.getLogger("PictureInPictureModule")
|
|
5161
5192
|
), n = x.create();
|
|
5162
|
-
this.apiClient = new
|
|
5193
|
+
this.apiClient = new Pg({
|
|
5163
5194
|
publicEndpoint: this.options.get("url").toString(),
|
|
5164
5195
|
tokenFactory: () => this.options.get("authenticationToken")
|
|
5165
5196
|
});
|
|
@@ -5178,17 +5209,17 @@ const fB = (i, A) => {
|
|
|
5178
5209
|
this.logger.getLogger("PlaybackModule"),
|
|
5179
5210
|
this,
|
|
5180
5211
|
this.options.get("minBufferTime")
|
|
5181
|
-
),
|
|
5212
|
+
), u = Ie.create(this.emitter), l = this.options.get("poster"), D = l === !0 ? this.getThumbnailUrl() : l || void 0;
|
|
5182
5213
|
let S, q, H;
|
|
5183
5214
|
if (this.willUseMediaSource()) {
|
|
5184
|
-
const E = new
|
|
5215
|
+
const E = new et({
|
|
5185
5216
|
type: this.options.get("media") == "audio" ? "audio" : "video",
|
|
5186
5217
|
autoplay: !1,
|
|
5187
5218
|
muted: this.options.get("muted") || this.options.get("media") === "video",
|
|
5188
5219
|
logger: this.logger.getLogger("MediaElement"),
|
|
5189
5220
|
poster: D
|
|
5190
5221
|
});
|
|
5191
|
-
E.on("buffer state", (w) => this.emitter.emit("buffer state", w)), E.on("needs user input", (w) => this.emitter.emit("needs user input", w)), E.on("volume state", (w) => this.emit("volume state", w)), E.on("media element state", (w) => this.onMediaElementState(w)), this.element = E.element, this.playbackSource = E, S = ae.create(this.logger.getLogger("MseModule"), this.emitter, this.element), this.options.get("pauseSupportEnabled") || (q = qA.create(this.logger.getLogger("UnpauseModule"), E,
|
|
5222
|
+
E.on("buffer state", (w) => this.emitter.emit("buffer state", w)), E.on("needs user input", (w) => this.emitter.emit("needs user input", w)), E.on("volume state", (w) => this.emit("volume state", w)), E.on("media element state", (w) => this.onMediaElementState(w)), this.element = E.element, this.playbackSource = E, S = ae.create(this.logger.getLogger("MseModule"), this.emitter, this.element), this.options.get("pauseSupportEnabled") || (q = qA.create(this.logger.getLogger("UnpauseModule"), E, u)), this.options.get("pictureInPictureEnabled") && this.emitter.emit("add picture in picture listener", { element: E.element });
|
|
5192
5223
|
} else if (this.browser.platform.iosVersion >= 15 && this.options.get("iosMediaElementEnabled")) {
|
|
5193
5224
|
const E = Qe.create(
|
|
5194
5225
|
this.emitter,
|
|
@@ -5201,7 +5232,7 @@ const fB = (i, A) => {
|
|
|
5201
5232
|
poster: D
|
|
5202
5233
|
}
|
|
5203
5234
|
), w = E.element();
|
|
5204
|
-
this.element = w.element, this.playbackSource = E, H = E, this.options.get("pictureInPictureEnabled") && this.browser.platform.iosVersion > 15 && this.emitter.emit("add picture in picture listener", { element: this.element }), this.options.get("pauseSupportEnabled") || (q = qA.create(this.logger.getLogger("UnpauseModule"), w,
|
|
5235
|
+
this.element = w.element, this.playbackSource = E, H = E, this.options.get("pictureInPictureEnabled") && this.browser.platform.iosVersion > 15 && this.emitter.emit("add picture in picture listener", { element: this.element }), this.options.get("pauseSupportEnabled") || (q = qA.create(this.logger.getLogger("UnpauseModule"), w, u));
|
|
5205
5236
|
} else {
|
|
5206
5237
|
const E = oe.create(
|
|
5207
5238
|
this.emitter,
|
|
@@ -5210,7 +5241,7 @@ const fB = (i, A) => {
|
|
|
5210
5241
|
this,
|
|
5211
5242
|
this.options.get("muted") || this.options.get("media") === "video"
|
|
5212
5243
|
);
|
|
5213
|
-
this.element = E.element(), this.playbackSource = E, H = E, this.options.get("iosWakeLockEnabled") && (this.wakeLock = new
|
|
5244
|
+
this.element = E.element(), this.playbackSource = E, H = E, this.options.get("iosWakeLockEnabled") && (this.wakeLock = new xI());
|
|
5214
5245
|
}
|
|
5215
5246
|
this.emitter.on("channel reset", this.resetModules), this.emitter.on("no data timeout", this.resetModules), this.emitter.on("media element state", (E) => this.onMediaElementState(E)), this.emitter.on("volume state", (E) => this.emit("volume state", E)), this.options.get("pauseSupportEnabled") || this.emitter.on("exit picture in picture", () => n.setTimeout(() => void this.play(), 0)), this.emitter.on("constraint cap changed", (E) => {
|
|
5216
5247
|
this.logger.info("new cap set", { cap: E }), this.alignSizeAndBitRate(this.targetSubscription);
|
|
@@ -5264,7 +5295,7 @@ const fB = (i, A) => {
|
|
|
5264
5295
|
),
|
|
5265
5296
|
event: yA.create(this.emitter, this.logger.getLogger("EventModule"), G),
|
|
5266
5297
|
sync: G,
|
|
5267
|
-
documentState:
|
|
5298
|
+
documentState: u,
|
|
5268
5299
|
connection: o,
|
|
5269
5300
|
playback: h,
|
|
5270
5301
|
pictureInPicture: B,
|
|
@@ -5325,7 +5356,7 @@ const fB = (i, A) => {
|
|
|
5325
5356
|
switch (E) {
|
|
5326
5357
|
case "upgrade":
|
|
5327
5358
|
{
|
|
5328
|
-
const R = Math.min(U + 1, v), L = w[R],
|
|
5359
|
+
const R = Math.min(U + 1, v), L = w[R], F = (lA = this.modules.connection.estimatedBandwidth) != null ? lA : IA(), M = ((eA = (iA = L == null ? void 0 : L.audio) == null ? void 0 : iA.bitRate) != null ? eA : 0) + ((f = (c = L == null ? void 0 : L.video) == null ? void 0 : c.bitRate) != null ? f : 0), uA = F * 2 > M;
|
|
5329
5360
|
L && uA && this.modules.adaptivity.isQoSOk(L) && (N = R);
|
|
5330
5361
|
}
|
|
5331
5362
|
break;
|
|
@@ -5366,11 +5397,11 @@ const fB = (i, A) => {
|
|
|
5366
5397
|
break;
|
|
5367
5398
|
case "subscription changed":
|
|
5368
5399
|
try {
|
|
5369
|
-
|
|
5400
|
+
GB(w.subscription);
|
|
5370
5401
|
} catch (U) {
|
|
5371
5402
|
this.emitter.emit(
|
|
5372
5403
|
"error",
|
|
5373
|
-
new
|
|
5404
|
+
new p("Subscription failed validation", {
|
|
5374
5405
|
source: U instanceof Error ? U : void 0,
|
|
5375
5406
|
isFatal: !1,
|
|
5376
5407
|
code: "subscription_failed_validation"
|
|
@@ -5387,7 +5418,7 @@ const fB = (i, A) => {
|
|
|
5387
5418
|
break;
|
|
5388
5419
|
}
|
|
5389
5420
|
}), this.emitter.on("received data", (E) => {
|
|
5390
|
-
const w = this.modules.subscription.getCurrentSubscription(), k =
|
|
5421
|
+
const w = this.modules.subscription.getCurrentSubscription(), k = uI(E);
|
|
5391
5422
|
if (!w) {
|
|
5392
5423
|
this.logger.warn("Received unwanted message", r({}, k));
|
|
5393
5424
|
return;
|
|
@@ -5398,8 +5429,8 @@ const fB = (i, A) => {
|
|
|
5398
5429
|
_ && this.attach(_), this.logger.info("Created Vindral instance", { options: this.options });
|
|
5399
5430
|
const $ = (E) => {
|
|
5400
5431
|
const w = E.channelId, k = this.modules.renditions.getRendition(E.renditionId, w);
|
|
5401
|
-
if (!
|
|
5402
|
-
if (
|
|
5432
|
+
if (!cI(E.flags)) {
|
|
5433
|
+
if (dI(E.flags)) {
|
|
5403
5434
|
const U = new TextDecoder();
|
|
5404
5435
|
this.modules.event.addEvent({
|
|
5405
5436
|
timestamp: E.timestamp / E.timescale * 1e3 - this.modules.sync.getTimeshiftOffset(),
|
|
@@ -5407,21 +5438,23 @@ const fB = (i, A) => {
|
|
|
5407
5438
|
type: "metadata"
|
|
5408
5439
|
});
|
|
5409
5440
|
} else if (k != null && k.codec) {
|
|
5410
|
-
const U =
|
|
5411
|
-
if (this.modules.incomingData.add(U, E.payload.byteLength),
|
|
5441
|
+
const U = cs(k.codec);
|
|
5442
|
+
if (this.modules.incomingData.add(U, E.payload.byteLength), hI(E.flags)) {
|
|
5412
5443
|
const v = b(r({
|
|
5413
5444
|
type: U,
|
|
5414
5445
|
data: E.payload,
|
|
5415
5446
|
codec: k.codec
|
|
5416
5447
|
}, E), {
|
|
5417
5448
|
channelId: w
|
|
5418
|
-
}), N =
|
|
5449
|
+
}), N = HI(v.codec, v.payload);
|
|
5419
5450
|
N && this.sizes.set(v.renditionId, N), this.emitter.emit("init segment", v), this.emit("initialized media");
|
|
5420
5451
|
} else {
|
|
5421
|
-
const v =
|
|
5422
|
-
let N = this.
|
|
5452
|
+
const v = yB(E, k, this.sizes.get(E.renditionId));
|
|
5453
|
+
let N = this.sampleProcessingSesssions.get(U);
|
|
5423
5454
|
if (!N)
|
|
5424
|
-
N =
|
|
5455
|
+
N = pB(
|
|
5456
|
+
this.modules.sync.processSample(v)
|
|
5457
|
+
), this.sampleProcessingSesssions.set(U, N);
|
|
5425
5458
|
else {
|
|
5426
5459
|
const V = N(this.modules.sync.processSample(v));
|
|
5427
5460
|
this.modules.event.extractEvent(V, v), this.emitter.emit("coded sample", V);
|
|
@@ -5430,7 +5463,7 @@ const fB = (i, A) => {
|
|
|
5430
5463
|
}
|
|
5431
5464
|
}
|
|
5432
5465
|
};
|
|
5433
|
-
this.options.get("maxVideoBitRate") !== Number.MAX_SAFE_INTEGER && (this.maxVideoBitRate = this.options.get("maxVideoBitRate")), this.options.get("maxAudioBitRate") !== Number.MAX_SAFE_INTEGER && (this.maxAudioBitRate = this.options.get("maxAudioBitRate")), dA(this.options.get("maxSize"), ue()) || (this.maxSize = this.options.get("maxSize")), this.options.get("burstEnabled") && C.enableBurst(this.targetBufferTime),
|
|
5466
|
+
this.options.get("maxVideoBitRate") !== Number.MAX_SAFE_INTEGER && (this.maxVideoBitRate = this.options.get("maxVideoBitRate")), this.options.get("maxAudioBitRate") !== Number.MAX_SAFE_INTEGER && (this.maxAudioBitRate = this.options.get("maxAudioBitRate")), dA(this.options.get("maxSize"), ue()) || (this.maxSize = this.options.get("maxSize")), this.options.get("burstEnabled") && C.enableBurst(this.targetBufferTime), AB(this);
|
|
5434
5467
|
}
|
|
5435
5468
|
set volume(e) {
|
|
5436
5469
|
this.playbackSource.volume = e;
|
|
@@ -5630,14 +5663,14 @@ const fB = (i, A) => {
|
|
|
5630
5663
|
};
|
|
5631
5664
|
let EA = sA;
|
|
5632
5665
|
t(EA, "MAX_POOL_SIZE", 10), t(EA, "INITIAL_MAX_BIT_RATE", 2.5 * 1e3 * 1e3), t(EA, "PING_TIMEOUT", 1e3), t(EA, "DISCONNECT_TIMEOUT", 15 * 1e3);
|
|
5633
|
-
const
|
|
5634
|
-
bar:
|
|
5635
|
-
hidden:
|
|
5636
|
-
},
|
|
5666
|
+
const kB = "_bar_16xpe_1", UB = "_hidden_16xpe_46", cg = {
|
|
5667
|
+
bar: kB,
|
|
5668
|
+
hidden: UB
|
|
5669
|
+
}, bB = "_withThumbnails_suenn_19", ZA = {
|
|
5637
5670
|
"channel-selection-item": "_channel-selection-item_suenn_1",
|
|
5638
5671
|
"channel-selection-item-selected": "_channel-selection-item-selected_suenn_8",
|
|
5639
5672
|
"channel-selection-item-image": "_channel-selection-item-image_suenn_13",
|
|
5640
|
-
withThumbnails:
|
|
5673
|
+
withThumbnails: bB,
|
|
5641
5674
|
"hide-on-small": "_hide-on-small_suenn_27"
|
|
5642
5675
|
};
|
|
5643
5676
|
class X {
|
|
@@ -5649,95 +5682,95 @@ class X {
|
|
|
5649
5682
|
this.element = A;
|
|
5650
5683
|
}
|
|
5651
5684
|
}
|
|
5652
|
-
const
|
|
5685
|
+
const JB = {
|
|
5653
5686
|
"icon-button": "_icon-button_5fg7v_1"
|
|
5654
|
-
},
|
|
5687
|
+
}, LB = {
|
|
5655
5688
|
viewBox: "-10 -10 44 44",
|
|
5656
5689
|
content: `<g fill="none" stroke="white">
|
|
5657
5690
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5.586 15H4a1 1 0 01-1-1v-4a1 1 0 011-1h1.586l4.707-4.707C10.923 3.663 12 4.109 12 5v14c0 .891-1.077 1.337-1.707.707L5.586 15z" clip-rule="evenodd" />
|
|
5658
5691
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2" />
|
|
5659
5692
|
</g>`
|
|
5660
|
-
},
|
|
5693
|
+
}, vB = {
|
|
5661
5694
|
viewBox: "-160 -160 832 832",
|
|
5662
5695
|
content: '<path fill="white" d="M208,432H160a16,16,0,0,1-16-16V96a16,16,0,0,1,16-16h48a16,16,0,0,1,16,16V416A16,16,0,0,1,208,432Z"/><path fill="white" d="M352,432H304a16,16,0,0,1-16-16V96a16,16,0,0,1,16-16h48a16,16,0,0,1,16,16V416A16,16,0,0,1,352,432Z"/>'
|
|
5663
|
-
},
|
|
5696
|
+
}, NB = {
|
|
5664
5697
|
viewBox: "-6 -6 36 36",
|
|
5665
5698
|
content: '<path d="M7 17.259V6.74104C7 5.96925 7.83721 5.48837 8.50387 5.87726L18.2596 11.5681C18.5904 11.761 18.5904 12.2389 18.2596 12.4319L8.50387 18.1227C7.83721 18.5116 7 18.0308 7 17.259Z" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>'
|
|
5666
|
-
},
|
|
5699
|
+
}, HB = {
|
|
5667
5700
|
viewBox: "-10 -10 44 44",
|
|
5668
5701
|
content: `<g fill="none" stroke="white">
|
|
5669
5702
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15.536 8.464a5 5 0 010 7.072m2.828-9.9a9 9 0 010 12.728M5.586 15H4a1 1 0 01-1-1v-4a1 1 0 011-1h1.586l4.707-4.707C10.923 3.663 12 4.109 12 5v14c0 .891-1.077 1.337-1.707.707L5.586 15z" />
|
|
5670
5703
|
</svg>`
|
|
5671
|
-
},
|
|
5704
|
+
}, MB = {
|
|
5672
5705
|
viewBox: "-10 -10 44 44",
|
|
5673
5706
|
content: `
|
|
5674
5707
|
<path stroke="white" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />`
|
|
5675
|
-
},
|
|
5708
|
+
}, PB = {
|
|
5676
5709
|
viewBox: "-12 -12 38 38",
|
|
5677
5710
|
content: `<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-5.000000, -5.000000)">
|
|
5678
5711
|
<path d="M6,14 C5.45,14 5,14.45 5,15 L5,18 C5,18.55 5.45,19 6,19 L9,19 C9.55,19 10,18.55 10,18 C10,17.45 9.55,17 9,17 L7,17 L7,15 C7,14.45 6.55,14 6,14 Z M6,10 C6.55,10 7,9.55 7,9 L7,7 L9,7 C9.55,7 10,6.55 10,6 C10,5.45 9.55,5 9,5 L6,5 C5.45,5 5,5.45 5,6 L5,9 C5,9.55 5.45,10 6,10 Z M17,17 L15,17 C14.45,17 14,17.45 14,18 C14,18.55 14.45,19 15,19 L18,19 C18.55,19 19,18.55 19,18 L19,15 C19,14.45 18.55,14 18,14 C17.45,14 17,14.45 17,15 L17,17 Z M14,6 C14,6.55 14.45,7 15,7 L17,7 L17,9 C17,9.55 17.45,10 18,10 C18.55,10 19,9.55 19,9 L19,6 C19,5.45 18.55,5 18,5 L15,5 C14.45,5 14,5.45 14,6 Z" fill="white"></path>
|
|
5679
5712
|
</g>`
|
|
5680
|
-
},
|
|
5713
|
+
}, qB = {
|
|
5681
5714
|
viewBox: "-12 -12 38 38",
|
|
5682
5715
|
content: `<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-5.000000, -5.000000)">
|
|
5683
5716
|
<path d="M6,16 L8,16 L8,18 C8,18.55 8.45,19 9,19 C9.55,19 10,18.55 10,18 L10,15 C10,14.45 9.55,14 9,14 L6,14 C5.45,14 5,14.45 5,15 C5,15.55 5.45,16 6,16 Z M8,8 L6,8 C5.45,8 5,8.45 5,9 C5,9.55 5.45,10 6,10 L9,10 C9.55,10 10,9.55 10,9 L10,6 C10,5.45 9.55,5 9,5 C8.45,5 8,5.45 8,6 L8,8 Z M15,19 C15.55,19 16,18.55 16,18 L16,16 L18,16 C18.55,16 19,15.55 19,15 C19,14.45 18.55,14 18,14 L15,14 C14.45,14 14,14.45 14,15 L14,18 C14,18.55 14.45,19 15,19 Z M16,8 L16,6 C16,5.45 15.55,5 15,5 C14.45,5 14,5.45 14,6 L14,9 C14,9.55 14.45,10 15,10 L18,10 C18.55,10 19,9.55 19,9 C19,8.45 18.55,8 18,8 L16,8 Z" fill="white"></path>
|
|
5684
5717
|
</g>`
|
|
5685
|
-
},
|
|
5718
|
+
}, TB = {
|
|
5686
5719
|
viewBox: "-10 -10 44 44",
|
|
5687
5720
|
content: '<path fill="white" d="M19 7h-8v6h8V7zm2-4H3c-1.1 0-2 .9-2 2v14c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98V5c0-1.1-.9-2-2-2zm0 16.01H3V4.98h18v14.03z"/>'
|
|
5688
|
-
},
|
|
5721
|
+
}, KB = {
|
|
5689
5722
|
viewBox: "-10 -10 45 45",
|
|
5690
5723
|
content: '<path fill="white" d="M20 8H4V6h16v2zm-2-6H6v2h12V2zm4 10v8c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2v-8c0-1.1.9-2 2-2h16c1.1 0 2 .9 2 2zm-6 4l-6-3.27v6.53L16 16z"/>'
|
|
5691
|
-
},
|
|
5724
|
+
}, YB = {
|
|
5692
5725
|
viewBox: "-8 -8 40 40",
|
|
5693
5726
|
content: '<path fill="white" d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 11H9.5v-2h-2v2H6V9h1.5v2.5h2V9H11v6zm7-1c0 .55-.45 1-1 1h-.75v1.5h-1.5V15H14c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v4zm-3.5-.5h2v-3h-2v3z"/>'
|
|
5694
|
-
},
|
|
5727
|
+
}, xB = {
|
|
5695
5728
|
viewBox: "-8 -8 40 40",
|
|
5696
5729
|
content: '<path fill="white" d="M14.4 6L14 4H5v17h2v-7h5.6l.4 2h7V6z"/>'
|
|
5697
|
-
},
|
|
5698
|
-
enter:
|
|
5699
|
-
exit:
|
|
5700
|
-
pip:
|
|
5701
|
-
channels:
|
|
5702
|
-
languages:
|
|
5703
|
-
levels:
|
|
5704
|
-
oneToOne:
|
|
5705
|
-
mute:
|
|
5706
|
-
unmute:
|
|
5707
|
-
pause:
|
|
5708
|
-
play:
|
|
5730
|
+
}, si = {
|
|
5731
|
+
enter: PB,
|
|
5732
|
+
exit: qB,
|
|
5733
|
+
pip: TB,
|
|
5734
|
+
channels: KB,
|
|
5735
|
+
languages: xB,
|
|
5736
|
+
levels: YB,
|
|
5737
|
+
oneToOne: MB,
|
|
5738
|
+
mute: LB,
|
|
5739
|
+
unmute: HB,
|
|
5740
|
+
pause: vB,
|
|
5741
|
+
play: NB
|
|
5709
5742
|
};
|
|
5710
|
-
var
|
|
5711
|
-
const
|
|
5743
|
+
var Ci;
|
|
5744
|
+
const WB = (Ci = JB["icon-button"]) != null ? Ci : "";
|
|
5712
5745
|
class GA extends X {
|
|
5713
5746
|
constructor(e, g, s) {
|
|
5714
5747
|
super(document.createElement("div"));
|
|
5715
5748
|
t(this, "iconElement");
|
|
5716
5749
|
t(this, "setIcon", (e) => {
|
|
5717
|
-
this.iconElement.setAttribute("viewBox",
|
|
5750
|
+
this.iconElement.setAttribute("viewBox", si[e].viewBox), this.iconElement.innerHTML = si[e].content;
|
|
5718
5751
|
});
|
|
5719
5752
|
t(this, "isHidden", () => this.element.style.display === "none");
|
|
5720
5753
|
t(this, "setHidden", (e) => e ? this.hide() : this.show());
|
|
5721
5754
|
t(this, "show", () => void (this.element.style.display = "block"));
|
|
5722
5755
|
t(this, "hide", () => void (this.element.style.display = "none"));
|
|
5723
|
-
this.element.style.cursor = "pointer", this.element.setAttribute("role", "button"), this.element.setAttribute("aria-label", e), this.iconElement = document.createElementNS("http://www.w3.org/2000/svg", "svg"), this.iconElement.setAttribute("width", "40px"), this.iconElement.setAttribute("height", "40px"), this.iconElement.setAttribute("class",
|
|
5756
|
+
this.element.style.cursor = "pointer", this.element.setAttribute("role", "button"), this.element.setAttribute("aria-label", e), this.iconElement = document.createElementNS("http://www.w3.org/2000/svg", "svg"), this.iconElement.setAttribute("width", "40px"), this.iconElement.setAttribute("height", "40px"), this.iconElement.setAttribute("class", WB), this.setIcon(g), this.element.addEventListener("click", s), this.element.appendChild(this.iconElement);
|
|
5724
5757
|
}
|
|
5725
5758
|
}
|
|
5726
|
-
const
|
|
5727
|
-
list:
|
|
5759
|
+
const VB = "_list_oecdq_1", ZB = "_hidden_oecdq_19", ke = {
|
|
5760
|
+
list: VB,
|
|
5728
5761
|
"list-item": "_list-item_oecdq_11",
|
|
5729
5762
|
"list-item-disabled": "_list-item-disabled_oecdq_15",
|
|
5730
|
-
hidden:
|
|
5763
|
+
hidden: ZB
|
|
5731
5764
|
};
|
|
5732
|
-
var Ci;
|
|
5733
|
-
const si = (Ci = Ge.hidden) != null ? Ci : "";
|
|
5734
5765
|
var Qi;
|
|
5735
|
-
const
|
|
5766
|
+
const Ii = (Qi = ke.hidden) != null ? Qi : "";
|
|
5736
5767
|
var ai;
|
|
5737
|
-
const
|
|
5768
|
+
const OB = (ai = ke.list) != null ? ai : "";
|
|
5738
5769
|
var Ei;
|
|
5739
|
-
const
|
|
5740
|
-
|
|
5770
|
+
const XB = (Ei = ke["list-item"]) != null ? Ei : "";
|
|
5771
|
+
var ri;
|
|
5772
|
+
const zB = (ri = ke["list-item-disabled"]) != null ? ri : "";
|
|
5773
|
+
class jB extends X {
|
|
5741
5774
|
constructor({ items: e, onItemClick: g, classNames: s = [], maxHeight: I }) {
|
|
5742
5775
|
super(document.createElement("div"));
|
|
5743
5776
|
t(this, "onItemClick");
|
|
@@ -5747,26 +5780,26 @@ class XB extends X {
|
|
|
5747
5780
|
(g = this.element.lastChild) == null || g.remove();
|
|
5748
5781
|
e.forEach((s) => {
|
|
5749
5782
|
const I = document.createElement("div");
|
|
5750
|
-
s.disabled || I.addEventListener("click", () => this.onItemClick(s)), I.className = [
|
|
5783
|
+
s.disabled || I.addEventListener("click", () => this.onItemClick(s)), I.className = [XB, s.disabled ? zB : ""].join(" "), I.appendChild(s.element()), this.element.appendChild(I);
|
|
5751
5784
|
});
|
|
5752
5785
|
});
|
|
5753
|
-
t(this, "hide", () => this.element.classList.add(
|
|
5754
|
-
t(this, "show", () => this.element.classList.remove(
|
|
5755
|
-
this.element.className = [
|
|
5786
|
+
t(this, "hide", () => this.element.classList.add(Ii));
|
|
5787
|
+
t(this, "show", () => this.element.classList.remove(Ii));
|
|
5788
|
+
this.element.className = [OB, ...s].join(" "), this.onItemClick = g, this.updateItems(e), I && (this.element.style.maxHeight = I);
|
|
5756
5789
|
}
|
|
5757
5790
|
}
|
|
5758
|
-
const
|
|
5759
|
-
container:
|
|
5760
|
-
hidden:
|
|
5761
|
-
list:
|
|
5791
|
+
const _B = "_container_13xnz_1", $B = "_hidden_13xnz_6", An = "_list_13xnz_10", st = {
|
|
5792
|
+
container: _B,
|
|
5793
|
+
hidden: $B,
|
|
5794
|
+
list: An
|
|
5762
5795
|
};
|
|
5763
|
-
var ri;
|
|
5764
|
-
const $B = (ri = gt.list) != null ? ri : "";
|
|
5765
5796
|
var hi;
|
|
5766
|
-
const
|
|
5797
|
+
const en = (hi = st.list) != null ? hi : "";
|
|
5767
5798
|
var ci;
|
|
5768
|
-
const
|
|
5769
|
-
|
|
5799
|
+
const Ae = (ci = st.hidden) != null ? ci : "";
|
|
5800
|
+
var di;
|
|
5801
|
+
const tn = (di = st.container) != null ? di : "";
|
|
5802
|
+
class It extends X {
|
|
5770
5803
|
constructor({ label: e, items: g, onItemClick: s, iconButtonType: I, onToggle: B }) {
|
|
5771
5804
|
super(document.createElement("div"));
|
|
5772
5805
|
t(this, "iconButton");
|
|
@@ -5785,10 +5818,10 @@ class st extends X {
|
|
|
5785
5818
|
this.toggleShowChannels(), this.onItemClick(e);
|
|
5786
5819
|
});
|
|
5787
5820
|
t(this, "showList", () => {
|
|
5788
|
-
this.list = new
|
|
5821
|
+
this.list = new jB({
|
|
5789
5822
|
items: this.items,
|
|
5790
5823
|
onItemClick: this.handleItemClick,
|
|
5791
|
-
classNames: [
|
|
5824
|
+
classNames: [en],
|
|
5792
5825
|
maxHeight: this.maxHeight
|
|
5793
5826
|
}), this.list.attach(this.element);
|
|
5794
5827
|
});
|
|
@@ -5807,20 +5840,20 @@ class st extends X {
|
|
|
5807
5840
|
t(this, "show", () => {
|
|
5808
5841
|
Ae && this.element.classList.remove(Ae);
|
|
5809
5842
|
});
|
|
5810
|
-
this.element.className =
|
|
5843
|
+
this.element.className = tn, this.onItemClick = s, this.onToggle = B, this.items = g, this.iconButton = new GA(e, I, this.onButtonClick), this.iconButton.attach(this.element);
|
|
5811
5844
|
}
|
|
5812
5845
|
}
|
|
5813
|
-
var di;
|
|
5814
|
-
const en = (di = ZA["hide-on-small"]) != null ? di : "";
|
|
5815
5846
|
var li;
|
|
5816
|
-
const
|
|
5847
|
+
const gn = (li = ZA["hide-on-small"]) != null ? li : "";
|
|
5817
5848
|
var ui;
|
|
5818
|
-
const
|
|
5849
|
+
const sn = (ui = ZA["channel-selection-item"]) != null ? ui : "";
|
|
5819
5850
|
var mi;
|
|
5820
|
-
const
|
|
5851
|
+
const In = (mi = ZA["channel-selection-item-selected"]) != null ? mi : "";
|
|
5821
5852
|
var wi;
|
|
5822
|
-
const
|
|
5823
|
-
|
|
5853
|
+
const Bn = (wi = ZA["channel-selection-item-image"]) != null ? wi : "";
|
|
5854
|
+
var Si;
|
|
5855
|
+
const nn = (Si = ZA.withThumbnails) != null ? Si : "";
|
|
5856
|
+
class on extends It {
|
|
5824
5857
|
constructor({ vindral: A, enabled: e, thumbnailsEnabled: g, thumbnailModule: s }) {
|
|
5825
5858
|
const I = () => {
|
|
5826
5859
|
const n = A.channels.map((o) => ({
|
|
@@ -5829,14 +5862,14 @@ class Bn extends st {
|
|
|
5829
5862
|
element: () => {
|
|
5830
5863
|
const C = document.createElement("div");
|
|
5831
5864
|
if (C.className = [
|
|
5832
|
-
|
|
5833
|
-
o.channelId === A.channelId ?
|
|
5865
|
+
sn,
|
|
5866
|
+
o.channelId === A.channelId ? In : ""
|
|
5834
5867
|
].join(" "), s && g) {
|
|
5835
|
-
C.classList.add(
|
|
5868
|
+
C.classList.add(nn);
|
|
5836
5869
|
const a = document.createElement("p");
|
|
5837
5870
|
a.innerHTML = o.name, C.appendChild(a);
|
|
5838
5871
|
const Q = s.getImageUrl(o), h = document.createElement("img");
|
|
5839
|
-
Q && (h.className =
|
|
5872
|
+
Q && (h.className = Bn, h.src = Q, C.style.backgroundImage = `url(${Q})`);
|
|
5840
5873
|
} else
|
|
5841
5874
|
C.innerHTML = o.name;
|
|
5842
5875
|
return C;
|
|
@@ -5846,18 +5879,18 @@ class Bn extends st {
|
|
|
5846
5879
|
};
|
|
5847
5880
|
A.on("channels", I);
|
|
5848
5881
|
const B = (n) => A.channelId = n.channel.channelId;
|
|
5849
|
-
super({ label: "Channel List", items: [], onItemClick: B, onToggle: j, iconButtonType: "channels" }), this.element.classList.add(
|
|
5882
|
+
super({ label: "Channel List", items: [], onItemClick: B, onToggle: j, iconButtonType: "channels" }), this.element.classList.add(gn), this.hide();
|
|
5850
5883
|
}
|
|
5851
5884
|
}
|
|
5852
|
-
const
|
|
5885
|
+
const dg = {
|
|
5853
5886
|
"language-button-item": "_language-button-item_1dov5_1",
|
|
5854
5887
|
"language-button-item-selected": "_language-button-item-selected_1dov5_6"
|
|
5855
5888
|
};
|
|
5856
|
-
var Si;
|
|
5857
|
-
const nn = (Si = cg["language-button-item"]) != null ? Si : "";
|
|
5858
5889
|
var Di;
|
|
5859
|
-
const
|
|
5860
|
-
|
|
5890
|
+
const Cn = (Di = dg["language-button-item"]) != null ? Di : "";
|
|
5891
|
+
var fi;
|
|
5892
|
+
const Qn = (fi = dg["language-button-item-selected"]) != null ? fi : "";
|
|
5893
|
+
class an extends It {
|
|
5861
5894
|
constructor({ vindral: A }) {
|
|
5862
5895
|
const e = () => {
|
|
5863
5896
|
const s = A.languages.map((I) => ({
|
|
@@ -5866,8 +5899,8 @@ class Cn extends st {
|
|
|
5866
5899
|
element: () => {
|
|
5867
5900
|
const B = document.createElement("div");
|
|
5868
5901
|
return B.className = [
|
|
5869
|
-
|
|
5870
|
-
I === A.language ?
|
|
5902
|
+
Cn,
|
|
5903
|
+
I === A.language ? Qn : ""
|
|
5871
5904
|
].join(" "), B.innerHTML = I, B;
|
|
5872
5905
|
}
|
|
5873
5906
|
}));
|
|
@@ -5878,7 +5911,7 @@ class Cn extends st {
|
|
|
5878
5911
|
super({ label: "Language", items: [], onItemClick: g, onToggle: j, iconButtonType: "languages" }), this.hide();
|
|
5879
5912
|
}
|
|
5880
5913
|
}
|
|
5881
|
-
class
|
|
5914
|
+
class En extends X {
|
|
5882
5915
|
constructor({ vindral: e }) {
|
|
5883
5916
|
super(document.createElement("div"));
|
|
5884
5917
|
t(this, "vindral");
|
|
@@ -5893,35 +5926,35 @@ class Qn extends X {
|
|
|
5893
5926
|
this.element.style.cursor = "pointer", this.vindral = e, this.playButton = new GA("Play", this.playIcon(), this.onPlayClick), this.playButton.attach(this.element);
|
|
5894
5927
|
}
|
|
5895
5928
|
}
|
|
5896
|
-
const
|
|
5897
|
-
item:
|
|
5929
|
+
const rn = "_item_5vhyo_1", hn = "_title_5vhyo_10", OA = {
|
|
5930
|
+
item: rn,
|
|
5898
5931
|
"item-selected": "_item-selected_5vhyo_6",
|
|
5899
|
-
title:
|
|
5932
|
+
title: hn,
|
|
5900
5933
|
"sub-title": "_sub-title_5vhyo_14",
|
|
5901
5934
|
"hide-on-small": "_hide-on-small_5vhyo_21"
|
|
5902
5935
|
};
|
|
5903
|
-
var fi;
|
|
5904
|
-
const rn = (fi = OA["hide-on-small"]) != null ? fi : "";
|
|
5905
5936
|
var pi;
|
|
5906
|
-
const
|
|
5937
|
+
const cn = (pi = OA["hide-on-small"]) != null ? pi : "";
|
|
5907
5938
|
var Fi;
|
|
5908
|
-
const
|
|
5939
|
+
const dn = (Fi = OA.item) != null ? Fi : "";
|
|
5909
5940
|
var yi;
|
|
5910
|
-
const
|
|
5941
|
+
const ln = (yi = OA["item-selected"]) != null ? yi : "";
|
|
5911
5942
|
var Ri;
|
|
5912
|
-
const
|
|
5913
|
-
|
|
5943
|
+
const un = (Ri = OA.title) != null ? Ri : "";
|
|
5944
|
+
var Gi;
|
|
5945
|
+
const mn = (Gi = OA["sub-title"]) != null ? Gi : "";
|
|
5946
|
+
class wn extends It {
|
|
5914
5947
|
constructor({ vindral: A }) {
|
|
5915
5948
|
const e = () => {
|
|
5916
5949
|
const s = A.renditionLevels.map((I) => ({
|
|
5917
5950
|
rendition: I,
|
|
5918
5951
|
disabled: !1,
|
|
5919
5952
|
element: () => {
|
|
5920
|
-
var
|
|
5953
|
+
var l, D, S;
|
|
5921
5954
|
const B = document.createElement("div");
|
|
5922
|
-
B.className = [
|
|
5923
|
-
const n = document.createElement("span"), o = document.createElement("span"), { audio: C, video: a } = I, Q = a ?
|
|
5924
|
-
return n.innerHTML = (S = Q != null ? Q : h) != null ? S : "", n.className =
|
|
5955
|
+
B.className = [dn, I === A.currentRenditionLevel ? ln : ""].join(" ");
|
|
5956
|
+
const n = document.createElement("span"), o = document.createElement("span"), { audio: C, video: a } = I, Q = a ? Ug(a) : void 0, h = C ? bg(C.sampleRate) : void 0, u = kg(((l = a == null ? void 0 : a.bitRate) != null ? l : 0) + ((D = C == null ? void 0 : C.bitRate) != null ? D : 0));
|
|
5957
|
+
return n.innerHTML = (S = Q != null ? Q : h) != null ? S : "", n.className = un, o.innerHTML = u, o.className = mn, B.appendChild(n), B.appendChild(o), B;
|
|
5925
5958
|
}
|
|
5926
5959
|
}));
|
|
5927
5960
|
this.maxHeight = `calc(${Math.max(110, A.mediaElement.clientHeight)}px - 46px)`, this.updateItems(s);
|
|
@@ -5930,15 +5963,15 @@ class un extends st {
|
|
|
5930
5963
|
const g = ({ rendition: s }) => {
|
|
5931
5964
|
s.audio && (A.maxAudioBitRate = s.audio.bitRate), s.video && (A.maxVideoBitRate = s.video.bitRate, A.maxSize = s.video);
|
|
5932
5965
|
};
|
|
5933
|
-
super({ label: "Rendition Levels", items: [], onItemClick: g, onToggle: j, iconButtonType: "levels" }), this.element.classList.add(
|
|
5966
|
+
super({ label: "Rendition Levels", items: [], onItemClick: g, onToggle: j, iconButtonType: "levels" }), this.element.classList.add(cn);
|
|
5934
5967
|
}
|
|
5935
5968
|
}
|
|
5936
|
-
class
|
|
5969
|
+
class Sn extends X {
|
|
5937
5970
|
constructor() {
|
|
5938
5971
|
super(document.createElement("div")), this.element.style.flexGrow = "1";
|
|
5939
5972
|
}
|
|
5940
5973
|
}
|
|
5941
|
-
class
|
|
5974
|
+
class Dn extends X {
|
|
5942
5975
|
constructor({ vindral: e }) {
|
|
5943
5976
|
super(document.createElement("div"));
|
|
5944
5977
|
t(this, "vindral");
|
|
@@ -5953,11 +5986,11 @@ class wn extends X {
|
|
|
5953
5986
|
this.element.style.cursor = "pointer", this.vindral = e, this.muteButton = new GA("Mute", this.muteIcon(), this.onMuteClick), this.muteButton.attach(this.element);
|
|
5954
5987
|
}
|
|
5955
5988
|
}
|
|
5956
|
-
var Gi;
|
|
5957
|
-
const ee = (Gi = hg.hidden) != null ? Gi : "";
|
|
5958
5989
|
var ki;
|
|
5959
|
-
const
|
|
5960
|
-
|
|
5990
|
+
const ee = (ki = cg.hidden) != null ? ki : "";
|
|
5991
|
+
var Ui;
|
|
5992
|
+
const fn = (Ui = cg.bar) != null ? Ui : "";
|
|
5993
|
+
class pn extends X {
|
|
5961
5994
|
constructor({
|
|
5962
5995
|
vindral: e,
|
|
5963
5996
|
onFullscreenClicked: g,
|
|
@@ -5970,8 +6003,8 @@ class Dn extends X {
|
|
|
5970
6003
|
channelSelectionThumbnails: a,
|
|
5971
6004
|
renditionLevelsEnabled: Q,
|
|
5972
6005
|
languagesButtonEnabled: h,
|
|
5973
|
-
oneToOneButtonEnabled:
|
|
5974
|
-
thumbnailModule:
|
|
6006
|
+
oneToOneButtonEnabled: u,
|
|
6007
|
+
thumbnailModule: l
|
|
5975
6008
|
}) {
|
|
5976
6009
|
super(document.createElement("div"));
|
|
5977
6010
|
t(this, "items", []);
|
|
@@ -5999,74 +6032,94 @@ class Dn extends X {
|
|
|
5999
6032
|
t(this, "onToggle", (e) => {
|
|
6000
6033
|
this.listButtons().filter((g) => e !== g).forEach((g) => "hideList" in g && g.hideList());
|
|
6001
6034
|
});
|
|
6002
|
-
this.element.className = [
|
|
6003
|
-
const D = new
|
|
6035
|
+
this.element.className = [fn, ee].join(" ");
|
|
6036
|
+
const D = new Sn();
|
|
6004
6037
|
this.oneToOneButton = new GA("One to One", "oneToOne", s), this.fullscreenButton = new GA("Fullscreen", "enter", g);
|
|
6005
|
-
const S = new GA("Picture in Picture", "pip", I), q = new
|
|
6038
|
+
const S = new GA("Picture in Picture", "pip", I), q = new on({
|
|
6006
6039
|
vindral: e,
|
|
6007
6040
|
enabled: C,
|
|
6008
6041
|
thumbnailsEnabled: a,
|
|
6009
|
-
thumbnailModule: a ?
|
|
6010
|
-
}), H = new
|
|
6011
|
-
this.volumeControls = new
|
|
6042
|
+
thumbnailModule: a ? l : void 0
|
|
6043
|
+
}), H = new wn({ vindral: e }), G = new an({ vindral: e });
|
|
6044
|
+
this.volumeControls = new Dn({ vindral: e }), this.playControls = new En({ vindral: e }), B && e.getOptions().pauseSupportEnabled && this.playControls.attach(this.element), e.getOptions().media !== "video" && this.volumeControls.attach(this.element), D.attach(this.element), G.attach(this.element), H.attach(this.element), q.attach(this.element), S.attach(this.element), this.oneToOneButton.attach(this.element), this.fullscreenButton.attach(this.element), this.items.push(
|
|
6012
6045
|
D,
|
|
6013
6046
|
G,
|
|
6014
6047
|
H,
|
|
6015
6048
|
q,
|
|
6016
6049
|
S,
|
|
6017
6050
|
this.fullscreenButton
|
|
6018
|
-
), this.items.forEach((K) => "onToggle" in K && (K.onToggle = this.onToggle)),
|
|
6051
|
+
), this.items.forEach((K) => "onToggle" in K && (K.onToggle = this.onToggle)), u || this.oneToOneButton.hide(), n || this.fullscreenButton.hide(), o || S.hide(), C || q.hide(), Q || H.hide(), h || G.hide(), navigator.maxTouchPoints < 1 && (this.element.addEventListener("mouseenter", () => this.isMouseInElement = !0), this.element.addEventListener("mouseleave", () => this.isMouseInElement = !1));
|
|
6019
6052
|
}
|
|
6020
6053
|
}
|
|
6021
|
-
const
|
|
6022
|
-
buffering:
|
|
6054
|
+
const Fn = "_buffering_1ccif_1", yn = "_hidden_1ccif_25", Rn = "_scaleout_1ccif_1", Ue = {
|
|
6055
|
+
buffering: Fn,
|
|
6023
6056
|
"buffering-fullscreen": "_buffering-fullscreen_1ccif_16",
|
|
6024
|
-
hidden:
|
|
6057
|
+
hidden: yn,
|
|
6025
6058
|
"buffering-indicator": "_buffering-indicator_1ccif_31",
|
|
6026
|
-
scaleout:
|
|
6059
|
+
scaleout: Rn
|
|
6027
6060
|
};
|
|
6028
|
-
var Ui;
|
|
6029
|
-
const We = (Ui = ke.hidden) != null ? Ui : "";
|
|
6030
6061
|
var bi;
|
|
6031
|
-
const
|
|
6062
|
+
const Ve = (bi = Ue.hidden) != null ? bi : "";
|
|
6032
6063
|
var Ji;
|
|
6033
|
-
const
|
|
6064
|
+
const Gn = (Ji = Ue.buffering) != null ? Ji : "";
|
|
6034
6065
|
var Li;
|
|
6035
|
-
const
|
|
6036
|
-
|
|
6066
|
+
const Bi = (Li = Ue["buffering-fullscreen"]) != null ? Li : "";
|
|
6067
|
+
var vi;
|
|
6068
|
+
const kn = (vi = Ue["buffering-indicator"]) != null ? vi : "";
|
|
6069
|
+
class lg extends X {
|
|
6037
6070
|
constructor() {
|
|
6038
6071
|
super(document.createElement("div"));
|
|
6039
6072
|
t(this, "indicator", document.createElement("div"));
|
|
6040
|
-
t(this, "isHidden", () => this.element.classList.contains(
|
|
6073
|
+
t(this, "isHidden", () => this.element.classList.contains(Ve));
|
|
6041
6074
|
t(this, "setHidden", (e) => e ? this.hide() : this.show());
|
|
6042
|
-
t(this, "hide", () => this.element.classList.add(
|
|
6043
|
-
t(this, "show", () => this.element.classList.remove(
|
|
6075
|
+
t(this, "hide", () => this.element.classList.add(Ve));
|
|
6076
|
+
t(this, "show", () => this.element.classList.remove(Ve));
|
|
6044
6077
|
t(this, "fullscreen", (e) => {
|
|
6045
|
-
e ? this.element.classList.add(
|
|
6078
|
+
e ? this.element.classList.add(Bi) : this.element.classList.remove(Bi);
|
|
6046
6079
|
});
|
|
6047
|
-
this.element.className =
|
|
6080
|
+
this.element.className = Gn, this.indicator.className = kn, this.element.appendChild(this.indicator);
|
|
6048
6081
|
}
|
|
6049
6082
|
}
|
|
6050
|
-
const
|
|
6051
|
-
|
|
6052
|
-
|
|
6053
|
-
image: kn,
|
|
6054
|
-
overlay: Un,
|
|
6055
|
-
selected: bn,
|
|
6056
|
-
hidden: Jn,
|
|
6057
|
-
disabled: Ln
|
|
6083
|
+
const Un = "_castoverlay_1n91l_1", bn = "_hidden_1n91l_20", ug = {
|
|
6084
|
+
castoverlay: Un,
|
|
6085
|
+
hidden: bn
|
|
6058
6086
|
};
|
|
6059
|
-
var vi;
|
|
6060
|
-
const vn = (vi = XA.button) != null ? vi : "";
|
|
6061
6087
|
var Ni;
|
|
6062
|
-
const
|
|
6088
|
+
const Ze = (Ni = ug.hidden) != null ? Ni : "";
|
|
6063
6089
|
var Hi;
|
|
6064
|
-
const
|
|
6090
|
+
const Jn = (Hi = ug.castoverlay) != null ? Hi : "";
|
|
6091
|
+
class Ln extends X {
|
|
6092
|
+
constructor() {
|
|
6093
|
+
super(document.createElement("div"));
|
|
6094
|
+
t(this, "onClick");
|
|
6095
|
+
t(this, "setText", (e) => {
|
|
6096
|
+
this.element.innerText = e;
|
|
6097
|
+
});
|
|
6098
|
+
t(this, "hide", () => this.element.classList.add(Ze));
|
|
6099
|
+
t(this, "show", () => this.element.classList.remove(Ze));
|
|
6100
|
+
this.element.classList.add(Jn), this.element.classList.add(Ze), this.element.innerText = "device";
|
|
6101
|
+
}
|
|
6102
|
+
}
|
|
6103
|
+
const vn = "_button_137xm_21", Nn = "_image_137xm_96", Hn = "_overlay_137xm_116", Mn = "_selected_137xm_134", Pn = "_hidden_137xm_139", qn = "_disabled_137xm_143", XA = {
|
|
6104
|
+
button: vn,
|
|
6105
|
+
"show-and-scaleup": "_show-and-scaleup_137xm_1",
|
|
6106
|
+
image: Nn,
|
|
6107
|
+
overlay: Hn,
|
|
6108
|
+
selected: Mn,
|
|
6109
|
+
hidden: Pn,
|
|
6110
|
+
disabled: qn
|
|
6111
|
+
};
|
|
6065
6112
|
var Mi;
|
|
6066
|
-
const
|
|
6113
|
+
const Tn = (Mi = XA.button) != null ? Mi : "";
|
|
6067
6114
|
var Pi;
|
|
6068
|
-
const
|
|
6069
|
-
|
|
6115
|
+
const Oe = (Pi = XA.hidden) != null ? Pi : "";
|
|
6116
|
+
var qi;
|
|
6117
|
+
const Kn = (qi = XA.overlay) != null ? qi : "";
|
|
6118
|
+
var Ti;
|
|
6119
|
+
const ni = (Ti = XA.image) != null ? Ti : "";
|
|
6120
|
+
var Ki;
|
|
6121
|
+
const oi = (Ki = XA.selected) != null ? Ki : "";
|
|
6122
|
+
class Yn extends X {
|
|
6070
6123
|
constructor({ title: e, onClick: g, imageUrl: s, selected: I }) {
|
|
6071
6124
|
super(document.createElement("button"));
|
|
6072
6125
|
t(this, "overlay");
|
|
@@ -6078,7 +6131,7 @@ class Hn extends X {
|
|
|
6078
6131
|
g.style.backgroundImage = `url(${s})`, g.style.opacity = "1", e.style.opacity = "0";
|
|
6079
6132
|
});
|
|
6080
6133
|
t(this, "setSelected", (e) => {
|
|
6081
|
-
e ? this.element.classList.add(
|
|
6134
|
+
e ? this.element.classList.add(oi) : this.element.classList.remove(oi);
|
|
6082
6135
|
});
|
|
6083
6136
|
t(this, "setAnimationDelay", (e) => {
|
|
6084
6137
|
this.element.style.animationDelay = e;
|
|
@@ -6086,13 +6139,13 @@ class Hn extends X {
|
|
|
6086
6139
|
t(this, "hideLoading", () => {
|
|
6087
6140
|
this.loadingOverlay.hide();
|
|
6088
6141
|
});
|
|
6089
|
-
t(this, "isHidden", () => this.element.classList.contains(
|
|
6142
|
+
t(this, "isHidden", () => this.element.classList.contains(Oe));
|
|
6090
6143
|
t(this, "setHidden", (e) => e ? this.hide() : this.show());
|
|
6091
|
-
t(this, "hide", () => this.element.classList.add(
|
|
6092
|
-
t(this, "show", () => this.element.classList.remove(
|
|
6093
|
-
this.element.className =
|
|
6144
|
+
t(this, "hide", () => this.element.classList.add(Oe));
|
|
6145
|
+
t(this, "show", () => this.element.classList.remove(Oe));
|
|
6146
|
+
this.element.className = Tn, I && this.setSelected(I), this.element.onclick = () => {
|
|
6094
6147
|
this.loadingOverlay.show(), g();
|
|
6095
|
-
}, this.imageHolder1 = document.createElement("div"), this.imageHolder1.className =
|
|
6148
|
+
}, this.imageHolder1 = document.createElement("div"), this.imageHolder1.className = ni, this.imageHolder1.style.animationFillMode = "forwards", this.imageHolder2 = document.createElement("div"), this.imageHolder2.className = ni, this.imageHolder2.style.animationFillMode = "forwards", s && (this.imageHolder1.style.backgroundImage = `url(${s})`, this.isImageHolder1Active = !0), this.loadingOverlay = new lg(), this.loadingOverlay.attach(this.element), this.loadingOverlay.hide(), this.element.appendChild(this.imageHolder1), this.element.appendChild(this.imageHolder2), this.overlay = document.createElement("div"), this.overlay.className = Kn, this.element.appendChild(this.overlay);
|
|
6096
6149
|
const B = document.createElement("span");
|
|
6097
6150
|
B.innerHTML = e, this.element.appendChild(B), this.show();
|
|
6098
6151
|
}
|
|
@@ -6106,17 +6159,17 @@ class Hn extends X {
|
|
|
6106
6159
|
}
|
|
6107
6160
|
}
|
|
6108
6161
|
}
|
|
6109
|
-
const
|
|
6162
|
+
const xn = "_container_btpgd_13", Wn = "_hidden_btpgd_37", Vn = "_disabled_btpgd_41", mg = {
|
|
6110
6163
|
"channel-selection-overlay": "_channel-selection-overlay_btpgd_1",
|
|
6111
|
-
container:
|
|
6112
|
-
hidden:
|
|
6113
|
-
disabled:
|
|
6164
|
+
container: xn,
|
|
6165
|
+
hidden: Wn,
|
|
6166
|
+
disabled: Vn
|
|
6114
6167
|
};
|
|
6115
|
-
var
|
|
6116
|
-
const
|
|
6117
|
-
var
|
|
6118
|
-
const
|
|
6119
|
-
class
|
|
6168
|
+
var Yi;
|
|
6169
|
+
const Xe = (Yi = mg.hidden) != null ? Yi : "";
|
|
6170
|
+
var xi;
|
|
6171
|
+
const Zn = (xi = mg.container) != null ? xi : "";
|
|
6172
|
+
class On extends X {
|
|
6120
6173
|
constructor({ vindral: e, thumbnailModule: g }) {
|
|
6121
6174
|
var s;
|
|
6122
6175
|
super(document.createElement("div"));
|
|
@@ -6128,10 +6181,10 @@ class Kn extends X {
|
|
|
6128
6181
|
g.setSelected(s.channelId === e.channelId);
|
|
6129
6182
|
}), e.channelId !== this.vindral.channelId && (this.vindral.channelId = e.channelId);
|
|
6130
6183
|
});
|
|
6131
|
-
t(this, "isHidden", () => this.element.classList.contains(
|
|
6184
|
+
t(this, "isHidden", () => this.element.classList.contains(Xe));
|
|
6132
6185
|
t(this, "setHidden", (e) => e ? this.hide() : this.show());
|
|
6133
|
-
t(this, "hide", () => this.element.classList.add(
|
|
6134
|
-
t(this, "show", () => this.element.classList.remove(
|
|
6186
|
+
t(this, "hide", () => this.element.classList.add(Xe));
|
|
6187
|
+
t(this, "show", () => this.element.classList.remove(Xe));
|
|
6135
6188
|
this.thumbnailModule = g, this.list = /* @__PURE__ */ new Map(), this.vindral = e, this.vindral.on("context switch", (I) => {
|
|
6136
6189
|
if (I === "completed") {
|
|
6137
6190
|
this.list.forEach((n) => n.hideLoading());
|
|
@@ -6148,7 +6201,7 @@ class Kn extends X {
|
|
|
6148
6201
|
var C;
|
|
6149
6202
|
if (!B.isLive)
|
|
6150
6203
|
return;
|
|
6151
|
-
const o = new
|
|
6204
|
+
const o = new Yn({
|
|
6152
6205
|
title: B.name,
|
|
6153
6206
|
onClick: () => {
|
|
6154
6207
|
this.setSelected(B);
|
|
@@ -6163,14 +6216,14 @@ class Kn extends X {
|
|
|
6163
6216
|
var n;
|
|
6164
6217
|
I.setImageUrl((n = this.thumbnailModule) == null ? void 0 : n.getImageUrl(B));
|
|
6165
6218
|
});
|
|
6166
|
-
}), this.element.className =
|
|
6219
|
+
}), this.element.className = Zn, this.show();
|
|
6167
6220
|
}
|
|
6168
6221
|
}
|
|
6169
|
-
const
|
|
6170
|
-
fullscreen:
|
|
6222
|
+
const Xn = "_fullscreen_1v9d8_1", zn = {
|
|
6223
|
+
fullscreen: Xn
|
|
6171
6224
|
};
|
|
6172
|
-
var
|
|
6173
|
-
const
|
|
6225
|
+
var Wi;
|
|
6226
|
+
const ze = (Wi = zn.fullscreen) != null ? Wi : "", YA = class extends z {
|
|
6174
6227
|
constructor(e) {
|
|
6175
6228
|
super();
|
|
6176
6229
|
t(this, "container");
|
|
@@ -6180,14 +6233,14 @@ const Oe = (Ki = xn.fullscreen) != null ? Ki : "", YA = class extends z {
|
|
|
6180
6233
|
t(this, "request", () => this.requestFn());
|
|
6181
6234
|
t(this, "exit", () => this.exitFn());
|
|
6182
6235
|
t(this, "onChange", () => this.emit("on fullscreen change", this.isFullscreen()));
|
|
6183
|
-
t(this, "isFullscreen", () => !!(document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen || this.container.classList.contains(
|
|
6236
|
+
t(this, "isFullscreen", () => !!(document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen || this.container.classList.contains(ze)));
|
|
6184
6237
|
t(this, "isSupported", () => YA.isFullscreenApiSupported(this.container) || !this.isInIframe());
|
|
6185
6238
|
t(this, "isInIframe", () => window.location !== window.parent.location);
|
|
6186
6239
|
this.container = e, document.addEventListener("webkitfullscreenchange", this.onChange), document.addEventListener("mozfullscreenchange", this.onChange), document.addEventListener("fullscreenchange", this.onChange), this.container.addEventListener("webkitendfullscreen", this.onChange);
|
|
6187
6240
|
}
|
|
6188
6241
|
get requestFn() {
|
|
6189
6242
|
return YA.isFullscreenApiSupported(this.container) ? (this.container.requestFullscreen || this.container.webkitRequestFullscreen || this.container.webkitEnterFullscreen || this.container.mozRequestFullScreen).bind(this.container) : () => new Promise((e) => {
|
|
6190
|
-
this.container.classList.add(
|
|
6243
|
+
this.container.classList.add(ze), e();
|
|
6191
6244
|
});
|
|
6192
6245
|
}
|
|
6193
6246
|
get exitFn() {
|
|
@@ -6196,28 +6249,28 @@ const Oe = (Ki = xn.fullscreen) != null ? Ki : "", YA = class extends z {
|
|
|
6196
6249
|
return (e || g || s).bind(document);
|
|
6197
6250
|
}
|
|
6198
6251
|
return () => new Promise((e) => {
|
|
6199
|
-
this.container.classList.remove(
|
|
6252
|
+
this.container.classList.remove(ze), e();
|
|
6200
6253
|
});
|
|
6201
6254
|
}
|
|
6202
6255
|
};
|
|
6203
6256
|
let kA = YA;
|
|
6204
6257
|
t(kA, "isFullscreenApiSupported", (e) => (e.requestFullscreen || e.webkitRequestFullscreen || e.webkitEnterFullscreen || e.mozRequestFullScreen) !== void 0);
|
|
6205
|
-
const
|
|
6206
|
-
player:
|
|
6258
|
+
const jn = "_player_1jt4y_1", Bt = {
|
|
6259
|
+
player: jn,
|
|
6207
6260
|
"one-to-one": "_one-to-one_1jt4y_19",
|
|
6208
6261
|
"audio-only": "_audio-only_1jt4y_28"
|
|
6209
|
-
},
|
|
6210
|
-
playoverlay:
|
|
6211
|
-
hidden:
|
|
6262
|
+
}, _n = "_playoverlay_1niji_1", $n = "_hidden_1niji_17", nt = {
|
|
6263
|
+
playoverlay: _n,
|
|
6264
|
+
hidden: $n,
|
|
6212
6265
|
"playoverlay-indicator": "_playoverlay-indicator_1niji_23"
|
|
6213
6266
|
};
|
|
6214
|
-
var
|
|
6215
|
-
const te = (
|
|
6216
|
-
var
|
|
6217
|
-
const
|
|
6218
|
-
var
|
|
6219
|
-
const
|
|
6220
|
-
class
|
|
6267
|
+
var Vi;
|
|
6268
|
+
const te = (Vi = nt.hidden) != null ? Vi : "";
|
|
6269
|
+
var Zi;
|
|
6270
|
+
const Ao = (Zi = nt.playoverlay) != null ? Zi : "";
|
|
6271
|
+
var Oi;
|
|
6272
|
+
const eo = (Oi = nt["playoverlay-indicator"]) != null ? Oi : "";
|
|
6273
|
+
class to extends X {
|
|
6221
6274
|
constructor() {
|
|
6222
6275
|
super(document.createElement("div"));
|
|
6223
6276
|
t(this, "onClick");
|
|
@@ -6226,32 +6279,12 @@ class zn extends X {
|
|
|
6226
6279
|
t(this, "setHidden", (e) => e ? this.hide() : this.show());
|
|
6227
6280
|
t(this, "hide", () => this.element.classList.add(te));
|
|
6228
6281
|
t(this, "show", () => this.element.classList.remove(te));
|
|
6229
|
-
this.element.classList.add(
|
|
6282
|
+
this.element.classList.add(Ao), this.element.classList.add(te), this.indicator.className = eo, this.element.appendChild(this.indicator), this.element.onclick = () => {
|
|
6230
6283
|
this.onClick && this.onClick();
|
|
6231
6284
|
};
|
|
6232
6285
|
}
|
|
6233
6286
|
}
|
|
6234
|
-
|
|
6235
|
-
castoverlay: jn,
|
|
6236
|
-
hidden: _n
|
|
6237
|
-
};
|
|
6238
|
-
var Vi;
|
|
6239
|
-
const Xe = (Vi = ug.hidden) != null ? Vi : "";
|
|
6240
|
-
var Zi;
|
|
6241
|
-
const $n = (Zi = ug.castoverlay) != null ? Zi : "";
|
|
6242
|
-
class Ao extends X {
|
|
6243
|
-
constructor() {
|
|
6244
|
-
super(document.createElement("div"));
|
|
6245
|
-
t(this, "onClick");
|
|
6246
|
-
t(this, "setText", (e) => {
|
|
6247
|
-
this.element.innerText = e;
|
|
6248
|
-
});
|
|
6249
|
-
t(this, "hide", () => this.element.classList.add(Xe));
|
|
6250
|
-
t(this, "show", () => this.element.classList.remove(Xe));
|
|
6251
|
-
this.element.classList.add($n), this.element.classList.add(Xe), this.element.innerText = "device";
|
|
6252
|
-
}
|
|
6253
|
-
}
|
|
6254
|
-
class eo extends z {
|
|
6287
|
+
class io extends z {
|
|
6255
6288
|
constructor({ vindral: e, refreshEveryMs: g }) {
|
|
6256
6289
|
super();
|
|
6257
6290
|
t(this, "thumbnails", /* @__PURE__ */ new Map());
|
|
@@ -6276,11 +6309,11 @@ class eo extends z {
|
|
|
6276
6309
|
return this.thumbnails.get(e.channelId);
|
|
6277
6310
|
}
|
|
6278
6311
|
refreshThumbnails() {
|
|
6279
|
-
return
|
|
6312
|
+
return m(this, null, function* () {
|
|
6280
6313
|
if (!this.isFetching) {
|
|
6281
6314
|
this.isFetching = !0;
|
|
6282
6315
|
try {
|
|
6283
|
-
const e = this.channels.map((g) =>
|
|
6316
|
+
const e = this.channels.map((g) => m(this, null, function* () {
|
|
6284
6317
|
const s = g.thumbnailUrls.length < 2 ? 0 : Math.ceil(g.thumbnailUrls.length / 2), I = g.thumbnailUrls[s];
|
|
6285
6318
|
if (I) {
|
|
6286
6319
|
const B = yield fetch(I);
|
|
@@ -6299,12 +6332,12 @@ class eo extends z {
|
|
|
6299
6332
|
});
|
|
6300
6333
|
}
|
|
6301
6334
|
}
|
|
6302
|
-
var Oi;
|
|
6303
|
-
const to = (Oi = It.player) != null ? Oi : "";
|
|
6304
6335
|
var Xi;
|
|
6305
|
-
const
|
|
6336
|
+
const go = (Xi = Bt.player) != null ? Xi : "";
|
|
6306
6337
|
var zi;
|
|
6307
|
-
const
|
|
6338
|
+
const je = (zi = Bt["one-to-one"]) != null ? zi : "";
|
|
6339
|
+
var ji;
|
|
6340
|
+
const so = (ji = Bt["audio-only"]) != null ? ji : "", Io = {
|
|
6308
6341
|
controlsEnabled: !0,
|
|
6309
6342
|
castEnabled: !0,
|
|
6310
6343
|
channelSelectionEnabled: !0,
|
|
@@ -6314,22 +6347,22 @@ const io = (zi = It["audio-only"]) != null ? zi : "", go = {
|
|
|
6314
6347
|
iosWakeLockEnabled: !0,
|
|
6315
6348
|
hideTimeout: 2e3,
|
|
6316
6349
|
pauseButtonEnabled: !0
|
|
6317
|
-
},
|
|
6318
|
-
class
|
|
6350
|
+
}, Bo = (i) => !gg(i);
|
|
6351
|
+
class oo {
|
|
6319
6352
|
constructor(A, e) {
|
|
6320
6353
|
t(this, "core");
|
|
6321
6354
|
t(this, "castSender");
|
|
6322
6355
|
t(this, "options");
|
|
6323
6356
|
t(this, "state");
|
|
6324
6357
|
t(this, "playerElement", document.createElement("div"));
|
|
6325
|
-
t(this, "bufferingOverlay", new
|
|
6326
|
-
t(this, "playOverlay", new
|
|
6327
|
-
t(this, "castOverlay", new
|
|
6358
|
+
t(this, "bufferingOverlay", new lg());
|
|
6359
|
+
t(this, "playOverlay", new to());
|
|
6360
|
+
t(this, "castOverlay", new Ln());
|
|
6328
6361
|
t(this, "channelSelectionList");
|
|
6329
6362
|
t(this, "bar");
|
|
6330
6363
|
t(this, "stateInterval");
|
|
6331
6364
|
t(this, "thumbnailModule");
|
|
6332
|
-
t(this, "browser",
|
|
6365
|
+
t(this, "browser", Eg());
|
|
6333
6366
|
t(this, "unload", () => {
|
|
6334
6367
|
var A;
|
|
6335
6368
|
this.stateInterval && window.clearInterval(this.stateInterval), this.core.unload(), this.playerElement.remove(), (A = this.thumbnailModule) == null || A.stop();
|
|
@@ -6337,7 +6370,7 @@ class Bo {
|
|
|
6337
6370
|
t(this, "attach", (A) => {
|
|
6338
6371
|
this.stateInterval && window.clearInterval(this.stateInterval), this.stateInterval = window.setInterval(this.checkState, 100), this.playerElement.remove(), A.appendChild(this.playerElement);
|
|
6339
6372
|
});
|
|
6340
|
-
t(this, "setupCastSender", () =>
|
|
6373
|
+
t(this, "setupCastSender", () => m(this, null, function* () {
|
|
6341
6374
|
if (this.options.castEnabled) {
|
|
6342
6375
|
try {
|
|
6343
6376
|
yield this.castSender.init();
|
|
@@ -6358,19 +6391,19 @@ class Bo {
|
|
|
6358
6391
|
A.detail === 2 && (A.target instanceof HTMLVideoElement || A.target instanceof HTMLCanvasElement) && this.toggleFullscreen();
|
|
6359
6392
|
});
|
|
6360
6393
|
t(this, "togglePip", () => this.core.pictureInPicture.isActive() ? this.core.pictureInPicture.exit() : (this.triggerUserInput(), this.core.pictureInPicture.enter()));
|
|
6361
|
-
t(this, "toggleFullscreen", () =>
|
|
6362
|
-
return this.state.fullscreen.isFullscreen() ? this.exitFullscreen() : (yield this.triggerUserInput(), this.enterFullscreen());
|
|
6394
|
+
t(this, "toggleFullscreen", () => m(this, null, function* () {
|
|
6395
|
+
return this.state.fullscreen.isFullscreen() ? this.exitFullscreen() : (yield this.triggerUserInput(), this.iosHackResetSize(), this.enterFullscreen());
|
|
6363
6396
|
}));
|
|
6364
|
-
t(this, "triggerUserInput", () =>
|
|
6397
|
+
t(this, "triggerUserInput", () => m(this, null, function* () {
|
|
6365
6398
|
if (this.browser.platform.isIOS) {
|
|
6366
6399
|
const A = this.core.muted;
|
|
6367
6400
|
this.core.muted = !A, this.core.muted = A;
|
|
6368
6401
|
}
|
|
6369
6402
|
}));
|
|
6370
6403
|
t(this, "toggleOneToOne", () => {
|
|
6371
|
-
this.playerElement.classList.contains(
|
|
6404
|
+
this.playerElement.classList.contains(je) ? this.playerElement.classList.remove(je) : this.playerElement.classList.add(je);
|
|
6372
6405
|
});
|
|
6373
|
-
t(this, "enterFullscreen", () =>
|
|
6406
|
+
t(this, "enterFullscreen", () => m(this, null, function* () {
|
|
6374
6407
|
this.bar.fullscreenButton.setIcon("exit"), yield this.state.fullscreen.request(), this.lockOrientation();
|
|
6375
6408
|
}));
|
|
6376
6409
|
t(this, "exitFullscreen", () => (this.bar.fullscreenButton.setIcon("enter"), this.unlockOrientation(), this.state.fullscreen.exit()));
|
|
@@ -6393,23 +6426,23 @@ class Bo {
|
|
|
6393
6426
|
return (e = (A = this.options.channelSelectionOptions) == null ? void 0 : A.barButton) != null && e.enabled && ((s = (g = this.options.channelSelectionOptions) == null ? void 0 : g.barButton) != null && s.thumbnails) ? !0 : !!((B = (I = this.options.channelSelectionOptions) == null ? void 0 : I.list) != null && B.enabled);
|
|
6394
6427
|
});
|
|
6395
6428
|
t(this, "bumpInteractTime", () => void (this.state.lastInteractionTime = Date.now()));
|
|
6396
|
-
var o, C, a, Q, h,
|
|
6397
|
-
const g = r(r({},
|
|
6398
|
-
this.options = g, this.playerElement.className =
|
|
6429
|
+
var o, C, a, Q, h, u;
|
|
6430
|
+
const g = r(r({}, Io), e);
|
|
6431
|
+
this.options = g, this.playerElement.className = go, Bo(A) ? this.core = A : this.core = new EA(A);
|
|
6399
6432
|
const s = !kA.isFullscreenApiSupported(this.playerElement) && kA.isFullscreenApiSupported(this.core.mediaElement) ? this.core.mediaElement : this.playerElement;
|
|
6400
6433
|
this.state = {
|
|
6401
6434
|
isBuffering: !1,
|
|
6402
6435
|
fullscreen: new kA(s),
|
|
6403
6436
|
lastInteractionTime: 0
|
|
6404
|
-
}, this.needsThumbnails() && (this.thumbnailModule = new
|
|
6437
|
+
}, this.needsThumbnails() && (this.thumbnailModule = new io({
|
|
6405
6438
|
vindral: this.core,
|
|
6406
6439
|
refreshEveryMs: e == null ? void 0 : e.thumbnailUpdateInterval
|
|
6407
|
-
}), this.thumbnailModule.start()), (C = (o = this.options.channelSelectionOptions) == null ? void 0 : o.list) != null && C.enabled && (this.channelSelectionList = new
|
|
6440
|
+
}), this.thumbnailModule.start()), (C = (o = this.options.channelSelectionOptions) == null ? void 0 : o.list) != null && C.enabled && (this.channelSelectionList = new On({
|
|
6408
6441
|
vindral: this.core,
|
|
6409
6442
|
thumbnailModule: this.thumbnailModule
|
|
6410
6443
|
}));
|
|
6411
|
-
const I = (e == null ? void 0 : e.channelSelectionEnabled) || ((Q = (a = e == null ? void 0 : e.channelSelectionOptions) == null ? void 0 : a.barButton) == null ? void 0 : Q.enabled), B = (
|
|
6412
|
-
this.bar = new
|
|
6444
|
+
const I = (e == null ? void 0 : e.channelSelectionEnabled) || ((Q = (a = e == null ? void 0 : e.channelSelectionOptions) == null ? void 0 : a.barButton) == null ? void 0 : Q.enabled), B = (u = (h = e == null ? void 0 : e.channelSelectionOptions) == null ? void 0 : h.barButton) == null ? void 0 : u.thumbnails;
|
|
6445
|
+
this.bar = new pn(b(r({
|
|
6413
6446
|
vindral: this.core,
|
|
6414
6447
|
thumbnailModule: this.thumbnailModule
|
|
6415
6448
|
}, g), {
|
|
@@ -6421,22 +6454,22 @@ class Bo {
|
|
|
6421
6454
|
onFullscreenClicked: () => this.toggleFullscreen(),
|
|
6422
6455
|
onOneToOneClicked: () => this.toggleOneToOne(),
|
|
6423
6456
|
onPipClicked: () => this.togglePip()
|
|
6424
|
-
})), this.core.media === "audio" && (this.playerElement.classList.add(
|
|
6457
|
+
})), this.core.media === "audio" && (this.playerElement.classList.add(so), this.options.controlsEnabled && this.bar.show());
|
|
6425
6458
|
const n = this.core.getCastOptions();
|
|
6426
|
-
this.castSender = new
|
|
6459
|
+
this.castSender = new Tg({
|
|
6427
6460
|
background: this.options.castBackground,
|
|
6428
6461
|
receiverApplicationId: this.options.castReceiverApplicationId,
|
|
6429
6462
|
options: n
|
|
6430
|
-
}), this.setupCastSender(), this.core.on("needs user input", (
|
|
6431
|
-
if (this.bar.updateState(),
|
|
6463
|
+
}), this.setupCastSender(), this.core.on("needs user input", (l) => {
|
|
6464
|
+
if (this.bar.updateState(), l.forVideo && this.core.media !== "audio" || !this.options.controlsEnabled) {
|
|
6432
6465
|
this.playOverlay.show();
|
|
6433
6466
|
return;
|
|
6434
6467
|
}
|
|
6435
|
-
|
|
6468
|
+
l.forAudio && this.options.controlsEnabled && (this.state.lastInteractionTime = 0, this.bar.show());
|
|
6436
6469
|
}), this.core.on("volume state", () => {
|
|
6437
6470
|
this.bar.updateState();
|
|
6438
|
-
}), this.core.on("playback state", (
|
|
6439
|
-
switch (this.bar.updateState(),
|
|
6471
|
+
}), this.core.on("playback state", (l) => {
|
|
6472
|
+
switch (this.bar.updateState(), l) {
|
|
6440
6473
|
case "paused":
|
|
6441
6474
|
this.bumpInteractTime(), this.bufferingOverlay.hide(), this.options.controlsEnabled && this.bar.show(), (this.core.media !== "audio" || !this.options.controlsEnabled) && this.playOverlay.show();
|
|
6442
6475
|
break;
|
|
@@ -6452,24 +6485,27 @@ class Bo {
|
|
|
6452
6485
|
}
|
|
6453
6486
|
}), this.core.attach(this.playerElement), this.bufferingOverlay.attach(this.playerElement), this.playOverlay.attach(this.playerElement), this.castOverlay.attach(this.playerElement), this.channelSelectionList && this.channelSelectionList.attach(this.playerElement), this.bar.attach(this.playerElement), this.playerElement.addEventListener("click", this.onClick), this.playerElement.addEventListener("mousemove", this.onMouseMove), this.playOverlay.onClick = () => {
|
|
6454
6487
|
this.core.userInput(), this.playOverlay.hide();
|
|
6455
|
-
}, this.state.fullscreen.on("on fullscreen change", (
|
|
6456
|
-
|
|
6488
|
+
}, this.state.fullscreen.on("on fullscreen change", (l) => {
|
|
6489
|
+
l ? this.bar.fullscreenButton.setIcon("exit") : this.bar.fullscreenButton.setIcon("enter");
|
|
6457
6490
|
}), this.bufferingOverlay.fullscreen(!0);
|
|
6458
6491
|
}
|
|
6492
|
+
iosHackResetSize() {
|
|
6493
|
+
this.core.emitter.emit("ios-hack: reset size");
|
|
6494
|
+
}
|
|
6459
6495
|
}
|
|
6460
6496
|
export {
|
|
6461
|
-
|
|
6462
|
-
|
|
6463
|
-
|
|
6464
|
-
|
|
6465
|
-
|
|
6466
|
-
|
|
6467
|
-
|
|
6468
|
-
|
|
6469
|
-
|
|
6470
|
-
|
|
6471
|
-
|
|
6472
|
-
|
|
6497
|
+
Vg as AUTHENTICATION_EXPIRED_CODE,
|
|
6498
|
+
Wg as AUTHENTICATION_FAILED_CODE,
|
|
6499
|
+
Pg as ApiClient,
|
|
6500
|
+
Zg as CHANNEL_NOT_FOUND_CODE,
|
|
6501
|
+
xg as CONNECTION_FAILED_AFTER_RETRIES_CODE,
|
|
6502
|
+
Yg as CONNECTION_FAILED_CODE,
|
|
6503
|
+
Tg as CastSender,
|
|
6504
|
+
$g as DISCONNECTED_BY_EDGE,
|
|
6505
|
+
Xg as INACTIVITY_CODE,
|
|
6506
|
+
Fe as Level,
|
|
6507
|
+
Og as NO_INCOMING_DATA,
|
|
6508
|
+
oo as Player,
|
|
6473
6509
|
EA as Vindral,
|
|
6474
|
-
|
|
6510
|
+
p as VindralError
|
|
6475
6511
|
};
|