hz-player
Version:
## 强大的视频流播放器
1,256 lines • 541 kB
JavaScript
!(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, _, g) {
"use strict";
function y(e) {
return e && "object" == typeof e && "default" in e ? e : { default: e };
}
var Ut = y(e),
xt = y(_),
Bt = y(g);
function b(e, t) {
return e((t = { exports: {} }), t.exports), t.exports;
}
var v = b(function(z) {
var _;
(_ = void 0 !== (_ = void 0 !== _ ? _ : {}) ? _ : {}).locateFile = function(e) {
return "decoder-pro.wasm" == e && "undefined" != typeof JESSIBUCA_PRO_WASM_URL && "" != JESSIBUCA_PRO_WASM_URL ? JESSIBUCA_PRO_WASM_URL : e;
};
var t,
m,
R,
M,
N,
O,
s,
G = Object.assign({}, _),
H = "./this.program",
V = "object" == typeof window,
h = "function" == typeof importScripts,
$ = "object" == typeof process && "object" == typeof process.versions && "string" == typeof process.versions.node,
e = "",
j =
($
? ((e = h ? Ut.default.dirname(e) + "/" : __dirname + "/"),
(O = () => {
N || ((M = xt.default), (N = Ut.default));
}),
(t = function(e, t) {
return O(), (e = N.normalize(e)), M.readFileSync(e, t ? void 0 : "utf8");
}),
(R = e => {
e = t(e, !0);
return (e = e.buffer ? e : new Uint8Array(e));
}),
(m = (e, r, i) => {
O(),
(e = N.normalize(e)),
M.readFile(e, function(e, t) {
e ? i(e) : r(t.buffer);
});
}),
1 < process.argv.length && (H = process.argv[1].replace(/\\/g, "/")),
process.argv.slice(2),
(z.exports = _),
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;
}),
(_.inspect = function() {
return "[Emscripten Module object]";
}))
: (V || h) &&
(h ? (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;
}),
h &&
(R = 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 i = new XMLHttpRequest();
i.open("GET", e, !0),
(i.responseType = "arraybuffer"),
(i.onload = () => {
200 == i.status || (0 == i.status && i.response) ? t(i.response) : r();
}),
(i.onerror = r),
i.send(null);
})),
_.print || console.log.bind(console)),
o = _.printErr || console.warn.bind(console),
W =
(Object.assign(_, G),
_.arguments && _.arguments,
_.thisProgram && (H = _.thisProgram),
_.quit && _.quit,
_.wasmBinary && (s = _.wasmBinary),
_.noExitRuntime,
"object" != typeof WebAssembly && b("no native wasm support detected"),
!1);
function Y(e, t) {
e || b(t);
}
var q,
u,
f,
l,
K,
d,
p,
X,
Z,
J,
Q = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0;
function a(e, t, r) {
for (var i = t + r, n = t; e[n] && !(i <= n); ) ++n;
if (16 < n - t && e.buffer && Q) return Q.decode(e.subarray(t, n));
for (var s = ""; t < n; ) {
var a,
o,
l = e[t++];
128 & l
? ((a = 63 & e[t++]),
192 != (224 & l)
? ((o = 63 & e[t++]),
(l = 224 == (240 & l) ? ((15 & l) << 12) | (a << 6) | o : ((7 & l) << 18) | (a << 12) | (o << 6) | (63 & e[t++])) < 65536
? (s += String.fromCharCode(l))
: ((o = l - 65536), (s += String.fromCharCode(55296 | (o >> 10), 56320 | (1023 & o)))))
: (s += String.fromCharCode(((31 & l) << 6) | a)))
: (s += String.fromCharCode(l));
}
return s;
}
function ee(e, t) {
return e ? a(f, e, t) : "";
}
function te(e, t, r, i) {
if (!(0 < i)) return 0;
for (var n = r, s = r + i - 1, a = 0; a < e.length; ++a) {
var o = e.charCodeAt(a);
if ((o = 55296 <= o && o <= 57343 ? (65536 + ((1023 & o) << 10)) | (1023 & e.charCodeAt(++a)) : o) <= 127) {
if (s <= r) break;
t[r++] = o;
} else if (o <= 2047) {
if (s <= r + 1) break;
(t[r++] = 192 | (o >> 6)), (t[r++] = 128 | (63 & o));
} else if (o <= 65535) {
if (s <= r + 2) break;
(t[r++] = 224 | (o >> 12)), (t[r++] = 128 | ((o >> 6) & 63)), (t[r++] = 128 | (63 & o));
} else {
if (s <= r + 3) break;
(t[r++] = 240 | (o >> 18)), (t[r++] = 128 | ((o >> 12) & 63)), (t[r++] = 128 | ((o >> 6) & 63)), (t[r++] = 128 | (63 & o));
}
}
return (t[r] = 0), r - n;
}
function re(e) {
for (var t = 0, r = 0; r < e.length; ++r) {
var i = e.charCodeAt(r);
i <= 127 ? t++ : i <= 2047 ? (t += 2) : 55296 <= i && i <= 57343 ? ((t += 4), ++r) : (t += 3);
}
return t;
}
_.INITIAL_MEMORY;
var c,
g,
y,
ie = [],
ne = [],
se = [],
r = 0,
i = null;
function ae() {
r++, _.monitorRunDependencies && _.monitorRunDependencies(r);
}
function oe() {
var e;
r--, _.monitorRunDependencies && _.monitorRunDependencies(r), 0 == r && i && ((e = i), (i = null), e());
}
function b(e) {
throw (_.onAbort && _.onAbort(e),
o((e = "Aborted(" + e + ")")),
(W = !0),
(e += ". Build with -sASSERTIONS for more info."),
new WebAssembly.RuntimeError(e));
}
function le(e) {
return e.startsWith("data:application/octet-stream;base64,");
}
function de(e) {
return e.startsWith("file://");
}
function he(e) {
try {
if (e == c && s) return new Uint8Array(s);
if (R) return R(e);
throw "both async and sync fetching of the wasm failed";
} catch (e) {
b(e);
}
}
function ue(e) {
for (; 0 < e.length; ) e.shift()(_);
}
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) {
d[this.ptr >> 2] = e;
}),
(this.set_caught = function(e) {
u[(this.ptr + 12) >> 0] = e = e ? 1 : 0;
}),
(this.get_caught = function() {
return 0 != u[(this.ptr + 12) >> 0];
}),
(this.set_rethrown = function(e) {
u[(this.ptr + 13) >> 0] = e = e ? 1 : 0;
}),
(this.get_rethrown = function() {
return 0 != u[(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 = d[this.ptr >> 2];
d[this.ptr >> 2] = e + 1;
}),
(this.release_ref = function() {
var e = d[this.ptr >> 2];
return (d[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((c = "decoder-pro.wasm")) || ((G = c), (c = _.locateFile ? _.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, i = e.length - 1; 0 <= i; i--) {
var n = e[i];
"." === n ? e.splice(i, 1) : ".." === n ? (e.splice(i, 1), r++) : r && (e.splice(i, 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)
},
w = {
resolve: function() {
for (var e = "", t = !1, r = arguments.length - 1; -1 <= r && !t; r--) {
var i = 0 <= r ? arguments[r] : S.cwd();
if ("string" != typeof i) throw new TypeError("Arguments to path.resolve must be strings");
if (!i) return "";
(e = i + "/" + e), (t = v.isAbs(i));
}
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 = w.resolve(e).substr(1)), (t = w.resolve(t).substr(1));
for (var i = r(e.split("/")), n = r(t.split("/")), s = Math.min(i.length, n.length), a = s, o = 0; o < s; o++)
if (i[o] !== n[o]) {
a = o;
break;
}
for (var l = [], o = a; o < i.length; o++) l.push("..");
return (l = l.concat(n.slice(a))).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 n = {
ttys: [],
init: function() {},
shutdown: function() {},
register: function(e, t) {
(n.ttys[e] = { input: [], output: [], ops: t }), S.registerDevice(e, n.stream_ops);
},
stream_ops: {
open: function(e) {
var t = n.ttys[e.node.rdev];
if (!t) throw new S.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, i, n) {
if (!e.tty || !e.tty.ops.get_char) throw new S.ErrnoError(60);
for (var s, a = 0, o = 0; o < i; o++) {
try {
s = e.tty.ops.get_char(e.tty);
} catch (e) {
throw new S.ErrnoError(29);
}
if (void 0 === s && 0 === a) throw new S.ErrnoError(6);
if (null == s) break;
a++, (t[r + o] = s);
}
return a && (e.node.timestamp = Date.now()), a;
},
write: function(e, t, r, i, n) {
if (!e.tty || !e.tty.ops.put_char) throw new S.ErrnoError(60);
try {
for (var s = 0; s < i; s++) e.tty.ops.put_char(e.tty, t[r + s]);
} catch (e) {
throw new S.ErrnoError(29);
}
return i && (e.node.timestamp = Date.now()), s;
}
},
default_tty_ops: {
get_char: function(e) {
if (!e.input.length) {
var t = null;
if ($) {
var r = Buffer.alloc(256),
i = 0;
try {
i = M.readSync(process.stdin.fd, r, 0, 256, -1);
} catch (e) {
if (!e.toString().includes("EOF")) throw e;
i = 0;
}
t = 0 < i ? r.slice(0, i).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 ? (j(a(e.output, 0)), (e.output = [])) : 0 != t && e.output.push(t);
},
flush: function(e) {
e.output && 0 < e.output.length && (j(a(e.output, 0)), (e.output = []));
}
},
default_tty1_ops: {
put_char: function(e, t) {
null === t || 10 === t ? (o(a(e.output, 0)), (e.output = [])) : 0 != t && e.output.push(t);
},
flush: function(e) {
e.output && 0 < e.output.length && (o(a(e.output, 0)), (e.output = []));
}
}
};
function ce(e) {
(t = e), (e = 65536 * Math.ceil(t / 65536));
var t = wt(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, i) {
if (S.isBlkdev(r) || S.isFIFO(r)) throw new S.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: S.chrdev_stream_ops }
});
r = S.createNode(e, t, r, i);
return (
S.isDir(r.mode)
? ((r.node_ops = E.ops_table.dir.node), (r.stream_ops = E.ops_table.dir.stream), (r.contents = {}))
: S.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))
: S.isLink(r.mode)
? ((r.node_ops = E.ops_table.link.node), (r.stream_ops = E.ops_table.link.stream))
: S.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 = S.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),
S.isDir(e.mode)
? (t.size = 4096)
: S.isFile(e.mode)
? (t.size = e.usedBytes)
: S.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 S.genericErrors[44];
},
mknod: function(e, t, r, i) {
return E.createNode(e, t, r, i);
},
rename: function(e, t, r) {
if (S.isDir(e.mode)) {
var i;
try {
i = S.lookupNode(t, r);
} catch (e) {}
if (i) for (var n in i.contents) throw new S.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 S.lookupNode(e, t).contents) throw new S.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 (S.isLink(e.mode)) return e.link;
throw new S.ErrnoError(28);
}
},
stream_ops: {
read: function(e, t, r, i, n) {
var s = e.node.contents;
if (n >= e.node.usedBytes) return 0;
var a = Math.min(e.node.usedBytes - n, i);
if (8 < a && s.subarray) t.set(s.subarray(n, n + a), r);
else for (var o = 0; o < a; o++) t[r + o] = s[n + o];
return a;
},
write: function(e, t, r, i, n, s) {
if (!i) return 0;
var a = e.node;
if (((a.timestamp = Date.now()), t.subarray && (!a.contents || a.contents.subarray))) {
if (s) return (a.contents = t.subarray(r, r + i)), (a.usedBytes = i);
if (0 === a.usedBytes && 0 === n) return (a.contents = t.slice(r, r + i)), (a.usedBytes = i);
if (n + i <= a.usedBytes) return a.contents.set(t.subarray(r, r + i), n), i;
}
if ((E.expandFileStorage(a, n + i), a.contents.subarray && t.subarray)) a.contents.set(t.subarray(r, r + i), n);
else for (var o = 0; o < i; o++) a.contents[n + o] = t[r + o];
return (a.usedBytes = Math.max(a.usedBytes, n + i)), i;
},
llseek: function(e, t, r) {
if ((1 === r ? (t += e.position) : 2 === r && S.isFile(e.node.mode) && (t += e.node.usedBytes), t < 0)) throw new S.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, i, n) {
if (!S.isFile(e.node.mode)) throw new S.ErrnoError(43);
var s,
a,
e = e.node.contents;
if (2 & n || e.buffer !== q) {
if (
((0 < r || r + t < e.length) && (e = e.subarray ? e.subarray(r, r + t) : Array.prototype.slice.call(e, r, r + t)),
(a = !0),
!(s = ce(t)))
)
throw new S.ErrnoError(48);
u.set(e, s);
} else (a = !1), (s = e.byteOffset);
return { ptr: s, allocated: a };
},
msync: function(e, t, r, i, n) {
if (S.isFile(e.node.mode)) return 2 & n || E.stream_ops.write(e, t, 0, i, r, !1), 0;
throw new S.ErrnoError(43);
}
}
},
S = {
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 = w.resolve(S.cwd(), e))) return { path: "", node: null };
if (8 < (t = Object.assign({ follow_mount: !0, recurse_count: 0 }, t)).recurse_count) throw new S.ErrnoError(32);
for (
var r = v.normalizeArray(
e.split("/").filter(e => !!e),
!1
),
i = S.root,
n = "/",
s = 0;
s < r.length;
s++
) {
var a = s === r.length - 1;
if (a && t.parent) break;
if (
((i = S.lookupNode(i, r[s])),
(n = v.join2(n, r[s])),
!S.isMountpoint(i) || (a && !t.follow_mount) || (i = i.mounted.root),
!a || t.follow)
)
for (var o = 0; S.isLink(i.mode); ) {
var l = S.readlink(n),
n = w.resolve(v.dirname(n), l),
i = S.lookupPath(n, { recurse_count: t.recurse_count + 1 }).node;
if (40 < o++) throw new S.ErrnoError(32);
}
}
return { path: n, node: i };
},
getPath: e => {
for (var t, r; ; ) {
if (S.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, i = 0; i < t.length; i++) r = ((r << 5) - r + t.charCodeAt(i)) | 0;
return ((e + r) >>> 0) % S.nameTable.length;
},
hashAddNode: e => {
var t = S.hashName(e.parent.id, e.name);
(e.name_next = S.nameTable[t]), (S.nameTable[t] = e);
},
hashRemoveNode: e => {
var t = S.hashName(e.parent.id, e.name);
if (S.nameTable[t] === e) S.nameTable[t] = e.name_next;
else
for (var r = S.nameTable[t]; r; ) {
if (r.name_next === e) {
r.name_next = e.name_next;
break;
}
r = r.name_next;
}
},
lookupNode: (e, t) => {
var r = S.mayLookup(e);
if (r) throw new S.ErrnoError(r, e);
for (var r = S.hashName(e.id, t), i = S.nameTable[r]; i; i = i.name_next) {
var n = i.name;
if (i.parent.id === e.id && n === t) return i;
}
return S.lookup(e, t);
},
createNode: (e, t, r, i) => {
e = new S.FSNode(e, t, r, i);
return S.hashAddNode(e), e;
},
destroyNode: e => {
S.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 = S.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) =>
S.ignorePermissions || ((!t.includes("r") || 292 & e.mode) && (!t.includes("w") || 146 & e.mode) && (!t.includes("x") || 73 & e.mode))
? 0
: 2,
mayLookup: e => {
return S.nodePermissions(e, "x") || (e.node_ops.lookup ? 0 : 2);
},
mayCreate: (e, t) => {
try {
return S.lookupNode(e, t), 20;
} catch (e) {}
return S.nodePermissions(e, "wx");
},
mayDelete: (e, t, r) => {
var i;
try {
i = S.lookupNode(e, t);
} catch (e) {
return e.errno;
}
t = S.nodePermissions(e, "wx");
if (t) return t;
if (r) {
if (!S.isDir(i.mode)) return 54;
if (S.isRoot(i) || S.getPath(i) === S.cwd()) return 10;
} else if (S.isDir(i.mode)) return 31;
return 0;
},
mayOpen: (e, t) =>
e
? S.isLink(e.mode)
? 32
: S.isDir(e.mode) && ("r" !== S.flagsToPermissionString(t) || 512 & t)
? 31
: S.nodePermissions(e, S.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] : S.MAX_OPEN_FDS,
r = e;
r <= t;
r++
)
if (!S.streams[r]) return r;
throw new S.ErrnoError(33);
},
getStream: e => S.streams[e],
createStream: (e, t, r) => {
S.FSStream ||
((S.FSStream = function() {
this.shared = {};
}),
(S.FSStream.prototype = {}),
Object.defineProperties(S.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 S.FSStream(), e));
t = S.nextfd(t, r);
return (e.fd = t), (S.streams[t] = e);
},
closeStream: e => {
S.streams[e] = null;
},
chrdev_stream_ops: {
open: e => {
var t = S.getDevice(e.node.rdev);
(e.stream_ops = t.stream_ops), e.stream_ops.open && e.stream_ops.open(e);
},
llseek: () => {
throw new S.ErrnoError(70);
}
},
major: e => e >> 8,
minor: e => 255 & e,
makedev: (e, t) => (e << 8) | t,
registerDevice: (e, t) => {
S.devices[e] = { stream_ops: t };
},
getDevice: e => S.devices[e],
getMounts: e => {
for (var t = [], r = [e]; r.length; ) {
var i = r.pop();
t.push(i), r.push.apply(r, i.mounts);
}
return t;
},
syncfs: (t, r) => {
"function" == typeof t && ((r = t), (t = !1)),
S.syncFSRequests++,
1 < S.syncFSRequests && o("warning: " + S.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work");
var i = S.getMounts(S.root.mount),
n = 0;
function s(e) {
return S.syncFSRequests--, r(e);
}
function a(e) {
if (e) return a.errored ? void 0 : ((a.errored = !0), s(e));
++n >= i.length && s(null);
}
i.forEach(e => {
if (!e.type.syncfs) return a(null);
e.type.syncfs(e, t, a);
});
},
mount: (e, t, r) => {
var i,
n = "/" === r,
s = !r;
if (n && S.root) throw new S.ErrnoError(10);
if (!n && !s) {
s = S.lookupPath(r, { follow_mount: !1 });
if (((r = s.path), (i = s.node), S.isMountpoint(i))) throw new S.ErrnoError(10);
if (!S.isDir(i.mode)) throw new S.ErrnoError(54);
}
(s = { type: e, opts: t, mountpoint: r, mounts: [] }), (t = e.mount(s));
return ((t.mount = s).root = t), n ? (S.root = t) : i && ((i.mounted = s), i.mount && i.mount.mounts.push(s)), t;
},
unmount: e => {
e = S.lookupPath(e, { follow_mount: !1 });
if (!S.isMountpoint(e.node)) throw new S.ErrnoError(28);
var e = e.node,
t = e.mounted,
i = S.getMounts(t),
t =
(Object.keys(S.nameTable).forEach(e => {
for (var t = S.nameTable[e]; t; ) {
var r = t.name_next;
i.includes(t.mount) && S.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 i = S.lookupPath(e, { parent: !0 }).node,
e = v.basename(e);
if (!e || "." === e || ".." === e) throw new S.ErrnoError(28);
var n = S.mayCreate(i, e);
if (n) throw new S.ErrnoError(n);
if (i.node_ops.mknod) return i.node_ops.mknod(i, e, t, r);
throw new S.ErrnoError(63);
},
create: (e, t) => S.mknod(e, (t = ((t = void 0 !== t ? t : 438) & 4095) | 32768), 0),
mkdir: (e, t) => S.mknod(e, (t = ((t = void 0 !== t ? t : 511) & 1023) | 16384), 0),
mkdirTree: (e, t) => {
for (var r = e.split("/"), i = "", n = 0; n < r.length; ++n)
if (r[n]) {
i += "/" + r[n];
try {
S.mkdir(i, t);
} catch (e) {
if (20 != e.errno) throw e;
}
}
},
mkdev: (e, t, r) => (void 0 === r && ((r = t), (t = 438)), S.mknod(e, (t |= 8192), r)),
symlink: (e, t) => {
if (!w.resolve(e)) throw new S.ErrnoError(44);
var r = S.lookupPath(t, { parent: !0 }).node;
if (!r) throw new S.ErrnoError(44);
var t = v.basename(t),
i = S.mayCreate(r, t);
if (i) throw new S.ErrnoError(i);
if (r.node_ops.symlink) return r.node_ops.symlink(r, t, e);
throw new S.ErrnoError(63);
},
rename: (e, t) => {
var r = v.dirname(e),
i = v.dirname(t),
n = v.basename(e),
s = v.basename(t),
a = S.lookupPath(e, { parent: !0 }).node,
o = S.lookupPath(t, { parent: !0 }).node;
if (!a || !o) throw new S.ErrnoError(44);
if (a.mount !== o.mount) throw new S.ErrnoError(75);
var l,
d = S.lookupNode(a, n);
if ("." !== w.relative(e, i).charAt(0)) throw new S.ErrnoError(28);
if ("." !== w.relative(t, r).charAt(0)) throw new S.ErrnoError(55);
try {
l = S.lookupNode(o, s);
} catch (e) {}
if (d !== l) {
(i = S.isDir(d.mode)), (t = S.mayDelete(a, n, i));
if (t) throw new S.ErrnoError(t);
if ((t = l ? S.mayDelete(o, s, i) : S.mayCreate(o, s))) throw new S.ErrnoError(t);
if (!a.node_ops.rename) throw new S.ErrnoError(63);
if (S.isMountpoint(d) || (l && S.isMountpoint(l))) throw new S.ErrnoError(10);
if (o !== a && (t = S.nodePermissions(a, "w"))) throw new S.ErrnoError(t);
S.hashRemoveNode(d);
try {
a.node_ops.rename(d, o, s);
} catch (e) {
throw e;
} finally {
S.hashAddNode(d);
}
}
},
rmdir: e => {
var t = S.lookupPath(e, { parent: !0 }).node,
e = v.basename(e),
r = S.lookupNode(t, e),
i = S.mayDelete(t, e, !0);
if (i) throw new S.ErrnoError(i);
if (!t.node_ops.rmdir) throw new S.ErrnoError(63);
if (S.isMountpoint(r)) throw new S.ErrnoError(10);
t.node_ops.rmdir(t, e), S.destroyNode(r);
},
readdir: e => {
e = S.lookupPath(e, { follow: !0 }).node;
if (e.node_ops.readdir) return e.node_ops.readdir(e);
throw new S.ErrnoError(54);
},
unlink: e => {
var t = S.lookupPath(e, { parent: !0 }).node;
if (!t) throw new S.ErrnoError(44);
var e = v.basename(e),
r = S.lookupNode(t, e),
i = S.mayDelete(t, e, !1);
if (i) throw new S.ErrnoError(i);
if (!t.node_ops.unlink) throw new S.ErrnoError(63);
if (S.isMountpoint(r)) throw new S.ErrnoError(10);
t.node_ops.unlink(t, e), S.destroyNode(r);
},
readlink: e => {
e = S.lookupPath(e).node;
if (!e) throw new S.ErrnoError(44);
if (e.node_ops.readlink) return w.resolve(S.getPath(e.parent), e.node_ops.readlink(e));
throw new S.ErrnoError(28);
},
stat: (e, t) => {
e = S.lookupPath(e, { follow: !t }).node;
if (!e) throw new S.ErrnoError(44);
if (e.node_ops.getattr) return e.node_ops.getattr(e);
throw new S.ErrnoError(63);
},
lstat: e => S.stat(e, !0),
chmod: (e, t, r) => {
r = "string" == typeof e ? S.lookupPath(e, { follow: !r }).node : e;
if (!r.node_ops.setattr) throw new S.ErrnoError(63);
r.node_ops.setattr(r, { mode: (4095 & t) | (-4096 & r.mode), timestamp: Date.now() });
},
lchmod: (e, t) => {
S.chmod(e, t, !0);
},
fchmod: (e, t) => {
e = S.getStream(e);
if (!e) throw new S.ErrnoError(8);
S.chmod(e.node, t);
},
chown: (e, t, r, i) => {
i = "string" == typeof e ? S.lookupPath(e, { follow: !i }).node : e;
if (!i.node_ops.setattr) throw new S.ErrnoError(63);
i.node_ops.setattr(i, { timestamp: Date.now() });
},
lchown: (e, t, r) => {
S.chown(e, t, r, !0);
},
fchown: (e, t, r) => {
e = S.getStream(e);
if (!e) throw new S.ErrnoError(8);
S.chown(e.node, t, r);
},
truncate: (e, t) => {
if (t < 0) throw new S.ErrnoError(28);
e = "string" == typeof e ? S.lookupPath(e, { follow: !0 }).node : e;
if (!e.node_ops.setattr) throw new S.ErrnoError(63);
if (S.isDir(e.mode)) throw new S.ErrnoError(31);
if (!S.isFile(e.mode)) throw new S.ErrnoError(28);
var r = S.nodePermissions(e, "w");
if (r) throw new S.ErrnoError(r);
e.node_ops.setattr(e, { size: t, timestamp: Date.now() });
},
ftruncate: (e, t) => {
e = S.getStream(e);
if (!e) throw new S.ErrnoError(8);
if (0 == (2097155 & e.flags)) throw new S.ErrnoError(28);
S.truncate(e.node, t);
},
utime: (e, t, r) => {
e = S.lookupPath(e, { follow: !0 }).node;
e.node_ops.setattr(e, { timestamp: Math.max(t, r) });
},
open: (e, t, r) => {
if ("" === e) throw new S.ErrnoError(44);
var i;
if (
((r = void 0 === r ? 438 : r),
(r = 64 & (t = "string" == typeof t ? S.modeStringToFlags(t) : t) ? (4095 & r) | 32768 : 0),
"object" == typeof e)
)
i = e;
else {
e = v.normalize(e);
try {
i = S.lookupPath(e, { follow: !(131072 & t) }).node;
} catch (e) {}
}
var n = !1;
if (64 & t)
if (i) {
if (128 & t) throw new S.ErrnoError(20);
} else (i = S.mknod(e, r, 0)), (n = !0);
if (!i) throw new S.ErrnoError(44);
if ((S.isChrdev(i.mode) && (t &= -513), 65536 & t && !S.isDir(i.mode))) throw new S.ErrnoError(54);
if (!n) {
r = S.mayOpen(i, t);
if (r) throw new S.ErrnoError(r);
}
512 & t && !n && S.truncate(i, 0), (t &= -131713);
r = S.createStream({
node: i,
path: S.getPath(i),
flags: t,
seekable: !0,
position: 0,
stream_ops: i.stream_ops,
ungotten: [],
error: !1
});
return (
r.stream_ops.open && r.stream_ops.open(r),
!_.logReadFiles || 1 & t || (S.readFiles || (S.readFiles = {}), e in S.readFiles || (S.readFiles[e] = 1)),
r
);
},
close: e => {
if (S.isClosed(e)) throw new S.ErrnoError(8);
e.getdents && (e.getdents = null);
try {
e.stream_ops.close && e.stream_ops.close(e);
} catch (e) {
throw e;
} finally {
S.closeStream(e.fd);
}
e.fd = null;
},
isClosed: e => null === e.fd,
llseek: (e, t, r) => {
if (S.isClosed(e)) throw new S.ErrnoError(8);
if (!e.seekable || !e.stream_ops.llseek) throw new S.ErrnoError(70);
if (0 != r && 1 != r && 2 != r) throw new S.ErrnoError(28);
return (e.position = e.stream_ops.llseek(e, t, r)), (e.ungotten = []), e.position;
},
read: (e, t, r, i, n) => {
if (i < 0 || n < 0) throw new S.ErrnoError(28);
if (S.isClosed(e)) throw new S.ErrnoError(8);
if (1 == (2097155 & e.flags)) throw new S.ErrnoError(8);
if (S.isDir(e.node.mode)) throw new S.ErrnoError(31);
if (!e.stream_ops.read) throw new S.ErrnoError(28);
var s = void 0 !== n;
if (s) {
if (!e.seekable) throw new S.ErrnoError(70);
} else n = e.position;
t = e.stream_ops.read(e, t, r, i, n);
return s || (e.position += t), t;
},
write: (e, t, r, i, n, s) => {
if (i < 0 || n < 0) throw new S.ErrnoError(28);
if (S.isClosed(e)) throw new S.ErrnoError(8);
if (0 == (2097155 & e.flags)) throw new S.ErrnoError(8);
if (S.isDir(e.node.mode)) throw new S.ErrnoError(31);
if (!e.stream_ops.write) throw new S.ErrnoError(28);
e.seekable && 1024 & e.flags && S.llseek(e, 0, 2);
var a = void 0 !== n;
if (a) {
if (!e.seekable) throw new S.ErrnoError(70);
} else n = e.position;
t = e.stream_ops.write(e, t, r, i, n, s);
return a || (e.position += t), t;
},
allocate: (e, t, r) => {
if (S.isClosed(e)) throw new S.ErrnoError(8);
if (t < 0 || r <= 0) throw new S.ErrnoError(28);
if (0 == (2097155 & e.flags)) throw new S.ErrnoError(8);
if (!S.isFile(e.node.mode) && !S.isDir(e.node.mode)) throw new S.ErrnoError(43);
if (!e.stream_ops.allocate) throw new S.ErrnoError(138);
e.stream_ops.allocate(e, t, r);
},
mmap: (e, t, r, i, n) => {
if (0 != (2 & i) && 0 == (2 & n) && 2 != (2097155 & e.flags)) throw new S.ErrnoError(2);
if (1 == (2097155 & e.flags)) throw new S.ErrnoError(2);
if (e.stream_ops.mmap) return e.stream_ops.mmap(e, t, r, i, n);
throw new S.ErrnoError(43);
},
msync: (e, t, r, i, n) => (e && e.stream_ops.msync ? e.stream_ops.msync(e, t, r, i, n) : 0),
munmap: e => 0,
ioctl: (e, t, r) => {
if (e.stream_ops.ioctl) return e.stream_ops.ioctl(e, t, r);
throw new S.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,
i = S.open(e, t.flags),
e = S.stat(e).size,
n = new Uint8Array(e);
return S.read(i, n, 0, e, 0), "utf8" === t.encoding ? (r = a(n, 0)) : "binary" === t.encoding && (r = n), S.close(i), r;
},
writeFile: function(e, t) {
let r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {};
r.flags = r.flags || 577;
e = S.open(e, r.flags, r.mode);
if ("string" == typeof t) {
var i = new Uint8Array(re(t) + 1),
n = te(t, i, 0, i.length);
S.write(e, i, 0, n, void 0, r.canOwn);
} else {
if (!ArrayBuffer.isView(t)) throw new Error("Unsupported data type");
S.write(e, t, 0, t.byteLength, void 0, r.canOwn);
}
S.close(e);
},
cwd: () => S.currentPath,
chdir: e => {
e = S.lookupPath(e, { follow: !0 });
if (null === e.node) throw new S.ErrnoError(44);
if (!S.isDir(e.node.mode)) throw new S.ErrnoError(54);
var t = S.nodePermissions(e.node, "x");
if (t) throw new S.ErrnoError(t);
S.currentPath = e.path;
},
createDefaultDirectories: () => {
S.mkdir("/tmp"), S.mkdir("/home"), S.mkdir("/home/web_user");
},
createDefaultDevices: () => {
S.mkdir("/dev"),
S.registerDevice(S.makedev(1, 3), { read: () => 0, write: (e, t, r, i, n) => i }),
S.mkdev("/dev/null", S.makedev(1, 3)),
n.register(S.makedev(5, 0), n.default_tty_ops),
n.register(S.makedev(6, 0), n.default_tty1_ops),
S.mkdev("/dev/tty", S.makedev(5, 0)),
S.mkdev("/dev/tty1", S.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 ($)
try {
var t = Bt.default;
return () => t.randomBytes(1)[0];
} catch (e) {}
return () => b("randomDevice");
})();
S.createDevice("/dev", "random", e), S.createDevice("/dev", "urandom", e), S.mkdir("/dev/shm"), S.mkdir("/dev/shm/tmp");
},
createSpecialDirectories: () => {
S.mkdir("/proc");
var t = S.mkdir("/proc/self");
S.mkdir("/proc/self/fd"),
S.mount(
{
mount: () => {
var e = S.createNode(t, "fd", 16895, 73);
return (
(e.node_ops = {
lookup: (e, t) => {
var r = S.getStream(+t);
if (!r) throw new S.ErrnoError(8);
t = { parent: null, mount: { mountpoint: "fake" }, node_ops: { readlink: () => r.path } };
return (t.parent = t);
}
}),
e
);
}
},
{},
"