@oddin-gg/havik-player 2.4.0 → 2.5.0
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/dist/havik-player.global.js +1 -1
- package/dist/havik-player.global.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +66 -63
- package/dist/index.js.map +1 -1
- package/embed/index.html +1 -1
- package/examples/vanilla.html +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -142,7 +142,7 @@ function ae(e, t) {
|
|
|
142
142
|
t?.addEventListener("abort", a, { once: !0 });
|
|
143
143
|
});
|
|
144
144
|
}
|
|
145
|
-
async function
|
|
145
|
+
async function oe(e, t, r) {
|
|
146
146
|
let i = ee(t), a = Date.now(), s = i.timeoutMs == null ? Infinity : a + i.timeoutMs, c = 0, l;
|
|
147
147
|
for (;;) {
|
|
148
148
|
if (r?.aborted) throw new n("ABORTED", 0, "wait-for-live aborted");
|
|
@@ -168,21 +168,21 @@ async function v(e, t, r) {
|
|
|
168
168
|
}
|
|
169
169
|
//#endregion
|
|
170
170
|
//#region src/core/resolve.ts
|
|
171
|
-
async function
|
|
171
|
+
async function v(e) {
|
|
172
172
|
if (!e.matchUrn || typeof e.matchUrn != "string") throw new n("INVALID_URN", 0, "resolveStream: a non-empty matchUrn is required");
|
|
173
173
|
let t = await u(c(e.baseUrl, `/v1/playback/${encodeURIComponent(e.matchUrn)}`), {
|
|
174
174
|
credential: e.credential,
|
|
175
175
|
signal: e.signal,
|
|
176
176
|
apiHeaders: e.apiHeaders
|
|
177
177
|
});
|
|
178
|
-
if (!t.ok) throw await
|
|
179
|
-
return
|
|
178
|
+
if (!t.ok) throw await se(t);
|
|
179
|
+
return le(await t.json(), e.matchUrn);
|
|
180
180
|
}
|
|
181
|
-
function
|
|
182
|
-
let t = () =>
|
|
183
|
-
return e.waitForLive ?
|
|
181
|
+
function y(e) {
|
|
182
|
+
let t = () => v(e);
|
|
183
|
+
return e.waitForLive ? oe(t, e.waitForLive, e.signal) : t();
|
|
184
184
|
}
|
|
185
|
-
async function
|
|
185
|
+
async function se(e) {
|
|
186
186
|
let t = l(e.headers.get("retry-after")), i = e.headers.get("x-request-id") ?? e.headers.get("x-amzn-requestid") ?? void 0, a = e.statusText || `HTTP ${e.status}`, o, s;
|
|
187
187
|
try {
|
|
188
188
|
let t = await e.json();
|
|
@@ -198,7 +198,7 @@ async function oe(e) {
|
|
|
198
198
|
liveStartsAtMs: s
|
|
199
199
|
});
|
|
200
200
|
}
|
|
201
|
-
var
|
|
201
|
+
var ce = /* @__PURE__ */ new Set([
|
|
202
202
|
"matchUrn",
|
|
203
203
|
"protocol",
|
|
204
204
|
"drmEnabled",
|
|
@@ -209,7 +209,7 @@ var se = /* @__PURE__ */ new Set([
|
|
|
209
209
|
"expiresAt",
|
|
210
210
|
"analytics"
|
|
211
211
|
]);
|
|
212
|
-
function
|
|
212
|
+
function b(e, t) {
|
|
213
213
|
let r;
|
|
214
214
|
try {
|
|
215
215
|
r = new URL(t);
|
|
@@ -219,36 +219,36 @@ function x(e, t) {
|
|
|
219
219
|
if (r.protocol !== "https:" && r.protocol !== "http:") throw new n("INTERNAL", 0, `playback ${e} has a disallowed scheme: ${r.protocol}`);
|
|
220
220
|
return t;
|
|
221
221
|
}
|
|
222
|
-
function
|
|
222
|
+
function le(e, t) {
|
|
223
223
|
if (!e.manifestUrl) throw new n("INTERNAL", 0, "playback response is missing manifestUrl");
|
|
224
224
|
let r = e.drmEnabled ?? !!e.drm, i = {
|
|
225
225
|
matchUrn: e.matchUrn ?? t,
|
|
226
226
|
protocol: "hls",
|
|
227
227
|
drmEnabled: r,
|
|
228
|
-
manifestUrl:
|
|
228
|
+
manifestUrl: b("manifestUrl", e.manifestUrl),
|
|
229
229
|
serverTime: e.serverTime ?? ""
|
|
230
230
|
};
|
|
231
231
|
if (e.liveStartsAt && (i.liveStartsAt = e.liveStartsAt), typeof e.analytics?.sid == "string" && e.analytics.sid && (i.analytics = { sid: e.analytics.sid }), r && e.drm) {
|
|
232
232
|
let t = {};
|
|
233
|
-
e.drm.widevine?.licenseUrl && (t.widevine = { licenseUrl:
|
|
234
|
-
licenseUrl:
|
|
235
|
-
certificateUrl:
|
|
233
|
+
e.drm.widevine?.licenseUrl && (t.widevine = { licenseUrl: b("widevine licenseUrl", e.drm.widevine.licenseUrl) }), e.drm.fairplay?.licenseUrl && e.drm.fairplay.certificateUrl && (t.fairplay = {
|
|
234
|
+
licenseUrl: b("fairplay licenseUrl", e.drm.fairplay.licenseUrl),
|
|
235
|
+
certificateUrl: b("fairplay certificateUrl", e.drm.fairplay.certificateUrl)
|
|
236
236
|
}), (t.widevine || t.fairplay) && (i.drm = t);
|
|
237
237
|
}
|
|
238
238
|
let a = {};
|
|
239
|
-
for (let [t, n] of Object.entries(e))
|
|
239
|
+
for (let [t, n] of Object.entries(e)) ce.has(t) || (a[t] = n);
|
|
240
240
|
return Object.keys(a).length > 0 && (i.extensions = a), i;
|
|
241
241
|
}
|
|
242
242
|
//#endregion
|
|
243
243
|
//#region src/core/fullscreen.ts
|
|
244
|
-
function
|
|
244
|
+
function x(e) {
|
|
245
245
|
return e.ownerDocument ?? document;
|
|
246
246
|
}
|
|
247
|
-
function
|
|
247
|
+
function S(e) {
|
|
248
248
|
return e.fullscreenElement ?? e.webkitFullscreenElement ?? null;
|
|
249
249
|
}
|
|
250
250
|
function C(e, t) {
|
|
251
|
-
let n =
|
|
251
|
+
let n = S(x(e));
|
|
252
252
|
return n != null && (n === e || t != null && n === t) || e.webkitDisplayingFullscreen === !0;
|
|
253
253
|
}
|
|
254
254
|
async function w(e, t) {
|
|
@@ -264,7 +264,7 @@ async function T(e, t) {
|
|
|
264
264
|
n.webkitExitFullscreen?.();
|
|
265
265
|
return;
|
|
266
266
|
}
|
|
267
|
-
let r =
|
|
267
|
+
let r = x(e), i = S(r);
|
|
268
268
|
i != null && (i === e || t != null && i === t) && (typeof r.exitFullscreen == "function" ? await r.exitFullscreen() : r.webkitExitFullscreen?.());
|
|
269
269
|
}
|
|
270
270
|
//#endregion
|
|
@@ -535,7 +535,7 @@ var N = ["SW_SECURE_DECODE", "SW_SECURE_CRYPTO"];
|
|
|
535
535
|
function be(e) {
|
|
536
536
|
return e.startsWith("com.widevine");
|
|
537
537
|
}
|
|
538
|
-
function
|
|
538
|
+
function xe(e, t) {
|
|
539
539
|
if (!be(e)) return t;
|
|
540
540
|
let n = (e, t) => {
|
|
541
541
|
let n = e.videoCapabilities;
|
|
@@ -552,8 +552,8 @@ function P(e, t) {
|
|
|
552
552
|
})));
|
|
553
553
|
return [...t, ...r];
|
|
554
554
|
}
|
|
555
|
-
function
|
|
556
|
-
return (t, n) => M() ? navigator.requestMediaKeySystemAccess(t,
|
|
555
|
+
function Se(e) {
|
|
556
|
+
return (t, n) => M() ? navigator.requestMediaKeySystemAccess(t, xe(t, n)).then((t) => ({
|
|
557
557
|
keySystem: t.keySystem,
|
|
558
558
|
getConfiguration: () => t.getConfiguration(),
|
|
559
559
|
createMediaKeys: () => ye(e, t)
|
|
@@ -561,7 +561,7 @@ function xe(e) {
|
|
|
561
561
|
}
|
|
562
562
|
//#endregion
|
|
563
563
|
//#region src/core/drm/support.ts
|
|
564
|
-
var
|
|
564
|
+
var Ce = 5e3, we = "video/mp4; codecs=\"avc1.42E01E\"", P = "audio/mp4; codecs=\"mp4a.40.2\"", Te = {
|
|
565
565
|
widevine: ["com.widevine.alpha"],
|
|
566
566
|
fairplay: ["com.apple.fps"]
|
|
567
567
|
};
|
|
@@ -573,24 +573,24 @@ function Ee(e) {
|
|
|
573
573
|
"cenc"
|
|
574
574
|
],
|
|
575
575
|
videoCapabilities: [{
|
|
576
|
-
contentType:
|
|
576
|
+
contentType: we,
|
|
577
577
|
robustness: "",
|
|
578
578
|
encryptionScheme: "cbcs"
|
|
579
579
|
}],
|
|
580
580
|
audioCapabilities: [{
|
|
581
|
-
contentType:
|
|
581
|
+
contentType: P,
|
|
582
582
|
robustness: "",
|
|
583
583
|
encryptionScheme: "cbcs"
|
|
584
584
|
}]
|
|
585
|
-
}] :
|
|
585
|
+
}] : xe("com.widevine.alpha", [{
|
|
586
586
|
initDataTypes: ["cenc"],
|
|
587
587
|
videoCapabilities: [{
|
|
588
|
-
contentType:
|
|
588
|
+
contentType: we,
|
|
589
589
|
robustness: "SW_SECURE_DECODE",
|
|
590
590
|
encryptionScheme: "cbcs"
|
|
591
591
|
}],
|
|
592
592
|
audioCapabilities: [{
|
|
593
|
-
contentType:
|
|
593
|
+
contentType: P,
|
|
594
594
|
robustness: "SW_SECURE_CRYPTO",
|
|
595
595
|
encryptionScheme: "cbcs"
|
|
596
596
|
}]
|
|
@@ -607,7 +607,7 @@ function F(e, t) {
|
|
|
607
607
|
});
|
|
608
608
|
}
|
|
609
609
|
async function De(e = {}) {
|
|
610
|
-
let t = e.systems ?? ["widevine", "fairplay"], n = e.timeoutMs ??
|
|
610
|
+
let t = e.systems ?? ["widevine", "fairplay"], n = e.timeoutMs ?? Ce, r = {};
|
|
611
611
|
if (typeof window < "u" && window.isSecureContext === !1) return {
|
|
612
612
|
verdict: "insecure-context",
|
|
613
613
|
detail: r
|
|
@@ -1034,7 +1034,7 @@ var U = class {
|
|
|
1034
1034
|
videoEncryptionScheme: "cbcs",
|
|
1035
1035
|
audioEncryptionScheme: "cbcs"
|
|
1036
1036
|
},
|
|
1037
|
-
...M() ? { requestMediaKeySystemAccessFunc:
|
|
1037
|
+
...M() ? { requestMediaKeySystemAccessFunc: Se(t) } : {},
|
|
1038
1038
|
licenseXhrSetup: (e, t) => {
|
|
1039
1039
|
e.open("POST", this.licenseUrl ?? t, !0), e.setRequestHeader("x-api-key", r.apiKey), e.setRequestHeader("X-Match-Urn", n.matchUrn), e.setRequestHeader("X-Device-Id", i), a && e.setRequestHeader("X-User-Id", a), this.licenseRequested = !0;
|
|
1040
1040
|
let o = performance.now();
|
|
@@ -1437,6 +1437,7 @@ var lt = class {
|
|
|
1437
1437
|
lastHbHiddenMs = 0;
|
|
1438
1438
|
lastHbRebufferMs = 0;
|
|
1439
1439
|
lastHbRebufferCount = 0;
|
|
1440
|
+
lastHbActiveMs = 0;
|
|
1440
1441
|
rebufferCount = 0;
|
|
1441
1442
|
rebufferTotalMs = 0;
|
|
1442
1443
|
bufferingSinceMs = null;
|
|
@@ -1606,31 +1607,33 @@ var lt = class {
|
|
|
1606
1607
|
this.hiddenSinceMs !== null && (r += t - this.hiddenSinceMs);
|
|
1607
1608
|
let i = this.rebufferTotalMs;
|
|
1608
1609
|
this.bufferingSinceMs !== null && (i += t - this.bufferingSinceMs);
|
|
1609
|
-
let a =
|
|
1610
|
-
|
|
1611
|
-
let s = e.
|
|
1612
|
-
s > this.
|
|
1613
|
-
let c = e.
|
|
1614
|
-
c > this.
|
|
1615
|
-
let l = e.
|
|
1616
|
-
l > this.
|
|
1617
|
-
let u =
|
|
1618
|
-
this.
|
|
1619
|
-
let d =
|
|
1620
|
-
d > this.
|
|
1621
|
-
let f = e.
|
|
1622
|
-
f > this.
|
|
1623
|
-
let p = e.
|
|
1624
|
-
p > this.
|
|
1625
|
-
let m = e.
|
|
1626
|
-
m > this.
|
|
1627
|
-
let h = e.
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1610
|
+
let a = this.activeTotalMs;
|
|
1611
|
+
this.activeSinceMs !== null && (a += t - this.activeSinceMs);
|
|
1612
|
+
let o = {}, s = e.bytesLoaded ?? 0;
|
|
1613
|
+
s > this.lastBytes && (o.bytesDownloadedDelta = s - this.lastBytes), this.lastBytes = s;
|
|
1614
|
+
let c = e.playlistBytesLoaded ?? 0;
|
|
1615
|
+
c > this.lastPlaylistBytes && (o.playlistBytesDelta = c - this.lastPlaylistBytes), this.lastPlaylistBytes = c;
|
|
1616
|
+
let l = e.droppedFrames ?? 0;
|
|
1617
|
+
l > this.lastDropped && (o.droppedFramesDelta = l - this.lastDropped), this.lastDropped = l;
|
|
1618
|
+
let u = e.renditionSwitches ?? 0;
|
|
1619
|
+
u > this.lastSwitches && (o.renditionSwitchesDelta = u - this.lastSwitches), this.lastSwitches = u, n > this.lastHbPlayingMs && (o.playingMsDelta = Math.round(n - this.lastHbPlayingMs)), this.lastHbPlayingMs = n, r > this.lastHbHiddenMs && (o.hiddenMsDelta = Math.round(r - this.lastHbHiddenMs)), this.lastHbHiddenMs = r, i > this.lastHbRebufferMs && (o.rebufferMsDelta = Math.round(i - this.lastHbRebufferMs)), this.lastHbRebufferMs = i, this.rebufferCount > this.lastHbRebufferCount && (o.rebufferCountDelta = this.rebufferCount - this.lastHbRebufferCount), this.lastHbRebufferCount = this.rebufferCount, a > this.lastHbActiveMs && (o.activeMsDelta = Math.round(a - this.lastHbActiveMs)), this.lastHbActiveMs = a, typeof e.latencySeconds == "number" && (o.latencyMs = Math.round(e.latencySeconds * 1e3)), typeof e.targetLatencySeconds == "number" && (o.targetLatencyMs = Math.round(e.targetLatencySeconds * 1e3)), typeof e.bandwidthKbps == "number" && (o.bandwidthEstKbps = e.bandwidthKbps), typeof e.levelHeight == "number" && (o.renditionHeight = e.levelHeight), typeof e.renditionBitrateKbps == "number" && (o.renditionBitrateKbps = e.renditionBitrateKbps), e.atLiveEdge === !0 && (o.atLiveEdge = !0), typeof e.bufferedMs == "number" && e.bufferedMs > 0 && (o.bufferedMs = Math.round(e.bufferedMs)), o.playerState = q[e.state] ?? "PLAYER_STATE_UNSPECIFIED";
|
|
1620
|
+
let d = this.mutedTotalMs;
|
|
1621
|
+
this.mutedSinceMs !== null && (d += t - this.mutedSinceMs), d > this.lastHbMutedMs && (o.mutedMsDelta = Math.round(d - this.lastHbMutedMs)), this.lastHbMutedMs = d;
|
|
1622
|
+
let f = e.upshifts ?? 0;
|
|
1623
|
+
f > this.lastUpshifts && (o.upshiftsDelta = f - this.lastUpshifts), this.lastUpshifts = f;
|
|
1624
|
+
let p = e.downshifts ?? 0;
|
|
1625
|
+
p > this.lastDownshifts && (o.downshiftsDelta = p - this.lastDownshifts), this.lastDownshifts = p;
|
|
1626
|
+
let m = e.decodedFrames ?? 0;
|
|
1627
|
+
m > this.lastDecoded && (o.decodedFramesDelta = m - this.lastDecoded), this.lastDecoded = m;
|
|
1628
|
+
let h = e.requestErrors ?? 0;
|
|
1629
|
+
h > this.lastRequestErrors && (o.requestErrorsDelta = h - this.lastRequestErrors), this.lastRequestErrors = h;
|
|
1630
|
+
let g = e.requestCount ?? 0, _ = g - this.lastRequestCount;
|
|
1631
|
+
if (this.lastRequestCount = g, _ > 0) {
|
|
1632
|
+
o.requestCountDelta = _;
|
|
1633
|
+
let t = e.requestTimesMs ?? [], n = t.slice(Math.max(0, t.length - _)).sort((e, t) => e - t);
|
|
1634
|
+
n.length > 0 && (o.requestTimeP50Ms = K(n, 50), o.requestTimeP95Ms = K(n, 95));
|
|
1632
1635
|
}
|
|
1633
|
-
typeof e.latencySeconds == "number" && typeof e.targetLatencySeconds == "number" && (
|
|
1636
|
+
typeof e.latencySeconds == "number" && typeof e.targetLatencySeconds == "number" && (o.driftMs = Math.round((e.latencySeconds - e.targetLatencySeconds) * 1e3)), typeof e.playbackRate == "number" && e.playbackRate > 0 && (o.playbackRate = e.playbackRate), e.qualityPinned === !0 && (o.qualityPinned = !0), e.cdnHost && (o.cdnHost = e.cdnHost), this.maybeEmitMediaInfo(e), this.enqueue({ heartbeat: o }), this.flush(), s > 0 && this.noteFirstBytes();
|
|
1634
1637
|
}
|
|
1635
1638
|
maybeEmitMediaInfo(e) {
|
|
1636
1639
|
if (!(e.videoCodec ?? e.keySystem ?? e.ladderHeights)) return;
|
|
@@ -1764,7 +1767,7 @@ async function mt() {
|
|
|
1764
1767
|
}
|
|
1765
1768
|
//#endregion
|
|
1766
1769
|
//#region src/core/version.ts
|
|
1767
|
-
var ht = "2.
|
|
1770
|
+
var ht = "2.5.0", J = {
|
|
1768
1771
|
accent: "#E1B600",
|
|
1769
1772
|
accentText: "#1B1C23",
|
|
1770
1773
|
background: "#0e0f13",
|
|
@@ -2234,7 +2237,7 @@ var Pt = class {
|
|
|
2234
2237
|
this.opts.muted && (this.opts.video.muted = !0), this.opts.poster && (this.opts.video.poster = this.opts.poster), this.mountControls(), this.attachPipListeners(), this.setState("loading");
|
|
2235
2238
|
let e = ++this.loadGen, t = this.resolveOptions();
|
|
2236
2239
|
try {
|
|
2237
|
-
let n = await
|
|
2240
|
+
let n = await v(t);
|
|
2238
2241
|
if (await this.onResolved(n, e), e === this.loadGen && this._state === "error" && this._lastError) {
|
|
2239
2242
|
let e = this._lastError;
|
|
2240
2243
|
throw this.destroy(), e;
|
|
@@ -2261,7 +2264,7 @@ var Pt = class {
|
|
|
2261
2264
|
r ? this.armWithSse(e, r, t, n) : this.beginArmingByPolling(e);
|
|
2262
2265
|
}
|
|
2263
2266
|
beginArmingByPolling(e) {
|
|
2264
|
-
|
|
2267
|
+
y({
|
|
2265
2268
|
...this.resolveOptions(),
|
|
2266
2269
|
signal: this.abort.signal,
|
|
2267
2270
|
waitForLive: this.buildWaitConfig(e)
|
|
@@ -2295,7 +2298,7 @@ var Pt = class {
|
|
|
2295
2298
|
}
|
|
2296
2299
|
}
|
|
2297
2300
|
}, h = () => {
|
|
2298
|
-
a || s || p() || (s = !0,
|
|
2301
|
+
a || s || p() || (s = !0, y({
|
|
2299
2302
|
...this.resolveOptions(),
|
|
2300
2303
|
signal: c.signal,
|
|
2301
2304
|
waitForLive: this.buildWaitConfig(e)
|
|
@@ -2303,7 +2306,7 @@ var Pt = class {
|
|
|
2303
2306
|
a || p() || c.signal.aborted || (a = !0, this.closeArming(), this.fail(e instanceof n ? e : new n("INTERNAL", 0, String(e))));
|
|
2304
2307
|
}));
|
|
2305
2308
|
}, g = () => {
|
|
2306
|
-
a || p() ||
|
|
2309
|
+
a || p() || v(this.resolveOptions()).then((e) => m(e)).catch((e) => {
|
|
2307
2310
|
if (!(a || p())) {
|
|
2308
2311
|
if (e instanceof n && o(e.code)) {
|
|
2309
2312
|
h();
|
|
@@ -2557,7 +2560,7 @@ var Pt = class {
|
|
|
2557
2560
|
async refreshLicense() {
|
|
2558
2561
|
let e = this.engine;
|
|
2559
2562
|
if (!this.destroyed && e) try {
|
|
2560
|
-
let t = await
|
|
2563
|
+
let t = await v(this.resolveOptions());
|
|
2561
2564
|
if (this.destroyed || this.engine !== e) return;
|
|
2562
2565
|
let n = t.drm?.widevine?.licenseUrl, r = t.drm?.fairplay?.licenseUrl;
|
|
2563
2566
|
(n || r) && (e.setLicenseUrls({
|
|
@@ -2642,7 +2645,7 @@ var Pt = class {
|
|
|
2642
2645
|
let e = ++this.loadGen;
|
|
2643
2646
|
this.teardownPlayback();
|
|
2644
2647
|
try {
|
|
2645
|
-
let t = await
|
|
2648
|
+
let t = await y({
|
|
2646
2649
|
...this.resolveOptions(),
|
|
2647
2650
|
waitForLive: this.opts.waitForLive ? this.buildWaitConfig(e) : void 0
|
|
2648
2651
|
});
|
|
@@ -2929,6 +2932,6 @@ function Bt() {
|
|
|
2929
2932
|
e.textContent = "html,body{margin:0;height:100%;background:#000;overflow:hidden}body{display:flex}", document.head.appendChild(e);
|
|
2930
2933
|
}
|
|
2931
2934
|
//#endregion
|
|
2932
|
-
export { J as ODDIN_THEME, n as PlaybackError, X as applyTheme, Rt as bootEmbed, ge as clearDeviceId, Nt as createPlayer, D as deriveEventsBaseUrl, De as detectDrmSupport, w as enterVideoFullscreen, T as exitVideoFullscreen, ue as fetchCatalog, fe as fetchTournament, me as flattenMatches, A as getDeviceId, ke as isLowLatencyManifest, $ as isOddinMessage, ve as licenseRequestHeaders, Ft as mountEmbed,
|
|
2935
|
+
export { J as ODDIN_THEME, n as PlaybackError, X as applyTheme, Rt as bootEmbed, ge as clearDeviceId, Nt as createPlayer, D as deriveEventsBaseUrl, De as detectDrmSupport, w as enterVideoFullscreen, T as exitVideoFullscreen, ue as fetchCatalog, fe as fetchTournament, me as flattenMatches, A as getDeviceId, ke as isLowLatencyManifest, $ as isOddinMessage, ve as licenseRequestHeaders, Ft as mountEmbed, oe as pollToLive, y as resolveStream, E as subscribeLiveState, C as videoFullscreenActive, he as watchStatus };
|
|
2933
2936
|
|
|
2934
2937
|
//# sourceMappingURL=index.js.map
|