Files
intc-iot-web/public/decoder-pro-simd.js
2025-04-24 17:33:21 +08:00

7411 lines
290 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
!(function (e, t) {
'object' == typeof exports && 'undefined' != typeof module
? t(require('path'), require('fs'), require('crypto'))
: 'function' == typeof define && define.amd
? define(['path', 'fs', 'crypto'], t)
: t((e = 'undefined' != typeof globalThis ? globalThis : e || self).path, e.fs, e.crypto$1)
})(this, function (e, m, g) {
'use strict'
function t(e) {
return e && 'object' == typeof e && 'default' in e ? e : { default: e }
}
var Tt = t(e),
Bt = t(m),
At = t(g)
function y(e, t) {
return e((t = { exports: {} }), t.exports), t.exports
}
var _ = y(function (I) {
var g
;(g = void 0 !== (g = void 0 !== g ? g : {}) ? g : {}).locateFile = function (e) {
return 'decoder-pro-simd.wasm' == e &&
'undefined' != typeof JESSIBUCA_PRO_SIMD_WASM_URL &&
'' != JESSIBUCA_PRO_SIMD_WASM_URL
? JESSIBUCA_PRO_SIMD_WASM_URL
: e
}
var t,
m,
M,
$,
N,
O,
a,
G = Object.assign({}, g),
V = './this.program',
z = 'object' == typeof window,
d = 'function' == typeof importScripts,
j =
'object' == typeof process &&
'object' == typeof process.versions &&
'string' == typeof process.versions.node,
e = '',
W =
(j
? ((e = d ? Tt.default.dirname(e) + '/' : __dirname + '/'),
(O = () => {
N || (($ = Bt.default), (N = Tt.default))
}),
(t = function (e, t) {
return O(), (e = N.normalize(e)), $.readFileSync(e, t ? void 0 : 'utf8')
}),
(M = e => {
e = t(e, !0)
return (e = e.buffer ? e : new Uint8Array(e))
}),
(m = (e, r, n) => {
O(),
(e = N.normalize(e)),
$.readFile(e, function (e, t) {
e ? n(e) : r(t.buffer)
})
}),
1 < process.argv.length && (V = process.argv[1].replace(/\\/g, '/')),
process.argv.slice(2),
(I.exports = g),
process.on('uncaughtException', function (e) {
if (
!(
e instanceof
function (e) {
;(this.name = 'ExitStatus'),
(this.message = 'Program terminated with exit(' + e + ')'),
(this.status = e)
}
)
)
throw e
}),
process.on('unhandledRejection', function (e) {
throw e
}),
(g.inspect = function () {
return '[Emscripten Module object]'
}))
: (z || d) &&
(d
? (e = self.location.href)
: 'undefined' != typeof document &&
document.currentScript &&
(e = document.currentScript.src),
(e =
0 !== e.indexOf('blob:')
? e.substr(0, e.replace(/[?#].*/, '').lastIndexOf('/') + 1)
: ''),
(t = e => {
var t = new XMLHttpRequest()
return t.open('GET', e, !1), t.send(null), t.responseText
}),
d &&
(M = e => {
var t = new XMLHttpRequest()
return (
t.open('GET', e, !1),
(t.responseType = 'arraybuffer'),
t.send(null),
new Uint8Array(t.response)
)
}),
(m = (e, t, r) => {
var n = new XMLHttpRequest()
n.open('GET', e, !0),
(n.responseType = 'arraybuffer'),
(n.onload = () => {
200 == n.status || (0 == n.status && n.response) ? t(n.response) : r()
}),
(n.onerror = r),
n.send(null)
})),
g.print || console.log.bind(console)),
s = g.printErr || console.warn.bind(console),
H =
(Object.assign(g, G),
g.arguments && g.arguments,
g.thisProgram && (V = g.thisProgram),
g.quit && g.quit,
g.wasmBinary && (a = g.wasmBinary),
g.noExitRuntime,
'object' != typeof WebAssembly && w('no native wasm support detected'),
!1)
function q(e, t) {
e || w(t)
}
var X,
c,
f,
l,
K,
u,
p,
Y,
J,
Z,
Q = 'undefined' != typeof TextDecoder ? new TextDecoder('utf8') : void 0
function i(e, t, r) {
for (var n = t + r, o = t; e[o] && !(n <= o); ) ++o
if (16 < o - t && e.buffer && Q) return Q.decode(e.subarray(t, o))
for (var a = ''; t < o; ) {
var i,
s,
l = e[t++]
128 & l
? ((i = 63 & e[t++]),
192 != (224 & l)
? ((s = 63 & e[t++]),
(l =
224 == (240 & l)
? ((15 & l) << 12) | (i << 6) | s
: ((7 & l) << 18) | (i << 12) | (s << 6) | (63 & e[t++])) < 65536
? (a += String.fromCharCode(l))
: ((s = l - 65536),
(a += String.fromCharCode(55296 | (s >> 10), 56320 | (1023 & s)))))
: (a += String.fromCharCode(((31 & l) << 6) | i)))
: (a += String.fromCharCode(l))
}
return a
}
function ee(e, t) {
return e ? i(f, e, t) : ''
}
function te(e, t, r, n) {
if (!(0 < n)) return 0
for (var o = r, a = r + n - 1, i = 0; i < e.length; ++i) {
var s = e.charCodeAt(i)
if (
(s =
55296 <= s && s <= 57343
? (65536 + ((1023 & s) << 10)) | (1023 & e.charCodeAt(++i))
: s) <= 127
) {
if (a <= r) break
t[r++] = s
} else if (s <= 2047) {
if (a <= r + 1) break
;(t[r++] = 192 | (s >> 6)), (t[r++] = 128 | (63 & s))
} else if (s <= 65535) {
if (a <= r + 2) break
;(t[r++] = 224 | (s >> 12)), (t[r++] = 128 | ((s >> 6) & 63)), (t[r++] = 128 | (63 & s))
} else {
if (a <= r + 3) break
;(t[r++] = 240 | (s >> 18)),
(t[r++] = 128 | ((s >> 12) & 63)),
(t[r++] = 128 | ((s >> 6) & 63)),
(t[r++] = 128 | (63 & s))
}
}
return (t[r] = 0), r - o
}
function re(e) {
for (var t = 0, r = 0; r < e.length; ++r) {
var n = e.charCodeAt(r)
n <= 127
? t++
: n <= 2047
? (t += 2)
: 55296 <= n && n <= 57343
? ((t += 4), ++r)
: (t += 3)
}
return t
}
g.INITIAL_MEMORY
var h,
y,
_,
ne = [],
oe = [],
ae = [],
r = 0,
n = null
function ie() {
r++, g.monitorRunDependencies && g.monitorRunDependencies(r)
}
function se() {
var e
r--,
g.monitorRunDependencies && g.monitorRunDependencies(r),
0 == r && n && ((e = n), (n = null), e())
}
function w(e) {
throw (
(g.onAbort && g.onAbort(e),
s((e = 'Aborted(' + e + ')')),
(H = !0),
(e += '. Build with -sASSERTIONS for more info.'),
new WebAssembly.RuntimeError(e))
)
}
function le(e) {
return e.startsWith('data:application/octet-stream;base64,')
}
function ue(e) {
return e.startsWith('file://')
}
function de(e) {
try {
if (e == h && a) return new Uint8Array(a)
if (M) return M(e)
throw 'both async and sync fetching of the wasm failed'
} catch (e) {
w(e)
}
}
function ce(e) {
for (; 0 < e.length; ) e.shift()(g)
}
function fe(e) {
;(this.excPtr = e),
(this.ptr = e - 24),
(this.set_type = function (e) {
p[(this.ptr + 4) >> 2] = e
}),
(this.get_type = function () {
return p[(this.ptr + 4) >> 2]
}),
(this.set_destructor = function (e) {
p[(this.ptr + 8) >> 2] = e
}),
(this.get_destructor = function () {
return p[(this.ptr + 8) >> 2]
}),
(this.set_refcount = function (e) {
u[this.ptr >> 2] = e
}),
(this.set_caught = function (e) {
c[(this.ptr + 12) >> 0] = e = e ? 1 : 0
}),
(this.get_caught = function () {
return 0 != c[(this.ptr + 12) >> 0]
}),
(this.set_rethrown = function (e) {
c[(this.ptr + 13) >> 0] = e = e ? 1 : 0
}),
(this.get_rethrown = function () {
return 0 != c[(this.ptr + 13) >> 0]
}),
(this.init = function (e, t) {
this.set_adjusted_ptr(0),
this.set_type(e),
this.set_destructor(t),
this.set_refcount(0),
this.set_caught(!1),
this.set_rethrown(!1)
}),
(this.add_ref = function () {
var e = u[this.ptr >> 2]
u[this.ptr >> 2] = e + 1
}),
(this.release_ref = function () {
var e = u[this.ptr >> 2]
return (u[this.ptr >> 2] = e - 1), 1 === e
}),
(this.set_adjusted_ptr = function (e) {
p[(this.ptr + 16) >> 2] = e
}),
(this.get_adjusted_ptr = function () {
return p[(this.ptr + 16) >> 2]
}),
(this.get_exception_ptr = function () {
if (Et(this.get_type())) return p[this.excPtr >> 2]
var e = this.get_adjusted_ptr()
return 0 !== e ? e : this.excPtr
})
}
le((h = 'decoder-pro-simd.wasm')) ||
((G = h), (h = g.locateFile ? g.locateFile(G, e) : e + G))
var v = {
isAbs: e => '/' === e.charAt(0),
splitPath: e =>
/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),
normalizeArray: (e, t) => {
for (var r = 0, n = e.length - 1; 0 <= n; n--) {
var o = e[n]
'.' === o
? e.splice(n, 1)
: '..' === o
? (e.splice(n, 1), r++)
: r && (e.splice(n, 1), r--)
}
if (t) for (; r; r--) e.unshift('..')
return e
},
normalize: e => {
var t = v.isAbs(e),
r = '/' === e.substr(-1)
return (
(e =
(e = v
.normalizeArray(
e.split('/').filter(e => !!e),
!t,
)
.join('/')) || t
? e
: '.') &&
r &&
(e += '/'),
(t ? '/' : '') + e
)
},
dirname: e => {
var e = v.splitPath(e),
t = e[0],
e = e[1]
return t || e ? t + (e = e && e.substr(0, e.length - 1)) : '.'
},
basename: e => {
if ('/' === e) return '/'
var t = (e = (e = v.normalize(e)).replace(/\/$/, '')).lastIndexOf('/')
return -1 === t ? e : e.substr(t + 1)
},
join: function () {
var e = Array.prototype.slice.call(arguments, 0)
return v.normalize(e.join('/'))
},
join2: (e, t) => v.normalize(e + '/' + t),
},
b = {
resolve: function () {
for (var e = '', t = !1, r = arguments.length - 1; -1 <= r && !t; r--) {
var n = 0 <= r ? arguments[r] : k.cwd()
if ('string' != typeof n)
throw new TypeError('Arguments to path.resolve must be strings')
if (!n) return ''
;(e = n + '/' + e), (t = v.isAbs(n))
}
return (
(t ? '/' : '') +
v
.normalizeArray(
e.split('/').filter(e => !!e),
!t,
)
.join('/') || '.'
)
},
relative: (e, t) => {
function r(e) {
for (var t = 0; t < e.length && '' === e[t]; t++);
for (var r = e.length - 1; 0 <= r && '' === e[r]; r--);
return r < t ? [] : e.slice(t, r - t + 1)
}
;(e = b.resolve(e).substr(1)), (t = b.resolve(t).substr(1))
for (
var n = r(e.split('/')),
o = r(t.split('/')),
a = Math.min(n.length, o.length),
i = a,
s = 0;
s < a;
s++
)
if (n[s] !== o[s]) {
i = s
break
}
for (var l = [], s = i; s < n.length; s++) l.push('..')
return (l = l.concat(o.slice(i))).join('/')
},
}
function pe(e, t, r) {
;(r = 0 < r ? r : re(e) + 1), (r = new Array(r)), (e = te(e, r, 0, r.length))
return t && (r.length = e), r
}
var o = {
ttys: [],
init: function () {},
shutdown: function () {},
register: function (e, t) {
;(o.ttys[e] = { input: [], output: [], ops: t }), k.registerDevice(e, o.stream_ops)
},
stream_ops: {
open: function (e) {
var t = o.ttys[e.node.rdev]
if (!t) throw new k.ErrnoError(43)
;(e.tty = t), (e.seekable = !1)
},
close: function (e) {
e.tty.ops.flush(e.tty)
},
flush: function (e) {
e.tty.ops.flush(e.tty)
},
read: function (e, t, r, n, o) {
if (!e.tty || !e.tty.ops.get_char) throw new k.ErrnoError(60)
for (var a, i = 0, s = 0; s < n; s++) {
try {
a = e.tty.ops.get_char(e.tty)
} catch (e) {
throw new k.ErrnoError(29)
}
if (void 0 === a && 0 === i) throw new k.ErrnoError(6)
if (null == a) break
i++, (t[r + s] = a)
}
return i && (e.node.timestamp = Date.now()), i
},
write: function (e, t, r, n, o) {
if (!e.tty || !e.tty.ops.put_char) throw new k.ErrnoError(60)
try {
for (var a = 0; a < n; a++) e.tty.ops.put_char(e.tty, t[r + a])
} catch (e) {
throw new k.ErrnoError(29)
}
return n && (e.node.timestamp = Date.now()), a
},
},
default_tty_ops: {
get_char: function (e) {
if (!e.input.length) {
var t = null
if (j) {
var r = Buffer.alloc(256),
n = 0
try {
n = $.readSync(process.stdin.fd, r, 0, 256, -1)
} catch (e) {
if (!e.toString().includes('EOF')) throw e
n = 0
}
t = 0 < n ? r.slice(0, n).toString('utf-8') : null
} else
'undefined' != typeof window && 'function' == typeof window.prompt
? null !== (t = window.prompt('Input: ')) && (t += '\n')
: 'function' == typeof readline && null !== (t = readline()) && (t += '\n')
if (!t) return null
e.input = pe(t, !0)
}
return e.input.shift()
},
put_char: function (e, t) {
null === t || 10 === t
? (W(i(e.output, 0)), (e.output = []))
: 0 != t && e.output.push(t)
},
flush: function (e) {
e.output && 0 < e.output.length && (W(i(e.output, 0)), (e.output = []))
},
},
default_tty1_ops: {
put_char: function (e, t) {
null === t || 10 === t
? (s(i(e.output, 0)), (e.output = []))
: 0 != t && e.output.push(t)
},
flush: function (e) {
e.output && 0 < e.output.length && (s(i(e.output, 0)), (e.output = []))
},
},
}
function he(e) {
;(t = e), (e = 65536 * Math.ceil(t / 65536))
var t = bt(65536, e)
return t ? ((e = e), f.fill(0, t, t + e), t) : 0
}
var E = {
ops_table: null,
mount: function (e) {
return E.createNode(null, '/', 16895, 0)
},
createNode: function (e, t, r, n) {
if (k.isBlkdev(r) || k.isFIFO(r)) throw new k.ErrnoError(63)
E.ops_table ||
(E.ops_table = {
dir: {
node: {
getattr: E.node_ops.getattr,
setattr: E.node_ops.setattr,
lookup: E.node_ops.lookup,
mknod: E.node_ops.mknod,
rename: E.node_ops.rename,
unlink: E.node_ops.unlink,
rmdir: E.node_ops.rmdir,
readdir: E.node_ops.readdir,
symlink: E.node_ops.symlink,
},
stream: { llseek: E.stream_ops.llseek },
},
file: {
node: { getattr: E.node_ops.getattr, setattr: E.node_ops.setattr },
stream: {
llseek: E.stream_ops.llseek,
read: E.stream_ops.read,
write: E.stream_ops.write,
allocate: E.stream_ops.allocate,
mmap: E.stream_ops.mmap,
msync: E.stream_ops.msync,
},
},
link: {
node: {
getattr: E.node_ops.getattr,
setattr: E.node_ops.setattr,
readlink: E.node_ops.readlink,
},
stream: {},
},
chrdev: {
node: { getattr: E.node_ops.getattr, setattr: E.node_ops.setattr },
stream: k.chrdev_stream_ops,
},
})
r = k.createNode(e, t, r, n)
return (
k.isDir(r.mode)
? ((r.node_ops = E.ops_table.dir.node),
(r.stream_ops = E.ops_table.dir.stream),
(r.contents = {}))
: k.isFile(r.mode)
? ((r.node_ops = E.ops_table.file.node),
(r.stream_ops = E.ops_table.file.stream),
(r.usedBytes = 0),
(r.contents = null))
: k.isLink(r.mode)
? ((r.node_ops = E.ops_table.link.node), (r.stream_ops = E.ops_table.link.stream))
: k.isChrdev(r.mode) &&
((r.node_ops = E.ops_table.chrdev.node),
(r.stream_ops = E.ops_table.chrdev.stream)),
(r.timestamp = Date.now()),
e && ((e.contents[t] = r), (e.timestamp = r.timestamp)),
r
)
},
getFileDataAsTypedArray: function (e) {
return e.contents
? e.contents.subarray
? e.contents.subarray(0, e.usedBytes)
: new Uint8Array(e.contents)
: new Uint8Array(0)
},
expandFileStorage: function (e, t) {
var r = e.contents ? e.contents.length : 0
t <= r ||
((t = Math.max(t, (r * (r < 1048576 ? 2 : 1.125)) >>> 0)),
0 != r && (t = Math.max(t, 256)),
(r = e.contents),
(e.contents = new Uint8Array(t)),
0 < e.usedBytes && e.contents.set(r.subarray(0, e.usedBytes), 0))
},
resizeFileStorage: function (e, t) {
var r
e.usedBytes != t &&
(0 == t
? ((e.contents = null), (e.usedBytes = 0))
: ((r = e.contents),
(e.contents = new Uint8Array(t)),
r && e.contents.set(r.subarray(0, Math.min(t, e.usedBytes))),
(e.usedBytes = t)))
},
node_ops: {
getattr: function (e) {
var t = {}
return (
(t.dev = k.isChrdev(e.mode) ? e.id : 1),
(t.ino = e.id),
(t.mode = e.mode),
(t.nlink = 1),
(t.uid = 0),
(t.gid = 0),
(t.rdev = e.rdev),
k.isDir(e.mode)
? (t.size = 4096)
: k.isFile(e.mode)
? (t.size = e.usedBytes)
: k.isLink(e.mode)
? (t.size = e.link.length)
: (t.size = 0),
(t.atime = new Date(e.timestamp)),
(t.mtime = new Date(e.timestamp)),
(t.ctime = new Date(e.timestamp)),
(t.blksize = 4096),
(t.blocks = Math.ceil(t.size / t.blksize)),
t
)
},
setattr: function (e, t) {
void 0 !== t.mode && (e.mode = t.mode),
void 0 !== t.timestamp && (e.timestamp = t.timestamp),
void 0 !== t.size && E.resizeFileStorage(e, t.size)
},
lookup: function (e, t) {
throw k.genericErrors[44]
},
mknod: function (e, t, r, n) {
return E.createNode(e, t, r, n)
},
rename: function (e, t, r) {
if (k.isDir(e.mode)) {
var n
try {
n = k.lookupNode(t, r)
} catch (e) {}
if (n) for (var o in n.contents) throw new k.ErrnoError(55)
}
delete e.parent.contents[e.name],
(e.parent.timestamp = Date.now()),
(e.name = r),
(t.contents[r] = e),
(t.timestamp = e.parent.timestamp),
(e.parent = t)
},
unlink: function (e, t) {
delete e.contents[t], (e.timestamp = Date.now())
},
rmdir: function (e, t) {
for (var r in k.lookupNode(e, t).contents) throw new k.ErrnoError(55)
delete e.contents[t], (e.timestamp = Date.now())
},
readdir: function (e) {
var t,
r = ['.', '..']
for (t in e.contents) e.contents.hasOwnProperty(t) && r.push(t)
return r
},
symlink: function (e, t, r) {
e = E.createNode(e, t, 41471, 0)
return (e.link = r), e
},
readlink: function (e) {
if (k.isLink(e.mode)) return e.link
throw new k.ErrnoError(28)
},
},
stream_ops: {
read: function (e, t, r, n, o) {
var a = e.node.contents
if (o >= e.node.usedBytes) return 0
var i = Math.min(e.node.usedBytes - o, n)
if (8 < i && a.subarray) t.set(a.subarray(o, o + i), r)
else for (var s = 0; s < i; s++) t[r + s] = a[o + s]
return i
},
write: function (e, t, r, n, o, a) {
if (!n) return 0
var i = e.node
if (
((i.timestamp = Date.now()), t.subarray && (!i.contents || i.contents.subarray))
) {
if (a) return (i.contents = t.subarray(r, r + n)), (i.usedBytes = n)
if (0 === i.usedBytes && 0 === o)
return (i.contents = t.slice(r, r + n)), (i.usedBytes = n)
if (o + n <= i.usedBytes) return i.contents.set(t.subarray(r, r + n), o), n
}
if ((E.expandFileStorage(i, o + n), i.contents.subarray && t.subarray))
i.contents.set(t.subarray(r, r + n), o)
else for (var s = 0; s < n; s++) i.contents[o + s] = t[r + s]
return (i.usedBytes = Math.max(i.usedBytes, o + n)), n
},
llseek: function (e, t, r) {
if (
(1 === r
? (t += e.position)
: 2 === r && k.isFile(e.node.mode) && (t += e.node.usedBytes),
t < 0)
)
throw new k.ErrnoError(28)
return t
},
allocate: function (e, t, r) {
E.expandFileStorage(e.node, t + r),
(e.node.usedBytes = Math.max(e.node.usedBytes, t + r))
},
mmap: function (e, t, r, n, o) {
if (!k.isFile(e.node.mode)) throw new k.ErrnoError(43)
var a,
i,
e = e.node.contents
if (2 & o || e.buffer !== X) {
if (
((0 < r || r + t < e.length) &&
(e = e.subarray
? e.subarray(r, r + t)
: Array.prototype.slice.call(e, r, r + t)),
(i = !0),
!(a = he(t)))
)
throw new k.ErrnoError(48)
c.set(e, a)
} else (i = !1), (a = e.byteOffset)
return { ptr: a, allocated: i }
},
msync: function (e, t, r, n, o) {
if (k.isFile(e.node.mode)) return 2 & o || E.stream_ops.write(e, t, 0, n, r, !1), 0
throw new k.ErrnoError(43)
},
},
},
k = {
root: null,
mounts: [],
devices: {},
streams: [],
nextInode: 1,
nameTable: null,
currentPath: '/',
initialized: !1,
ignorePermissions: !0,
ErrnoError: null,
genericErrors: {},
filesystems: null,
syncFSRequests: 0,
lookupPath: function (e) {
var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}
if (!(e = b.resolve(k.cwd(), e))) return { path: '', node: null }
if (8 < (t = Object.assign({ follow_mount: !0, recurse_count: 0 }, t)).recurse_count)
throw new k.ErrnoError(32)
for (
var r = v.normalizeArray(
e.split('/').filter(e => !!e),
!1,
),
n = k.root,
o = '/',
a = 0;
a < r.length;
a++
) {
var i = a === r.length - 1
if (i && t.parent) break
if (
((n = k.lookupNode(n, r[a])),
(o = v.join2(o, r[a])),
!k.isMountpoint(n) || (i && !t.follow_mount) || (n = n.mounted.root),
!i || t.follow)
)
for (var s = 0; k.isLink(n.mode); ) {
var l = k.readlink(o),
o = b.resolve(v.dirname(o), l),
n = k.lookupPath(o, { recurse_count: t.recurse_count + 1 }).node
if (40 < s++) throw new k.ErrnoError(32)
}
}
return { path: o, node: n }
},
getPath: e => {
for (var t, r; ; ) {
if (k.isRoot(e))
return (
(r = e.mount.mountpoint), t ? ('/' !== r[r.length - 1] ? r + '/' + t : r + t) : r
)
;(t = t ? e.name + '/' + t : e.name), (e = e.parent)
}
},
hashName: (e, t) => {
for (var r = 0, n = 0; n < t.length; n++) r = ((r << 5) - r + t.charCodeAt(n)) | 0
return ((e + r) >>> 0) % k.nameTable.length
},
hashAddNode: e => {
var t = k.hashName(e.parent.id, e.name)
;(e.name_next = k.nameTable[t]), (k.nameTable[t] = e)
},
hashRemoveNode: e => {
var t = k.hashName(e.parent.id, e.name)
if (k.nameTable[t] === e) k.nameTable[t] = e.name_next
else
for (var r = k.nameTable[t]; r; ) {
if (r.name_next === e) {
r.name_next = e.name_next
break
}
r = r.name_next
}
},
lookupNode: (e, t) => {
var r = k.mayLookup(e)
if (r) throw new k.ErrnoError(r, e)
for (var r = k.hashName(e.id, t), n = k.nameTable[r]; n; n = n.name_next) {
var o = n.name
if (n.parent.id === e.id && o === t) return n
}
return k.lookup(e, t)
},
createNode: (e, t, r, n) => {
e = new k.FSNode(e, t, r, n)
return k.hashAddNode(e), e
},
destroyNode: e => {
k.hashRemoveNode(e)
},
isRoot: e => e === e.parent,
isMountpoint: e => !!e.mounted,
isFile: e => 32768 == (61440 & e),
isDir: e => 16384 == (61440 & e),
isLink: e => 40960 == (61440 & e),
isChrdev: e => 8192 == (61440 & e),
isBlkdev: e => 24576 == (61440 & e),
isFIFO: e => 4096 == (61440 & e),
isSocket: e => 49152 == (49152 & e),
flagModes: { r: 0, 'r+': 2, w: 577, 'w+': 578, a: 1089, 'a+': 1090 },
modeStringToFlags: e => {
var t = k.flagModes[e]
if (void 0 === t) throw new Error('Unknown file open mode: ' + e)
return t
},
flagsToPermissionString: e => {
var t = ['r', 'w', 'rw'][3 & e]
return 512 & e && (t += 'w'), t
},
nodePermissions: (e, t) =>
k.ignorePermissions ||
((!t.includes('r') || 292 & e.mode) &&
(!t.includes('w') || 146 & e.mode) &&
(!t.includes('x') || 73 & e.mode))
? 0
: 2,
mayLookup: e => {
return k.nodePermissions(e, 'x') || (e.node_ops.lookup ? 0 : 2)
},
mayCreate: (e, t) => {
try {
return k.lookupNode(e, t), 20
} catch (e) {}
return k.nodePermissions(e, 'wx')
},
mayDelete: (e, t, r) => {
var n
try {
n = k.lookupNode(e, t)
} catch (e) {
return e.errno
}
t = k.nodePermissions(e, 'wx')
if (t) return t
if (r) {
if (!k.isDir(n.mode)) return 54
if (k.isRoot(n) || k.getPath(n) === k.cwd()) return 10
} else if (k.isDir(n.mode)) return 31
return 0
},
mayOpen: (e, t) =>
e
? k.isLink(e.mode)
? 32
: k.isDir(e.mode) && ('r' !== k.flagsToPermissionString(t) || 512 & t)
? 31
: k.nodePermissions(e, k.flagsToPermissionString(t))
: 44,
MAX_OPEN_FDS: 4096,
nextfd: function () {
for (
var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 0,
t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : k.MAX_OPEN_FDS,
r = e;
r <= t;
r++
)
if (!k.streams[r]) return r
throw new k.ErrnoError(33)
},
getStream: e => k.streams[e],
createStream: (e, t, r) => {
k.FSStream ||
((k.FSStream = function () {
this.shared = {}
}),
(k.FSStream.prototype = {}),
Object.defineProperties(k.FSStream.prototype, {
object: {
get: function () {
return this.node
},
set: function (e) {
this.node = e
},
},
isRead: {
get: function () {
return 1 != (2097155 & this.flags)
},
},
isWrite: {
get: function () {
return 0 != (2097155 & this.flags)
},
},
isAppend: {
get: function () {
return 1024 & this.flags
},
},
flags: {
get: function () {
return this.shared.flags
},
set: function (e) {
this.shared.flags = e
},
},
position: {
get: function () {
return this.shared.position
},
set: function (e) {
this.shared.position = e
},
},
})),
(e = Object.assign(new k.FSStream(), e))
t = k.nextfd(t, r)
return (e.fd = t), (k.streams[t] = e)
},
closeStream: e => {
k.streams[e] = null
},
chrdev_stream_ops: {
open: e => {
var t = k.getDevice(e.node.rdev)
;(e.stream_ops = t.stream_ops), e.stream_ops.open && e.stream_ops.open(e)
},
llseek: () => {
throw new k.ErrnoError(70)
},
},
major: e => e >> 8,
minor: e => 255 & e,
makedev: (e, t) => (e << 8) | t,
registerDevice: (e, t) => {
k.devices[e] = { stream_ops: t }
},
getDevice: e => k.devices[e],
getMounts: e => {
for (var t = [], r = [e]; r.length; ) {
var n = r.pop()
t.push(n), r.push.apply(r, n.mounts)
}
return t
},
syncfs: (t, r) => {
'function' == typeof t && ((r = t), (t = !1)),
k.syncFSRequests++,
1 < k.syncFSRequests &&
s(
'warning: ' +
k.syncFSRequests +
' FS.syncfs operations in flight at once, probably just doing extra work',
)
var n = k.getMounts(k.root.mount),
o = 0
function a(e) {
return k.syncFSRequests--, r(e)
}
function i(e) {
if (e) return i.errored ? void 0 : ((i.errored = !0), a(e))
++o >= n.length && a(null)
}
n.forEach(e => {
if (!e.type.syncfs) return i(null)
e.type.syncfs(e, t, i)
})
},
mount: (e, t, r) => {
var n,
o = '/' === r,
a = !r
if (o && k.root) throw new k.ErrnoError(10)
if (!o && !a) {
a = k.lookupPath(r, { follow_mount: !1 })
if (((r = a.path), (n = a.node), k.isMountpoint(n))) throw new k.ErrnoError(10)
if (!k.isDir(n.mode)) throw new k.ErrnoError(54)
}
;(a = { type: e, opts: t, mountpoint: r, mounts: [] }), (t = e.mount(a))
return (
((t.mount = a).root = t),
o ? (k.root = t) : n && ((n.mounted = a), n.mount && n.mount.mounts.push(a)),
t
)
},
unmount: e => {
e = k.lookupPath(e, { follow_mount: !1 })
if (!k.isMountpoint(e.node)) throw new k.ErrnoError(28)
var e = e.node,
t = e.mounted,
n = k.getMounts(t),
t =
(Object.keys(k.nameTable).forEach(e => {
for (var t = k.nameTable[e]; t; ) {
var r = t.name_next
n.includes(t.mount) && k.destroyNode(t), (t = r)
}
}),
(e.mounted = null),
e.mount.mounts.indexOf(t))
e.mount.mounts.splice(t, 1)
},
lookup: (e, t) => e.node_ops.lookup(e, t),
mknod: (e, t, r) => {
var n = k.lookupPath(e, { parent: !0 }).node,
e = v.basename(e)
if (!e || '.' === e || '..' === e) throw new k.ErrnoError(28)
var o = k.mayCreate(n, e)
if (o) throw new k.ErrnoError(o)
if (n.node_ops.mknod) return n.node_ops.mknod(n, e, t, r)
throw new k.ErrnoError(63)
},
create: (e, t) => k.mknod(e, (t = ((t = void 0 !== t ? t : 438) & 4095) | 32768), 0),
mkdir: (e, t) => k.mknod(e, (t = ((t = void 0 !== t ? t : 511) & 1023) | 16384), 0),
mkdirTree: (e, t) => {
for (var r = e.split('/'), n = '', o = 0; o < r.length; ++o)
if (r[o]) {
n += '/' + r[o]
try {
k.mkdir(n, t)
} catch (e) {
if (20 != e.errno) throw e
}
}
},
mkdev: (e, t, r) => (void 0 === r && ((r = t), (t = 438)), k.mknod(e, (t |= 8192), r)),
symlink: (e, t) => {
if (!b.resolve(e)) throw new k.ErrnoError(44)
var r = k.lookupPath(t, { parent: !0 }).node
if (!r) throw new k.ErrnoError(44)
var t = v.basename(t),
n = k.mayCreate(r, t)
if (n) throw new k.ErrnoError(n)
if (r.node_ops.symlink) return r.node_ops.symlink(r, t, e)
throw new k.ErrnoError(63)
},
rename: (e, t) => {
var r = v.dirname(e),
n = v.dirname(t),
o = v.basename(e),
a = v.basename(t),
i = k.lookupPath(e, { parent: !0 }).node,
s = k.lookupPath(t, { parent: !0 }).node
if (!i || !s) throw new k.ErrnoError(44)
if (i.mount !== s.mount) throw new k.ErrnoError(75)
var l,
u = k.lookupNode(i, o)
if ('.' !== b.relative(e, n).charAt(0)) throw new k.ErrnoError(28)
if ('.' !== b.relative(t, r).charAt(0)) throw new k.ErrnoError(55)
try {
l = k.lookupNode(s, a)
} catch (e) {}
if (u !== l) {
;(n = k.isDir(u.mode)), (t = k.mayDelete(i, o, n))
if (t) throw new k.ErrnoError(t)
if ((t = l ? k.mayDelete(s, a, n) : k.mayCreate(s, a))) throw new k.ErrnoError(t)
if (!i.node_ops.rename) throw new k.ErrnoError(63)
if (k.isMountpoint(u) || (l && k.isMountpoint(l))) throw new k.ErrnoError(10)
if (s !== i && (t = k.nodePermissions(i, 'w'))) throw new k.ErrnoError(t)
k.hashRemoveNode(u)
try {
i.node_ops.rename(u, s, a)
} catch (e) {
throw e
} finally {
k.hashAddNode(u)
}
}
},
rmdir: e => {
var t = k.lookupPath(e, { parent: !0 }).node,
e = v.basename(e),
r = k.lookupNode(t, e),
n = k.mayDelete(t, e, !0)
if (n) throw new k.ErrnoError(n)
if (!t.node_ops.rmdir) throw new k.ErrnoError(63)
if (k.isMountpoint(r)) throw new k.ErrnoError(10)
t.node_ops.rmdir(t, e), k.destroyNode(r)
},
readdir: e => {
e = k.lookupPath(e, { follow: !0 }).node
if (e.node_ops.readdir) return e.node_ops.readdir(e)
throw new k.ErrnoError(54)
},
unlink: e => {
var t = k.lookupPath(e, { parent: !0 }).node
if (!t) throw new k.ErrnoError(44)
var e = v.basename(e),
r = k.lookupNode(t, e),
n = k.mayDelete(t, e, !1)
if (n) throw new k.ErrnoError(n)
if (!t.node_ops.unlink) throw new k.ErrnoError(63)
if (k.isMountpoint(r)) throw new k.ErrnoError(10)
t.node_ops.unlink(t, e), k.destroyNode(r)
},
readlink: e => {
e = k.lookupPath(e).node
if (!e) throw new k.ErrnoError(44)
if (e.node_ops.readlink) return b.resolve(k.getPath(e.parent), e.node_ops.readlink(e))
throw new k.ErrnoError(28)
},
stat: (e, t) => {
e = k.lookupPath(e, { follow: !t }).node
if (!e) throw new k.ErrnoError(44)
if (e.node_ops.getattr) return e.node_ops.getattr(e)
throw new k.ErrnoError(63)
},
lstat: e => k.stat(e, !0),
chmod: (e, t, r) => {
r = 'string' == typeof e ? k.lookupPath(e, { follow: !r }).node : e
if (!r.node_ops.setattr) throw new k.ErrnoError(63)
r.node_ops.setattr(r, { mode: (4095 & t) | (-4096 & r.mode), timestamp: Date.now() })
},
lchmod: (e, t) => {
k.chmod(e, t, !0)
},
fchmod: (e, t) => {
e = k.getStream(e)
if (!e) throw new k.ErrnoError(8)
k.chmod(e.node, t)
},
chown: (e, t, r, n) => {
n = 'string' == typeof e ? k.lookupPath(e, { follow: !n }).node : e
if (!n.node_ops.setattr) throw new k.ErrnoError(63)
n.node_ops.setattr(n, { timestamp: Date.now() })
},
lchown: (e, t, r) => {
k.chown(e, t, r, !0)
},
fchown: (e, t, r) => {
e = k.getStream(e)
if (!e) throw new k.ErrnoError(8)
k.chown(e.node, t, r)
},
truncate: (e, t) => {
if (t < 0) throw new k.ErrnoError(28)
e = 'string' == typeof e ? k.lookupPath(e, { follow: !0 }).node : e
if (!e.node_ops.setattr) throw new k.ErrnoError(63)
if (k.isDir(e.mode)) throw new k.ErrnoError(31)
if (!k.isFile(e.mode)) throw new k.ErrnoError(28)
var r = k.nodePermissions(e, 'w')
if (r) throw new k.ErrnoError(r)
e.node_ops.setattr(e, { size: t, timestamp: Date.now() })
},
ftruncate: (e, t) => {
e = k.getStream(e)
if (!e) throw new k.ErrnoError(8)
if (0 == (2097155 & e.flags)) throw new k.ErrnoError(28)
k.truncate(e.node, t)
},
utime: (e, t, r) => {
e = k.lookupPath(e, { follow: !0 }).node
e.node_ops.setattr(e, { timestamp: Math.max(t, r) })
},
open: (e, t, r) => {
if ('' === e) throw new k.ErrnoError(44)
var n
if (
((r = void 0 === r ? 438 : r),
(r =
64 & (t = 'string' == typeof t ? k.modeStringToFlags(t) : t)
? (4095 & r) | 32768
: 0),
'object' == typeof e)
)
n = e
else {
e = v.normalize(e)
try {
n = k.lookupPath(e, { follow: !(131072 & t) }).node
} catch (e) {}
}
var o = !1
if (64 & t)
if (n) {
if (128 & t) throw new k.ErrnoError(20)
} else (n = k.mknod(e, r, 0)), (o = !0)
if (!n) throw new k.ErrnoError(44)
if ((k.isChrdev(n.mode) && (t &= -513), 65536 & t && !k.isDir(n.mode)))
throw new k.ErrnoError(54)
if (!o) {
r = k.mayOpen(n, t)
if (r) throw new k.ErrnoError(r)
}
512 & t && !o && k.truncate(n, 0), (t &= -131713)
r = k.createStream({
node: n,
path: k.getPath(n),
flags: t,
seekable: !0,
position: 0,
stream_ops: n.stream_ops,
ungotten: [],
error: !1,
})
return (
r.stream_ops.open && r.stream_ops.open(r),
!g.logReadFiles ||
1 & t ||
(k.readFiles || (k.readFiles = {}), e in k.readFiles || (k.readFiles[e] = 1)),
r
)
},
close: e => {
if (k.isClosed(e)) throw new k.ErrnoError(8)
e.getdents && (e.getdents = null)
try {
e.stream_ops.close && e.stream_ops.close(e)
} catch (e) {
throw e
} finally {
k.closeStream(e.fd)
}
e.fd = null
},
isClosed: e => null === e.fd,
llseek: (e, t, r) => {
if (k.isClosed(e)) throw new k.ErrnoError(8)
if (!e.seekable || !e.stream_ops.llseek) throw new k.ErrnoError(70)
if (0 != r && 1 != r && 2 != r) throw new k.ErrnoError(28)
return (e.position = e.stream_ops.llseek(e, t, r)), (e.ungotten = []), e.position
},
read: (e, t, r, n, o) => {
if (n < 0 || o < 0) throw new k.ErrnoError(28)
if (k.isClosed(e)) throw new k.ErrnoError(8)
if (1 == (2097155 & e.flags)) throw new k.ErrnoError(8)
if (k.isDir(e.node.mode)) throw new k.ErrnoError(31)
if (!e.stream_ops.read) throw new k.ErrnoError(28)
var a = void 0 !== o
if (a) {
if (!e.seekable) throw new k.ErrnoError(70)
} else o = e.position
t = e.stream_ops.read(e, t, r, n, o)
return a || (e.position += t), t
},
write: (e, t, r, n, o, a) => {
if (n < 0 || o < 0) throw new k.ErrnoError(28)
if (k.isClosed(e)) throw new k.ErrnoError(8)
if (0 == (2097155 & e.flags)) throw new k.ErrnoError(8)
if (k.isDir(e.node.mode)) throw new k.ErrnoError(31)
if (!e.stream_ops.write) throw new k.ErrnoError(28)
e.seekable && 1024 & e.flags && k.llseek(e, 0, 2)
var i = void 0 !== o
if (i) {
if (!e.seekable) throw new k.ErrnoError(70)
} else o = e.position
t = e.stream_ops.write(e, t, r, n, o, a)
return i || (e.position += t), t
},
allocate: (e, t, r) => {
if (k.isClosed(e)) throw new k.ErrnoError(8)
if (t < 0 || r <= 0) throw new k.ErrnoError(28)
if (0 == (2097155 & e.flags)) throw new k.ErrnoError(8)
if (!k.isFile(e.node.mode) && !k.isDir(e.node.mode)) throw new k.ErrnoError(43)
if (!e.stream_ops.allocate) throw new k.ErrnoError(138)
e.stream_ops.allocate(e, t, r)
},
mmap: (e, t, r, n, o) => {
if (0 != (2 & n) && 0 == (2 & o) && 2 != (2097155 & e.flags)) throw new k.ErrnoError(2)
if (1 == (2097155 & e.flags)) throw new k.ErrnoError(2)
if (e.stream_ops.mmap) return e.stream_ops.mmap(e, t, r, n, o)
throw new k.ErrnoError(43)
},
msync: (e, t, r, n, o) =>
e && e.stream_ops.msync ? e.stream_ops.msync(e, t, r, n, o) : 0,
munmap: e => 0,
ioctl: (e, t, r) => {
if (e.stream_ops.ioctl) return e.stream_ops.ioctl(e, t, r)
throw new k.ErrnoError(59)
},
readFile: function (e) {
let t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}
if (
((t.flags = t.flags || 0),
(t.encoding = t.encoding || 'binary'),
'utf8' !== t.encoding && 'binary' !== t.encoding)
)
throw new Error('Invalid encoding type "' + t.encoding + '"')
var r,
n = k.open(e, t.flags),
e = k.stat(e).size,
o = new Uint8Array(e)
return (
k.read(n, o, 0, e, 0),
'utf8' === t.encoding ? (r = i(o, 0)) : 'binary' === t.encoding && (r = o),
k.close(n),
r
)
},
writeFile: function (e, t) {
let r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}
r.flags = r.flags || 577
e = k.open(e, r.flags, r.mode)
if ('string' == typeof t) {
var n = new Uint8Array(re(t) + 1),
o = te(t, n, 0, n.length)
k.write(e, n, 0, o, void 0, r.canOwn)
} else {
if (!ArrayBuffer.isView(t)) throw new Error('Unsupported data type')
k.write(e, t, 0, t.byteLength, void 0, r.canOwn)
}
k.close(e)
},
cwd: () => k.currentPath,
chdir: e => {
e = k.lookupPath(e, { follow: !0 })
if (null === e.node) throw new k.ErrnoError(44)
if (!k.isDir(e.node.mode)) throw new k.ErrnoError(54)
var t = k.nodePermissions(e.node, 'x')
if (t) throw new k.ErrnoError(t)
k.currentPath = e.path
},
createDefaultDirectories: () => {
k.mkdir('/tmp'), k.mkdir('/home'), k.mkdir('/home/web_user')
},
createDefaultDevices: () => {
k.mkdir('/dev'),
k.registerDevice(k.makedev(1, 3), { read: () => 0, write: (e, t, r, n, o) => n }),
k.mkdev('/dev/null', k.makedev(1, 3)),
o.register(k.makedev(5, 0), o.default_tty_ops),
o.register(k.makedev(6, 0), o.default_tty1_ops),
k.mkdev('/dev/tty', k.makedev(5, 0)),
k.mkdev('/dev/tty1', k.makedev(6, 0))
var e = (function () {
var e
if ('object' == typeof crypto && 'function' == typeof crypto.getRandomValues)
return (e = new Uint8Array(1)), () => (crypto.getRandomValues(e), e[0])
if (j)
try {
var t = At.default
return () => t.randomBytes(1)[0]
} catch (e) {}
return () => w('randomDevice')
})()
k.createDevice('/dev', 'random', e),
k.createDevice('/dev', 'urandom', e),
k.mkdir('/dev/shm'),
k.mkdir('/dev/shm/tmp')
},
createSpecialDirectories: () => {
k.mkdir('/proc')
var t = k.mkdir('/proc/self')
k.mkdir('/proc/self/fd'),
k.mount(
{
mount: () => {
var e = k.createNode(t, 'fd', 16895, 73)
return (
(e.node_ops = {
lookup: (e, t) => {
var r = k.getStream(+t)
if (!r) throw new k.ErrnoError(8)
t = {
parent: null,
mount: { mountpoint: 'fake' },
node_ops: { readlink: () => r.path },
}
return (t.parent = t)
},
}),
e
)
},
},
{},
'/proc/self/fd',
)
},
createStandardStreams: () => {
g.stdin
? k.createDevice('/dev', 'stdin', g.stdin)
: k.symlink('/dev/tty', '/dev/stdin'),
g.stdout
? k.createDevice('/dev', 'stdout', null, g.stdout)
: k.symlink('/dev/tty', '/dev/stdout'),
g.stderr
? k.createDevice('/dev', 'stderr', null, g.stderr)
: k.symlink('/dev/tty1', '/dev/stderr'),
k.open('/dev/stdin', 0),
k.open('/dev/stdout', 1),
k.open('/dev/stderr', 1)
},
ensureErrnoError: () => {
k.ErrnoError ||
((k.ErrnoError = function (e, t) {
;(this.node = t),
(this.setErrno = function (e) {
this.errno = e
}),
this.setErrno(e),
(this.message = 'FS error')
}),
(k.ErrnoError.prototype = new Error()),
(k.ErrnoError.prototype.constructor = k.ErrnoError),
[44].forEach(e => {
;(k.genericErrors[e] = new k.ErrnoError(e)),
(k.genericErrors[e].stack = '<generic error, no stack>')
}))
},
staticInit: () => {
k.ensureErrnoError(),
(k.nameTable = new Array(4096)),
k.mount(E, {}, '/'),
k.createDefaultDirectories(),
k.createDefaultDevices(),
k.createSpecialDirectories(),
(k.filesystems = { MEMFS: E })
},
init: (e, t, r) => {
;(k.init.initialized = !0),
k.ensureErrnoError(),
(g.stdin = e || g.stdin),
(g.stdout = t || g.stdout),
(g.stderr = r || g.stderr),
k.createStandardStreams()
},
quit: () => {
k.init.initialized = !1
for (var e = 0; e < k.streams.length; e++) {
var t = k.streams[e]
t && k.close(t)
}
},
getMode: (e, t) => {
var r = 0
return e && (r |= 365), t && (r |= 146), r
},
findObject: (e, t) => {
e = k.analyzePath(e, t)
return e.exists ? e.object : null
},
analyzePath: (e, t) => {
try {
e = (n = k.lookupPath(e, { follow: !t })).path
} catch (e) {}
var r = {
isRoot: !1,
exists: !1,
error: 0,
name: null,
path: null,
object: null,
parentExists: !1,
parentPath: null,
parentObject: null,
}
try {
var n = k.lookupPath(e, { parent: !0 })
;(r.parentExists = !0),
(r.parentPath = n.path),
(r.parentObject = n.node),
(r.name = v.basename(e)),
(n = k.lookupPath(e, { follow: !t })),
(r.exists = !0),
(r.path = n.path),
(r.object = n.node),
(r.name = n.node.name),
(r.isRoot = '/' === n.path)
} catch (e) {
r.error = e.errno
}
return r
},
createPath: (e, t, r, n) => {
e = 'string' == typeof e ? e : k.getPath(e)
for (var o = t.split('/').reverse(); o.length; ) {
var a = o.pop()
if (a) {
var i = v.join2(e, a)
try {
k.mkdir(i)
} catch (e) {}
e = i
}
}
return i
},
createFile: (e, t, r, n, o) => {
;(e = v.join2('string' == typeof e ? e : k.getPath(e), t)), (t = k.getMode(n, o))
return k.create(e, t)
},
createDataFile: (e, t, r, n, o, a) => {
var i = t,
t =
(e && ((e = 'string' == typeof e ? e : k.getPath(e)), (i = t ? v.join2(e, t) : e)),
k.getMode(n, o)),
e = k.create(i, t)
if (r) {
if ('string' == typeof r) {
for (var s = new Array(r.length), l = 0, u = r.length; l < u; ++l)
s[l] = r.charCodeAt(l)
r = s
}
k.chmod(e, 146 | t)
n = k.open(e, 577)
k.write(n, r, 0, r.length, 0, a), k.close(n), k.chmod(e, t)
}
return e
},
createDevice: (e, t, l, i) => {
var e = v.join2('string' == typeof e ? e : k.getPath(e), t),
t = k.getMode(!!l, !!i),
r =
(k.createDevice.major || (k.createDevice.major = 64),
k.makedev(k.createDevice.major++, 0))
return (
k.registerDevice(r, {
open: e => {
e.seekable = !1
},
close: e => {
i && i.buffer && i.buffer.length && i(10)
},
read: (e, t, r, n, o) => {
for (var a, i = 0, s = 0; s < n; s++) {
try {
a = l()
} catch (e) {
throw new k.ErrnoError(29)
}
if (void 0 === a && 0 === i) throw new k.ErrnoError(6)
if (null == a) break
i++, (t[r + s] = a)
}
return i && (e.node.timestamp = Date.now()), i
},
write: (e, t, r, n, o) => {
for (var a = 0; a < n; a++)
try {
i(t[r + a])
} catch (e) {
throw new k.ErrnoError(29)
}
return n && (e.node.timestamp = Date.now()), a
},
}),
k.mkdev(e, t, r)
)
},
forceLoadFile: e => {
if (e.isDevice || e.isFolder || e.link || e.contents) return !0
if ('undefined' != typeof XMLHttpRequest)
throw new Error(
'Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.',
)
if (!t) throw new Error('Cannot load without read() or XMLHttpRequest.')
try {
;(e.contents = pe(t(e.url), !0)), (e.usedBytes = e.contents.length)
} catch (e) {
throw new k.ErrnoError(29)
}
},
createLazyFile: (e, t, i, r, n) => {
function o() {
;(this.lengthKnown = !1), (this.chunks = [])
}
if (
((o.prototype.get = function (e) {
var t
if (!(e > this.length - 1 || e < 0))
return (t = e % this.chunkSize), (e = (e / this.chunkSize) | 0), this.getter(e)[t]
}),
(o.prototype.setDataGetter = function (e) {
this.getter = e
}),
(o.prototype.cacheLength = function () {
var e = new XMLHttpRequest()
if (
(e.open('HEAD', i, !1),
e.send(null),
!((200 <= e.status && e.status < 300) || 304 === e.status))
)
throw new Error("Couldn't load " + i + '. Status: ' + e.status)
var t,
n = Number(e.getResponseHeader('Content-length')),
r = (t = e.getResponseHeader('Accept-Ranges')) && 'bytes' === t,
e = (t = e.getResponseHeader('Content-Encoding')) && 'gzip' === t,
o = 1048576,
a = (r || (o = n), this)
a.setDataGetter(e => {
var t = e * o,
r = (e + 1) * o - 1,
r = Math.min(r, n - 1)
if (
(void 0 === a.chunks[e] &&
(a.chunks[e] = ((e, t) => {
if (t < e)
throw new Error(
'invalid range (' + e + ', ' + t + ') or no bytes requested!',
)
if (n - 1 < t)
throw new Error('only ' + n + ' bytes available! programmer error!')
var r = new XMLHttpRequest()
if (
(r.open('GET', i, !1),
n !== o && r.setRequestHeader('Range', 'bytes=' + e + '-' + t),
(r.responseType = 'arraybuffer'),
r.overrideMimeType &&
r.overrideMimeType('text/plain; charset=x-user-defined'),
r.send(null),
(200 <= r.status && r.status < 300) || 304 === r.status)
)
return void 0 !== r.response
? new Uint8Array(r.response || [])
: pe(r.responseText || '', !0)
throw new Error("Couldn't load " + i + '. Status: ' + r.status)
})(t, r)),
void 0 === a.chunks[e])
)
throw new Error('doXHR failed!')
return a.chunks[e]
}),
(!e && n) ||
((o = n = 1),
(n = this.getter(0).length),
(o = n),
W(
'LazyFiles on gzip forces download of the whole file when length is accessed',
)),
(this._length = n),
(this._chunkSize = o),
(this.lengthKnown = !0)
}),
'undefined' != typeof XMLHttpRequest)
) {
if (!d)
throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'
var a = new o(),
a =
(Object.defineProperties(a, {
length: {
get: function () {
return this.lengthKnown || this.cacheLength(), this._length
},
},
chunkSize: {
get: function () {
return this.lengthKnown || this.cacheLength(), this._chunkSize
},
},
}),
{ isDevice: !1, contents: a })
} else a = { isDevice: !1, url: i }
var s = k.createFile(e, t, a, r, n),
l =
(a.contents
? (s.contents = a.contents)
: a.url && ((s.contents = null), (s.url = a.url)),
Object.defineProperties(s, {
usedBytes: {
get: function () {
return this.contents.length
},
},
}),
{})
function u(e, t, r, n, o) {
var a = e.node.contents
if (o >= a.length) return 0
var i = Math.min(a.length - o, n)
if (a.slice) for (var s = 0; s < i; s++) t[r + s] = a[o + s]
else for (s = 0; s < i; s++) t[r + s] = a.get(o + s)
return i
}
return (
Object.keys(s.stream_ops).forEach(e => {
var t = s.stream_ops[e]
l[e] = function () {
return k.forceLoadFile(s), t.apply(null, arguments)
}
}),
(l.read = (e, t, r, n, o) => (k.forceLoadFile(s), u(e, t, r, n, o))),
(l.mmap = (e, t, r, n, o) => {
k.forceLoadFile(s)
var a = he(t)
if (a) return u(e, c, a, t, r), { ptr: a, allocated: !0 }
throw new k.ErrnoError(48)
}),
(s.stream_ops = l),
s
)
},
createPreloadedFile: (r, n, e, o, a, i, s, l, u, d) => {
var t,
c,
f,
p = n ? b.resolve(v.join2(r, n)) : r
function h(e) {
function t(e) {
d && d(), l || k.createDataFile(r, n, e, o, a, u), i && i(), se()
}
Browser.handledByPreloadPlugin(e, p, t, () => {
s && s(), se()
}) || t(e)
}
ie(),
'string' == typeof e
? ((c = s),
(f = 'al ' + (t = e)),
m(
t,
e => {
q(e, 'Loading data file "' + t + '" failed (no arrayBuffer).'),
h(new Uint8Array(e)),
f && se()
},
e => {
if (!c) throw 'Loading data file "' + t + '" failed.'
c()
},
),
f && ie())
: h(e)
},
indexedDB: () =>
window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB,
DB_NAME: () => 'EM_FS_' + window.location.pathname,
DB_VERSION: 20,
DB_STORE_NAME: 'FILE_DATA',
saveFilesToDB: (i, s, l) => {
;(s = s || (() => {})), (l = l || (() => {}))
var e = k.indexedDB()
try {
var u = e.open(k.DB_NAME(), k.DB_VERSION)
} catch (i) {
return l(i)
}
;(u.onupgradeneeded = () => {
W('creating db'), u.result.createObjectStore(k.DB_STORE_NAME)
}),
(u.onsuccess = () => {
var e = u.result.transaction([k.DB_STORE_NAME], 'readwrite'),
t = e.objectStore(k.DB_STORE_NAME),
r = 0,
n = 0,
o = i.length
function a() {
;(0 == n ? s : l)()
}
i.forEach(e => {
e = t.put(k.analyzePath(e).object.contents, e)
;(e.onsuccess = () => {
++r + n == o && a()
}),
(e.onerror = () => {
r + ++n == o && a()
})
}),
(e.onerror = l)
}),
(u.onerror = l)
},
loadFilesFromDB: (s, l, u) => {
;(l = l || (() => {})), (u = u || (() => {}))
var e = k.indexedDB()
try {
var d = e.open(k.DB_NAME(), k.DB_VERSION)
} catch (s) {
return u(s)
}
;(d.onupgradeneeded = u),
(d.onsuccess = () => {
var e = d.result
try {
var t = e.transaction([k.DB_STORE_NAME], 'readonly')
} catch (e) {
return void u(e)
}
var r = t.objectStore(k.DB_STORE_NAME),
n = 0,
o = 0,
a = s.length
function i() {
;(0 == o ? l : u)()
}
s.forEach(e => {
var t = r.get(e)
;(t.onsuccess = () => {
k.analyzePath(e).exists && k.unlink(e),
k.createDataFile(v.dirname(e), v.basename(e), t.result, !0, !0, !0),
++n + o == a && i()
}),
(t.onerror = () => {
n + ++o == a && i()
})
}),
(t.onerror = u)
}),
(d.onerror = u)
},
},
T = {
DEFAULT_POLLMASK: 5,
calculateAt: function (e, t, r) {
if (v.isAbs(t)) return t
var n
if (-100 === e) n = k.cwd()
else {
e = k.getStream(e)
if (!e) throw new k.ErrnoError(8)
n = e.path
}
if (0 != t.length) return v.join2(n, t)
if (r) return n
throw new k.ErrnoError(44)
},
doStat: function (e, t, r) {
try {
var n = e(t)
} catch (e) {
if (e && e.node && v.normalize(t) !== v.normalize(k.getPath(e.node))) return -54
throw e
}
return (
(u[r >> 2] = n.dev),
(u[(r + 4) >> 2] = 0),
(u[(r + 8) >> 2] = n.ino),
(u[(r + 12) >> 2] = n.mode),
(u[(r + 16) >> 2] = n.nlink),
(u[(r + 20) >> 2] = n.uid),
(u[(r + 24) >> 2] = n.gid),
(u[(r + 28) >> 2] = n.rdev),
(u[(r + 32) >> 2] = 0),
(_ = [
n.size >>> 0,
((y = n.size),
1 <= +Math.abs(y)
? 0 < y
? (0 | Math.min(+Math.floor(y / 4294967296), 4294967295)) >>> 0
: ~~+Math.ceil((y - (~~y >>> 0)) / 4294967296) >>> 0
: 0),
]),
(u[(r + 40) >> 2] = _[0]),
(u[(r + 44) >> 2] = _[1]),
(u[(r + 48) >> 2] = 4096),
(u[(r + 52) >> 2] = n.blocks),
(_ = [
Math.floor(n.atime.getTime() / 1e3) >>> 0,
((y = Math.floor(n.atime.getTime() / 1e3)),
1 <= +Math.abs(y)
? 0 < y
? (0 | Math.min(+Math.floor(y / 4294967296), 4294967295)) >>> 0
: ~~+Math.ceil((y - (~~y >>> 0)) / 4294967296) >>> 0
: 0),
]),
(u[(r + 56) >> 2] = _[0]),
(u[(r + 60) >> 2] = _[1]),
(u[(r + 64) >> 2] = 0),
(_ = [
Math.floor(n.mtime.getTime() / 1e3) >>> 0,
((y = Math.floor(n.mtime.getTime() / 1e3)),
1 <= +Math.abs(y)
? 0 < y
? (0 | Math.min(+Math.floor(y / 4294967296), 4294967295)) >>> 0
: ~~+Math.ceil((y - (~~y >>> 0)) / 4294967296) >>> 0
: 0),
]),
(u[(r + 72) >> 2] = _[0]),
(u[(r + 76) >> 2] = _[1]),
(u[(r + 80) >> 2] = 0),
(_ = [
Math.floor(n.ctime.getTime() / 1e3) >>> 0,
((y = Math.floor(n.ctime.getTime() / 1e3)),
1 <= +Math.abs(y)
? 0 < y
? (0 | Math.min(+Math.floor(y / 4294967296), 4294967295)) >>> 0
: ~~+Math.ceil((y - (~~y >>> 0)) / 4294967296) >>> 0
: 0),
]),
(u[(r + 88) >> 2] = _[0]),
(u[(r + 92) >> 2] = _[1]),
(u[(r + 96) >> 2] = 0),
(_ = [
n.ino >>> 0,
((y = n.ino),
1 <= +Math.abs(y)
? 0 < y
? (0 | Math.min(+Math.floor(y / 4294967296), 4294967295)) >>> 0
: ~~+Math.ceil((y - (~~y >>> 0)) / 4294967296) >>> 0
: 0),
]),
(u[(r + 104) >> 2] = _[0]),
(u[(r + 108) >> 2] = _[1]),
0
)
},
doMsync: function (e, t, r, n, o) {
e = f.slice(e, e + r)
k.msync(t, e, o, r, n)
},
varargs: void 0,
get: function () {
return (T.varargs += 4), u[(T.varargs - 4) >> 2]
},
getStr: function (e) {
return ee(e)
},
getStreamFromFD: function (e) {
e = k.getStream(e)
if (e) return e
throw new k.ErrnoError(8)
},
}
function me(e) {
switch (e) {
case 1:
return 0
case 2:
return 1
case 4:
return 2
case 8:
return 3
default:
throw new TypeError('Unknown type size: ' + e)
}
}
var ge = void 0
function B(e) {
for (var t = '', r = e; f[r]; ) t += ge[f[r++]]
return t
}
var A = {},
D = {},
ye = {}
function _e(e) {
if (void 0 === e) return '_unknown'
var t = (e = e.replace(/[^a-zA-Z0-9_]/g, '$')).charCodeAt(0)
return 48 <= t && t <= 57 ? '_' + e : e
}
function we(e, t) {
return (
(e = _e(e)),
new Function(
'body',
'return function ' +
e +
'() {\n "use strict"; return body.apply(this, arguments);\n};\n',
)(t)
)
}
function ve(e, t) {
var r = we(t, function (e) {
;(this.name = t), (this.message = e)
e = new Error(e).stack
void 0 !== e &&
(this.stack = this.toString() + '\n' + e.replace(/^Error(:[^\n]*)?\n/, ''))
})
return (
(r.prototype = Object.create(e.prototype)),
((r.prototype.constructor = r).prototype.toString = function () {
return void 0 === this.message ? this.name : this.name + ': ' + this.message
}),
r
)
}
var S = void 0
function C(e) {
throw new S(e)
}
var be = void 0
function Ee(e) {
throw new be(e)
}
function ke(n, t, o) {
function r(e) {
var t = o(e)
t.length !== n.length && Ee('Mismatched type converter count')
for (var r = 0; r < n.length; ++r) F(n[r], t[r])
}
n.forEach(function (e) {
ye[e] = t
})
var a = new Array(t.length),
i = [],
s = 0
t.forEach((e, t) => {
D.hasOwnProperty(e)
? (a[t] = D[e])
: (i.push(e),
A.hasOwnProperty(e) || (A[e] = []),
A[e].push(() => {
;(a[t] = D[e]), ++s === i.length && r(a)
}))
}),
0 === i.length && r(a)
}
function F(e, t, r) {
r = 2 < arguments.length && void 0 !== r ? r : {}
if (!('argPackAdvance' in t))
throw new TypeError('registerType registeredInstance requires argPackAdvance')
var n = t.name
if (
(e || C('type "' + n + '" must have a positive integer typeid pointer'),
D.hasOwnProperty(e))
) {
if (r.ignoreDuplicateRegistrations) return
C("Cannot register type '" + n + "' twice")
}
;(D[e] = t),
delete ye[e],
A.hasOwnProperty(e) && ((r = A[e]), delete A[e], r.forEach(e => e()))
}
function Te(e) {
C(e.$$.ptrType.registeredClass.name + ' instance already deleted')
}
var Be = !1
function Ae(e) {}
function De(e) {
--e.count.value,
0 === e.count.value &&
((e = e).smartPtr
? e.smartPtrType.rawDestructor(e.smartPtr)
: e.ptrType.registeredClass.rawDestructor(e.ptr))
}
var Se = {}
var Ce = []
function Fe() {
for (; Ce.length; ) {
var e = Ce.pop()
;(e.$$.deleteScheduled = !1), e.delete()
}
}
var Ue = void 0
var Pe = {}
function xe(e, t) {
return (
(t.ptrType && t.ptr) || Ee('makeClassHandle requires ptr and ptrType'),
!!t.smartPtrType != !!t.smartPtr &&
Ee('Both smartPtrType and smartPtr must be specified'),
(t.count = { value: 1 }),
Le(Object.create(e, { $$: { value: t } }))
)
}
function Le(e) {
return 'undefined' == typeof FinalizationRegistry
? ((Le = e => e), e)
: ((Be = new FinalizationRegistry(e => {
De(e.$$)
})),
(Ae = e => Be.unregister(e)),
(Le = e => {
var t = e.$$
return t.smartPtr && Be.register(e, { $$: t }, e), e
})(e))
}
function U() {}
function Re(e, t, r) {
var n
void 0 === e[t].overloadTable &&
((n = e[t]),
(e[t] = function () {
return (
e[t].overloadTable.hasOwnProperty(arguments.length) ||
C(
"Function '" +
r +
"' called with an invalid number of arguments (" +
arguments.length +
') - expects one of (' +
e[t].overloadTable +
')!',
),
e[t].overloadTable[arguments.length].apply(this, arguments)
)
}),
(e[t].overloadTable = []),
(e[t].overloadTable[n.argCount] = n))
}
function Ie(e, t, r, n, o, a, i, s) {
;(this.name = e),
(this.constructor = t),
(this.instancePrototype = r),
(this.rawDestructor = n),
(this.baseClass = o),
(this.getActualType = a),
(this.upcast = i),
(this.downcast = s),
(this.pureVirtualFunctions = [])
}
function Me(e, t, r) {
for (; t !== r; )
t.upcast ||
C('Expected null or instance of ' + r.name + ', got an instance of ' + t.name),
(e = t.upcast(e)),
(t = t.baseClass)
return e
}
function $e(e, t) {
if (null === t) return this.isReference && C('null is not a valid ' + this.name), 0
t.$$ || C('Cannot pass "' + et(t) + '" as a ' + this.name),
t.$$.ptr || C('Cannot pass deleted object as a pointer of type ' + this.name)
var r = t.$$.ptrType.registeredClass
return Me(t.$$.ptr, r, this.registeredClass)
}
function Ne(e, t) {
if (null === t)
return (
this.isReference && C('null is not a valid ' + this.name),
this.isSmartPointer
? ((n = this.rawConstructor()), null !== e && e.push(this.rawDestructor, n), n)
: 0
)
t.$$ || C('Cannot pass "' + et(t) + '" as a ' + this.name),
t.$$.ptr || C('Cannot pass deleted object as a pointer of type ' + this.name),
!this.isConst &&
t.$$.ptrType.isConst &&
C(
'Cannot convert argument of type ' +
(t.$$.smartPtrType || t.$$.ptrType).name +
' to parameter type ' +
this.name,
)
var r,
n,
o = t.$$.ptrType.registeredClass
if (((n = Me(t.$$.ptr, o, this.registeredClass)), this.isSmartPointer))
switch (
(void 0 === t.$$.smartPtr && C('Passing raw pointer to smart pointer is illegal'),
this.sharingPolicy)
) {
case 0:
t.$$.smartPtrType === this
? (n = t.$$.smartPtr)
: C(
'Cannot convert argument of type ' +
(t.$$.smartPtrType || t.$$.ptrType).name +
' to parameter type ' +
this.name,
)
break
case 1:
n = t.$$.smartPtr
break
case 2:
t.$$.smartPtrType === this
? (n = t.$$.smartPtr)
: ((r = t.clone()),
(n = this.rawShare(
n,
Qe.toHandle(function () {
r.delete()
}),
)),
null !== e && e.push(this.rawDestructor, n))
break
default:
C('Unsupporting sharing policy')
}
return n
}
function Oe(e, t) {
if (null === t) return this.isReference && C('null is not a valid ' + this.name), 0
t.$$ || C('Cannot pass "' + et(t) + '" as a ' + this.name),
t.$$.ptr || C('Cannot pass deleted object as a pointer of type ' + this.name),
t.$$.ptrType.isConst &&
C(
'Cannot convert argument of type ' +
t.$$.ptrType.name +
' to parameter type ' +
this.name,
)
var r = t.$$.ptrType.registeredClass
return Me(t.$$.ptr, r, this.registeredClass)
}
function Ge(e) {
return this.fromWireType(u[e >> 2])
}
function P(e, t, r, n, o, a, i, s, l, u, d) {
;(this.name = e),
(this.registeredClass = t),
(this.isReference = r),
(this.isConst = n),
(this.isSmartPointer = o),
(this.pointeeType = a),
(this.sharingPolicy = i),
(this.rawGetPointee = s),
(this.rawConstructor = l),
(this.rawShare = u),
(this.rawDestructor = d),
o || void 0 !== t.baseClass
? (this.toWireType = Ne)
: ((this.toWireType = n ? $e : Oe), (this.destructorFunction = null))
}
var Ve = []
function ze(e) {
var t = Ve[e]
return t || (e >= Ve.length && (Ve.length = e + 1), (Ve[e] = t = Z.get(e))), t
}
function x(e, t) {
var o,
a,
i,
r = (e = B(e)).includes('j')
? ((o = e),
(a = t),
(i = []),
function () {
return (
(i.length = 0),
Object.assign(i, arguments),
(t = a),
(r = i),
(e = o).includes('j')
? ((n = t),
(e = g['dynCall_' + e]),
r && r.length ? e.apply(null, [n].concat(r)) : e.call(null, n))
: ze(t).apply(null, r)
)
var e, t, r, n
})
: ze(t)
return (
'function' != typeof r && C('unknown function pointer with signature ' + e + ': ' + t), r
)
}
var je = void 0
function We(e) {
var e = wt(e),
t = B(e)
return R(e), t
}
function He(e, t) {
var r = [],
n = {}
throw (
(t.forEach(function e(t) {
n[t] || D[t] || (ye[t] ? ye[t].forEach(e) : (r.push(t), (n[t] = !0)))
}),
new je(e + ': ' + r.map(We).join([', '])))
)
}
function qe(e, t) {
for (var r = [], n = 0; n < e; n++) r.push(p[(t + 4 * n) >> 2])
return r
}
function Xe(e) {
for (; e.length; ) {
var t = e.pop()
e.pop()(t)
}
}
function Ke(e, t) {
if (!(e instanceof Function))
throw new TypeError(
'new_ called with constructor type ' + typeof e + ' which is not a function',
)
var r = we(e.name || 'unknownFunctionName', function () {}),
r = ((r.prototype = e.prototype), new r()),
e = e.apply(r, t)
return e instanceof Object ? e : r
}
function Ye(e, t, r, n, o) {
var a = t.length
a < 2 && C("argTypes array size mismatch! Must at least get return value and 'this' types!")
for (var r = null !== t[1] && null !== r, i = !1, s = 1; s < t.length; ++s)
if (null !== t[s] && void 0 === t[s].destructorFunction) {
i = !0
break
}
for (var l = 'void' !== t[0].name, u = '', d = '', s = 0; s < a - 2; ++s)
(u += (0 !== s ? ', ' : '') + 'arg' + s),
(d += (0 !== s ? ', ' : '') + 'arg' + s + 'Wired')
var c =
'return function ' +
_e(e) +
'(' +
u +
') {\nif (arguments.length !== ' +
(a - 2) +
") {\nthrowBindingError('function " +
e +
" called with ' + arguments.length + ' arguments, expected " +
(a - 2) +
" args!');\n}\n",
f = (i && (c += 'var destructors = [];\n'), i ? 'destructors' : 'null'),
p = ['throwBindingError', 'invoker', 'fn', 'runDestructors', 'retType', 'classParam'],
h = [C, n, o, Xe, t[0], t[1]]
for (
r && (c += 'var thisWired = classParam.toWireType(' + f + ', this);\n'), s = 0;
s < a - 2;
++s
)
(c +=
'var arg' +
s +
'Wired = argType' +
s +
'.toWireType(' +
f +
', arg' +
s +
'); // ' +
t[s + 2].name +
'\n'),
p.push('argType' + s),
h.push(t[s + 2])
if (
((c +=
(l ? 'var rv = ' : '') +
'invoker(fn' +
(0 < (d = r ? 'thisWired' + (0 < d.length ? ', ' : '') + d : d).length ? ', ' : '') +
d +
');\n'),
i)
)
c += 'runDestructors(destructors);\n'
else
for (s = r ? 1 : 2; s < t.length; ++s) {
var m = 1 === s ? 'thisWired' : 'arg' + (s - 2) + 'Wired'
null !== t[s].destructorFunction &&
((c += m + '_dtor(' + m + '); // ' + t[s].name + '\n'),
p.push(m + '_dtor'),
h.push(t[s].destructorFunction))
}
return (
l && (c += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'),
p.push((c += '}\n')),
Ke(Function, p).apply(null, h)
)
}
var Je = [],
L = [{}, { value: void 0 }, { value: null }, { value: !0 }, { value: !1 }]
function Ze(e) {
4 < e && 0 == --L[e].refcount && ((L[e] = void 0), Je.push(e))
}
var Qe = {
toValue: e => (e || C('Cannot use deleted val. handle = ' + e), L[e].value),
toHandle: e => {
switch (e) {
case void 0:
return 1
case null:
return 2
case !0:
return 3
case !1:
return 4
default:
var t = Je.length ? Je.pop() : L.length
return (L[t] = { refcount: 1, value: e }), t
}
},
}
function et(e) {
if (null === e) return 'null'
var t = typeof e
return 'object' == t || 'array' == t || 'function' == t ? e.toString() : '' + e
}
var tt = 'undefined' != typeof TextDecoder ? new TextDecoder('utf-16le') : void 0
function rt(e, t) {
for (var r, n = e >> 1, o = n + t / 2; !(o <= n) && K[n]; ) ++n
if (32 < (r = n << 1) - e && tt) return tt.decode(f.subarray(e, r))
for (var a = '', i = 0; !(t / 2 <= i); ++i) {
var s = l[(e + 2 * i) >> 1]
if (0 == s) break
a += String.fromCharCode(s)
}
return a
}
function nt(e, t, r) {
if ((r = void 0 === r ? 2147483647 : r) < 2) return 0
for (var n = t, o = (r -= 2) < 2 * e.length ? r / 2 : e.length, a = 0; a < o; ++a) {
var i = e.charCodeAt(a)
;(l[t >> 1] = i), (t += 2)
}
return (l[t >> 1] = 0), t - n
}
function ot(e) {
return 2 * e.length
}
function at(e, t) {
for (var r = 0, n = ''; !(t / 4 <= r); ) {
var o,
a = u[(e + 4 * r) >> 2]
if (0 == a) break
++r,
65536 <= a
? ((o = a - 65536), (n += String.fromCharCode(55296 | (o >> 10), 56320 | (1023 & o))))
: (n += String.fromCharCode(a))
}
return n
}
function it(e, t, r) {
if ((r = void 0 === r ? 2147483647 : r) < 4) return 0
for (var n = t, o = n + r - 4, a = 0; a < e.length; ++a) {
var i = e.charCodeAt(a)
if (
(55296 <= i &&
i <= 57343 &&
(i = (65536 + ((1023 & i) << 10)) | (1023 & e.charCodeAt(++a))),
(u[t >> 2] = i),
(t += 4) + 4 > o)
)
break
}
return (u[t >> 2] = 0), t - n
}
function st(e) {
for (var t = 0, r = 0; r < e.length; ++r) {
var n = e.charCodeAt(r)
55296 <= n && n <= 57343 && ++r, (t += 4)
}
return t
}
var lt = {},
ut = [],
dt = [],
ct = {}
function ft() {
if (!ft.strings) {
var e = {
USER: 'web_user',
LOGNAME: 'web_user',
PATH: '/',
PWD: '/',
HOME: '/home/web_user',
LANG:
(
('object' == typeof navigator && navigator.languages && navigator.languages[0]) ||
'C'
).replace('-', '_') + '.UTF-8',
_: V || './this.program',
}
for (t in ct) void 0 === ct[t] ? delete e[t] : (e[t] = ct[t])
var t,
r = []
for (t in e) r.push(t + '=' + e[t])
ft.strings = r
}
return ft.strings
}
function pt(e, t, r, n) {
;(this.parent = e = e || this),
(this.mount = e.mount),
(this.mounted = null),
(this.id = k.nextInode++),
(this.name = t),
(this.mode = r),
(this.node_ops = {}),
(this.stream_ops = {}),
(this.rdev = n)
}
Object.defineProperties(pt.prototype, {
read: {
get: function () {
return 365 == (365 & this.mode)
},
set: function (e) {
e ? (this.mode |= 365) : (this.mode &= -366)
},
},
write: {
get: function () {
return 146 == (146 & this.mode)
},
set: function (e) {
e ? (this.mode |= 146) : (this.mode &= -147)
},
},
isFolder: {
get: function () {
return k.isDir(this.mode)
},
},
isDevice: {
get: function () {
return k.isChrdev(this.mode)
},
},
}),
(k.FSNode = pt),
k.staticInit()
for (var ht = new Array(256), mt = 0; mt < 256; ++mt) ht[mt] = String.fromCharCode(mt)
;(ge = ht),
(S = g.BindingError = ve(Error, 'BindingError')),
(be = g.InternalError = ve(Error, 'InternalError')),
(U.prototype.isAliasOf = function (e) {
if (!(this instanceof U)) return !1
if (!(e instanceof U)) return !1
for (
var t = this.$$.ptrType.registeredClass,
r = this.$$.ptr,
n = e.$$.ptrType.registeredClass,
o = e.$$.ptr;
t.baseClass;
)
(r = t.upcast(r)), (t = t.baseClass)
for (; n.baseClass; ) (o = n.upcast(o)), (n = n.baseClass)
return t === n && r === o
}),
(U.prototype.clone = function () {
if ((this.$$.ptr || Te(this), this.$$.preservePointerOnDelete))
return (this.$$.count.value += 1), this
var e = Le(
Object.create(Object.getPrototypeOf(this), {
$$: {
value: {
count: (e = this.$$).count,
deleteScheduled: e.deleteScheduled,
preservePointerOnDelete: e.preservePointerOnDelete,
ptr: e.ptr,
ptrType: e.ptrType,
smartPtr: e.smartPtr,
smartPtrType: e.smartPtrType,
},
},
}),
)
return (e.$$.count.value += 1), (e.$$.deleteScheduled = !1), e
}),
(U.prototype.delete = function () {
this.$$.ptr || Te(this),
this.$$.deleteScheduled &&
!this.$$.preservePointerOnDelete &&
C('Object already scheduled for deletion'),
Ae(this),
De(this.$$),
this.$$.preservePointerOnDelete || ((this.$$.smartPtr = void 0), (this.$$.ptr = void 0))
}),
(U.prototype.isDeleted = function () {
return !this.$$.ptr
}),
(U.prototype.deleteLater = function () {
return (
this.$$.ptr || Te(this),
this.$$.deleteScheduled &&
!this.$$.preservePointerOnDelete &&
C('Object already scheduled for deletion'),
Ce.push(this),
1 === Ce.length && Ue && Ue(Fe),
(this.$$.deleteScheduled = !0),
this
)
}),
(g.getInheritedInstanceCount = function () {
return Object.keys(Pe).length
}),
(g.getLiveInheritedInstances = function () {
var e,
t = []
for (e in Pe) Pe.hasOwnProperty(e) && t.push(Pe[e])
return t
}),
(g.flushPendingDeletes = Fe),
(g.setDelayFunction = function (e) {
;(Ue = e), Ce.length && Ue && Ue(Fe)
}),
(P.prototype.getPointee = function (e) {
return (e = this.rawGetPointee ? this.rawGetPointee(e) : e)
}),
(P.prototype.destructor = function (e) {
this.rawDestructor && this.rawDestructor(e)
}),
(P.prototype.argPackAdvance = 8),
(P.prototype.readValueFromPointer = Ge),
(P.prototype.deleteObject = function (e) {
null !== e && e.delete()
}),
(P.prototype.fromWireType = function (e) {
var t = this.getPointee(e)
if (!t) return this.destructor(e), null
if (
((n = (function (e, t) {
for (void 0 === t && C('ptr should not be undefined'); e.baseClass; )
(t = e.upcast(t)), (e = e.baseClass)
return t
})((n = this.registeredClass), (n = t))),
void 0 !== (n = Pe[n]))
) {
if (0 === n.$$.count.value) return (n.$$.ptr = t), (n.$$.smartPtr = e), n.clone()
n = n.clone()
return this.destructor(e), n
}
function r() {
return this.isSmartPointer
? xe(this.registeredClass.instancePrototype, {
ptrType: this.pointeeType,
ptr: t,
smartPtrType: this,
smartPtr: e,
})
: xe(this.registeredClass.instancePrototype, { ptrType: this, ptr: e })
}
if (((n = this.registeredClass.getActualType(t)), !(n = Se[n]))) return r.call(this)
var n = this.isConst ? n.constPointerType : n.pointerType,
o = (function e(t, r, n) {
if (r === n) return t
if (void 0 === n.baseClass) return null
t = e(t, r, n.baseClass)
return null === t ? null : n.downcast(t)
})(t, this.registeredClass, n.registeredClass)
return null === o
? r.call(this)
: this.isSmartPointer
? xe(n.registeredClass.instancePrototype, {
ptrType: n,
ptr: o,
smartPtrType: this,
smartPtr: e,
})
: xe(n.registeredClass.instancePrototype, { ptrType: n, ptr: o })
}),
(je = g.UnboundTypeError = ve(Error, 'UnboundTypeError')),
(g.count_emval_handles = function () {
for (var e = 0, t = 5; t < L.length; ++t) void 0 !== L[t] && ++e
return e
}),
(g.get_first_emval = function () {
for (var e = 5; e < L.length; ++e) if (void 0 !== L[e]) return L[e]
return null
})
var gt = {
s: function (e) {
return yt(e + 24) + 24
},
r: function (e, t, r) {
throw (new fe(e).init(t, r), e)
},
C: function (e, t, r) {
T.varargs = r
try {
var n = T.getStreamFromFD(e)
switch (t) {
case 0:
return (o = T.get()) < 0 ? -28 : k.createStream(n, o).fd
case 1:
case 2:
case 6:
case 7:
return 0
case 3:
return n.flags
case 4:
var o = T.get()
return (n.flags |= o), 0
case 5:
return (o = T.get()), (l[(o + 0) >> 1] = 2), 0
case 16:
case 8:
default:
return -28
case 9:
return (u[_t() >> 2] = 28), -1
}
} catch (e) {
if (void 0 !== k && e instanceof k.ErrnoError) return -e.errno
throw e
}
},
v: function (e, t, r, n) {
T.varargs = n
try {
;(t = T.getStr(t)), (t = T.calculateAt(e, t))
var o = n ? T.get() : 0
return k.open(t, r, o).fd
} catch (e) {
if (void 0 !== k && e instanceof k.ErrnoError) return -e.errno
throw e
}
},
u: function (e, t, r, n, o) {},
E: function (e, r, n, o, a) {
var i = me(n)
F(e, {
name: (r = B(r)),
fromWireType: function (e) {
return !!e
},
toWireType: function (e, t) {
return t ? o : a
},
argPackAdvance: 8,
readValueFromPointer: function (e) {
var t
if (1 === n) t = c
else if (2 === n) t = l
else {
if (4 !== n) throw new TypeError('Unknown boolean type size: ' + r)
t = u
}
return this.fromWireType(t[e >> i])
},
destructorFunction: null,
})
},
m: function (l, e, t, u, r, d, n, c, o, f, p, a, h) {
;(p = B(p)), (d = x(r, d)), (c = c && x(n, c)), (f = f && x(o, f)), (h = x(a, h))
var i,
m = _e(p)
;(r = m),
(n = function () {
He('Cannot construct ' + p + ' due to unbound types', [u])
}),
g.hasOwnProperty(r)
? (C("Cannot register public name '" + r + "' twice"),
Re(g, r, r),
g.hasOwnProperty(i) &&
C(
'Cannot register multiple overloads of a function with the same number of arguments (' +
i +
')!',
),
(g[r].overloadTable[i] = n))
: (g[r] = n),
ke([l, e, t], u ? [u] : [], function (e) {
;(e = e[0]), (e = u ? (i = e.registeredClass).instancePrototype : U.prototype)
var t,
r,
n = we(m, function () {
if (Object.getPrototypeOf(this) !== o)
throw new S("Use 'new' to construct " + p)
if (void 0 === a.constructor_body)
throw new S(p + ' has no accessible constructor')
var e = a.constructor_body[arguments.length]
if (void 0 === e)
throw new S(
'Tried to invoke ctor of ' +
p +
' with invalid number of parameters (' +
arguments.length +
') - expected (' +
Object.keys(a.constructor_body).toString() +
') parameters instead!',
)
return e.apply(this, arguments)
}),
o = Object.create(e, { constructor: { value: n } }),
a = ((n.prototype = o), new Ie(p, n, o, h, i, d, c, f)),
e = new P(p, a, !0, !1, !1),
i = new P(p + '*', a, !1, !1, !1),
s = new P(p + ' const*', a, !1, !0, !1)
return (
(Se[l] = { pointerType: i, constPointerType: s }),
(t = m),
(n = n),
g.hasOwnProperty(t) || Ee('Replacing nonexistant public symbol'),
g[t].overloadTable,
(g[t] = n),
(g[t].argCount = r),
[e, i, s]
)
})
},
l: function (e, n, t, r, o, a) {
q(0 < n)
var i = qe(n, t)
;(o = x(r, o)),
ke([], [e], function (t) {
var r = 'constructor ' + (t = t[0]).name
if (
(void 0 === t.registeredClass.constructor_body &&
(t.registeredClass.constructor_body = []),
void 0 !== t.registeredClass.constructor_body[n - 1])
)
throw new S(
'Cannot register multiple constructors with identical number of parameters (' +
(n - 1) +
") for class '" +
t.name +
"'! Overload resolution is currently only performed using the parameter count, not actual type info!",
)
return (
(t.registeredClass.constructor_body[n - 1] = () => {
He('Cannot construct ' + t.name + ' due to unbound types', i)
}),
ke([], i, function (e) {
return (
e.splice(1, 0, null),
(t.registeredClass.constructor_body[n - 1] = Ye(r, e, null, o, a)),
[]
)
}),
[]
)
})
},
f: function (e, a, i, t, r, s, l, u) {
var d = qe(i, t)
;(a = B(a)),
(s = x(r, s)),
ke([], [e], function (t) {
var r = (t = t[0]).name + '.' + a
function e() {
He('Cannot call ' + r + ' due to unbound types', d)
}
a.startsWith('@@') && (a = Symbol[a.substring(2)]),
u && t.registeredClass.pureVirtualFunctions.push(a)
var n = t.registeredClass.instancePrototype,
o = n[a]
return (
void 0 === o ||
(void 0 === o.overloadTable && o.className !== t.name && o.argCount === i - 2)
? ((e.argCount = i - 2), (e.className = t.name), (n[a] = e))
: (Re(n, a, r), (n[a].overloadTable[i - 2] = e)),
ke([], d, function (e) {
e = Ye(r, e, t, s, l)
return (
void 0 === n[a].overloadTable
? ((e.argCount = i - 2), (n[a] = e))
: (n[a].overloadTable[i - 2] = e),
[]
)
}),
[]
)
})
},
D: function (e, t) {
F(e, {
name: (t = B(t)),
fromWireType: function (e) {
var t = Qe.toValue(e)
return Ze(e), t
},
toWireType: function (e, t) {
return Qe.toHandle(t)
},
argPackAdvance: 8,
readValueFromPointer: Ge,
destructorFunction: null,
})
},
o: function (e, t, r) {
r = me(r)
F(e, {
name: (t = B(t)),
fromWireType: function (e) {
return e
},
toWireType: function (e, t) {
return t
},
argPackAdvance: 8,
readValueFromPointer: (function (e, t) {
switch (t) {
case 2:
return function (e) {
return this.fromWireType(Y[e >> 2])
}
case 3:
return function (e) {
return this.fromWireType(J[e >> 3])
}
default:
throw new TypeError('Unknown float type: ' + e)
}
})(t, r),
destructorFunction: null,
})
},
c: function (e, t, r, n, o) {
t = B(t)
var a,
i = me(r),
s = e => e,
r = (0 === n && ((a = 32 - 8 * r), (s = e => (e << a) >>> a)), t.includes('unsigned'))
F(e, {
name: t,
fromWireType: s,
toWireType: r
? function (e, t) {
return this.name, t >>> 0
}
: function (e, t) {
return this.name, t
},
argPackAdvance: 8,
readValueFromPointer: (function (e, t, r) {
switch (t) {
case 0:
return r
? function (e) {
return c[e]
}
: function (e) {
return f[e]
}
case 1:
return r
? function (e) {
return l[e >> 1]
}
: function (e) {
return K[e >> 1]
}
case 2:
return r
? function (e) {
return u[e >> 2]
}
: function (e) {
return p[e >> 2]
}
default:
throw new TypeError('Unknown integer type: ' + e)
}
})(t, i, 0 !== n),
destructorFunction: null,
})
},
b: function (e, t, r) {
var n = [
Int8Array,
Uint8Array,
Int16Array,
Uint16Array,
Int32Array,
Uint32Array,
Float32Array,
Float64Array,
][t]
function o(e) {
var t = p,
r = t[(e >>= 2)],
t = t[e + 1]
return new n(X, t, r)
}
F(
e,
{ name: (r = B(r)), fromWireType: o, argPackAdvance: 8, readValueFromPointer: o },
{ ignoreDuplicateRegistrations: !0 },
)
},
p: function (e, t) {
var u = 'std::string' === (t = B(t))
F(e, {
name: t,
fromWireType: function (e) {
var t,
r = p[e >> 2],
n = e + 4
if (u)
for (var o = n, a = 0; a <= r; ++a) {
var i,
s = n + a
;(a != r && 0 != f[s]) ||
((i = ee(o, s - o)),
void 0 === t ? (t = i) : (t = t + String.fromCharCode(0) + i),
(o = s + 1))
}
else {
for (var l = new Array(r), a = 0; a < r; ++a) l[a] = String.fromCharCode(f[n + a])
t = l.join('')
}
return R(e), t
},
toWireType: function (e, t) {
var r,
n = 'string' == typeof (t = t instanceof ArrayBuffer ? new Uint8Array(t) : t),
o =
(n ||
t instanceof Uint8Array ||
t instanceof Uint8ClampedArray ||
t instanceof Int8Array ||
C('Cannot pass non-string to std::string'),
(r = u && n ? re(t) : t.length),
yt(4 + r + 1)),
a = o + 4
if (((p[o >> 2] = r), u && n)) te(t, f, a, r + 1)
else if (n)
for (var i = 0; i < r; ++i) {
var s = t.charCodeAt(i)
255 < s && (R(a), C('String has UTF-16 code units that do not fit in 8 bits')),
(f[a + i] = s)
}
else for (i = 0; i < r; ++i) f[a + i] = t[i]
return null !== e && e.push(R, o), o
},
argPackAdvance: 8,
readValueFromPointer: Ge,
destructorFunction: function (e) {
R(e)
},
})
},
k: function (e, l, o) {
var u, a, d, i, c
;(o = B(o)),
2 === l
? ((u = rt), (a = nt), (i = ot), (d = () => K), (c = 1))
: 4 === l && ((u = at), (a = it), (i = st), (d = () => p), (c = 2)),
F(e, {
name: o,
fromWireType: function (e) {
for (var t, r = p[e >> 2], n = d(), o = e + 4, a = 0; a <= r; ++a) {
var i,
s = e + 4 + a * l
;(a != r && 0 != n[s >> c]) ||
((i = u(o, s - o)),
void 0 === t ? (t = i) : (t = t + String.fromCharCode(0) + i),
(o = s + l))
}
return R(e), t
},
toWireType: function (e, t) {
'string' != typeof t && C('Cannot pass non-string to C++ string type ' + o)
var r = i(t),
n = yt(4 + r + l)
return (p[n >> 2] = r >> c), a(t, n + 4, r + l), null !== e && e.push(R, n), n
},
argPackAdvance: 8,
readValueFromPointer: Ge,
destructorFunction: function (e) {
R(e)
},
})
},
q: function (e, t) {
F(e, {
isVoid: !0,
name: (t = B(t)),
argPackAdvance: 0,
fromWireType: function () {},
toWireType: function (e, t) {},
})
},
j: function () {
return Date.now()
},
e: function (e, t, r, n) {
;(e = ut[e])(
(t = Qe.toValue(t)),
(r = void 0 === (t = lt[(e = r)]) ? B(e) : t),
null,
n,
)
},
g: Ze,
d: function (e, t) {
var r = (function (e, t) {
for (var r, n, o = new Array(e), a = 0; a < e; ++a)
o[a] =
((r = p[(t + 4 * a) >> 2]),
void 0 === (n = D[r]) && C('parameter ' + a + ' has unknown type ' + We(r)),
n)
return o
})(e, t),
t = r[0],
n =
t.name +
'_$' +
r
.slice(1)
.map(function (e) {
return e.name
})
.join('_') +
'$',
o = dt[n]
if (void 0 !== o) return o
for (var a = ['retType'], i = [t], s = '', l = 0; l < e - 1; ++l)
(s += (0 !== l ? ', ' : '') + 'arg' + l), a.push('argType' + l), i.push(r[1 + l])
for (
var u =
'return function ' +
_e('methodCaller_' + n) +
'(handle, name, destructors, args) {\n',
d = 0,
l = 0;
l < e - 1;
++l
)
(u +=
' var arg' +
l +
' = argType' +
l +
'.readValueFromPointer(args' +
(d ? '+' + d : '') +
');\n'),
(d += r[l + 1].argPackAdvance)
for (u += ' var rv = handle[name](' + s + ');\n', l = 0; l < e - 1; ++l)
r[l + 1].deleteObject && (u += ' argType' + l + '.deleteObject(arg' + l + ');\n')
t.isVoid || (u += ' return retType.toWireType(destructors, rv);\n'),
a.push((u += '};\n'))
var t = Ke(Function, a).apply(null, i),
c = ut.length
return ut.push(t), (dt[n] = o = c)
},
a: function () {
w('')
},
z: function (e, t, r) {
f.copyWithin(e, t, t + r)
},
i: function (e) {
f.length, w('OOM')
},
x: function (i, s) {
var l = 0
return (
ft().forEach(function (e, t) {
for (
var r = s + l, n = ((p[(i + 4 * t) >> 2] = r), e), o = r, a = 0;
a < n.length;
++a
)
c[o++ >> 0] = n.charCodeAt(a)
;(c[o >> 0] = 0), (l += e.length + 1)
}),
0
)
},
y: function (e, t) {
var r = ft(),
n = ((p[e >> 2] = r.length), 0)
return (
r.forEach(function (e) {
n += e.length + 1
}),
(p[t >> 2] = n),
0
)
},
n: function (e) {
try {
var t = T.getStreamFromFD(e)
return k.close(t), 0
} catch (e) {
if (void 0 !== k && e instanceof k.ErrnoError) return e.errno
throw e
}
},
w: function (e, t) {
try {
var r = T.getStreamFromFD(e),
n = r.tty ? 2 : k.isDir(r.mode) ? 3 : k.isLink(r.mode) ? 7 : 4
return (c[t >> 0] = n), 0
} catch (e) {
if (void 0 !== k && e instanceof k.ErrnoError) return e.errno
throw e
}
},
B: function (e, t, r, n) {
try {
var o = (function (e, t, r) {
for (var n = 0, o = 0; o < r; o++) {
var a = p[t >> 2],
i = p[(t + 4) >> 2],
a = ((t += 8), k.read(e, c, a, i, void 0))
if (a < 0) return -1
if (((n += a), a < i)) break
}
return n
})(T.getStreamFromFD(e), t, r)
return (u[n >> 2] = o), 0
} catch (e) {
if (void 0 !== k && e instanceof k.ErrnoError) return e.errno
throw e
}
},
t: function (e, t, r, n, o) {
try {
var a = (r + 2097152) >>> 0 < 4194305 - !!t ? (t >>> 0) + 4294967296 * r : NaN
if (isNaN(a)) return 61
var i = T.getStreamFromFD(e)
return (
k.llseek(i, a, n),
(_ = [
i.position >>> 0,
((y = i.position),
1 <= +Math.abs(y)
? 0 < y
? (0 | Math.min(+Math.floor(y / 4294967296), 4294967295)) >>> 0
: ~~+Math.ceil((y - (~~y >>> 0)) / 4294967296) >>> 0
: 0),
]),
(u[o >> 2] = _[0]),
(u[(o + 4) >> 2] = _[1]),
i.getdents && 0 === a && 0 === n && (i.getdents = null),
0
)
} catch (e) {
if (void 0 !== k && e instanceof k.ErrnoError) return e.errno
throw e
}
},
A: function (e, t, r, n) {
try {
var o = (function (e, t, r) {
for (var n = 0, o = 0; o < r; o++) {
var a = p[t >> 2],
i = p[(t + 4) >> 2],
a = ((t += 8), k.write(e, c, a, i, void 0))
if (a < 0) return -1
n += a
}
return n
})(T.getStreamFromFD(e), t, r)
return (p[n >> 2] = o), 0
} catch (e) {
if (void 0 !== k && e instanceof k.ErrnoError) return e.errno
throw e
}
},
h: function (e) {},
},
R =
(!(function () {
var t = { a: gt }
function r(e, t) {
var e = e.exports
;(g.asm = e),
(e = g.asm.F.buffer),
(X = e),
(g.HEAP8 = c = new Int8Array(e)),
(g.HEAP16 = l = new Int16Array(e)),
(g.HEAP32 = u = new Int32Array(e)),
(g.HEAPU8 = f = new Uint8Array(e)),
(g.HEAPU16 = K = new Uint16Array(e)),
(g.HEAPU32 = p = new Uint32Array(e)),
(g.HEAPF32 = Y = new Float32Array(e)),
(g.HEAPF64 = J = new Float64Array(e)),
(Z = g.asm.J),
(e = g.asm.G),
oe.unshift(e),
se()
}
function n(e) {
r(e.instance)
}
function o(e) {
return (function () {
if (!a && (z || d)) {
if ('function' == typeof fetch && !ue(h))
return fetch(h, { credentials: 'same-origin' })
.then(function (e) {
if (e.ok) return e.arrayBuffer()
throw "failed to load wasm binary file at '" + h + "'"
})
.catch(function () {
return de(h)
})
if (m)
return new Promise(function (t, e) {
m(
h,
function (e) {
t(new Uint8Array(e))
},
e,
)
})
}
return Promise.resolve().then(function () {
return de(h)
})
})()
.then(function (e) {
return WebAssembly.instantiate(e, t)
})
.then(function (e) {
return e
})
.then(e, function (e) {
s('failed to asynchronously prepare wasm: ' + e), w(e)
})
}
if ((ie(), g.instantiateWasm))
try {
return g.instantiateWasm(t, r)
} catch (t) {
return s('Module.instantiateWasm callback failed with error: ' + t)
}
a ||
'function' != typeof WebAssembly.instantiateStreaming ||
le(h) ||
ue(h) ||
j ||
'function' != typeof fetch
? o(n)
: fetch(h, { credentials: 'same-origin' }).then(function (e) {
return WebAssembly.instantiateStreaming(e, t).then(n, function (e) {
return (
s('wasm streaming compile failed: ' + e),
s('falling back to ArrayBuffer instantiation'),
o(n)
)
})
})
})(),
(g.___wasm_call_ctors = function () {
return (g.___wasm_call_ctors = g.asm.G).apply(null, arguments)
}),
(g._free = function () {
return (R = g._free = g.asm.H).apply(null, arguments)
})),
yt = (g._malloc = function () {
return (yt = g._malloc = g.asm.I).apply(null, arguments)
}),
_t = (g.___errno_location = function () {
return (_t = g.___errno_location = g.asm.K).apply(null, arguments)
}),
wt = (g.___getTypeName = function () {
return (wt = g.___getTypeName = g.asm.L).apply(null, arguments)
})
g.___embind_register_native_and_builtin_types = function () {
return (g.___embind_register_native_and_builtin_types = g.asm.M).apply(null, arguments)
}
var vt,
bt = (g._emscripten_builtin_memalign = function () {
return (bt = g._emscripten_builtin_memalign = g.asm.N).apply(null, arguments)
}),
Et = (g.___cxa_is_pointer_type = function () {
return (Et = g.___cxa_is_pointer_type = g.asm.O).apply(null, arguments)
})
function kt() {
function e() {
if (!vt && ((vt = !0), (g.calledRun = !0), !H)) {
if (
(g.noFSInit || k.init.initialized || k.init(),
(k.ignorePermissions = !1),
ce(oe),
g.onRuntimeInitialized && g.onRuntimeInitialized(),
g.postRun)
)
for ('function' == typeof g.postRun && (g.postRun = [g.postRun]); g.postRun.length; )
(e = g.postRun.shift()), ae.unshift(e)
var e
ce(ae)
}
}
if (!(0 < r)) {
if (g.preRun)
for ('function' == typeof g.preRun && (g.preRun = [g.preRun]); g.preRun.length; )
(t = g.preRun.shift()), ne.unshift(t)
var t
ce(ne),
0 < r ||
(g.setStatus
? (g.setStatus('Running...'),
setTimeout(function () {
setTimeout(function () {
g.setStatus('')
}, 1),
e()
}, 1))
: e())
}
}
if (
((g.dynCall_viiijj = function () {
return (g.dynCall_viiijj = g.asm.P).apply(null, arguments)
}),
(g.dynCall_jij = function () {
return (g.dynCall_jij = g.asm.Q).apply(null, arguments)
}),
(g.dynCall_jii = function () {
return (g.dynCall_jii = g.asm.R).apply(null, arguments)
}),
(g.dynCall_jiji = function () {
return (g.dynCall_jiji = g.asm.S).apply(null, arguments)
}),
(g._ff_h264_cabac_tables = 215452),
(n = function e() {
vt || kt(), vt || (n = e)
}),
g.preInit)
)
for ('function' == typeof g.preInit && (g.preInit = [g.preInit]); 0 < g.preInit.length; )
g.preInit.pop()()
kt(), (I.exports = g)
}),
k = 1e-6,
o = 'undefined' != typeof Float32Array ? Float32Array : Array
function T() {
var e = new o(16)
return (
o != Float32Array &&
((e[1] = 0),
(e[2] = 0),
(e[3] = 0),
(e[4] = 0),
(e[6] = 0),
(e[7] = 0),
(e[8] = 0),
(e[9] = 0),
(e[11] = 0),
(e[12] = 0),
(e[13] = 0),
(e[14] = 0)),
(e[0] = 1),
(e[5] = 1),
(e[10] = 1),
(e[15] = 1),
e
)
}
function A(e) {
;(e[0] = 1),
(e[1] = 0),
(e[2] = 0),
(e[3] = 0),
(e[4] = 0),
(e[5] = 1),
(e[6] = 0),
(e[7] = 0),
(e[8] = 0),
(e[9] = 0),
(e[10] = 1),
(e[11] = 0),
(e[12] = 0),
(e[13] = 0),
(e[14] = 0),
(e[15] = 1)
}
Math.hypot ||
(Math.hypot = function () {
for (var e = 0, t = arguments.length; t--; ) e += arguments[t] * arguments[t]
return Math.sqrt(e)
})
var D = function (e, t, r, n, o, a, i) {
var s = 1 / (t - r),
l = 1 / (n - o),
u = 1 / (a - i)
return (
(e[0] = -2 * s),
(e[1] = 0),
(e[2] = 0),
(e[3] = 0),
(e[4] = 0),
(e[5] = -2 * l),
(e[6] = 0),
(e[7] = 0),
(e[8] = 0),
(e[9] = 0),
(e[10] = 2 * u),
(e[11] = 0),
(e[12] = (t + r) * s),
(e[13] = (o + n) * l),
(e[14] = (i + a) * u),
(e[15] = 1),
e
)
}
function B(e, t, r) {
var n = new o(3)
return (n[0] = e), (n[1] = t), (n[2] = r), n
}
;(e = new o(3)), o != Float32Array && ((e[0] = 0), (e[1] = 0), (e[2] = 0))
var J = (y, e) => {
e && y.pixelStorei(y.UNPACK_ALIGNMENT, 1)
;(e = a(
y.VERTEX_SHADER,
'\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n ',
)),
(t = a(
y.FRAGMENT_SHADER,
'\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n ',
)),
(r = y.createProgram()),
y.attachShader(r, e),
y.attachShader(r, t),
y.linkProgram(r)
var t,
r,
e = y.getProgramParameter(r, y.LINK_STATUS)
? r
: (console.log('Unable to initialize the shader program: ' + y.getProgramInfoLog(r)), null)
let _ = {
program: e,
attribLocations: {
vertexPosition: y.getAttribLocation(e, 'aVertexPosition'),
texturePosition: y.getAttribLocation(e, 'aTexturePosition'),
},
uniformLocations: {
projectionMatrix: y.getUniformLocation(e, 'uProjectionMatrix'),
modelMatrix: y.getUniformLocation(e, 'uModelMatrix'),
viewMatrix: y.getUniformLocation(e, 'uViewMatrix'),
rgbatexture: y.getUniformLocation(e, 'rgbaTexture'),
ytexture: y.getUniformLocation(e, 'yTexture'),
utexture: y.getUniformLocation(e, 'uTexture'),
vtexture: y.getUniformLocation(e, 'vTexture'),
isyuv: y.getUniformLocation(e, 'isyuv'),
},
},
w =
((t = y.createBuffer()),
y.bindBuffer(y.ARRAY_BUFFER, t),
y.bufferData(
y.ARRAY_BUFFER,
new Float32Array([-1, -1, -1, 1, -1, -1, 1, 1, -1, -1, 1, -1]),
y.STATIC_DRAW,
),
(r = (r = []).concat([0, 1], [1, 1], [1, 0], [0, 0])),
(e = y.createBuffer()),
y.bindBuffer(y.ARRAY_BUFFER, e),
y.bufferData(y.ARRAY_BUFFER, new Float32Array(r), y.STATIC_DRAW),
(r = y.createBuffer()),
y.bindBuffer(y.ELEMENT_ARRAY_BUFFER, r),
y.bufferData(y.ELEMENT_ARRAY_BUFFER, new Uint16Array([0, 1, 2, 0, 2, 3]), y.STATIC_DRAW),
{ position: t, texPosition: e, indices: r }),
n = o(),
v = o(),
b = o(),
E = o()
function o() {
var e = y.createTexture()
return (
y.bindTexture(y.TEXTURE_2D, e),
y.texParameteri(y.TEXTURE_2D, y.TEXTURE_MAG_FILTER, y.LINEAR),
y.texParameteri(y.TEXTURE_2D, y.TEXTURE_MIN_FILTER, y.LINEAR),
y.texParameteri(y.TEXTURE_2D, y.TEXTURE_WRAP_S, y.CLAMP_TO_EDGE),
y.texParameteri(y.TEXTURE_2D, y.TEXTURE_WRAP_T, y.CLAMP_TO_EDGE),
e
)
}
function a(e, t) {
e = y.createShader(e)
return (
y.shaderSource(e, t),
y.compileShader(e),
y.getShaderParameter(e, y.COMPILE_STATUS)
? e
: (console.log('An error occurred compiling the shaders: ' + y.getShaderInfoLog(e)),
y.deleteShader(e),
null)
)
}
function i(e, t) {
y.viewport(0, 0, e, t),
y.clearColor(0, 0, 0, 0),
y.clearDepth(1),
y.enable(y.DEPTH_TEST),
y.depthFunc(y.LEQUAL),
y.clear(y.COLOR_BUFFER_BIT | y.DEPTH_BUFFER_BIT)
const r = T()
D(r, -1, 1, -1, 1, 0.1, 100)
var n,
o,
a,
i,
s,
l,
u,
d,
c,
f,
p,
h,
m,
g,
e = T(),
t = (A(e), T())
;(n = t),
(o = B(0, 0, 0)),
(a = B(0, 0, -1)),
(i = B(0, 1, 0)),
(c = o[0]),
(f = o[1]),
(o = o[2]),
(p = i[0]),
(h = i[1]),
(i = i[2]),
(m = a[0]),
(g = a[1]),
(a = a[2]),
Math.abs(c - m) < k && Math.abs(f - g) < k && Math.abs(o - a) < k
? A(n)
: ((a = o - a),
(s = h * (a *= d = 1 / Math.hypot((m = c - m), (g = f - g), a)) - i * (g *= d)),
(i = i * (m *= d) - p * a),
(p = p * g - h * m),
(d = Math.hypot(s, i, p)) ? ((s *= d = 1 / d), (i *= d), (p *= d)) : (p = i = s = 0),
(h = g * p - a * i),
(l = a * s - m * p),
(u = m * i - g * s),
(d = Math.hypot(h, l, u)) ? ((h *= d = 1 / d), (l *= d), (u *= d)) : (u = l = h = 0),
(n[0] = s),
(n[1] = h),
(n[2] = m),
(n[3] = 0),
(n[4] = i),
(n[5] = l),
(n[6] = g),
(n[7] = 0),
(n[8] = p),
(n[9] = u),
(n[10] = a),
(n[11] = 0),
(n[12] = -(s * c + i * f + p * o)),
(n[13] = -(h * c + l * f + u * o)),
(n[14] = -(m * c + g * f + a * o)),
(n[15] = 1))
{
const e = 3,
t = y.FLOAT,
r = !1,
v = 0,
b = 0
y.bindBuffer(y.ARRAY_BUFFER, w.position),
y.vertexAttribPointer(_.attribLocations.vertexPosition, 3, t, !1, 0, 0),
y.enableVertexAttribArray(_.attribLocations.vertexPosition)
}
{
const e = 2,
t = y.FLOAT,
r = !1,
v = 0,
b = 0
y.bindBuffer(y.ARRAY_BUFFER, w.texPosition),
y.vertexAttribPointer(_.attribLocations.texturePosition, 2, t, !1, 0, 0),
y.enableVertexAttribArray(_.attribLocations.texturePosition)
}
y.activeTexture(y.TEXTURE0 + 3),
y.bindTexture(y.TEXTURE_2D, v),
y.activeTexture(y.TEXTURE0 + 4),
y.bindTexture(y.TEXTURE_2D, b),
y.activeTexture(y.TEXTURE0 + 5),
y.bindTexture(y.TEXTURE_2D, E),
y.bindBuffer(y.ELEMENT_ARRAY_BUFFER, w.indices),
y.useProgram(_.program),
y.uniformMatrix4fv(_.uniformLocations.projectionMatrix, !1, r),
y.uniformMatrix4fv(_.uniformLocations.modelMatrix, !1, e),
y.uniformMatrix4fv(_.uniformLocations.viewMatrix, !1, t),
y.uniform1i(_.uniformLocations.rgbatexture, 2),
y.uniform1i(_.uniformLocations.ytexture, 3),
y.uniform1i(_.uniformLocations.utexture, 4),
y.uniform1i(_.uniformLocations.vtexture, 5),
y.uniform1i(_.uniformLocations.isyuv, 1)
{
const e = 6,
t = y.UNSIGNED_SHORT,
_ = 0
y.drawElements(y.TRIANGLES, 6, t, 0)
}
}
return {
render: function (e, t, r, n, o) {
y.activeTexture(y.TEXTURE0),
y.bindTexture(y.TEXTURE_2D, v),
y.texImage2D(y.TEXTURE_2D, 0, y.LUMINANCE, e, t, 0, y.LUMINANCE, y.UNSIGNED_BYTE, r),
y.activeTexture(y.TEXTURE1),
y.bindTexture(y.TEXTURE_2D, b),
y.texImage2D(
y.TEXTURE_2D,
0,
y.LUMINANCE,
e / 2,
t / 2,
0,
y.LUMINANCE,
y.UNSIGNED_BYTE,
n,
),
y.activeTexture(y.TEXTURE2),
y.bindTexture(y.TEXTURE_2D, E),
y.texImage2D(
y.TEXTURE_2D,
0,
y.LUMINANCE,
e / 2,
t / 2,
0,
y.LUMINANCE,
y.UNSIGNED_BYTE,
o,
),
i(e, t)
},
renderYUV: function (e, t, r) {
var n = r.slice(0, e * t),
o = r.slice(e * t, (e * t * 5) / 4),
r = r.slice((e * t * 5) / 4, (e * t * 3) / 2)
y.activeTexture(y.TEXTURE0),
y.bindTexture(y.TEXTURE_2D, v),
y.texImage2D(y.TEXTURE_2D, 0, y.LUMINANCE, e, t, 0, y.LUMINANCE, y.UNSIGNED_BYTE, n),
y.activeTexture(y.TEXTURE1),
y.bindTexture(y.TEXTURE_2D, b),
y.texImage2D(
y.TEXTURE_2D,
0,
y.LUMINANCE,
e / 2,
t / 2,
0,
y.LUMINANCE,
y.UNSIGNED_BYTE,
o,
),
y.activeTexture(y.TEXTURE2),
y.bindTexture(y.TEXTURE_2D, E),
y.texImage2D(
y.TEXTURE_2D,
0,
y.LUMINANCE,
e / 2,
t / 2,
0,
y.LUMINANCE,
y.UNSIGNED_BYTE,
r,
),
i(e, t)
},
destroy: function () {
y.deleteProgram(_.program),
y.deleteBuffer(w.position),
y.deleteBuffer(w.texPosition),
y.deleteBuffer(w.indices),
y.deleteTexture(n),
y.deleteTexture(v),
y.deleteTexture(b),
y.deleteTexture(E),
(_ = null),
(w = null),
(n = null),
(v = null),
(b = null),
(E = null)
},
}
}
const Z = 'fetch',
x = 'player',
L = 'mp4',
w = 'debug',
v = 'warn',
Q = {
playType: x,
container: '',
videoBuffer: 1e3,
videoBufferDelay: 1e3,
networkDelay: 1e4,
isResize: !0,
isFullResize: !1,
isFlv: !1,
isHls: !1,
isWebrtc: !1,
isWebrtcForZLM: !1,
isNakedFlow: !1,
debug: !1,
debugLevel: v,
debugUuid: '',
isMulti: !1,
hotKey: !1,
loadingTimeout: 10,
heartTimeout: 10,
timeout: 10,
pageVisibilityHiddenTimeout: 300,
loadingTimeoutReplay: !0,
heartTimeoutReplay: !0,
loadingTimeoutReplayTimes: 3,
heartTimeoutReplayTimes: 3,
heartTimeoutReplayUseLastFrameShow: !1,
replayUseLastFrameShow: !1,
supportDblclickFullscreen: !1,
showBandwidth: !1,
showPerformance: !1,
mseCorrectTimeDuration: 20,
keepScreenOn: !0,
isNotMute: !1,
hasAudio: !0,
hasVideo: !0,
operateBtns: {
fullscreen: !1,
screenshot: !1,
play: !1,
audio: !1,
record: !1,
ptz: !1,
quality: !1,
zoom: !1,
close: !1,
scale: !1,
performance: !1,
aiFace: !1,
aiObject: !1,
fullscreenFn: null,
fullscreenExitFn: null,
screenshotFn: null,
playFn: null,
pauseFn: null,
recordFn: null,
recordStopFn: null,
},
extendOperateBtns: [],
contextmenuBtns: [],
watermarkConfig: {},
controlAutoHide: !1,
hasControl: !1,
loadingIcon: !0,
loadingText: '',
background: '',
backgroundLoadingShow: !1,
loadingBackground: '',
decoder: 'decoder-pro.js',
decoderAudio: 'decoder-pro-audio.js',
decoderWASM: '',
isDecoderUseCDN: !1,
url: '',
rotate: 0,
mirrorRotate: 'none',
playbackConfig: {
playList: [],
fps: '',
showControl: !0,
showRateBtn: !1,
rateConfig: [],
isCacheBeforeDecodeForFpsRender: !1,
uiUsePlaybackPause: !1,
isPlaybackPauseClearCache: !0,
isUseFpsRender: !1,
isUseLocalCalculateTime: !1,
localOneFrameTimestamp: 40,
supportWheel: !1,
},
qualityConfig: [],
defaultStreamQuality: '',
scaleConfig: ['拉伸', '缩放', '正常'],
forceNoOffscreen: !0,
hiddenAutoPause: !1,
protocol: 2,
demuxType: 'flv',
useWasm: !1,
useWCS: !1,
useSIMD: !0,
wcsUseVideoRender: !0,
wasmUseVideoRender: !0,
mseUseCanvasRender: !1,
hlsUseCanvasRender: !1,
useMSE: !1,
useOffscreen: !1,
useWebGPU: !1,
mseDecodeErrorReplay: !0,
wcsDecodeErrorReplay: !0,
wasmDecodeErrorReplay: !0,
autoWasm: !0,
webglAlignmentErrorReplay: !0,
webglContextLostErrorReplay: !0,
openWebglAlignment: !1,
syncAudioAndVideo: !1,
playbackDelayTime: 1e3,
playbackFps: 25,
playbackForwardMaxRateDecodeIFrame: 4,
playbackCurrentTimeMove: !0,
useVideoRender: !0,
useCanvasRender: !1,
networkDelayTimeoutReplay: !1,
recordType: L,
checkFirstIFrame: !0,
nakedFlowFps: 25,
audioEngine: null,
isShowRecordingUI: !0,
isShowZoomingUI: !0,
useFaceDetector: !1,
useObjectDetector: !1,
ptzClickType: 'click',
ptzStopEmitDelay: 0.3,
ptzZoomShow: !1,
ptzApertureShow: !1,
ptzFocusShow: !1,
ptzMoreArrow: !1,
weiXinInAndroidAudioBufferSize: 4800,
isCrypto: !1,
cryptoKey: '',
cryptoIV: '',
cryptoKeyUrl: '',
autoResize: !1,
useWebFullScreen: !1,
ptsMaxDiff: 3600,
aiFaceDetectWidth: 192,
aiObjectDetectWidth: 192,
videoRenderSupportScale: !0,
mediaSourceTsIsMaxDiffReplay: !0,
controlHtml: '',
isH265: !1,
supportLockScreenPlayAudio: !0,
supportHls265: !1,
},
ee = 'initVideo',
R = 'render',
te = 'playAudio',
re = 'videoCode',
ne = 'videoCodec',
I = 'workerFetch',
oe = 'workerEnd',
M = 'streamEnd',
ae = 'streamSuccess',
$ = 'fetchError',
ie = 'H264(AVC)',
se = 'H265(HEVC)',
N = 10,
O = 7,
G = 8,
b = 5,
E = 6,
V = 32,
z = 33,
j = 34,
W = 'AbortError',
le = 0
function ue(e) {
return e[0] >> 4 === N && e[1] === le
}
function de() {
return new Date().getTime()
}
function ce() {
return (performance && 'function' == typeof performance.now ? performance : Date).now()
}
y(function (e) {
var i, t, s, r, n
;(i = 'undefined' != typeof window && void 0 !== window.document ? window.document : {}),
(t = e.exports),
(s = (function () {
for (
var e,
t = [
[
'requestFullscreen',
'exitFullscreen',
'fullscreenElement',
'fullscreenEnabled',
'fullscreenchange',
'fullscreenerror',
],
[
'webkitRequestFullscreen',
'webkitExitFullscreen',
'webkitFullscreenElement',
'webkitFullscreenEnabled',
'webkitfullscreenchange',
'webkitfullscreenerror',
],
[
'webkitRequestFullScreen',
'webkitCancelFullScreen',
'webkitCurrentFullScreenElement',
'webkitCancelFullScreen',
'webkitfullscreenchange',
'webkitfullscreenerror',
],
[
'mozRequestFullScreen',
'mozCancelFullScreen',
'mozFullScreenElement',
'mozFullScreenEnabled',
'mozfullscreenchange',
'mozfullscreenerror',
],
[
'msRequestFullscreen',
'msExitFullscreen',
'msFullscreenElement',
'msFullscreenEnabled',
'MSFullscreenChange',
'MSFullscreenError',
],
],
r = 0,
n = t.length,
o = {};
r < n;
r++
)
if ((e = t[r]) && e[1] in i) {
for (r = 0; r < e.length; r++) o[t[0][r]] = e[r]
return o
}
return !1
})()),
(r = { change: s.fullscreenchange, error: s.fullscreenerror }),
(n = {
request: function (o, a) {
return new Promise(
function (e, t) {
var r = function () {
this.off('change', r), e()
}.bind(this),
n = (this.on('change', r), (o = o || i.documentElement)[s.requestFullscreen](a))
n instanceof Promise && n.then(r).catch(t)
}.bind(this),
)
},
exit: function () {
return new Promise(
function (e, t) {
var r, n
this.isFullscreen
? ((r = function () {
this.off('change', r), e()
}.bind(this)),
this.on('change', r),
(n = i[s.exitFullscreen]()) instanceof Promise && n.then(r).catch(t))
: e()
}.bind(this),
)
},
toggle: function (e, t) {
return this.isFullscreen ? this.exit() : this.request(e, t)
},
onchange: function (e) {
this.on('change', e)
},
onerror: function (e) {
this.on('error', e)
},
on: function (e, t) {
e = r[e]
e && i.addEventListener(e, t, !1)
},
off: function (e, t) {
e = r[e]
e && i.removeEventListener(e, t, !1)
},
raw: s,
}),
s
? (Object.defineProperties(n, {
isFullscreen: {
get: function () {
return Boolean(i[s.fullscreenElement])
},
},
element: {
enumerable: !0,
get: function () {
return i[s.fullscreenElement]
},
},
isEnabled: {
enumerable: !0,
get: function () {
return Boolean(i[s.fullscreenEnabled])
},
},
}),
t ? (e.exports = n) : (window.screenfull = n))
: t
? (e.exports = { isEnabled: !1 })
: (window.screenfull = { isEnabled: !1 })
}).isEnabled
try {
if ('object' == typeof WebAssembly && 'function' == typeof WebAssembly.instantiate) {
var S = new WebAssembly.Module(Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0))
if (S instanceof WebAssembly.Module) new WebAssembly.Instance(S), WebAssembly.Instance
}
} catch (e) {}
function H(e) {
return null == e
}
function fe(r, n) {
let o = (r = n ? r.filter(e => e.type === n) : r)[0],
a = null,
e = 1
var t
if ((0 < r.length && (t = r[1]) && 1e5 < t.ts - o.ts && ((o = t), (e = 2)), o))
for (let t = e; t < r.length; t++) {
let e = r[t]
!(e = n && e.type !== n ? null : e) ||
(1e3 <= e.ts - o.ts && r[t - 1].ts - o.ts < 1e3 && (a = t + 1))
}
return a
}
function pe(e) {
return !0 === e || 'true' === e
}
const C = [
[Uint8Array, Int8Array],
[Uint16Array, Int16Array],
[Uint32Array, Int32Array, Float32Array],
[Float64Array],
],
F = Symbol(32),
U = Symbol(16),
P = Symbol(8),
he = new Map()
C.forEach((e, t) => e.forEach(e => he.set(e, t)))
class q {
constructor(e) {
;(this.g = e), (this.consumed = 0), e && (this.need = e.next().value)
}
fillFromReader(r) {
return (
(e = this),
(l = function* () {
var { done: e, value: t } = yield r.read()
return e ? void this.close() : (this.write(t), this.fillFromReader(r))
}),
new (s = (s = i = void 0) || Promise)(function (r, t) {
function n(e) {
try {
a(l.next(e))
} catch (e) {
t(e)
}
}
function o(e) {
try {
a(l.throw(e))
} catch (e) {
t(e)
}
}
function a(e) {
var t
e.done
? r(e.value)
: ((t = e.value) instanceof s
? t
: new s(function (e) {
e(t)
})
).then(n, o)
}
a((l = l.apply(e, i || [])).next())
})
)
var e, i, s, l
}
consume() {
this.buffer &&
this.consumed &&
(this.buffer.copyWithin(0, this.consumed),
(this.buffer = this.buffer.subarray(0, this.buffer.length - this.consumed)),
(this.consumed = 0))
}
demand(e, t) {
return t && this.consume(), (this.need = e), this.flush()
}
read(r) {
return new Promise((t, e) => {
if (this.resolve) return e('last read not complete yet')
;(this.resolve = e => {
delete this.resolve, delete this.need, t(e)
}),
this.demand(r, !0)
})
}
readU32() {
return this.read(F)
}
readU16() {
return this.read(U)
}
readU8() {
return this.read(P)
}
close() {
this.g && this.g.return()
}
flush() {
if (this.buffer && this.need) {
let e = null
const n = this.buffer.subarray(this.consumed)
let t = 0
var r = e => n.length < (t = e)
if ('number' == typeof this.need) {
if (r(this.need)) return
e = n.subarray(0, t)
} else if (this.need instanceof ArrayBuffer) {
if (r(this.need.byteLength)) return
new Uint8Array(this.need).set(n.subarray(0, t)), (e = this.need)
} else if (this.need === F) {
if (r(4)) return
e = (n[0] << 24) | (n[1] << 16) | (n[2] << 8) | n[3]
} else if (this.need === U) {
if (r(2)) return
e = (n[0] << 8) | n[1]
} else if (this.need === P) {
if (r(1)) return
e = n[0]
} else if (he.has(this.need.constructor)) {
if (r(this.need.length << he.get(this.need.constructor))) return
new Uint8Array(this.need.buffer, this.need.byteOffset).set(n.subarray(0, t)),
(e = this.need)
} else if (this.g) return void this.g.throw(new Error('Unsupported type'))
return (
(this.consumed += t),
this.g ? this.demand(this.g.next(e).value, !0) : this.resolve && this.resolve(e),
e
)
}
}
write(e) {
e instanceof ArrayBuffer
? this.malloc(e.byteLength).set(new Uint8Array(e))
: this.malloc(e.byteLength).set(new Uint8Array(e.buffer, e.byteOffset, e.byteLength)),
(this.g || this.resolve) && this.flush()
}
writeU32(e) {
this.malloc(4).set([(e >> 24) & 255, (e >> 16) & 255, (e >> 8) & 255, 255 & e]), this.flush()
}
writeU16(e) {
this.malloc(2).set([(e >> 8) & 255, 255 & e]), this.flush()
}
writeU8(e) {
;(this.malloc(1)[0] = e), this.flush()
}
malloc(e) {
if (this.buffer) {
var t = this.buffer.length,
r = t + e
if (r <= this.buffer.buffer.byteLength - this.buffer.byteOffset)
this.buffer = new Uint8Array(this.buffer.buffer, this.buffer.byteOffset, r)
else {
const e = new Uint8Array(r)
e.set(this.buffer), (this.buffer = e)
}
return this.buffer.subarray(t, r)
}
return (this.buffer = new Uint8Array(e)), this.buffer
}
}
;(q.U32 = F), (q.U16 = U), (q.U8 = P)
class me {
constructor(a) {
;(this.log = function (e) {
if (a._opt.debug && a._opt.debugLevel == w) {
for (
var t = a._opt.debugUuid ? `[${a._opt.debugUuid}]` : '',
r = arguments.length,
n = new Array(1 < r ? r - 1 : 0),
o = 1;
o < r;
o++
)
n[o - 1] = arguments[o]
console.log(`JbPro${t}:[✅✅✅][${e}]`, ...n)
}
}),
(this.warn = function (e) {
if (a._opt.debug && (a._opt.debugLevel == w || a._opt.debugLevel == v)) {
for (
var t = a._opt.debugUuid ? `[${a._opt.debugUuid}]` : '',
r = arguments.length,
n = new Array(1 < r ? r - 1 : 0),
o = 1;
o < r;
o++
)
n[o - 1] = arguments[o]
console.log(`JbPro${t}:[❗❗❗][${e}]`, ...n)
}
}),
(this.error = function (e) {
for (
var t = a._opt.debugUuid ? `[${a._opt.debugUuid}]` : '',
r = arguments.length,
n = new Array(1 < r ? r - 1 : 0),
o = 1;
o < r;
o++
)
n[o - 1] = arguments[o]
console.error(`JbPro${t}:[❌❌❌][${e}]`, ...n)
})
}
}
class X {
constructor(e) {
;(this._buffer = e),
(this._buffer_index = 0),
(this._total_bytes = e.byteLength),
(this._total_bits = 8 * e.byteLength),
(this._current_word = 0),
(this._current_word_bits_left = 0)
}
destroy() {
this._buffer = null
}
_fillCurrentWord() {
var r = this._total_bytes - this._buffer_index
if (r <= 0)
console.error(
'ExpGolomb: _fillCurrentWord() but no bytes available',
this._total_bytes,
this._buffer_index,
)
else {
let e = Math.min(4, r),
t = new Uint8Array(4)
t.set(this._buffer.subarray(this._buffer_index, this._buffer_index + e)),
(this._current_word = new DataView(t.buffer).getUint32(0, !1)),
(this._buffer_index += e),
(this._current_word_bits_left = 8 * e)
}
}
readBits(e) {
if (
(32 < e && console.error('ExpGolomb: readBits() bits exceeded max 32bits!'),
e <= this._current_word_bits_left)
)
return (
(t = this._current_word >>> (32 - e)),
(this._current_word <<= e),
(this._current_word_bits_left -= e),
t
)
var t = this._current_word_bits_left ? this._current_word : 0,
e = ((t >>>= 32 - this._current_word_bits_left), e - this._current_word_bits_left),
e = (this._fillCurrentWord(), Math.min(e, this._current_word_bits_left)),
r = this._current_word >>> (32 - e)
return (this._current_word <<= e), (this._current_word_bits_left -= e), (t << e) | r
}
readBool() {
return 1 === this.readBits(1)
}
readByte() {
return this.readBits(8)
}
_skipLeadingZero() {
let e
for (e = 0; e < this._current_word_bits_left; e++)
if (0 != (this._current_word & (2147483648 >>> e)))
return (this._current_word <<= e), (this._current_word_bits_left -= e), e
return this._fillCurrentWord(), e + this._skipLeadingZero()
}
readUEG() {
var e = this._skipLeadingZero()
return this.readBits(e + 1) - 1
}
readSEG() {
var e = this.readUEG()
return 1 & e ? (e + 1) >>> 1 : -1 * (e >>> 1)
}
}
class K {
static _ebsp2rbsp(e) {
let t = e,
r = t.byteLength,
n = new Uint8Array(r),
o = 0
for (let e = 0; e < r; e++)
(2 <= e && 3 === t[e] && 0 === t[e - 1] && 0 === t[e - 2]) || ((n[o] = t[e]), o++)
return new Uint8Array(n.buffer, 0, o)
}
static parseSPS(e) {
let t = K._ebsp2rbsp(e),
r = new X(t)
r.readByte()
var e = r.readByte(),
n = (r.readByte(), r.readByte())
r.readUEG()
let o = K.getProfileString(e),
a = K.getLevelString(n),
i = 1,
s = 420,
l = 8
if (
(100 === e ||
110 === e ||
122 === e ||
244 === e ||
44 === e ||
83 === e ||
86 === e ||
118 === e ||
128 === e ||
138 === e ||
144 === e) &&
(3 === (i = r.readUEG()) && r.readBits(1),
i <= 3 && (s = [0, 420, 422, 444][i]),
(l = r.readUEG() + 8),
r.readUEG(),
r.readBits(1),
r.readBool())
) {
var u = 3 !== i ? 8 : 12
for (let e = 0; e < u; e++)
r.readBool() && (e < 6 ? K._skipScalingList(r, 16) : K._skipScalingList(r, 64))
}
r.readUEG()
n = r.readUEG()
if (0 === n) r.readUEG()
else if (1 === n) {
r.readBits(1), r.readSEG(), r.readSEG()
var d = r.readUEG()
for (let e = 0; e < d; e++) r.readSEG()
}
var e = r.readUEG(),
n = (r.readBits(1), r.readUEG()),
c = r.readUEG(),
f = r.readBits(1)
0 === f && r.readBits(1), r.readBits(1)
let p = 0,
h = 0,
m = 0,
g = 0,
y =
(r.readBool() &&
((p = r.readUEG()), (h = r.readUEG()), (m = r.readUEG()), (g = r.readUEG())),
1),
_ = 1,
w = 0,
v = !0,
b = 0,
E = 0,
k =
(r.readBool() &&
(r.readBool() &&
(0 < (D = r.readByte()) && D < 16
? ((y = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2][D - 1]),
(_ = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1][D - 1]))
: 255 === D &&
((y = (r.readByte() << 8) | r.readByte()),
(_ = (r.readByte() << 8) | r.readByte()))),
r.readBool() && r.readBool(),
r.readBool() && (r.readBits(4), r.readBool() && r.readBits(24)),
r.readBool() && (r.readUEG(), r.readUEG()),
r.readBool() &&
((D = r.readBits(32)),
(A = r.readBits(32)),
(v = r.readBool()),
(b = A),
(E = 2 * D),
(w = b / E))),
1),
T = ((1 === y && 1 === _) || (k = y / _), 0),
B = 0
B = 0 === i ? ((T = 1), 2 - f) : ((T = 3 === i ? 1 : 2), (1 === i ? 2 : 1) * (2 - f))
var A = 16 * (n + 1),
D = 16 * (c + 1) * (2 - f),
n = ((A -= (p + h) * T), (D -= (m + g) * B), Math.ceil(A * k))
return (
r.destroy(),
(r = null),
{
profile_string: o,
level_string: a,
bit_depth: l,
ref_frames: e,
chroma_format: s,
chroma_format_string: K.getChromaFormatString(s),
frame_rate: { fixed: v, fps: w, fps_den: E, fps_num: b },
sar_ratio: { width: y, height: _ },
codec_size: { width: A, height: D },
present_size: { width: n, height: D },
}
)
}
static parseSPS$2(e) {
let r = e.subarray(1, 4),
n = 'avc1.'
for (let t = 0; t < 3; t++) {
let e = r[t].toString(16)
e.length < 2 && (e = '0' + e), (n += e)
}
let t = K._ebsp2rbsp(e),
o = new X(t)
o.readByte()
var e = o.readByte(),
a = (o.readByte(), o.readByte())
o.readUEG()
let i = K.getProfileString(e),
s = K.getLevelString(a),
l = 1,
u = 420,
d = 8,
c = 8
if (
(100 === e ||
110 === e ||
122 === e ||
244 === e ||
44 === e ||
83 === e ||
86 === e ||
118 === e ||
128 === e ||
138 === e ||
144 === e) &&
(3 === (l = o.readUEG()) && o.readBits(1),
l <= 3 && (u = [0, 420, 422, 444][l]),
(d = o.readUEG() + 8),
(c = o.readUEG() + 8),
o.readBits(1),
o.readBool())
) {
var f = 3 !== l ? 8 : 12
for (let e = 0; e < f; e++)
o.readBool() && (e < 6 ? K._skipScalingList(o, 16) : K._skipScalingList(o, 64))
}
o.readUEG()
var p = o.readUEG()
if (0 === p) o.readUEG()
else if (1 === p) {
o.readBits(1), o.readSEG(), o.readSEG()
var h = o.readUEG()
for (let e = 0; e < h; e++) o.readSEG()
}
var p = o.readUEG(),
m = (o.readBits(1), o.readUEG()),
g = o.readUEG(),
y = o.readBits(1)
0 === y && o.readBits(1), o.readBits(1)
let _ = 0,
w = 0,
v = 0,
b = 0,
E =
(o.readBool() &&
((_ = o.readUEG()), (w = o.readUEG()), (v = o.readUEG()), (b = o.readUEG())),
1),
k = 1,
T = 0,
B = !0,
A = 0,
D = 0,
S =
(o.readBool() &&
(o.readBool() &&
(0 < (P = o.readByte()) && P < 16
? ((E = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2][P - 1]),
(k = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1][P - 1]))
: 255 === P &&
((E = (o.readByte() << 8) | o.readByte()),
(k = (o.readByte() << 8) | o.readByte()))),
o.readBool() && o.readBool(),
o.readBool() && (o.readBits(4), o.readBool() && o.readBits(24)),
o.readBool() && (o.readUEG(), o.readUEG()),
o.readBool() &&
((P = o.readBits(32)),
(U = o.readBits(32)),
(B = o.readBool()),
(A = U),
(D = 2 * P),
(T = A / D))),
1),
C = ((1 === E && 1 === k) || (S = E / k), 0),
F = 0
F = 0 === l ? ((C = 1), 2 - y) : ((C = 3 === l ? 1 : 2), (1 === l ? 2 : 1) * (2 - y))
var U = 16 * (m + 1),
P = 16 * (g + 1) * (2 - y),
m = ((U -= (_ + w) * C), (P -= (v + b) * F), Math.ceil(U * S))
return (
o.destroy(),
(o = null),
{
codec_mimetype: n,
profile_idc: e,
level_idc: a,
profile_string: i,
level_string: s,
chroma_format_idc: l,
bit_depth: d,
bit_depth_luma: d,
bit_depth_chroma: c,
ref_frames: p,
chroma_format: u,
chroma_format_string: K.getChromaFormatString(u),
frame_rate: { fixed: B, fps: T, fps_den: D, fps_num: A },
sar_ratio: { width: E, height: k },
codec_size: { width: U, height: P },
present_size: { width: m, height: P },
}
)
}
static _skipScalingList(t, r) {
let n = 8,
o = 8,
a
for (let e = 0; e < r; e++)
0 !== o && ((a = t.readSEG()), (o = (n + a + 256) % 256)), (n = 0 === o ? n : o)
}
static getProfileString(e) {
switch (e) {
case 66:
return 'Baseline'
case 77:
return 'Main'
case 88:
return 'Extended'
case 100:
return 'High'
case 110:
return 'High10'
case 122:
return 'High422'
case 244:
return 'High444'
default:
return 'Unknown'
}
}
static getLevelString(e) {
return (e / 10).toFixed(1)
}
static getChromaFormatString(e) {
switch (e) {
case 420:
return '4:2:0'
case 422:
return '4:2:2'
case 444:
return '4:4:4'
default:
return 'Unknown'
}
}
}
class ge {
constructor(e) {
;(this.buffer = e),
(this.buflen = e.length),
(this.bufpos = 0),
(this.bufoff = 0),
(this.iserro = !1)
}
read(e) {
let t = 0,
r
for (; e; ) {
if (e < 0 || this.bufpos >= this.buflen) return (this.iserro = !0), 0
;(this.iserro = !1),
(r = 8 < this.bufoff + e ? 8 - this.bufoff : e),
(t =
(t <<= r) + ((this.buffer[this.bufpos] >> (8 - this.bufoff - r)) & (255 >> (8 - r)))),
(this.bufoff += r),
(e -= r),
8 == this.bufoff && (this.bufpos++, (this.bufoff = 0))
}
return t
}
look(e) {
var t = this.bufpos,
r = this.bufoff,
e = this.read(e)
return (this.bufpos = t), (this.bufoff = r), e
}
read_golomb() {
let e
for (e = 0; 0 === this.read(1) && !this.iserro; e++);
return (1 << e) + this.read(e) - 1
}
}
function ye(r) {
const o = {},
n = new DataView(r.buffer)
let e = n.getUint8(0),
t = n.getUint8(1)
if ((n.getUint8(2), n.getUint8(3), 1 !== e || 0 === t)) return {}
var a = 1 + (3 & n.getUint8(4))
if (3 != a && 4 != a) return {}
var i = 31 & n.getUint8(5)
if (0 == i) return {}
let s = 6
for (let t = 0; t < i; t++) {
var l = n.getUint16(s, !1)
if (((s += 2), 0 !== l)) {
let e = new Uint8Array(r.buffer, s, l)
s += l
l = K.parseSPS(e)
if (0 === t) {
;(o.sps = e),
(o.timescale = 1e3),
(o.codecWidth = l.codec_size.width),
(o.codecHeight = l.codec_size.height),
(o.presentWidth = l.present_size.width),
(o.presentHeight = l.present_size.height),
(o.profile = l.profile_string),
(o.level = l.level_string),
(o.bitDepth = l.bit_depth),
(o.chromaFormat = l.chroma_format),
(o.sarRatio = l.sar_ratio),
(o.frameRate = l.frame_rate),
(!1 !== l.frame_rate.fixed &&
0 !== l.frame_rate.fps_num &&
0 !== l.frame_rate.fps_den) ||
(o.frameRate = { fixed: !0, fps: 23.976, fps_num: 23976, fps_den: 1e3 })
var l = o.frameRate.fps_den,
u = o.frameRate.fps_num
o.refSampleDuration = o.timescale * (l / u)
let r = e.subarray(1, 4),
n = 'avc1.'
for (let t = 0; t < 3; t++) {
let e = r[t].toString(16)
e.length < 2 && (e = '0' + e), (n += e)
}
o.codec = n
}
}
}
var d = n.getUint8(s)
if (0 === d) return {}
s++
for (let e = 0; e < d; e++) {
var c,
f = n.getUint16(s, !1)
;(s += 2), 0 !== f && ((c = new Uint8Array(r.buffer, s, f)), (s += f), (o.pps = c))
}
if (((o.videoType = 'avc'), o.sps)) {
const r = o.sps.byteLength,
n = new Uint8Array([(r >>> 24) & 255, (r >>> 16) & 255, (r >>> 8) & 255, 255 & r]),
e = new Uint8Array(r + 4)
e.set(n, 0), e.set(o.sps, 4), (o.sps = e)
}
if (o.pps) {
const r = o.pps.byteLength,
n = new Uint8Array([(r >>> 24) & 255, (r >>> 16) & 255, (r >>> 8) & 255, 255 & r]),
e = new Uint8Array(r + 4)
e.set(n, 0), e.set(o.pps, 4), (o.pps = e)
}
return o
}
function _e(e) {
const t = e.byteLength,
r = new Uint8Array(4),
n =
((r[0] = (t >>> 24) & 255),
(r[1] = (t >>> 16) & 255),
(r[2] = (t >>> 8) & 255),
(r[3] = 255 & t),
new Uint8Array(t + 4))
return n.set(r, 0), n.set(e, 4), n
}
function Y(e) {
return 31 & e[0]
}
function we(e) {
return e === E
}
function ve(e) {
return (t = e) !== O && t !== G && !we(e)
var t
}
function be(e) {
return e === b
}
const Ee = e => {
let t = e,
r = t.byteLength,
n = new Uint8Array(r),
o = 0
for (let e = 0; e < r; e++)
(2 <= e && 3 === t[e] && 0 === t[e - 1] && 0 === t[e - 2]) || ((n[o] = t[e]), o++)
return new Uint8Array(n.buffer, 0, o)
},
ke = e => {
switch (e) {
case 0:
return '4:0:0'
case 1:
return '4:2:0'
case 2:
return '4:2:2'
case 3:
return '4:4:4'
default:
return 'Unknown'
}
}
function Te(e) {
return (126 & e[0]) >> 1
}
function Be(e) {
return parseInt(e) === e
}
function Ae(e) {
if (Be(e.length)) {
for (var t = 0; t < e.length; t++) if (!Be(e[t]) || e[t] < 0 || 255 < e[t]) return
return 1
}
}
function a(e, t) {
if (e.buffer && 'Uint8Array' === e.name)
return (e = t ? (e.slice ? e.slice() : Array.prototype.slice.call(e)) : e)
if (Array.isArray(e)) {
if (Ae(e)) return new Uint8Array(e)
throw new Error('Array contains invalid value: ' + e)
}
if (Be(e.length) && Ae(e)) return new Uint8Array(e)
throw new Error('unsupported array-like object')
}
function l(e) {
return new Uint8Array(e)
}
function i(e, t, r, n, o) {
;(null == n && null == o) ||
(e = e.slice ? e.slice(n, o) : Array.prototype.slice.call(e, n, o)),
t.set(e, r)
}
var De,
m = {
toBytes: function (e) {
var t = [],
r = 0
for (e = encodeURI(e); r < e.length; ) {
var n = e.charCodeAt(r++)
37 === n ? (t.push(parseInt(e.substr(r, 2), 16)), (r += 2)) : t.push(n)
}
return a(t)
},
fromBytes: function (e) {
for (var t = [], r = 0; r < e.length; ) {
var n = e[r]
n < 128
? (t.push(String.fromCharCode(n)), r++)
: 191 < n && n < 224
? (t.push(String.fromCharCode(((31 & n) << 6) | (63 & e[r + 1]))), (r += 2))
: (t.push(
String.fromCharCode(((15 & n) << 12) | ((63 & e[r + 1]) << 6) | (63 & e[r + 2])),
),
(r += 3))
}
return t.join('')
},
},
g =
((De = '0123456789abcdef'),
{
toBytes: function (e) {
for (var t = [], r = 0; r < e.length; r += 2) t.push(parseInt(e.substr(r, 2), 16))
return t
},
fromBytes: function (e) {
for (var t = [], r = 0; r < e.length; r++) {
var n = e[r]
t.push(De[(240 & n) >> 4] + De[15 & n])
}
return t.join('')
},
}),
Se = { 16: 10, 24: 12, 32: 14 },
Ce = [
1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53,
106, 212, 179, 125, 250, 239, 197, 145,
],
c = [
99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125,
250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204,
52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235,
39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209,
0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51,
133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218,
33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115,
96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73,
6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108,
86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75,
189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225,
248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191,
230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22,
],
u = [
82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130,
155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61,
238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109,
139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146,
108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0,
140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193,
175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240,
180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71,
241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210,
121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18,
16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156,
239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126,
186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125,
],
Fe = [
3328402341, 4168907908, 4000806809, 4135287693, 4294111757, 3597364157, 3731845041,
2445657428, 1613770832, 33620227, 3462883241, 1445669757, 3892248089, 3050821474, 1303096294,
3967186586, 2412431941, 528646813, 2311702848, 4202528135, 4026202645, 2992200171, 2387036105,
4226871307, 1101901292, 3017069671, 1604494077, 1169141738, 597466303, 1403299063, 3832705686,
2613100635, 1974974402, 3791519004, 1033081774, 1277568618, 1815492186, 2118074177,
4126668546, 2211236943, 1748251740, 1369810420, 3521504564, 4193382664, 3799085459,
2883115123, 1647391059, 706024767, 134480908, 2512897874, 1176707941, 2646852446, 806885416,
932615841, 168101135, 798661301, 235341577, 605164086, 461406363, 3756188221, 3454790438,
1311188841, 2142417613, 3933566367, 302582043, 495158174, 1479289972, 874125870, 907746093,
3698224818, 3025820398, 1537253627, 2756858614, 1983593293, 3084310113, 2108928974,
1378429307, 3722699582, 1580150641, 327451799, 2790478837, 3117535592, 0, 3253595436,
1075847264, 3825007647, 2041688520, 3059440621, 3563743934, 2378943302, 1740553945,
1916352843, 2487896798, 2555137236, 2958579944, 2244988746, 3151024235, 3320835882,
1336584933, 3992714006, 2252555205, 2588757463, 1714631509, 293963156, 2319795663, 3925473552,
67240454, 4269768577, 2689618160, 2017213508, 631218106, 1269344483, 2723238387, 1571005438,
2151694528, 93294474, 1066570413, 563977660, 1882732616, 4059428100, 1673313503, 2008463041,
2950355573, 1109467491, 537923632, 3858759450, 4260623118, 3218264685, 2177748300, 403442708,
638784309, 3287084079, 3193921505, 899127202, 2286175436, 773265209, 2479146071, 1437050866,
4236148354, 2050833735, 3362022572, 3126681063, 840505643, 3866325909, 3227541664, 427917720,
2655997905, 2749160575, 1143087718, 1412049534, 999329963, 193497219, 2353415882, 3354324521,
1807268051, 672404540, 2816401017, 3160301282, 369822493, 2916866934, 3688947771, 1681011286,
1949973070, 336202270, 2454276571, 201721354, 1210328172, 3093060836, 2680341085, 3184776046,
1135389935, 3294782118, 965841320, 831886756, 3554993207, 4068047243, 3588745010, 2345191491,
1849112409, 3664604599, 26054028, 2983581028, 2622377682, 1235855840, 3630984372, 2891339514,
4092916743, 3488279077, 3395642799, 4101667470, 1202630377, 268961816, 1874508501, 4034427016,
1243948399, 1546530418, 941366308, 1470539505, 1941222599, 2546386513, 3421038627, 2715671932,
3899946140, 1042226977, 2521517021, 1639824860, 227249030, 260737669, 3765465232, 2084453954,
1907733956, 3429263018, 2420656344, 100860677, 4160157185, 470683154, 3261161891, 1781871967,
2924959737, 1773779408, 394692241, 2579611992, 974986535, 664706745, 3655459128, 3958962195,
731420851, 571543859, 3530123707, 2849626480, 126783113, 865375399, 765172662, 1008606754,
361203602, 3387549984, 2278477385, 2857719295, 1344809080, 2782912378, 59542671, 1503764984,
160008576, 437062935, 1707065306, 3622233649, 2218934982, 3496503480, 2185314755, 697932208,
1512910199, 504303377, 2075177163, 2824099068, 1841019862, 739644986,
],
Ue = [
2781242211, 2230877308, 2582542199, 2381740923, 234877682, 3184946027, 2984144751, 1418839493,
1348481072, 50462977, 2848876391, 2102799147, 434634494, 1656084439, 3863849899, 2599188086,
1167051466, 2636087938, 1082771913, 2281340285, 368048890, 3954334041, 3381544775, 201060592,
3963727277, 1739838676, 4250903202, 3930435503, 3206782108, 4149453988, 2531553906,
1536934080, 3262494647, 484572669, 2923271059, 1783375398, 1517041206, 1098792767, 49674231,
1334037708, 1550332980, 4098991525, 886171109, 150598129, 2481090929, 1940642008, 1398944049,
1059722517, 201851908, 1385547719, 1699095331, 1587397571, 674240536, 2704774806, 252314885,
3039795866, 151914247, 908333586, 2602270848, 1038082786, 651029483, 1766729511, 3447698098,
2682942837, 454166793, 2652734339, 1951935532, 775166490, 758520603, 3000790638, 4004797018,
4217086112, 4137964114, 1299594043, 1639438038, 3464344499, 2068982057, 1054729187,
1901997871, 2534638724, 4121318227, 1757008337, 0, 750906861, 1614815264, 535035132,
3363418545, 3988151131, 3201591914, 1183697867, 3647454910, 1265776953, 3734260298,
3566750796, 3903871064, 1250283471, 1807470800, 717615087, 3847203498, 384695291, 3313910595,
3617213773, 1432761139, 2484176261, 3481945413, 283769337, 100925954, 2180939647, 4037038160,
1148730428, 3123027871, 3813386408, 4087501137, 4267549603, 3229630528, 2315620239,
2906624658, 3156319645, 1215313976, 82966005, 3747855548, 3245848246, 1974459098, 1665278241,
807407632, 451280895, 251524083, 1841287890, 1283575245, 337120268, 891687699, 801369324,
3787349855, 2721421207, 3431482436, 959321879, 1469301956, 4065699751, 2197585534, 1199193405,
2898814052, 3887750493, 724703513, 2514908019, 2696962144, 2551808385, 3516813135, 2141445340,
1715741218, 2119445034, 2872807568, 2198571144, 3398190662, 700968686, 3547052216, 1009259540,
2041044702, 3803995742, 487983883, 1991105499, 1004265696, 1449407026, 1316239930, 504629770,
3683797321, 168560134, 1816667172, 3837287516, 1570751170, 1857934291, 4014189740, 2797888098,
2822345105, 2754712981, 936633572, 2347923833, 852879335, 1133234376, 1500395319, 3084545389,
2348912013, 1689376213, 3533459022, 3762923945, 3034082412, 4205598294, 133428468, 634383082,
2949277029, 2398386810, 3913789102, 403703816, 3580869306, 2297460856, 1867130149, 1918643758,
607656988, 4049053350, 3346248884, 1368901318, 600565992, 2090982877, 2632479860, 557719327,
3717614411, 3697393085, 2249034635, 2232388234, 2430627952, 1115438654, 3295786421,
2865522278, 3633334344, 84280067, 33027830, 303828494, 2747425121, 1600795957, 4188952407,
3496589753, 2434238086, 1486471617, 658119965, 3106381470, 953803233, 334231800, 3005978776,
857870609, 3151128937, 1890179545, 2298973838, 2805175444, 3056442267, 574365214, 2450884487,
550103529, 1233637070, 4289353045, 2018519080, 2057691103, 2399374476, 4166623649, 2148108681,
387583245, 3664101311, 836232934, 3330556482, 3100665960, 3280093505, 2955516313, 2002398509,
287182607, 3413881008, 4238890068, 3597515707, 975967766,
],
Pe = [
1671808611, 2089089148, 2006576759, 2072901243, 4061003762, 1807603307, 1873927791,
3310653893, 810573872, 16974337, 1739181671, 729634347, 4263110654, 3613570519, 2883997099,
1989864566, 3393556426, 2191335298, 3376449993, 2106063485, 4195741690, 1508618841,
1204391495, 4027317232, 2917941677, 3563566036, 2734514082, 2951366063, 2629772188,
2767672228, 1922491506, 3227229120, 3082974647, 4246528509, 2477669779, 644500518, 911895606,
1061256767, 4144166391, 3427763148, 878471220, 2784252325, 3845444069, 4043897329, 1905517169,
3631459288, 827548209, 356461077, 67897348, 3344078279, 593839651, 3277757891, 405286936,
2527147926, 84871685, 2595565466, 118033927, 305538066, 2157648768, 3795705826, 3945188843,
661212711, 2999812018, 1973414517, 152769033, 2208177539, 745822252, 439235610, 455947803,
1857215598, 1525593178, 2700827552, 1391895634, 994932283, 3596728278, 3016654259, 695947817,
3812548067, 795958831, 2224493444, 1408607827, 3513301457, 0, 3979133421, 543178784,
4229948412, 2982705585, 1542305371, 1790891114, 3410398667, 3201918910, 961245753, 1256100938,
1289001036, 1491644504, 3477767631, 3496721360, 4012557807, 2867154858, 4212583931,
1137018435, 1305975373, 861234739, 2241073541, 1171229253, 4178635257, 33948674, 2139225727,
1357946960, 1011120188, 2679776671, 2833468328, 1374921297, 2751356323, 1086357568,
2408187279, 2460827538, 2646352285, 944271416, 4110742005, 3168756668, 3066132406, 3665145818,
560153121, 271589392, 4279952895, 4077846003, 3530407890, 3444343245, 202643468, 322250259,
3962553324, 1608629855, 2543990167, 1154254916, 389623319, 3294073796, 2817676711, 2122513534,
1028094525, 1689045092, 1575467613, 422261273, 1939203699, 1621147744, 2174228865, 1339137615,
3699352540, 577127458, 712922154, 2427141008, 2290289544, 1187679302, 3995715566, 3100863416,
339486740, 3732514782, 1591917662, 186455563, 3681988059, 3762019296, 844522546, 978220090,
169743370, 1239126601, 101321734, 611076132, 1558493276, 3260915650, 3547250131, 2901361580,
1655096418, 2443721105, 2510565781, 3828863972, 2039214713, 3878868455, 3359869896, 928607799,
1840765549, 2374762893, 3580146133, 1322425422, 2850048425, 1823791212, 1459268694,
4094161908, 3928346602, 1706019429, 2056189050, 2934523822, 135794696, 3134549946, 2022240376,
628050469, 779246638, 472135708, 2800834470, 3032970164, 3327236038, 3894660072, 3715932637,
1956440180, 522272287, 1272813131, 3185336765, 2340818315, 2323976074, 1888542832, 1044544574,
3049550261, 1722469478, 1222152264, 50660867, 4127324150, 236067854, 1638122081, 895445557,
1475980887, 3117443513, 2257655686, 3243809217, 489110045, 2662934430, 3778599393, 4162055160,
2561878936, 288563729, 1773916777, 3648039385, 2391345038, 2493985684, 2612407707, 505560094,
2274497927, 3911240169, 3460925390, 1442818645, 678973480, 3749357023, 2358182796, 2717407649,
2306869641, 219617805, 3218761151, 3862026214, 1120306242, 1756942440, 1103331905, 2578459033,
762796589, 252780047, 2966125488, 1425844308, 3151392187, 372911126,
],
xe = [
1667474886, 2088535288, 2004326894, 2071694838, 4075949567, 1802223062, 1869591006,
3318043793, 808472672, 16843522, 1734846926, 724270422, 4278065639, 3621216949, 2880169549,
1987484396, 3402253711, 2189597983, 3385409673, 2105378810, 4210693615, 1499065266,
1195886990, 4042263547, 2913856577, 3570689971, 2728590687, 2947541573, 2627518243,
2762274643, 1920112356, 3233831835, 3082273397, 4261223649, 2475929149, 640051788, 909531756,
1061110142, 4160160501, 3435941763, 875846760, 2779116625, 3857003729, 4059105529, 1903268834,
3638064043, 825316194, 353713962, 67374088, 3351728789, 589522246, 3284360861, 404236336,
2526454071, 84217610, 2593830191, 117901582, 303183396, 2155911963, 3806477791, 3958056653,
656894286, 2998062463, 1970642922, 151591698, 2206440989, 741110872, 437923380, 454765878,
1852748508, 1515908788, 2694904667, 1381168804, 993742198, 3604373943, 3014905469, 690584402,
3823320797, 791638366, 2223281939, 1398011302, 3520161977, 0, 3991743681, 538992704,
4244381667, 2981218425, 1532751286, 1785380564, 3419096717, 3200178535, 960056178, 1246420628,
1280103576, 1482221744, 3486468741, 3503319995, 4025428677, 2863326543, 4227536621,
1128514950, 1296947098, 859002214, 2240123921, 1162203018, 4193849577, 33687044, 2139062782,
1347481760, 1010582648, 2678045221, 2829640523, 1364325282, 2745433693, 1077985408,
2408548869, 2459086143, 2644360225, 943212656, 4126475505, 3166494563, 3065430391, 3671750063,
555836226, 269496352, 4294908645, 4092792573, 3537006015, 3452783745, 202118168, 320025894,
3974901699, 1600119230, 2543297077, 1145359496, 387397934, 3301201811, 2812801621, 2122220284,
1027426170, 1684319432, 1566435258, 421079858, 1936954854, 1616945344, 2172753945, 1330631070,
3705438115, 572679748, 707427924, 2425400123, 2290647819, 1179044492, 4008585671, 3099120491,
336870440, 3739122087, 1583276732, 185277718, 3688593069, 3772791771, 842159716, 976899700,
168435220, 1229577106, 101059084, 606366792, 1549591736, 3267517855, 3553849021, 2897014595,
1650632388, 2442242105, 2509612081, 3840161747, 2038008818, 3890688725, 3368567691, 926374254,
1835907034, 2374863873, 3587531953, 1313788572, 2846482505, 1819063512, 1448540844,
4109633523, 3941213647, 1701162954, 2054852340, 2930698567, 134748176, 3132806511, 2021165296,
623210314, 774795868, 471606328, 2795958615, 3031746419, 3334885783, 3907527627, 3722280097,
1953799400, 522133822, 1263263126, 3183336545, 2341176845, 2324333839, 1886425312, 1044267644,
3048588401, 1718004428, 1212733584, 50529542, 4143317495, 235803164, 1633788866, 892690282,
1465383342, 3115962473, 2256965911, 3250673817, 488449850, 2661202215, 3789633753, 4177007595,
2560144171, 286339874, 1768537042, 3654906025, 2391705863, 2492770099, 2610673197, 505291324,
2273808917, 3924369609, 3469625735, 1431699370, 673740880, 3755965093, 2358021891, 2711746649,
2307489801, 218961690, 3217021541, 3873845719, 1111672452, 1751693520, 1094828930, 2576986153,
757954394, 252645662, 2964376443, 1414855848, 3149649517, 370555436,
],
Le = [
1374988112, 2118214995, 437757123, 975658646, 1001089995, 530400753, 2902087851, 1273168787,
540080725, 2910219766, 2295101073, 4110568485, 1340463100, 3307916247, 641025152, 3043140495,
3736164937, 632953703, 1172967064, 1576976609, 3274667266, 2169303058, 2370213795, 1809054150,
59727847, 361929877, 3211623147, 2505202138, 3569255213, 1484005843, 1239443753, 2395588676,
1975683434, 4102977912, 2572697195, 666464733, 3202437046, 4035489047, 3374361702, 2110667444,
1675577880, 3843699074, 2538681184, 1649639237, 2976151520, 3144396420, 4269907996,
4178062228, 1883793496, 2403728665, 2497604743, 1383856311, 2876494627, 1917518562,
3810496343, 1716890410, 3001755655, 800440835, 2261089178, 3543599269, 807962610, 599762354,
33778362, 3977675356, 2328828971, 2809771154, 4077384432, 1315562145, 1708848333, 101039829,
3509871135, 3299278474, 875451293, 2733856160, 92987698, 2767645557, 193195065, 1080094634,
1584504582, 3178106961, 1042385657, 2531067453, 3711829422, 1306967366, 2438237621,
1908694277, 67556463, 1615861247, 429456164, 3602770327, 2302690252, 1742315127, 2968011453,
126454664, 3877198648, 2043211483, 2709260871, 2084704233, 4169408201, 0, 159417987,
841739592, 504459436, 1817866830, 4245618683, 260388950, 1034867998, 908933415, 168810852,
1750902305, 2606453969, 607530554, 202008497, 2472011535, 3035535058, 463180190, 2160117071,
1641816226, 1517767529, 470948374, 3801332234, 3231722213, 1008918595, 303765277, 235474187,
4069246893, 766945465, 337553864, 1475418501, 2943682380, 4003061179, 2743034109, 4144047775,
1551037884, 1147550661, 1543208500, 2336434550, 3408119516, 3069049960, 3102011747,
3610369226, 1113818384, 328671808, 2227573024, 2236228733, 3535486456, 2935566865, 3341394285,
496906059, 3702665459, 226906860, 2009195472, 733156972, 2842737049, 294930682, 1206477858,
2835123396, 2700099354, 1451044056, 573804783, 2269728455, 3644379585, 2362090238, 2564033334,
2801107407, 2776292904, 3669462566, 1068351396, 742039012, 1350078989, 1784663195, 1417561698,
4136440770, 2430122216, 775550814, 2193862645, 2673705150, 1775276924, 1876241833, 3475313331,
3366754619, 270040487, 3902563182, 3678124923, 3441850377, 1851332852, 3969562369, 2203032232,
3868552805, 2868897406, 566021896, 4011190502, 3135740889, 1248802510, 3936291284, 699432150,
832877231, 708780849, 3332740144, 899835584, 1951317047, 4236429990, 3767586992, 866637845,
4043610186, 1106041591, 2144161806, 395441711, 1984812685, 1139781709, 3433712980, 3835036895,
2664543715, 1282050075, 3240894392, 1181045119, 2640243204, 25965917, 4203181171, 4211818798,
3009879386, 2463879762, 3910161971, 1842759443, 2597806476, 933301370, 1509430414, 3943906441,
3467192302, 3076639029, 3776767469, 2051518780, 2631065433, 1441952575, 404016761, 1942435775,
1408749034, 1610459739, 3745345300, 2017778566, 3400528769, 3110650942, 941896748, 3265478751,
371049330, 3168937228, 675039627, 4279080257, 967311729, 135050206, 3635733660, 1683407248,
2076935265, 3576870512, 1215061108, 3501741890,
],
Re = [
1347548327, 1400783205, 3273267108, 2520393566, 3409685355, 4045380933, 2880240216,
2471224067, 1428173050, 4138563181, 2441661558, 636813900, 4233094615, 3620022987, 2149987652,
2411029155, 1239331162, 1730525723, 2554718734, 3781033664, 46346101, 310463728, 2743944855,
3328955385, 3875770207, 2501218972, 3955191162, 3667219033, 768917123, 3545789473, 692707433,
1150208456, 1786102409, 2029293177, 1805211710, 3710368113, 3065962831, 401639597, 1724457132,
3028143674, 409198410, 2196052529, 1620529459, 1164071807, 3769721975, 2226875310, 486441376,
2499348523, 1483753576, 428819965, 2274680428, 3075636216, 598438867, 3799141122, 1474502543,
711349675, 129166120, 53458370, 2592523643, 2782082824, 4063242375, 2988687269, 3120694122,
1559041666, 730517276, 2460449204, 4042459122, 2706270690, 3446004468, 3573941694, 533804130,
2328143614, 2637442643, 2695033685, 839224033, 1973745387, 957055980, 2856345839, 106852767,
1371368976, 4181598602, 1033297158, 2933734917, 1179510461, 3046200461, 91341917, 1862534868,
4284502037, 605657339, 2547432937, 3431546947, 2003294622, 3182487618, 2282195339, 954669403,
3682191598, 1201765386, 3917234703, 3388507166, 0, 2198438022, 1211247597, 2887651696,
1315723890, 4227665663, 1443857720, 507358933, 657861945, 1678381017, 560487590, 3516619604,
975451694, 2970356327, 261314535, 3535072918, 2652609425, 1333838021, 2724322336, 1767536459,
370938394, 182621114, 3854606378, 1128014560, 487725847, 185469197, 2918353863, 3106780840,
3356761769, 2237133081, 1286567175, 3152976349, 4255350624, 2683765030, 3160175349,
3309594171, 878443390, 1988838185, 3704300486, 1756818940, 1673061617, 3403100636, 272786309,
1075025698, 545572369, 2105887268, 4174560061, 296679730, 1841768865, 1260232239, 4091327024,
3960309330, 3497509347, 1814803222, 2578018489, 4195456072, 575138148, 3299409036, 446754879,
3629546796, 4011996048, 3347532110, 3252238545, 4270639778, 915985419, 3483825537, 681933534,
651868046, 2755636671, 3828103837, 223377554, 2607439820, 1649704518, 3270937875, 3901806776,
1580087799, 4118987695, 3198115200, 2087309459, 2842678573, 3016697106, 1003007129,
2802849917, 1860738147, 2077965243, 164439672, 4100872472, 32283319, 2827177882, 1709610350,
2125135846, 136428751, 3874428392, 3652904859, 3460984630, 3572145929, 3593056380, 2939266226,
824852259, 818324884, 3224740454, 930369212, 2801566410, 2967507152, 355706840, 1257309336,
4148292826, 243256656, 790073846, 2373340630, 1296297904, 1422699085, 3756299780, 3818836405,
457992840, 3099667487, 2135319889, 77422314, 1560382517, 1945798516, 788204353, 1521706781,
1385356242, 870912086, 325965383, 2358957921, 2050466060, 2388260884, 2313884476, 4006521127,
901210569, 3990953189, 1014646705, 1503449823, 1062597235, 2031621326, 3212035895, 3931371469,
1533017514, 350174575, 2256028891, 2177544179, 1052338372, 741876788, 1606591296, 1914052035,
213705253, 2334669897, 1107234197, 1899603969, 3725069491, 2631447780, 2422494913, 1635502980,
1893020342, 1950903388, 1120974935,
],
Ie = [
2807058932, 1699970625, 2764249623, 1586903591, 1808481195, 1173430173, 1487645946, 59984867,
4199882800, 1844882806, 1989249228, 1277555970, 3623636965, 3419915562, 1149249077,
2744104290, 1514790577, 459744698, 244860394, 3235995134, 1963115311, 4027744588, 2544078150,
4190530515, 1608975247, 2627016082, 2062270317, 1507497298, 2200818878, 567498868, 1764313568,
3359936201, 2305455554, 2037970062, 1047239e3, 1910319033, 1337376481, 2904027272, 2892417312,
984907214, 1243112415, 830661914, 861968209, 2135253587, 2011214180, 2927934315, 2686254721,
731183368, 1750626376, 4246310725, 1820824798, 4172763771, 3542330227, 48394827, 2404901663,
2871682645, 671593195, 3254988725, 2073724613, 145085239, 2280796200, 2779915199, 1790575107,
2187128086, 472615631, 3029510009, 4075877127, 3802222185, 4107101658, 3201631749, 1646252340,
4270507174, 1402811438, 1436590835, 3778151818, 3950355702, 3963161475, 4020912224,
2667994737, 273792366, 2331590177, 104699613, 95345982, 3175501286, 2377486676, 1560637892,
3564045318, 369057872, 4213447064, 3919042237, 1137477952, 2658625497, 1119727848, 2340947849,
1530455833, 4007360968, 172466556, 266959938, 516552836, 0, 2256734592, 3980931627,
1890328081, 1917742170, 4294704398, 945164165, 3575528878, 958871085, 3647212047, 2787207260,
1423022939, 775562294, 1739656202, 3876557655, 2530391278, 2443058075, 3310321856, 547512796,
1265195639, 437656594, 3121275539, 719700128, 3762502690, 387781147, 218828297, 3350065803,
2830708150, 2848461854, 428169201, 122466165, 3720081049, 1627235199, 648017665, 4122762354,
1002783846, 2117360635, 695634755, 3336358691, 4234721005, 4049844452, 3704280881, 2232435299,
574624663, 287343814, 612205898, 1039717051, 840019705, 2708326185, 793451934, 821288114,
1391201670, 3822090177, 376187827, 3113855344, 1224348052, 1679968233, 2361698556, 1058709744,
752375421, 2431590963, 1321699145, 3519142200, 2734591178, 188127444, 2177869557, 3727205754,
2384911031, 3215212461, 2648976442, 2450346104, 3432737375, 1180849278, 331544205, 3102249176,
4150144569, 2952102595, 2159976285, 2474404304, 766078933, 313773861, 2570832044, 2108100632,
1668212892, 3145456443, 2013908262, 418672217, 3070356634, 2594734927, 1852171925, 3867060991,
3473416636, 3907448597, 2614737639, 919489135, 164948639, 2094410160, 2997825956, 590424639,
2486224549, 1723872674, 3157750862, 3399941250, 3501252752, 3625268135, 2555048196,
3673637356, 1343127501, 4130281361, 3599595085, 2957853679, 1297403050, 81781910, 3051593425,
2283490410, 532201772, 1367295589, 3926170974, 895287692, 1953757831, 1093597963, 492483431,
3528626907, 1446242576, 1192455638, 1636604631, 209336225, 344873464, 1015671571, 669961897,
3375740769, 3857572124, 2973530695, 3747192018, 1933530610, 3464042516, 935293895, 3454686199,
2858115069, 1863638845, 3683022916, 4085369519, 3292445032, 875313188, 1080017571, 3279033885,
621591778, 1233856572, 2504130317, 24197544, 3017672716, 3835484340, 3247465558, 2220981195,
3060847922, 1551124588, 1463996600,
],
Me = [
4104605777, 1097159550, 396673818, 660510266, 2875968315, 2638606623, 4200115116, 3808662347,
821712160, 1986918061, 3430322568, 38544885, 3856137295, 718002117, 893681702, 1654886325,
2975484382, 3122358053, 3926825029, 4274053469, 796197571, 1290801793, 1184342925, 3556361835,
2405426947, 2459735317, 1836772287, 1381620373, 3196267988, 1948373848, 3764988233,
3385345166, 3263785589, 2390325492, 1480485785, 3111247143, 3780097726, 2293045232, 548169417,
3459953789, 3746175075, 439452389, 1362321559, 1400849762, 1685577905, 1806599355, 2174754046,
137073913, 1214797936, 1174215055, 3731654548, 2079897426, 1943217067, 1258480242, 529487843,
1437280870, 3945269170, 3049390895, 3313212038, 923313619, 679998e3, 3215307299, 57326082,
377642221, 3474729866, 2041877159, 133361907, 1776460110, 3673476453, 96392454, 878845905,
2801699524, 777231668, 4082475170, 2330014213, 4142626212, 2213296395, 1626319424, 1906247262,
1846563261, 562755902, 3708173718, 1040559837, 3871163981, 1418573201, 3294430577, 114585348,
1343618912, 2566595609, 3186202582, 1078185097, 3651041127, 3896688048, 2307622919, 425408743,
3371096953, 2081048481, 1108339068, 2216610296, 0, 2156299017, 736970802, 292596766,
1517440620, 251657213, 2235061775, 2933202493, 758720310, 265905162, 1554391400, 1532285339,
908999204, 174567692, 1474760595, 4002861748, 2610011675, 3234156416, 3693126241, 2001430874,
303699484, 2478443234, 2687165888, 585122620, 454499602, 151849742, 2345119218, 3064510765,
514443284, 4044981591, 1963412655, 2581445614, 2137062819, 19308535, 1928707164, 1715193156,
4219352155, 1126790795, 600235211, 3992742070, 3841024952, 836553431, 1669664834, 2535604243,
3323011204, 1243905413, 3141400786, 4180808110, 698445255, 2653899549, 2989552604, 2253581325,
3252932727, 3004591147, 1891211689, 2487810577, 3915653703, 4237083816, 4030667424,
2100090966, 865136418, 1229899655, 953270745, 3399679628, 3557504664, 4118925222, 2061379749,
3079546586, 2915017791, 983426092, 2022837584, 1607244650, 2118541908, 2366882550, 3635996816,
972512814, 3283088770, 1568718495, 3499326569, 3576539503, 621982671, 2895723464, 410887952,
2623762152, 1002142683, 645401037, 1494807662, 2595684844, 1335535747, 2507040230, 4293295786,
3167684641, 367585007, 3885750714, 1865862730, 2668221674, 2960971305, 2763173681, 1059270954,
2777952454, 2724642869, 1320957812, 2194319100, 2429595872, 2815956275, 77089521, 3973773121,
3444575871, 2448830231, 1305906550, 4021308739, 2857194700, 2516901860, 3518358430,
1787304780, 740276417, 1699839814, 1592394909, 2352307457, 2272556026, 188821243, 1729977011,
3687994002, 274084841, 3594982253, 3613494426, 2701949495, 4162096729, 322734571, 2837966542,
1640576439, 484830689, 1202797690, 3537852828, 4067639125, 349075736, 3342319475, 4157467219,
4255800159, 1030690015, 1155237496, 2951971274, 1757691577, 607398968, 2738905026, 499347990,
3794078908, 1011452712, 227885567, 2818666809, 213114376, 3034881240, 1455525988, 3414450555,
850817237, 1817998408, 3092726480,
],
$e = [
0, 235474187, 470948374, 303765277, 941896748, 908933415, 607530554, 708780849, 1883793496,
2118214995, 1817866830, 1649639237, 1215061108, 1181045119, 1417561698, 1517767529,
3767586992, 4003061179, 4236429990, 4069246893, 3635733660, 3602770327, 3299278474,
3400528769, 2430122216, 2664543715, 2362090238, 2193862645, 2835123396, 2801107407,
3035535058, 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, 3810496343,
3977675356, 4279080257, 4043610186, 2876494627, 2776292904, 3076639029, 3110650942,
2472011535, 2640243204, 2403728665, 2169303058, 1001089995, 899835584, 666464733, 699432150,
59727847, 226906860, 530400753, 294930682, 1273168787, 1172967064, 1475418501, 1509430414,
1942435775, 2110667444, 1876241833, 1641816226, 2910219766, 2743034109, 2976151520,
3211623147, 2505202138, 2606453969, 2302690252, 2269728455, 3711829422, 3543599269,
3240894392, 3475313331, 3843699074, 3943906441, 4178062228, 4144047775, 1306967366,
1139781709, 1374988112, 1610459739, 1975683434, 2076935265, 1775276924, 1742315127,
1034867998, 866637845, 566021896, 800440835, 92987698, 193195065, 429456164, 395441711,
1984812685, 2017778566, 1784663195, 1683407248, 1315562145, 1080094634, 1383856311,
1551037884, 101039829, 135050206, 437757123, 337553864, 1042385657, 807962610, 573804783,
742039012, 2531067453, 2564033334, 2328828971, 2227573024, 2935566865, 2700099354, 3001755655,
3168937228, 3868552805, 3902563182, 4203181171, 4102977912, 3736164937, 3501741890,
3265478751, 3433712980, 1106041591, 1340463100, 1576976609, 1408749034, 2043211483,
2009195472, 1708848333, 1809054150, 832877231, 1068351396, 766945465, 599762354, 159417987,
126454664, 361929877, 463180190, 2709260871, 2943682380, 3178106961, 3009879386, 2572697195,
2538681184, 2236228733, 2336434550, 3509871135, 3745345300, 3441850377, 3274667266,
3910161971, 3877198648, 4110568485, 4211818798, 2597806476, 2497604743, 2261089178,
2295101073, 2733856160, 2902087851, 3202437046, 2968011453, 3936291284, 3835036895,
4136440770, 4169408201, 3535486456, 3702665459, 3467192302, 3231722213, 2051518780,
1951317047, 1716890410, 1750902305, 1113818384, 1282050075, 1584504582, 1350078989, 168810852,
67556463, 371049330, 404016761, 841739592, 1008918595, 775550814, 540080725, 3969562369,
3801332234, 4035489047, 4269907996, 3569255213, 3669462566, 3366754619, 3332740144,
2631065433, 2463879762, 2160117071, 2395588676, 2767645557, 2868897406, 3102011747,
3069049960, 202008497, 33778362, 270040487, 504459436, 875451293, 975658646, 675039627,
641025152, 2084704233, 1917518562, 1615861247, 1851332852, 1147550661, 1248802510, 1484005843,
1451044056, 933301370, 967311729, 733156972, 632953703, 260388950, 25965917, 328671808,
496906059, 1206477858, 1239443753, 1543208500, 1441952575, 2144161806, 1908694277, 1675577880,
1842759443, 3610369226, 3644379585, 3408119516, 3307916247, 4011190502, 3776767469,
4077384432, 4245618683, 2809771154, 2842737049, 3144396420, 3043140495, 2673705150,
2438237621, 2203032232, 2370213795,
],
Ne = [
0, 185469197, 370938394, 487725847, 741876788, 657861945, 975451694, 824852259, 1483753576,
1400783205, 1315723890, 1164071807, 1950903388, 2135319889, 1649704518, 1767536459,
2967507152, 3152976349, 2801566410, 2918353863, 2631447780, 2547432937, 2328143614,
2177544179, 3901806776, 3818836405, 4270639778, 4118987695, 3299409036, 3483825537,
3535072918, 3652904859, 2077965243, 1893020342, 1841768865, 1724457132, 1474502543,
1559041666, 1107234197, 1257309336, 598438867, 681933534, 901210569, 1052338372, 261314535,
77422314, 428819965, 310463728, 3409685355, 3224740454, 3710368113, 3593056380, 3875770207,
3960309330, 4045380933, 4195456072, 2471224067, 2554718734, 2237133081, 2388260884,
3212035895, 3028143674, 2842678573, 2724322336, 4138563181, 4255350624, 3769721975,
3955191162, 3667219033, 3516619604, 3431546947, 3347532110, 2933734917, 2782082824,
3099667487, 3016697106, 2196052529, 2313884476, 2499348523, 2683765030, 1179510461,
1296297904, 1347548327, 1533017514, 1786102409, 1635502980, 2087309459, 2003294622, 507358933,
355706840, 136428751, 53458370, 839224033, 957055980, 605657339, 790073846, 2373340630,
2256028891, 2607439820, 2422494913, 2706270690, 2856345839, 3075636216, 3160175349,
3573941694, 3725069491, 3273267108, 3356761769, 4181598602, 4063242375, 4011996048,
3828103837, 1033297158, 915985419, 730517276, 545572369, 296679730, 446754879, 129166120,
213705253, 1709610350, 1860738147, 1945798516, 2029293177, 1239331162, 1120974935, 1606591296,
1422699085, 4148292826, 4233094615, 3781033664, 3931371469, 3682191598, 3497509347,
3446004468, 3328955385, 2939266226, 2755636671, 3106780840, 2988687269, 2198438022,
2282195339, 2501218972, 2652609425, 1201765386, 1286567175, 1371368976, 1521706781,
1805211710, 1620529459, 2105887268, 1988838185, 533804130, 350174575, 164439672, 46346101,
870912086, 954669403, 636813900, 788204353, 2358957921, 2274680428, 2592523643, 2441661558,
2695033685, 2880240216, 3065962831, 3182487618, 3572145929, 3756299780, 3270937875,
3388507166, 4174560061, 4091327024, 4006521127, 3854606378, 1014646705, 930369212, 711349675,
560487590, 272786309, 457992840, 106852767, 223377554, 1678381017, 1862534868, 1914052035,
2031621326, 1211247597, 1128014560, 1580087799, 1428173050, 32283319, 182621114, 401639597,
486441376, 768917123, 651868046, 1003007129, 818324884, 1503449823, 1385356242, 1333838021,
1150208456, 1973745387, 2125135846, 1673061617, 1756818940, 2970356327, 3120694122,
2802849917, 2887651696, 2637442643, 2520393566, 2334669897, 2149987652, 3917234703,
3799141122, 4284502037, 4100872472, 3309594171, 3460984630, 3545789473, 3629546796,
2050466060, 1899603969, 1814803222, 1730525723, 1443857720, 1560382517, 1075025698,
1260232239, 575138148, 692707433, 878443390, 1062597235, 243256656, 91341917, 409198410,
325965383, 3403100636, 3252238545, 3704300486, 3620022987, 3874428392, 3990953189, 4042459122,
4227665663, 2460449204, 2578018489, 2226875310, 2411029155, 3198115200, 3046200461,
2827177882, 2743944855,
],
Oe = [
0, 218828297, 437656594, 387781147, 875313188, 958871085, 775562294, 590424639, 1750626376,
1699970625, 1917742170, 2135253587, 1551124588, 1367295589, 1180849278, 1265195639,
3501252752, 3720081049, 3399941250, 3350065803, 3835484340, 3919042237, 4270507174,
4085369519, 3102249176, 3051593425, 2734591178, 2952102595, 2361698556, 2177869557,
2530391278, 2614737639, 3145456443, 3060847922, 2708326185, 2892417312, 2404901663,
2187128086, 2504130317, 2555048196, 3542330227, 3727205754, 3375740769, 3292445032,
3876557655, 3926170974, 4246310725, 4027744588, 1808481195, 1723872674, 1910319033,
2094410160, 1608975247, 1391201670, 1173430173, 1224348052, 59984867, 244860394, 428169201,
344873464, 935293895, 984907214, 766078933, 547512796, 1844882806, 1627235199, 2011214180,
2062270317, 1507497298, 1423022939, 1137477952, 1321699145, 95345982, 145085239, 532201772,
313773861, 830661914, 1015671571, 731183368, 648017665, 3175501286, 2957853679, 2807058932,
2858115069, 2305455554, 2220981195, 2474404304, 2658625497, 3575528878, 3625268135,
3473416636, 3254988725, 3778151818, 3963161475, 4213447064, 4130281361, 3599595085,
3683022916, 3432737375, 3247465558, 3802222185, 4020912224, 4172763771, 4122762354,
3201631749, 3017672716, 2764249623, 2848461854, 2331590177, 2280796200, 2431590963,
2648976442, 104699613, 188127444, 472615631, 287343814, 840019705, 1058709744, 671593195,
621591778, 1852171925, 1668212892, 1953757831, 2037970062, 1514790577, 1463996600, 1080017571,
1297403050, 3673637356, 3623636965, 3235995134, 3454686199, 4007360968, 3822090177,
4107101658, 4190530515, 2997825956, 3215212461, 2830708150, 2779915199, 2256734592,
2340947849, 2627016082, 2443058075, 172466556, 122466165, 273792366, 492483431, 1047239e3,
861968209, 612205898, 695634755, 1646252340, 1863638845, 2013908262, 1963115311, 1446242576,
1530455833, 1277555970, 1093597963, 1636604631, 1820824798, 2073724613, 1989249228,
1436590835, 1487645946, 1337376481, 1119727848, 164948639, 81781910, 331544205, 516552836,
1039717051, 821288114, 669961897, 719700128, 2973530695, 3157750862, 2871682645, 2787207260,
2232435299, 2283490410, 2667994737, 2450346104, 3647212047, 3564045318, 3279033885,
3464042516, 3980931627, 3762502690, 4150144569, 4199882800, 3070356634, 3121275539,
2904027272, 2686254721, 2200818878, 2384911031, 2570832044, 2486224549, 3747192018,
3528626907, 3310321856, 3359936201, 3950355702, 3867060991, 4049844452, 4234721005,
1739656202, 1790575107, 2108100632, 1890328081, 1402811438, 1586903591, 1233856572,
1149249077, 266959938, 48394827, 369057872, 418672217, 1002783846, 919489135, 567498868,
752375421, 209336225, 24197544, 376187827, 459744698, 945164165, 895287692, 574624663,
793451934, 1679968233, 1764313568, 2117360635, 1933530610, 1343127501, 1560637892, 1243112415,
1192455638, 3704280881, 3519142200, 3336358691, 3419915562, 3907448597, 3857572124,
4075877127, 4294704398, 3029510009, 3113855344, 2927934315, 2744104290, 2159976285,
2377486676, 2594734927, 2544078150,
],
Ge = [
0, 151849742, 303699484, 454499602, 607398968, 758720310, 908999204, 1059270954, 1214797936,
1097159550, 1517440620, 1400849762, 1817998408, 1699839814, 2118541908, 2001430874,
2429595872, 2581445614, 2194319100, 2345119218, 3034881240, 3186202582, 2801699524,
2951971274, 3635996816, 3518358430, 3399679628, 3283088770, 4237083816, 4118925222,
4002861748, 3885750714, 1002142683, 850817237, 698445255, 548169417, 529487843, 377642221,
227885567, 77089521, 1943217067, 2061379749, 1640576439, 1757691577, 1474760595, 1592394909,
1174215055, 1290801793, 2875968315, 2724642869, 3111247143, 2960971305, 2405426947,
2253581325, 2638606623, 2487810577, 3808662347, 3926825029, 4044981591, 4162096729,
3342319475, 3459953789, 3576539503, 3693126241, 1986918061, 2137062819, 1685577905,
1836772287, 1381620373, 1532285339, 1078185097, 1229899655, 1040559837, 923313619, 740276417,
621982671, 439452389, 322734571, 137073913, 19308535, 3871163981, 4021308739, 4104605777,
4255800159, 3263785589, 3414450555, 3499326569, 3651041127, 2933202493, 2815956275,
3167684641, 3049390895, 2330014213, 2213296395, 2566595609, 2448830231, 1305906550,
1155237496, 1607244650, 1455525988, 1776460110, 1626319424, 2079897426, 1928707164, 96392454,
213114376, 396673818, 514443284, 562755902, 679998e3, 865136418, 983426092, 3708173718,
3557504664, 3474729866, 3323011204, 4180808110, 4030667424, 3945269170, 3794078908,
2507040230, 2623762152, 2272556026, 2390325492, 2975484382, 3092726480, 2738905026,
2857194700, 3973773121, 3856137295, 4274053469, 4157467219, 3371096953, 3252932727,
3673476453, 3556361835, 2763173681, 2915017791, 3064510765, 3215307299, 2156299017,
2307622919, 2459735317, 2610011675, 2081048481, 1963412655, 1846563261, 1729977011,
1480485785, 1362321559, 1243905413, 1126790795, 878845905, 1030690015, 645401037, 796197571,
274084841, 425408743, 38544885, 188821243, 3613494426, 3731654548, 3313212038, 3430322568,
4082475170, 4200115116, 3780097726, 3896688048, 2668221674, 2516901860, 2366882550,
2216610296, 3141400786, 2989552604, 2837966542, 2687165888, 1202797690, 1320957812,
1437280870, 1554391400, 1669664834, 1787304780, 1906247262, 2022837584, 265905162, 114585348,
499347990, 349075736, 736970802, 585122620, 972512814, 821712160, 2595684844, 2478443234,
2293045232, 2174754046, 3196267988, 3079546586, 2895723464, 2777952454, 3537852828,
3687994002, 3234156416, 3385345166, 4142626212, 4293295786, 3841024952, 3992742070, 174567692,
57326082, 410887952, 292596766, 777231668, 660510266, 1011452712, 893681702, 1108339068,
1258480242, 1343618912, 1494807662, 1715193156, 1865862730, 1948373848, 2100090966,
2701949495, 2818666809, 3004591147, 3122358053, 2235061775, 2352307457, 2535604243,
2653899549, 3915653703, 3764988233, 4219352155, 4067639125, 3444575871, 3294430577,
3746175075, 3594982253, 836553431, 953270745, 600235211, 718002117, 367585007, 484830689,
133361907, 251657213, 2041877159, 1891211689, 1806599355, 1654886325, 1568718495, 1418573201,
1335535747, 1184342925,
]
function Ve(e) {
for (var t = [], r = 0; r < e.length; r += 4)
t.push((e[r] << 24) | (e[r + 1] << 16) | (e[r + 2] << 8) | e[r + 3])
return t
}
function n(e) {
if (!(this instanceof n)) throw Error('AES must be instanitated with `new`')
Object.defineProperty(this, 'key', { value: a(e, !0) }), this._prepare()
}
function r(e) {
if (!(this instanceof r)) throw Error('AES must be instanitated with `new`')
;(this.description = 'Electronic Code Block'), (this.name = 'ecb'), (this._aes = new n(e))
}
function s(e, t) {
if (!(this instanceof s)) throw Error('AES must be instanitated with `new`')
if (((this.description = 'Cipher Block Chaining'), (this.name = 'cbc'), t)) {
if (16 != t.length) throw new Error('invalid initialation vector size (must be 16 bytes)')
} else t = l(16)
;(this._lastCipherblock = a(t, !0)), (this._aes = new n(e))
}
function d(e, t, r) {
if (!(this instanceof d)) throw Error('AES must be instanitated with `new`')
if (((this.description = 'Cipher Feedback'), (this.name = 'cfb'), t)) {
if (16 != t.length) throw new Error('invalid initialation vector size (must be 16 size)')
} else t = l(16)
;(this.segmentSize = r = r || 1), (this._shiftRegister = a(t, !0)), (this._aes = new n(e))
}
function f(e, t) {
if (!(this instanceof f)) throw Error('AES must be instanitated with `new`')
if (((this.description = 'Output Feedback'), (this.name = 'ofb'), t)) {
if (16 != t.length) throw new Error('invalid initialation vector size (must be 16 bytes)')
} else t = l(16)
;(this._lastPrecipher = a(t, !0)), (this._lastPrecipherIndex = 16), (this._aes = new n(e))
}
function p(e) {
if (!(this instanceof p)) throw Error('Counter must be instanitated with `new`')
'number' == typeof (e = 0 === e || e ? e : 1)
? ((this._counter = l(16)), this.setValue(e))
: this.setBytes(e)
}
function h(e, t) {
if (!(this instanceof h)) throw Error('AES must be instanitated with `new`')
;(this.description = 'Counter'),
(this.name = 'ctr'),
t instanceof p || (t = new p(t)),
(this._counter = t),
(this._remainingCounter = null),
(this._remainingCounterIndex = 16),
(this._aes = new n(e))
}
;(n.prototype._prepare = function () {
var e = Se[this.key.length]
if (null == e) throw new Error('invalid key size (must be 16, 24 or 32 bytes)')
;(this._Ke = []), (this._Kd = [])
for (var t = 0; t <= e; t++) this._Ke.push([0, 0, 0, 0]), this._Kd.push([0, 0, 0, 0])
for (var r, n = 4 * (e + 1), o = this.key.length / 4, a = Ve(this.key), t = 0; t < o; t++)
(this._Ke[(r = t >> 2)][t % 4] = a[t]), (this._Kd[e - r][t % 4] = a[t])
for (var i, s = 0, l = o; l < n; ) {
if (
((i = a[o - 1]),
(a[0] ^=
(c[(i >> 16) & 255] << 24) ^
(c[(i >> 8) & 255] << 16) ^
(c[255 & i] << 8) ^
c[(i >> 24) & 255] ^
(Ce[s] << 24)),
(s += 1),
8 != o)
)
for (t = 1; t < o; t++) a[t] ^= a[t - 1]
else {
for (t = 1; t < o / 2; t++) a[t] ^= a[t - 1]
for (
i = a[o / 2 - 1],
a[o / 2] ^=
c[255 & i] ^
(c[(i >> 8) & 255] << 8) ^
(c[(i >> 16) & 255] << 16) ^
(c[(i >> 24) & 255] << 24),
t = o / 2 + 1;
t < o;
t++
)
a[t] ^= a[t - 1]
}
for (t = 0; t < o && l < n; )
(this._Ke[(u = l >> 2)][(d = l % 4)] = a[t]), (this._Kd[e - u][d] = a[t++]), l++
}
for (var u = 1; u < e; u++)
for (var d = 0; d < 4; d++)
(i = this._Kd[u][d]),
(this._Kd[u][d] =
$e[(i >> 24) & 255] ^ Ne[(i >> 16) & 255] ^ Oe[(i >> 8) & 255] ^ Ge[255 & i])
}),
(n.prototype.encrypt = function (e) {
if (16 != e.length) throw new Error('invalid plaintext size (must be 16 bytes)')
for (var t = this._Ke.length - 1, r = [0, 0, 0, 0], n = Ve(e), o = 0; o < 4; o++)
n[o] ^= this._Ke[0][o]
for (var a = 1; a < t; a++) {
for (o = 0; o < 4; o++)
r[o] =
Fe[(n[o] >> 24) & 255] ^
Ue[(n[(o + 1) % 4] >> 16) & 255] ^
Pe[(n[(o + 2) % 4] >> 8) & 255] ^
xe[255 & n[(o + 3) % 4]] ^
this._Ke[a][o]
n = r.slice()
}
for (var i, s = l(16), o = 0; o < 4; o++)
(i = this._Ke[t][o]),
(s[4 * o] = 255 & (c[(n[o] >> 24) & 255] ^ (i >> 24))),
(s[4 * o + 1] = 255 & (c[(n[(o + 1) % 4] >> 16) & 255] ^ (i >> 16))),
(s[4 * o + 2] = 255 & (c[(n[(o + 2) % 4] >> 8) & 255] ^ (i >> 8))),
(s[4 * o + 3] = 255 & (c[255 & n[(o + 3) % 4]] ^ i))
return s
}),
(n.prototype.decrypt = function (e) {
if (16 != e.length) throw new Error('invalid ciphertext size (must be 16 bytes)')
for (var t = this._Kd.length - 1, r = [0, 0, 0, 0], n = Ve(e), o = 0; o < 4; o++)
n[o] ^= this._Kd[0][o]
for (var a = 1; a < t; a++) {
for (o = 0; o < 4; o++)
r[o] =
Le[(n[o] >> 24) & 255] ^
Re[(n[(o + 3) % 4] >> 16) & 255] ^
Ie[(n[(o + 2) % 4] >> 8) & 255] ^
Me[255 & n[(o + 1) % 4]] ^
this._Kd[a][o]
n = r.slice()
}
for (var i, s = l(16), o = 0; o < 4; o++)
(i = this._Kd[t][o]),
(s[4 * o] = 255 & (u[(n[o] >> 24) & 255] ^ (i >> 24))),
(s[4 * o + 1] = 255 & (u[(n[(o + 3) % 4] >> 16) & 255] ^ (i >> 16))),
(s[4 * o + 2] = 255 & (u[(n[(o + 2) % 4] >> 8) & 255] ^ (i >> 8))),
(s[4 * o + 3] = 255 & (u[255 & n[(o + 1) % 4]] ^ i))
return s
}),
(r.prototype.encrypt = function (e) {
if ((e = a(e)).length % 16 != 0)
throw new Error('invalid plaintext size (must be multiple of 16 bytes)')
for (var t = l(e.length), r = l(16), n = 0; n < e.length; n += 16)
i(e, r, 0, n, n + 16), i((r = this._aes.encrypt(r)), t, n)
return t
}),
(r.prototype.decrypt = function (e) {
if ((e = a(e)).length % 16 != 0)
throw new Error('invalid ciphertext size (must be multiple of 16 bytes)')
for (var t = l(e.length), r = l(16), n = 0; n < e.length; n += 16)
i(e, r, 0, n, n + 16), i((r = this._aes.decrypt(r)), t, n)
return t
}),
(s.prototype.encrypt = function (e) {
if ((e = a(e)).length % 16 != 0)
throw new Error('invalid plaintext size (must be multiple of 16 bytes)')
for (var t = l(e.length), r = l(16), n = 0; n < e.length; n += 16) {
i(e, r, 0, n, n + 16)
for (var o = 0; o < 16; o++) r[o] ^= this._lastCipherblock[o]
;(this._lastCipherblock = this._aes.encrypt(r)), i(this._lastCipherblock, t, n)
}
return t
}),
(s.prototype.decrypt = function (e) {
if ((e = a(e)).length % 16 != 0)
throw new Error('invalid ciphertext size (must be multiple of 16 bytes)')
for (var t = l(e.length), r = l(16), n = 0; n < e.length; n += 16) {
i(e, r, 0, n, n + 16)
for (var r = this._aes.decrypt(r), o = 0; o < 16; o++)
t[n + o] = r[o] ^ this._lastCipherblock[o]
i(e, this._lastCipherblock, 0, n, n + 16)
}
return t
}),
(d.prototype.encrypt = function (e) {
if (e.length % this.segmentSize != 0)
throw new Error('invalid plaintext size (must be segmentSize bytes)')
for (var t = a(e, !0), r = 0; r < t.length; r += this.segmentSize) {
for (var n = this._aes.encrypt(this._shiftRegister), o = 0; o < this.segmentSize; o++)
t[r + o] ^= n[o]
i(this._shiftRegister, this._shiftRegister, 0, this.segmentSize),
i(t, this._shiftRegister, 16 - this.segmentSize, r, r + this.segmentSize)
}
return t
}),
(d.prototype.decrypt = function (e) {
if (e.length % this.segmentSize != 0)
throw new Error('invalid ciphertext size (must be segmentSize bytes)')
for (var t = a(e, !0), r = 0; r < t.length; r += this.segmentSize) {
for (var n = this._aes.encrypt(this._shiftRegister), o = 0; o < this.segmentSize; o++)
t[r + o] ^= n[o]
i(this._shiftRegister, this._shiftRegister, 0, this.segmentSize),
i(e, this._shiftRegister, 16 - this.segmentSize, r, r + this.segmentSize)
}
return t
}),
(f.prototype.decrypt = f.prototype.encrypt =
function (e) {
for (var t = a(e, !0), r = 0; r < t.length; r++)
16 === this._lastPrecipherIndex &&
((this._lastPrecipher = this._aes.encrypt(this._lastPrecipher)),
(this._lastPrecipherIndex = 0)),
(t[r] ^= this._lastPrecipher[this._lastPrecipherIndex++])
return t
}),
(p.prototype.setValue = function (e) {
if ('number' != typeof e || parseInt(e) != e)
throw new Error('invalid counter value (must be an integer)')
if (e > Number.MAX_SAFE_INTEGER) throw new Error('integer value out of safe range')
for (var t = 15; 0 <= t; --t) (this._counter[t] = e % 256), (e = parseInt(e / 256))
}),
(p.prototype.setBytes = function (e) {
if (16 != (e = a(e, !0)).length)
throw new Error('invalid counter bytes size (must be 16 bytes)')
this._counter = e
}),
(p.prototype.increment = function () {
for (var e = 15; 0 <= e; e--) {
if (255 !== this._counter[e]) {
this._counter[e]++
break
}
this._counter[e] = 0
}
})
h.prototype.decrypt = h.prototype.encrypt = function (e) {
for (var t = a(e, !0), r = 0; r < t.length; r++)
16 === this._remainingCounterIndex &&
((this._remainingCounter = this._aes.encrypt(this._counter._counter)),
(this._remainingCounterIndex = 0),
this._counter.increment()),
(t[r] ^= this._remainingCounter[this._remainingCounterIndex++])
return t
}
const ze = {
AES: n,
Counter: p,
ModeOfOperation: { ecb: r, cbc: s, cfb: d, ofb: f, ctr: h },
utils: { hex: g, utf8: m },
padding: {
pkcs7: {
pad: function (e) {
var t = 16 - ((e = a(e, !0)).length % 16),
r = l(e.length + t)
i(e, r)
for (var n = e.length; n < r.length; n++) r[n] = t
return r
},
strip: function (e) {
if ((e = a(e, !0)).length < 16) throw new Error('PKCS#7 invalid length')
var t = e[e.length - 1]
if (16 < t) throw new Error('PKCS#7 padding byte out of range')
for (var r = e.length - t, n = 0; n < t; n++)
if (e[r + n] !== t) throw new Error('PKCS#7 invalid padding byte')
var o = l(r)
return i(e, o, 0, 0, r), o
},
},
},
_arrayTest: { coerceArray: a, createArray: l, copyArray: i },
}
function je(l) {
function n() {
r && (r.abort(), (r = null))
}
let o = [],
u = [],
a = {},
r = new AbortController(),
i = null,
s = null,
e = null,
d = null,
c = null,
f = null,
p = !1,
h = !1,
m = !1,
g = !1,
y = null,
_ = null,
w = null,
v = [],
b = 0,
E = 0,
t = null,
k = null,
T = 0,
B = 0,
A = !1,
D = !1,
S = () => {
var e = (function () {
{
var r = Q
let t = ''
if ('object' == typeof r)
try {
;(t = JSON.stringify(r)), (t = JSON.parse(t))
} catch (e) {
t = r
}
else t = r
return t
}
})()
return {
debug: e.debug,
debugLevel: e.debugLevel,
debugUuid: e.debugUuid,
useOffscreen: e.useOffscreen,
useWCS: e.useWCS,
videoBuffer: e.videoBuffer,
videoBufferDelay: e.videoBufferDelay,
openWebglAlignment: e.openWebglAlignment,
playType: e.playType,
hasAudio: e.hasAudio,
hasVideo: e.hasVideo,
playbackRate: 1,
playbackForwardMaxRateDecodeIFrame: e.playbackForwardMaxRateDecodeIFrame,
playbackIsCacheBeforeDecodeForFpsRender: e.playbackConfig.isCacheBeforeDecodeForFpsRender,
sampleRate: 0,
networkDelay: e.networkDelay,
visibility: !0,
useSIMD: e.useSIMD,
isRecording: !1,
recordType: e.recordType,
isNakedFlow: e.isNakedFlow,
checkFirstIFrame: e.checkFirstIFrame,
audioBufferSize: 1024,
isCrypto: e.isCrypto,
cryptoKey: e.cryptoKey,
cryptoIV: e.cryptoIV,
}
},
C =
('VideoEncoder' in self &&
(a = {
hasInit: !1,
isEmitInfo: !1,
offscreenCanvas: null,
offscreenCanvasCtx: null,
decoder: new VideoDecoder({
output: function (t) {
var e
a.isEmitInfo ||
(F.debug.log('worker', 'Webcodecs Video Decoder initSize'),
postMessage({ cmd: ee, w: t.codedWidth, h: t.codedHeight }),
(a.isEmitInfo = !0),
(a.offscreenCanvas = new OffscreenCanvas(t.codedWidth, t.codedHeight)),
(a.offscreenCanvasCtx = a.offscreenCanvas.getContext('2d'))),
'function' == typeof t.createImageBitmap
? t.createImageBitmap().then(e => {
a.offscreenCanvasCtx.drawImage(e, 0, 0, t.codedWidth, t.codedHeight)
e = a.offscreenCanvas.transferToImageBitmap()
postMessage({ cmd: R, buffer: e, delay: F.delay, ts: 0 }, [e]),
setTimeout(function () {
t.close ? t.close() : t.destroy()
}, 100)
})
: (a.offscreenCanvasCtx.drawImage(t, 0, 0, t.codedWidth, t.codedHeight),
(e = a.offscreenCanvas.transferToImageBitmap()),
postMessage({ cmd: R, buffer: e, delay: F.delay, ts: 0 }, [e]),
setTimeout(function () {
t.close ? t.close() : t.destroy()
}, 100))
},
error: function (e) {
F.debug.error('worker', 'VideoDecoder error', e)
},
}),
decode: function (e, t, r) {
var n = e[0] >> 4 == 1
if (a.hasInit) {
const r = new EncodedVideoChunk({
data: e.slice(5),
timestamp: t,
type: n ? 'key' : 'delta',
})
a.decoder.decode(r)
} else if (n && 0 === e[1]) {
const t = 15 & e[0],
r =
(postMessage({ cmd: re, code: t }),
(function (e) {
let r = e.subarray(1, 4),
n = 'avc1.'
for (let t = 0; t < 3; t++) {
let e = r[t].toString(16)
e.length < 2 && (e = '0' + e), (n += e)
}
return { codec: n, description: e }
})(e.slice(5)))
postMessage({ cmd: ne, buffer: e, codecId: t }, [e.buffer]),
a.decoder.configure(r),
(a.hasInit = !0)
}
},
reset() {
;(a.hasInit = !1),
(a.isEmitInfo = !1),
(a.offscreenCanvas = null),
(a.offscreenCanvasCtx = null)
},
}),
{
init() {
;(C.lastBuf = null),
(C.vps = null),
(C.sps = null),
(C.pps = null),
(C.streamType = null),
(C.localDts = 0),
(C.isSendSeqHeader = !1)
},
destroy() {
;(C.lastBuf = null),
(C.vps = null),
(C.sps = null),
(C.pps = null),
(C.streamType = null),
(C.localDts = 0),
(C.isSendSeqHeader = !1)
},
dispatch(e) {
e = new Uint8Array(e)
C.extractNALu$2(e)
},
getNaluDts() {
var e = C.localDts
return (C.localDts = C.localDts + 40), e
},
getNaluAudioDts() {
var e = F._opt.sampleRate,
t = F._opt.audioBufferSize
return C.localDts + parseInt((t / e) * 1e3)
},
extractNALu(e) {
let t,
r,
n = 0,
o = e.byteLength,
a = 0,
i = []
for (; n < o; )
switch (((t = e[n++]), a)) {
case 0:
0 === t && (a = 1)
break
case 1:
a = 0 === t ? 2 : 0
break
case 2:
case 3:
a =
0 === t
? 3
: (1 === t && n < o && (r && i.push(e.subarray(r, n - a - 1)), (r = n)), 0)
}
return r && i.push(e.subarray(r, o)), i
},
extractNALu$2(t) {
let a = null
if (t && !(t.byteLength < 1)) {
C.lastBuf
? ((a = new Uint8Array(t.byteLength + C.lastBuf.length)).set(C.lastBuf),
a.set(new Uint8Array(t), C.lastBuf.length))
: (a = new Uint8Array(t))
let r = 0,
n = -1,
o = -2
const i = new Array()
for (let t = 0; t < a.length; t += 2) {
const e = a[t],
s = a[t + 1]
0 == n && 0 == e && 0 == s
? i.push(t - 1)
: 1 == s && 0 == e && 0 == n && 0 == o && i.push(t - 2),
(o = e),
(n = s)
}
if (1 < i.length)
for (let t = 0; t < i.length - 1; ++t) {
const e = a.subarray(i[t], i[t + 1] + 1)
C.handleNALu(e), (r = i[t + 1])
}
else r = i[0]
if (0 != r && r < a.length) C.lastBuf = a.subarray(r)
else {
C.lastBuf || (C.lastBuf = a)
const e = new Uint8Array(C.lastBuf.length + t.byteLength)
e.set(C.lastBuf), e.set(new Uint8Array(t), C.lastBuf.length), (C.lastBuf = e)
}
}
},
handleNALu(e) {
e.byteLength <= 4
? F.debug.warn('worker', `handleNALu nalu byteLength is ${e.byteLength} <= 4`)
: ((e = e.slice(4)), C.handleVideoNalu(e))
},
handleVideoNalu(e) {
if (
(C.streamType ||
(C.streamType = (function (e) {
let t = null,
r = 31 & e[0]
return (
(t = r !== O && r !== G ? t : ie) ||
((r = (126 & e[0]) >> 1) !== V && r !== z && r !== j) ||
(t = se),
t
)
})(e)),
C.streamType === ie)
) {
const t = C.handleAddNaluStartCode(e),
r = C.extractNALu(t)
if (0 === r.length) F.debug.warn('worker', 'handleVideoNalu', 'naluList.length === 0')
else {
const n = []
if (
(r.forEach(e => {
var t = Y(e)
t === G || t === O ? C.handleVideoH264Nalu(e) : ve(t) && n.push(e)
}),
1 === n.length)
)
C.handleVideoH264Nalu(n[0])
else {
const e = (function (t) {
if (0 === t.length) return !1
var r = Y(t[0])
for (let e = 1; e < t.length; e++) if (r !== Y(t[e])) return !1
return !0
})(n)
if (e) {
const e = Y(n[0]),
o = be(e)
C.handleVideoH264NaluList(n, o, e)
} else
n.forEach(e => {
C.handleVideoH264Nalu(e)
})
}
}
} else
C.streamType === se && (Te(e) === j ? C.extractH265PPS(e) : C.handleVideoH265Nalu(e))
},
extractH264PPS(e) {
e = C.handleAddNaluStartCode(e)
C.extractNALu(e).forEach(e => {
we(Y(e)) ? C.extractH264SEI(e) : C.handleVideoH264Nalu(e)
})
},
extractH265PPS(e) {
e = C.handleAddNaluStartCode(e)
C.extractNALu(e).forEach(e => {
39 === Te(e) ? C.extractH265SEI(e) : C.handleVideoH265Nalu(e)
})
},
extractH264SEI(e) {
e = C.handleAddNaluStartCode(e)
C.extractNALu(e).forEach(e => {
C.handleVideoH264Nalu(e)
})
},
extractH265SEI(e) {
e = C.handleAddNaluStartCode(e)
C.extractNALu(e).forEach(e => {
C.handleVideoH265Nalu(e)
})
},
handleAddNaluStartCode(e) {
const t = [0, 0, 0, 1],
r = new Uint8Array(e.length + t.length)
return r.set(t), r.set(e, t.length), r
},
handleVideoH264Nalu(e) {
var n,
t,
r,
o = Y(e)
switch (o) {
case O:
C.sps = e
break
case G:
C.pps = e
}
if (C.isSendSeqHeader)
ve(o)
? ((n = be(o)),
(t = C.getNaluDts()),
n && F.calcIframeIntervalTimestamp(t),
F.calcNetworkDelay(t),
(r = (function (e) {
let t = []
;(t[0] = n ? 23 : 39),
(t[1] = 1),
(t[2] = 0),
(t[3] = 0),
(t[4] = 0),
(t[5] = (e.byteLength >> 24) & 255),
(t[6] = (e.byteLength >> 16) & 255),
(t[7] = (e.byteLength >> 8) & 255),
(t[8] = 255 & e.byteLength)
const r = new Uint8Array(t.length + e.byteLength)
return r.set(t, 0), r.set(e, t.length), r
})(e)),
F.decode(r, { type: 2, ts: t, isIFrame: n, cts: 0 }))
: F.debug.warn('work', 'handleVideoH264Nalu Avc Seq Head is ' + o)
else if (C.sps && C.pps) {
C.isSendSeqHeader = !0
const e = (function () {
var { sps: e, pps: t } = { sps: C.sps, pps: C.pps }
const r = [23, 0, 0, 0, 0, 1, 66, 0, 30, 255]
return (
(r[0] = 23),
(r[6] = e[1]),
(r[7] = e[2]),
(r[8] = e[3]),
(r[10] = 225),
(r[11] = (e.byteLength >> 8) & 255),
(r[12] = 255 & e.byteLength),
r.push(...e, 1, (t.byteLength >> 8) & 255, 255 & t.byteLength, ...t),
new Uint8Array(r)
)
})()
F.decode(e, { type: 2, ts: 0, isIFrame: !0, cts: 0 })
}
},
handleVideoH264NaluList(e, n, t) {
var r, o
C.isSendSeqHeader
? ((r = C.getNaluDts()),
F.calcNetworkDelay(r),
(o = (function (e) {
let t = []
;(t[0] = n ? 23 : 39), (t[1] = 1), (t[2] = 0), (t[3] = 0), (t[4] = 0)
const r = new Uint8Array(t.length + e.byteLength)
return r.set(t, 0), r.set(e, t.length), r
})(
e.reduce((e, t) => {
const r = _e(e),
n = _e(t),
o = new Uint8Array(r.byteLength + n.byteLength)
return o.set(r, 0), o.set(n, r.byteLength), o
}),
)),
F.decode(o, { type: 2, ts: r, isIFrame: n, cts: 0 }),
F.debug.log(
'worker',
`handleVideoH264NaluList list size is ${e.length} package length is ${o.byteLength} isIFrame is ${n},nalu type is ${t}, dts is ` +
r,
))
: F.debug.warn('worker', 'handleVideoH264NaluList isSendSeqHeader is false')
},
handleVideoH265Nalu(e) {
var n,
t,
r = Te(e)
switch (r) {
case V:
C.vps = e
break
case z:
C.sps = e
break
case j:
C.pps = e
}
if (C.isSendSeqHeader)
32 <= r && r <= 40
? F.debug.warn('work', 'handleVideoH265Nalu HevcSeqHead is ' + r)
: ((n = 16 <= r && r <= 21),
(r = C.getNaluDts()),
F.calcNetworkDelay(r),
(t = (function (e) {
let t = []
;(t[0] = n ? 28 : 44),
(t[1] = 1),
(t[2] = 0),
(t[3] = 0),
(t[4] = 0),
(t[5] = (e.byteLength >> 24) & 255),
(t[6] = (e.byteLength >> 16) & 255),
(t[7] = (e.byteLength >> 8) & 255),
(t[8] = 255 & e.byteLength)
const r = new Uint8Array(t.length + e.byteLength)
return r.set(t, 0), r.set(e, t.length), r
})(e)),
n && F.calcIframeIntervalTimestamp(r),
F.decode(t, { type: 2, ts: r, isIFrame: n, cts: 0 }))
else if (C.vps && C.sps && C.pps) {
C.isSendSeqHeader = !0
const e = (function (e) {
var { vps: e, pps: t, sps: r } = e,
n = { configurationVersion: 1 },
o = (e => {
let t = Ee(e),
r = new X(t)
return (
r.readByte(),
r.readByte(),
r.readBits(4),
r.readBits(2),
r.readBits(6),
{ num_temporal_layers: r.readBits(3) + 1, temporal_id_nested: r.readBool() }
)
})(e),
a = (e => {
let t = Ee(e),
a = new X(t),
r = (a.readByte(), a.readByte(), 0),
n = 0,
o = 0,
i = 0
a.readBits(4)
var s = a.readBits(3)
a.readBool()
let l = a.readBits(2),
u = a.readBool(),
d = a.readBits(5),
c = a.readByte(),
f = a.readByte(),
p = a.readByte(),
h = a.readByte(),
m = a.readByte(),
g = a.readByte(),
y = a.readByte(),
I = a.readByte(),
M = a.readByte(),
$ = a.readByte(),
_ = a.readByte(),
w = [],
N = []
for (let e = 0; e < s; e++) w.push(a.readBool()), N.push(a.readBool())
if (0 < s) for (let e = s; e < 8; e++) a.readBits(2)
for (let e = 0; e < s; e++)
w[e] &&
(a.readByte(),
a.readByte(),
a.readByte(),
a.readByte(),
a.readByte(),
a.readByte(),
a.readByte(),
a.readByte(),
a.readByte(),
a.readByte(),
a.readByte()),
w[e] && a.readByte()
a.readUEG()
var v,
e = a.readUEG(),
O = (3 == e && a.readBits(1), a.readUEG()),
G = a.readUEG(),
b =
(a.readBool() &&
((r += a.readUEG()),
(n += a.readUEG()),
(o += a.readUEG()),
(i += a.readUEG())),
a.readUEG()),
V = a.readUEG(),
z = a.readUEG()
for (let e = a.readBool() ? 0 : s; e <= s; e++)
a.readUEG(), a.readUEG(), a.readUEG()
if (
(a.readUEG(),
a.readUEG(),
a.readUEG(),
a.readUEG(),
a.readUEG(),
a.readUEG(),
a.readBool() && a.readBool())
)
for (let t = 0; t < 4; t++)
for (let e = 0; e < (3 === t ? 2 : 6); e++)
if (a.readBool()) {
var j = Math.min(64, 1 << (4 + (t << 1)))
1 < t && a.readSEG()
for (let e = 0; e < j; e++) a.readSEG()
} else a.readUEG()
a.readBool(),
a.readBool(),
a.readBool() && (a.readByte(), a.readUEG(), a.readUEG(), a.readBool())
let E = a.readUEG(),
k = 0
for (let t = 0; t < E; t++) {
let e = !1
if ((e = 0 !== t ? a.readBool() : e)) {
t === E && a.readUEG(), a.readBool(), a.readUEG()
let r = 0
for (let e = 0; e <= k; e++) {
let e = a.readBool(),
t = !1
e || (t = a.readBool()), (e || t) && r++
}
k = r
} else {
var T = a.readUEG(),
B = a.readUEG()
k = T + B
for (let e = 0; e < T; e++) a.readUEG(), a.readBool()
for (let e = 0; e < B; e++) a.readUEG(), a.readBool()
}
}
if (a.readBool()) {
var W = a.readUEG()
for (let e = 0; e < W; e++) {
for (let e = 0; e < z + 4; e++) a.readBits(1)
a.readBits(1)
}
}
let A = 0,
D = 1,
S = 1,
C = !1,
F = 1,
U = 1
if ((a.readBool(), a.readBool(), a.readBool())) {
if (
(a.readBool() &&
(0 < (v = a.readByte()) && v < 16
? ((D = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2][
v - 1
]),
(S = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1][
v - 1
]))
: 255 === v && ((D = a.readBits(16)), (S = a.readBits(16)))),
a.readBool() && a.readBool(),
a.readBool() &&
(a.readBits(3),
a.readBool(),
a.readBool() && (a.readByte(), a.readByte(), a.readByte())),
a.readBool() && (a.readUEG(), a.readUEG()),
a.readBool(),
a.readBool(),
a.readBool(),
a.readBool() &&
((r += a.readUEG()),
(n += a.readUEG()),
(o += a.readUEG()),
(i += a.readUEG())),
a.readBool() &&
((F = a.readBits(32)),
(U = a.readBits(32)),
a.readBool() && (a.readUEG(), a.readBool())))
) {
let r,
n,
o = !1
;(r = a.readBool()),
(n = a.readBool()),
(r || n) &&
((o = a.readBool()) &&
(a.readByte(), a.readBits(5), a.readBool(), a.readBits(5)),
a.readBits(4),
a.readBits(4),
o && a.readBits(4),
a.readBits(5),
a.readBits(5),
a.readBits(5))
for (let e = 0; e <= s; e++) {
var P = a.readBool()
C = P
let e = !1,
t = !1
if (
((e = P ? e : a.readBool()) ? a.readSEG() : (t = a.readBool()),
t || (cpbcnt = a.readUEG() + 1),
r)
)
for (let e = 0; e < 1; e++)
a.readUEG(), a.readUEG(), o && (a.readUEG(), a.readUEG())
if (n)
for (let e = 0; e < 1; e++)
a.readUEG(), a.readUEG(), o && (a.readUEG(), a.readUEG())
}
}
a.readBool() &&
(a.readBool(),
a.readBool(),
a.readBool(),
(A = a.readUEG()),
a.readUEG(),
a.readUEG(),
a.readUEG(),
a.readUEG())
}
a.readBool()
let H = `hvc1.${d}.1.L${_}.B0`,
x = O,
L = G,
R = 1
return (
1 !== D && 1 !== S && (R = D / S),
a.destroy(),
(a = null),
{
codec_mimetype: H,
level_string: (_ / 30).toFixed(1),
profile_idc: d,
bit_depth: b + 8,
ref_frames: 1,
chroma_format: e,
chroma_format_string: ke(e),
general_level_idc: _,
general_profile_space: l,
general_tier_flag: u,
general_profile_idc: d,
general_profile_compatibility_flags_1: c,
general_profile_compatibility_flags_2: f,
general_profile_compatibility_flags_3: p,
general_profile_compatibility_flags_4: h,
general_constraint_indicator_flags_1: m,
general_constraint_indicator_flags_2: g,
general_constraint_indicator_flags_3: y,
general_constraint_indicator_flags_4: I,
general_constraint_indicator_flags_5: M,
general_constraint_indicator_flags_6: $,
min_spatial_segmentation_idc: A,
constant_frame_rate: 0,
chroma_format_idc: e,
bit_depth_luma_minus8: b,
bit_depth_chroma_minus8: V,
frame_rate: { fixed: C, fps: U / F, fps_den: F, fps_num: U },
sar_ratio: { width: D, height: S },
codec_size: { width: x, height: L },
present_size: { width: x * R, height: L },
}
)
})(r),
i = (e => {
let t = Ee(e),
r = new X(t),
n =
(r.readByte(),
r.readByte(),
r.readUEG(),
r.readUEG(),
r.readBool(),
r.readBool(),
r.readBits(3),
r.readBool(),
r.readBool(),
r.readUEG(),
r.readUEG(),
r.readSEG(),
r.readBool(),
r.readBool(),
r.readBool() && r.readUEG(),
r.readSEG(),
r.readSEG(),
r.readBool(),
r.readBool(),
r.readBool(),
r.readBool(),
r.readBool()),
o = r.readBool(),
a = 1
return o && n ? (a = 0) : o ? (a = 3) : n && (a = 2), { parallelismType: a }
})(t),
n = Object.assign(n, o, a, i)
let s = 23 + (5 + e.byteLength) + (5 + r.byteLength) + (5 + t.byteLength),
l = new Uint8Array(s)
;(l[0] = 1),
(l[1] =
((3 & n.general_profile_space) << 6) |
((n.general_tier_flag ? 1 : 0) << 5) |
(31 & n.general_profile_idc)),
(l[2] = n.general_profile_compatibility_flags_1 || 0),
(l[3] = n.general_profile_compatibility_flags_2 || 0),
(l[4] = n.general_profile_compatibility_flags_3 || 0),
(l[5] = n.general_profile_compatibility_flags_4 || 0),
(l[6] = n.general_constraint_indicator_flags_1 || 0),
(l[7] = n.general_constraint_indicator_flags_2 || 0),
(l[8] = n.general_constraint_indicator_flags_3 || 0),
(l[9] = n.general_constraint_indicator_flags_4 || 0),
(l[10] = n.general_constraint_indicator_flags_5 || 0),
(l[11] = n.general_constraint_indicator_flags_6 || 0),
(l[12] = 60),
(l[13] = 240 | ((3840 & n.min_spatial_segmentation_idc) >> 8)),
(l[14] = 255 & n.min_spatial_segmentation_idc),
(l[15] = 252 | (3 & n.parallelismType)),
(l[16] = 252 | (3 & n.chroma_format_idc)),
(l[17] = 248 | (7 & n.bit_depth_luma_minus8)),
(l[18] = 248 | (7 & n.bit_depth_chroma_minus8)),
(l[19] = 0),
(l[20] = 0),
(l[21] =
((3 & n.constant_frame_rate) << 6) |
((7 & n.num_temporal_layers) << 3) |
((n.temporal_id_nested ? 1 : 0) << 2) |
3),
(l[22] = 3),
(l[23] = 128 | V),
(l[24] = 0),
(l[25] = 1),
(l[26] = (65280 & e.byteLength) >> 8),
(l[27] = (255 & e.byteLength) >> 0),
l.set(e, 28),
(l[23 + (5 + e.byteLength) + 0] = 128 | z),
(l[23 + (5 + e.byteLength) + 1] = 0),
(l[23 + (5 + e.byteLength) + 2] = 1),
(l[23 + (5 + e.byteLength) + 3] = (65280 & r.byteLength) >> 8),
(l[23 + (5 + e.byteLength) + 4] = (255 & r.byteLength) >> 0),
l.set(r, 23 + (5 + e.byteLength) + 5),
(l[23 + (5 + e.byteLength + 5 + r.byteLength) + 0] = 128 | j),
(l[23 + (5 + e.byteLength + 5 + r.byteLength) + 1] = 0),
(l[23 + (5 + e.byteLength + 5 + r.byteLength) + 2] = 1),
(l[23 + (5 + e.byteLength + 5 + r.byteLength) + 3] = (65280 & t.byteLength) >> 8),
(l[23 + (5 + e.byteLength + 5 + r.byteLength) + 4] = (255 & t.byteLength) >> 0),
l.set(t, 23 + (5 + e.byteLength + 5 + r.byteLength) + 5)
const u = [28, 0, 0, 0, 0],
d = new Uint8Array(u.length + l.byteLength)
return d.set(u, 0), d.set(l, u.length), d
})({ vps: C.vps, sps: C.sps, pps: C.pps })
F.decode(e, { type: 2, ts: 0, isIFrame: !0, cts: 0 })
}
},
}),
F = {
isPlayer: !0,
isPlayback: !1,
isPushDropping: !1,
isDestroyed: !1,
_opt: S(),
startStreamRateAndStatsInterval: function () {
F.stopStreamRateAndStatsInterval(),
(e = setInterval(() => {
s && s(0)
var e = JSON.stringify({
demuxBufferDelay: F.getVideoBufferLength(),
audioDemuxBufferDelay: F.getAudioBufferLength(),
flvBufferByteLength: F.getFlvBufferLength(),
netBuf: F.networkDelay || 0,
pushLatestDelay: F.pushLatestDelay || 0,
isDropping: pe(F.dropping) || pe(F.isPushDropping),
isStreamTsMoreThanLocal: g,
})
postMessage({ cmd: I, type: 'streamStats', value: e })
}, 1e3))
},
stopStreamRateAndStatsInterval: function () {
e && (clearInterval(e), (e = null))
},
useOffscreen: function () {
return F._opt.useOffscreen && 'undefined' != typeof OffscreenCanvas
},
getDelay: function (e) {
return !e || (F._opt.hasVideo && !m)
? -1
: (F.preDelayTimestamp && F.preDelayTimestamp > e
? 1e3 < F.preDelayTimestamp - e &&
F.debug.warn(
'worker',
`getDelay() and preDelayTimestamp is ${
F.preDelayTimestamp
} > timestamp is ${e} more than ${F.preDelayTimestamp - e}ms`,
)
: F.firstTimestamp
? e &&
((t = Date.now() - F.startTimestamp),
(r = e - F.firstTimestamp) <= t
? ((g = !1), (F.delay = t - r))
: ((g = !0), (F.delay = r - t)))
: ((F.firstTimestamp = e), (F.startTimestamp = Date.now()), (F.delay = -1)),
(F.preDelayTimestamp = e),
F.delay)
var t, r
},
getDelayNotUpdateDelay: function (t) {
if (!t || (F._opt.hasVideo && !m)) return -1
if (F.preDelayTimestamp && 1e3 < F.preDelayTimestamp - t)
return (
F.debug.warn(
'worker',
`getDelayNotUpdateDelay and preDelayTimestamp is ${
F.preDelayTimestamp
} > timestamp is ${t} more than ${F.preDelayTimestamp - t}ms`,
),
-1
)
if (F.firstTimestamp) {
let e = -1
var r
return (
t &&
((r = Date.now() - F.startTimestamp),
(t = t - F.firstTimestamp),
(e = t <= r ? ((g = !1), r - t) : ((g = !0), t - r))),
e
)
}
return -1
},
resetDelay: function () {
;(F.firstTimestamp = null), (F.startTimestamp = null), (F.delay = -1)
},
resetAllDelay: function () {
F.resetDelay(), (F.preDelayTimestamp = null)
},
doDecode: function (e) {
F._opt.useWCS && F.useOffscreen() && 2 === e.type && a.decode
? a.decode(e.payload, e.ts, e.cts)
: e.decoder.decode(e.payload, e.ts, e.isIFrame, e.cts)
},
init: function () {
F.debug.log('worker', 'init and opt is', F._opt)
const t = F._opt.playType === x,
r = 'playbackTF' === F._opt.playType
if (
(C.init(),
(F.isPlayer = t),
(F.isPlayback = r),
F.isPlaybackCacheBeforeDecodeForFpsRender())
)
F.debug.log('worker', 'playback and playbackIsCacheBeforeDecodeForFpsRender is true')
else {
const r = () => {
let e = null
if (o.length)
if (F.isPushDropping)
F.debug.warn(
'worker',
'loop() isPushDropping is true and bufferList length is ' +
this.bufferList.length,
)
else if (F.dropping) {
for (
e = o.shift(),
F.debug.warn(
'worker',
`loop() dropBuffer is dropping and isIFrame ${e.isIFrame} and delay is ${F.delay} and bufferlist is ` +
o.length,
);
!e.isIFrame && o.length;
)
e = o.shift()
const t = F.getDelayNotUpdateDelay(e.ts)
e.isIFrame &&
t <= F.getNotDroppingDelayTs() &&
(F.debug.log('worker', 'loop() is dropping = false, is iFrame'),
(F.dropping = !1),
F.doDecode(e))
} else if (((e = o[0]), -1 === F.getDelay(e.ts) || F.isPlayback))
F.isPlayer &&
F.debug.log('worker', 'loop() common dumex delay is -1 ,data.ts is', e.ts),
o.shift(),
F.doDecode(e)
else if (F.delay > F._opt.videoBuffer + F._opt.videoBufferDelay && t)
F.hasIframeInBufferList()
? (F.debug.log('worker', `delay is ${F.delay}, set dropping is true`),
F.resetAllDelay(),
(F.dropping = !0))
: (o.shift(), F.doDecode(e))
else
for (; o.length; ) {
if (((e = o[0]), !(F.getDelay(e.ts) > F._opt.videoBuffer))) {
F.delay < 0 &&
F.debug.warn(
'worker',
`loop() do not decode and delay is ${F.delay}, bufferList is ` + o.length,
)
break
}
o.shift(), F.doDecode(e)
}
else
-1 !== F.delay &&
F.debug.log('worker', 'loop() bufferList is empty and reset delay'),
F.resetAllDelay()
}
F.stopId = setInterval(() => {
var e = new Date().getTime(),
e = e - (y = y || e)
100 < e && F.debug.warn('worker', 'loop demux diff time is ' + e),
r(),
(y = new Date().getTime())
}, 10)
}
F._opt.checkFirstIFrame || (m = !0)
},
playbackCacheLoop: function () {
F.stopId && (clearInterval(F.stopId), (F.stopId = null))
var e = () => {
var e
o.length && ((e = o.shift()), F.doDecode(e))
},
t = (e(), Math.ceil(1e3 / (F.streamFps * F._opt.playbackRate)))
F.debug.log(
'worker',
`playbackCacheLoop fragDuration is ${t}, streamFps is ${F.streamFps}, playbackRate is ` +
F._opt.playbackRate,
),
(F.stopId = setInterval(e, t))
},
close: function () {
F.debug.log('worker', 'close'),
(F.isDestroyed = !0),
F.stopStreamRateAndStatsInterval(),
F.stopId && (clearInterval(F.stopId), (F.stopId = null)),
U && (U.clear && U.clear(), (U = null)),
P && (P.clear && P.clear(), (P = null)),
(s = null),
(y = null),
(g = !1),
a && (a.reset && a.reset(), (a = null)),
(F.firstTimestamp = null),
(F.startTimestamp = null),
(F.networkDelay = 0),
(F.streamFps = null),
(F.streamAudioFps = null),
(F.streamVideoFps = null),
(F.delay = -1),
(F.pushLatestDelay = -1),
(F.preDelayTimestamp = null),
(F.dropping = !1),
(F.isPushDropping = !1),
(F.isPlayer = !0),
(F.isPlayback = !1),
(F._opt = S()),
F.webglObj &&
(F.webglObj.destroy(),
F.offscreenCanvas.removeEventListener(
'webglcontextlost',
F.onOffscreenCanvasWebglContextLost,
),
F.offscreenCanvas.removeEventListener(
'webglcontextrestored',
F.onOffscreenCanvasWebglContextRestored,
),
(F.offscreenCanvas = null),
(F.offscreenCanvasGL = null),
(F.offscreenCanvasCtx = null)),
(o = []),
(u = []),
n(),
(d = null),
i && (i.close(1e3, 'Client disconnecting'), (i = null)),
(c = null),
(f = null),
(p = !1),
(h = !1),
(m = !1),
(A = !1),
(D = !1),
(v = []),
(b = 0),
(E = 0),
(_ = null),
(w = null),
(t = null),
(k = null),
(T = 0),
(B = 0),
C.destroy(),
postMessage({ cmd: 'closeEnd' })
},
pushBuffer: function (e, t) {
if (1 === t.type && ue(e)) F.decodeAudio(e, t.ts)
else {
if (F.isPlayer && 0 < T && 0 < k && 2 === t.type) {
const e = t.ts - k
e > 2 * T - 5 &&
F.debug.warn(
'worker',
`pushBuffer video
ts is ${t.ts}, preTimestamp is ${k},
diff is ${e} and preTimestampDuration is ${T}
maybe trigger black screen or flower screen
`,
)
}
if (
(F.isPlayer &&
0 < k &&
2 === t.type &&
t.ts < k &&
36e5 < k - t.ts &&
(F.debug.warn(
'worker',
`pushBuffer,
preTimestamp is ${k}, options.ts is ${t.ts},
diff is ${k - t.ts} more than 3600000,
and resetAllDelay`,
),
F.resetAllDelay()),
F.isPlayer &&
t.ts <= k &&
0 < k &&
2 === t.type &&
F.debug.warn(
'worker',
`pushBuffer,
options.ts is ${t.ts} less than (or equal) preTimestamp is ${k} and
payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ` + B,
),
F.isPlayer && m)
) {
const e = F._opt.videoBuffer + F._opt.videoBufferDelay,
o = F.getDelayNotUpdateDelay(t.ts)
;(F.pushLatestDelay = o) > e &&
F.delay < e &&
0 < F.delay &&
F.hasIframeInBufferList() &&
!1 === F.isPushDropping &&
(F.debug.log(
'worker',
`pushBuffer, pushLatestDelay is ${o} more than ${e} and decoder.delay is ${F.delay} and has iIframe and next decoder.dropBuffer$2()`,
),
F.dropBuffer$2())
}
if (
(2 === t.type && (0 < k && (T = t.ts - k), (B = e.byteLength), (k = t.ts)),
1 === t.type
? o.push({
ts: t.ts,
payload: e,
decoder: { decode: F.decodeAudio },
type: 1,
isIFrame: !1,
})
: 2 === t.type &&
o.push({
ts: t.ts,
cts: t.cts,
payload: e,
decoder: { decode: F.decodeVideo },
type: 2,
isIFrame: t.isIFrame,
}),
F.isPlaybackCacheBeforeDecodeForFpsRender() &&
(H(F.streamVideoFps) || H(F.streamAudioFps)))
) {
let e = F.streamVideoFps,
t = F.streamAudioFps
H(F.streamVideoFps) &&
(e = fe(o, 2)) &&
((F.streamVideoFps = e),
postMessage({ cmd: 'playbackStreamVideoFps', value: F.streamVideoFps }),
(F.streamFps = t ? e + t : e),
F.playbackCacheLoop()),
H(F.streamAudioFps) &&
(t = fe(o, 1)) &&
((F.streamAudioFps = t), (F.streamFps = e ? e + t : t), F.playbackCacheLoop()),
H(F.streamVideoFps) &&
H(F.streamAudioFps) &&
F.debug.log(
'worker',
`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ` +
o.length,
)
}
}
},
getVideoBufferLength() {
let t = 0
return (
o.forEach(e => {
2 === e.type && (t += 1)
}),
t
)
},
hasIframeInBufferList: () => o.some(e => 2 === e.type && e.isIFrame),
getNotDroppingDelayTs: () => F._opt.videoBuffer + F._opt.videoBufferDelay / 2,
getAudioBufferLength() {
let t = 0
return (
o.forEach(e => {
1 === e.type && (t += 1)
}),
t
)
},
getFlvBufferLength() {
let e = 0
return (
d && d.buffer && (e = d.buffer.byteLength),
(e = F._opt.isNakedFlow && C.lastBuf ? C.lastBuf.byteLength : e)
)
},
fetchStream: function (e, t) {
F.debug.log('worker', 'fetchStream, url is ' + e, 'options:', JSON.stringify(t)),
(s = (function (r) {
let n = 0,
o = ce()
return e => {
var t
'[object Number]' === Object.prototype.toString.call(e) &&
((n += e), 1e3 <= (t = (e = ce()) - o) && (r((n / t) * 1e3), (o = e), (n = 0)))
}
})(e => {
postMessage({ cmd: I, type: 'streamRate', value: e })
})),
F.startStreamRateAndStatsInterval(),
2 === t.protocol
? ((d = new q(F.demuxFlv())),
fetch(e, { signal: r.signal })
.then(e => {
if (!(e.ok && 200 <= e.status && e.status <= 299))
return (
F.debug.warn(
'worker',
`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`,
),
n(),
void postMessage({
cmd: I,
type: $,
value: `fetch response status is ${e.status} and ok is ` + e.ok,
})
)
if ((postMessage({ cmd: I, type: ae }), 'undefined' != typeof WritableStream))
e.body.pipeTo(
new WritableStream({
write: e => {
s(e.byteLength), d.write(e)
},
close: () => {
;(d = null), n(), postMessage({ cmd: I, type: M, value: Z })
},
abort: e => {
;(d = null),
e.name !== W &&
(n(), postMessage({ cmd: I, type: $, value: e.toString() }))
},
}),
)
else {
const t = e.body.getReader(),
r = () => {
t.read()
.then(e => {
var { done: e, value: t } = e
if (e)
return (
(d = null), n(), void postMessage({ cmd: I, type: M, value: Z })
)
s(t.byteLength), d.write(t), r()
})
.catch(e => {
;(d = null),
e.name !== W &&
(n(), postMessage({ cmd: I, type: $, value: e.toString() }))
})
}
r()
}
})
.catch(e => {
e.name !== W &&
(n(), postMessage({ cmd: I, type: $, value: e.toString() }), (d = null))
}))
: 1 === t.protocol &&
(t.isFlv && (d = new q(F.demuxFlv())),
((i = new WebSocket(e)).binaryType = 'arraybuffer'),
(i.onopen = () => {
F.debug.log('worker', 'fetchStream, WebsocketStream socket open'),
postMessage({ cmd: I, type: ae }),
postMessage({ cmd: I, type: 'websocketOpen' })
}),
(i.onclose = e => {
F.debug.log(
'worker',
'fetchStream, WebsocketStream socket close and code is ' + e.code,
),
1006 === e.code &&
F.debug.warn(
'worker',
'fetchStream, WebsocketStream socket close abnormally and code is ' +
e.code,
),
(d = null),
postMessage({ cmd: I, type: M, value: 'websocket' })
}),
(i.onerror = e => {
F.debug.error('worker', 'fetchStream, WebsocketStream socket error', e),
(d = null),
postMessage({
cmd: I,
type: 'websocketError',
value: e.isTrusted ? 'websocket user aborted' : 'websocket error',
})
}),
(i.onmessage = e => {
s(e.data.byteLength),
t.isFlv
? d.write(e.data)
: F._opt.isNakedFlow
? F.demuxNakedFlow(e.data)
: F.demuxM7s(e.data)
}))
},
demuxFlv: function* () {
yield 9
const r = new ArrayBuffer(4),
e = new Uint8Array(r),
n = new Uint32Array(r)
for (;;) {
e[3] = 0
const r = yield 15,
i = r[4]
;(e[0] = r[7]), (e[1] = r[6]), (e[2] = r[5])
var t = n[0],
o = ((e[0] = r[10]), (e[1] = r[9]), (e[2] = r[8]), (e[3] = r[11]), n[0]),
a = (yield t).slice()
switch (i) {
case 8:
F.decode(a, { type: 1, ts: o })
break
case 9:
if (0 < a.byteLength) {
const r = a[0] >> 4 == 1
F.isPlayer && (F.calcNetworkDelay(o), r && F.calcIframeIntervalTimestamp(o)),
(n[0] = a[4]),
(n[1] = a[3]),
(n[2] = a[2]),
(n[3] = 0)
let e = n[0],
t = a
F._opt.isCrypto &&
(F._opt.cryptoIV &&
0 < F._opt.cryptoIV.byteLength &&
F._opt.cryptoKey &&
0 < F._opt.cryptoKey.byteLength
? (t = (function (t, r, n) {
;(r = new Uint8Array(r)), (n = new Uint8Array(n))
const o = t.byteLength
let a = 5
for (; a < o; ) {
s =
(s = t.slice(a, a + 4))[3] | (s[2] << 8) | (s[1] << 16) | (s[0] << 24)
if (s > o) break
var i = t[a + 4]
if (1 == (i &= 31) || 5 == i) {
const o = t.slice(a + 4 + 2, a + 4 + s)
let e = new ze.ModeOfOperation.ctr(r, new ze.Counter(n))
i = e.decrypt(o)
;(e = null), t.set(i, a + 4 + 2)
}
a = a + 4 + s
}
var s
return t
})(a, F._opt.cryptoKey, F._opt.cryptoIV))
: F.debug.error(
'worker',
`cryptoKey.length is ${
F._opt.cryptoKey && F._opt.cryptoKey.byteLength
} or cryptoIV.length is ${
F._opt.cryptoIV && F._opt.cryptoIV.byteLength
} null`,
)),
F.decode(t, { type: 2, ts: o, isIFrame: r, cts: e })
}
break
default:
F.debug.log('worker', 'demuxFlv() type is ' + i)
}
}
},
decode: function (e, t) {
1 === t.type
? F._opt.hasAudio &&
(postMessage({ cmd: I, type: 'streamAbps', value: e.byteLength }),
F.isPlayer
? F.pushBuffer(e, { type: t.type, ts: t.ts, cts: t.cts })
: F.isPlayback &&
(F.isPlaybackCacheBeforeDecodeForFpsRender() || 1 === F._opt.playbackRate
? F.pushBuffer(e, { type: t.type, ts: t.ts, cts: t.cts })
: F.decodeAudio(e, t.ts)))
: 2 === t.type &&
F._opt.hasVideo &&
(postMessage({ cmd: I, type: 'streamVbps', value: e.byteLength }),
postMessage({ cmd: I, type: 'streamDts', value: t.ts }),
F.isPlayer
? F.pushBuffer(e, { type: t.type, ts: t.ts, isIFrame: t.isIFrame, cts: t.cts })
: F.isPlayback &&
(F.isPlaybackOnlyDecodeIFrame()
? t.isIFrame &&
F.pushBuffer(e, { type: t.type, ts: t.ts, cts: t.cts, isIFrame: t.isIFrame })
: (F.isPlaybackCacheBeforeDecodeForFpsRender(),
F.pushBuffer(e, {
type: t.type,
ts: t.ts,
cts: t.cts,
isIFrame: t.isIFrame,
}))))
},
setCodecAudio: function (e) {
var t = e[0] >> 4
if (ue(e) || 7 == t || 8 == t) {
F.debug.log('worker', 'setCodecAudio: init audio codec, codeId is ' + t)
e = t === N ? e.slice(2) : e.slice(1)
U.setCodec(t, F._opt.sampleRate, e), (h = !0)
{
const e = Number('1') || 1
setTimeout(() => {
F.close(), postMessage({ cmd: oe })
}, 60 * e * 60 * 1e3)
}
} else F.debug.warn('worker', 'setCodecAudio: hasInitAudioCodec is false, codecId is ', t)
},
decodeAudio: function (e, t) {
var r = e[0] >> 4
h ? U.decode(r === N ? e.slice(2) : e.slice(1), t) : F.setCodecAudio(e)
},
setCodecVideo: function (e) {
var t = 15 & e[0]
if (F.isVideoSequenceHeader(e))
if (7 == t || 12 == t) {
F.debug.log('worker', 'setCodecVideo: init video codec , codecId is ' + t)
var r = e.slice(5)
if (7 == t && F._opt.useSIMD) {
const e = ye(r)
if (4080 < e.codecWidth || 4080 < e.codecHeight)
return (
postMessage({ cmd: 'simdH264DecodeVideoWidthIsTooLarge' }),
void F.debug.warn(
'worker',
`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ` +
e.codecHeight,
)
)
}
;(p = !0),
P.setCodec(t, r),
F._opt.recordType === L &&
postMessage({ cmd: ne, buffer: e, codecId: t }, [e.buffer])
} else
F.debug.warn(
'worker',
`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`,
)
else
F.debug.warn(
'worker',
`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${
e[0] >> 4
} and packetType is ` + e[1],
)
},
decodeVideo: function (t, r, e, n) {
if (p)
if ((m = !m && e ? !0 : m)) {
if (e && F.isVideoSequenceHeader(t)) {
const r = 15 & t[0]
let e = {}
7 == r
? (e = ye(t.slice(5)))
: 12 == r &&
(e = (function (e) {
let o = { width: 0, height: 0, profile: 0, level: 0 }
e = e.slice(5)
do {
let t = {}
if (e.length < 23) break
if (((t.configurationVersion = e[0]), 1 != t.configurationVersion)) break
;(t.general_profile_space = (e[1] >> 6) & 3),
(t.general_tier_flag = (e[1] >> 5) & 1),
(t.general_profile_idc = 31 & e[1]),
(t.general_profile_compatibility_flags =
(e[2] << 24) | (e[3] << 16) | (e[4] << 8) | e[5]),
(t.general_constraint_indicator_flags =
(e[6] << 24) | (e[7] << 16) | (e[8] << 8) | e[9]),
(t.general_constraint_indicator_flags =
(t.general_constraint_indicator_flags << 16) | (e[10] << 8) | e[11]),
(t.general_level_idc = e[12]),
(t.min_spatial_segmentation_idc = ((15 & e[13]) << 8) | e[14]),
(t.parallelismType = 3 & e[15]),
(t.chromaFormat = 3 & e[16]),
(t.bitDepthLumaMinus8 = 7 & e[17]),
(t.bitDepthChromaMinus8 = 7 & e[18]),
(t.avgFrameRate = (e[19] << 8) | e[20]),
(t.constantFrameRate = (e[21] >> 6) & 3),
(t.numTemporalLayers = (e[21] >> 3) & 7),
(t.temporalIdNested = (e[21] >> 2) & 1),
(t.lengthSizeMinusOne = 3 & e[21])
let r = e[22],
n = e.slice(23)
for (let e = 0; e < r && !(n.length < 3); e++) {
var a = 63 & n[0],
i = (n[1] << 8) | n[2]
n = n.slice(3)
for (let e = 0; e < i && !(n.length < 2); e++) {
var s = (n[0] << 8) | n[1]
if (n.length < 2 + s) break
if (((n = n.slice(2)), 33 == a)) {
let e = new Uint8Array(s)
e.set(n.slice(0, s), 0),
(t.psps = (function (e) {
let t = {},
r = e.length,
n = [],
o = new ge(e)
o.read(1), o.read(6), o.read(6), o.read(3)
for (let e = 2; e < r; e++)
e + 2 < r && 3 == o.look(24)
? (n.push(o.read(8)), n.push(o.read(8)), (e += 2), o.read(8))
: n.push(o.read(8))
let a = new Uint8Array(n),
i = new ge(a)
var s
return (
(t.sps_video_parameter_set_id = i.read(4)),
(t.sps_max_sub_layers_minus1 = i.read(3)),
(t.sps_temporal_id_nesting_flag = i.read(1)),
(t.profile_tier_level = (function (t, r) {
let n = {}
;(n.profile_space = t.read(2)),
(n.tier_flag = t.read(1)),
(n.profile_idc = t.read(5)),
(n.profile_compatibility_flags = t.read(32)),
(n.general_progressive_source_flag = t.read(1)),
(n.general_interlaced_source_flag = t.read(1)),
(n.general_non_packed_constraint_flag = t.read(1)),
(n.general_frame_only_constraint_flag = t.read(1)),
t.read(32),
t.read(12),
(n.level_idc = t.read(8)),
(n.sub_layer_profile_present_flag = []),
(n.sub_layer_level_present_flag = [])
for (let e = 0; e < r; e++)
(n.sub_layer_profile_present_flag[e] = t.read(1)),
(n.sub_layer_level_present_flag[e] = t.read(1))
if (0 < r) for (let e = r; e < 8; e++) t.read(2)
;(n.sub_layer_profile_space = []),
(n.sub_layer_tier_flag = []),
(n.sub_layer_profile_idc = []),
(n.sub_layer_profile_compatibility_flag = []),
(n.sub_layer_progressive_source_flag = []),
(n.sub_layer_interlaced_source_flag = []),
(n.sub_layer_non_packed_constraint_flag = []),
(n.sub_layer_frame_only_constraint_flag = []),
(n.sub_layer_level_idc = [])
for (let e = 0; e < r; e++)
n.sub_layer_profile_present_flag[e] &&
((n.sub_layer_profile_space[e] = t.read(2)),
(n.sub_layer_tier_flag[e] = t.read(1)),
(n.sub_layer_profile_idc[e] = t.read(5)),
(n.sub_layer_profile_compatibility_flag[e] = t.read(32)),
(n.sub_layer_progressive_source_flag[e] = t.read(1)),
(n.sub_layer_interlaced_source_flag[e] = t.read(1)),
(n.sub_layer_non_packed_constraint_flag[e] = t.read(1)),
(n.sub_layer_frame_only_constraint_flag[e] = t.read(1)),
t.read(32),
t.read(12)),
n.sub_layer_level_present_flag[e]
? (n.sub_layer_level_idc[e] = t.read(8))
: (n.sub_layer_level_idc[e] = 1)
return n
})(i, t.sps_max_sub_layers_minus1)),
(t.sps_seq_parameter_set_id = i.read_golomb()),
(t.chroma_format_idc = i.read_golomb()),
3 == t.chroma_format_idc
? (t.separate_colour_plane_flag = i.read(1))
: (t.separate_colour_plane_flag = 0),
(t.pic_width_in_luma_samples = i.read_golomb()),
(t.pic_height_in_luma_samples = i.read_golomb()),
(t.conformance_window_flag = i.read(1)),
t.conformance_window_flag
? ((e = 1 + (t.chroma_format_idc < 2)),
(s = 1 + (t.chroma_format_idc < 3)),
(t.conf_win_left_offset = i.read_golomb() * s),
(t.conf_win_right_offset = i.read_golomb() * s),
(t.conf_win_top_offset = i.read_golomb() * e),
(t.conf_win_bottom_offset = i.read_golomb() * e))
: ((t.conf_win_left_offset = 0),
(t.conf_win_right_offset = 0),
(t.conf_win_top_offset = 0),
(t.conf_win_bottom_offset = 0)),
t
)
})(e)),
(o.profile = t.general_profile_idc),
(o.level = t.general_level_idc / 30),
(o.width =
t.psps.pic_width_in_luma_samples -
(t.psps.conf_win_left_offset + t.psps.conf_win_right_offset)),
(o.height =
t.psps.pic_height_in_luma_samples -
(t.psps.conf_win_top_offset + t.psps.conf_win_bottom_offset))
}
n = n.slice(s)
}
}
} while (0)
return (
(o.codecWidth = o.width || 1920),
(o.codecHeight = o.height || 1080),
(o.presentHeight = o.codecHeight),
(o.presentWidth = o.codecWidth),
(o.timescale = 1e3),
(o.refSampleDuration = (1e3 / 23976) * 1e3),
(o.videoType = 'hevc'),
o
)
})(t)),
e.codecWidth &&
e.codecHeight &&
c &&
f &&
(e.codecWidth !== c || e.codecHeight !== f) &&
(F.debug.warn(
'worker',
`
decodeVideo: video width or height is changed,
old width is ${c}, old height is ${f},
new width is ${e.codecWidth}, new height is ${e.codecHeight},
and emit change event`,
),
(D = !0),
postMessage({ cmd: 'wasmWidthOrHeightChange' }))
}
var o
D
? F.debug.warn(
'worker',
'decodeVideo: video width or height is changed, and return',
)
: F.isVideoSequenceHeader(t)
? F.debug.warn(
'worker',
'decodeVideo and payload is video sequence header so drop this frame',
)
: t.byteLength < 12
? F.debug.warn(
'worker',
'decodeVideo and payload is too small , payload length is ' + t.byteLength,
)
: ((o = t.slice(5)),
P.decode(o, e ? 1 : 0, r),
F._opt.isRecording &&
F._opt.recordType === L &&
postMessage({ cmd: 'videoNalu', buffer: o, isIFrame: e, ts: r, cts: n }, [
t.buffer,
]))
} else F.debug.warn('worker', 'decodeVideo: first frame is not iframe')
else F.setCodecVideo(t)
},
clearBuffer: function () {
var e = 0 < arguments.length && void 0 !== arguments[0] && arguments[0]
F.debug.log('worker', `clearBuffer,bufferList length is ${o.length}, need clear is ` + e),
e && (o = []),
F.resetAllDelay(),
(F.dropping = !0)
},
dropBuffer$2: function () {
var e, t, r
0 < o.length &&
((F.isPushDropping = !0),
0 <= (e = o.findIndex(e => pe(e.isIFrame) && 2 === e.type))
? ((t = (o = o.slice(e)).shift()),
(r = F.getDelayNotUpdateDelay(t.ts)),
F.doDecode(t),
(F.isPushDropping = !1),
F.debug.log(
'worker',
`dropBuffer$2() iFrameIndex is ${e},and bufferList length is ${o.length} and tempDelay is ${r} ,delay is ${F.delay} `,
))
: (F.isPushDropping = !1)),
0 === o.length && (F.isPushDropping = !1)
},
demuxM7s: function (e) {
const t = new DataView(e),
r = t.getUint32(1, !1)
switch (t.getUint8(0)) {
case 1:
F.decode(new Uint8Array(e, 5), { type: 1, ts: r })
break
case 2:
var n
5 < t.byteLength &&
((n = t.getUint8(5) >> 4 == 1),
F.isPlayer && (F.calcNetworkDelay(r), n && F.calcIframeIntervalTimestamp(r)),
F.decode(new Uint8Array(e, 5), { type: 2, ts: r, isIFrame: n }))
}
},
demuxNakedFlow: function (e) {
C.dispatch(e)
},
calcNetworkDelay: function (e) {
var t, r, n
m &&
0 < e &&
(null === _
? ((_ = e), (w = de()))
: e < _ &&
(F.debug.warn(
'worker',
`calcNetworkDelay, dts is ${e} less than bufferStartDts is ` + _,
),
(_ = e),
(w = de())),
(n = (t = e - _) < (r = de() - w) ? r - t : 0),
(F.networkDelay = n) > F._opt.networkDelay &&
F._opt.playType === x &&
(F.debug.warn(
'worker',
`calcNetworkDelay now dts:${e}, start dts is ${_} vs start is ${t},local diff is ${r} ,delay is ` +
n,
),
postMessage({ cmd: I, type: 'networkDelayTimeout', value: n })))
},
calcIframeIntervalTimestamp: function (e) {
null === t
? (t = e)
: t < e && (postMessage({ cmd: 'iframeIntervalTs', value: e - t }), (t = e))
},
canVisibilityDecodeNotDrop: function () {
return F._opt.visibility && c * f <= 2073600
},
isPlaybackCacheBeforeDecodeForFpsRender: function () {
return !F.isPlayer && F._opt.playbackIsCacheBeforeDecodeForFpsRender
},
isPlaybackOnlyDecodeIFrame: function () {
return F._opt.playbackRate >= F._opt.playbackForwardMaxRateDecodeIFrame
},
playbackUpdatePlaybackRate: function () {
F.clearBuffer(!0)
},
isVideoSequenceHeader: function (e) {
return e[0] >> 4 == 1 && e[1] === le
},
onOffscreenCanvasWebglContextLost: function (e) {
F.debug.error(
'worker',
'handleOffscreenCanvasWebglContextLost and next try to create webgl',
),
e.preventDefault(),
(A = !0),
F.webglObj.destroy(),
(F.webglObj = null),
(F.offscreenCanvasGL = null),
setTimeout(() => {
;(F.offscreenCanvasGL = F.offscreenCanvas.getContext('webgl')),
F.offscreenCanvasGL && F.offscreenCanvasGL.getContextAttributes().stencil
? ((F.webglObj = J(F.offscreenCanvasGL, F._opt.openWebglAlignment)), (A = !1))
: F.debug.error(
'worker',
'handleOffscreenCanvasWebglContextLost, stencil is false',
)
}, 500)
},
onOffscreenCanvasWebglContextRestored: function (e) {
F.debug.log('worker', 'handleOffscreenCanvasWebglContextRestored'), e.preventDefault()
},
videoInfo: function (e, t, r) {
postMessage({ cmd: re, code: e }),
postMessage({ cmd: ee, w: t, h: r }),
(c = t),
(f = r),
F.useOffscreen() &&
((F.offscreenCanvas = new OffscreenCanvas(t, r)),
(F.offscreenCanvasGL = F.offscreenCanvas.getContext('webgl')),
(F.webglObj = J(F.offscreenCanvasGL, F._opt.openWebglAlignment)),
F.offscreenCanvas.addEventListener(
'webglcontextlost',
F.onOffscreenCanvasWebglContextLost,
!1,
),
F.offscreenCanvas.addEventListener(
'webglcontextrestored',
F.onOffscreenCanvasWebglContextRestored,
!1,
))
},
audioInfo: function (e, t, r) {
postMessage({ cmd: 'audioCode', code: e }),
postMessage({ cmd: 'initAudio', sampleRate: t, channels: r }),
(E = r)
},
yuvData: function (e, t) {
if (F.isDestroyed) F.debug.log('worker', 'yuvData, decoder is destroyed and return')
else {
var r,
n = (c * f * 3) / 2,
e = l.HEAPU8.subarray(e, e + n),
n = new Uint8Array(e)
if (F.useOffscreen())
try {
A ||
(F.webglObj.renderYUV(c, f, n),
(r = F.offscreenCanvas.transferToImageBitmap()),
postMessage({ cmd: R, buffer: r, delay: F.delay, ts: t }, [r]))
} catch (e) {
F.debug.error('worker', 'yuvData, transferToImageBitmap error is', e)
}
else postMessage({ cmd: R, output: n, delay: F.delay, ts: t }, [n.buffer])
}
},
pcmData: function (o, a, i) {
if (F.isDestroyed) F.debug.log('worker', 'pcmData, decoder is destroyed and return')
else {
let t = a,
r = [],
e = 0,
n = F._opt.audioBufferSize
for (let e = 0; e < 2; e++) {
var s = l.HEAPU32[(o >> 2) + e] >> 2
r[e] = l.HEAPF32.subarray(s, s + t)
}
if (b) {
if (!(t >= (a = n - b)))
return (
(b += t),
(u[0] = Float32Array.of(...u[0], ...r[0])),
void (2 == E && (u[1] = Float32Array.of(...u[1], ...r[1])))
)
;(v[0] = Float32Array.of(...u[0], ...r[0].subarray(0, a))),
2 == E && (v[1] = Float32Array.of(...u[1], ...r[1].subarray(0, a))),
postMessage(
{ cmd: te, buffer: v, ts: i },
v.map(e => e.buffer),
),
(e = a),
(t -= a)
}
for (b = t; b >= n; b -= n)
(v[0] = r[0].slice(e, (e += n))),
2 == E && (v[1] = r[1].slice(e - n, e)),
postMessage(
{ cmd: te, buffer: v, ts: i },
v.map(e => e.buffer),
)
b && ((u[0] = r[0].slice(e)), 2 == E && (u[1] = r[1].slice(e)))
}
},
sendWebsocketMessage: function (e) {
i
? 1 === i.readyState
? i.send(e)
: F.debug.error('worker', 'socket is not open')
: F.debug.error('worker', 'socket is null')
},
timeEnd: function () {
F.debug.error(
'worker',
'jessibuca pro 体验结束,请刷新页面再次体验如需要购买商业授权可以联系微信bosswancheng',
)
//F.close(),
//postMessage({ cmd: oe })
},
},
U = ((F.debug = new me(F)), null),
P = (l.AudioDecoder && (U = new l.AudioDecoder(F)), null)
l.VideoDecoder && (P = new l.VideoDecoder(F)),
postMessage({ cmd: 'init' }),
(self.onmessage = function (e) {
var t = e.data
switch (t.cmd) {
case 'init':
try {
F._opt = Object.assign(F._opt, JSON.parse(t.opt))
} catch (e) {}
F.init()
break
case 'decode':
F.pushBuffer(t.buffer, t.options)
break
case 'audioDecode':
F.decodeAudio(t.buffer, t.ts)
break
case 'videoDecode':
F.decodeVideo(t.buffer, t.ts, t.isIFrame)
break
case 'clearBuffer':
F.clearBuffer(t.needClear)
break
case 'fetchStream':
F.fetchStream(t.url, JSON.parse(t.opt))
break
case 'close':
F.close()
break
case 'updateConfig':
F.debug.log('worker', 'updateConfig', t.key, t.value),
(F._opt[t.key] = t.value),
'playbackRate' === t.key &&
(F.playbackUpdatePlaybackRate(),
F.isPlaybackCacheBeforeDecodeForFpsRender() && F.playbackCacheLoop())
break
case 'sendWsMessage':
F.sendWebsocketMessage(t.message)
}
})
}
Date.now ||
(Date.now = function () {
return new Date().getTime()
}),
(_.postRun = function () {
je(_)
})
})