mirror of
https://gitlab.com/skysthelimit.dev/selenite.git
synced 2025-06-16 10:32:08 -05:00
8238 lines
416 KiB
JavaScript
8238 lines
416 KiB
JavaScript
var Module = function() {
|
|
var e = "undefined" != typeof document && document.currentScript ? document.currentScript.src : void 0;
|
|
return function(r) {
|
|
var t;
|
|
(r = void 0 !== (r = r || {}) ? r : {}).ready = new Promise((function(e, r) {
|
|
t = e, r
|
|
})), r.expectedDataFileDownloads || (r.expectedDataFileDownloads = 0, r.finishedDataFileDownloads = 0), r.expectedDataFileDownloads++,
|
|
function(e) {
|
|
if ("object" == typeof window) window.encodeURIComponent(window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf("/")) + "/");
|
|
else {
|
|
if ("undefined" == typeof location) throw "using preloaded data can only be done on a web page or in a web worker";
|
|
encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf("/")) + "/")
|
|
}
|
|
var t = "waflash.data";
|
|
"function" != typeof r.locateFilePackage || r.locateFile || (r.locateFile = r.locateFilePackage, p("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)"));
|
|
var n = r.locateFile ? r.locateFile(t, "") : t,
|
|
i = e.remote_package_size;
|
|
e.package_uuid;
|
|
var a, o, u, s, c = null,
|
|
l = r.getPreloadedPackage ? r.getPreloadedPackage(n, i) : null;
|
|
|
|
function f() {
|
|
function t(e, r) {
|
|
if (!e) throw r + (new Error).stack
|
|
}
|
|
|
|
function n(e, r, t) {
|
|
this.start = e, this.end = r, this.audio = t
|
|
}
|
|
n.prototype = {
|
|
requests: {},
|
|
open: function(e, t) {
|
|
this.name = t, this.requests[t] = this, r.addRunDependency("fp " + this.name)
|
|
},
|
|
send: function() {},
|
|
onload: function() {
|
|
var e = this.byteArray.subarray(this.start, this.end);
|
|
this.finish(e)
|
|
},
|
|
finish: function(e) {
|
|
r.FS_createDataFile(this.name, null, e, !0, !0, !0), r.removeRunDependency("fp " + this.name), this.requests[this.name] = null
|
|
}
|
|
};
|
|
for (var i = e.files, a = 0; a < i.length; ++a) new n(i[a].start, i[a].end, i[a].audio).open("GET", i[a].filename);
|
|
|
|
function o(i) {
|
|
r.finishedDataFileDownloads++, t(i, "Loading data file failed."), t(i instanceof ArrayBuffer, "bad input to processPackageData");
|
|
var a = new Uint8Array(i);
|
|
n.prototype.byteArray = a;
|
|
for (var o = e.files, u = 0; u < o.length; ++u) n.prototype.requests[o[u].filename].onload();
|
|
r.removeRunDependency("datafile_waflash.data")
|
|
}
|
|
r.addRunDependency("datafile_waflash.data"), r.preloadResults || (r.preloadResults = {}), r.preloadResults["waflash.data"] = {
|
|
fromCache: !1
|
|
}, l ? (o(l), l = null) : c = o
|
|
}
|
|
l || (a = n, o = i, u = function(e) {
|
|
c ? (c(e), c = null) : l = e
|
|
}, (s = new XMLHttpRequest).open("GET", a, !0), s.responseType = "arraybuffer", s.onprogress = function(e) {
|
|
var t = a,
|
|
n = o;
|
|
if (e.total && (n = e.total), e.loaded) {
|
|
s.addedTotal ? r.dataFileDownloads[t].loaded = e.loaded : (s.addedTotal = !0, r.dataFileDownloads || (r.dataFileDownloads = {}), r.dataFileDownloads[t] = {
|
|
loaded: e.loaded,
|
|
total: n
|
|
});
|
|
var i = 0,
|
|
u = 0,
|
|
c = 0;
|
|
for (var l in r.dataFileDownloads) {
|
|
var f = r.dataFileDownloads[l];
|
|
i += f.total, u += f.loaded, c++
|
|
}
|
|
i = Math.ceil(i * r.expectedDataFileDownloads / c), r.setStatus && r.setStatus("Downloading data... (" + u + "/" + i + ")")
|
|
} else r.dataFileDownloads || r.setStatus && r.setStatus("Downloading data...")
|
|
}, s.onerror = function(e) {
|
|
throw new Error("NetworkError for: " + a)
|
|
}, s.onload = function(e) {
|
|
if (!(200 == s.status || 304 == s.status || 206 == s.status || 0 == s.status && s.response)) throw new Error(s.statusText + " : " + s.responseURL);
|
|
var r = s.response;
|
|
u(r)
|
|
}, s.send(null)), r.calledRun ? f() : (r.preRun || (r.preRun = []), r.preRun.push(f))
|
|
}({
|
|
files: [{
|
|
filename: "/desktop.ini",
|
|
start: 0,
|
|
end: 46,
|
|
audio: 0
|
|
}, {
|
|
filename: "/NanumSquareRoundOTFR.otf",
|
|
start: 46,
|
|
end: 465950,
|
|
audio: 0
|
|
}],
|
|
remote_package_size: 465950,
|
|
package_uuid: "8f31e25d-d0a6-4a8f-a179-96a610fbbec2"
|
|
});
|
|
var n, i = {};
|
|
for (n in r) r.hasOwnProperty(n) && (i[n] = r[n]);
|
|
var a, o, u, s, c = [],
|
|
l = "./this.program",
|
|
f = function(e, r) {
|
|
throw r
|
|
},
|
|
d = "";
|
|
document.currentScript && (d = document.currentScript.src), e && (d = e), d = 0 !== d.indexOf("blob:") ? d.substr(0, d.lastIndexOf("/") + 1) : "", a = function(e) {
|
|
var r = new XMLHttpRequest;
|
|
return r.open("GET", e, !1), r.send(null), r.responseText
|
|
}, o = function(e, r, t) {
|
|
var n = new XMLHttpRequest;
|
|
n.open("GET", e, !0), n.responseType = "arraybuffer", n.onload = function() {
|
|
200 == n.status || 0 == n.status && n.response ? r(n.response) : t()
|
|
}, n.onerror = t, n.send(null)
|
|
}, s = function(e) {
|
|
document.title = e
|
|
};
|
|
var m = r.print || console.log.bind(console),
|
|
p = r.printErr || console.warn.bind(console);
|
|
for (n in i) i.hasOwnProperty(n) && (r[n] = i[n]);
|
|
i = null, r.arguments && (c = r.arguments), r.thisProgram && (l = r.thisProgram), r.quit && (f = r.quit);
|
|
|
|
function v(e) {
|
|
var r = q[W >> 2],
|
|
t = r + e + 15 & -16;
|
|
return q[W >> 2] = t, r
|
|
}
|
|
|
|
function g(e) {
|
|
switch (e) {
|
|
case "i1":
|
|
case "i8":
|
|
return 1;
|
|
case "i16":
|
|
return 2;
|
|
case "i32":
|
|
return 4;
|
|
case "i64":
|
|
return 8;
|
|
case "float":
|
|
return 4;
|
|
case "double":
|
|
return 8;
|
|
default:
|
|
if ("*" === e[e.length - 1]) return 4;
|
|
if ("i" === e[0]) {
|
|
var r = Number(e.substr(1));
|
|
return D(r % 8 == 0, "getNativeTypeSize invalid bits " + r + ", type " + e), r / 8
|
|
}
|
|
return 0
|
|
}
|
|
}
|
|
|
|
function h(e) {
|
|
h.shown || (h.shown = {}), h.shown[e] || (h.shown[e] = 1, p(e))
|
|
}
|
|
|
|
function _(e, t, n) {
|
|
return n && n.length ? r["dynCall_" + e].apply(null, [t].concat(n)) : r["dynCall_" + e].call(null, t)
|
|
}
|
|
var b, y, w, E = 0,
|
|
x = function(e) {
|
|
E = e
|
|
};
|
|
|
|
function k(e, r, t, n) {
|
|
switch ("*" === (t = t || "i8").charAt(t.length - 1) && (t = "i32"), t) {
|
|
case "i1":
|
|
case "i8":
|
|
O[e >> 0] = r;
|
|
break;
|
|
case "i16":
|
|
j[e >> 1] = r;
|
|
break;
|
|
case "i32":
|
|
q[e >> 2] = r;
|
|
break;
|
|
case "i64":
|
|
_e = [r >>> 0, (he = r, +ae(he) >= 1 ? he > 0 ? (0 | se(+ue(he / 4294967296), 4294967295)) >>> 0 : ~~+oe((he - +(~~he >>> 0)) / 4294967296) >>> 0 : 0)], q[e >> 2] = _e[0], q[e + 4 >> 2] = _e[1];
|
|
break;
|
|
case "float":
|
|
V[e >> 2] = r;
|
|
break;
|
|
case "double":
|
|
X[e >> 3] = r;
|
|
break;
|
|
default:
|
|
pe("invalid type for setValue: " + t)
|
|
}
|
|
}
|
|
r.wasmBinary && (b = r.wasmBinary), r.noExitRuntime && (y = r.noExitRuntime), "object" != typeof WebAssembly && p("no native wasm support detected");
|
|
var C = new WebAssembly.Table({
|
|
initial: 12757,
|
|
maximum: 12757,
|
|
element: "anyfunc"
|
|
}),
|
|
S = !1;
|
|
|
|
function D(e, r) {
|
|
e || pe("Assertion failed: " + r)
|
|
}
|
|
|
|
function F(e) {
|
|
var t = r["_" + e];
|
|
return D(t, "Cannot call unknown function " + e + ", make sure it is exported"), t
|
|
}
|
|
|
|
function A(e, r, t, n, i) {
|
|
var a = {
|
|
string: function(e) {
|
|
var r = 0;
|
|
if (null != e && 0 !== e) {
|
|
var t = 1 + (e.length << 2);
|
|
B(e, r = wt(t), t)
|
|
}
|
|
return r
|
|
},
|
|
array: function(e) {
|
|
var r = wt(e.length);
|
|
return function(e, r) {
|
|
O.set(e, r)
|
|
}(e, r), r
|
|
}
|
|
};
|
|
var o = F(e),
|
|
u = [],
|
|
s = 0;
|
|
if (n)
|
|
for (var c = 0; c < n.length; c++) {
|
|
var l = a[t[c]];
|
|
l ? (0 === s && (s = yt()), u[c] = l(n[c])) : u[c] = n[c]
|
|
}
|
|
var f = o.apply(null, u);
|
|
return f = function(e) {
|
|
return "string" === r ? L(e) : "boolean" === r ? Boolean(e) : e
|
|
}(f), 0 !== s && Et(s), f
|
|
}
|
|
var P = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0;
|
|
|
|
function T(e, r, t) {
|
|
for (var n = r + t, i = r; e[i] && !(i >= n);) ++i;
|
|
if (i - r > 16 && e.subarray && P) return P.decode(e.subarray(r, i));
|
|
for (var a = ""; r < i;) {
|
|
var o = e[r++];
|
|
if (128 & o) {
|
|
var u = 63 & e[r++];
|
|
if (192 != (224 & o)) {
|
|
var s = 63 & e[r++];
|
|
if ((o = 224 == (240 & o) ? (15 & o) << 12 | u << 6 | s : (7 & o) << 18 | u << 12 | s << 6 | 63 & e[r++]) < 65536) a += String.fromCharCode(o);
|
|
else {
|
|
var c = o - 65536;
|
|
a += String.fromCharCode(55296 | c >> 10, 56320 | 1023 & c)
|
|
}
|
|
} else a += String.fromCharCode((31 & o) << 6 | u)
|
|
} else a += String.fromCharCode(o)
|
|
}
|
|
return a
|
|
}
|
|
|
|
function L(e, r) {
|
|
return e ? T(G, e, r) : ""
|
|
}
|
|
|
|
function I(e, r, t, n) {
|
|
if (!(n > 0)) return 0;
|
|
for (var i = t, a = t + n - 1, o = 0; o < e.length; ++o) {
|
|
var u = e.charCodeAt(o);
|
|
if (u >= 55296 && u <= 57343) u = 65536 + ((1023 & u) << 10) | 1023 & e.charCodeAt(++o);
|
|
if (u <= 127) {
|
|
if (t >= a) break;
|
|
r[t++] = u
|
|
} else if (u <= 2047) {
|
|
if (t + 1 >= a) break;
|
|
r[t++] = 192 | u >> 6, r[t++] = 128 | 63 & u
|
|
} else if (u <= 65535) {
|
|
if (t + 2 >= a) break;
|
|
r[t++] = 224 | u >> 12, r[t++] = 128 | u >> 6 & 63, r[t++] = 128 | 63 & u
|
|
} else {
|
|
if (t + 3 >= a) break;
|
|
r[t++] = 240 | u >> 18, r[t++] = 128 | u >> 12 & 63, r[t++] = 128 | u >> 6 & 63, r[t++] = 128 | 63 & u
|
|
}
|
|
}
|
|
return r[t] = 0, t - i
|
|
}
|
|
|
|
function B(e, r, t) {
|
|
return I(e, G, r, t)
|
|
}
|
|
|
|
function R(e) {
|
|
for (var r = 0, t = 0; t < e.length; ++t) {
|
|
var n = e.charCodeAt(t);
|
|
n >= 55296 && n <= 57343 && (n = 65536 + ((1023 & n) << 10) | 1023 & e.charCodeAt(++t)), n <= 127 ? ++r : r += n <= 2047 ? 2 : n <= 65535 ? 3 : 4
|
|
}
|
|
return r
|
|
}
|
|
"undefined" != typeof TextDecoder && new TextDecoder("utf-16le");
|
|
|
|
function M(e) {
|
|
var r = R(e) + 1,
|
|
t = Zr(r);
|
|
return t && I(e, O, t, r), t
|
|
}
|
|
|
|
function N(e) {
|
|
var r = R(e) + 1,
|
|
t = wt(r);
|
|
return I(e, O, t, r), t
|
|
}
|
|
var U, O, G, j, z, q, Q, V, X;
|
|
|
|
function H(e) {
|
|
U = e, r.HEAP8 = O = new Int8Array(e), r.HEAP16 = j = new Int16Array(e), r.HEAP32 = q = new Int32Array(e), r.HEAPU8 = G = new Uint8Array(e), r.HEAPU16 = z = new Uint16Array(e), r.HEAPU32 = Q = new Uint32Array(e), r.HEAPF32 = V = new Float32Array(e), r.HEAPF64 = X = new Float64Array(e)
|
|
}
|
|
var W = 1052496,
|
|
Y = r.INITIAL_MEMORY || 16777216;
|
|
|
|
function Z(e) {
|
|
for (; e.length > 0;) {
|
|
var t = e.shift();
|
|
if ("function" != typeof t) {
|
|
var n = t.func;
|
|
"number" == typeof n ? void 0 === t.arg ? r.dynCall_v(n) : r.dynCall_vi(n, t.arg) : n(void 0 === t.arg ? null : t.arg)
|
|
} else t(r)
|
|
}
|
|
}(w = r.wasmMemory ? r.wasmMemory : new WebAssembly.Memory({
|
|
initial: Y / 65536,
|
|
maximum: 32768
|
|
})) && (U = w.buffer), Y = U.byteLength, H(U), q[W >> 2] = 6295552;
|
|
var K = [],
|
|
$ = [],
|
|
J = [],
|
|
ee = [],
|
|
re = [],
|
|
te = !1;
|
|
|
|
function ne(e, r, t) {
|
|
return e >= 0 ? e : r <= 32 ? 2 * Math.abs(1 << r - 1) + e : Math.pow(2, r) + e
|
|
}
|
|
|
|
function ie(e, r, t) {
|
|
if (e <= 0) return e;
|
|
var n = r <= 32 ? Math.abs(1 << r - 1) : Math.pow(2, r - 1);
|
|
return e >= n && (r <= 32 || e > n) && (e = -2 * n + e), e
|
|
}
|
|
var ae = Math.abs,
|
|
oe = Math.ceil,
|
|
ue = Math.floor,
|
|
se = Math.min,
|
|
ce = 0,
|
|
le = null,
|
|
fe = null;
|
|
|
|
function de(e) {
|
|
ce++, r.monitorRunDependencies && r.monitorRunDependencies(ce)
|
|
}
|
|
|
|
function me(e) {
|
|
if (ce--, r.monitorRunDependencies && r.monitorRunDependencies(ce), 0 == ce && (null !== le && (clearInterval(le), le = null), fe)) {
|
|
var t = fe;
|
|
fe = null, t()
|
|
}
|
|
}
|
|
|
|
function pe(e) {
|
|
throw r.onAbort && r.onAbort(e), m(e += ""), p(e), S = !0, 1, e = "abort(" + e + "). Build with -s ASSERTIONS=1 for more info.", new WebAssembly.RuntimeError(e)
|
|
}
|
|
r.preloadedImages = {}, r.preloadedAudios = {};
|
|
|
|
function ve(e) {
|
|
return r = e, t = "data:application/octet-stream;base64,", String.prototype.startsWith ? r.startsWith(t) : 0 === r.indexOf(t);
|
|
var r, t
|
|
}
|
|
var ge, he, _e, be = "waflash.wasm";
|
|
|
|
function ye() {
|
|
try {
|
|
if (b) return new Uint8Array(b);
|
|
if (u) return u(be);
|
|
throw "both async and sync fetching of the wasm failed"
|
|
} catch (e) {
|
|
pe(e)
|
|
}
|
|
}
|
|
ve(be) || (ge = be, be = r.locateFile ? r.locateFile(ge, d) : d + ge);
|
|
var we = {
|
|
2390: function(e) {
|
|
const r = L(e);
|
|
Pe.mkdir(r), Pe.mount(Ae, {}, r), Pe.syncfs(!0, (e => {}))
|
|
},
|
|
2968: function() {
|
|
if ("function" != typeof URLSearchParams) return !1;
|
|
return "1" == new URLSearchParams(window.location.search).get("wafv")
|
|
},
|
|
3162: function() {
|
|
const e = window.location.origin + window.location.pathname.substr(0, window.location.pathname.lastIndexOf("/") + 1),
|
|
r = R(e) + 1,
|
|
t = Zr(r);
|
|
return B(e, t, r), t
|
|
},
|
|
3499: function() {
|
|
r.canvas.addEventListener("keydown", (e => {
|
|
r.keyboardModifierState = r.keyboardModifierState || {}, r.keyboardModifierState.NumLock = e.getModifierState("NumLock")
|
|
})), document.addEventListener("keydown", (e => {
|
|
r.keyboardModifierState = r.keyboardModifierState || {}, r.keyboardModifierState.NumLock = e.getModifierState("NumLock")
|
|
}))
|
|
},
|
|
3889: function() {
|
|
if ("function" != typeof URLSearchParams) return 0;
|
|
const e = new URLSearchParams(window.location.search).get("wafsrc");
|
|
if (e) {
|
|
let r;
|
|
if (e.startsWith("http://") || e.startsWith("https://")) r = e;
|
|
else if ("/" == e[0]) r = window.location.origin + e;
|
|
else {
|
|
let t = window.location.pathname.substr(0, window.location.pathname.lastIndexOf("/") + 1);
|
|
r = window.location.origin + t + e
|
|
}
|
|
const t = R(r) + 1,
|
|
n = Zr(t);
|
|
return B(r, n, t), n
|
|
}
|
|
return 0
|
|
},
|
|
4531: function() {
|
|
if ("function" != typeof URLSearchParams) return !1;
|
|
return "gpu" == new URLSearchParams(window.location.search).get("wafm")
|
|
},
|
|
4718: function() {
|
|
let e = r.canvas.id;
|
|
if (!e) return 0;
|
|
e = "#" + e;
|
|
const t = R(e) + 1,
|
|
n = Zr(t);
|
|
return B(e, n, t), n
|
|
},
|
|
5713: function() {
|
|
return !(!r.options || !r.options.useMouseWheel)
|
|
},
|
|
6655: function() {
|
|
return r.keyboardModifierState.NumLock
|
|
},
|
|
6704: function() {
|
|
const e = r.canvas.wafActiveInputText;
|
|
e && r.canvas.parentNode.removeChild(e), r.canvas.wafActiveInputText = null, r.canvas.focus()
|
|
},
|
|
6877: function(e, t) {
|
|
const n = r.canvas.wafActiveInputText;
|
|
n && (n.wafSelectionChangedByEngine = !0, n.wafSelectionStart = n.selectionStart = e, n.wafSelectionEnd = n.selectionEnd = t)
|
|
},
|
|
7073: function(e) {
|
|
const t = r.canvas.wafActiveInputText;
|
|
if (t) {
|
|
const r = L(e);
|
|
t.value != r && (t.value = r, t.wafSelectionStart = t.selectionStart = r.length, t.wafSelectionEnd = t.selectionEnd = r.length)
|
|
}
|
|
},
|
|
264563: function(e, t) {
|
|
return {
|
|
high: 2,
|
|
medium: 1,
|
|
low: 0
|
|
} [r.options.quality] || t
|
|
},
|
|
886362: function(e) {
|
|
var r = L(e) + "\n\nAbort/Retry/Ignore/AlwaysIgnore? [ariA] :",
|
|
t = window.prompt(r, "i");
|
|
return null === t && (t = "i"),
|
|
function(e, r, t, n) {
|
|
var i, a;
|
|
"number" == typeof e ? (i = !0, a = e) : (i = !1, a = e.length);
|
|
var o, u = "string" == typeof r ? r : null;
|
|
if (o = 3 == t ? n : [Zr, wt, v][t](Math.max(a, u ? 1 : r.length)), i) {
|
|
var s;
|
|
for (n = o, D(0 == (3 & o)), s = o + (-4 & a); n < s; n += 4) q[n >> 2] = 0;
|
|
for (s = o + a; n < s;) O[n++ >> 0] = 0;
|
|
return o
|
|
}
|
|
if ("i8" === u) return e.subarray || e.slice ? G.set(e, o) : G.set(new Uint8Array(e), o), o;
|
|
for (var c, l, f, d = 0; d < a;) {
|
|
var m = e[d];
|
|
0 !== (c = u || r[d]) ? ("i64" == c && (c = "i32"), k(o + d, m, c), f !== c && (l = g(c), f = c), d += l) : d++
|
|
}
|
|
return o
|
|
}(Qr(t), "i8", 0)
|
|
},
|
|
922252: function(e, t, n) {
|
|
var i = e,
|
|
a = t,
|
|
o = n;
|
|
r.SDL2 || (r.SDL2 = {});
|
|
var u = r.SDL2;
|
|
u.ctxCanvas !== r.canvas && (u.ctx = r.createContext(r.canvas, !1, !0), u.ctxCanvas = r.canvas), u.w === i && u.h === a && u.imageCtx === u.ctx || (u.image = u.ctx.createImageData(i, a), u.w = i, u.h = a, u.imageCtx = u.ctx);
|
|
var s, c = u.image.data,
|
|
l = o >> 2,
|
|
f = 0;
|
|
if ("undefined" != typeof CanvasPixelArray && c instanceof CanvasPixelArray)
|
|
for (s = c.length; f < s;) {
|
|
var d = q[l];
|
|
c[f] = 255 & d, c[f + 1] = d >> 8 & 255, c[f + 2] = d >> 16 & 255, c[f + 3] = 255, l++, f += 4
|
|
} else {
|
|
u.data32Data !== c && (u.data32 = new Int32Array(c.buffer), u.data8 = new Uint8Array(c.buffer));
|
|
var m = u.data32;
|
|
s = m.length, m.set(q.subarray(l, l + s));
|
|
var p = u.data8,
|
|
v = 3,
|
|
g = v + 4 * s;
|
|
if (s % 8 == 0)
|
|
for (; v < g;) p[v] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, v = v + 4 | 0;
|
|
else
|
|
for (; v < g;) p[v] = 255, v = v + 4 | 0
|
|
}
|
|
return u.ctx.putImageData(u.image, 0, 0), 0
|
|
},
|
|
923731: function(e, r, t, n, i) {
|
|
var a = e,
|
|
o = r,
|
|
u = t,
|
|
s = n,
|
|
c = i,
|
|
l = document.createElement("canvas");
|
|
l.width = a, l.height = o;
|
|
var f, d = l.getContext("2d"),
|
|
m = d.createImageData(a, o),
|
|
p = m.data,
|
|
v = c >> 2,
|
|
g = 0;
|
|
if ("undefined" != typeof CanvasPixelArray && p instanceof CanvasPixelArray)
|
|
for (f = p.length; g < f;) {
|
|
var h = q[v];
|
|
p[g] = 255 & h, p[g + 1] = h >> 8 & 255, p[g + 2] = h >> 16 & 255, p[g + 3] = h >> 24 & 255, v++, g += 4
|
|
} else {
|
|
var _ = new Int32Array(p.buffer);
|
|
f = _.length, _.set(q.subarray(v, v + f))
|
|
}
|
|
d.putImageData(m, 0, 0);
|
|
var b = 0 === u && 0 === s ? "url(" + l.toDataURL() + "), auto" : "url(" + l.toDataURL() + ") " + u + " " + s + ", auto",
|
|
y = Zr(b.length + 1);
|
|
return B(b, y, b.length + 1), y
|
|
},
|
|
924720: function(e) {
|
|
return r.canvas && (r.canvas.style.cursor = L(e)), 0
|
|
},
|
|
924813: function() {
|
|
r.canvas && (r.canvas.style.cursor = "none")
|
|
},
|
|
926038: function() {
|
|
return screen.width
|
|
},
|
|
926065: function() {
|
|
return screen.height
|
|
},
|
|
926093: function() {
|
|
return window.innerWidth
|
|
},
|
|
926125: function() {
|
|
return window.innerHeight
|
|
},
|
|
926203: function(e) {
|
|
return void 0 !== s && s(L(e)), 0
|
|
},
|
|
926337: function() {
|
|
return "undefined" != typeof AudioContext || "undefined" != typeof webkitAudioContext ? 1 : 0
|
|
},
|
|
926503: function() {
|
|
return void 0 !== navigator.mediaDevices && void 0 !== navigator.mediaDevices.getUserMedia || void 0 !== navigator.webkitGetUserMedia ? 1 : 0
|
|
},
|
|
926729: function(e) {
|
|
void 0 === r.SDL2 && (r.SDL2 = {});
|
|
var t = r.SDL2;
|
|
return e ? t.capture = {} : t.audio = {}, t.audioContext || ("undefined" != typeof AudioContext ? t.audioContext = new AudioContext : "undefined" != typeof webkitAudioContext && (t.audioContext = new webkitAudioContext)), void 0 === t.audioContext ? -1 : 0
|
|
},
|
|
927212: function() {
|
|
return r.SDL2.audioContext.sampleRate
|
|
},
|
|
927282: function(e, t, n, i) {
|
|
var a = r.SDL2,
|
|
o = function(r) {
|
|
void 0 !== a.capture.silenceTimer && (clearTimeout(a.capture.silenceTimer), a.capture.silenceTimer = void 0), a.capture.mediaStreamNode = a.audioContext.createMediaStreamSource(r), a.capture.scriptProcessorNode = a.audioContext.createScriptProcessor(t, e, 1), a.capture.scriptProcessorNode.onaudioprocess = function(e) {
|
|
void 0 !== a && void 0 !== a.capture && (e.outputBuffer.getChannelData(0).fill(0), a.capture.currentCaptureBuffer = e.inputBuffer, _("vi", n, [i]))
|
|
}, a.capture.mediaStreamNode.connect(a.capture.scriptProcessorNode), a.capture.scriptProcessorNode.connect(a.audioContext.destination), a.capture.stream = r
|
|
},
|
|
u = function(e) {};
|
|
a.capture.silenceBuffer = a.audioContext.createBuffer(e, t, a.audioContext.sampleRate), a.capture.silenceBuffer.getChannelData(0).fill(0);
|
|
a.capture.silenceTimer = setTimeout((function() {
|
|
a.capture.currentCaptureBuffer = a.capture.silenceBuffer, _("vi", n, [i])
|
|
}), t / a.audioContext.sampleRate * 1e3), void 0 !== navigator.mediaDevices && void 0 !== navigator.mediaDevices.getUserMedia ? navigator.mediaDevices.getUserMedia({
|
|
audio: !0,
|
|
video: !1
|
|
}).then(o).catch(u) : void 0 !== navigator.webkitGetUserMedia && navigator.webkitGetUserMedia({
|
|
audio: !0,
|
|
video: !1
|
|
}, o, u)
|
|
},
|
|
928934: function(e, t, n, i) {
|
|
var a = r.SDL2;
|
|
a.audio.scriptProcessorNode = a.audioContext.createScriptProcessor(t, 0, e), a.audio.scriptProcessorNode.onaudioprocess = function(e) {
|
|
void 0 !== a && void 0 !== a.audio && (a.audio.currentOutputBuffer = e.outputBuffer, _("vi", n, [i]))
|
|
}, a.audio.scriptProcessorNode.connect(a.audioContext.destination)
|
|
},
|
|
929344: function(e, t) {
|
|
for (var n = r.SDL2, i = n.capture.currentCaptureBuffer.numberOfChannels, a = 0; a < i; ++a) {
|
|
var o = n.capture.currentCaptureBuffer.getChannelData(a);
|
|
if (o.length != t) throw "Web Audio capture buffer length mismatch! Destination size: " + o.length + " samples vs expected " + t + " samples!";
|
|
if (1 == i)
|
|
for (var u = 0; u < t; ++u) k(e + 4 * u, o[u], "float");
|
|
else
|
|
for (u = 0; u < t; ++u) k(e + 4 * (u * i + a), o[u], "float")
|
|
}
|
|
},
|
|
929949: function(e, t) {
|
|
for (var n = r.SDL2, i = n.audio.currentOutputBuffer.numberOfChannels, a = 0; a < i; ++a) {
|
|
var o = n.audio.currentOutputBuffer.getChannelData(a);
|
|
if (o.length != t) throw "Web Audio output buffer length mismatch! Destination size: " + o.length + " samples vs expected " + t + " samples!";
|
|
for (var u = 0; u < t; ++u) o[u] = V[e + (u * i + a << 2) >> 2]
|
|
}
|
|
},
|
|
930429: function(e) {
|
|
var t = r.SDL2;
|
|
if (e) {
|
|
if (void 0 !== t.capture.silenceTimer && clearTimeout(t.capture.silenceTimer), void 0 !== t.capture.stream) {
|
|
for (var n = t.capture.stream.getAudioTracks(), i = 0; i < n.length; i++) t.capture.stream.removeTrack(n[i]);
|
|
t.capture.stream = void 0
|
|
}
|
|
void 0 !== t.capture.scriptProcessorNode && (t.capture.scriptProcessorNode.onaudioprocess = function(e) {}, t.capture.scriptProcessorNode.disconnect(), t.capture.scriptProcessorNode = void 0), void 0 !== t.capture.mediaStreamNode && (t.capture.mediaStreamNode.disconnect(), t.capture.mediaStreamNode = void 0), void 0 !== t.capture.silenceBuffer && (t.capture.silenceBuffer = void 0), t.capture = void 0
|
|
} else null != t.audio.scriptProcessorNode && (t.audio.scriptProcessorNode.disconnect(), t.audio.scriptProcessorNode = void 0), t.audio = void 0;
|
|
void 0 !== t.audioContext && void 0 === t.audio && void 0 === t.capture && (t.audioContext.close(), t.audioContext = void 0)
|
|
}
|
|
};
|
|
|
|
function Ee() {
|
|
var e = new Error;
|
|
if (!e.stack) {
|
|
try {
|
|
throw new Error
|
|
} catch (r) {
|
|
e = r
|
|
}
|
|
if (!e.stack) return "(no stack trace available)"
|
|
}
|
|
return e.stack.toString()
|
|
}
|
|
|
|
function xe(e) {
|
|
return q[$r() >> 2] = e, e
|
|
}
|
|
$.push({
|
|
func: function() {
|
|
Wr()
|
|
}
|
|
});
|
|
var ke, Ce = {
|
|
splitPath: function(e) {
|
|
return /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)
|
|
},
|
|
normalizeArray: function(e, r) {
|
|
for (var t = 0, n = e.length - 1; n >= 0; n--) {
|
|
var i = e[n];
|
|
"." === i ? e.splice(n, 1) : ".." === i ? (e.splice(n, 1), t++) : t && (e.splice(n, 1), t--)
|
|
}
|
|
if (r)
|
|
for (; t; t--) e.unshift("..");
|
|
return e
|
|
},
|
|
normalize: function(e) {
|
|
var r = "/" === e.charAt(0),
|
|
t = "/" === e.substr(-1);
|
|
return (e = Ce.normalizeArray(e.split("/").filter((function(e) {
|
|
return !!e
|
|
})), !r).join("/")) || r || (e = "."), e && t && (e += "/"), (r ? "/" : "") + e
|
|
},
|
|
dirname: function(e) {
|
|
var r = Ce.splitPath(e),
|
|
t = r[0],
|
|
n = r[1];
|
|
return t || n ? (n && (n = n.substr(0, n.length - 1)), t + n) : "."
|
|
},
|
|
basename: function(e) {
|
|
if ("/" === e) return "/";
|
|
var r = e.lastIndexOf("/");
|
|
return -1 === r ? e : e.substr(r + 1)
|
|
},
|
|
extname: function(e) {
|
|
return Ce.splitPath(e)[3]
|
|
},
|
|
join: function() {
|
|
var e = Array.prototype.slice.call(arguments, 0);
|
|
return Ce.normalize(e.join("/"))
|
|
},
|
|
join2: function(e, r) {
|
|
return Ce.normalize(e + "/" + r)
|
|
}
|
|
},
|
|
Se = {
|
|
resolve: function() {
|
|
for (var e = "", r = !1, t = arguments.length - 1; t >= -1 && !r; t--) {
|
|
var n = t >= 0 ? arguments[t] : Pe.cwd();
|
|
if ("string" != typeof n) throw new TypeError("Arguments to path.resolve must be strings");
|
|
if (!n) return "";
|
|
e = n + "/" + e, r = "/" === n.charAt(0)
|
|
}
|
|
return (r ? "/" : "") + (e = Ce.normalizeArray(e.split("/").filter((function(e) {
|
|
return !!e
|
|
})), !r).join("/")) || "."
|
|
},
|
|
relative: function(e, r) {
|
|
function t(e) {
|
|
for (var r = 0; r < e.length && "" === e[r]; r++);
|
|
for (var t = e.length - 1; t >= 0 && "" === e[t]; t--);
|
|
return r > t ? [] : e.slice(r, t - r + 1)
|
|
}
|
|
e = Se.resolve(e).substr(1), r = Se.resolve(r).substr(1);
|
|
for (var n = t(e.split("/")), i = t(r.split("/")), a = Math.min(n.length, i.length), o = a, u = 0; u < a; u++)
|
|
if (n[u] !== i[u]) {
|
|
o = u;
|
|
break
|
|
} var s = [];
|
|
for (u = o; u < n.length; u++) s.push("..");
|
|
return (s = s.concat(i.slice(o))).join("/")
|
|
}
|
|
},
|
|
De = {
|
|
ttys: [],
|
|
init: function() {},
|
|
shutdown: function() {},
|
|
register: function(e, r) {
|
|
De.ttys[e] = {
|
|
input: [],
|
|
output: [],
|
|
ops: r
|
|
}, Pe.registerDevice(e, De.stream_ops)
|
|
},
|
|
stream_ops: {
|
|
open: function(e) {
|
|
var r = De.ttys[e.node.rdev];
|
|
if (!r) throw new Pe.ErrnoError(43);
|
|
e.tty = r, e.seekable = !1
|
|
},
|
|
close: function(e) {
|
|
e.tty.ops.flush(e.tty)
|
|
},
|
|
flush: function(e) {
|
|
e.tty.ops.flush(e.tty)
|
|
},
|
|
read: function(e, r, t, n, i) {
|
|
if (!e.tty || !e.tty.ops.get_char) throw new Pe.ErrnoError(60);
|
|
for (var a = 0, o = 0; o < n; o++) {
|
|
var u;
|
|
try {
|
|
u = e.tty.ops.get_char(e.tty)
|
|
} catch (e) {
|
|
throw new Pe.ErrnoError(29)
|
|
}
|
|
if (void 0 === u && 0 === a) throw new Pe.ErrnoError(6);
|
|
if (null == u) break;
|
|
a++, r[t + o] = u
|
|
}
|
|
return a && (e.node.timestamp = Date.now()), a
|
|
},
|
|
write: function(e, r, t, n, i) {
|
|
if (!e.tty || !e.tty.ops.put_char) throw new Pe.ErrnoError(60);
|
|
try {
|
|
for (var a = 0; a < n; a++) e.tty.ops.put_char(e.tty, r[t + a])
|
|
} catch (e) {
|
|
throw new Pe.ErrnoError(29)
|
|
}
|
|
return n && (e.node.timestamp = Date.now()), a
|
|
}
|
|
},
|
|
default_tty_ops: {
|
|
get_char: function(e) {
|
|
if (!e.input.length) {
|
|
var r = null;
|
|
if ("undefined" != typeof window && "function" == typeof window.prompt ? null !== (r = window.prompt("Input: ")) && (r += "\n") : "function" == typeof readline && null !== (r = readline()) && (r += "\n"), !r) return null;
|
|
e.input = Qr(r, !0)
|
|
}
|
|
return e.input.shift()
|
|
},
|
|
put_char: function(e, r) {
|
|
null === r || 10 === r ? (m(T(e.output, 0)), e.output = []) : 0 != r && e.output.push(r)
|
|
},
|
|
flush: function(e) {
|
|
e.output && e.output.length > 0 && (m(T(e.output, 0)), e.output = [])
|
|
}
|
|
},
|
|
default_tty1_ops: {
|
|
put_char: function(e, r) {
|
|
null === r || 10 === r ? (p(T(e.output, 0)), e.output = []) : 0 != r && e.output.push(r)
|
|
},
|
|
flush: function(e) {
|
|
e.output && e.output.length > 0 && (p(T(e.output, 0)), e.output = [])
|
|
}
|
|
}
|
|
},
|
|
Fe = {
|
|
ops_table: null,
|
|
mount: function(e) {
|
|
return Fe.createNode(null, "/", 16895, 0)
|
|
},
|
|
createNode: function(e, r, t, n) {
|
|
if (Pe.isBlkdev(t) || Pe.isFIFO(t)) throw new Pe.ErrnoError(63);
|
|
Fe.ops_table || (Fe.ops_table = {
|
|
dir: {
|
|
node: {
|
|
getattr: Fe.node_ops.getattr,
|
|
setattr: Fe.node_ops.setattr,
|
|
lookup: Fe.node_ops.lookup,
|
|
mknod: Fe.node_ops.mknod,
|
|
rename: Fe.node_ops.rename,
|
|
unlink: Fe.node_ops.unlink,
|
|
rmdir: Fe.node_ops.rmdir,
|
|
readdir: Fe.node_ops.readdir,
|
|
symlink: Fe.node_ops.symlink
|
|
},
|
|
stream: {
|
|
llseek: Fe.stream_ops.llseek
|
|
}
|
|
},
|
|
file: {
|
|
node: {
|
|
getattr: Fe.node_ops.getattr,
|
|
setattr: Fe.node_ops.setattr
|
|
},
|
|
stream: {
|
|
llseek: Fe.stream_ops.llseek,
|
|
read: Fe.stream_ops.read,
|
|
write: Fe.stream_ops.write,
|
|
allocate: Fe.stream_ops.allocate,
|
|
mmap: Fe.stream_ops.mmap,
|
|
msync: Fe.stream_ops.msync
|
|
}
|
|
},
|
|
link: {
|
|
node: {
|
|
getattr: Fe.node_ops.getattr,
|
|
setattr: Fe.node_ops.setattr,
|
|
readlink: Fe.node_ops.readlink
|
|
},
|
|
stream: {}
|
|
},
|
|
chrdev: {
|
|
node: {
|
|
getattr: Fe.node_ops.getattr,
|
|
setattr: Fe.node_ops.setattr
|
|
},
|
|
stream: Pe.chrdev_stream_ops
|
|
}
|
|
});
|
|
var i = Pe.createNode(e, r, t, n);
|
|
return Pe.isDir(i.mode) ? (i.node_ops = Fe.ops_table.dir.node, i.stream_ops = Fe.ops_table.dir.stream, i.contents = {}) : Pe.isFile(i.mode) ? (i.node_ops = Fe.ops_table.file.node, i.stream_ops = Fe.ops_table.file.stream, i.usedBytes = 0, i.contents = null) : Pe.isLink(i.mode) ? (i.node_ops = Fe.ops_table.link.node, i.stream_ops = Fe.ops_table.link.stream) : Pe.isChrdev(i.mode) && (i.node_ops = Fe.ops_table.chrdev.node, i.stream_ops = Fe.ops_table.chrdev.stream), i.timestamp = Date.now(), e && (e.contents[r] = i), i
|
|
},
|
|
getFileDataAsRegularArray: function(e) {
|
|
if (e.contents && e.contents.subarray) {
|
|
for (var r = [], t = 0; t < e.usedBytes; ++t) r.push(e.contents[t]);
|
|
return r
|
|
}
|
|
return e.contents
|
|
},
|
|
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, r) {
|
|
var t = e.contents ? e.contents.length : 0;
|
|
if (!(t >= r)) {
|
|
r = Math.max(r, t * (t < 1048576 ? 2 : 1.125) >>> 0), 0 != t && (r = Math.max(r, 256));
|
|
var n = e.contents;
|
|
e.contents = new Uint8Array(r), e.usedBytes > 0 && e.contents.set(n.subarray(0, e.usedBytes), 0)
|
|
}
|
|
},
|
|
resizeFileStorage: function(e, r) {
|
|
if (e.usedBytes != r) {
|
|
if (0 == r) return e.contents = null, void(e.usedBytes = 0);
|
|
if (!e.contents || e.contents.subarray) {
|
|
var t = e.contents;
|
|
return e.contents = new Uint8Array(r), t && e.contents.set(t.subarray(0, Math.min(r, e.usedBytes))), void(e.usedBytes = r)
|
|
}
|
|
if (e.contents || (e.contents = []), e.contents.length > r) e.contents.length = r;
|
|
else
|
|
for (; e.contents.length < r;) e.contents.push(0);
|
|
e.usedBytes = r
|
|
}
|
|
},
|
|
node_ops: {
|
|
getattr: function(e) {
|
|
var r = {};
|
|
return r.dev = Pe.isChrdev(e.mode) ? e.id : 1, r.ino = e.id, r.mode = e.mode, r.nlink = 1, r.uid = 0, r.gid = 0, r.rdev = e.rdev, Pe.isDir(e.mode) ? r.size = 4096 : Pe.isFile(e.mode) ? r.size = e.usedBytes : Pe.isLink(e.mode) ? r.size = e.link.length : r.size = 0, r.atime = new Date(e.timestamp), r.mtime = new Date(e.timestamp), r.ctime = new Date(e.timestamp), r.blksize = 4096, r.blocks = Math.ceil(r.size / r.blksize), r
|
|
},
|
|
setattr: function(e, r) {
|
|
void 0 !== r.mode && (e.mode = r.mode), void 0 !== r.timestamp && (e.timestamp = r.timestamp), void 0 !== r.size && Fe.resizeFileStorage(e, r.size)
|
|
},
|
|
lookup: function(e, r) {
|
|
throw Pe.genericErrors[44]
|
|
},
|
|
mknod: function(e, r, t, n) {
|
|
return Fe.createNode(e, r, t, n)
|
|
},
|
|
rename: function(e, r, t) {
|
|
if (Pe.isDir(e.mode)) {
|
|
var n;
|
|
try {
|
|
n = Pe.lookupNode(r, t)
|
|
} catch (e) {}
|
|
if (n)
|
|
for (var i in n.contents) throw new Pe.ErrnoError(55)
|
|
}
|
|
delete e.parent.contents[e.name], e.name = t, r.contents[t] = e, e.parent = r
|
|
},
|
|
unlink: function(e, r) {
|
|
delete e.contents[r]
|
|
},
|
|
rmdir: function(e, r) {
|
|
var t = Pe.lookupNode(e, r);
|
|
for (var n in t.contents) throw new Pe.ErrnoError(55);
|
|
delete e.contents[r]
|
|
},
|
|
readdir: function(e) {
|
|
var r = [".", ".."];
|
|
for (var t in e.contents) e.contents.hasOwnProperty(t) && r.push(t);
|
|
return r
|
|
},
|
|
symlink: function(e, r, t) {
|
|
var n = Fe.createNode(e, r, 41471, 0);
|
|
return n.link = t, n
|
|
},
|
|
readlink: function(e) {
|
|
if (!Pe.isLink(e.mode)) throw new Pe.ErrnoError(28);
|
|
return e.link
|
|
}
|
|
},
|
|
stream_ops: {
|
|
read: function(e, r, t, n, i) {
|
|
var a = e.node.contents;
|
|
if (i >= e.node.usedBytes) return 0;
|
|
var o = Math.min(e.node.usedBytes - i, n);
|
|
if (o > 8 && a.subarray) r.set(a.subarray(i, i + o), t);
|
|
else
|
|
for (var u = 0; u < o; u++) r[t + u] = a[i + u];
|
|
return o
|
|
},
|
|
write: function(e, r, t, n, i, a) {
|
|
if (r.buffer === O.buffer && (a = !1), !n) return 0;
|
|
var o = e.node;
|
|
if (o.timestamp = Date.now(), r.subarray && (!o.contents || o.contents.subarray)) {
|
|
if (a) return o.contents = r.subarray(t, t + n), o.usedBytes = n, n;
|
|
if (0 === o.usedBytes && 0 === i) return o.contents = r.slice(t, t + n), o.usedBytes = n, n;
|
|
if (i + n <= o.usedBytes) return o.contents.set(r.subarray(t, t + n), i), n
|
|
}
|
|
if (Fe.expandFileStorage(o, i + n), o.contents.subarray && r.subarray) o.contents.set(r.subarray(t, t + n), i);
|
|
else
|
|
for (var u = 0; u < n; u++) o.contents[i + u] = r[t + u];
|
|
return o.usedBytes = Math.max(o.usedBytes, i + n), n
|
|
},
|
|
llseek: function(e, r, t) {
|
|
var n = r;
|
|
if (1 === t ? n += e.position : 2 === t && Pe.isFile(e.node.mode) && (n += e.node.usedBytes), n < 0) throw new Pe.ErrnoError(28);
|
|
return n
|
|
},
|
|
allocate: function(e, r, t) {
|
|
Fe.expandFileStorage(e.node, r + t), e.node.usedBytes = Math.max(e.node.usedBytes, r + t)
|
|
},
|
|
mmap: function(e, r, t, n, i, a, o) {
|
|
if (!Pe.isFile(e.node.mode)) throw new Pe.ErrnoError(43);
|
|
var u, s, c = e.node.contents;
|
|
if (2 & o || c.buffer !== r.buffer) {
|
|
(i > 0 || i + n < c.length) && (c = c.subarray ? c.subarray(i, i + n) : Array.prototype.slice.call(c, i, i + n)), s = !0;
|
|
var l = r.buffer == O.buffer;
|
|
if (!(u = Zr(n))) throw new Pe.ErrnoError(48);
|
|
(l ? O : r).set(c, u)
|
|
} else s = !1, u = c.byteOffset;
|
|
return {
|
|
ptr: u,
|
|
allocated: s
|
|
}
|
|
},
|
|
msync: function(e, r, t, n, i) {
|
|
if (!Pe.isFile(e.node.mode)) throw new Pe.ErrnoError(43);
|
|
if (2 & i) return 0;
|
|
Fe.stream_ops.write(e, r, 0, n, t, !1);
|
|
return 0
|
|
}
|
|
}
|
|
},
|
|
Ae = {
|
|
dbs: {},
|
|
indexedDB: function() {
|
|
if ("undefined" != typeof indexedDB) return indexedDB;
|
|
var e = null;
|
|
return "object" == typeof window && (e = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB), D(e, "IDBFS used, but indexedDB not supported"), e
|
|
},
|
|
DB_VERSION: 21,
|
|
DB_STORE_NAME: "FILE_DATA",
|
|
mount: function(e) {
|
|
return Fe.mount.apply(null, arguments)
|
|
},
|
|
syncfs: function(e, r, t) {
|
|
Ae.getLocalSet(e, (function(n, i) {
|
|
if (n) return t(n);
|
|
Ae.getRemoteSet(e, (function(e, n) {
|
|
if (e) return t(e);
|
|
var a = r ? n : i,
|
|
o = r ? i : n;
|
|
Ae.reconcile(a, o, t)
|
|
}))
|
|
}))
|
|
},
|
|
getDB: function(e, r) {
|
|
var t, n = Ae.dbs[e];
|
|
if (n) return r(null, n);
|
|
try {
|
|
t = Ae.indexedDB().open(e, Ae.DB_VERSION)
|
|
} catch (e) {
|
|
return r(e)
|
|
}
|
|
if (!t) return r("Unable to connect to IndexedDB");
|
|
t.onupgradeneeded = function(e) {
|
|
var r, t = e.target.result,
|
|
n = e.target.transaction;
|
|
(r = t.objectStoreNames.contains(Ae.DB_STORE_NAME) ? n.objectStore(Ae.DB_STORE_NAME) : t.createObjectStore(Ae.DB_STORE_NAME)).indexNames.contains("timestamp") || r.createIndex("timestamp", "timestamp", {
|
|
unique: !1
|
|
})
|
|
}, t.onsuccess = function() {
|
|
n = t.result, Ae.dbs[e] = n, r(null, n)
|
|
}, t.onerror = function(e) {
|
|
r(this.error), e.preventDefault()
|
|
}
|
|
},
|
|
getLocalSet: function(e, r) {
|
|
var t = {};
|
|
|
|
function n(e) {
|
|
return "." !== e && ".." !== e
|
|
}
|
|
|
|
function i(e) {
|
|
return function(r) {
|
|
return Ce.join2(e, r)
|
|
}
|
|
}
|
|
for (var a = Pe.readdir(e.mountpoint).filter(n).map(i(e.mountpoint)); a.length;) {
|
|
var o, u = a.pop();
|
|
try {
|
|
o = Pe.stat(u)
|
|
} catch (e) {
|
|
return r(e)
|
|
}
|
|
Pe.isDir(o.mode) && a.push.apply(a, Pe.readdir(u).filter(n).map(i(u))), t[u] = {
|
|
timestamp: o.mtime
|
|
}
|
|
}
|
|
return r(null, {
|
|
type: "local",
|
|
entries: t
|
|
})
|
|
},
|
|
getRemoteSet: function(e, r) {
|
|
var t = {};
|
|
Ae.getDB(e.mountpoint, (function(e, n) {
|
|
if (e) return r(e);
|
|
try {
|
|
var i = n.transaction([Ae.DB_STORE_NAME], "readonly");
|
|
i.onerror = function(e) {
|
|
r(this.error), e.preventDefault()
|
|
}, i.objectStore(Ae.DB_STORE_NAME).index("timestamp").openKeyCursor().onsuccess = function(e) {
|
|
var i = e.target.result;
|
|
if (!i) return r(null, {
|
|
type: "remote",
|
|
db: n,
|
|
entries: t
|
|
});
|
|
t[i.primaryKey] = {
|
|
timestamp: i.key
|
|
}, i.continue()
|
|
}
|
|
} catch (e) {
|
|
return r(e)
|
|
}
|
|
}))
|
|
},
|
|
loadLocalEntry: function(e, r) {
|
|
var t, n;
|
|
try {
|
|
n = Pe.lookupPath(e).node, t = Pe.stat(e)
|
|
} catch (e) {
|
|
return r(e)
|
|
}
|
|
return Pe.isDir(t.mode) ? r(null, {
|
|
timestamp: t.mtime,
|
|
mode: t.mode
|
|
}) : Pe.isFile(t.mode) ? (n.contents = Fe.getFileDataAsTypedArray(n), r(null, {
|
|
timestamp: t.mtime,
|
|
mode: t.mode,
|
|
contents: n.contents
|
|
})) : r(new Error("node type not supported"))
|
|
},
|
|
storeLocalEntry: function(e, r, t) {
|
|
try {
|
|
if (Pe.isDir(r.mode)) Pe.mkdir(e, r.mode);
|
|
else {
|
|
if (!Pe.isFile(r.mode)) return t(new Error("node type not supported"));
|
|
Pe.writeFile(e, r.contents, {
|
|
canOwn: !0
|
|
})
|
|
}
|
|
Pe.chmod(e, r.mode), Pe.utime(e, r.timestamp, r.timestamp)
|
|
} catch (e) {
|
|
return t(e)
|
|
}
|
|
t(null)
|
|
},
|
|
removeLocalEntry: function(e, r) {
|
|
try {
|
|
Pe.lookupPath(e);
|
|
var t = Pe.stat(e);
|
|
Pe.isDir(t.mode) ? Pe.rmdir(e) : Pe.isFile(t.mode) && Pe.unlink(e)
|
|
} catch (e) {
|
|
return r(e)
|
|
}
|
|
r(null)
|
|
},
|
|
loadRemoteEntry: function(e, r, t) {
|
|
var n = e.get(r);
|
|
n.onsuccess = function(e) {
|
|
t(null, e.target.result)
|
|
}, n.onerror = function(e) {
|
|
t(this.error), e.preventDefault()
|
|
}
|
|
},
|
|
storeRemoteEntry: function(e, r, t, n) {
|
|
var i = e.put(t, r);
|
|
i.onsuccess = function() {
|
|
n(null)
|
|
}, i.onerror = function(e) {
|
|
n(this.error), e.preventDefault()
|
|
}
|
|
},
|
|
removeRemoteEntry: function(e, r, t) {
|
|
var n = e.delete(r);
|
|
n.onsuccess = function() {
|
|
t(null)
|
|
}, n.onerror = function(e) {
|
|
t(this.error), e.preventDefault()
|
|
}
|
|
},
|
|
reconcile: function(e, r, t) {
|
|
var n = 0,
|
|
i = [];
|
|
Object.keys(e.entries).forEach((function(t) {
|
|
var a = e.entries[t],
|
|
o = r.entries[t];
|
|
(!o || a.timestamp > o.timestamp) && (i.push(t), n++)
|
|
}));
|
|
var a = [];
|
|
if (Object.keys(r.entries).forEach((function(t) {
|
|
r.entries[t];
|
|
e.entries[t] || (a.push(t), n++)
|
|
})), !n) return t(null);
|
|
var o = !1,
|
|
u = ("remote" === e.type ? e.db : r.db).transaction([Ae.DB_STORE_NAME], "readwrite"),
|
|
s = u.objectStore(Ae.DB_STORE_NAME);
|
|
|
|
function c(e) {
|
|
if (e && !o) return o = !0, t(e)
|
|
}
|
|
u.onerror = function(e) {
|
|
c(this.error), e.preventDefault()
|
|
}, u.oncomplete = function(e) {
|
|
o || t(null)
|
|
}, i.sort().forEach((function(e) {
|
|
"local" === r.type ? Ae.loadRemoteEntry(s, e, (function(r, t) {
|
|
if (r) return c(r);
|
|
Ae.storeLocalEntry(e, t, c)
|
|
})) : Ae.loadLocalEntry(e, (function(r, t) {
|
|
if (r) return c(r);
|
|
Ae.storeRemoteEntry(s, e, t, c)
|
|
}))
|
|
})), a.sort().reverse().forEach((function(e) {
|
|
"local" === r.type ? Ae.removeLocalEntry(e, c) : Ae.removeRemoteEntry(s, e, c)
|
|
}))
|
|
}
|
|
},
|
|
Pe = {
|
|
root: null,
|
|
mounts: [],
|
|
devices: {},
|
|
streams: [],
|
|
nextInode: 1,
|
|
nameTable: null,
|
|
currentPath: "/",
|
|
initialized: !1,
|
|
ignorePermissions: !0,
|
|
trackingDelegate: {},
|
|
tracking: {
|
|
openFlags: {
|
|
READ: 1,
|
|
WRITE: 2
|
|
}
|
|
},
|
|
ErrnoError: null,
|
|
genericErrors: {},
|
|
filesystems: null,
|
|
syncFSRequests: 0,
|
|
handleFSError: function(e) {
|
|
if (!(e instanceof Pe.ErrnoError)) throw e + " : " + (t = Ee(), r.extraStackTrace && (t += "\n" + r.extraStackTrace()), t.replace(/\b_Z[\w\d_]+/g, (function(e) {
|
|
return e == e ? e : e + " [" + e + "]"
|
|
})));
|
|
var t;
|
|
return xe(e.errno)
|
|
},
|
|
lookupPath: function(e, r) {
|
|
if (r = r || {}, !(e = Se.resolve(Pe.cwd(), e))) return {
|
|
path: "",
|
|
node: null
|
|
};
|
|
var t = {
|
|
follow_mount: !0,
|
|
recurse_count: 0
|
|
};
|
|
for (var n in t) void 0 === r[n] && (r[n] = t[n]);
|
|
if (r.recurse_count > 8) throw new Pe.ErrnoError(32);
|
|
for (var i = Ce.normalizeArray(e.split("/").filter((function(e) {
|
|
return !!e
|
|
})), !1), a = Pe.root, o = "/", u = 0; u < i.length; u++) {
|
|
var s = u === i.length - 1;
|
|
if (s && r.parent) break;
|
|
if (a = Pe.lookupNode(a, i[u]), o = Ce.join2(o, i[u]), Pe.isMountpoint(a) && (!s || s && r.follow_mount) && (a = a.mounted.root), !s || r.follow)
|
|
for (var c = 0; Pe.isLink(a.mode);) {
|
|
var l = Pe.readlink(o);
|
|
if (o = Se.resolve(Ce.dirname(o), l), a = Pe.lookupPath(o, {
|
|
recurse_count: r.recurse_count
|
|
}).node, c++ > 40) throw new Pe.ErrnoError(32)
|
|
}
|
|
}
|
|
return {
|
|
path: o,
|
|
node: a
|
|
}
|
|
},
|
|
getPath: function(e) {
|
|
for (var r;;) {
|
|
if (Pe.isRoot(e)) {
|
|
var t = e.mount.mountpoint;
|
|
return r ? "/" !== t[t.length - 1] ? t + "/" + r : t + r : t
|
|
}
|
|
r = r ? e.name + "/" + r : e.name, e = e.parent
|
|
}
|
|
},
|
|
hashName: function(e, r) {
|
|
for (var t = 0, n = 0; n < r.length; n++) t = (t << 5) - t + r.charCodeAt(n) | 0;
|
|
return (e + t >>> 0) % Pe.nameTable.length
|
|
},
|
|
hashAddNode: function(e) {
|
|
var r = Pe.hashName(e.parent.id, e.name);
|
|
e.name_next = Pe.nameTable[r], Pe.nameTable[r] = e
|
|
},
|
|
hashRemoveNode: function(e) {
|
|
var r = Pe.hashName(e.parent.id, e.name);
|
|
if (Pe.nameTable[r] === e) Pe.nameTable[r] = e.name_next;
|
|
else
|
|
for (var t = Pe.nameTable[r]; t;) {
|
|
if (t.name_next === e) {
|
|
t.name_next = e.name_next;
|
|
break
|
|
}
|
|
t = t.name_next
|
|
}
|
|
},
|
|
lookupNode: function(e, r) {
|
|
var t = Pe.mayLookup(e);
|
|
if (t) throw new Pe.ErrnoError(t, e);
|
|
for (var n = Pe.hashName(e.id, r), i = Pe.nameTable[n]; i; i = i.name_next) {
|
|
var a = i.name;
|
|
if (i.parent.id === e.id && a === r) return i
|
|
}
|
|
return Pe.lookup(e, r)
|
|
},
|
|
createNode: function(e, r, t, n) {
|
|
var i = new Pe.FSNode(e, r, t, n);
|
|
return Pe.hashAddNode(i), i
|
|
},
|
|
destroyNode: function(e) {
|
|
Pe.hashRemoveNode(e)
|
|
},
|
|
isRoot: function(e) {
|
|
return e === e.parent
|
|
},
|
|
isMountpoint: function(e) {
|
|
return !!e.mounted
|
|
},
|
|
isFile: function(e) {
|
|
return 32768 == (61440 & e)
|
|
},
|
|
isDir: function(e) {
|
|
return 16384 == (61440 & e)
|
|
},
|
|
isLink: function(e) {
|
|
return 40960 == (61440 & e)
|
|
},
|
|
isChrdev: function(e) {
|
|
return 8192 == (61440 & e)
|
|
},
|
|
isBlkdev: function(e) {
|
|
return 24576 == (61440 & e)
|
|
},
|
|
isFIFO: function(e) {
|
|
return 4096 == (61440 & e)
|
|
},
|
|
isSocket: function(e) {
|
|
return 49152 == (49152 & e)
|
|
},
|
|
flagModes: {
|
|
r: 0,
|
|
rs: 1052672,
|
|
"r+": 2,
|
|
w: 577,
|
|
wx: 705,
|
|
xw: 705,
|
|
"w+": 578,
|
|
"wx+": 706,
|
|
"xw+": 706,
|
|
a: 1089,
|
|
ax: 1217,
|
|
xa: 1217,
|
|
"a+": 1090,
|
|
"ax+": 1218,
|
|
"xa+": 1218
|
|
},
|
|
modeStringToFlags: function(e) {
|
|
var r = Pe.flagModes[e];
|
|
if (void 0 === r) throw new Error("Unknown file open mode: " + e);
|
|
return r
|
|
},
|
|
flagsToPermissionString: function(e) {
|
|
var r = ["r", "w", "rw"][3 & e];
|
|
return 512 & e && (r += "w"), r
|
|
},
|
|
nodePermissions: function(e, r) {
|
|
return Pe.ignorePermissions || (-1 === r.indexOf("r") || 292 & e.mode) && (-1 === r.indexOf("w") || 146 & e.mode) && (-1 === r.indexOf("x") || 73 & e.mode) ? 0 : 2
|
|
},
|
|
mayLookup: function(e) {
|
|
var r = Pe.nodePermissions(e, "x");
|
|
return r || (e.node_ops.lookup ? 0 : 2)
|
|
},
|
|
mayCreate: function(e, r) {
|
|
try {
|
|
Pe.lookupNode(e, r);
|
|
return 20
|
|
} catch (e) {}
|
|
return Pe.nodePermissions(e, "wx")
|
|
},
|
|
mayDelete: function(e, r, t) {
|
|
var n;
|
|
try {
|
|
n = Pe.lookupNode(e, r)
|
|
} catch (e) {
|
|
return e.errno
|
|
}
|
|
var i = Pe.nodePermissions(e, "wx");
|
|
if (i) return i;
|
|
if (t) {
|
|
if (!Pe.isDir(n.mode)) return 54;
|
|
if (Pe.isRoot(n) || Pe.getPath(n) === Pe.cwd()) return 10
|
|
} else if (Pe.isDir(n.mode)) return 31;
|
|
return 0
|
|
},
|
|
mayOpen: function(e, r) {
|
|
return e ? Pe.isLink(e.mode) ? 32 : Pe.isDir(e.mode) && ("r" !== Pe.flagsToPermissionString(r) || 512 & r) ? 31 : Pe.nodePermissions(e, Pe.flagsToPermissionString(r)) : 44
|
|
},
|
|
MAX_OPEN_FDS: 4096,
|
|
nextfd: function(e, r) {
|
|
e = e || 0, r = r || Pe.MAX_OPEN_FDS;
|
|
for (var t = e; t <= r; t++)
|
|
if (!Pe.streams[t]) return t;
|
|
throw new Pe.ErrnoError(33)
|
|
},
|
|
getStream: function(e) {
|
|
return Pe.streams[e]
|
|
},
|
|
createStream: function(e, r, t) {
|
|
Pe.FSStream || (Pe.FSStream = function() {}, Pe.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
|
|
}
|
|
}
|
|
});
|
|
var n = new Pe.FSStream;
|
|
for (var i in e) n[i] = e[i];
|
|
e = n;
|
|
var a = Pe.nextfd(r, t);
|
|
return e.fd = a, Pe.streams[a] = e, e
|
|
},
|
|
closeStream: function(e) {
|
|
Pe.streams[e] = null
|
|
},
|
|
chrdev_stream_ops: {
|
|
open: function(e) {
|
|
var r = Pe.getDevice(e.node.rdev);
|
|
e.stream_ops = r.stream_ops, e.stream_ops.open && e.stream_ops.open(e)
|
|
},
|
|
llseek: function() {
|
|
throw new Pe.ErrnoError(70)
|
|
}
|
|
},
|
|
major: function(e) {
|
|
return e >> 8
|
|
},
|
|
minor: function(e) {
|
|
return 255 & e
|
|
},
|
|
makedev: function(e, r) {
|
|
return e << 8 | r
|
|
},
|
|
registerDevice: function(e, r) {
|
|
Pe.devices[e] = {
|
|
stream_ops: r
|
|
}
|
|
},
|
|
getDevice: function(e) {
|
|
return Pe.devices[e]
|
|
},
|
|
getMounts: function(e) {
|
|
for (var r = [], t = [e]; t.length;) {
|
|
var n = t.pop();
|
|
r.push(n), t.push.apply(t, n.mounts)
|
|
}
|
|
return r
|
|
},
|
|
syncfs: function(e, r) {
|
|
"function" == typeof e && (r = e, e = !1), Pe.syncFSRequests++, Pe.syncFSRequests > 1 && p("warning: " + Pe.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work");
|
|
var t = Pe.getMounts(Pe.root.mount),
|
|
n = 0;
|
|
|
|
function i(e) {
|
|
return Pe.syncFSRequests--, r(e)
|
|
}
|
|
|
|
function a(e) {
|
|
if (e) return a.errored ? void 0 : (a.errored = !0, i(e));
|
|
++n >= t.length && i(null)
|
|
}
|
|
t.forEach((function(r) {
|
|
if (!r.type.syncfs) return a(null);
|
|
r.type.syncfs(r, e, a)
|
|
}))
|
|
},
|
|
mount: function(e, r, t) {
|
|
var n, i = "/" === t,
|
|
a = !t;
|
|
if (i && Pe.root) throw new Pe.ErrnoError(10);
|
|
if (!i && !a) {
|
|
var o = Pe.lookupPath(t, {
|
|
follow_mount: !1
|
|
});
|
|
if (t = o.path, n = o.node, Pe.isMountpoint(n)) throw new Pe.ErrnoError(10);
|
|
if (!Pe.isDir(n.mode)) throw new Pe.ErrnoError(54)
|
|
}
|
|
var u = {
|
|
type: e,
|
|
opts: r,
|
|
mountpoint: t,
|
|
mounts: []
|
|
},
|
|
s = e.mount(u);
|
|
return s.mount = u, u.root = s, i ? Pe.root = s : n && (n.mounted = u, n.mount && n.mount.mounts.push(u)), s
|
|
},
|
|
unmount: function(e) {
|
|
var r = Pe.lookupPath(e, {
|
|
follow_mount: !1
|
|
});
|
|
if (!Pe.isMountpoint(r.node)) throw new Pe.ErrnoError(28);
|
|
var t = r.node,
|
|
n = t.mounted,
|
|
i = Pe.getMounts(n);
|
|
Object.keys(Pe.nameTable).forEach((function(e) {
|
|
for (var r = Pe.nameTable[e]; r;) {
|
|
var t = r.name_next; - 1 !== i.indexOf(r.mount) && Pe.destroyNode(r), r = t
|
|
}
|
|
})), t.mounted = null;
|
|
var a = t.mount.mounts.indexOf(n);
|
|
t.mount.mounts.splice(a, 1)
|
|
},
|
|
lookup: function(e, r) {
|
|
return e.node_ops.lookup(e, r)
|
|
},
|
|
mknod: function(e, r, t) {
|
|
var n = Pe.lookupPath(e, {
|
|
parent: !0
|
|
}).node,
|
|
i = Ce.basename(e);
|
|
if (!i || "." === i || ".." === i) throw new Pe.ErrnoError(28);
|
|
var a = Pe.mayCreate(n, i);
|
|
if (a) throw new Pe.ErrnoError(a);
|
|
if (!n.node_ops.mknod) throw new Pe.ErrnoError(63);
|
|
return n.node_ops.mknod(n, i, r, t)
|
|
},
|
|
create: function(e, r) {
|
|
return r = void 0 !== r ? r : 438, r &= 4095, r |= 32768, Pe.mknod(e, r, 0)
|
|
},
|
|
mkdir: function(e, r) {
|
|
return r = void 0 !== r ? r : 511, r &= 1023, r |= 16384, Pe.mknod(e, r, 0)
|
|
},
|
|
mkdirTree: function(e, r) {
|
|
for (var t = e.split("/"), n = "", i = 0; i < t.length; ++i)
|
|
if (t[i]) {
|
|
n += "/" + t[i];
|
|
try {
|
|
Pe.mkdir(n, r)
|
|
} catch (e) {
|
|
if (20 != e.errno) throw e
|
|
}
|
|
}
|
|
},
|
|
mkdev: function(e, r, t) {
|
|
return void 0 === t && (t = r, r = 438), r |= 8192, Pe.mknod(e, r, t)
|
|
},
|
|
symlink: function(e, r) {
|
|
if (!Se.resolve(e)) throw new Pe.ErrnoError(44);
|
|
var t = Pe.lookupPath(r, {
|
|
parent: !0
|
|
}).node;
|
|
if (!t) throw new Pe.ErrnoError(44);
|
|
var n = Ce.basename(r),
|
|
i = Pe.mayCreate(t, n);
|
|
if (i) throw new Pe.ErrnoError(i);
|
|
if (!t.node_ops.symlink) throw new Pe.ErrnoError(63);
|
|
return t.node_ops.symlink(t, n, e)
|
|
},
|
|
rename: function(e, r) {
|
|
var t, n, i = Ce.dirname(e),
|
|
a = Ce.dirname(r),
|
|
o = Ce.basename(e),
|
|
u = Ce.basename(r);
|
|
try {
|
|
t = Pe.lookupPath(e, {
|
|
parent: !0
|
|
}).node, n = Pe.lookupPath(r, {
|
|
parent: !0
|
|
}).node
|
|
} catch (e) {
|
|
throw new Pe.ErrnoError(10)
|
|
}
|
|
if (!t || !n) throw new Pe.ErrnoError(44);
|
|
if (t.mount !== n.mount) throw new Pe.ErrnoError(75);
|
|
var s, c = Pe.lookupNode(t, o),
|
|
l = Se.relative(e, a);
|
|
if ("." !== l.charAt(0)) throw new Pe.ErrnoError(28);
|
|
if ("." !== (l = Se.relative(r, i)).charAt(0)) throw new Pe.ErrnoError(55);
|
|
try {
|
|
s = Pe.lookupNode(n, u)
|
|
} catch (e) {}
|
|
if (c !== s) {
|
|
var f = Pe.isDir(c.mode),
|
|
d = Pe.mayDelete(t, o, f);
|
|
if (d) throw new Pe.ErrnoError(d);
|
|
if (d = s ? Pe.mayDelete(n, u, f) : Pe.mayCreate(n, u)) throw new Pe.ErrnoError(d);
|
|
if (!t.node_ops.rename) throw new Pe.ErrnoError(63);
|
|
if (Pe.isMountpoint(c) || s && Pe.isMountpoint(s)) throw new Pe.ErrnoError(10);
|
|
if (n !== t && (d = Pe.nodePermissions(t, "w"))) throw new Pe.ErrnoError(d);
|
|
try {
|
|
Pe.trackingDelegate.willMovePath && Pe.trackingDelegate.willMovePath(e, r)
|
|
} catch (t) {
|
|
p("FS.trackingDelegate['willMovePath']('" + e + "', '" + r + "') threw an exception: " + t.message)
|
|
}
|
|
Pe.hashRemoveNode(c);
|
|
try {
|
|
t.node_ops.rename(c, n, u)
|
|
} catch (e) {
|
|
throw e
|
|
} finally {
|
|
Pe.hashAddNode(c)
|
|
}
|
|
try {
|
|
Pe.trackingDelegate.onMovePath && Pe.trackingDelegate.onMovePath(e, r)
|
|
} catch (t) {
|
|
p("FS.trackingDelegate['onMovePath']('" + e + "', '" + r + "') threw an exception: " + t.message)
|
|
}
|
|
}
|
|
},
|
|
rmdir: function(e) {
|
|
var r = Pe.lookupPath(e, {
|
|
parent: !0
|
|
}).node,
|
|
t = Ce.basename(e),
|
|
n = Pe.lookupNode(r, t),
|
|
i = Pe.mayDelete(r, t, !0);
|
|
if (i) throw new Pe.ErrnoError(i);
|
|
if (!r.node_ops.rmdir) throw new Pe.ErrnoError(63);
|
|
if (Pe.isMountpoint(n)) throw new Pe.ErrnoError(10);
|
|
try {
|
|
Pe.trackingDelegate.willDeletePath && Pe.trackingDelegate.willDeletePath(e)
|
|
} catch (r) {
|
|
p("FS.trackingDelegate['willDeletePath']('" + e + "') threw an exception: " + r.message)
|
|
}
|
|
r.node_ops.rmdir(r, t), Pe.destroyNode(n);
|
|
try {
|
|
Pe.trackingDelegate.onDeletePath && Pe.trackingDelegate.onDeletePath(e)
|
|
} catch (r) {
|
|
p("FS.trackingDelegate['onDeletePath']('" + e + "') threw an exception: " + r.message)
|
|
}
|
|
},
|
|
readdir: function(e) {
|
|
var r = Pe.lookupPath(e, {
|
|
follow: !0
|
|
}).node;
|
|
if (!r.node_ops.readdir) throw new Pe.ErrnoError(54);
|
|
return r.node_ops.readdir(r)
|
|
},
|
|
unlink: function(e) {
|
|
var r = Pe.lookupPath(e, {
|
|
parent: !0
|
|
}).node,
|
|
t = Ce.basename(e),
|
|
n = Pe.lookupNode(r, t),
|
|
i = Pe.mayDelete(r, t, !1);
|
|
if (i) throw new Pe.ErrnoError(i);
|
|
if (!r.node_ops.unlink) throw new Pe.ErrnoError(63);
|
|
if (Pe.isMountpoint(n)) throw new Pe.ErrnoError(10);
|
|
try {
|
|
Pe.trackingDelegate.willDeletePath && Pe.trackingDelegate.willDeletePath(e)
|
|
} catch (r) {
|
|
p("FS.trackingDelegate['willDeletePath']('" + e + "') threw an exception: " + r.message)
|
|
}
|
|
r.node_ops.unlink(r, t), Pe.destroyNode(n);
|
|
try {
|
|
Pe.trackingDelegate.onDeletePath && Pe.trackingDelegate.onDeletePath(e)
|
|
} catch (r) {
|
|
p("FS.trackingDelegate['onDeletePath']('" + e + "') threw an exception: " + r.message)
|
|
}
|
|
},
|
|
readlink: function(e) {
|
|
var r = Pe.lookupPath(e).node;
|
|
if (!r) throw new Pe.ErrnoError(44);
|
|
if (!r.node_ops.readlink) throw new Pe.ErrnoError(28);
|
|
return Se.resolve(Pe.getPath(r.parent), r.node_ops.readlink(r))
|
|
},
|
|
stat: function(e, r) {
|
|
var t = Pe.lookupPath(e, {
|
|
follow: !r
|
|
}).node;
|
|
if (!t) throw new Pe.ErrnoError(44);
|
|
if (!t.node_ops.getattr) throw new Pe.ErrnoError(63);
|
|
return t.node_ops.getattr(t)
|
|
},
|
|
lstat: function(e) {
|
|
return Pe.stat(e, !0)
|
|
},
|
|
chmod: function(e, r, t) {
|
|
var n;
|
|
"string" == typeof e ? n = Pe.lookupPath(e, {
|
|
follow: !t
|
|
}).node : n = e;
|
|
if (!n.node_ops.setattr) throw new Pe.ErrnoError(63);
|
|
n.node_ops.setattr(n, {
|
|
mode: 4095 & r | -4096 & n.mode,
|
|
timestamp: Date.now()
|
|
})
|
|
},
|
|
lchmod: function(e, r) {
|
|
Pe.chmod(e, r, !0)
|
|
},
|
|
fchmod: function(e, r) {
|
|
var t = Pe.getStream(e);
|
|
if (!t) throw new Pe.ErrnoError(8);
|
|
Pe.chmod(t.node, r)
|
|
},
|
|
chown: function(e, r, t, n) {
|
|
var i;
|
|
"string" == typeof e ? i = Pe.lookupPath(e, {
|
|
follow: !n
|
|
}).node : i = e;
|
|
if (!i.node_ops.setattr) throw new Pe.ErrnoError(63);
|
|
i.node_ops.setattr(i, {
|
|
timestamp: Date.now()
|
|
})
|
|
},
|
|
lchown: function(e, r, t) {
|
|
Pe.chown(e, r, t, !0)
|
|
},
|
|
fchown: function(e, r, t) {
|
|
var n = Pe.getStream(e);
|
|
if (!n) throw new Pe.ErrnoError(8);
|
|
Pe.chown(n.node, r, t)
|
|
},
|
|
truncate: function(e, r) {
|
|
if (r < 0) throw new Pe.ErrnoError(28);
|
|
var t;
|
|
"string" == typeof e ? t = Pe.lookupPath(e, {
|
|
follow: !0
|
|
}).node : t = e;
|
|
if (!t.node_ops.setattr) throw new Pe.ErrnoError(63);
|
|
if (Pe.isDir(t.mode)) throw new Pe.ErrnoError(31);
|
|
if (!Pe.isFile(t.mode)) throw new Pe.ErrnoError(28);
|
|
var n = Pe.nodePermissions(t, "w");
|
|
if (n) throw new Pe.ErrnoError(n);
|
|
t.node_ops.setattr(t, {
|
|
size: r,
|
|
timestamp: Date.now()
|
|
})
|
|
},
|
|
ftruncate: function(e, r) {
|
|
var t = Pe.getStream(e);
|
|
if (!t) throw new Pe.ErrnoError(8);
|
|
if (0 == (2097155 & t.flags)) throw new Pe.ErrnoError(28);
|
|
Pe.truncate(t.node, r)
|
|
},
|
|
utime: function(e, r, t) {
|
|
var n = Pe.lookupPath(e, {
|
|
follow: !0
|
|
}).node;
|
|
n.node_ops.setattr(n, {
|
|
timestamp: Math.max(r, t)
|
|
})
|
|
},
|
|
open: function(e, t, n, i, a) {
|
|
if ("" === e) throw new Pe.ErrnoError(44);
|
|
var o;
|
|
if (n = void 0 === n ? 438 : n, n = 64 & (t = "string" == typeof t ? Pe.modeStringToFlags(t) : t) ? 4095 & n | 32768 : 0, "object" == typeof e) o = e;
|
|
else {
|
|
e = Ce.normalize(e);
|
|
try {
|
|
o = Pe.lookupPath(e, {
|
|
follow: !(131072 & t)
|
|
}).node
|
|
} catch (e) {}
|
|
}
|
|
var u = !1;
|
|
if (64 & t)
|
|
if (o) {
|
|
if (128 & t) throw new Pe.ErrnoError(20)
|
|
} else o = Pe.mknod(e, n, 0), u = !0;
|
|
if (!o) throw new Pe.ErrnoError(44);
|
|
if (Pe.isChrdev(o.mode) && (t &= -513), 65536 & t && !Pe.isDir(o.mode)) throw new Pe.ErrnoError(54);
|
|
if (!u) {
|
|
var s = Pe.mayOpen(o, t);
|
|
if (s) throw new Pe.ErrnoError(s)
|
|
}
|
|
512 & t && Pe.truncate(o, 0), t &= -131713;
|
|
var c = Pe.createStream({
|
|
node: o,
|
|
path: Pe.getPath(o),
|
|
flags: t,
|
|
seekable: !0,
|
|
position: 0,
|
|
stream_ops: o.stream_ops,
|
|
ungotten: [],
|
|
error: !1
|
|
}, i, a);
|
|
c.stream_ops.open && c.stream_ops.open(c), !r.logReadFiles || 1 & t || (Pe.readFiles || (Pe.readFiles = {}), e in Pe.readFiles || (Pe.readFiles[e] = 1, p("FS.trackingDelegate error on read file: " + e)));
|
|
try {
|
|
if (Pe.trackingDelegate.onOpenFile) {
|
|
var l = 0;
|
|
1 != (2097155 & t) && (l |= Pe.tracking.openFlags.READ), 0 != (2097155 & t) && (l |= Pe.tracking.openFlags.WRITE), Pe.trackingDelegate.onOpenFile(e, l)
|
|
}
|
|
} catch (r) {
|
|
p("FS.trackingDelegate['onOpenFile']('" + e + "', flags) threw an exception: " + r.message)
|
|
}
|
|
return c
|
|
},
|
|
close: function(e) {
|
|
if (Pe.isClosed(e)) throw new Pe.ErrnoError(8);
|
|
e.getdents && (e.getdents = null);
|
|
try {
|
|
e.stream_ops.close && e.stream_ops.close(e)
|
|
} catch (e) {
|
|
throw e
|
|
} finally {
|
|
Pe.closeStream(e.fd)
|
|
}
|
|
e.fd = null
|
|
},
|
|
isClosed: function(e) {
|
|
return null === e.fd
|
|
},
|
|
llseek: function(e, r, t) {
|
|
if (Pe.isClosed(e)) throw new Pe.ErrnoError(8);
|
|
if (!e.seekable || !e.stream_ops.llseek) throw new Pe.ErrnoError(70);
|
|
if (0 != t && 1 != t && 2 != t) throw new Pe.ErrnoError(28);
|
|
return e.position = e.stream_ops.llseek(e, r, t), e.ungotten = [], e.position
|
|
},
|
|
read: function(e, r, t, n, i) {
|
|
if (n < 0 || i < 0) throw new Pe.ErrnoError(28);
|
|
if (Pe.isClosed(e)) throw new Pe.ErrnoError(8);
|
|
if (1 == (2097155 & e.flags)) throw new Pe.ErrnoError(8);
|
|
if (Pe.isDir(e.node.mode)) throw new Pe.ErrnoError(31);
|
|
if (!e.stream_ops.read) throw new Pe.ErrnoError(28);
|
|
var a = void 0 !== i;
|
|
if (a) {
|
|
if (!e.seekable) throw new Pe.ErrnoError(70)
|
|
} else i = e.position;
|
|
var o = e.stream_ops.read(e, r, t, n, i);
|
|
return a || (e.position += o), o
|
|
},
|
|
write: function(e, r, t, n, i, a) {
|
|
if (n < 0 || i < 0) throw new Pe.ErrnoError(28);
|
|
if (Pe.isClosed(e)) throw new Pe.ErrnoError(8);
|
|
if (0 == (2097155 & e.flags)) throw new Pe.ErrnoError(8);
|
|
if (Pe.isDir(e.node.mode)) throw new Pe.ErrnoError(31);
|
|
if (!e.stream_ops.write) throw new Pe.ErrnoError(28);
|
|
e.seekable && 1024 & e.flags && Pe.llseek(e, 0, 2);
|
|
var o = void 0 !== i;
|
|
if (o) {
|
|
if (!e.seekable) throw new Pe.ErrnoError(70)
|
|
} else i = e.position;
|
|
var u = e.stream_ops.write(e, r, t, n, i, a);
|
|
o || (e.position += u);
|
|
try {
|
|
e.path && Pe.trackingDelegate.onWriteToFile && Pe.trackingDelegate.onWriteToFile(e.path)
|
|
} catch (r) {
|
|
p("FS.trackingDelegate['onWriteToFile']('" + e.path + "') threw an exception: " + r.message)
|
|
}
|
|
return u
|
|
},
|
|
allocate: function(e, r, t) {
|
|
if (Pe.isClosed(e)) throw new Pe.ErrnoError(8);
|
|
if (r < 0 || t <= 0) throw new Pe.ErrnoError(28);
|
|
if (0 == (2097155 & e.flags)) throw new Pe.ErrnoError(8);
|
|
if (!Pe.isFile(e.node.mode) && !Pe.isDir(e.node.mode)) throw new Pe.ErrnoError(43);
|
|
if (!e.stream_ops.allocate) throw new Pe.ErrnoError(138);
|
|
e.stream_ops.allocate(e, r, t)
|
|
},
|
|
mmap: function(e, r, t, n, i, a, o) {
|
|
if (0 != (2 & a) && 0 == (2 & o) && 2 != (2097155 & e.flags)) throw new Pe.ErrnoError(2);
|
|
if (1 == (2097155 & e.flags)) throw new Pe.ErrnoError(2);
|
|
if (!e.stream_ops.mmap) throw new Pe.ErrnoError(43);
|
|
return e.stream_ops.mmap(e, r, t, n, i, a, o)
|
|
},
|
|
msync: function(e, r, t, n, i) {
|
|
return e && e.stream_ops.msync ? e.stream_ops.msync(e, r, t, n, i) : 0
|
|
},
|
|
munmap: function(e) {
|
|
return 0
|
|
},
|
|
ioctl: function(e, r, t) {
|
|
if (!e.stream_ops.ioctl) throw new Pe.ErrnoError(59);
|
|
return e.stream_ops.ioctl(e, r, t)
|
|
},
|
|
readFile: function(e, r) {
|
|
if ((r = r || {}).flags = r.flags || "r", r.encoding = r.encoding || "binary", "utf8" !== r.encoding && "binary" !== r.encoding) throw new Error('Invalid encoding type "' + r.encoding + '"');
|
|
var t, n = Pe.open(e, r.flags),
|
|
i = Pe.stat(e).size,
|
|
a = new Uint8Array(i);
|
|
return Pe.read(n, a, 0, i, 0), "utf8" === r.encoding ? t = T(a, 0) : "binary" === r.encoding && (t = a), Pe.close(n), t
|
|
},
|
|
writeFile: function(e, r, t) {
|
|
(t = t || {}).flags = t.flags || "w";
|
|
var n = Pe.open(e, t.flags, t.mode);
|
|
if ("string" == typeof r) {
|
|
var i = new Uint8Array(R(r) + 1),
|
|
a = I(r, i, 0, i.length);
|
|
Pe.write(n, i, 0, a, void 0, t.canOwn)
|
|
} else {
|
|
if (!ArrayBuffer.isView(r)) throw new Error("Unsupported data type");
|
|
Pe.write(n, r, 0, r.byteLength, void 0, t.canOwn)
|
|
}
|
|
Pe.close(n)
|
|
},
|
|
cwd: function() {
|
|
return Pe.currentPath
|
|
},
|
|
chdir: function(e) {
|
|
var r = Pe.lookupPath(e, {
|
|
follow: !0
|
|
});
|
|
if (null === r.node) throw new Pe.ErrnoError(44);
|
|
if (!Pe.isDir(r.node.mode)) throw new Pe.ErrnoError(54);
|
|
var t = Pe.nodePermissions(r.node, "x");
|
|
if (t) throw new Pe.ErrnoError(t);
|
|
Pe.currentPath = r.path
|
|
},
|
|
createDefaultDirectories: function() {
|
|
Pe.mkdir("/tmp"), Pe.mkdir("/home"), Pe.mkdir("/home/web_user")
|
|
},
|
|
createDefaultDevices: function() {
|
|
var e;
|
|
if (Pe.mkdir("/dev"), Pe.registerDevice(Pe.makedev(1, 3), {
|
|
read: function() {
|
|
return 0
|
|
},
|
|
write: function(e, r, t, n, i) {
|
|
return n
|
|
}
|
|
}), Pe.mkdev("/dev/null", Pe.makedev(1, 3)), De.register(Pe.makedev(5, 0), De.default_tty_ops), De.register(Pe.makedev(6, 0), De.default_tty1_ops), Pe.mkdev("/dev/tty", Pe.makedev(5, 0)), Pe.mkdev("/dev/tty1", Pe.makedev(6, 0)), "object" == typeof crypto && "function" == typeof crypto.getRandomValues) {
|
|
var r = new Uint8Array(1);
|
|
e = function() {
|
|
return crypto.getRandomValues(r), r[0]
|
|
}
|
|
}
|
|
e || (e = function() {
|
|
pe("random_device")
|
|
}), Pe.createDevice("/dev", "random", e), Pe.createDevice("/dev", "urandom", e), Pe.mkdir("/dev/shm"), Pe.mkdir("/dev/shm/tmp")
|
|
},
|
|
createSpecialDirectories: function() {
|
|
Pe.mkdir("/proc"), Pe.mkdir("/proc/self"), Pe.mkdir("/proc/self/fd"), Pe.mount({
|
|
mount: function() {
|
|
var e = Pe.createNode("/proc/self", "fd", 16895, 73);
|
|
return e.node_ops = {
|
|
lookup: function(e, r) {
|
|
var t = +r,
|
|
n = Pe.getStream(t);
|
|
if (!n) throw new Pe.ErrnoError(8);
|
|
var i = {
|
|
parent: null,
|
|
mount: {
|
|
mountpoint: "fake"
|
|
},
|
|
node_ops: {
|
|
readlink: function() {
|
|
return n.path
|
|
}
|
|
}
|
|
};
|
|
return i.parent = i, i
|
|
}
|
|
}, e
|
|
}
|
|
}, {}, "/proc/self/fd")
|
|
},
|
|
createStandardStreams: function() {
|
|
r.stdin ? Pe.createDevice("/dev", "stdin", r.stdin) : Pe.symlink("/dev/tty", "/dev/stdin"), r.stdout ? Pe.createDevice("/dev", "stdout", null, r.stdout) : Pe.symlink("/dev/tty", "/dev/stdout"), r.stderr ? Pe.createDevice("/dev", "stderr", null, r.stderr) : Pe.symlink("/dev/tty1", "/dev/stderr");
|
|
Pe.open("/dev/stdin", "r"), Pe.open("/dev/stdout", "w"), Pe.open("/dev/stderr", "w")
|
|
},
|
|
ensureErrnoError: function() {
|
|
Pe.ErrnoError || (Pe.ErrnoError = function(e, r) {
|
|
this.node = r, this.setErrno = function(e) {
|
|
this.errno = e
|
|
}, this.setErrno(e), this.message = "FS error"
|
|
}, Pe.ErrnoError.prototype = new Error, Pe.ErrnoError.prototype.constructor = Pe.ErrnoError, [44].forEach((function(e) {
|
|
Pe.genericErrors[e] = new Pe.ErrnoError(e), Pe.genericErrors[e].stack = "<generic error, no stack>"
|
|
})))
|
|
},
|
|
staticInit: function() {
|
|
Pe.ensureErrnoError(), Pe.nameTable = new Array(4096), Pe.mount(Fe, {}, "/"), Pe.createDefaultDirectories(), Pe.createDefaultDevices(), Pe.createSpecialDirectories(), Pe.filesystems = {
|
|
MEMFS: Fe,
|
|
IDBFS: Ae
|
|
}
|
|
},
|
|
init: function(e, t, n) {
|
|
Pe.init.initialized = !0, Pe.ensureErrnoError(), r.stdin = e || r.stdin, r.stdout = t || r.stdout, r.stderr = n || r.stderr, Pe.createStandardStreams()
|
|
},
|
|
quit: function() {
|
|
Pe.init.initialized = !1;
|
|
var e = r._fflush;
|
|
e && e(0);
|
|
for (var t = 0; t < Pe.streams.length; t++) {
|
|
var n = Pe.streams[t];
|
|
n && Pe.close(n)
|
|
}
|
|
},
|
|
getMode: function(e, r) {
|
|
var t = 0;
|
|
return e && (t |= 365), r && (t |= 146), t
|
|
},
|
|
joinPath: function(e, r) {
|
|
var t = Ce.join.apply(null, e);
|
|
return r && "/" == t[0] && (t = t.substr(1)), t
|
|
},
|
|
absolutePath: function(e, r) {
|
|
return Se.resolve(r, e)
|
|
},
|
|
standardizePath: function(e) {
|
|
return Ce.normalize(e)
|
|
},
|
|
findObject: function(e, r) {
|
|
var t = Pe.analyzePath(e, r);
|
|
return t.exists ? t.object : (xe(t.error), null)
|
|
},
|
|
analyzePath: function(e, r) {
|
|
try {
|
|
e = (n = Pe.lookupPath(e, {
|
|
follow: !r
|
|
})).path
|
|
} catch (e) {}
|
|
var t = {
|
|
isRoot: !1,
|
|
exists: !1,
|
|
error: 0,
|
|
name: null,
|
|
path: null,
|
|
object: null,
|
|
parentExists: !1,
|
|
parentPath: null,
|
|
parentObject: null
|
|
};
|
|
try {
|
|
var n = Pe.lookupPath(e, {
|
|
parent: !0
|
|
});
|
|
t.parentExists = !0, t.parentPath = n.path, t.parentObject = n.node, t.name = Ce.basename(e), n = Pe.lookupPath(e, {
|
|
follow: !r
|
|
}), t.exists = !0, t.path = n.path, t.object = n.node, t.name = n.node.name, t.isRoot = "/" === n.path
|
|
} catch (e) {
|
|
t.error = e.errno
|
|
}
|
|
return t
|
|
},
|
|
createFolder: function(e, r, t, n) {
|
|
var i = Ce.join2("string" == typeof e ? e : Pe.getPath(e), r),
|
|
a = Pe.getMode(t, n);
|
|
return Pe.mkdir(i, a)
|
|
},
|
|
createPath: function(e, r, t, n) {
|
|
e = "string" == typeof e ? e : Pe.getPath(e);
|
|
for (var i = r.split("/").reverse(); i.length;) {
|
|
var a = i.pop();
|
|
if (a) {
|
|
var o = Ce.join2(e, a);
|
|
try {
|
|
Pe.mkdir(o)
|
|
} catch (e) {}
|
|
e = o
|
|
}
|
|
}
|
|
return o
|
|
},
|
|
createFile: function(e, r, t, n, i) {
|
|
var a = Ce.join2("string" == typeof e ? e : Pe.getPath(e), r),
|
|
o = Pe.getMode(n, i);
|
|
return Pe.create(a, o)
|
|
},
|
|
createDataFile: function(e, r, t, n, i, a) {
|
|
var o = r ? Ce.join2("string" == typeof e ? e : Pe.getPath(e), r) : e,
|
|
u = Pe.getMode(n, i),
|
|
s = Pe.create(o, u);
|
|
if (t) {
|
|
if ("string" == typeof t) {
|
|
for (var c = new Array(t.length), l = 0, f = t.length; l < f; ++l) c[l] = t.charCodeAt(l);
|
|
t = c
|
|
}
|
|
Pe.chmod(s, 146 | u);
|
|
var d = Pe.open(s, "w");
|
|
Pe.write(d, t, 0, t.length, 0, a), Pe.close(d), Pe.chmod(s, u)
|
|
}
|
|
return s
|
|
},
|
|
createDevice: function(e, r, t, n) {
|
|
var i = Ce.join2("string" == typeof e ? e : Pe.getPath(e), r),
|
|
a = Pe.getMode(!!t, !!n);
|
|
Pe.createDevice.major || (Pe.createDevice.major = 64);
|
|
var o = Pe.makedev(Pe.createDevice.major++, 0);
|
|
return Pe.registerDevice(o, {
|
|
open: function(e) {
|
|
e.seekable = !1
|
|
},
|
|
close: function(e) {
|
|
n && n.buffer && n.buffer.length && n(10)
|
|
},
|
|
read: function(e, r, n, i, a) {
|
|
for (var o = 0, u = 0; u < i; u++) {
|
|
var s;
|
|
try {
|
|
s = t()
|
|
} catch (e) {
|
|
throw new Pe.ErrnoError(29)
|
|
}
|
|
if (void 0 === s && 0 === o) throw new Pe.ErrnoError(6);
|
|
if (null == s) break;
|
|
o++, r[n + u] = s
|
|
}
|
|
return o && (e.node.timestamp = Date.now()), o
|
|
},
|
|
write: function(e, r, t, i, a) {
|
|
for (var o = 0; o < i; o++) try {
|
|
n(r[t + o])
|
|
} catch (e) {
|
|
throw new Pe.ErrnoError(29)
|
|
}
|
|
return i && (e.node.timestamp = Date.now()), o
|
|
}
|
|
}), Pe.mkdev(i, a, o)
|
|
},
|
|
createLink: function(e, r, t, n, i) {
|
|
var a = Ce.join2("string" == typeof e ? e : Pe.getPath(e), r);
|
|
return Pe.symlink(t, a)
|
|
},
|
|
forceLoadFile: function(e) {
|
|
if (e.isDevice || e.isFolder || e.link || e.contents) return !0;
|
|
var r = !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 (!a) throw new Error("Cannot load without read() or XMLHttpRequest.");
|
|
try {
|
|
e.contents = Qr(a(e.url), !0), e.usedBytes = e.contents.length
|
|
} catch (e) {
|
|
r = !1
|
|
}
|
|
return r || xe(29), r
|
|
},
|
|
createLazyFile: function(e, r, t, n, i) {
|
|
function a() {
|
|
this.lengthKnown = !1, this.chunks = []
|
|
}
|
|
if (a.prototype.get = function(e) {
|
|
if (!(e > this.length - 1 || e < 0)) {
|
|
var r = e % this.chunkSize,
|
|
t = e / this.chunkSize | 0;
|
|
return this.getter(t)[r]
|
|
}
|
|
}, a.prototype.setDataGetter = function(e) {
|
|
this.getter = e
|
|
}, a.prototype.cacheLength = function() {
|
|
var e = new XMLHttpRequest;
|
|
if (e.open("HEAD", t, !1), e.send(null), !(e.status >= 200 && e.status < 300 || 304 === e.status)) throw new Error("Couldn't load " + t + ". Status: " + e.status);
|
|
var r, n = Number(e.getResponseHeader("Content-length")),
|
|
i = (r = e.getResponseHeader("Accept-Ranges")) && "bytes" === r,
|
|
a = (r = e.getResponseHeader("Content-Encoding")) && "gzip" === r,
|
|
o = 1048576;
|
|
i || (o = n);
|
|
var u = this;
|
|
u.setDataGetter((function(e) {
|
|
var r = e * o,
|
|
i = (e + 1) * o - 1;
|
|
if (i = Math.min(i, n - 1), void 0 === u.chunks[e] && (u.chunks[e] = function(e, r) {
|
|
if (e > r) throw new Error("invalid range (" + e + ", " + r + ") or no bytes requested!");
|
|
if (r > n - 1) throw new Error("only " + n + " bytes available! programmer error!");
|
|
var i = new XMLHttpRequest;
|
|
if (i.open("GET", t, !1), n !== o && i.setRequestHeader("Range", "bytes=" + e + "-" + r), "undefined" != typeof Uint8Array && (i.responseType = "arraybuffer"), i.overrideMimeType && i.overrideMimeType("text/plain; charset=x-user-defined"), i.send(null), !(i.status >= 200 && i.status < 300 || 304 === i.status)) throw new Error("Couldn't load " + t + ". Status: " + i.status);
|
|
return void 0 !== i.response ? new Uint8Array(i.response || []) : Qr(i.responseText || "", !0)
|
|
}(r, i)), void 0 === u.chunks[e]) throw new Error("doXHR failed!");
|
|
return u.chunks[e]
|
|
})), !a && n || (o = n = 1, n = this.getter(0).length, o = n, m("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) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
|
|
var o = {
|
|
isDevice: !1,
|
|
url: t
|
|
},
|
|
u = Pe.createFile(e, r, o, n, i);
|
|
o.contents ? u.contents = o.contents : o.url && (u.contents = null, u.url = o.url), Object.defineProperties(u, {
|
|
usedBytes: {
|
|
get: function() {
|
|
return this.contents.length
|
|
}
|
|
}
|
|
});
|
|
var s = {};
|
|
return Object.keys(u.stream_ops).forEach((function(e) {
|
|
var r = u.stream_ops[e];
|
|
s[e] = function() {
|
|
if (!Pe.forceLoadFile(u)) throw new Pe.ErrnoError(29);
|
|
return r.apply(null, arguments)
|
|
}
|
|
})), s.read = function(e, r, t, n, i) {
|
|
if (!Pe.forceLoadFile(u)) throw new Pe.ErrnoError(29);
|
|
var a = e.node.contents;
|
|
if (i >= a.length) return 0;
|
|
var o = Math.min(a.length - i, n);
|
|
if (a.slice)
|
|
for (var s = 0; s < o; s++) r[t + s] = a[i + s];
|
|
else
|
|
for (s = 0; s < o; s++) r[t + s] = a.get(i + s);
|
|
return o
|
|
}, u.stream_ops = s, u
|
|
},
|
|
createPreloadedFile: function(e, t, n, i, a, o, u, s, c, l) {
|
|
Be.init();
|
|
var f = t ? Se.resolve(Ce.join2(e, t)) : e;
|
|
|
|
function d(n) {
|
|
function d(r) {
|
|
l && l(), s || Pe.createDataFile(e, t, r, i, a, c), o && o(), me()
|
|
}
|
|
var m = !1;
|
|
r.preloadPlugins.forEach((function(e) {
|
|
m || e.canHandle(f) && (e.handle(n, f, d, (function() {
|
|
u && u(), me()
|
|
})), m = !0)
|
|
})), m || d(n)
|
|
}
|
|
de(), "string" == typeof n ? Be.asyncLoad(n, (function(e) {
|
|
d(e)
|
|
}), u) : d(n)
|
|
},
|
|
indexedDB: function() {
|
|
return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB
|
|
},
|
|
DB_NAME: function() {
|
|
return "EM_FS_" + window.location.pathname
|
|
},
|
|
DB_VERSION: 20,
|
|
DB_STORE_NAME: "FILE_DATA",
|
|
saveFilesToDB: function(e, r, t) {
|
|
r = r || function() {}, t = t || function() {};
|
|
var n = Pe.indexedDB();
|
|
try {
|
|
var i = n.open(Pe.DB_NAME(), Pe.DB_VERSION)
|
|
} catch (e) {
|
|
return t(e)
|
|
}
|
|
i.onupgradeneeded = function() {
|
|
m("creating db"), i.result.createObjectStore(Pe.DB_STORE_NAME)
|
|
}, i.onsuccess = function() {
|
|
var n = i.result.transaction([Pe.DB_STORE_NAME], "readwrite"),
|
|
a = n.objectStore(Pe.DB_STORE_NAME),
|
|
o = 0,
|
|
u = 0,
|
|
s = e.length;
|
|
|
|
function c() {
|
|
0 == u ? r() : t()
|
|
}
|
|
e.forEach((function(e) {
|
|
var r = a.put(Pe.analyzePath(e).object.contents, e);
|
|
r.onsuccess = function() {
|
|
++o + u == s && c()
|
|
}, r.onerror = function() {
|
|
u++, o + u == s && c()
|
|
}
|
|
})), n.onerror = t
|
|
}, i.onerror = t
|
|
},
|
|
loadFilesFromDB: function(e, r, t) {
|
|
r = r || function() {}, t = t || function() {};
|
|
var n = Pe.indexedDB();
|
|
try {
|
|
var i = n.open(Pe.DB_NAME(), Pe.DB_VERSION)
|
|
} catch (e) {
|
|
return t(e)
|
|
}
|
|
i.onupgradeneeded = t, i.onsuccess = function() {
|
|
var n = i.result;
|
|
try {
|
|
var a = n.transaction([Pe.DB_STORE_NAME], "readonly")
|
|
} catch (e) {
|
|
return void t(e)
|
|
}
|
|
var o = a.objectStore(Pe.DB_STORE_NAME),
|
|
u = 0,
|
|
s = 0,
|
|
c = e.length;
|
|
|
|
function l() {
|
|
0 == s ? r() : t()
|
|
}
|
|
e.forEach((function(e) {
|
|
var r = o.get(e);
|
|
r.onsuccess = function() {
|
|
Pe.analyzePath(e).exists && Pe.unlink(e), Pe.createDataFile(Ce.dirname(e), Ce.basename(e), r.result, !0, !0, !0), ++u + s == c && l()
|
|
}, r.onerror = function() {
|
|
s++, u + s == c && l()
|
|
}
|
|
})), a.onerror = t
|
|
}, i.onerror = t
|
|
}
|
|
},
|
|
Te = {
|
|
mappings: {},
|
|
DEFAULT_POLLMASK: 5,
|
|
umask: 511,
|
|
calculateAt: function(e, r) {
|
|
if ("/" !== r[0]) {
|
|
var t;
|
|
if (-100 === e) t = Pe.cwd();
|
|
else {
|
|
var n = Pe.getStream(e);
|
|
if (!n) throw new Pe.ErrnoError(8);
|
|
t = n.path
|
|
}
|
|
r = Ce.join2(t, r)
|
|
}
|
|
return r
|
|
},
|
|
doStat: function(e, r, t) {
|
|
try {
|
|
var n = e(r)
|
|
} catch (e) {
|
|
if (e && e.node && Ce.normalize(r) !== Ce.normalize(Pe.getPath(e.node))) return -54;
|
|
throw e
|
|
}
|
|
return q[t >> 2] = n.dev, q[t + 4 >> 2] = 0, q[t + 8 >> 2] = n.ino, q[t + 12 >> 2] = n.mode, q[t + 16 >> 2] = n.nlink, q[t + 20 >> 2] = n.uid, q[t + 24 >> 2] = n.gid, q[t + 28 >> 2] = n.rdev, q[t + 32 >> 2] = 0, _e = [n.size >>> 0, (he = n.size, +ae(he) >= 1 ? he > 0 ? (0 | se(+ue(he / 4294967296), 4294967295)) >>> 0 : ~~+oe((he - +(~~he >>> 0)) / 4294967296) >>> 0 : 0)], q[t + 40 >> 2] = _e[0], q[t + 44 >> 2] = _e[1], q[t + 48 >> 2] = 4096, q[t + 52 >> 2] = n.blocks, q[t + 56 >> 2] = n.atime.getTime() / 1e3 | 0, q[t + 60 >> 2] = 0, q[t + 64 >> 2] = n.mtime.getTime() / 1e3 | 0, q[t + 68 >> 2] = 0, q[t + 72 >> 2] = n.ctime.getTime() / 1e3 | 0, q[t + 76 >> 2] = 0, _e = [n.ino >>> 0, (he = n.ino, +ae(he) >= 1 ? he > 0 ? (0 | se(+ue(he / 4294967296), 4294967295)) >>> 0 : ~~+oe((he - +(~~he >>> 0)) / 4294967296) >>> 0 : 0)], q[t + 80 >> 2] = _e[0], q[t + 84 >> 2] = _e[1], 0
|
|
},
|
|
doMsync: function(e, r, t, n, i) {
|
|
var a = G.slice(e, e + t);
|
|
Pe.msync(r, a, i, t, n)
|
|
},
|
|
doMkdir: function(e, r) {
|
|
return "/" === (e = Ce.normalize(e))[e.length - 1] && (e = e.substr(0, e.length - 1)), Pe.mkdir(e, r, 0), 0
|
|
},
|
|
doMknod: function(e, r, t) {
|
|
switch (61440 & r) {
|
|
case 32768:
|
|
case 8192:
|
|
case 24576:
|
|
case 4096:
|
|
case 49152:
|
|
break;
|
|
default:
|
|
return -28
|
|
}
|
|
return Pe.mknod(e, r, t), 0
|
|
},
|
|
doReadlink: function(e, r, t) {
|
|
if (t <= 0) return -28;
|
|
var n = Pe.readlink(e),
|
|
i = Math.min(t, R(n)),
|
|
a = O[r + i];
|
|
return B(n, r, t + 1), O[r + i] = a, i
|
|
},
|
|
doAccess: function(e, r) {
|
|
if (-8 & r) return -28;
|
|
var t;
|
|
if (!(t = Pe.lookupPath(e, {
|
|
follow: !0
|
|
}).node)) return -44;
|
|
var n = "";
|
|
return 4 & r && (n += "r"), 2 & r && (n += "w"), 1 & r && (n += "x"), n && Pe.nodePermissions(t, n) ? -2 : 0
|
|
},
|
|
doDup: function(e, r, t) {
|
|
var n = Pe.getStream(t);
|
|
return n && Pe.close(n), Pe.open(e, r, 0, t, t).fd
|
|
},
|
|
doReadv: function(e, r, t, n) {
|
|
for (var i = 0, a = 0; a < t; a++) {
|
|
var o = q[r + 8 * a >> 2],
|
|
u = q[r + (8 * a + 4) >> 2],
|
|
s = Pe.read(e, O, o, u, n);
|
|
if (s < 0) return -1;
|
|
if (i += s, s < u) break
|
|
}
|
|
return i
|
|
},
|
|
doWritev: function(e, r, t, n) {
|
|
for (var i = 0, a = 0; a < t; a++) {
|
|
var o = q[r + 8 * a >> 2],
|
|
u = q[r + (8 * a + 4) >> 2],
|
|
s = Pe.write(e, O, o, u, n);
|
|
if (s < 0) return -1;
|
|
i += s
|
|
}
|
|
return i
|
|
},
|
|
varargs: void 0,
|
|
get: function() {
|
|
return Te.varargs += 4, q[Te.varargs - 4 >> 2]
|
|
},
|
|
getStr: function(e) {
|
|
return L(e)
|
|
},
|
|
getStreamFromFD: function(e) {
|
|
var r = Pe.getStream(e);
|
|
if (!r) throw new Pe.ErrnoError(8);
|
|
return r
|
|
},
|
|
get64: function(e, r) {
|
|
return e
|
|
}
|
|
};
|
|
|
|
function Le(e, r) {
|
|
if (Be.mainLoop.timingMode = e, Be.mainLoop.timingValue = r, !Be.mainLoop.func) return 1;
|
|
if (0 == e) Be.mainLoop.scheduler = function() {
|
|
var e = 0 | Math.max(0, Be.mainLoop.tickStartTime + r - ke());
|
|
setTimeout(Be.mainLoop.runner, e)
|
|
}, Be.mainLoop.method = "timeout";
|
|
else if (1 == e) Be.mainLoop.scheduler = function() {
|
|
Be.requestAnimationFrame(Be.mainLoop.runner)
|
|
}, Be.mainLoop.method = "rAF";
|
|
else if (2 == e) {
|
|
if ("undefined" == typeof setImmediate) {
|
|
var t = [],
|
|
n = "setimmediate";
|
|
addEventListener("message", (function(e) {
|
|
e.data !== n && e.data.target !== n || (e.stopPropagation(), t.shift()())
|
|
}), !0), setImmediate = function(e) {
|
|
t.push(e), postMessage(n, "*")
|
|
}
|
|
}
|
|
Be.mainLoop.scheduler = function() {
|
|
setImmediate(Be.mainLoop.runner)
|
|
}, Be.mainLoop.method = "immediate"
|
|
}
|
|
return 0
|
|
}
|
|
|
|
function Ie(e, t, n, i, a) {
|
|
var o;
|
|
y = !0, D(!Be.mainLoop.func, "emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."), Be.mainLoop.func = e, Be.mainLoop.arg = i, o = void 0 !== i ? function() {
|
|
r.dynCall_vi(e, i)
|
|
} : function() {
|
|
r.dynCall_v(e)
|
|
};
|
|
var u = Be.mainLoop.currentlyRunningMainloop;
|
|
if (Be.mainLoop.runner = function() {
|
|
if (!S)
|
|
if (Be.mainLoop.queue.length > 0) {
|
|
var e = Date.now(),
|
|
r = Be.mainLoop.queue.shift();
|
|
if (r.func(r.arg), Be.mainLoop.remainingBlockers) {
|
|
var t = Be.mainLoop.remainingBlockers,
|
|
n = t % 1 == 0 ? t - 1 : Math.floor(t);
|
|
r.counted ? Be.mainLoop.remainingBlockers = n : (n += .5, Be.mainLoop.remainingBlockers = (8 * t + n) / 9)
|
|
}
|
|
if (console.log('main loop blocker "' + r.name + '" took ' + (Date.now() - e) + " ms"), Be.mainLoop.updateStatus(), u < Be.mainLoop.currentlyRunningMainloop) return;
|
|
setTimeout(Be.mainLoop.runner, 0)
|
|
} else u < Be.mainLoop.currentlyRunningMainloop || (Be.mainLoop.currentFrameNumber = Be.mainLoop.currentFrameNumber + 1 | 0, 1 == Be.mainLoop.timingMode && Be.mainLoop.timingValue > 1 && Be.mainLoop.currentFrameNumber % Be.mainLoop.timingValue != 0 ? Be.mainLoop.scheduler() : (0 == Be.mainLoop.timingMode && (Be.mainLoop.tickStartTime = ke()), Be.mainLoop.runIter(o), u < Be.mainLoop.currentlyRunningMainloop || ("object" == typeof SDL && SDL.audio && SDL.audio.queueNewAudioData && SDL.audio.queueNewAudioData(), Be.mainLoop.scheduler())))
|
|
}, a || (t && t > 0 ? Le(0, 1e3 / t) : Le(1, 1), Be.mainLoop.scheduler()), n) throw "unwind"
|
|
}
|
|
ke = function() {
|
|
return performance.now()
|
|
};
|
|
var Be = {
|
|
mainLoop: {
|
|
scheduler: null,
|
|
method: "",
|
|
currentlyRunningMainloop: 0,
|
|
func: null,
|
|
arg: 0,
|
|
timingMode: 0,
|
|
timingValue: 0,
|
|
currentFrameNumber: 0,
|
|
queue: [],
|
|
pause: function() {
|
|
Be.mainLoop.scheduler = null, Be.mainLoop.currentlyRunningMainloop++
|
|
},
|
|
resume: function() {
|
|
Be.mainLoop.currentlyRunningMainloop++;
|
|
var e = Be.mainLoop.timingMode,
|
|
r = Be.mainLoop.timingValue,
|
|
t = Be.mainLoop.func;
|
|
Be.mainLoop.func = null, Ie(t, 0, !1, Be.mainLoop.arg, !0), Le(e, r), Be.mainLoop.scheduler()
|
|
},
|
|
updateStatus: function() {
|
|
if (r.setStatus) {
|
|
var e = r.statusMessage || "Please wait...",
|
|
t = Be.mainLoop.remainingBlockers,
|
|
n = Be.mainLoop.expectedBlockers;
|
|
t ? t < n ? r.setStatus(e + " (" + (n - t) + "/" + n + ")") : r.setStatus(e) : r.setStatus("")
|
|
}
|
|
},
|
|
runIter: function(e) {
|
|
if (!S) {
|
|
if (r.preMainLoop)
|
|
if (!1 === r.preMainLoop()) return;
|
|
try {
|
|
e()
|
|
} catch (e) {
|
|
if (e instanceof xt) return;
|
|
throw e && "object" == typeof e && e.stack && p("exception thrown: " + [e, e.stack]), e
|
|
}
|
|
r.postMainLoop && r.postMainLoop()
|
|
}
|
|
}
|
|
},
|
|
isFullscreen: !1,
|
|
pointerLock: !1,
|
|
moduleContextCreatedCallbacks: [],
|
|
workers: [],
|
|
init: function() {
|
|
if (r.preloadPlugins || (r.preloadPlugins = []), !Be.initted) {
|
|
Be.initted = !0;
|
|
try {
|
|
new Blob, Be.hasBlobConstructor = !0
|
|
} catch (e) {
|
|
Be.hasBlobConstructor = !1, console.log("warning: no blob constructor, cannot create blobs with mimetypes")
|
|
}
|
|
Be.BlobBuilder = "undefined" != typeof MozBlobBuilder ? MozBlobBuilder : "undefined" != typeof WebKitBlobBuilder ? WebKitBlobBuilder : Be.hasBlobConstructor ? null : console.log("warning: no BlobBuilder"), Be.URLObject = "undefined" != typeof window ? window.URL ? window.URL : window.webkitURL : void 0, r.noImageDecoding || void 0 !== Be.URLObject || (console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."), r.noImageDecoding = !0);
|
|
var e = {
|
|
canHandle: function(e) {
|
|
return !r.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(e)
|
|
},
|
|
handle: function(e, t, n, i) {
|
|
var a = null;
|
|
if (Be.hasBlobConstructor) try {
|
|
(a = new Blob([e], {
|
|
type: Be.getMimetype(t)
|
|
})).size !== e.length && (a = new Blob([new Uint8Array(e).buffer], {
|
|
type: Be.getMimetype(t)
|
|
}))
|
|
} catch (e) {
|
|
h("Blob constructor present but fails: " + e + "; falling back to blob builder")
|
|
}
|
|
if (!a) {
|
|
var o = new Be.BlobBuilder;
|
|
o.append(new Uint8Array(e).buffer), a = o.getBlob()
|
|
}
|
|
var u = Be.URLObject.createObjectURL(a),
|
|
s = new Image;
|
|
s.onload = function() {
|
|
D(s.complete, "Image " + t + " could not be decoded");
|
|
var i = document.createElement("canvas");
|
|
i.width = s.width, i.height = s.height, i.getContext("2d").drawImage(s, 0, 0), r.preloadedImages[t] = i, Be.URLObject.revokeObjectURL(u), n && n(e)
|
|
}, s.onerror = function(e) {
|
|
console.log("Image " + u + " could not be decoded"), i && i()
|
|
}, s.src = u
|
|
}
|
|
};
|
|
r.preloadPlugins.push(e);
|
|
var t = {
|
|
canHandle: function(e) {
|
|
return !r.noAudioDecoding && e.substr(-4) in {
|
|
".ogg": 1,
|
|
".wav": 1,
|
|
".mp3": 1
|
|
}
|
|
},
|
|
handle: function(e, t, n, i) {
|
|
var a = !1;
|
|
|
|
function o(i) {
|
|
a || (a = !0, r.preloadedAudios[t] = i, n && n(e))
|
|
}
|
|
|
|
function u() {
|
|
a || (a = !0, r.preloadedAudios[t] = new Audio, i && i())
|
|
}
|
|
if (!Be.hasBlobConstructor) return u();
|
|
try {
|
|
var s = new Blob([e], {
|
|
type: Be.getMimetype(t)
|
|
})
|
|
} catch (e) {
|
|
return u()
|
|
}
|
|
var c = Be.URLObject.createObjectURL(s),
|
|
l = new Audio;
|
|
l.addEventListener("canplaythrough", (function() {
|
|
o(l)
|
|
}), !1), l.onerror = function(r) {
|
|
a || (console.log("warning: browser could not fully decode audio " + t + ", trying slower base64 approach"), l.src = "data:audio/x-" + t.substr(-3) + ";base64," + function(e) {
|
|
for (var r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", t = "", n = 0, i = 0, a = 0; a < e.length; a++)
|
|
for (n = n << 8 | e[a], i += 8; i >= 6;) {
|
|
var o = n >> i - 6 & 63;
|
|
i -= 6, t += r[o]
|
|
}
|
|
return 2 == i ? (t += r[(3 & n) << 4], t += "==") : 4 == i && (t += r[(15 & n) << 2], t += "="), t
|
|
}(e), o(l))
|
|
}, l.src = c, Be.safeSetTimeout((function() {
|
|
o(l)
|
|
}), 1e4)
|
|
}
|
|
};
|
|
r.preloadPlugins.push(t);
|
|
var n = r.canvas;
|
|
n && (n.requestPointerLock = n.requestPointerLock || n.mozRequestPointerLock || n.webkitRequestPointerLock || n.msRequestPointerLock || function() {}, n.exitPointerLock = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock || document.msExitPointerLock || function() {}, n.exitPointerLock = n.exitPointerLock.bind(document), document.addEventListener("pointerlockchange", i, !1), document.addEventListener("mozpointerlockchange", i, !1), document.addEventListener("webkitpointerlockchange", i, !1), document.addEventListener("mspointerlockchange", i, !1), r.elementPointerLock && n.addEventListener("click", (function(e) {
|
|
!Be.pointerLock && r.canvas.requestPointerLock && (r.canvas.requestPointerLock(), e.preventDefault())
|
|
}), !1))
|
|
}
|
|
|
|
function i() {
|
|
Be.pointerLock = document.pointerLockElement === r.canvas || document.mozPointerLockElement === r.canvas || document.webkitPointerLockElement === r.canvas || document.msPointerLockElement === r.canvas
|
|
}
|
|
},
|
|
createContext: function(e, t, n, i) {
|
|
if (t && r.ctx && e == r.canvas) return r.ctx;
|
|
var a, o;
|
|
if (t) {
|
|
var u = {
|
|
antialias: !1,
|
|
alpha: !1,
|
|
majorVersion: 2
|
|
};
|
|
if (i)
|
|
for (var s in i) u[s] = i[s];
|
|
void 0 !== Ue && (o = Ue.createContext(e, u)) && (a = Ue.getContext(o).GLctx)
|
|
} else a = e.getContext("2d");
|
|
return a ? (n && (t || D(void 0 === Or, "cannot set in module if GLctx is used, but we are a non-GL context that would replace it"), r.ctx = a, t && Ue.makeContextCurrent(o), r.useWebGL = t, Be.moduleContextCreatedCallbacks.forEach((function(e) {
|
|
e()
|
|
})), Be.init()), a) : null
|
|
},
|
|
destroyContext: function(e, r, t) {},
|
|
fullscreenHandlersInstalled: !1,
|
|
lockPointer: void 0,
|
|
resizeCanvas: void 0,
|
|
requestFullscreen: function(e, t) {
|
|
Be.lockPointer = e, Be.resizeCanvas = t, void 0 === Be.lockPointer && (Be.lockPointer = !0), void 0 === Be.resizeCanvas && (Be.resizeCanvas = !1);
|
|
var n = r.canvas;
|
|
|
|
function i() {
|
|
Be.isFullscreen = !1;
|
|
var e = n.parentNode;
|
|
(document.fullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.webkitFullscreenElement || document.webkitCurrentFullScreenElement) === e ? (n.exitFullscreen = Be.exitFullscreen, Be.lockPointer && n.requestPointerLock(), Be.isFullscreen = !0, Be.resizeCanvas ? Be.setFullscreenCanvasSize() : Be.updateCanvasDimensions(n)) : (e.parentNode.insertBefore(n, e), e.parentNode.removeChild(e), Be.resizeCanvas ? Be.setWindowedCanvasSize() : Be.updateCanvasDimensions(n)), r.onFullScreen && r.onFullScreen(Be.isFullscreen), r.onFullscreen && r.onFullscreen(Be.isFullscreen)
|
|
}
|
|
Be.fullscreenHandlersInstalled || (Be.fullscreenHandlersInstalled = !0, document.addEventListener("fullscreenchange", i, !1), document.addEventListener("mozfullscreenchange", i, !1), document.addEventListener("webkitfullscreenchange", i, !1), document.addEventListener("MSFullscreenChange", i, !1));
|
|
var a = document.createElement("div");
|
|
n.parentNode.insertBefore(a, n), a.appendChild(n), a.requestFullscreen = a.requestFullscreen || a.mozRequestFullScreen || a.msRequestFullscreen || (a.webkitRequestFullscreen ? function() {
|
|
a.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)
|
|
} : null) || (a.webkitRequestFullScreen ? function() {
|
|
a.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)
|
|
} : null), a.requestFullscreen()
|
|
},
|
|
exitFullscreen: function() {
|
|
return !!Be.isFullscreen && ((document.exitFullscreen || document.cancelFullScreen || document.mozCancelFullScreen || document.msExitFullscreen || document.webkitCancelFullScreen || function() {}).apply(document, []), !0)
|
|
},
|
|
nextRAF: 0,
|
|
fakeRequestAnimationFrame: function(e) {
|
|
var r = Date.now();
|
|
if (0 === Be.nextRAF) Be.nextRAF = r + 1e3 / 60;
|
|
else
|
|
for (; r + 2 >= Be.nextRAF;) Be.nextRAF += 1e3 / 60;
|
|
var t = Math.max(Be.nextRAF - r, 0);
|
|
setTimeout(e, t)
|
|
},
|
|
requestAnimationFrame: function(e) {
|
|
"function" != typeof requestAnimationFrame ? (0, Be.fakeRequestAnimationFrame)(e) : requestAnimationFrame(e)
|
|
},
|
|
safeCallback: function(e) {
|
|
return function() {
|
|
if (!S) return e.apply(null, arguments)
|
|
}
|
|
},
|
|
allowAsyncCallbacks: !0,
|
|
queuedAsyncCallbacks: [],
|
|
pauseAsyncCallbacks: function() {
|
|
Be.allowAsyncCallbacks = !1
|
|
},
|
|
resumeAsyncCallbacks: function() {
|
|
if (Be.allowAsyncCallbacks = !0, Be.queuedAsyncCallbacks.length > 0) {
|
|
var e = Be.queuedAsyncCallbacks;
|
|
Be.queuedAsyncCallbacks = [], e.forEach((function(e) {
|
|
e()
|
|
}))
|
|
}
|
|
},
|
|
safeRequestAnimationFrame: function(e) {
|
|
return Be.requestAnimationFrame((function() {
|
|
S || (Be.allowAsyncCallbacks ? e() : Be.queuedAsyncCallbacks.push(e))
|
|
}))
|
|
},
|
|
safeSetTimeout: function(e, r) {
|
|
return y = !0, setTimeout((function() {
|
|
S || (Be.allowAsyncCallbacks ? e() : Be.queuedAsyncCallbacks.push(e))
|
|
}), r)
|
|
},
|
|
safeSetInterval: function(e, r) {
|
|
return y = !0, setInterval((function() {
|
|
S || Be.allowAsyncCallbacks && e()
|
|
}), r)
|
|
},
|
|
getMimetype: function(e) {
|
|
return {
|
|
jpg: "image/jpeg",
|
|
jpeg: "image/jpeg",
|
|
png: "image/png",
|
|
bmp: "image/bmp",
|
|
ogg: "audio/ogg",
|
|
wav: "audio/wav",
|
|
mp3: "audio/mpeg"
|
|
} [e.substr(e.lastIndexOf(".") + 1)]
|
|
},
|
|
getUserMedia: function(e) {
|
|
window.getUserMedia || (window.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia), window.getUserMedia(e)
|
|
},
|
|
getMovementX: function(e) {
|
|
return e.movementX || e.mozMovementX || e.webkitMovementX || 0
|
|
},
|
|
getMovementY: function(e) {
|
|
return e.movementY || e.mozMovementY || e.webkitMovementY || 0
|
|
},
|
|
getMouseWheelDelta: function(e) {
|
|
var r = 0;
|
|
switch (e.type) {
|
|
case "DOMMouseScroll":
|
|
r = e.detail / 3;
|
|
break;
|
|
case "mousewheel":
|
|
r = e.wheelDelta / 120;
|
|
break;
|
|
case "wheel":
|
|
switch (r = e.deltaY, e.deltaMode) {
|
|
case 0:
|
|
r /= 100;
|
|
break;
|
|
case 1:
|
|
r /= 3;
|
|
break;
|
|
case 2:
|
|
r *= 80;
|
|
break;
|
|
default:
|
|
throw "unrecognized mouse wheel delta mode: " + e.deltaMode
|
|
}
|
|
break;
|
|
default:
|
|
throw "unrecognized mouse wheel event: " + e.type
|
|
}
|
|
return r
|
|
},
|
|
mouseX: 0,
|
|
mouseY: 0,
|
|
mouseMovementX: 0,
|
|
mouseMovementY: 0,
|
|
touches: {},
|
|
lastTouches: {},
|
|
calculateMouseEvent: function(e) {
|
|
if (Be.pointerLock) "mousemove" != e.type && "mozMovementX" in e ? Be.mouseMovementX = Be.mouseMovementY = 0 : (Be.mouseMovementX = Be.getMovementX(e), Be.mouseMovementY = Be.getMovementY(e)), "undefined" != typeof SDL ? (Be.mouseX = SDL.mouseX + Be.mouseMovementX, Be.mouseY = SDL.mouseY + Be.mouseMovementY) : (Be.mouseX += Be.mouseMovementX, Be.mouseY += Be.mouseMovementY);
|
|
else {
|
|
var t = r.canvas.getBoundingClientRect(),
|
|
n = r.canvas.width,
|
|
i = r.canvas.height,
|
|
a = void 0 !== window.scrollX ? window.scrollX : window.pageXOffset,
|
|
o = void 0 !== window.scrollY ? window.scrollY : window.pageYOffset;
|
|
if ("touchstart" === e.type || "touchend" === e.type || "touchmove" === e.type) {
|
|
var u = e.touch;
|
|
if (void 0 === u) return;
|
|
var s = u.pageX - (a + t.left),
|
|
c = u.pageY - (o + t.top),
|
|
l = {
|
|
x: s *= n / t.width,
|
|
y: c *= i / t.height
|
|
};
|
|
if ("touchstart" === e.type) Be.lastTouches[u.identifier] = l, Be.touches[u.identifier] = l;
|
|
else if ("touchend" === e.type || "touchmove" === e.type) {
|
|
var f = Be.touches[u.identifier];
|
|
f || (f = l), Be.lastTouches[u.identifier] = f, Be.touches[u.identifier] = l
|
|
}
|
|
return
|
|
}
|
|
var d = e.pageX - (a + t.left),
|
|
m = e.pageY - (o + t.top);
|
|
d *= n / t.width, m *= i / t.height, Be.mouseMovementX = d - Be.mouseX, Be.mouseMovementY = m - Be.mouseY, Be.mouseX = d, Be.mouseY = m
|
|
}
|
|
},
|
|
asyncLoad: function(e, r, t, n) {
|
|
var i = n ? "" : "al " + e;
|
|
o(e, (function(t) {
|
|
D(t, 'Loading data file "' + e + '" failed (no arrayBuffer).'), r(new Uint8Array(t)), i && me()
|
|
}), (function(r) {
|
|
if (!t) throw 'Loading data file "' + e + '" failed.';
|
|
t()
|
|
})), i && de()
|
|
},
|
|
resizeListeners: [],
|
|
updateResizeListeners: function() {
|
|
var e = r.canvas;
|
|
Be.resizeListeners.forEach((function(r) {
|
|
r(e.width, e.height)
|
|
}))
|
|
},
|
|
setCanvasSize: function(e, t, n) {
|
|
var i = r.canvas;
|
|
Be.updateCanvasDimensions(i, e, t), n || Be.updateResizeListeners()
|
|
},
|
|
windowedWidth: 0,
|
|
windowedHeight: 0,
|
|
setFullscreenCanvasSize: function() {
|
|
if ("undefined" != typeof SDL) {
|
|
var e = Q[SDL.screen >> 2];
|
|
e |= 8388608, q[SDL.screen >> 2] = e
|
|
}
|
|
Be.updateCanvasDimensions(r.canvas), Be.updateResizeListeners()
|
|
},
|
|
setWindowedCanvasSize: function() {
|
|
if ("undefined" != typeof SDL) {
|
|
var e = Q[SDL.screen >> 2];
|
|
e &= -8388609, q[SDL.screen >> 2] = e
|
|
}
|
|
Be.updateCanvasDimensions(r.canvas), Be.updateResizeListeners()
|
|
},
|
|
updateCanvasDimensions: function(e, t, n) {
|
|
t && n ? (e.widthNative = t, e.heightNative = n) : (t = e.widthNative, n = e.heightNative);
|
|
var i = t,
|
|
a = n;
|
|
if (r.forcedAspectRatio && r.forcedAspectRatio > 0 && (i / a < r.forcedAspectRatio ? i = Math.round(a * r.forcedAspectRatio) : a = Math.round(i / r.forcedAspectRatio)), (document.fullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.webkitFullscreenElement || document.webkitCurrentFullScreenElement) === e.parentNode && "undefined" != typeof screen) {
|
|
var o = Math.min(screen.width / i, screen.height / a);
|
|
i = Math.round(i * o), a = Math.round(a * o)
|
|
}
|
|
Be.resizeCanvas ? (e.width != i && (e.width = i), e.height != a && (e.height = a), void 0 !== e.style && (e.style.removeProperty("width"), e.style.removeProperty("height"))) : (e.width != t && (e.width = t), e.height != n && (e.height = n), void 0 !== e.style && (i != t || a != n ? (e.style.setProperty("width", i + "px", "important"), e.style.setProperty("height", a + "px", "important")) : (e.style.removeProperty("width"), e.style.removeProperty("height"))))
|
|
},
|
|
wgetRequests: {},
|
|
nextWgetRequestHandle: 0,
|
|
getNextWgetRequestHandle: function() {
|
|
var e = Be.nextWgetRequestHandle;
|
|
return Be.nextWgetRequestHandle++, e
|
|
}
|
|
},
|
|
Re = {
|
|
QUEUE_INTERVAL: 25,
|
|
QUEUE_LOOKAHEAD: .1,
|
|
DEVICE_NAME: "Emscripten OpenAL",
|
|
CAPTURE_DEVICE_NAME: "Emscripten OpenAL capture",
|
|
ALC_EXTENSIONS: {
|
|
ALC_SOFT_pause_device: !0,
|
|
ALC_SOFT_HRTF: !0
|
|
},
|
|
AL_EXTENSIONS: {
|
|
AL_EXT_float32: !0,
|
|
AL_SOFT_loop_points: !0,
|
|
AL_SOFT_source_length: !0,
|
|
AL_EXT_source_distance_model: !0,
|
|
AL_SOFT_source_spatialize: !0
|
|
},
|
|
_alcErr: 0,
|
|
alcErr: 0,
|
|
deviceRefCounts: {},
|
|
alcStringCache: {},
|
|
paused: !1,
|
|
stringCache: {},
|
|
contexts: {},
|
|
currentCtx: null,
|
|
buffers: {
|
|
0: {
|
|
id: 0,
|
|
refCount: 0,
|
|
audioBuf: null,
|
|
frequency: 0,
|
|
bytesPerSample: 2,
|
|
channels: 1,
|
|
length: 0
|
|
}
|
|
},
|
|
paramArray: [],
|
|
_nextId: 1,
|
|
newId: function() {
|
|
return Re.freeIds.length > 0 ? Re.freeIds.pop() : Re._nextId++
|
|
},
|
|
freeIds: [],
|
|
scheduleContextAudio: function(e) {
|
|
if (1 !== Be.mainLoop.timingMode || "visible" == document.visibilityState)
|
|
for (var r in e.sources) Re.scheduleSourceAudio(e.sources[r])
|
|
},
|
|
scheduleSourceAudio: function(e, r) {
|
|
if ((1 !== Be.mainLoop.timingMode || "visible" == document.visibilityState) && 4114 === e.state) {
|
|
for (var t = Re.updateSourceTime(e), n = e.bufStartTime, i = e.bufOffset, a = e.bufsProcessed, o = 0; o < e.audioQueue.length; o++) {
|
|
n = (l = e.audioQueue[o])._startTime + l._duration, i = 0, a += l._skipCount + 1
|
|
}
|
|
r || (r = Re.QUEUE_LOOKAHEAD);
|
|
for (var u = t + r, s = 0; n < u;) {
|
|
if (a >= e.bufQueue.length) {
|
|
if (!e.looping) break;
|
|
a %= e.bufQueue.length
|
|
}
|
|
var c = e.bufQueue[a % e.bufQueue.length];
|
|
if (0 === c.length) {
|
|
if (++s === e.bufQueue.length) break
|
|
} else {
|
|
var l;
|
|
(l = e.context.audioCtx.createBufferSource()).buffer = c.audioBuf, l.playbackRate.value = e.playbackRate, (c.audioBuf._loopStart || c.audioBuf._loopEnd) && (l.loopStart = c.audioBuf._loopStart, l.loopEnd = c.audioBuf._loopEnd);
|
|
var f = 0;
|
|
4136 === e.type && e.looping ? (f = Number.POSITIVE_INFINITY, l.loop = !0, c.audioBuf._loopStart && (l.loopStart = c.audioBuf._loopStart), c.audioBuf._loopEnd && (l.loopEnd = c.audioBuf._loopEnd)) : f = (c.audioBuf.duration - i) / e.playbackRate, l._startOffset = i, l._duration = f, l._skipCount = s, s = 0, l.connect(e.gain), void 0 !== l.start ? (n = Math.max(n, e.context.audioCtx.currentTime), l.start(n, i)) : void 0 !== l.noteOn && (n = Math.max(n, e.context.audioCtx.currentTime), l.noteOn(n)), l._startTime = n, e.audioQueue.push(l), n += f
|
|
}
|
|
i = 0, a++
|
|
}
|
|
}
|
|
},
|
|
updateSourceTime: function(e) {
|
|
var r = e.context.audioCtx.currentTime;
|
|
if (4114 !== e.state) return r;
|
|
isFinite(e.bufStartTime) || (e.bufStartTime = r - e.bufOffset / e.playbackRate, e.bufOffset = 0);
|
|
for (var t = 0; e.audioQueue.length;) {
|
|
var n = e.audioQueue[0];
|
|
if (e.bufsProcessed += n._skipCount, r < (t = n._startTime + n._duration)) break;
|
|
e.audioQueue.shift(), e.bufStartTime = t, e.bufOffset = 0, e.bufsProcessed++
|
|
}
|
|
if (e.bufsProcessed >= e.bufQueue.length && !e.looping) Re.setSourceState(e, 4116);
|
|
else if (4136 === e.type && e.looping) {
|
|
if (0 === (c = e.bufQueue[0]).length) e.bufOffset = 0;
|
|
else {
|
|
var i = (r - e.bufStartTime) * e.playbackRate,
|
|
a = c.audioBuf._loopStart || 0,
|
|
o = c.audioBuf._loopEnd || c.audioBuf.duration;
|
|
o <= a && (o = c.audioBuf.duration), e.bufOffset = i < o ? i : a + (i - a) % (o - a)
|
|
}
|
|
} else if (e.audioQueue[0]) e.bufOffset = (r - e.audioQueue[0]._startTime) * e.playbackRate;
|
|
else {
|
|
if (4136 !== e.type && e.looping) {
|
|
var u = Re.sourceDuration(e) / e.playbackRate;
|
|
u > 0 && (e.bufStartTime += Math.floor((r - e.bufStartTime) / u) * u)
|
|
}
|
|
for (var s = 0; s < e.bufQueue.length; s++) {
|
|
if (e.bufsProcessed >= e.bufQueue.length) {
|
|
if (!e.looping) {
|
|
Re.setSourceState(e, 4116);
|
|
break
|
|
}
|
|
e.bufsProcessed %= e.bufQueue.length
|
|
}
|
|
var c;
|
|
if ((c = e.bufQueue[e.bufsProcessed]).length > 0) {
|
|
if (r < (t = e.bufStartTime + c.audioBuf.duration / e.playbackRate)) {
|
|
e.bufOffset = (r - e.bufStartTime) * e.playbackRate;
|
|
break
|
|
}
|
|
e.bufStartTime = t
|
|
}
|
|
e.bufOffset = 0, e.bufsProcessed++
|
|
}
|
|
}
|
|
return r
|
|
},
|
|
cancelPendingSourceAudio: function(e) {
|
|
Re.updateSourceTime(e);
|
|
for (var r = 1; r < e.audioQueue.length; r++) {
|
|
e.audioQueue[r].stop()
|
|
}
|
|
e.audioQueue.length > 1 && (e.audioQueue.length = 1)
|
|
},
|
|
stopSourceAudio: function(e) {
|
|
for (var r = 0; r < e.audioQueue.length; r++) e.audioQueue[r].stop();
|
|
e.audioQueue.length = 0
|
|
},
|
|
setSourceState: function(e, r) {
|
|
4114 === r ? (4114 !== e.state && 4116 != e.state || (e.bufsProcessed = 0, e.bufOffset = 0), Re.stopSourceAudio(e), e.state = 4114, e.bufStartTime = Number.NEGATIVE_INFINITY, Re.scheduleSourceAudio(e)) : 4115 === r ? 4114 === e.state && (Re.updateSourceTime(e), Re.stopSourceAudio(e), e.state = 4115) : 4116 === r ? 4113 !== e.state && (e.state = 4116, e.bufsProcessed = e.bufQueue.length, e.bufStartTime = Number.NEGATIVE_INFINITY, e.bufOffset = 0, Re.stopSourceAudio(e)) : 4113 === r && 4113 !== e.state && (e.state = 4113, e.bufsProcessed = 0, e.bufStartTime = Number.NEGATIVE_INFINITY, e.bufOffset = 0, Re.stopSourceAudio(e))
|
|
},
|
|
initSourcePanner: function(e) {
|
|
if (4144 !== e.type) {
|
|
for (var r = Re.buffers[0], t = 0; t < e.bufQueue.length; t++)
|
|
if (0 !== e.bufQueue[t].id) {
|
|
r = e.bufQueue[t];
|
|
break
|
|
} if (1 === e.spatialize || 2 === e.spatialize && 1 === r.channels) {
|
|
if (e.panner) return;
|
|
e.panner = e.context.audioCtx.createPanner(), Re.updateSourceGlobal(e), Re.updateSourceSpace(e), e.panner.connect(e.context.gain), e.gain.disconnect(), e.gain.connect(e.panner)
|
|
} else {
|
|
if (!e.panner) return;
|
|
e.panner.disconnect(), e.gain.disconnect(), e.gain.connect(e.context.gain), e.panner = null
|
|
}
|
|
}
|
|
},
|
|
updateContextGlobal: function(e) {
|
|
for (var r in e.sources) Re.updateSourceGlobal(e.sources[r])
|
|
},
|
|
updateSourceGlobal: function(e) {
|
|
var r = e.panner;
|
|
if (r) switch (r.refDistance = e.refDistance, r.maxDistance = e.maxDistance, r.rolloffFactor = e.rolloffFactor, r.panningModel = e.context.hrtf ? "HRTF" : "equalpower", e.context.sourceDistanceModel ? e.distanceModel : e.context.distanceModel) {
|
|
case 0:
|
|
r.distanceModel = "inverse", r.refDistance = 340282e33;
|
|
break;
|
|
case 53249:
|
|
case 53250:
|
|
r.distanceModel = "inverse";
|
|
break;
|
|
case 53251:
|
|
case 53252:
|
|
r.distanceModel = "linear";
|
|
break;
|
|
case 53253:
|
|
case 53254:
|
|
r.distanceModel = "exponential"
|
|
}
|
|
},
|
|
updateListenerSpace: function(e) {
|
|
var r = e.audioCtx.listener;
|
|
for (var t in r.positionX ? (r.positionX.value = e.listener.position[0], r.positionY.value = e.listener.position[1], r.positionZ.value = e.listener.position[2]) : r.setPosition(e.listener.position[0], e.listener.position[1], e.listener.position[2]), r.forwardX ? (r.forwardX.value = e.listener.direction[0], r.forwardY.value = e.listener.direction[1], r.forwardZ.value = e.listener.direction[2], r.upX.value = e.listener.up[0], r.upY.value = e.listener.up[1], r.upZ.value = e.listener.up[2]) : r.setOrientation(e.listener.direction[0], e.listener.direction[1], e.listener.direction[2], e.listener.up[0], e.listener.up[1], e.listener.up[2]), e.sources) Re.updateSourceSpace(e.sources[t])
|
|
},
|
|
updateSourceSpace: function(e) {
|
|
if (e.panner) {
|
|
var r = e.panner,
|
|
t = e.position[0],
|
|
n = e.position[1],
|
|
i = e.position[2],
|
|
a = e.direction[0],
|
|
o = e.direction[1],
|
|
u = e.direction[2],
|
|
s = e.context.listener,
|
|
c = s.position[0],
|
|
l = s.position[1],
|
|
f = s.position[2];
|
|
if (e.relative) {
|
|
var d = -s.direction[0],
|
|
m = -s.direction[1],
|
|
p = -s.direction[2],
|
|
v = s.up[0],
|
|
g = s.up[1],
|
|
h = s.up[2],
|
|
_ = function(e, r, t) {
|
|
var n = Math.sqrt(e * e + r * r + t * t);
|
|
return n < Number.EPSILON ? 0 : 1 / n
|
|
},
|
|
b = _(d, m, p);
|
|
d *= b, m *= b, p *= b;
|
|
var y = (g *= b = _(v, g, h)) * p - (h *= b) * m,
|
|
w = h * d - (v *= b) * p,
|
|
E = v * m - g * d,
|
|
x = a,
|
|
k = o,
|
|
C = u;
|
|
a = x * (y *= b = _(y, w, E)) + k * (v = m * (E *= b) - p * (w *= b)) + C * d, o = x * w + k * (g = p * y - d * E) + C * m, u = x * E + k * (h = d * w - m * y) + C * p, t = (x = t) * y + (k = n) * v + (C = i) * d, n = x * w + k * g + C * m, i = x * E + k * h + C * p, t += c, n += l, i += f
|
|
}
|
|
r.positionX ? (r.positionX.value = t, r.positionY.value = n, r.positionZ.value = i) : r.setPosition(t, n, i), r.orientationX ? (r.orientationX.value = a, r.orientationY.value = o, r.orientationZ.value = u) : r.setOrientation(a, o, u);
|
|
var S = e.dopplerShift,
|
|
D = e.velocity[0],
|
|
F = e.velocity[1],
|
|
A = e.velocity[2],
|
|
P = s.velocity[0],
|
|
T = s.velocity[1],
|
|
L = s.velocity[2];
|
|
if (t === c && n === l && i === f || D === P && F === T && A === L) e.dopplerShift = 1;
|
|
else {
|
|
var I = e.context.speedOfSound,
|
|
B = e.context.dopplerFactor,
|
|
R = c - t,
|
|
M = l - n,
|
|
N = f - i,
|
|
U = Math.sqrt(R * R + M * M + N * N),
|
|
O = (R * P + M * T + N * L) / U,
|
|
G = (R * D + M * F + N * A) / U;
|
|
O = Math.min(O, I / B), G = Math.min(G, I / B), e.dopplerShift = (I - B * O) / (I - B * G)
|
|
}
|
|
e.dopplerShift !== S && Re.updateSourceRate(e)
|
|
}
|
|
},
|
|
updateSourceRate: function(e) {
|
|
if (4114 === e.state) {
|
|
Re.cancelPendingSourceAudio(e);
|
|
var r, t = e.audioQueue[0];
|
|
if (!t) return;
|
|
r = 4136 === e.type && e.looping ? Number.POSITIVE_INFINITY : (t.buffer.duration - t._startOffset) / e.playbackRate, t._duration = r, t.playbackRate.value = e.playbackRate, Re.scheduleSourceAudio(e)
|
|
}
|
|
},
|
|
sourceDuration: function(e) {
|
|
for (var r = 0, t = 0; t < e.bufQueue.length; t++) {
|
|
var n = e.bufQueue[t].audioBuf;
|
|
r += n ? n.duration : 0
|
|
}
|
|
return r
|
|
},
|
|
sourceTell: function(e) {
|
|
Re.updateSourceTime(e);
|
|
for (var r = 0, t = 0; t < e.bufsProcessed; t++) r += e.bufQueue[t].audioBuf.duration;
|
|
return r += e.bufOffset
|
|
},
|
|
sourceSeek: function(e, r) {
|
|
var t = 4114 == e.state;
|
|
if (t && Re.setSourceState(e, 4113), null !== e.bufQueue[e.bufsProcessed].audioBuf) {
|
|
for (e.bufsProcessed = 0; r > e.bufQueue[e.bufsProcessed].audioBuf.duration;) r -= e.bufQueue[e.bufsProcessed].audiobuf.duration, e.bufsProcessed++;
|
|
e.bufOffset = r
|
|
}
|
|
t && Re.setSourceState(e, 4114)
|
|
},
|
|
getGlobalParam: function(e, r) {
|
|
if (!Re.currentCtx) return null;
|
|
switch (r) {
|
|
case 49152:
|
|
return Re.currentCtx.dopplerFactor;
|
|
case 49155:
|
|
return Re.currentCtx.speedOfSound;
|
|
case 53248:
|
|
return Re.currentCtx.distanceModel;
|
|
default:
|
|
return Re.currentCtx.err = 40962, null
|
|
}
|
|
},
|
|
setGlobalParam: function(e, r, t) {
|
|
if (Re.currentCtx) switch (r) {
|
|
case 49152:
|
|
if (!Number.isFinite(t) || t < 0) return void(Re.currentCtx.err = 40963);
|
|
Re.currentCtx.dopplerFactor = t, Re.updateListenerSpace(Re.currentCtx);
|
|
break;
|
|
case 49155:
|
|
if (!Number.isFinite(t) || t <= 0) return void(Re.currentCtx.err = 40963);
|
|
Re.currentCtx.speedOfSound = t, Re.updateListenerSpace(Re.currentCtx);
|
|
break;
|
|
case 53248:
|
|
switch (t) {
|
|
case 0:
|
|
case 53249:
|
|
case 53250:
|
|
case 53251:
|
|
case 53252:
|
|
case 53253:
|
|
case 53254:
|
|
Re.currentCtx.distanceModel = t, Re.updateContextGlobal(Re.currentCtx);
|
|
break;
|
|
default:
|
|
return void(Re.currentCtx.err = 40963)
|
|
}
|
|
break;
|
|
default:
|
|
return void(Re.currentCtx.err = 40962)
|
|
}
|
|
},
|
|
getListenerParam: function(e, r) {
|
|
if (!Re.currentCtx) return null;
|
|
switch (r) {
|
|
case 4100:
|
|
return Re.currentCtx.listener.position;
|
|
case 4102:
|
|
return Re.currentCtx.listener.velocity;
|
|
case 4111:
|
|
return Re.currentCtx.listener.direction.concat(Re.currentCtx.listener.up);
|
|
case 4106:
|
|
return Re.currentCtx.gain.gain.value;
|
|
default:
|
|
return Re.currentCtx.err = 40962, null
|
|
}
|
|
},
|
|
setListenerParam: function(e, r, t) {
|
|
if (Re.currentCtx)
|
|
if (null !== t) {
|
|
var n = Re.currentCtx.listener;
|
|
switch (r) {
|
|
case 4100:
|
|
if (!Number.isFinite(t[0]) || !Number.isFinite(t[1]) || !Number.isFinite(t[2])) return void(Re.currentCtx.err = 40963);
|
|
n.position[0] = t[0], n.position[1] = t[1], n.position[2] = t[2], Re.updateListenerSpace(Re.currentCtx);
|
|
break;
|
|
case 4102:
|
|
if (!Number.isFinite(t[0]) || !Number.isFinite(t[1]) || !Number.isFinite(t[2])) return void(Re.currentCtx.err = 40963);
|
|
n.velocity[0] = t[0], n.velocity[1] = t[1], n.velocity[2] = t[2], Re.updateListenerSpace(Re.currentCtx);
|
|
break;
|
|
case 4106:
|
|
if (!Number.isFinite(t) || t < 0) return void(Re.currentCtx.err = 40963);
|
|
Re.currentCtx.gain.gain.value = t;
|
|
break;
|
|
case 4111:
|
|
if (!(Number.isFinite(t[0]) && Number.isFinite(t[1]) && Number.isFinite(t[2]) && Number.isFinite(t[3]) && Number.isFinite(t[4]) && Number.isFinite(t[5]))) return void(Re.currentCtx.err = 40963);
|
|
n.direction[0] = t[0], n.direction[1] = t[1], n.direction[2] = t[2], n.up[0] = t[3], n.up[1] = t[4], n.up[2] = t[5], Re.updateListenerSpace(Re.currentCtx);
|
|
break;
|
|
default:
|
|
return void(Re.currentCtx.err = 40962)
|
|
}
|
|
} else Re.currentCtx.err = 40962
|
|
},
|
|
getBufferParam: function(e, r, t) {
|
|
if (Re.currentCtx) {
|
|
var n = Re.buffers[r];
|
|
if (n && 0 !== r) switch (t) {
|
|
case 8193:
|
|
return n.frequency;
|
|
case 8194:
|
|
return 8 * n.bytesPerSample;
|
|
case 8195:
|
|
return n.channels;
|
|
case 8196:
|
|
return n.length * n.bytesPerSample * n.channels;
|
|
case 8213:
|
|
return 0 === n.length ? [0, 0] : [(n.audioBuf._loopStart || 0) * n.frequency, (n.audioBuf._loopEnd || n.length) * n.frequency];
|
|
default:
|
|
return Re.currentCtx.err = 40962, null
|
|
} else Re.currentCtx.err = 40961
|
|
}
|
|
},
|
|
setBufferParam: function(e, r, t, n) {
|
|
if (Re.currentCtx) {
|
|
var i = Re.buffers[r];
|
|
if (i && 0 !== r)
|
|
if (null !== n) switch (t) {
|
|
case 8196:
|
|
if (0 !== n) return void(Re.currentCtx.err = 40963);
|
|
break;
|
|
case 8213:
|
|
if (n[0] < 0 || n[0] > i.length || n[1] < 0 || n[1] > i.Length || n[0] >= n[1]) return void(Re.currentCtx.err = 40963);
|
|
if (i.refCount > 0) return void(Re.currentCtx.err = 40964);
|
|
i.audioBuf && (i.audioBuf._loopStart = n[0] / i.frequency, i.audioBuf._loopEnd = n[1] / i.frequency);
|
|
break;
|
|
default:
|
|
return void(Re.currentCtx.err = 40962)
|
|
} else Re.currentCtx.err = 40962;
|
|
else Re.currentCtx.err = 40961
|
|
}
|
|
},
|
|
getSourceParam: function(e, r, t) {
|
|
if (!Re.currentCtx) return null;
|
|
var n = Re.currentCtx.sources[r];
|
|
if (!n) return Re.currentCtx.err = 40961, null;
|
|
switch (t) {
|
|
case 514:
|
|
return n.relative;
|
|
case 4097:
|
|
return n.coneInnerAngle;
|
|
case 4098:
|
|
return n.coneOuterAngle;
|
|
case 4099:
|
|
return n.pitch;
|
|
case 4100:
|
|
return n.position;
|
|
case 4101:
|
|
return n.direction;
|
|
case 4102:
|
|
return n.velocity;
|
|
case 4103:
|
|
return n.looping;
|
|
case 4105:
|
|
return 4136 === n.type ? n.bufQueue[0].id : 0;
|
|
case 4106:
|
|
return n.gain.gain.value;
|
|
case 4109:
|
|
return n.minGain;
|
|
case 4110:
|
|
return n.maxGain;
|
|
case 4112:
|
|
return n.state;
|
|
case 4117:
|
|
return 1 === n.bufQueue.length && 0 === n.bufQueue[0].id ? 0 : n.bufQueue.length;
|
|
case 4118:
|
|
return 1 === n.bufQueue.length && 0 === n.bufQueue[0].id || n.looping ? 0 : n.bufsProcessed;
|
|
case 4128:
|
|
return n.refDistance;
|
|
case 4129:
|
|
return n.rolloffFactor;
|
|
case 4130:
|
|
return n.coneOuterGain;
|
|
case 4131:
|
|
return n.maxDistance;
|
|
case 4132:
|
|
return Re.sourceTell(n);
|
|
case 4133:
|
|
return (i = Re.sourceTell(n)) > 0 && (i *= n.bufQueue[0].frequency), i;
|
|
case 4134:
|
|
var i;
|
|
return (i = Re.sourceTell(n)) > 0 && (i *= n.bufQueue[0].frequency * n.bufQueue[0].bytesPerSample), i;
|
|
case 4135:
|
|
return n.type;
|
|
case 4628:
|
|
return n.spatialize;
|
|
case 8201:
|
|
for (var a = 0, o = 0, u = 0; u < n.bufQueue.length; u++) a += n.bufQueue[u].length, 0 !== n.bufQueue[u].id && (o = n.bufQueue[u].bytesPerSample * n.bufQueue[u].channels);
|
|
return a * o;
|
|
case 8202:
|
|
for (a = 0, u = 0; u < n.bufQueue.length; u++) a += n.bufQueue[u].length;
|
|
return a;
|
|
case 8203:
|
|
return Re.sourceDuration(n);
|
|
case 53248:
|
|
return n.distanceModel;
|
|
default:
|
|
return Re.currentCtx.err = 40962, null
|
|
}
|
|
},
|
|
setSourceParam: function(e, r, t, n) {
|
|
if (Re.currentCtx) {
|
|
var i = Re.currentCtx.sources[r];
|
|
if (i)
|
|
if (null !== n) switch (t) {
|
|
case 514:
|
|
if (1 === n) i.relative = !0, Re.updateSourceSpace(i);
|
|
else {
|
|
if (0 !== n) return void(Re.currentCtx.err = 40963);
|
|
i.relative = !1, Re.updateSourceSpace(i)
|
|
}
|
|
break;
|
|
case 4097:
|
|
if (!Number.isFinite(n)) return void(Re.currentCtx.err = 40963);
|
|
i.coneInnerAngle = n, i.panner && (i.panner.coneInnerAngle = n % 360);
|
|
break;
|
|
case 4098:
|
|
if (!Number.isFinite(n)) return void(Re.currentCtx.err = 40963);
|
|
i.coneOuterAngle = n, i.panner && (i.panner.coneOuterAngle = n % 360);
|
|
break;
|
|
case 4099:
|
|
if (!Number.isFinite(n) || n <= 0) return void(Re.currentCtx.err = 40963);
|
|
if (i.pitch === n) break;
|
|
i.pitch = n, Re.updateSourceRate(i);
|
|
break;
|
|
case 4100:
|
|
if (!Number.isFinite(n[0]) || !Number.isFinite(n[1]) || !Number.isFinite(n[2])) return void(Re.currentCtx.err = 40963);
|
|
i.position[0] = n[0], i.position[1] = n[1], i.position[2] = n[2], Re.updateSourceSpace(i);
|
|
break;
|
|
case 4101:
|
|
if (!Number.isFinite(n[0]) || !Number.isFinite(n[1]) || !Number.isFinite(n[2])) return void(Re.currentCtx.err = 40963);
|
|
i.direction[0] = n[0], i.direction[1] = n[1], i.direction[2] = n[2], Re.updateSourceSpace(i);
|
|
break;
|
|
case 4102:
|
|
if (!Number.isFinite(n[0]) || !Number.isFinite(n[1]) || !Number.isFinite(n[2])) return void(Re.currentCtx.err = 40963);
|
|
i.velocity[0] = n[0], i.velocity[1] = n[1], i.velocity[2] = n[2], Re.updateSourceSpace(i);
|
|
break;
|
|
case 4103:
|
|
if (1 === n) {
|
|
if (i.looping = !0, Re.updateSourceTime(i), 4136 === i.type && i.audioQueue.length > 0)(a = i.audioQueue[0]).loop = !0, a._duration = Number.POSITIVE_INFINITY
|
|
} else {
|
|
if (0 !== n) return void(Re.currentCtx.err = 40963);
|
|
i.looping = !1;
|
|
var a, o = Re.updateSourceTime(i);
|
|
4136 === i.type && i.audioQueue.length > 0 && ((a = i.audioQueue[0]).loop = !1, a._duration = i.bufQueue[0].audioBuf.duration / i.playbackRate, a._startTime = o - i.bufOffset / i.playbackRate)
|
|
}
|
|
break;
|
|
case 4105:
|
|
if (4114 === i.state || 4115 === i.state) return void(Re.currentCtx.err = 40964);
|
|
if (0 === n) {
|
|
for (var u = 0; u < i.bufQueue.length; u++) i.bufQueue[u].refCount--;
|
|
i.bufQueue.length = 1, i.bufQueue[0] = Re.buffers[0], i.bufsProcessed = 0, i.type = 4144
|
|
} else {
|
|
if (!(d = Re.buffers[n])) return void(Re.currentCtx.err = 40963);
|
|
for (u = 0; u < i.bufQueue.length; u++) i.bufQueue[u].refCount--;
|
|
i.bufQueue.length = 0, d.refCount++, i.bufQueue = [d], i.bufsProcessed = 0, i.type = 4136
|
|
}
|
|
Re.initSourcePanner(i), Re.scheduleSourceAudio(i);
|
|
break;
|
|
case 4106:
|
|
if (!Number.isFinite(n) || n < 0) return void(Re.currentCtx.err = 40963);
|
|
i.gain.gain.value = n;
|
|
break;
|
|
case 4109:
|
|
if (!Number.isFinite(n) || n < 0 || n > Math.min(i.maxGain, 1)) return void(Re.currentCtx.err = 40963);
|
|
i.minGain = n;
|
|
break;
|
|
case 4110:
|
|
if (!Number.isFinite(n) || n < Math.max(0, i.minGain) || n > 1) return void(Re.currentCtx.err = 40963);
|
|
i.maxGain = n;
|
|
break;
|
|
case 4128:
|
|
if (!Number.isFinite(n) || n < 0) return void(Re.currentCtx.err = 40963);
|
|
i.refDistance = n, i.panner && (i.panner.refDistance = n);
|
|
break;
|
|
case 4129:
|
|
if (!Number.isFinite(n) || n < 0) return void(Re.currentCtx.err = 40963);
|
|
i.rolloffFactor = n, i.panner && (i.panner.rolloffFactor = n);
|
|
break;
|
|
case 4130:
|
|
if (!Number.isFinite(n) || n < 0 || n > 1) return void(Re.currentCtx.err = 40963);
|
|
i.coneOuterGain = n, i.panner && (i.panner.coneOuterGain = n);
|
|
break;
|
|
case 4131:
|
|
if (!Number.isFinite(n) || n < 0) return void(Re.currentCtx.err = 40963);
|
|
i.maxDistance = n, i.panner && (i.panner.maxDistance = n);
|
|
break;
|
|
case 4132:
|
|
if (n < 0 || n > Re.sourceDuration(i)) return void(Re.currentCtx.err = 40963);
|
|
Re.sourceSeek(i, n);
|
|
break;
|
|
case 4133:
|
|
if ((l = Re.sourceDuration(i)) > 0) {
|
|
var s;
|
|
for (var c in i.bufQueue)
|
|
if (c) {
|
|
s = i.bufQueue[c].frequency;
|
|
break
|
|
} n /= s
|
|
}
|
|
if (n < 0 || n > l) return void(Re.currentCtx.err = 40963);
|
|
Re.sourceSeek(i, n);
|
|
break;
|
|
case 4134:
|
|
var l;
|
|
if ((l = Re.sourceDuration(i)) > 0) {
|
|
var f;
|
|
for (var c in i.bufQueue)
|
|
if (c) {
|
|
var d;
|
|
f = (d = i.bufQueue[c]).frequency * d.bytesPerSample * d.channels;
|
|
break
|
|
} n /= f
|
|
}
|
|
if (n < 0 || n > l) return void(Re.currentCtx.err = 40963);
|
|
Re.sourceSeek(i, n);
|
|
break;
|
|
case 4628:
|
|
if (0 !== n && 1 !== n && 2 !== n) return void(Re.currentCtx.err = 40963);
|
|
i.spatialize = n, Re.initSourcePanner(i);
|
|
break;
|
|
case 8201:
|
|
case 8202:
|
|
case 8203:
|
|
Re.currentCtx.err = 40964;
|
|
break;
|
|
case 53248:
|
|
switch (n) {
|
|
case 0:
|
|
case 53249:
|
|
case 53250:
|
|
case 53251:
|
|
case 53252:
|
|
case 53253:
|
|
case 53254:
|
|
i.distanceModel = n, Re.currentCtx.sourceDistanceModel && Re.updateContextGlobal(Re.currentCtx);
|
|
break;
|
|
default:
|
|
return void(Re.currentCtx.err = 40963)
|
|
}
|
|
break;
|
|
default:
|
|
return void(Re.currentCtx.err = 40962)
|
|
} else Re.currentCtx.err = 40962;
|
|
else Re.currentCtx.err = 40961
|
|
}
|
|
},
|
|
captures: {},
|
|
sharedCaptureAudioCtx: null,
|
|
requireValidCaptureDevice: function(e, r) {
|
|
if (0 === e) return Re.alcErr = 40961, null;
|
|
var t = Re.captures[e];
|
|
return t ? t.mediaStreamError ? (Re.alcErr = 40961, null) : t : (Re.alcErr = 40961, null)
|
|
}
|
|
};
|
|
|
|
function Me(e, r, t) {
|
|
switch (r) {
|
|
case 514:
|
|
case 4097:
|
|
case 4098:
|
|
case 4103:
|
|
case 4105:
|
|
case 4128:
|
|
case 4129:
|
|
case 4131:
|
|
case 4132:
|
|
case 4133:
|
|
case 4134:
|
|
case 4628:
|
|
case 8201:
|
|
case 8202:
|
|
case 53248:
|
|
Re.setSourceParam("alSourcei", e, r, t);
|
|
break;
|
|
default:
|
|
Re.setSourceParam("alSourcei", e, r, null)
|
|
}
|
|
}
|
|
var Ne = {
|
|
errorCode: 12288,
|
|
defaultDisplayInitialized: !1,
|
|
currentContext: 0,
|
|
currentReadSurface: 0,
|
|
currentDrawSurface: 0,
|
|
contextAttributes: {
|
|
alpha: !1,
|
|
depth: !1,
|
|
stencil: !1,
|
|
antialias: !1
|
|
},
|
|
stringCache: {},
|
|
setErrorCode: function(e) {
|
|
Ne.errorCode = e
|
|
},
|
|
chooseConfig: function(e, r, t, n, i) {
|
|
if (62e3 != e) return Ne.setErrorCode(12296), 0;
|
|
if (r)
|
|
for (;;) {
|
|
var a = q[r >> 2];
|
|
if (12321 == a) {
|
|
var o = q[r + 4 >> 2];
|
|
Ne.contextAttributes.alpha = o > 0
|
|
} else if (12325 == a) {
|
|
var u = q[r + 4 >> 2];
|
|
Ne.contextAttributes.depth = u > 0
|
|
} else if (12326 == a) {
|
|
var s = q[r + 4 >> 2];
|
|
Ne.contextAttributes.stencil = s > 0
|
|
} else if (12337 == a) {
|
|
var c = q[r + 4 >> 2];
|
|
Ne.contextAttributes.antialias = c > 0
|
|
} else if (12338 == a) {
|
|
c = q[r + 4 >> 2];
|
|
Ne.contextAttributes.antialias = 1 == c
|
|
} else if (12544 == a) {
|
|
var l = q[r + 4 >> 2];
|
|
Ne.contextAttributes.lowLatency = 12547 != l
|
|
} else if (12344 == a) break;
|
|
r += 8
|
|
}
|
|
return t && n || i ? (i && (q[i >> 2] = 1), t && n > 0 && (q[t >> 2] = 62002), Ne.setErrorCode(12288), 1) : (Ne.setErrorCode(12300), 0)
|
|
}
|
|
};
|
|
var Ue = {
|
|
counter: 1,
|
|
lastError: 0,
|
|
buffers: [],
|
|
mappedBuffers: {},
|
|
programs: [],
|
|
framebuffers: [],
|
|
renderbuffers: [],
|
|
textures: [],
|
|
uniforms: [],
|
|
shaders: [],
|
|
vaos: [],
|
|
contexts: [],
|
|
currentContext: null,
|
|
offscreenCanvases: {},
|
|
timerQueriesEXT: [],
|
|
queries: [],
|
|
samplers: [],
|
|
transformFeedbacks: [],
|
|
syncs: [],
|
|
programInfos: {},
|
|
stringCache: {},
|
|
stringiCache: {},
|
|
unpackAlignment: 4,
|
|
init: function() {
|
|
for (var e = new Float32Array(Ue.MINI_TEMP_BUFFER_SIZE), r = 0; r < Ue.MINI_TEMP_BUFFER_SIZE; r++) Ue.miniTempBufferFloatViews[r] = e.subarray(0, r + 1);
|
|
var t = new Int32Array(Ue.MINI_TEMP_BUFFER_SIZE);
|
|
for (r = 0; r < Ue.MINI_TEMP_BUFFER_SIZE; r++) Ue.miniTempBufferIntViews[r] = t.subarray(0, r + 1)
|
|
},
|
|
recordError: function(e) {
|
|
Ue.lastError || (Ue.lastError = e)
|
|
},
|
|
getNewId: function(e) {
|
|
for (var r = Ue.counter++, t = e.length; t < r; t++) e[t] = null;
|
|
return r
|
|
},
|
|
MINI_TEMP_BUFFER_SIZE: 256,
|
|
miniTempBufferFloatViews: [0],
|
|
miniTempBufferIntViews: [0],
|
|
getSource: function(e, r, t, n) {
|
|
for (var i = "", a = 0; a < r; ++a) {
|
|
var o = n ? q[n + 4 * a >> 2] : -1;
|
|
i += L(q[t + 4 * a >> 2], o < 0 ? void 0 : o)
|
|
}
|
|
return i
|
|
},
|
|
createContext: function(e, r) {
|
|
var t = r.majorVersion > 1 ? e.getContext("webgl2", r) : e.getContext("webgl", r);
|
|
return t ? Ue.registerContext(t, r) : 0
|
|
},
|
|
registerContext: function(e, r) {
|
|
var t = Ue.getNewId(Ue.contexts),
|
|
n = {
|
|
handle: t,
|
|
attributes: r,
|
|
version: r.majorVersion,
|
|
GLctx: e
|
|
};
|
|
return e.canvas && (e.canvas.GLctxObject = n), Ue.contexts[t] = n, (void 0 === r.enableExtensionsByDefault || r.enableExtensionsByDefault) && Ue.initExtensions(n), t
|
|
},
|
|
makeContextCurrent: function(e) {
|
|
return Ue.currentContext = Ue.contexts[e], r.ctx = Or = Ue.currentContext && Ue.currentContext.GLctx, !(e && !Or)
|
|
},
|
|
getContext: function(e) {
|
|
return Ue.contexts[e]
|
|
},
|
|
deleteContext: function(e) {
|
|
Ue.currentContext === Ue.contexts[e] && (Ue.currentContext = null), "object" == typeof Oe && Oe.removeAllHandlersOnTarget(Ue.contexts[e].GLctx.canvas), Ue.contexts[e] && Ue.contexts[e].GLctx.canvas && (Ue.contexts[e].GLctx.canvas.GLctxObject = void 0), Ue.contexts[e] = null
|
|
},
|
|
initExtensions: function(e) {
|
|
if (e || (e = Ue.currentContext), !e.initExtensionsDone) {
|
|
e.initExtensionsDone = !0;
|
|
var r, t = e.GLctx;
|
|
(r = t).dibvbi = r.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"), t.disjointTimerQueryExt = t.getExtension("EXT_disjoint_timer_query");
|
|
var n = ["OES_texture_float", "OES_texture_half_float", "OES_standard_derivatives", "OES_vertex_array_object", "WEBGL_compressed_texture_s3tc", "WEBGL_depth_texture", "OES_element_index_uint", "EXT_texture_filter_anisotropic", "EXT_frag_depth", "WEBGL_draw_buffers", "ANGLE_instanced_arrays", "OES_texture_float_linear", "OES_texture_half_float_linear", "EXT_blend_minmax", "EXT_shader_texture_lod", "EXT_texture_norm16", "WEBGL_compressed_texture_pvrtc", "EXT_color_buffer_half_float", "WEBGL_color_buffer_float", "EXT_sRGB", "WEBGL_compressed_texture_etc1", "EXT_disjoint_timer_query", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_astc", "EXT_color_buffer_float", "WEBGL_compressed_texture_s3tc_srgb", "EXT_disjoint_timer_query_webgl2", "WEBKIT_WEBGL_compressed_texture_pvrtc"];
|
|
(t.getSupportedExtensions() || []).forEach((function(e) {
|
|
-1 != n.indexOf(e) && t.getExtension(e)
|
|
}))
|
|
}
|
|
},
|
|
populateUniformTable: function(e) {
|
|
for (var r = Ue.programs[e], t = Ue.programInfos[e] = {
|
|
uniforms: {},
|
|
maxUniformLength: 0,
|
|
maxAttributeLength: -1,
|
|
maxUniformBlockNameLength: -1
|
|
}, n = t.uniforms, i = Or.getProgramParameter(r, 35718), a = 0; a < i; ++a) {
|
|
var o = Or.getActiveUniform(r, a),
|
|
u = o.name;
|
|
t.maxUniformLength = Math.max(t.maxUniformLength, u.length + 1), "]" == u.slice(-1) && (u = u.slice(0, u.lastIndexOf("[")));
|
|
var s = Or.getUniformLocation(r, u);
|
|
if (s) {
|
|
var c = Ue.getNewId(Ue.uniforms);
|
|
n[u] = [o.size, c], Ue.uniforms[c] = s;
|
|
for (var l = 1; l < o.size; ++l) {
|
|
var f = u + "[" + l + "]";
|
|
s = Or.getUniformLocation(r, f), c = Ue.getNewId(Ue.uniforms), Ue.uniforms[c] = s
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
var Oe = {
|
|
keyEvent: 0,
|
|
mouseEvent: 0,
|
|
wheelEvent: 0,
|
|
uiEvent: 0,
|
|
focusEvent: 0,
|
|
deviceOrientationEvent: 0,
|
|
deviceMotionEvent: 0,
|
|
fullscreenChangeEvent: 0,
|
|
pointerlockChangeEvent: 0,
|
|
visibilityChangeEvent: 0,
|
|
touchEvent: 0,
|
|
previousFullscreenElement: null,
|
|
previousScreenX: null,
|
|
previousScreenY: null,
|
|
removeEventListenersRegistered: !1,
|
|
removeAllEventListeners: function() {
|
|
for (var e = Oe.eventHandlers.length - 1; e >= 0; --e) Oe._removeHandler(e);
|
|
Oe.eventHandlers = [], Oe.deferredCalls = []
|
|
},
|
|
registerRemoveEventListeners: function() {
|
|
Oe.removeEventListenersRegistered || (ee.push(Oe.removeAllEventListeners), Oe.removeEventListenersRegistered = !0)
|
|
},
|
|
deferredCalls: [],
|
|
deferCall: function(e, r, t) {
|
|
function n(e, r) {
|
|
if (e.length != r.length) return !1;
|
|
for (var t in e)
|
|
if (e[t] != r[t]) return !1;
|
|
return !0
|
|
}
|
|
for (var i in Oe.deferredCalls) {
|
|
var a = Oe.deferredCalls[i];
|
|
if (a.targetFunction == e && n(a.argsList, t)) return
|
|
}
|
|
Oe.deferredCalls.push({
|
|
targetFunction: e,
|
|
precedence: r,
|
|
argsList: t
|
|
}), Oe.deferredCalls.sort((function(e, r) {
|
|
return e.precedence < r.precedence
|
|
}))
|
|
},
|
|
removeDeferredCalls: function(e) {
|
|
for (var r = 0; r < Oe.deferredCalls.length; ++r) Oe.deferredCalls[r].targetFunction == e && (Oe.deferredCalls.splice(r, 1), --r)
|
|
},
|
|
canPerformEventHandlerRequests: function() {
|
|
return Oe.inEventHandler && Oe.currentEventHandler.allowsDeferredCalls
|
|
},
|
|
runDeferredCalls: function() {
|
|
if (Oe.canPerformEventHandlerRequests())
|
|
for (var e = 0; e < Oe.deferredCalls.length; ++e) {
|
|
var r = Oe.deferredCalls[e];
|
|
Oe.deferredCalls.splice(e, 1), --e, r.targetFunction.apply(null, r.argsList)
|
|
}
|
|
},
|
|
inEventHandler: 0,
|
|
currentEventHandler: null,
|
|
eventHandlers: [],
|
|
removeAllHandlersOnTarget: function(e, r) {
|
|
for (var t = 0; t < Oe.eventHandlers.length; ++t) Oe.eventHandlers[t].target != e || r && r != Oe.eventHandlers[t].eventTypeString || Oe._removeHandler(t--)
|
|
},
|
|
_removeHandler: function(e) {
|
|
var r = Oe.eventHandlers[e];
|
|
r.target.removeEventListener(r.eventTypeString, r.eventListenerFunc, r.useCapture), Oe.eventHandlers.splice(e, 1)
|
|
},
|
|
registerOrRemoveHandler: function(e) {
|
|
var r = function(r) {
|
|
++Oe.inEventHandler, Oe.currentEventHandler = e, Oe.runDeferredCalls(), e.handlerFunc(r), Oe.runDeferredCalls(), --Oe.inEventHandler
|
|
};
|
|
if (e.callbackfunc) e.eventListenerFunc = r, e.target.addEventListener(e.eventTypeString, r, e.useCapture), Oe.eventHandlers.push(e), Oe.registerRemoveEventListeners();
|
|
else
|
|
for (var t = 0; t < Oe.eventHandlers.length; ++t) Oe.eventHandlers[t].target == e.target && Oe.eventHandlers[t].eventTypeString == e.eventTypeString && Oe._removeHandler(t--)
|
|
},
|
|
getNodeNameForTarget: function(e) {
|
|
return e ? e == window ? "#window" : e == screen ? "#screen" : e && e.nodeName ? e.nodeName : "" : ""
|
|
},
|
|
fullscreenEnabled: function() {
|
|
return document.fullscreenEnabled || document.webkitFullscreenEnabled
|
|
}
|
|
},
|
|
Ge = {};
|
|
var je = [0, document, window];
|
|
|
|
function ze(e) {
|
|
var r;
|
|
return e = (r = e) > 2 ? L(r) : r, je[e] || document.querySelector(e)
|
|
}
|
|
|
|
function qe(e) {
|
|
return ze(e)
|
|
}
|
|
|
|
function Qe(e, r, t) {
|
|
var n = qe(e);
|
|
if (!n) return -4;
|
|
q[r >> 2] = n.width, q[t >> 2] = n.height
|
|
}
|
|
|
|
function Ve(e) {
|
|
var r = yt(),
|
|
t = wt(8),
|
|
n = t + 4,
|
|
i = wt(e.id.length + 1);
|
|
B(e.id, i, e.id.length + 1);
|
|
Qe(i, t, n);
|
|
var a = [q[t >> 2], q[n >> 2]];
|
|
return Et(r), a
|
|
}
|
|
|
|
function Xe(e, r, t) {
|
|
var n = qe(e);
|
|
return n ? (n.width = r, n.height = t, 0) : -4
|
|
}
|
|
|
|
function He(e, r, t) {
|
|
if (e.controlTransferredOffscreen) {
|
|
var n = yt(),
|
|
i = wt(e.id.length + 1);
|
|
B(e.id, i, e.id.length + 1), Xe(i, r, t), Et(n)
|
|
} else e.width = r, e.height = t
|
|
}
|
|
|
|
function We(e, r, t) {
|
|
e.style.paddingLeft = e.style.paddingRight = t + "px", e.style.paddingTop = e.style.paddingBottom = r + "px"
|
|
}
|
|
|
|
function Ye(e) {
|
|
return je.indexOf(e) < 0 ? e.getBoundingClientRect() : {
|
|
left: 0,
|
|
top: 0
|
|
}
|
|
}
|
|
|
|
function Ze(e, r) {
|
|
var t = function(e) {
|
|
var r = Ve(e),
|
|
t = r[0],
|
|
n = r[1],
|
|
i = e.style.width,
|
|
a = e.style.height,
|
|
o = e.style.backgroundColor,
|
|
u = document.body.style.backgroundColor,
|
|
s = e.style.paddingLeft,
|
|
c = e.style.paddingRight,
|
|
l = e.style.paddingTop,
|
|
f = e.style.paddingBottom,
|
|
d = e.style.marginLeft,
|
|
m = e.style.marginRight,
|
|
p = e.style.marginTop,
|
|
v = e.style.marginBottom,
|
|
g = document.body.style.margin,
|
|
h = document.documentElement.style.overflow,
|
|
_ = document.body.scroll,
|
|
b = e.style.imageRendering;
|
|
|
|
function y() {
|
|
document.fullscreenElement || document.webkitFullscreenElement || document.msFullscreenElement || (document.removeEventListener("fullscreenchange", y), document.removeEventListener("webkitfullscreenchange", y), He(e, t, n), e.style.width = i, e.style.height = a, e.style.backgroundColor = o, u || (document.body.style.backgroundColor = "white"), document.body.style.backgroundColor = u, e.style.paddingLeft = s, e.style.paddingRight = c, e.style.paddingTop = l, e.style.paddingBottom = f, e.style.marginLeft = d, e.style.marginRight = m, e.style.marginTop = p, e.style.marginBottom = v, document.body.style.margin = g, document.documentElement.style.overflow = h, document.body.scroll = _, e.style.imageRendering = b, e.GLctxObject && e.GLctxObject.GLctx.viewport(0, 0, t, n), Ge.canvasResizedCallback && mt(Ge.canvasResizedCallback, 37, 0, Ge.canvasResizedCallbackUserData))
|
|
}
|
|
return document.addEventListener("fullscreenchange", y), document.addEventListener("webkitfullscreenchange", y), y
|
|
}(e),
|
|
n = r.softFullscreen ? innerWidth : screen.width,
|
|
i = r.softFullscreen ? innerHeight : screen.height,
|
|
a = Ye(e),
|
|
o = a.width,
|
|
u = a.height,
|
|
s = Ve(e),
|
|
c = s[0],
|
|
l = s[1];
|
|
if (3 == r.scaleMode) We(e, (i - u) / 2, (n - o) / 2), n = o, i = u;
|
|
else if (2 == r.scaleMode)
|
|
if (n * l < c * i) {
|
|
var f = l * n / c;
|
|
We(e, (i - f) / 2, 0), i = f
|
|
} else {
|
|
var d = c * i / l;
|
|
We(e, 0, (n - d) / 2), n = d
|
|
} e.style.backgroundColor || (e.style.backgroundColor = "black"), document.body.style.backgroundColor || (document.body.style.backgroundColor = "black"), e.style.width = n + "px", e.style.height = i + "px", 1 == r.filteringMode && (e.style.imageRendering = "optimizeSpeed", e.style.imageRendering = "-moz-crisp-edges", e.style.imageRendering = "-o-crisp-edges", e.style.imageRendering = "-webkit-optimize-contrast", e.style.imageRendering = "optimize-contrast", e.style.imageRendering = "crisp-edges", e.style.imageRendering = "pixelated");
|
|
var m = 2 == r.canvasResolutionScaleMode ? devicePixelRatio : 1;
|
|
if (0 != r.canvasResolutionScaleMode) {
|
|
var p = n * m | 0,
|
|
v = i * m | 0;
|
|
He(e, p, v), e.GLctxObject && e.GLctxObject.GLctx.viewport(0, 0, p, v)
|
|
}
|
|
return t
|
|
}
|
|
|
|
function Ke(e, r) {
|
|
if (0 == r.scaleMode && 0 == r.canvasResolutionScaleMode || Ze(e, r), e.requestFullscreen) e.requestFullscreen();
|
|
else {
|
|
if (!e.webkitRequestFullscreen) return Oe.fullscreenEnabled() ? -3 : -1;
|
|
e.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)
|
|
}
|
|
return Ge = r, r.canvasResizedCallback && mt(r.canvasResizedCallback, 37, 0, r.canvasResizedCallbackUserData), 0
|
|
}
|
|
|
|
function $e(e) {
|
|
if (e.requestPointerLock) e.requestPointerLock();
|
|
else {
|
|
if (!e.msRequestPointerLock) return document.body.requestPointerLock || document.body.msRequestPointerLock ? -3 : -1;
|
|
e.msRequestPointerLock()
|
|
}
|
|
return 0
|
|
}
|
|
|
|
function Je(e) {
|
|
var r = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement,
|
|
t = !!r;
|
|
q[e >> 2] = t, q[e + 4 >> 2] = Oe.fullscreenEnabled();
|
|
var n = t ? r : Oe.previousFullscreenElement,
|
|
i = Oe.getNodeNameForTarget(n),
|
|
a = n && n.id ? n.id : "";
|
|
B(i, e + 8, 128), B(a, e + 136, 128), q[e + 264 >> 2] = n ? n.clientWidth : 0, q[e + 268 >> 2] = n ? n.clientHeight : 0, q[e + 272 >> 2] = screen.width, q[e + 276 >> 2] = screen.height, t && (Oe.previousFullscreenElement = r)
|
|
}
|
|
|
|
function er(e, r) {
|
|
X[e >> 3] = r.timestamp;
|
|
for (var t = 0; t < r.axes.length; ++t) X[e + 8 * t + 16 >> 3] = r.axes[t];
|
|
for (t = 0; t < r.buttons.length; ++t) "object" == typeof r.buttons[t] ? X[e + 8 * t + 528 >> 3] = r.buttons[t].value : X[e + 8 * t + 528 >> 3] = r.buttons[t];
|
|
for (t = 0; t < r.buttons.length; ++t) "object" == typeof r.buttons[t] ? q[e + 4 * t + 1040 >> 2] = r.buttons[t].pressed : q[e + 4 * t + 1040 >> 2] = 1 == r.buttons[t];
|
|
q[e + 1296 >> 2] = r.connected, q[e + 1300 >> 2] = r.index, q[e + 8 >> 2] = r.axes.length, q[e + 12 >> 2] = r.buttons.length, B(r.id, e + 1304, 64), B(r.mapping, e + 1368, 64)
|
|
}
|
|
|
|
function rr(e, r) {
|
|
return (e >>> 0) + 4294967296 * r
|
|
}
|
|
var tr = [];
|
|
|
|
function nr(e, r, t, n) {
|
|
Or.drawElements(e, r, t, n)
|
|
}
|
|
|
|
function ir(e, r, t, n) {
|
|
for (var i = 0; i < e; i++) {
|
|
var a = Or[t](),
|
|
o = a && Ue.getNewId(n);
|
|
a ? (a.name = o, n[o] = a) : Ue.recordError(1282), q[r + 4 * i >> 2] = o
|
|
}
|
|
}
|
|
|
|
function ar(e, r) {
|
|
Q[e >> 2] = r, Q[e + 4 >> 2] = (r - Q[e >> 2]) / 4294967296
|
|
}
|
|
|
|
function or(e, r, t) {
|
|
if (r) {
|
|
var n = void 0;
|
|
switch (e) {
|
|
case 36346:
|
|
n = 1;
|
|
break;
|
|
case 36344:
|
|
return void(0 != t && 1 != t && Ue.recordError(1280));
|
|
case 34814:
|
|
case 36345:
|
|
n = 0;
|
|
break;
|
|
case 34466:
|
|
var i = Or.getParameter(34467);
|
|
n = i ? i.length : 0;
|
|
break;
|
|
case 33309:
|
|
if (Ue.currentContext.version < 2) return void Ue.recordError(1282);
|
|
n = 2 * (Or.getSupportedExtensions() || []).length;
|
|
break;
|
|
case 33307:
|
|
case 33308:
|
|
if (Ue.currentContext.version < 2) return void Ue.recordError(1280);
|
|
n = 33307 == e ? 3 : 0
|
|
}
|
|
if (void 0 === n) {
|
|
var a = Or.getParameter(e);
|
|
switch (typeof a) {
|
|
case "number":
|
|
n = a;
|
|
break;
|
|
case "boolean":
|
|
n = a ? 1 : 0;
|
|
break;
|
|
case "string":
|
|
return void Ue.recordError(1280);
|
|
case "object":
|
|
if (null === a) switch (e) {
|
|
case 34964:
|
|
case 35725:
|
|
case 34965:
|
|
case 36006:
|
|
case 36007:
|
|
case 32873:
|
|
case 34229:
|
|
case 36662:
|
|
case 36663:
|
|
case 35053:
|
|
case 35055:
|
|
case 36010:
|
|
case 35097:
|
|
case 35869:
|
|
case 32874:
|
|
case 36389:
|
|
case 35983:
|
|
case 35368:
|
|
case 34068:
|
|
n = 0;
|
|
break;
|
|
default:
|
|
return void Ue.recordError(1280)
|
|
} else {
|
|
if (a instanceof Float32Array || a instanceof Uint32Array || a instanceof Int32Array || a instanceof Array) {
|
|
for (var o = 0; o < a.length; ++o) switch (t) {
|
|
case 0:
|
|
q[r + 4 * o >> 2] = a[o];
|
|
break;
|
|
case 2:
|
|
V[r + 4 * o >> 2] = a[o];
|
|
break;
|
|
case 4:
|
|
O[r + o >> 0] = a[o] ? 1 : 0
|
|
}
|
|
return
|
|
}
|
|
try {
|
|
n = 0 | a.name
|
|
} catch (r) {
|
|
return Ue.recordError(1280), void p("GL_INVALID_ENUM in glGet" + t + "v: Unknown object returned from WebGL getParameter(" + e + ")! (error: " + r + ")")
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
return Ue.recordError(1280), void p("GL_INVALID_ENUM in glGet" + t + "v: Native code calling glGet" + t + "v(" + e + ") and it returns " + a + " of type " + typeof a + "!")
|
|
}
|
|
}
|
|
switch (t) {
|
|
case 1:
|
|
ar(r, n);
|
|
break;
|
|
case 0:
|
|
q[r >> 2] = n;
|
|
break;
|
|
case 2:
|
|
V[r >> 2] = n;
|
|
break;
|
|
case 4:
|
|
O[r >> 0] = n ? 1 : 0
|
|
}
|
|
} else Ue.recordError(1281)
|
|
}
|
|
|
|
function ur(e, r, t, n) {
|
|
if (t) {
|
|
var i, a = Or.getIndexedParameter(e, r);
|
|
switch (typeof a) {
|
|
case "boolean":
|
|
i = a ? 1 : 0;
|
|
break;
|
|
case "number":
|
|
i = a;
|
|
break;
|
|
case "object":
|
|
if (null === a) switch (e) {
|
|
case 35983:
|
|
case 35368:
|
|
i = 0;
|
|
break;
|
|
default:
|
|
return void Ue.recordError(1280)
|
|
} else {
|
|
if (!(a instanceof WebGLBuffer)) return void Ue.recordError(1280);
|
|
i = 0 | a.name
|
|
}
|
|
break;
|
|
default:
|
|
return void Ue.recordError(1280)
|
|
}
|
|
switch (n) {
|
|
case 1:
|
|
ar(t, i);
|
|
break;
|
|
case 0:
|
|
q[t >> 2] = i;
|
|
break;
|
|
case 2:
|
|
V[t >> 2] = i;
|
|
break;
|
|
case 4:
|
|
O[t >> 0] = i ? 1 : 0;
|
|
break;
|
|
default:
|
|
throw "internal emscriptenWebGLGetIndexed() error, bad type: " + n
|
|
}
|
|
} else Ue.recordError(1281)
|
|
}
|
|
|
|
function sr(e) {
|
|
var r = R(e) + 1,
|
|
t = Zr(r);
|
|
return B(e, t, r), t
|
|
}
|
|
|
|
function cr(e) {
|
|
return parseInt(e)
|
|
}
|
|
|
|
function lr(e, r, t, n) {
|
|
if (t) {
|
|
var i = Or.getUniform(Ue.programs[e], Ue.uniforms[r]);
|
|
if ("number" == typeof i || "boolean" == typeof i) switch (n) {
|
|
case 0:
|
|
q[t >> 2] = i;
|
|
break;
|
|
case 2:
|
|
V[t >> 2] = i;
|
|
break;
|
|
default:
|
|
throw "internal emscriptenWebGLGetUniform() error, bad type: " + n
|
|
} else
|
|
for (var a = 0; a < i.length; a++) switch (n) {
|
|
case 0:
|
|
q[t + 4 * a >> 2] = i[a];
|
|
break;
|
|
case 2:
|
|
V[t + 4 * a >> 2] = i[a];
|
|
break;
|
|
default:
|
|
throw "internal emscriptenWebGLGetUniform() error, bad type: " + n
|
|
}
|
|
} else Ue.recordError(1281)
|
|
}
|
|
|
|
function fr(e, r, t, n) {
|
|
if (t) {
|
|
var i = Or.getVertexAttrib(e, r);
|
|
if (34975 == r) q[t >> 2] = i && i.name;
|
|
else if ("number" == typeof i || "boolean" == typeof i) switch (n) {
|
|
case 0:
|
|
q[t >> 2] = i;
|
|
break;
|
|
case 2:
|
|
V[t >> 2] = i;
|
|
break;
|
|
case 5:
|
|
q[t >> 2] = Math.fround(i);
|
|
break;
|
|
default:
|
|
throw "internal emscriptenWebGLGetVertexAttrib() error, bad type: " + n
|
|
} else
|
|
for (var a = 0; a < i.length; a++) switch (n) {
|
|
case 0:
|
|
q[t + 4 * a >> 2] = i[a];
|
|
break;
|
|
case 2:
|
|
V[t + 4 * a >> 2] = i[a];
|
|
break;
|
|
case 5:
|
|
q[t + 4 * a >> 2] = Math.fround(i[a]);
|
|
break;
|
|
default:
|
|
throw "internal emscriptenWebGLGetVertexAttrib() error, bad type: " + n
|
|
}
|
|
} else Ue.recordError(1281)
|
|
}
|
|
|
|
function dr(e) {
|
|
return 0 == (e -= 5120) ? O : 1 == e ? G : 2 == e ? j : 4 == e ? q : 6 == e ? V : 5 == e || 28922 == e || 28520 == e || 30779 == e || 30782 == e ? Q : z
|
|
}
|
|
|
|
function mr(e) {
|
|
return 31 - Math.clz32(e.BYTES_PER_ELEMENT)
|
|
}
|
|
|
|
function pr(e, r, t, n, i, a) {
|
|
var o = dr(e),
|
|
u = mr(o),
|
|
s = 1 << u,
|
|
c = function(e, r, t, n) {
|
|
var i;
|
|
return r * (e * t + (i = n) - 1 & -i)
|
|
}(t, n, function(e) {
|
|
return {
|
|
5: 3,
|
|
6: 4,
|
|
8: 2,
|
|
29502: 3,
|
|
29504: 4,
|
|
26917: 2,
|
|
26918: 2,
|
|
29846: 3,
|
|
29847: 4
|
|
} [e - 6402] || 1
|
|
}(r) * s, Ue.unpackAlignment);
|
|
return o.subarray(i >> u, i + c >> u)
|
|
}
|
|
|
|
function vr(e) {
|
|
if (!e || !e.callee || !e.callee.name) return [null, "", ""];
|
|
e.callee.toString();
|
|
var r = e.callee.name,
|
|
t = "(",
|
|
n = !0;
|
|
for (var i in e) {
|
|
var a = e[i];
|
|
n || (t += ", "), n = !1, t += "number" == typeof a || "string" == typeof a ? a : "(" + typeof a + ")"
|
|
}
|
|
t += ")";
|
|
var o = e.callee.caller;
|
|
return n && (t = ""), [e = o ? o.arguments : [], r, t]
|
|
}
|
|
|
|
function gr(e, r) {
|
|
24 & e && (r = r.replace(/\s+$/, ""), r += (r.length > 0 ? "\n" : "") + function(e) {
|
|
var r = Ee(),
|
|
t = r.lastIndexOf("_emscripten_log"),
|
|
n = r.lastIndexOf("_emscripten_get_callstack"),
|
|
i = r.indexOf("\n", Math.max(t, n)) + 1;
|
|
r = r.slice(i), 8 & e && "undefined" == typeof emscripten_source_map && (h('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.'), e ^= 8, e |= 16);
|
|
var a = null;
|
|
if (128 & e)
|
|
for (a = vr(arguments); a[1].indexOf("_emscripten_") >= 0;) a = vr(a[0]);
|
|
var o = r.split("\n");
|
|
r = "";
|
|
var u = new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"),
|
|
s = new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"),
|
|
c = new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");
|
|
for (var l in o) {
|
|
var f = o[l],
|
|
d = "",
|
|
m = "",
|
|
p = 0,
|
|
v = 0,
|
|
g = c.exec(f);
|
|
if (g && 5 == g.length) d = g[1], m = g[2], p = g[3], v = g[4];
|
|
else {
|
|
if ((g = u.exec(f)) || (g = s.exec(f)), !(g && g.length >= 4)) {
|
|
r += f + "\n";
|
|
continue
|
|
}
|
|
d = g[1], m = g[2], p = g[3], v = 0 | g[4]
|
|
}
|
|
var _ = d;
|
|
_ || (_ = d);
|
|
var b = !1;
|
|
if (8 & e) {
|
|
var y = emscripten_source_map.originalPositionFor({
|
|
line: p,
|
|
column: v
|
|
});
|
|
(b = y && y.source) && (64 & e && (y.source = y.source.substring(y.source.replace(/\\/g, "/").lastIndexOf("/") + 1)), r += " at " + _ + " (" + y.source + ":" + y.line + ":" + y.column + ")\n")
|
|
}(16 & e || !b) && (64 & e && (m = m.substring(m.replace(/\\/g, "/").lastIndexOf("/") + 1)), r += (b ? " = " + d : " at " + _) + " (" + m + ":" + p + ":" + v + ")\n"), 128 & e && a[0] && (a[1] == d && a[2].length > 0 && (r = r.replace(/\s+$/, ""), r += " with values: " + a[1] + a[2] + "\n"), a = vr(a[0]))
|
|
}
|
|
return r.replace(/\s+$/, "")
|
|
}(e)), 1 & e ? 4 & e ? console.error(r) : 2 & e ? console.warn(r) : 512 & e ? console.info(r) : 256 & e ? console.debug(r) : console.log(r) : 6 & e ? p(r) : m(r)
|
|
}
|
|
var hr = 0;
|
|
|
|
function _r(e) {
|
|
try {
|
|
return w.grow(e - U.byteLength + 65535 >>> 16), H(w.buffer), 1
|
|
} catch (e) {}
|
|
}
|
|
|
|
function br(e, r, t, n, i, a, o) {
|
|
Oe.focusEvent || (Oe.focusEvent = Zr(256));
|
|
var u = {
|
|
target: ze(e),
|
|
eventTypeString: a,
|
|
callbackfunc: n,
|
|
handlerFunc: function(e) {
|
|
var t = e || event,
|
|
a = Oe.getNodeNameForTarget(t.target),
|
|
o = t.target.id ? t.target.id : "",
|
|
u = Oe.focusEvent;
|
|
B(a, u + 0, 128), B(o, u + 128, 128), mt(n, i, u, r) && t.preventDefault()
|
|
},
|
|
useCapture: t
|
|
};
|
|
Oe.registerOrRemoveHandler(u)
|
|
}
|
|
|
|
function yr(e, r, t, n, i, a, o) {
|
|
Oe.fullscreenChangeEvent || (Oe.fullscreenChangeEvent = Zr(280));
|
|
var u = {
|
|
target: e,
|
|
eventTypeString: a,
|
|
callbackfunc: n,
|
|
handlerFunc: function(e) {
|
|
var t = e || event,
|
|
a = Oe.fullscreenChangeEvent;
|
|
Je(a), mt(n, i, a, r) && t.preventDefault()
|
|
},
|
|
useCapture: t
|
|
};
|
|
Oe.registerOrRemoveHandler(u)
|
|
}
|
|
|
|
function wr(e, r, t, n, i, a, o) {
|
|
Oe.gamepadEvent || (Oe.gamepadEvent = Zr(1432));
|
|
var u = {
|
|
target: ze(e),
|
|
allowsDeferredCalls: !0,
|
|
eventTypeString: a,
|
|
callbackfunc: n,
|
|
handlerFunc: function(e) {
|
|
var t = e || event,
|
|
a = Oe.gamepadEvent;
|
|
er(a, t.gamepad), mt(n, i, a, r) && t.preventDefault()
|
|
},
|
|
useCapture: t
|
|
};
|
|
Oe.registerOrRemoveHandler(u)
|
|
}
|
|
|
|
function Er(e, r, t, n, i, a, o) {
|
|
Oe.keyEvent || (Oe.keyEvent = Zr(164));
|
|
var u = {
|
|
target: ze(e),
|
|
allowsDeferredCalls: !0,
|
|
eventTypeString: a,
|
|
callbackfunc: n,
|
|
handlerFunc: function(e) {
|
|
var t = e || event,
|
|
a = Oe.keyEvent;
|
|
B(t.key ? t.key : "", a + 0, 32), B(t.code ? t.code : "", a + 32, 32), q[a + 64 >> 2] = t.location, q[a + 68 >> 2] = t.ctrlKey, q[a + 72 >> 2] = t.shiftKey, q[a + 76 >> 2] = t.altKey, q[a + 80 >> 2] = t.metaKey, q[a + 84 >> 2] = t.repeat, B(t.locale ? t.locale : "", a + 88, 32), B(t.char ? t.char : "", a + 120, 32), q[a + 152 >> 2] = t.charCode, q[a + 156 >> 2] = t.keyCode, q[a + 160 >> 2] = t.which, mt(n, i, a, r) && t.preventDefault()
|
|
},
|
|
useCapture: t
|
|
};
|
|
Oe.registerOrRemoveHandler(u)
|
|
}
|
|
|
|
function xr(e, r, t) {
|
|
q[e >> 2] = r.screenX, q[e + 4 >> 2] = r.screenY, q[e + 8 >> 2] = r.clientX, q[e + 12 >> 2] = r.clientY, q[e + 16 >> 2] = r.ctrlKey, q[e + 20 >> 2] = r.shiftKey, q[e + 24 >> 2] = r.altKey, q[e + 28 >> 2] = r.metaKey, j[e + 32 >> 1] = r.button, j[e + 34 >> 1] = r.buttons;
|
|
var n = r.movementX || r.screenX - Oe.previousScreenX,
|
|
i = r.movementY || r.screenY - Oe.previousScreenY;
|
|
q[e + 36 >> 2] = n, q[e + 40 >> 2] = i;
|
|
var a = Ye(t);
|
|
q[e + 44 >> 2] = r.clientX - a.left, q[e + 48 >> 2] = r.clientY - a.top, "wheel" !== r.type && "mousewheel" !== r.type && (Oe.previousScreenX = r.screenX, Oe.previousScreenY = r.screenY)
|
|
}
|
|
|
|
function kr(e, r, t, n, i, a, o) {
|
|
Oe.mouseEvent || (Oe.mouseEvent = Zr(64));
|
|
var u = {
|
|
target: e = ze(e),
|
|
allowsDeferredCalls: "mousemove" != a && "mouseenter" != a && "mouseleave" != a,
|
|
eventTypeString: a,
|
|
callbackfunc: n,
|
|
handlerFunc: function(t) {
|
|
var a = t || event;
|
|
xr(Oe.mouseEvent, a, e), mt(n, i, Oe.mouseEvent, r) && a.preventDefault()
|
|
},
|
|
useCapture: t
|
|
};
|
|
Oe.registerOrRemoveHandler(u)
|
|
}
|
|
|
|
function Cr(e, r, t, n, i, a, o) {
|
|
Oe.pointerlockChangeEvent || (Oe.pointerlockChangeEvent = Zr(260));
|
|
var u = {
|
|
target: e,
|
|
eventTypeString: a,
|
|
callbackfunc: n,
|
|
handlerFunc: function(e) {
|
|
var t = e || event,
|
|
a = Oe.pointerlockChangeEvent;
|
|
! function(e) {
|
|
var r = document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement || document.msPointerLockElement,
|
|
t = !!r;
|
|
q[e >> 2] = t;
|
|
var n = Oe.getNodeNameForTarget(r),
|
|
i = r && r.id ? r.id : "";
|
|
B(n, e + 4, 128), B(i, e + 132, 128)
|
|
}(a), mt(n, i, a, r) && t.preventDefault()
|
|
},
|
|
useCapture: t
|
|
};
|
|
Oe.registerOrRemoveHandler(u)
|
|
}
|
|
|
|
function Sr(e, r, t, n, i, a, o) {
|
|
Oe.touchEvent || (Oe.touchEvent = Zr(1684));
|
|
var u = {
|
|
target: e = ze(e),
|
|
allowsDeferredCalls: "touchstart" == a || "touchend" == a,
|
|
eventTypeString: a,
|
|
callbackfunc: n,
|
|
handlerFunc: function(t) {
|
|
for (var a = t || event, o = {}, u = 0; u < a.touches.length; ++u) {
|
|
(s = a.touches[u]).changed = !1, o[s.identifier] = s
|
|
}
|
|
for (u = 0; u < a.changedTouches.length; ++u) {
|
|
o[(s = a.changedTouches[u]).identifier] = s, s.changed = !0
|
|
}
|
|
for (u = 0; u < a.targetTouches.length; ++u) {
|
|
var s;
|
|
o[(s = a.targetTouches[u]).identifier].onTarget = !0
|
|
}
|
|
var c = Oe.touchEvent,
|
|
l = c;
|
|
q[l + 4 >> 2] = a.ctrlKey, q[l + 8 >> 2] = a.shiftKey, q[l + 12 >> 2] = a.altKey, q[l + 16 >> 2] = a.metaKey, l += 20;
|
|
var f = Ye(e),
|
|
d = 0;
|
|
for (var u in o) {
|
|
var m = o[u];
|
|
if (q[l >> 2] = m.identifier, q[l + 4 >> 2] = m.screenX, q[l + 8 >> 2] = m.screenY, q[l + 12 >> 2] = m.clientX, q[l + 16 >> 2] = m.clientY, q[l + 20 >> 2] = m.pageX, q[l + 24 >> 2] = m.pageY, q[l + 28 >> 2] = m.changed, q[l + 32 >> 2] = m.onTarget, q[l + 36 >> 2] = m.clientX - f.left, q[l + 40 >> 2] = m.clientY - f.top, l += 52, ++d >= 32) break
|
|
}
|
|
q[c >> 2] = d, mt(n, i, c, r) && a.preventDefault()
|
|
},
|
|
useCapture: t
|
|
};
|
|
Oe.registerOrRemoveHandler(u)
|
|
}
|
|
|
|
function Dr(e, r, t, n, i, a, o) {
|
|
Oe.visibilityChangeEvent || (Oe.visibilityChangeEvent = Zr(8));
|
|
var u = {
|
|
target: e,
|
|
eventTypeString: a,
|
|
callbackfunc: n,
|
|
handlerFunc: function(e) {
|
|
var t, a, o = e || event,
|
|
u = Oe.visibilityChangeEvent;
|
|
t = u, a = ["hidden", "visible", "prerender", "unloaded"].indexOf(document.visibilityState), q[t >> 2] = document.hidden, q[t + 4 >> 2] = a, mt(n, i, u, r) && o.preventDefault()
|
|
},
|
|
useCapture: t
|
|
};
|
|
Oe.registerOrRemoveHandler(u)
|
|
}
|
|
|
|
function Fr(e, r, t, n, i, a, o) {
|
|
Oe.wheelEvent || (Oe.wheelEvent = Zr(96));
|
|
var u = {
|
|
target: e,
|
|
allowsDeferredCalls: !0,
|
|
eventTypeString: a,
|
|
callbackfunc: n,
|
|
handlerFunc: "wheel" == a ? function(t) {
|
|
var a = t || event,
|
|
o = Oe.wheelEvent;
|
|
xr(o, a, e), X[o + 64 >> 3] = a.deltaX, X[o + 72 >> 3] = a.deltaY, X[o + 80 >> 3] = a.deltaZ, q[o + 88 >> 2] = a.deltaMode, mt(n, i, o, r) && a.preventDefault()
|
|
} : function(t) {
|
|
var a = t || event;
|
|
xr(Oe.wheelEvent, a, e), X[Oe.wheelEvent + 64 >> 3] = a.wheelDeltaX || 0;
|
|
var o = -(a.wheelDeltaY || a.wheelDelta);
|
|
X[Oe.wheelEvent + 72 >> 3] = o, X[Oe.wheelEvent + 80 >> 3] = 0, q[Oe.wheelEvent + 88 >> 2] = 0, mt(n, i, Oe.wheelEvent, r) && a.preventDefault()
|
|
},
|
|
useCapture: t
|
|
};
|
|
Oe.registerOrRemoveHandler(u)
|
|
}
|
|
var Ar = {
|
|
xhrs: [],
|
|
setu64: function(e, r) {
|
|
Q[e >> 2] = r, Q[e + 4 >> 2] = r / 4294967296 | 0
|
|
},
|
|
openDatabase: function(e, r, t, n) {
|
|
try {
|
|
var i = indexedDB.open(e, r)
|
|
} catch (e) {
|
|
return n(e)
|
|
}
|
|
i.onupgradeneeded = function(e) {
|
|
var r = e.target.result;
|
|
r.objectStoreNames.contains("FILES") && r.deleteObjectStore("FILES"), r.createObjectStore("FILES")
|
|
}, i.onsuccess = function(e) {
|
|
t(e.target.result)
|
|
}, i.onerror = function(e) {
|
|
n(e)
|
|
}
|
|
},
|
|
staticInit: function() {
|
|
Ar.openDatabase("emscripten_filesystem", 1, (function(e) {
|
|
Ar.dbInstance = e, me()
|
|
}), (function() {
|
|
Ar.dbInstance = !1, me()
|
|
})), "undefined" != typeof ENVIRONMENT_IS_FETCH_WORKER && ENVIRONMENT_IS_FETCH_WORKER || de()
|
|
}
|
|
};
|
|
|
|
function Pr(e, r, t, n, i) {
|
|
var a = Q[e + 8 >> 2];
|
|
if (a) {
|
|
var o = L(a),
|
|
u = e + 112,
|
|
s = L(u);
|
|
s || (s = "GET");
|
|
Q[u + 32 >> 2];
|
|
var c = Q[u + 52 >> 2],
|
|
l = Q[u + 56 >> 2],
|
|
f = !!Q[u + 60 >> 2],
|
|
d = (Q[u + 64 >> 2], Q[u + 68 >> 2]),
|
|
m = Q[u + 72 >> 2],
|
|
p = Q[u + 76 >> 2],
|
|
v = Q[u + 80 >> 2],
|
|
g = Q[u + 84 >> 2],
|
|
h = Q[u + 88 >> 2],
|
|
_ = !!(1 & c),
|
|
b = !!(2 & c),
|
|
y = !!(64 & c),
|
|
w = d ? L(d) : void 0,
|
|
E = m ? L(m) : void 0,
|
|
x = v ? L(v) : void 0,
|
|
k = new XMLHttpRequest;
|
|
if (k.withCredentials = f, k.open(s, o, !y, w, E), y || (k.timeout = l), k.url_ = o, k.responseType = "arraybuffer", v && k.overrideMimeType(x), p)
|
|
for (;;) {
|
|
var C = Q[p >> 2];
|
|
if (!C) break;
|
|
var S = Q[p + 4 >> 2];
|
|
if (!S) break;
|
|
p += 8;
|
|
var D = L(C),
|
|
F = L(S);
|
|
k.setRequestHeader(D, F)
|
|
}
|
|
Ar.xhrs.push(k);
|
|
var A = Ar.xhrs.length;
|
|
Q[e + 0 >> 2] = A;
|
|
var P = g && h ? G.slice(g, g + h) : null;
|
|
k.onload = function(n) {
|
|
var i = k.response ? k.response.byteLength : 0,
|
|
a = 0,
|
|
o = 0;
|
|
_ && !b && (a = Zr(o = i), G.set(new Uint8Array(k.response), a)), Q[e + 12 >> 2] = a, Ar.setu64(e + 16, o), Ar.setu64(e + 24, 0), i && Ar.setu64(e + 32, i), z[e + 40 >> 1] = k.readyState, 4 === k.readyState && 0 === k.status && (k.status = i > 0 ? 200 : 404), z[e + 42 >> 1] = k.status, k.statusText && B(k.statusText, e + 44, 64), k.status >= 200 && k.status < 300 ? r && r(e, k, n) : t && t(e, k, n)
|
|
}, k.onerror = function(r) {
|
|
var n = k.status;
|
|
4 === k.readyState && 0 === n && (n = 404), Q[e + 12 >> 2] = 0, Ar.setu64(e + 16, 0), Ar.setu64(e + 24, 0), Ar.setu64(e + 32, 0), z[e + 40 >> 1] = k.readyState, z[e + 42 >> 1] = n, t && t(e, k, r)
|
|
}, k.ontimeout = function(r) {
|
|
t && t(e, k, r)
|
|
}, k.onprogress = function(r) {
|
|
var t = _ && b && k.response ? k.response.byteLength : 0,
|
|
i = 0;
|
|
_ && b && (i = Zr(t), G.set(new Uint8Array(k.response), i)), Q[e + 12 >> 2] = i, Ar.setu64(e + 16, t), Ar.setu64(e + 24, r.loaded - t), Ar.setu64(e + 32, r.total), z[e + 40 >> 1] = k.readyState, k.readyState >= 3 && 0 === k.status && r.loaded > 0 && (k.status = 200), z[e + 42 >> 1] = k.status, k.statusText && B(k.statusText, e + 44, 64), n && n(e, k, r)
|
|
}, k.onreadystatechange = function(r) {
|
|
z[e + 40 >> 1] = k.readyState, k.readyState >= 2 && (z[e + 42 >> 1] = k.status), i && i(e, k, r)
|
|
};
|
|
try {
|
|
k.send(P)
|
|
} catch (r) {
|
|
t && t(e, k, r)
|
|
}
|
|
} else t(e, 0, "no url specified!")
|
|
}
|
|
|
|
function Tr(e, r, t, n, i) {
|
|
if (e) {
|
|
var a = Q[r + 112 + 64 >> 2];
|
|
a || (a = Q[r + 8 >> 2]);
|
|
var o = L(a);
|
|
try {
|
|
var u = e.transaction(["FILES"], "readwrite").objectStore("FILES").put(t, o);
|
|
u.onsuccess = function(e) {
|
|
z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 200, B("OK", r + 44, 64), n(r, 0, o)
|
|
}, u.onerror = function(e) {
|
|
z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 413, B("Payload Too Large", r + 44, 64), i(r, 0, e)
|
|
}
|
|
} catch (e) {
|
|
i(r, 0, e)
|
|
}
|
|
} else i(r, 0, "IndexedDB not available!")
|
|
}
|
|
var Lr = {};
|
|
|
|
function Ir() {
|
|
if (!Ir.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",
|
|
_: l || "./this.program"
|
|
};
|
|
for (var r in Lr) e[r] = Lr[r];
|
|
var t = [];
|
|
for (var r in e) t.push(r + "=" + e[r]);
|
|
Ir.strings = t
|
|
}
|
|
return Ir.strings
|
|
}
|
|
var Br = (B("GMT", 1052560, 4), 1052560);
|
|
|
|
function Rr() {
|
|
if (!Rr.called) {
|
|
Rr.called = !0, q[tt() >> 2] = 60 * (new Date).getTimezoneOffset();
|
|
var e = (new Date).getFullYear(),
|
|
r = new Date(e, 0, 1),
|
|
t = new Date(e, 6, 1);
|
|
q[rt() >> 2] = Number(r.getTimezoneOffset() != t.getTimezoneOffset());
|
|
var n = u(r),
|
|
i = u(t),
|
|
a = M(n),
|
|
o = M(i);
|
|
t.getTimezoneOffset() < r.getTimezoneOffset() ? (q[et() >> 2] = a, q[et() + 4 >> 2] = o) : (q[et() >> 2] = o, q[et() + 4 >> 2] = a)
|
|
}
|
|
|
|
function u(e) {
|
|
var r = e.toTimeString().match(/\(([A-Za-z ]+)\)$/);
|
|
return r ? r[1] : "GMT"
|
|
}
|
|
}
|
|
|
|
function Mr(e, r) {
|
|
Rr();
|
|
var t = new Date(1e3 * q[e >> 2]);
|
|
q[r >> 2] = t.getSeconds(), q[r + 4 >> 2] = t.getMinutes(), q[r + 8 >> 2] = t.getHours(), q[r + 12 >> 2] = t.getDate(), q[r + 16 >> 2] = t.getMonth(), q[r + 20 >> 2] = t.getFullYear() - 1900, q[r + 24 >> 2] = t.getDay();
|
|
var n = new Date(t.getFullYear(), 0, 1),
|
|
i = (t.getTime() - n.getTime()) / 864e5 | 0;
|
|
q[r + 28 >> 2] = i, q[r + 36 >> 2] = -60 * t.getTimezoneOffset();
|
|
var a = new Date(t.getFullYear(), 6, 1).getTimezoneOffset(),
|
|
o = n.getTimezoneOffset(),
|
|
u = 0 | (a != o && t.getTimezoneOffset() == Math.min(o, a));
|
|
q[r + 32 >> 2] = u;
|
|
var s = q[et() + (u ? 4 : 0) >> 2];
|
|
return q[r + 40 >> 2] = s, r
|
|
}
|
|
|
|
function Nr(e) {
|
|
for (var r = ke(); ke() - r < e / 1e3;);
|
|
}
|
|
|
|
function Ur(e, r) {
|
|
Ur.array || (Ur.array = []);
|
|
var t, n = Ur.array;
|
|
for (n.length = 0; t = G[e++];) 100 === t || 102 === t ? (r = r + 7 & -8, n.push(X[r >> 3]), r += 8) : (r = r + 3 & -4, n.push(q[r >> 2]), r += 4);
|
|
return n
|
|
}
|
|
var Or, Gr = function(e, r, t, n) {
|
|
e || (e = this), this.parent = e, this.mount = e.mount, this.mounted = null, this.id = Pe.nextInode++, this.name = r, this.mode = t, this.node_ops = {}, this.stream_ops = {}, this.rdev = n
|
|
},
|
|
jr = 365,
|
|
zr = 146;
|
|
Object.defineProperties(Gr.prototype, {
|
|
read: {
|
|
get: function() {
|
|
return (this.mode & jr) === jr
|
|
},
|
|
set: function(e) {
|
|
e ? this.mode |= jr : this.mode &= -366
|
|
}
|
|
},
|
|
write: {
|
|
get: function() {
|
|
return (this.mode & zr) === zr
|
|
},
|
|
set: function(e) {
|
|
e ? this.mode |= zr : this.mode &= -147
|
|
}
|
|
},
|
|
isFolder: {
|
|
get: function() {
|
|
return Pe.isDir(this.mode)
|
|
}
|
|
},
|
|
isDevice: {
|
|
get: function() {
|
|
return Pe.isChrdev(this.mode)
|
|
}
|
|
}
|
|
}), Pe.FSNode = Gr, Pe.staticInit(), r.FS_createFolder = Pe.createFolder, r.FS_createPath = Pe.createPath, r.FS_createDataFile = Pe.createDataFile, r.FS_createPreloadedFile = Pe.createPreloadedFile, r.FS_createLazyFile = Pe.createLazyFile, r.FS_createLink = Pe.createLink, r.FS_createDevice = Pe.createDevice, r.FS_unlink = Pe.unlink, r.requestFullscreen = function(e, r) {
|
|
Be.requestFullscreen(e, r)
|
|
}, r.requestAnimationFrame = function(e) {
|
|
Be.requestAnimationFrame(e)
|
|
}, r.setCanvasSize = function(e, r, t) {
|
|
Be.setCanvasSize(e, r, t)
|
|
}, r.pauseMainLoop = function() {
|
|
Be.mainLoop.pause()
|
|
}, r.resumeMainLoop = function() {
|
|
Be.mainLoop.resume()
|
|
}, r.getUserMedia = function() {
|
|
Be.getUserMedia()
|
|
}, r.createContext = function(e, r, t, n) {
|
|
return Be.createContext(e, r, t, n)
|
|
}, Ue.init();
|
|
for (var qr = 0; qr < 32; qr++) tr.push(new Array(qr));
|
|
Ar.staticInit();
|
|
|
|
function Qr(e, r, t) {
|
|
var n = t > 0 ? t : R(e) + 1,
|
|
i = new Array(n),
|
|
a = I(e, i, 0, i.length);
|
|
return r && (i.length = a), i
|
|
}
|
|
var Vr = {
|
|
__cxa_atexit: function(e, r) {
|
|
return t = e, n = r, void ee.unshift({
|
|
func: t,
|
|
arg: n
|
|
});
|
|
var t, n
|
|
},
|
|
__sys_fcntl64: function(e, r, t) {
|
|
Te.varargs = t;
|
|
try {
|
|
var n = Te.getStreamFromFD(e);
|
|
switch (r) {
|
|
case 0:
|
|
return (i = Te.get()) < 0 ? -28 : Pe.open(n.path, n.flags, 0, i).fd;
|
|
case 1:
|
|
case 2:
|
|
return 0;
|
|
case 3:
|
|
return n.flags;
|
|
case 4:
|
|
var i = Te.get();
|
|
return n.flags |= i, 0;
|
|
case 12:
|
|
i = Te.get();
|
|
return j[i + 0 >> 1] = 2, 0;
|
|
case 13:
|
|
case 14:
|
|
return 0;
|
|
case 16:
|
|
case 8:
|
|
return -28;
|
|
case 9:
|
|
return xe(28), -1;
|
|
default:
|
|
return -28
|
|
}
|
|
} catch (e) {
|
|
return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno
|
|
}
|
|
},
|
|
__sys_fstat64: function(e, r) {
|
|
try {
|
|
var t = Te.getStreamFromFD(e);
|
|
return Te.doStat(Pe.stat, t.path, r)
|
|
} catch (e) {
|
|
return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno
|
|
}
|
|
},
|
|
__sys_ioctl: function(e, r, t) {
|
|
Te.varargs = t;
|
|
try {
|
|
var n = Te.getStreamFromFD(e);
|
|
switch (r) {
|
|
case 21509:
|
|
case 21505:
|
|
return n.tty ? 0 : -59;
|
|
case 21510:
|
|
case 21511:
|
|
case 21512:
|
|
case 21506:
|
|
case 21507:
|
|
case 21508:
|
|
return n.tty ? 0 : -59;
|
|
case 21519:
|
|
if (!n.tty) return -59;
|
|
var i = Te.get();
|
|
return q[i >> 2] = 0, 0;
|
|
case 21520:
|
|
return n.tty ? -28 : -59;
|
|
case 21531:
|
|
i = Te.get();
|
|
return Pe.ioctl(n, r, i);
|
|
case 21523:
|
|
case 21524:
|
|
return n.tty ? 0 : -59;
|
|
default:
|
|
pe("bad ioctl syscall " + r)
|
|
}
|
|
} catch (e) {
|
|
return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno
|
|
}
|
|
},
|
|
__sys_open: function(e, r, t) {
|
|
Te.varargs = t;
|
|
try {
|
|
var n = Te.getStr(e),
|
|
i = Te.get();
|
|
return Pe.open(n, r, i).fd
|
|
} catch (e) {
|
|
return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno
|
|
}
|
|
},
|
|
__sys_stat64: function(e, r) {
|
|
try {
|
|
return e = Te.getStr(e), Te.doStat(Pe.stat, e, r)
|
|
} catch (e) {
|
|
return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno
|
|
}
|
|
},
|
|
_emscripten_fetch_free: function(e) {
|
|
delete Ar.xhrs[e - 1]
|
|
},
|
|
abort: function() {
|
|
pe()
|
|
},
|
|
alBufferData: function(e, r, t, n, i) {
|
|
if (Re.currentCtx) {
|
|
var a = Re.buffers[e];
|
|
if (a)
|
|
if (i <= 0) Re.currentCtx.err = 40963;
|
|
else {
|
|
var o = null;
|
|
try {
|
|
switch (r) {
|
|
case 4352:
|
|
if (n > 0)
|
|
for (var u = (o = Re.currentCtx.audioCtx.createBuffer(1, n, i)).getChannelData(0), s = 0; s < n; ++s) u[s] = .0078125 * G[t++] - 1;
|
|
a.bytesPerSample = 1, a.channels = 1, a.length = n;
|
|
break;
|
|
case 4353:
|
|
if (n > 0) {
|
|
u = (o = Re.currentCtx.audioCtx.createBuffer(1, n >> 1, i)).getChannelData(0);
|
|
t >>= 1;
|
|
for (s = 0; s < n >> 1; ++s) u[s] = 30517578125e-15 * j[t++]
|
|
}
|
|
a.bytesPerSample = 2, a.channels = 1, a.length = n >> 1;
|
|
break;
|
|
case 4354:
|
|
if (n > 0) {
|
|
u = (o = Re.currentCtx.audioCtx.createBuffer(2, n >> 1, i)).getChannelData(0);
|
|
var c = o.getChannelData(1);
|
|
for (s = 0; s < n >> 1; ++s) u[s] = .0078125 * G[t++] - 1, c[s] = .0078125 * G[t++] - 1
|
|
}
|
|
a.bytesPerSample = 1, a.channels = 2, a.length = n >> 1;
|
|
break;
|
|
case 4355:
|
|
if (n > 0) {
|
|
u = (o = Re.currentCtx.audioCtx.createBuffer(2, n >> 2, i)).getChannelData(0), c = o.getChannelData(1);
|
|
t >>= 1;
|
|
for (s = 0; s < n >> 2; ++s) u[s] = 30517578125e-15 * j[t++], c[s] = 30517578125e-15 * j[t++]
|
|
}
|
|
a.bytesPerSample = 2, a.channels = 2, a.length = n >> 2;
|
|
break;
|
|
case 65552:
|
|
if (n > 0) {
|
|
u = (o = Re.currentCtx.audioCtx.createBuffer(1, n >> 2, i)).getChannelData(0);
|
|
t >>= 2;
|
|
for (s = 0; s < n >> 2; ++s) u[s] = V[t++]
|
|
}
|
|
a.bytesPerSample = 4, a.channels = 1, a.length = n >> 2;
|
|
break;
|
|
case 65553:
|
|
if (n > 0) {
|
|
u = (o = Re.currentCtx.audioCtx.createBuffer(2, n >> 3, i)).getChannelData(0), c = o.getChannelData(1);
|
|
t >>= 2;
|
|
for (s = 0; s < n >> 3; ++s) u[s] = V[t++], c[s] = V[t++]
|
|
}
|
|
a.bytesPerSample = 4, a.channels = 2, a.length = n >> 3;
|
|
break;
|
|
default:
|
|
return void(Re.currentCtx.err = 40963)
|
|
}
|
|
a.frequency = i, a.audioBuf = o
|
|
} catch (e) {
|
|
return void(Re.currentCtx.err = 40963)
|
|
}
|
|
}
|
|
else Re.currentCtx.err = 40963
|
|
}
|
|
},
|
|
alDeleteBuffers: function(e, r) {
|
|
if (Re.currentCtx) {
|
|
for (var t = 0; t < e; ++t) {
|
|
if (0 !== (n = q[r + 4 * t >> 2])) {
|
|
if (!Re.buffers[n]) return void(Re.currentCtx.err = 40961);
|
|
if (Re.buffers[n].refCount) return void(Re.currentCtx.err = 40964)
|
|
}
|
|
}
|
|
for (t = 0; t < e; ++t) {
|
|
var n;
|
|
0 !== (n = q[r + 4 * t >> 2]) && (Re.deviceRefCounts[Re.buffers[n].deviceId]--, delete Re.buffers[n], Re.freeIds.push(n))
|
|
}
|
|
}
|
|
},
|
|
alDeleteSources: function(e, r) {
|
|
if (Re.currentCtx) {
|
|
for (var t = 0; t < e; ++t) {
|
|
var n = q[r + 4 * t >> 2];
|
|
if (!Re.currentCtx.sources[n]) return void(Re.currentCtx.err = 40961)
|
|
}
|
|
for (t = 0; t < e; ++t) {
|
|
n = q[r + 4 * t >> 2];
|
|
Re.setSourceState(Re.currentCtx.sources[n], 4116), Me(n, 4105, 0), delete Re.currentCtx.sources[n], Re.freeIds.push(n)
|
|
}
|
|
}
|
|
},
|
|
alGenBuffers: function(e, r) {
|
|
if (Re.currentCtx)
|
|
for (var t = 0; t < e; ++t) {
|
|
var n = {
|
|
deviceId: Re.currentCtx.deviceId,
|
|
id: Re.newId(),
|
|
refCount: 0,
|
|
audioBuf: null,
|
|
frequency: 0,
|
|
bytesPerSample: 2,
|
|
channels: 1,
|
|
length: 0
|
|
};
|
|
Re.deviceRefCounts[n.deviceId]++, Re.buffers[n.id] = n, q[r + 4 * t >> 2] = n.id
|
|
}
|
|
},
|
|
alGenSources: function(e, r) {
|
|
if (Re.currentCtx)
|
|
for (var t = 0; t < e; ++t) {
|
|
var n = Re.currentCtx.audioCtx.createGain();
|
|
n.connect(Re.currentCtx.gain);
|
|
var i = {
|
|
context: Re.currentCtx,
|
|
id: Re.newId(),
|
|
type: 4144,
|
|
state: 4113,
|
|
bufQueue: [Re.buffers[0]],
|
|
audioQueue: [],
|
|
looping: !1,
|
|
pitch: 1,
|
|
dopplerShift: 1,
|
|
gain: n,
|
|
minGain: 0,
|
|
maxGain: 1,
|
|
panner: null,
|
|
bufsProcessed: 0,
|
|
bufStartTime: Number.NEGATIVE_INFINITY,
|
|
bufOffset: 0,
|
|
relative: !1,
|
|
refDistance: 1,
|
|
maxDistance: 340282e33,
|
|
rolloffFactor: 1,
|
|
position: [0, 0, 0],
|
|
velocity: [0, 0, 0],
|
|
direction: [0, 0, 0],
|
|
coneOuterGain: 0,
|
|
coneInnerAngle: 360,
|
|
coneOuterAngle: 360,
|
|
distanceModel: 53250,
|
|
spatialize: 2,
|
|
get playbackRate() {
|
|
return this.pitch * this.dopplerShift
|
|
}
|
|
};
|
|
Re.currentCtx.sources[i.id] = i, q[r + 4 * t >> 2] = i.id
|
|
}
|
|
},
|
|
alGetSourcei: function(e, r, t) {
|
|
var n = Re.getSourceParam("alGetSourcei", e, r);
|
|
if (null !== n)
|
|
if (t) switch (r) {
|
|
case 514:
|
|
case 4097:
|
|
case 4098:
|
|
case 4103:
|
|
case 4105:
|
|
case 4112:
|
|
case 4117:
|
|
case 4118:
|
|
case 4128:
|
|
case 4129:
|
|
case 4131:
|
|
case 4132:
|
|
case 4133:
|
|
case 4134:
|
|
case 4135:
|
|
case 4628:
|
|
case 8201:
|
|
case 8202:
|
|
case 53248:
|
|
q[t >> 2] = n;
|
|
break;
|
|
default:
|
|
return void(Re.currentCtx.err = 40962)
|
|
} else Re.currentCtx.err = 40963
|
|
},
|
|
alSource3i: function(e, r, t, n, i) {
|
|
switch (r) {
|
|
case 4100:
|
|
case 4101:
|
|
case 4102:
|
|
Re.paramArray[0] = t, Re.paramArray[1] = n, Re.paramArray[2] = i, Re.setSourceParam("alSource3i", e, r, Re.paramArray);
|
|
break;
|
|
default:
|
|
Re.setSourceParam("alSource3i", e, r, null)
|
|
}
|
|
},
|
|
alSourcePlay: function(e) {
|
|
if (Re.currentCtx) {
|
|
var r = Re.currentCtx.sources[e];
|
|
r ? Re.setSourceState(r, 4114) : Re.currentCtx.err = 40961
|
|
}
|
|
},
|
|
alSourceQueueBuffers: function(e, r, t) {
|
|
if (Re.currentCtx) {
|
|
var n = Re.currentCtx.sources[e];
|
|
if (n)
|
|
if (4136 !== n.type) {
|
|
if (0 !== r) {
|
|
for (var i = Re.buffers[0], a = 0; a < n.bufQueue.length; a++)
|
|
if (0 !== n.bufQueue[a].id) {
|
|
i = n.bufQueue[a];
|
|
break
|
|
} for (a = 0; a < r; ++a) {
|
|
var o = q[t + 4 * a >> 2];
|
|
if (!(u = Re.buffers[o])) return void(Re.currentCtx.err = 40961);
|
|
0 === i.id || u.frequency === i.frequency && u.bytesPerSample === i.bytesPerSample && u.channels === i.channels || (Re.currentCtx.err = 40964)
|
|
}
|
|
1 === n.bufQueue.length && 0 === n.bufQueue[0].id && (n.bufQueue.length = 0), n.type = 4137;
|
|
for (a = 0; a < r; ++a) {
|
|
var u;
|
|
o = q[t + 4 * a >> 2];
|
|
(u = Re.buffers[o]).refCount++, n.bufQueue.push(u)
|
|
}
|
|
n.looping && Re.cancelPendingSourceAudio(n), Re.initSourcePanner(n), Re.scheduleSourceAudio(n)
|
|
}
|
|
} else Re.currentCtx.err = 40964;
|
|
else Re.currentCtx.err = 40961
|
|
}
|
|
},
|
|
alSourceStop: function(e) {
|
|
if (Re.currentCtx) {
|
|
var r = Re.currentCtx.sources[e];
|
|
r ? Re.setSourceState(r, 4116) : Re.currentCtx.err = 40961
|
|
}
|
|
},
|
|
alSourceUnqueueBuffers: function(e, r, t) {
|
|
if (Re.currentCtx) {
|
|
var n = Re.currentCtx.sources[e];
|
|
if (n) {
|
|
if (r > (1 === n.bufQueue.length && 0 === n.bufQueue[0].id ? 0 : n.bufsProcessed)) Re.currentCtx.err = 40963;
|
|
else if (0 !== r) {
|
|
for (var i = 0; i < r; i++) {
|
|
var a = n.bufQueue.shift();
|
|
a.refCount--, q[t + 4 * i >> 2] = a.id, n.bufsProcessed--
|
|
}
|
|
0 === n.bufQueue.length && n.bufQueue.push(Re.buffers[0]), Re.initSourcePanner(n), Re.scheduleSourceAudio(n)
|
|
}
|
|
} else Re.currentCtx.err = 40961
|
|
}
|
|
},
|
|
alSourcef: function(e, r, t) {
|
|
switch (r) {
|
|
case 4097:
|
|
case 4098:
|
|
case 4099:
|
|
case 4106:
|
|
case 4109:
|
|
case 4110:
|
|
case 4128:
|
|
case 4129:
|
|
case 4130:
|
|
case 4131:
|
|
case 4132:
|
|
case 4133:
|
|
case 4134:
|
|
case 8203:
|
|
Re.setSourceParam("alSourcef", e, r, t);
|
|
break;
|
|
default:
|
|
Re.setSourceParam("alSourcef", e, r, null)
|
|
}
|
|
},
|
|
alSourcei: Me,
|
|
alcCloseDevice: function(e) {
|
|
return !(e in Re.deviceRefCounts) || Re.deviceRefCounts[e] > 0 ? 0 : (delete Re.deviceRefCounts[e], Re.freeIds.push(e), 1)
|
|
},
|
|
alcCreateContext: function(e, t) {
|
|
if (!(e in Re.deviceRefCounts)) return Re.alcErr = 40961, 0;
|
|
var n = null,
|
|
i = [],
|
|
a = null;
|
|
if (t >>= 2)
|
|
for (var o = 0, u = 0; o = q[t++], i.push(o), 0 !== o;) switch (u = q[t++], i.push(u), o) {
|
|
case 4103:
|
|
n || (n = {}), n.sampleRate = u;
|
|
break;
|
|
case 4112:
|
|
case 4113:
|
|
break;
|
|
case 6546:
|
|
switch (u) {
|
|
case 0:
|
|
a = !1;
|
|
break;
|
|
case 1:
|
|
a = !0;
|
|
break;
|
|
case 2:
|
|
break;
|
|
default:
|
|
return Re.alcErr = 40964, 0
|
|
}
|
|
break;
|
|
case 6550:
|
|
if (0 !== u) return Re.alcErr = 40964, 0;
|
|
break;
|
|
default:
|
|
return Re.alcErr = 40964, 0
|
|
}
|
|
var s = window.AudioContext || window.webkitAudioContext,
|
|
c = null;
|
|
try {
|
|
c = n ? new s(n) : new s
|
|
} catch (e) {
|
|
return "NotSupportedError" === e.name ? Re.alcErr = 40964 : Re.alcErr = 40961, 0
|
|
}! function(e, t) {
|
|
t || (t = [document, r.canvas]), ["keydown", "mousedown", "touchstart"].forEach((function(r) {
|
|
t.forEach((function(t) {
|
|
t && function(e, r, t) {
|
|
e.addEventListener(r, t, {
|
|
once: !0
|
|
})
|
|
}(t, r, (function() {
|
|
"suspended" === e.state && e.resume().then((() => {}))
|
|
}))
|
|
}))
|
|
}))
|
|
}(c), void 0 === c.createGain && (c.createGain = c.createGainNode);
|
|
var l = c.createGain();
|
|
l.connect(c.destination);
|
|
var f = {
|
|
deviceId: e,
|
|
id: Re.newId(),
|
|
attrs: i,
|
|
audioCtx: c,
|
|
listener: {
|
|
position: [0, 0, 0],
|
|
velocity: [0, 0, 0],
|
|
direction: [0, 0, 0],
|
|
up: [0, 0, 0]
|
|
},
|
|
sources: [],
|
|
interval: setInterval((function() {
|
|
Re.scheduleContextAudio(f)
|
|
}), Re.QUEUE_INTERVAL),
|
|
gain: l,
|
|
distanceModel: 53250,
|
|
speedOfSound: 343.3,
|
|
dopplerFactor: 1,
|
|
sourceDistanceModel: !1,
|
|
hrtf: a || !1,
|
|
_err: 0,
|
|
get err() {
|
|
return this._err
|
|
},
|
|
set err(e) {
|
|
0 !== this._err && 0 !== e || (this._err = e)
|
|
}
|
|
};
|
|
if (Re.deviceRefCounts[e]++, Re.contexts[f.id] = f, null !== a)
|
|
for (var d in Re.contexts) {
|
|
var m = Re.contexts[d];
|
|
m.deviceId === e && (m.hrtf = a, Re.updateContextGlobal(m))
|
|
}
|
|
return f.id
|
|
},
|
|
alcDestroyContext: function(e) {
|
|
var r = Re.contexts[e];
|
|
Re.currentCtx !== r ? (Re.contexts[e].interval && clearInterval(Re.contexts[e].interval), Re.deviceRefCounts[r.deviceId]--, delete Re.contexts[e], Re.freeIds.push(e)) : Re.alcErr = 40962
|
|
},
|
|
alcGetIntegerv: function(e, r, t, n) {
|
|
if (0 !== t && n) switch (r) {
|
|
case 4096:
|
|
case 4097:
|
|
q[n >> 2] = 1;
|
|
break;
|
|
case 4098:
|
|
if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961);
|
|
if (!Re.currentCtx) return void(Re.alcErr = 40962);
|
|
q[n >> 2] = Re.currentCtx.attrs.length;
|
|
break;
|
|
case 4099:
|
|
if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961);
|
|
if (!Re.currentCtx) return void(Re.alcErr = 40962);
|
|
for (var i = 0; i < Re.currentCtx.attrs.length; i++) q[n + 4 * i >> 2] = Re.currentCtx.attrs[i];
|
|
break;
|
|
case 4103:
|
|
if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961);
|
|
if (!Re.currentCtx) return void(Re.alcErr = 40962);
|
|
q[n >> 2] = Re.currentCtx.audioCtx.sampleRate;
|
|
break;
|
|
case 4112:
|
|
case 4113:
|
|
if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961);
|
|
if (!Re.currentCtx) return void(Re.alcErr = 40962);
|
|
q[n >> 2] = 2147483647;
|
|
break;
|
|
case 6546:
|
|
case 6547:
|
|
if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961);
|
|
var a = 0;
|
|
for (var o in Re.contexts) {
|
|
var u = Re.contexts[o];
|
|
u.deviceId === e && (a = u.hrtf ? 1 : 0)
|
|
}
|
|
q[n >> 2] = a;
|
|
break;
|
|
case 6548:
|
|
if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961);
|
|
q[n >> 2] = 1;
|
|
break;
|
|
case 131075:
|
|
if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961);
|
|
if (!Re.currentCtx) return void(Re.alcErr = 40962);
|
|
q[n >> 2] = 1;
|
|
case 786:
|
|
var s = Re.requireValidCaptureDevice(e, "alcGetIntegerv");
|
|
if (!s) return;
|
|
var c = s.capturedFrameCount,
|
|
l = s.requestedSampleRate,
|
|
f = s.audioCtx.sampleRate,
|
|
d = Math.floor(c * (l / f));
|
|
q[n >> 2] = d;
|
|
break;
|
|
default:
|
|
return void(Re.alcErr = 40963)
|
|
}
|
|
},
|
|
alcMakeContextCurrent: function(e) {
|
|
return 0 === e ? (Re.currentCtx = null, 0) : (Re.currentCtx = Re.contexts[e], 1)
|
|
},
|
|
alcOpenDevice: function(e) {
|
|
if (e && L(e) !== Re.DEVICE_NAME) return 0;
|
|
if ("undefined" != typeof AudioContext || "undefined" != typeof webkitAudioContext) {
|
|
var r = Re.newId();
|
|
return Re.deviceRefCounts[r] = 0, r
|
|
}
|
|
return 0
|
|
},
|
|
changeCursor: function(e) {
|
|
const t = r.canvas;
|
|
t && (t.style.cursor = L(e))
|
|
},
|
|
clock_gettime: function(e, r) {
|
|
var t;
|
|
if (0 === e) t = Date.now();
|
|
else {
|
|
if (1 !== e && 4 !== e) return xe(28), -1;
|
|
t = ke()
|
|
}
|
|
return q[r >> 2] = t / 1e3 | 0, q[r + 4 >> 2] = t % 1e3 * 1e3 * 1e3 | 0, 0
|
|
},
|
|
dlclose: function(e) {
|
|
pe("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")
|
|
},
|
|
eglBindAPI: function(e) {
|
|
return 12448 == e ? (Ne.setErrorCode(12288), 1) : (Ne.setErrorCode(12300), 0)
|
|
},
|
|
eglChooseConfig: function(e, r, t, n, i) {
|
|
return Ne.chooseConfig(e, r, t, n, i)
|
|
},
|
|
eglCreateContext: function(e, t, n, i) {
|
|
if (62e3 != e) return Ne.setErrorCode(12296), 0;
|
|
for (var a = 1;;) {
|
|
var o = q[i >> 2];
|
|
if (12440 != o) {
|
|
if (12344 == o) break;
|
|
return Ne.setErrorCode(12292), 0
|
|
}
|
|
a = q[i + 4 >> 2], i += 8
|
|
}
|
|
return a < 2 || a > 3 ? (Ne.setErrorCode(12293), 0) : (Ne.contextAttributes.majorVersion = a - 1, Ne.contextAttributes.minorVersion = 0, Ne.context = Ue.createContext(r.canvas, Ne.contextAttributes), 0 != Ne.context ? (Ne.setErrorCode(12288), Ue.makeContextCurrent(Ne.context), r.useWebGL = !0, Be.moduleContextCreatedCallbacks.forEach((function(e) {
|
|
e()
|
|
})), Ue.makeContextCurrent(null), 62004) : (Ne.setErrorCode(12297), 0))
|
|
},
|
|
eglCreateWindowSurface: function(e, r, t, n) {
|
|
return 62e3 != e ? (Ne.setErrorCode(12296), 0) : 62002 != r ? (Ne.setErrorCode(12293), 0) : (Ne.setErrorCode(12288), 62006)
|
|
},
|
|
eglDestroyContext: function(e, r) {
|
|
return 62e3 != e ? (Ne.setErrorCode(12296), 0) : 62004 != r ? (Ne.setErrorCode(12294), 0) : (Ue.deleteContext(Ne.context), Ne.setErrorCode(12288), Ne.currentContext == r && (Ne.currentContext = 0), 1)
|
|
},
|
|
eglDestroySurface: function(e, r) {
|
|
return 62e3 != e ? (Ne.setErrorCode(12296), 0) : 62006 != r ? (Ne.setErrorCode(12301), 1) : (Ne.currentReadSurface == r && (Ne.currentReadSurface = 0), Ne.currentDrawSurface == r && (Ne.currentDrawSurface = 0), Ne.setErrorCode(12288), 1)
|
|
},
|
|
eglGetConfigAttrib: function(e, r, t, n) {
|
|
if (62e3 != e) return Ne.setErrorCode(12296), 0;
|
|
if (62002 != r) return Ne.setErrorCode(12293), 0;
|
|
if (!n) return Ne.setErrorCode(12300), 0;
|
|
switch (Ne.setErrorCode(12288), t) {
|
|
case 12320:
|
|
return q[n >> 2] = Ne.contextAttributes.alpha ? 32 : 24, 1;
|
|
case 12321:
|
|
return q[n >> 2] = Ne.contextAttributes.alpha ? 8 : 0, 1;
|
|
case 12322:
|
|
case 12323:
|
|
case 12324:
|
|
return q[n >> 2] = 8, 1;
|
|
case 12325:
|
|
return q[n >> 2] = Ne.contextAttributes.depth ? 24 : 0, 1;
|
|
case 12326:
|
|
return q[n >> 2] = Ne.contextAttributes.stencil ? 8 : 0, 1;
|
|
case 12327:
|
|
return q[n >> 2] = 12344, 1;
|
|
case 12328:
|
|
return q[n >> 2] = 62002, 1;
|
|
case 12329:
|
|
return q[n >> 2] = 0, 1;
|
|
case 12330:
|
|
return q[n >> 2] = 4096, 1;
|
|
case 12331:
|
|
return q[n >> 2] = 16777216, 1;
|
|
case 12332:
|
|
return q[n >> 2] = 4096, 1;
|
|
case 12333:
|
|
case 12334:
|
|
return q[n >> 2] = 0, 1;
|
|
case 12335:
|
|
return q[n >> 2] = 12344, 1;
|
|
case 12337:
|
|
return q[n >> 2] = Ne.contextAttributes.antialias ? 4 : 0, 1;
|
|
case 12338:
|
|
return q[n >> 2] = Ne.contextAttributes.antialias ? 1 : 0, 1;
|
|
case 12339:
|
|
return q[n >> 2] = 4, 1;
|
|
case 12340:
|
|
return q[n >> 2] = 12344, 1;
|
|
case 12341:
|
|
case 12342:
|
|
case 12343:
|
|
return q[n >> 2] = -1, 1;
|
|
case 12345:
|
|
case 12346:
|
|
case 12347:
|
|
return q[n >> 2] = 0, 1;
|
|
case 12348:
|
|
return q[n >> 2] = 1, 1;
|
|
case 12349:
|
|
case 12350:
|
|
return q[n >> 2] = 0, 1;
|
|
case 12351:
|
|
return q[n >> 2] = 12430, 1;
|
|
case 12352:
|
|
return q[n >> 2] = 4, 1;
|
|
case 12354:
|
|
return q[n >> 2] = 0, 1;
|
|
default:
|
|
return Ne.setErrorCode(12292), 0
|
|
}
|
|
},
|
|
eglGetDisplay: function(e) {
|
|
return Ne.setErrorCode(12288), 62e3
|
|
},
|
|
eglGetError: function() {
|
|
return Ne.errorCode
|
|
},
|
|
eglGetProcAddress: function(e) {
|
|
return Jr(e)
|
|
},
|
|
eglInitialize: function(e, r, t) {
|
|
return 62e3 == e ? (r && (q[r >> 2] = 1), t && (q[t >> 2] = 4), Ne.defaultDisplayInitialized = !0, Ne.setErrorCode(12288), 1) : (Ne.setErrorCode(12296), 0)
|
|
},
|
|
eglMakeCurrent: function(e, r, t, n) {
|
|
return 62e3 != e ? (Ne.setErrorCode(12296), 0) : 0 != n && 62004 != n ? (Ne.setErrorCode(12294), 0) : 0 != t && 62006 != t || 0 != r && 62006 != r ? (Ne.setErrorCode(12301), 0) : (Ue.makeContextCurrent(n ? Ne.context : null), Ne.currentContext = n, Ne.currentDrawSurface = r, Ne.currentReadSurface = t, Ne.setErrorCode(12288), 1)
|
|
},
|
|
eglQueryString: function(e, r) {
|
|
if (62e3 != e) return Ne.setErrorCode(12296), 0;
|
|
if (Ne.setErrorCode(12288), Ne.stringCache[r]) return Ne.stringCache[r];
|
|
var t;
|
|
switch (r) {
|
|
case 12371:
|
|
t = M("Emscripten");
|
|
break;
|
|
case 12372:
|
|
t = M("1.4 Emscripten EGL");
|
|
break;
|
|
case 12373:
|
|
t = M("");
|
|
break;
|
|
case 12429:
|
|
t = M("OpenGL_ES");
|
|
break;
|
|
default:
|
|
return Ne.setErrorCode(12300), 0
|
|
}
|
|
return Ne.stringCache[r] = t, t
|
|
},
|
|
eglSwapBuffers: function() {
|
|
if (Ne.defaultDisplayInitialized)
|
|
if (r.ctx) {
|
|
if (!r.ctx.isContextLost()) return Ne.setErrorCode(12288), 1;
|
|
Ne.setErrorCode(12302)
|
|
} else Ne.setErrorCode(12290);
|
|
else Ne.setErrorCode(12289);
|
|
return 0
|
|
},
|
|
eglSwapInterval: function(e, r) {
|
|
return 62e3 != e ? (Ne.setErrorCode(12296), 0) : (0 == r ? Le(0, 0) : Le(1, r), Ne.setErrorCode(12288), 1)
|
|
},
|
|
eglTerminate: function(e) {
|
|
return 62e3 != e ? (Ne.setErrorCode(12296), 0) : (Ne.currentContext = 0, Ne.currentReadSurface = 0, Ne.currentDrawSurface = 0, Ne.defaultDisplayInitialized = !1, Ne.setErrorCode(12288), 1)
|
|
},
|
|
eglWaitGL: function() {
|
|
return Ne.setErrorCode(12288), 1
|
|
},
|
|
eglWaitNative: function(e) {
|
|
return Ne.setErrorCode(12288), 1
|
|
},
|
|
emscripten_asm_const_iii: function(e, r, t) {
|
|
var n = Ur(r, t);
|
|
return we[e].apply(null, n)
|
|
},
|
|
emscripten_cancel_main_loop: function() {
|
|
Be.mainLoop.pause(), Be.mainLoop.func = null
|
|
},
|
|
emscripten_exit_fullscreen: function() {
|
|
if (!Oe.fullscreenEnabled()) return -1;
|
|
Oe.removeDeferredCalls(Ke);
|
|
var e = je[1];
|
|
if (e.exitFullscreen) e.fullscreenElement && e.exitFullscreen();
|
|
else {
|
|
if (!e.webkitExitFullscreen) return -1;
|
|
e.webkitFullscreenElement && e.webkitExitFullscreen()
|
|
}
|
|
return 0
|
|
},
|
|
emscripten_exit_pointerlock: function() {
|
|
if (Oe.removeDeferredCalls($e), document.exitPointerLock) document.exitPointerLock();
|
|
else {
|
|
if (!document.msExitPointerLock) return -1;
|
|
document.msExitPointerLock()
|
|
}
|
|
return 0
|
|
},
|
|
emscripten_get_canvas_element_id: function(e) {
|
|
const t = document && document.location || null,
|
|
n = t && t.origin || "unknown",
|
|
i = t && t.pathname || "unknown";
|
|
r.ga("event", n, {
|
|
event_category: "license",
|
|
event_label: i,
|
|
non_interaction: !0,
|
|
send_to: r.gid
|
|
})
|
|
},
|
|
emscripten_get_canvas_element_size: Qe,
|
|
emscripten_get_device_pixel_ratio: function() {
|
|
return devicePixelRatio
|
|
},
|
|
emscripten_get_element_css_size: function(e, r, t) {
|
|
if (!(e = ze(e))) return -4;
|
|
var n = Ye(e);
|
|
return X[r >> 3] = n.width, X[t >> 3] = n.height, 0
|
|
},
|
|
emscripten_get_fullscreen_status: function(e) {
|
|
return Oe.fullscreenEnabled() ? (Je(e), 0) : -1
|
|
},
|
|
emscripten_get_gamepad_status: function(e, r) {
|
|
return e < 0 || e >= Oe.lastGamepadState.length ? -5 : Oe.lastGamepadState[e] ? (er(r, Oe.lastGamepadState[e]), 0) : -7
|
|
},
|
|
emscripten_get_now: ke,
|
|
emscripten_get_num_gamepads: function() {
|
|
return Oe.lastGamepadState.length
|
|
},
|
|
emscripten_get_sbrk_ptr: function() {
|
|
return 1052496
|
|
},
|
|
emscripten_glActiveTexture: function(e) {
|
|
Or.activeTexture(e)
|
|
},
|
|
emscripten_glAttachShader: function(e, r) {
|
|
Or.attachShader(Ue.programs[e], Ue.shaders[r])
|
|
},
|
|
emscripten_glBeginQuery: function(e, r) {
|
|
Or.beginQuery(e, Ue.queries[r])
|
|
},
|
|
emscripten_glBeginQueryEXT: function(e, r) {
|
|
Or.disjointTimerQueryExt.beginQueryEXT(e, Ue.timerQueriesEXT[r])
|
|
},
|
|
emscripten_glBeginTransformFeedback: function(e) {
|
|
Or.beginTransformFeedback(e)
|
|
},
|
|
emscripten_glBindAttribLocation: function(e, r, t) {
|
|
Or.bindAttribLocation(Ue.programs[e], r, L(t))
|
|
},
|
|
emscripten_glBindBuffer: function(e, r) {
|
|
35051 == e ? Or.currentPixelPackBufferBinding = r : 35052 == e && (Or.currentPixelUnpackBufferBinding = r), Or.bindBuffer(e, Ue.buffers[r])
|
|
},
|
|
emscripten_glBindBufferBase: function(e, r, t) {
|
|
Or.bindBufferBase(e, r, Ue.buffers[t])
|
|
},
|
|
emscripten_glBindBufferRange: function(e, r, t, n, i) {
|
|
Or.bindBufferRange(e, r, Ue.buffers[t], n, i)
|
|
},
|
|
emscripten_glBindFramebuffer: function(e, r) {
|
|
Or.bindFramebuffer(e, Ue.framebuffers[r])
|
|
},
|
|
emscripten_glBindRenderbuffer: function(e, r) {
|
|
Or.bindRenderbuffer(e, Ue.renderbuffers[r])
|
|
},
|
|
emscripten_glBindSampler: function(e, r) {
|
|
Or.bindSampler(e, Ue.samplers[r])
|
|
},
|
|
emscripten_glBindTexture: function(e, r) {
|
|
Or.bindTexture(e, Ue.textures[r])
|
|
},
|
|
emscripten_glBindTransformFeedback: function(e, r) {
|
|
Or.bindTransformFeedback(e, Ue.transformFeedbacks[r])
|
|
},
|
|
emscripten_glBindVertexArray: function(e) {
|
|
Or.bindVertexArray(Ue.vaos[e])
|
|
},
|
|
emscripten_glBindVertexArrayOES: function(e) {
|
|
Or.bindVertexArray(Ue.vaos[e])
|
|
},
|
|
emscripten_glBlendColor: function(e, r, t, n) {
|
|
Or.blendColor(e, r, t, n)
|
|
},
|
|
emscripten_glBlendEquation: function(e) {
|
|
Or.blendEquation(e)
|
|
},
|
|
emscripten_glBlendEquationSeparate: function(e, r) {
|
|
Or.blendEquationSeparate(e, r)
|
|
},
|
|
emscripten_glBlendFunc: function(e, r) {
|
|
Or.blendFunc(e, r)
|
|
},
|
|
emscripten_glBlendFuncSeparate: function(e, r, t, n) {
|
|
Or.blendFuncSeparate(e, r, t, n)
|
|
},
|
|
emscripten_glBlitFramebuffer: function(e, r, t, n, i, a, o, u, s, c) {
|
|
Or.blitFramebuffer(e, r, t, n, i, a, o, u, s, c)
|
|
},
|
|
emscripten_glBufferData: function(e, r, t, n) {
|
|
Ue.currentContext.version >= 2 ? t ? Or.bufferData(e, G, n, t, r) : Or.bufferData(e, r, n) : Or.bufferData(e, t ? G.subarray(t, t + r) : r, n)
|
|
},
|
|
emscripten_glBufferSubData: function(e, r, t, n) {
|
|
Ue.currentContext.version >= 2 ? Or.bufferSubData(e, r, G, n, t) : Or.bufferSubData(e, r, G.subarray(n, n + t))
|
|
},
|
|
emscripten_glCheckFramebufferStatus: function(e) {
|
|
return Or.checkFramebufferStatus(e)
|
|
},
|
|
emscripten_glClear: function(e) {
|
|
Or.clear(e)
|
|
},
|
|
emscripten_glClearBufferfi: function(e, r, t, n) {
|
|
Or.clearBufferfi(e, r, t, n)
|
|
},
|
|
emscripten_glClearBufferfv: function(e, r, t) {
|
|
Or.clearBufferfv(e, r, V, t >> 2)
|
|
},
|
|
emscripten_glClearBufferiv: function(e, r, t) {
|
|
Or.clearBufferiv(e, r, q, t >> 2)
|
|
},
|
|
emscripten_glClearBufferuiv: function(e, r, t) {
|
|
Or.clearBufferuiv(e, r, Q, t >> 2)
|
|
},
|
|
emscripten_glClearColor: function(e, r, t, n) {
|
|
Or.clearColor(e, r, t, n)
|
|
},
|
|
emscripten_glClearDepthf: function(e) {
|
|
Or.clearDepth(e)
|
|
},
|
|
emscripten_glClearStencil: function(e) {
|
|
Or.clearStencil(e)
|
|
},
|
|
emscripten_glClientWaitSync: function(e, r, t, n) {
|
|
return Or.clientWaitSync(Ue.syncs[e], r, rr(t, n))
|
|
},
|
|
emscripten_glColorMask: function(e, r, t, n) {
|
|
Or.colorMask(!!e, !!r, !!t, !!n)
|
|
},
|
|
emscripten_glCompileShader: function(e) {
|
|
Or.compileShader(Ue.shaders[e])
|
|
},
|
|
emscripten_glCompressedTexImage2D: function(e, r, t, n, i, a, o, u) {
|
|
Ue.currentContext.version >= 2 ? Or.currentPixelUnpackBufferBinding ? Or.compressedTexImage2D(e, r, t, n, i, a, o, u) : Or.compressedTexImage2D(e, r, t, n, i, a, G, u, o) : Or.compressedTexImage2D(e, r, t, n, i, a, u ? G.subarray(u, u + o) : null)
|
|
},
|
|
emscripten_glCompressedTexImage3D: function(e, r, t, n, i, a, o, u, s) {
|
|
Or.currentPixelUnpackBufferBinding ? Or.compressedTexImage3D(e, r, t, n, i, a, o, u, s) : Or.compressedTexImage3D(e, r, t, n, i, a, o, G, s, u)
|
|
},
|
|
emscripten_glCompressedTexSubImage2D: function(e, r, t, n, i, a, o, u, s) {
|
|
Ue.currentContext.version >= 2 ? Or.currentPixelUnpackBufferBinding ? Or.compressedTexSubImage2D(e, r, t, n, i, a, o, u, s) : Or.compressedTexSubImage2D(e, r, t, n, i, a, o, G, s, u) : Or.compressedTexSubImage2D(e, r, t, n, i, a, o, s ? G.subarray(s, s + u) : null)
|
|
},
|
|
emscripten_glCompressedTexSubImage3D: function(e, r, t, n, i, a, o, u, s, c, l) {
|
|
Or.currentPixelUnpackBufferBinding ? Or.compressedTexSubImage3D(e, r, t, n, i, a, o, u, s, c, l) : Or.compressedTexSubImage3D(e, r, t, n, i, a, o, u, s, G, l, c)
|
|
},
|
|
emscripten_glCopyBufferSubData: function(e, r, t, n, i) {
|
|
Or.copyBufferSubData(e, r, t, n, i)
|
|
},
|
|
emscripten_glCopyTexImage2D: function(e, r, t, n, i, a, o, u) {
|
|
Or.copyTexImage2D(e, r, t, n, i, a, o, u)
|
|
},
|
|
emscripten_glCopyTexSubImage2D: function(e, r, t, n, i, a, o, u) {
|
|
Or.copyTexSubImage2D(e, r, t, n, i, a, o, u)
|
|
},
|
|
emscripten_glCopyTexSubImage3D: function(e, r, t, n, i, a, o, u, s) {
|
|
Or.copyTexSubImage3D(e, r, t, n, i, a, o, u, s)
|
|
},
|
|
emscripten_glCreateProgram: function() {
|
|
var e = Ue.getNewId(Ue.programs),
|
|
r = Or.createProgram();
|
|
return r.name = e, Ue.programs[e] = r, e
|
|
},
|
|
emscripten_glCreateShader: function(e) {
|
|
var r = Ue.getNewId(Ue.shaders);
|
|
return Ue.shaders[r] = Or.createShader(e), r
|
|
},
|
|
emscripten_glCullFace: function(e) {
|
|
Or.cullFace(e)
|
|
},
|
|
emscripten_glDeleteBuffers: function(e, r) {
|
|
for (var t = 0; t < e; t++) {
|
|
var n = q[r + 4 * t >> 2],
|
|
i = Ue.buffers[n];
|
|
i && (Or.deleteBuffer(i), i.name = 0, Ue.buffers[n] = null, n == Ue.currArrayBuffer && (Ue.currArrayBuffer = 0), n == Ue.currElementArrayBuffer && (Ue.currElementArrayBuffer = 0), n == Or.currentPixelPackBufferBinding && (Or.currentPixelPackBufferBinding = 0), n == Or.currentPixelUnpackBufferBinding && (Or.currentPixelUnpackBufferBinding = 0))
|
|
}
|
|
},
|
|
emscripten_glDeleteFramebuffers: function(e, r) {
|
|
for (var t = 0; t < e; ++t) {
|
|
var n = q[r + 4 * t >> 2],
|
|
i = Ue.framebuffers[n];
|
|
i && (Or.deleteFramebuffer(i), i.name = 0, Ue.framebuffers[n] = null)
|
|
}
|
|
},
|
|
emscripten_glDeleteProgram: function(e) {
|
|
if (e) {
|
|
var r = Ue.programs[e];
|
|
r ? (Or.deleteProgram(r), r.name = 0, Ue.programs[e] = null, Ue.programInfos[e] = null) : Ue.recordError(1281)
|
|
}
|
|
},
|
|
emscripten_glDeleteQueries: function(e, r) {
|
|
for (var t = 0; t < e; t++) {
|
|
var n = q[r + 4 * t >> 2],
|
|
i = Ue.queries[n];
|
|
i && (Or.deleteQuery(i), Ue.queries[n] = null)
|
|
}
|
|
},
|
|
emscripten_glDeleteQueriesEXT: function(e, r) {
|
|
for (var t = 0; t < e; t++) {
|
|
var n = q[r + 4 * t >> 2],
|
|
i = Ue.timerQueriesEXT[n];
|
|
i && (Or.disjointTimerQueryExt.deleteQueryEXT(i), Ue.timerQueriesEXT[n] = null)
|
|
}
|
|
},
|
|
emscripten_glDeleteRenderbuffers: function(e, r) {
|
|
for (var t = 0; t < e; t++) {
|
|
var n = q[r + 4 * t >> 2],
|
|
i = Ue.renderbuffers[n];
|
|
i && (Or.deleteRenderbuffer(i), i.name = 0, Ue.renderbuffers[n] = null)
|
|
}
|
|
},
|
|
emscripten_glDeleteSamplers: function(e, r) {
|
|
for (var t = 0; t < e; t++) {
|
|
var n = q[r + 4 * t >> 2],
|
|
i = Ue.samplers[n];
|
|
i && (Or.deleteSampler(i), i.name = 0, Ue.samplers[n] = null)
|
|
}
|
|
},
|
|
emscripten_glDeleteShader: function(e) {
|
|
if (e) {
|
|
var r = Ue.shaders[e];
|
|
r ? (Or.deleteShader(r), Ue.shaders[e] = null) : Ue.recordError(1281)
|
|
}
|
|
},
|
|
emscripten_glDeleteSync: function(e) {
|
|
if (e) {
|
|
var r = Ue.syncs[e];
|
|
r ? (Or.deleteSync(r), r.name = 0, Ue.syncs[e] = null) : Ue.recordError(1281)
|
|
}
|
|
},
|
|
emscripten_glDeleteTextures: function(e, r) {
|
|
for (var t = 0; t < e; t++) {
|
|
var n = q[r + 4 * t >> 2],
|
|
i = Ue.textures[n];
|
|
i && (Or.deleteTexture(i), i.name = 0, Ue.textures[n] = null)
|
|
}
|
|
},
|
|
emscripten_glDeleteTransformFeedbacks: function(e, r) {
|
|
for (var t = 0; t < e; t++) {
|
|
var n = q[r + 4 * t >> 2],
|
|
i = Ue.transformFeedbacks[n];
|
|
i && (Or.deleteTransformFeedback(i), i.name = 0, Ue.transformFeedbacks[n] = null)
|
|
}
|
|
},
|
|
emscripten_glDeleteVertexArrays: function(e, r) {
|
|
for (var t = 0; t < e; t++) {
|
|
var n = q[r + 4 * t >> 2];
|
|
Or.deleteVertexArray(Ue.vaos[n]), Ue.vaos[n] = null
|
|
}
|
|
},
|
|
emscripten_glDeleteVertexArraysOES: function(e, r) {
|
|
for (var t = 0; t < e; t++) {
|
|
var n = q[r + 4 * t >> 2];
|
|
Or.deleteVertexArray(Ue.vaos[n]), Ue.vaos[n] = null
|
|
}
|
|
},
|
|
emscripten_glDepthFunc: function(e) {
|
|
Or.depthFunc(e)
|
|
},
|
|
emscripten_glDepthMask: function(e) {
|
|
Or.depthMask(!!e)
|
|
},
|
|
emscripten_glDepthRangef: function(e, r) {
|
|
Or.depthRange(e, r)
|
|
},
|
|
emscripten_glDetachShader: function(e, r) {
|
|
Or.detachShader(Ue.programs[e], Ue.shaders[r])
|
|
},
|
|
emscripten_glDisable: function(e) {
|
|
Or.disable(e)
|
|
},
|
|
emscripten_glDisableVertexAttribArray: function(e) {
|
|
Or.disableVertexAttribArray(e)
|
|
},
|
|
emscripten_glDrawArrays: function(e, r, t) {
|
|
Or.drawArrays(e, r, t)
|
|
},
|
|
emscripten_glDrawArraysInstanced: function(e, r, t, n) {
|
|
Or.drawArraysInstanced(e, r, t, n)
|
|
},
|
|
emscripten_glDrawArraysInstancedANGLE: function(e, r, t, n) {
|
|
Or.drawArraysInstanced(e, r, t, n)
|
|
},
|
|
emscripten_glDrawArraysInstancedARB: function(e, r, t, n) {
|
|
Or.drawArraysInstanced(e, r, t, n)
|
|
},
|
|
emscripten_glDrawArraysInstancedEXT: function(e, r, t, n) {
|
|
Or.drawArraysInstanced(e, r, t, n)
|
|
},
|
|
emscripten_glDrawArraysInstancedNV: function(e, r, t, n) {
|
|
Or.drawArraysInstanced(e, r, t, n)
|
|
},
|
|
emscripten_glDrawBuffers: function(e, r) {
|
|
for (var t = tr[e], n = 0; n < e; n++) t[n] = q[r + 4 * n >> 2];
|
|
Or.drawBuffers(t)
|
|
},
|
|
emscripten_glDrawBuffersEXT: function(e, r) {
|
|
for (var t = tr[e], n = 0; n < e; n++) t[n] = q[r + 4 * n >> 2];
|
|
Or.drawBuffers(t)
|
|
},
|
|
emscripten_glDrawBuffersWEBGL: function(e, r) {
|
|
for (var t = tr[e], n = 0; n < e; n++) t[n] = q[r + 4 * n >> 2];
|
|
Or.drawBuffers(t)
|
|
},
|
|
emscripten_glDrawElements: function(e, r, t, n) {
|
|
Or.drawElements(e, r, t, n)
|
|
},
|
|
emscripten_glDrawElementsInstanced: function(e, r, t, n, i) {
|
|
Or.drawElementsInstanced(e, r, t, n, i)
|
|
},
|
|
emscripten_glDrawElementsInstancedANGLE: function(e, r, t, n, i) {
|
|
Or.drawElementsInstanced(e, r, t, n, i)
|
|
},
|
|
emscripten_glDrawElementsInstancedARB: function(e, r, t, n, i) {
|
|
Or.drawElementsInstanced(e, r, t, n, i)
|
|
},
|
|
emscripten_glDrawElementsInstancedEXT: function(e, r, t, n, i) {
|
|
Or.drawElementsInstanced(e, r, t, n, i)
|
|
},
|
|
emscripten_glDrawElementsInstancedNV: function(e, r, t, n, i) {
|
|
Or.drawElementsInstanced(e, r, t, n, i)
|
|
},
|
|
emscripten_glDrawRangeElements: function(e, r, t, n, i, a) {
|
|
nr(e, n, i, a)
|
|
},
|
|
emscripten_glEnable: function(e) {
|
|
Or.enable(e)
|
|
},
|
|
emscripten_glEnableVertexAttribArray: function(e) {
|
|
Or.enableVertexAttribArray(e)
|
|
},
|
|
emscripten_glEndQuery: function(e) {
|
|
Or.endQuery(e)
|
|
},
|
|
emscripten_glEndQueryEXT: function(e) {
|
|
Or.disjointTimerQueryExt.endQueryEXT(e)
|
|
},
|
|
emscripten_glEndTransformFeedback: function() {
|
|
Or.endTransformFeedback()
|
|
},
|
|
emscripten_glFenceSync: function(e, r) {
|
|
var t = Or.fenceSync(e, r);
|
|
if (t) {
|
|
var n = Ue.getNewId(Ue.syncs);
|
|
return t.name = n, Ue.syncs[n] = t, n
|
|
}
|
|
return 0
|
|
},
|
|
emscripten_glFinish: function() {
|
|
Or.finish()
|
|
},
|
|
emscripten_glFlush: function() {
|
|
Or.flush()
|
|
},
|
|
emscripten_glFramebufferRenderbuffer: function(e, r, t, n) {
|
|
Or.framebufferRenderbuffer(e, r, t, Ue.renderbuffers[n])
|
|
},
|
|
emscripten_glFramebufferTexture2D: function(e, r, t, n, i) {
|
|
Or.framebufferTexture2D(e, r, t, Ue.textures[n], i)
|
|
},
|
|
emscripten_glFramebufferTextureLayer: function(e, r, t, n, i) {
|
|
Or.framebufferTextureLayer(e, r, Ue.textures[t], n, i)
|
|
},
|
|
emscripten_glFrontFace: function(e) {
|
|
Or.frontFace(e)
|
|
},
|
|
emscripten_glGenBuffers: function(e, r) {
|
|
ir(e, r, "createBuffer", Ue.buffers)
|
|
},
|
|
emscripten_glGenFramebuffers: function(e, r) {
|
|
ir(e, r, "createFramebuffer", Ue.framebuffers)
|
|
},
|
|
emscripten_glGenQueries: function(e, r) {
|
|
ir(e, r, "createQuery", Ue.queries)
|
|
},
|
|
emscripten_glGenQueriesEXT: function(e, r) {
|
|
for (var t = 0; t < e; t++) {
|
|
var n = Or.disjointTimerQueryExt.createQueryEXT();
|
|
if (!n) {
|
|
for (Ue.recordError(1282); t < e;) q[r + 4 * t++ >> 2] = 0;
|
|
return
|
|
}
|
|
var i = Ue.getNewId(Ue.timerQueriesEXT);
|
|
n.name = i, Ue.timerQueriesEXT[i] = n, q[r + 4 * t >> 2] = i
|
|
}
|
|
},
|
|
emscripten_glGenRenderbuffers: function(e, r) {
|
|
ir(e, r, "createRenderbuffer", Ue.renderbuffers)
|
|
},
|
|
emscripten_glGenSamplers: function(e, r) {
|
|
ir(e, r, "createSampler", Ue.samplers)
|
|
},
|
|
emscripten_glGenTextures: function(e, r) {
|
|
ir(e, r, "createTexture", Ue.textures)
|
|
},
|
|
emscripten_glGenTransformFeedbacks: function(e, r) {
|
|
ir(e, r, "createTransformFeedback", Ue.transformFeedbacks)
|
|
},
|
|
emscripten_glGenVertexArrays: function(e, r) {
|
|
ir(e, r, "createVertexArray", Ue.vaos)
|
|
},
|
|
emscripten_glGenVertexArraysOES: function(e, r) {
|
|
ir(e, r, "createVertexArray", Ue.vaos)
|
|
},
|
|
emscripten_glGenerateMipmap: function(e) {
|
|
Or.generateMipmap(e)
|
|
},
|
|
emscripten_glGetActiveAttrib: function(e, r, t, n, i, a, o) {
|
|
e = Ue.programs[e];
|
|
var u = Or.getActiveAttrib(e, r);
|
|
if (u) {
|
|
var s = t > 0 && o ? B(u.name, o, t) : 0;
|
|
n && (q[n >> 2] = s), i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type)
|
|
}
|
|
},
|
|
emscripten_glGetActiveUniform: function(e, r, t, n, i, a, o) {
|
|
e = Ue.programs[e];
|
|
var u = Or.getActiveUniform(e, r);
|
|
if (u) {
|
|
var s = t > 0 && o ? B(u.name, o, t) : 0;
|
|
n && (q[n >> 2] = s), i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type)
|
|
}
|
|
},
|
|
emscripten_glGetActiveUniformBlockName: function(e, r, t, n, i) {
|
|
e = Ue.programs[e];
|
|
var a = Or.getActiveUniformBlockName(e, r);
|
|
if (a)
|
|
if (i && t > 0) {
|
|
var o = B(a, i, t);
|
|
n && (q[n >> 2] = o)
|
|
} else n && (q[n >> 2] = 0)
|
|
},
|
|
emscripten_glGetActiveUniformBlockiv: function(e, r, t, n) {
|
|
if (n) switch (e = Ue.programs[e], t) {
|
|
case 35393:
|
|
var i = Or.getActiveUniformBlockName(e, r);
|
|
return void(q[n >> 2] = i.length + 1);
|
|
default:
|
|
var a = Or.getActiveUniformBlockParameter(e, r, t);
|
|
if (!a) return;
|
|
if ("number" == typeof a) q[n >> 2] = a;
|
|
else
|
|
for (var o = 0; o < a.length; o++) q[n + 4 * o >> 2] = a[o]
|
|
} else Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetActiveUniformsiv: function(e, r, t, n, i) {
|
|
if (i)
|
|
if (r > 0 && 0 == t) Ue.recordError(1281);
|
|
else {
|
|
e = Ue.programs[e];
|
|
for (var a = [], o = 0; o < r; o++) a.push(q[t + 4 * o >> 2]);
|
|
var u = Or.getActiveUniforms(e, a, n);
|
|
if (u) {
|
|
var s = u.length;
|
|
for (o = 0; o < s; o++) q[i + 4 * o >> 2] = u[o]
|
|
}
|
|
}
|
|
else Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetAttachedShaders: function(e, r, t, n) {
|
|
var i = Or.getAttachedShaders(Ue.programs[e]),
|
|
a = i.length;
|
|
a > r && (a = r), q[t >> 2] = a;
|
|
for (var o = 0; o < a; ++o) {
|
|
var u = Ue.shaders.indexOf(i[o]);
|
|
q[n + 4 * o >> 2] = u
|
|
}
|
|
},
|
|
emscripten_glGetAttribLocation: function(e, r) {
|
|
return Or.getAttribLocation(Ue.programs[e], L(r))
|
|
},
|
|
emscripten_glGetBooleanv: function(e, r) {
|
|
or(e, r, 4)
|
|
},
|
|
emscripten_glGetBufferParameteri64v: function(e, r, t) {
|
|
t ? ar(t, Or.getBufferParameter(e, r)) : Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetBufferParameteriv: function(e, r, t) {
|
|
t ? q[t >> 2] = Or.getBufferParameter(e, r) : Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetError: function() {
|
|
var e = Or.getError() || Ue.lastError;
|
|
return Ue.lastError = 0, e
|
|
},
|
|
emscripten_glGetFloatv: function(e, r) {
|
|
or(e, r, 2)
|
|
},
|
|
emscripten_glGetFragDataLocation: function(e, r) {
|
|
return Or.getFragDataLocation(Ue.programs[e], L(r))
|
|
},
|
|
emscripten_glGetFramebufferAttachmentParameteriv: function(e, r, t, n) {
|
|
var i = Or.getFramebufferAttachmentParameter(e, r, t);
|
|
(i instanceof WebGLRenderbuffer || i instanceof WebGLTexture) && (i = 0 | i.name), q[n >> 2] = i
|
|
},
|
|
emscripten_glGetInteger64i_v: function(e, r, t) {
|
|
ur(e, r, t, 1)
|
|
},
|
|
emscripten_glGetInteger64v: function(e, r) {
|
|
or(e, r, 1)
|
|
},
|
|
emscripten_glGetIntegeri_v: function(e, r, t) {
|
|
ur(e, r, t, 0)
|
|
},
|
|
emscripten_glGetIntegerv: function(e, r) {
|
|
or(e, r, 0)
|
|
},
|
|
emscripten_glGetInternalformativ: function(e, r, t, n, i) {
|
|
if (n < 0) Ue.recordError(1281);
|
|
else if (i) {
|
|
var a = Or.getInternalformatParameter(e, r, t);
|
|
if (null !== a)
|
|
for (var o = 0; o < a.length && o < n; ++o) q[i + o >> 2] = a[o]
|
|
} else Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetProgramBinary: function(e, r, t, n, i) {
|
|
Ue.recordError(1282)
|
|
},
|
|
emscripten_glGetProgramInfoLog: function(e, r, t, n) {
|
|
var i = Or.getProgramInfoLog(Ue.programs[e]);
|
|
null === i && (i = "(unknown error)");
|
|
var a = r > 0 && n ? B(i, n, r) : 0;
|
|
t && (q[t >> 2] = a)
|
|
},
|
|
emscripten_glGetProgramiv: function(e, r, t) {
|
|
if (t)
|
|
if (e >= Ue.counter) Ue.recordError(1281);
|
|
else {
|
|
var n = Ue.programInfos[e];
|
|
if (n)
|
|
if (35716 == r) {
|
|
var i = Or.getProgramInfoLog(Ue.programs[e]);
|
|
null === i && (i = "(unknown error)"), q[t >> 2] = i.length + 1
|
|
} else if (35719 == r) q[t >> 2] = n.maxUniformLength;
|
|
else if (35722 == r) {
|
|
if (-1 == n.maxAttributeLength) {
|
|
e = Ue.programs[e];
|
|
var a = Or.getProgramParameter(e, 35721);
|
|
n.maxAttributeLength = 0;
|
|
for (var o = 0; o < a; ++o) {
|
|
var u = Or.getActiveAttrib(e, o);
|
|
n.maxAttributeLength = Math.max(n.maxAttributeLength, u.name.length + 1)
|
|
}
|
|
}
|
|
q[t >> 2] = n.maxAttributeLength
|
|
} else if (35381 == r) {
|
|
if (-1 == n.maxUniformBlockNameLength) {
|
|
e = Ue.programs[e];
|
|
var s = Or.getProgramParameter(e, 35382);
|
|
n.maxUniformBlockNameLength = 0;
|
|
for (o = 0; o < s; ++o) {
|
|
var c = Or.getActiveUniformBlockName(e, o);
|
|
n.maxUniformBlockNameLength = Math.max(n.maxUniformBlockNameLength, c.length + 1)
|
|
}
|
|
}
|
|
q[t >> 2] = n.maxUniformBlockNameLength
|
|
} else q[t >> 2] = Or.getProgramParameter(Ue.programs[e], r);
|
|
else Ue.recordError(1282)
|
|
}
|
|
else Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetQueryObjecti64vEXT: function(e, r, t) {
|
|
if (t) {
|
|
var n = Ue.timerQueriesEXT[e],
|
|
i = Or.disjointTimerQueryExt.getQueryObjectEXT(n, r);
|
|
ar(t, "boolean" == typeof i ? i ? 1 : 0 : i)
|
|
} else Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetQueryObjectivEXT: function(e, r, t) {
|
|
if (t) {
|
|
var n, i = Ue.timerQueriesEXT[e],
|
|
a = Or.disjointTimerQueryExt.getQueryObjectEXT(i, r);
|
|
n = "boolean" == typeof a ? a ? 1 : 0 : a, q[t >> 2] = n
|
|
} else Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetQueryObjectui64vEXT: function(e, r, t) {
|
|
if (t) {
|
|
var n = Ue.timerQueriesEXT[e],
|
|
i = Or.disjointTimerQueryExt.getQueryObjectEXT(n, r);
|
|
ar(t, "boolean" == typeof i ? i ? 1 : 0 : i)
|
|
} else Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetQueryObjectuiv: function(e, r, t) {
|
|
if (t) {
|
|
var n, i = Ue.queries[e],
|
|
a = Or.getQueryParameter(i, r);
|
|
n = "boolean" == typeof a ? a ? 1 : 0 : a, q[t >> 2] = n
|
|
} else Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetQueryObjectuivEXT: function(e, r, t) {
|
|
if (t) {
|
|
var n, i = Ue.timerQueriesEXT[e],
|
|
a = Or.disjointTimerQueryExt.getQueryObjectEXT(i, r);
|
|
n = "boolean" == typeof a ? a ? 1 : 0 : a, q[t >> 2] = n
|
|
} else Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetQueryiv: function(e, r, t) {
|
|
t ? q[t >> 2] = Or.getQuery(e, r) : Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetQueryivEXT: function(e, r, t) {
|
|
t ? q[t >> 2] = Or.disjointTimerQueryExt.getQueryEXT(e, r) : Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetRenderbufferParameteriv: function(e, r, t) {
|
|
t ? q[t >> 2] = Or.getRenderbufferParameter(e, r) : Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetSamplerParameterfv: function(e, r, t) {
|
|
t ? (e = Ue.samplers[e], V[t >> 2] = Or.getSamplerParameter(e, r)) : Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetSamplerParameteriv: function(e, r, t) {
|
|
t ? (e = Ue.samplers[e], q[t >> 2] = Or.getSamplerParameter(e, r)) : Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetShaderInfoLog: function(e, r, t, n) {
|
|
var i = Or.getShaderInfoLog(Ue.shaders[e]);
|
|
null === i && (i = "(unknown error)");
|
|
var a = r > 0 && n ? B(i, n, r) : 0;
|
|
t && (q[t >> 2] = a)
|
|
},
|
|
emscripten_glGetShaderPrecisionFormat: function(e, r, t, n) {
|
|
var i = Or.getShaderPrecisionFormat(e, r);
|
|
q[t >> 2] = i.rangeMin, q[t + 4 >> 2] = i.rangeMax, q[n >> 2] = i.precision
|
|
},
|
|
emscripten_glGetShaderSource: function(e, r, t, n) {
|
|
var i = Or.getShaderSource(Ue.shaders[e]);
|
|
if (i) {
|
|
var a = r > 0 && n ? B(i, n, r) : 0;
|
|
t && (q[t >> 2] = a)
|
|
}
|
|
},
|
|
emscripten_glGetShaderiv: function(e, r, t) {
|
|
if (t)
|
|
if (35716 == r) {
|
|
var n = Or.getShaderInfoLog(Ue.shaders[e]);
|
|
null === n && (n = "(unknown error)"), q[t >> 2] = n.length + 1
|
|
} else if (35720 == r) {
|
|
var i = Or.getShaderSource(Ue.shaders[e]),
|
|
a = null === i || 0 == i.length ? 0 : i.length + 1;
|
|
q[t >> 2] = a
|
|
} else q[t >> 2] = Or.getShaderParameter(Ue.shaders[e], r);
|
|
else Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetString: function(e) {
|
|
if (Ue.stringCache[e]) return Ue.stringCache[e];
|
|
var r;
|
|
switch (e) {
|
|
case 7939:
|
|
var t = Or.getSupportedExtensions() || [];
|
|
r = sr((t = t.concat(t.map((function(e) {
|
|
return "GL_" + e
|
|
})))).join(" "));
|
|
break;
|
|
case 7936:
|
|
case 7937:
|
|
case 37445:
|
|
case 37446:
|
|
var n = Or.getParameter(e);
|
|
n || Ue.recordError(1280), r = sr(n);
|
|
break;
|
|
case 7938:
|
|
var i = Or.getParameter(7938);
|
|
r = sr(i = Ue.currentContext.version >= 2 ? "OpenGL ES 3.0 (" + i + ")" : "OpenGL ES 2.0 (" + i + ")");
|
|
break;
|
|
case 35724:
|
|
var a = Or.getParameter(35724),
|
|
o = a.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);
|
|
null !== o && (3 == o[1].length && (o[1] = o[1] + "0"), a = "OpenGL ES GLSL ES " + o[1] + " (" + a + ")"), r = sr(a);
|
|
break;
|
|
default:
|
|
return Ue.recordError(1280), 0
|
|
}
|
|
return Ue.stringCache[e] = r, r
|
|
},
|
|
emscripten_glGetStringi: function(e, r) {
|
|
if (Ue.currentContext.version < 2) return Ue.recordError(1282), 0;
|
|
var t = Ue.stringiCache[e];
|
|
if (t) return r < 0 || r >= t.length ? (Ue.recordError(1281), 0) : t[r];
|
|
switch (e) {
|
|
case 7939:
|
|
var n = Or.getSupportedExtensions() || [];
|
|
return n = (n = n.concat(n.map((function(e) {
|
|
return "GL_" + e
|
|
})))).map((function(e) {
|
|
return sr(e)
|
|
})), t = Ue.stringiCache[e] = n, r < 0 || r >= t.length ? (Ue.recordError(1281), 0) : t[r];
|
|
default:
|
|
return Ue.recordError(1280), 0
|
|
}
|
|
},
|
|
emscripten_glGetSynciv: function(e, r, t, n, i) {
|
|
if (t < 0) Ue.recordError(1281);
|
|
else if (i) {
|
|
var a = Or.getSyncParameter(Ue.syncs[e], r);
|
|
q[n >> 2] = a, null !== a && n && (q[n >> 2] = 1)
|
|
} else Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetTexParameterfv: function(e, r, t) {
|
|
t ? V[t >> 2] = Or.getTexParameter(e, r) : Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetTexParameteriv: function(e, r, t) {
|
|
t ? q[t >> 2] = Or.getTexParameter(e, r) : Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetTransformFeedbackVarying: function(e, r, t, n, i, a, o) {
|
|
e = Ue.programs[e];
|
|
var u = Or.getTransformFeedbackVarying(e, r);
|
|
if (u) {
|
|
if (o && t > 0) {
|
|
var s = B(u.name, o, t);
|
|
n && (q[n >> 2] = s)
|
|
} else n && (q[n >> 2] = 0);
|
|
i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type)
|
|
}
|
|
},
|
|
emscripten_glGetUniformBlockIndex: function(e, r) {
|
|
return Or.getUniformBlockIndex(Ue.programs[e], L(r))
|
|
},
|
|
emscripten_glGetUniformIndices: function(e, r, t, n) {
|
|
if (n)
|
|
if (r > 0 && (0 == t || 0 == n)) Ue.recordError(1281);
|
|
else {
|
|
e = Ue.programs[e];
|
|
for (var i = [], a = 0; a < r; a++) i.push(L(q[t + 4 * a >> 2]));
|
|
var o = Or.getUniformIndices(e, i);
|
|
if (o) {
|
|
var u = o.length;
|
|
for (a = 0; a < u; a++) q[n + 4 * a >> 2] = o[a]
|
|
}
|
|
}
|
|
else Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetUniformLocation: function(e, r) {
|
|
var t = 0;
|
|
if ("]" == (r = L(r))[r.length - 1]) {
|
|
var n = r.lastIndexOf("[");
|
|
t = "]" != r[n + 1] ? cr(r.slice(n + 1)) : 0, r = r.slice(0, n)
|
|
}
|
|
var i = Ue.programInfos[e] && Ue.programInfos[e].uniforms[r];
|
|
return i && t >= 0 && t < i[0] ? i[1] + t : -1
|
|
},
|
|
emscripten_glGetUniformfv: function(e, r, t) {
|
|
lr(e, r, t, 2)
|
|
},
|
|
emscripten_glGetUniformiv: function(e, r, t) {
|
|
lr(e, r, t, 0)
|
|
},
|
|
emscripten_glGetUniformuiv: function(e, r, t) {
|
|
lr(e, r, t, 0)
|
|
},
|
|
emscripten_glGetVertexAttribIiv: function(e, r, t) {
|
|
fr(e, r, t, 0)
|
|
},
|
|
emscripten_glGetVertexAttribIuiv: function(e, r, t) {
|
|
fr(e, r, t, 0)
|
|
},
|
|
emscripten_glGetVertexAttribPointerv: function(e, r, t) {
|
|
t ? q[t >> 2] = Or.getVertexAttribOffset(e, r) : Ue.recordError(1281)
|
|
},
|
|
emscripten_glGetVertexAttribfv: function(e, r, t) {
|
|
fr(e, r, t, 2)
|
|
},
|
|
emscripten_glGetVertexAttribiv: function(e, r, t) {
|
|
fr(e, r, t, 5)
|
|
},
|
|
emscripten_glHint: function(e, r) {
|
|
Or.hint(e, r)
|
|
},
|
|
emscripten_glInvalidateFramebuffer: function(e, r, t) {
|
|
for (var n = tr[r], i = 0; i < r; i++) n[i] = q[t + 4 * i >> 2];
|
|
Or.invalidateFramebuffer(e, n)
|
|
},
|
|
emscripten_glInvalidateSubFramebuffer: function(e, r, t, n, i, a, o) {
|
|
for (var u = tr[r], s = 0; s < r; s++) u[s] = q[t + 4 * s >> 2];
|
|
Or.invalidateSubFramebuffer(e, u, n, i, a, o)
|
|
},
|
|
emscripten_glIsBuffer: function(e) {
|
|
var r = Ue.buffers[e];
|
|
return r ? Or.isBuffer(r) : 0
|
|
},
|
|
emscripten_glIsEnabled: function(e) {
|
|
return Or.isEnabled(e)
|
|
},
|
|
emscripten_glIsFramebuffer: function(e) {
|
|
var r = Ue.framebuffers[e];
|
|
return r ? Or.isFramebuffer(r) : 0
|
|
},
|
|
emscripten_glIsProgram: function(e) {
|
|
return (e = Ue.programs[e]) ? Or.isProgram(e) : 0
|
|
},
|
|
emscripten_glIsQuery: function(e) {
|
|
var r = Ue.queries[e];
|
|
return r ? Or.isQuery(r) : 0
|
|
},
|
|
emscripten_glIsQueryEXT: function(e) {
|
|
var r = Ue.timerQueriesEXT[e];
|
|
return r ? Or.disjointTimerQueryExt.isQueryEXT(r) : 0
|
|
},
|
|
emscripten_glIsRenderbuffer: function(e) {
|
|
var r = Ue.renderbuffers[e];
|
|
return r ? Or.isRenderbuffer(r) : 0
|
|
},
|
|
emscripten_glIsSampler: function(e) {
|
|
var r = Ue.samplers[e];
|
|
return r ? Or.isSampler(r) : 0
|
|
},
|
|
emscripten_glIsShader: function(e) {
|
|
var r = Ue.shaders[e];
|
|
return r ? Or.isShader(r) : 0
|
|
},
|
|
emscripten_glIsSync: function(e) {
|
|
return Or.isSync(Ue.syncs[e])
|
|
},
|
|
emscripten_glIsTexture: function(e) {
|
|
var r = Ue.textures[e];
|
|
return r ? Or.isTexture(r) : 0
|
|
},
|
|
emscripten_glIsTransformFeedback: function(e) {
|
|
return Or.isTransformFeedback(Ue.transformFeedbacks[e])
|
|
},
|
|
emscripten_glIsVertexArray: function(e) {
|
|
var r = Ue.vaos[e];
|
|
return r ? Or.isVertexArray(r) : 0
|
|
},
|
|
emscripten_glIsVertexArrayOES: function(e) {
|
|
var r = Ue.vaos[e];
|
|
return r ? Or.isVertexArray(r) : 0
|
|
},
|
|
emscripten_glLineWidth: function(e) {
|
|
Or.lineWidth(e)
|
|
},
|
|
emscripten_glLinkProgram: function(e) {
|
|
Or.linkProgram(Ue.programs[e]), Ue.populateUniformTable(e)
|
|
},
|
|
emscripten_glPauseTransformFeedback: function() {
|
|
Or.pauseTransformFeedback()
|
|
},
|
|
emscripten_glPixelStorei: function(e, r) {
|
|
3317 == e && (Ue.unpackAlignment = r), Or.pixelStorei(e, r)
|
|
},
|
|
emscripten_glPolygonOffset: function(e, r) {
|
|
Or.polygonOffset(e, r)
|
|
},
|
|
emscripten_glProgramBinary: function(e, r, t, n) {
|
|
Ue.recordError(1280)
|
|
},
|
|
emscripten_glProgramParameteri: function(e, r, t) {
|
|
Ue.recordError(1280)
|
|
},
|
|
emscripten_glQueryCounterEXT: function(e, r) {
|
|
Or.disjointTimerQueryExt.queryCounterEXT(Ue.timerQueriesEXT[e], r)
|
|
},
|
|
emscripten_glReadBuffer: function(e) {
|
|
Or.readBuffer(e)
|
|
},
|
|
emscripten_glReadPixels: function(e, r, t, n, i, a, o) {
|
|
if (Ue.currentContext.version >= 2)
|
|
if (Or.currentPixelPackBufferBinding) Or.readPixels(e, r, t, n, i, a, o);
|
|
else {
|
|
var u = dr(a);
|
|
Or.readPixels(e, r, t, n, i, a, u, o >> mr(u))
|
|
}
|
|
else {
|
|
var s = pr(a, i, t, n, o);
|
|
s ? Or.readPixels(e, r, t, n, i, a, s) : Ue.recordError(1280)
|
|
}
|
|
},
|
|
emscripten_glReleaseShaderCompiler: function() {},
|
|
emscripten_glRenderbufferStorage: function(e, r, t, n) {
|
|
Or.renderbufferStorage(e, r, t, n)
|
|
},
|
|
emscripten_glRenderbufferStorageMultisample: function(e, r, t, n, i) {
|
|
Or.renderbufferStorageMultisample(e, r, t, n, i)
|
|
},
|
|
emscripten_glResumeTransformFeedback: function() {
|
|
Or.resumeTransformFeedback()
|
|
},
|
|
emscripten_glSampleCoverage: function(e, r) {
|
|
Or.sampleCoverage(e, !!r)
|
|
},
|
|
emscripten_glSamplerParameterf: function(e, r, t) {
|
|
Or.samplerParameterf(Ue.samplers[e], r, t)
|
|
},
|
|
emscripten_glSamplerParameterfv: function(e, r, t) {
|
|
var n = V[t >> 2];
|
|
Or.samplerParameterf(Ue.samplers[e], r, n)
|
|
},
|
|
emscripten_glSamplerParameteri: function(e, r, t) {
|
|
Or.samplerParameteri(Ue.samplers[e], r, t)
|
|
},
|
|
emscripten_glSamplerParameteriv: function(e, r, t) {
|
|
var n = q[t >> 2];
|
|
Or.samplerParameteri(Ue.samplers[e], r, n)
|
|
},
|
|
emscripten_glScissor: function(e, r, t, n) {
|
|
Or.scissor(e, r, t, n)
|
|
},
|
|
emscripten_glShaderBinary: function() {
|
|
Ue.recordError(1280)
|
|
},
|
|
emscripten_glShaderSource: function(e, r, t, n) {
|
|
var i = Ue.getSource(e, r, t, n);
|
|
Or.shaderSource(Ue.shaders[e], i)
|
|
},
|
|
emscripten_glStencilFunc: function(e, r, t) {
|
|
Or.stencilFunc(e, r, t)
|
|
},
|
|
emscripten_glStencilFuncSeparate: function(e, r, t, n) {
|
|
Or.stencilFuncSeparate(e, r, t, n)
|
|
},
|
|
emscripten_glStencilMask: function(e) {
|
|
Or.stencilMask(e)
|
|
},
|
|
emscripten_glStencilMaskSeparate: function(e, r) {
|
|
Or.stencilMaskSeparate(e, r)
|
|
},
|
|
emscripten_glStencilOp: function(e, r, t) {
|
|
Or.stencilOp(e, r, t)
|
|
},
|
|
emscripten_glStencilOpSeparate: function(e, r, t, n) {
|
|
Or.stencilOpSeparate(e, r, t, n)
|
|
},
|
|
emscripten_glTexImage2D: function(e, r, t, n, i, a, o, u, s) {
|
|
if (Ue.currentContext.version >= 2)
|
|
if (Or.currentPixelUnpackBufferBinding) Or.texImage2D(e, r, t, n, i, a, o, u, s);
|
|
else if (s) {
|
|
var c = dr(u);
|
|
Or.texImage2D(e, r, t, n, i, a, o, u, c, s >> mr(c))
|
|
} else Or.texImage2D(e, r, t, n, i, a, o, u, null);
|
|
else Or.texImage2D(e, r, t, n, i, a, o, u, s ? pr(u, o, n, i, s) : null)
|
|
},
|
|
emscripten_glTexImage3D: function(e, r, t, n, i, a, o, u, s, c) {
|
|
if (Or.currentPixelUnpackBufferBinding) Or.texImage3D(e, r, t, n, i, a, o, u, s, c);
|
|
else if (c) {
|
|
var l = dr(s);
|
|
Or.texImage3D(e, r, t, n, i, a, o, u, s, l, c >> mr(l))
|
|
} else Or.texImage3D(e, r, t, n, i, a, o, u, s, null)
|
|
},
|
|
emscripten_glTexParameterf: function(e, r, t) {
|
|
Or.texParameterf(e, r, t)
|
|
},
|
|
emscripten_glTexParameterfv: function(e, r, t) {
|
|
var n = V[t >> 2];
|
|
Or.texParameterf(e, r, n)
|
|
},
|
|
emscripten_glTexParameteri: function(e, r, t) {
|
|
Or.texParameteri(e, r, t)
|
|
},
|
|
emscripten_glTexParameteriv: function(e, r, t) {
|
|
var n = q[t >> 2];
|
|
Or.texParameteri(e, r, n)
|
|
},
|
|
emscripten_glTexStorage2D: function(e, r, t, n, i) {
|
|
Or.texStorage2D(e, r, t, n, i)
|
|
},
|
|
emscripten_glTexStorage3D: function(e, r, t, n, i, a) {
|
|
Or.texStorage3D(e, r, t, n, i, a)
|
|
},
|
|
emscripten_glTexSubImage2D: function(e, r, t, n, i, a, o, u, s) {
|
|
if (Ue.currentContext.version >= 2)
|
|
if (Or.currentPixelUnpackBufferBinding) Or.texSubImage2D(e, r, t, n, i, a, o, u, s);
|
|
else if (s) {
|
|
var c = dr(u);
|
|
Or.texSubImage2D(e, r, t, n, i, a, o, u, c, s >> mr(c))
|
|
} else Or.texSubImage2D(e, r, t, n, i, a, o, u, null);
|
|
else {
|
|
var l = null;
|
|
s && (l = pr(u, o, i, a, s)), Or.texSubImage2D(e, r, t, n, i, a, o, u, l)
|
|
}
|
|
},
|
|
emscripten_glTexSubImage3D: function(e, r, t, n, i, a, o, u, s, c, l) {
|
|
if (Or.currentPixelUnpackBufferBinding) Or.texSubImage3D(e, r, t, n, i, a, o, u, s, c, l);
|
|
else if (l) {
|
|
var f = dr(c);
|
|
Or.texSubImage3D(e, r, t, n, i, a, o, u, s, c, f, l >> mr(f))
|
|
} else Or.texSubImage3D(e, r, t, n, i, a, o, u, s, c, null)
|
|
},
|
|
emscripten_glTransformFeedbackVaryings: function(e, r, t, n) {
|
|
e = Ue.programs[e];
|
|
for (var i = [], a = 0; a < r; a++) i.push(L(q[t + 4 * a >> 2]));
|
|
Or.transformFeedbackVaryings(e, i, n)
|
|
},
|
|
emscripten_glUniform1f: function(e, r) {
|
|
Or.uniform1f(Ue.uniforms[e], r)
|
|
},
|
|
emscripten_glUniform1fv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform1fv(Ue.uniforms[e], V, t >> 2, r);
|
|
else {
|
|
if (r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var n = Ue.miniTempBufferFloatViews[r - 1], i = 0; i < r; ++i) n[i] = V[t + 4 * i >> 2];
|
|
else n = V.subarray(t >> 2, t + 4 * r >> 2);
|
|
Or.uniform1fv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
emscripten_glUniform1i: function(e, r) {
|
|
Or.uniform1i(Ue.uniforms[e], r)
|
|
},
|
|
emscripten_glUniform1iv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform1iv(Ue.uniforms[e], q, t >> 2, r);
|
|
else {
|
|
if (r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var n = Ue.miniTempBufferIntViews[r - 1], i = 0; i < r; ++i) n[i] = q[t + 4 * i >> 2];
|
|
else n = q.subarray(t >> 2, t + 4 * r >> 2);
|
|
Or.uniform1iv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
emscripten_glUniform1ui: function(e, r) {
|
|
Or.uniform1ui(Ue.uniforms[e], r)
|
|
},
|
|
emscripten_glUniform1uiv: function(e, r, t) {
|
|
Or.uniform1uiv(Ue.uniforms[e], Q, t >> 2, r)
|
|
},
|
|
emscripten_glUniform2f: function(e, r, t) {
|
|
Or.uniform2f(Ue.uniforms[e], r, t)
|
|
},
|
|
emscripten_glUniform2fv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform2fv(Ue.uniforms[e], V, t >> 2, 2 * r);
|
|
else {
|
|
if (2 * r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var n = Ue.miniTempBufferFloatViews[2 * r - 1], i = 0; i < 2 * r; i += 2) n[i] = V[t + 4 * i >> 2], n[i + 1] = V[t + (4 * i + 4) >> 2];
|
|
else n = V.subarray(t >> 2, t + 8 * r >> 2);
|
|
Or.uniform2fv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
emscripten_glUniform2i: function(e, r, t) {
|
|
Or.uniform2i(Ue.uniforms[e], r, t)
|
|
},
|
|
emscripten_glUniform2iv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform2iv(Ue.uniforms[e], q, t >> 2, 2 * r);
|
|
else {
|
|
if (2 * r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var n = Ue.miniTempBufferIntViews[2 * r - 1], i = 0; i < 2 * r; i += 2) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2];
|
|
else n = q.subarray(t >> 2, t + 8 * r >> 2);
|
|
Or.uniform2iv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
emscripten_glUniform2ui: function(e, r, t) {
|
|
Or.uniform2ui(Ue.uniforms[e], r, t)
|
|
},
|
|
emscripten_glUniform2uiv: function(e, r, t) {
|
|
Or.uniform2uiv(Ue.uniforms[e], Q, t >> 2, 2 * r)
|
|
},
|
|
emscripten_glUniform3f: function(e, r, t, n) {
|
|
Or.uniform3f(Ue.uniforms[e], r, t, n)
|
|
},
|
|
emscripten_glUniform3fv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform3fv(Ue.uniforms[e], V, t >> 2, 3 * r);
|
|
else {
|
|
if (3 * r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var n = Ue.miniTempBufferFloatViews[3 * r - 1], i = 0; i < 3 * r; i += 3) n[i] = V[t + 4 * i >> 2], n[i + 1] = V[t + (4 * i + 4) >> 2], n[i + 2] = V[t + (4 * i + 8) >> 2];
|
|
else n = V.subarray(t >> 2, t + 12 * r >> 2);
|
|
Or.uniform3fv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
emscripten_glUniform3i: function(e, r, t, n) {
|
|
Or.uniform3i(Ue.uniforms[e], r, t, n)
|
|
},
|
|
emscripten_glUniform3iv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform3iv(Ue.uniforms[e], q, t >> 2, 3 * r);
|
|
else {
|
|
if (3 * r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var n = Ue.miniTempBufferIntViews[3 * r - 1], i = 0; i < 3 * r; i += 3) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2], n[i + 2] = q[t + (4 * i + 8) >> 2];
|
|
else n = q.subarray(t >> 2, t + 12 * r >> 2);
|
|
Or.uniform3iv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
emscripten_glUniform3ui: function(e, r, t, n) {
|
|
Or.uniform3ui(Ue.uniforms[e], r, t, n)
|
|
},
|
|
emscripten_glUniform3uiv: function(e, r, t) {
|
|
Or.uniform3uiv(Ue.uniforms[e], Q, t >> 2, 3 * r)
|
|
},
|
|
emscripten_glUniform4f: function(e, r, t, n, i) {
|
|
Or.uniform4f(Ue.uniforms[e], r, t, n, i)
|
|
},
|
|
emscripten_glUniform4fv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform4fv(Ue.uniforms[e], V, t >> 2, 4 * r);
|
|
else {
|
|
if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE) {
|
|
var n = Ue.miniTempBufferFloatViews[4 * r - 1],
|
|
i = V;
|
|
t >>= 2;
|
|
for (var a = 0; a < 4 * r; a += 4) {
|
|
var o = t + a;
|
|
n[a] = i[o], n[a + 1] = i[o + 1], n[a + 2] = i[o + 2], n[a + 3] = i[o + 3]
|
|
}
|
|
} else n = V.subarray(t >> 2, t + 16 * r >> 2);
|
|
Or.uniform4fv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
emscripten_glUniform4i: function(e, r, t, n, i) {
|
|
Or.uniform4i(Ue.uniforms[e], r, t, n, i)
|
|
},
|
|
emscripten_glUniform4iv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform4iv(Ue.uniforms[e], q, t >> 2, 4 * r);
|
|
else {
|
|
if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var n = Ue.miniTempBufferIntViews[4 * r - 1], i = 0; i < 4 * r; i += 4) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2], n[i + 2] = q[t + (4 * i + 8) >> 2], n[i + 3] = q[t + (4 * i + 12) >> 2];
|
|
else n = q.subarray(t >> 2, t + 16 * r >> 2);
|
|
Or.uniform4iv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
emscripten_glUniform4ui: function(e, r, t, n, i) {
|
|
Or.uniform4ui(Ue.uniforms[e], r, t, n, i)
|
|
},
|
|
emscripten_glUniform4uiv: function(e, r, t) {
|
|
Or.uniform4uiv(Ue.uniforms[e], Q, t >> 2, 4 * r)
|
|
},
|
|
emscripten_glUniformBlockBinding: function(e, r, t) {
|
|
e = Ue.programs[e], Or.uniformBlockBinding(e, r, t)
|
|
},
|
|
emscripten_glUniformMatrix2fv: function(e, r, t, n) {
|
|
if (Ue.currentContext.version >= 2) Or.uniformMatrix2fv(Ue.uniforms[e], !!t, V, n >> 2, 4 * r);
|
|
else {
|
|
if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var i = Ue.miniTempBufferFloatViews[4 * r - 1], a = 0; a < 4 * r; a += 4) i[a] = V[n + 4 * a >> 2], i[a + 1] = V[n + (4 * a + 4) >> 2], i[a + 2] = V[n + (4 * a + 8) >> 2], i[a + 3] = V[n + (4 * a + 12) >> 2];
|
|
else i = V.subarray(n >> 2, n + 16 * r >> 2);
|
|
Or.uniformMatrix2fv(Ue.uniforms[e], !!t, i)
|
|
}
|
|
},
|
|
emscripten_glUniformMatrix2x3fv: function(e, r, t, n) {
|
|
Or.uniformMatrix2x3fv(Ue.uniforms[e], !!t, V, n >> 2, 6 * r)
|
|
},
|
|
emscripten_glUniformMatrix2x4fv: function(e, r, t, n) {
|
|
Or.uniformMatrix2x4fv(Ue.uniforms[e], !!t, V, n >> 2, 8 * r)
|
|
},
|
|
emscripten_glUniformMatrix3fv: function(e, r, t, n) {
|
|
if (Ue.currentContext.version >= 2) Or.uniformMatrix3fv(Ue.uniforms[e], !!t, V, n >> 2, 9 * r);
|
|
else {
|
|
if (9 * r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var i = Ue.miniTempBufferFloatViews[9 * r - 1], a = 0; a < 9 * r; a += 9) i[a] = V[n + 4 * a >> 2], i[a + 1] = V[n + (4 * a + 4) >> 2], i[a + 2] = V[n + (4 * a + 8) >> 2], i[a + 3] = V[n + (4 * a + 12) >> 2], i[a + 4] = V[n + (4 * a + 16) >> 2], i[a + 5] = V[n + (4 * a + 20) >> 2], i[a + 6] = V[n + (4 * a + 24) >> 2], i[a + 7] = V[n + (4 * a + 28) >> 2], i[a + 8] = V[n + (4 * a + 32) >> 2];
|
|
else i = V.subarray(n >> 2, n + 36 * r >> 2);
|
|
Or.uniformMatrix3fv(Ue.uniforms[e], !!t, i)
|
|
}
|
|
},
|
|
emscripten_glUniformMatrix3x2fv: function(e, r, t, n) {
|
|
Or.uniformMatrix3x2fv(Ue.uniforms[e], !!t, V, n >> 2, 6 * r)
|
|
},
|
|
emscripten_glUniformMatrix3x4fv: function(e, r, t, n) {
|
|
Or.uniformMatrix3x4fv(Ue.uniforms[e], !!t, V, n >> 2, 12 * r)
|
|
},
|
|
emscripten_glUniformMatrix4fv: function(e, r, t, n) {
|
|
if (Ue.currentContext.version >= 2) Or.uniformMatrix4fv(Ue.uniforms[e], !!t, V, n >> 2, 16 * r);
|
|
else {
|
|
if (16 * r <= Ue.MINI_TEMP_BUFFER_SIZE) {
|
|
var i = Ue.miniTempBufferFloatViews[16 * r - 1],
|
|
a = V;
|
|
n >>= 2;
|
|
for (var o = 0; o < 16 * r; o += 16) {
|
|
var u = n + o;
|
|
i[o] = a[u], i[o + 1] = a[u + 1], i[o + 2] = a[u + 2], i[o + 3] = a[u + 3], i[o + 4] = a[u + 4], i[o + 5] = a[u + 5], i[o + 6] = a[u + 6], i[o + 7] = a[u + 7], i[o + 8] = a[u + 8], i[o + 9] = a[u + 9], i[o + 10] = a[u + 10], i[o + 11] = a[u + 11], i[o + 12] = a[u + 12], i[o + 13] = a[u + 13], i[o + 14] = a[u + 14], i[o + 15] = a[u + 15]
|
|
}
|
|
} else i = V.subarray(n >> 2, n + 64 * r >> 2);
|
|
Or.uniformMatrix4fv(Ue.uniforms[e], !!t, i)
|
|
}
|
|
},
|
|
emscripten_glUniformMatrix4x2fv: function(e, r, t, n) {
|
|
Or.uniformMatrix4x2fv(Ue.uniforms[e], !!t, V, n >> 2, 8 * r)
|
|
},
|
|
emscripten_glUniformMatrix4x3fv: function(e, r, t, n) {
|
|
Or.uniformMatrix4x3fv(Ue.uniforms[e], !!t, V, n >> 2, 12 * r)
|
|
},
|
|
emscripten_glUseProgram: function(e) {
|
|
Or.useProgram(Ue.programs[e])
|
|
},
|
|
emscripten_glValidateProgram: function(e) {
|
|
Or.validateProgram(Ue.programs[e])
|
|
},
|
|
emscripten_glVertexAttrib1f: function(e, r) {
|
|
Or.vertexAttrib1f(e, r)
|
|
},
|
|
emscripten_glVertexAttrib1fv: function(e, r) {
|
|
Or.vertexAttrib1f(e, V[r >> 2])
|
|
},
|
|
emscripten_glVertexAttrib2f: function(e, r, t) {
|
|
Or.vertexAttrib2f(e, r, t)
|
|
},
|
|
emscripten_glVertexAttrib2fv: function(e, r) {
|
|
Or.vertexAttrib2f(e, V[r >> 2], V[r + 4 >> 2])
|
|
},
|
|
emscripten_glVertexAttrib3f: function(e, r, t, n) {
|
|
Or.vertexAttrib3f(e, r, t, n)
|
|
},
|
|
emscripten_glVertexAttrib3fv: function(e, r) {
|
|
Or.vertexAttrib3f(e, V[r >> 2], V[r + 4 >> 2], V[r + 8 >> 2])
|
|
},
|
|
emscripten_glVertexAttrib4f: function(e, r, t, n, i) {
|
|
Or.vertexAttrib4f(e, r, t, n, i)
|
|
},
|
|
emscripten_glVertexAttrib4fv: function(e, r) {
|
|
Or.vertexAttrib4f(e, V[r >> 2], V[r + 4 >> 2], V[r + 8 >> 2], V[r + 12 >> 2])
|
|
},
|
|
emscripten_glVertexAttribDivisor: function(e, r) {
|
|
Or.vertexAttribDivisor(e, r)
|
|
},
|
|
emscripten_glVertexAttribDivisorANGLE: function(e, r) {
|
|
Or.vertexAttribDivisor(e, r)
|
|
},
|
|
emscripten_glVertexAttribDivisorARB: function(e, r) {
|
|
Or.vertexAttribDivisor(e, r)
|
|
},
|
|
emscripten_glVertexAttribDivisorEXT: function(e, r) {
|
|
Or.vertexAttribDivisor(e, r)
|
|
},
|
|
emscripten_glVertexAttribDivisorNV: function(e, r) {
|
|
Or.vertexAttribDivisor(e, r)
|
|
},
|
|
emscripten_glVertexAttribI4i: function(e, r, t, n, i) {
|
|
Or.vertexAttribI4i(e, r, t, n, i)
|
|
},
|
|
emscripten_glVertexAttribI4iv: function(e, r) {
|
|
Or.vertexAttribI4i(e, q[r >> 2], q[r + 4 >> 2], q[r + 8 >> 2], q[r + 12 >> 2])
|
|
},
|
|
emscripten_glVertexAttribI4ui: function(e, r, t, n, i) {
|
|
Or.vertexAttribI4ui(e, r, t, n, i)
|
|
},
|
|
emscripten_glVertexAttribI4uiv: function(e, r) {
|
|
Or.vertexAttribI4ui(e, Q[r >> 2], Q[r + 4 >> 2], Q[r + 8 >> 2], Q[r + 12 >> 2])
|
|
},
|
|
emscripten_glVertexAttribIPointer: function(e, r, t, n, i) {
|
|
Or.vertexAttribIPointer(e, r, t, n, i)
|
|
},
|
|
emscripten_glVertexAttribPointer: function(e, r, t, n, i, a) {
|
|
Or.vertexAttribPointer(e, r, t, !!n, i, a)
|
|
},
|
|
emscripten_glViewport: function(e, r, t, n) {
|
|
Or.viewport(e, r, t, n)
|
|
},
|
|
emscripten_glWaitSync: function(e, r, t, n) {
|
|
Or.waitSync(Ue.syncs[e], r, rr(t, n))
|
|
},
|
|
emscripten_has_asyncify: function() {
|
|
return 0
|
|
},
|
|
emscripten_is_main_browser_thread: function() {
|
|
return !0
|
|
},
|
|
emscripten_log: function(e, r, t) {
|
|
for (var n = "", i = function(e, r) {
|
|
var t = e,
|
|
n = r;
|
|
|
|
function i(e) {
|
|
var r;
|
|
return n = function(e, r) {
|
|
return "double" !== r && "i64" !== r || 7 & e && (e += 4), e
|
|
}(n, e), "double" === e ? (r = X[n >> 3], n += 8) : "i64" == e ? (r = [q[n >> 2], q[n + 4 >> 2]], n += 8) : (e = "i32", r = q[n >> 2], n += 4), r
|
|
}
|
|
for (var a, o, u, s, c = [];;) {
|
|
var l = t;
|
|
if (0 === (a = O[t >> 0])) break;
|
|
if (o = O[t + 1 >> 0], 37 == a) {
|
|
var f = !1,
|
|
d = !1,
|
|
m = !1,
|
|
p = !1,
|
|
v = !1;
|
|
e: for (;;) {
|
|
switch (o) {
|
|
case 43:
|
|
f = !0;
|
|
break;
|
|
case 45:
|
|
d = !0;
|
|
break;
|
|
case 35:
|
|
m = !0;
|
|
break;
|
|
case 48:
|
|
if (p) break e;
|
|
p = !0;
|
|
break;
|
|
case 32:
|
|
v = !0;
|
|
break;
|
|
default:
|
|
break e
|
|
}
|
|
t++, o = O[t + 1 >> 0]
|
|
}
|
|
var g = 0;
|
|
if (42 == o) g = i("i32"), t++, o = O[t + 1 >> 0];
|
|
else
|
|
for (; o >= 48 && o <= 57;) g = 10 * g + (o - 48), t++, o = O[t + 1 >> 0];
|
|
var h, _ = !1,
|
|
b = -1;
|
|
if (46 == o) {
|
|
if (b = 0, _ = !0, t++, 42 == (o = O[t + 1 >> 0])) b = i("i32"), t++;
|
|
else
|
|
for (;;) {
|
|
var y = O[t + 1 >> 0];
|
|
if (y < 48 || y > 57) break;
|
|
b = 10 * b + (y - 48), t++
|
|
}
|
|
o = O[t + 1 >> 0]
|
|
}
|
|
switch (b < 0 && (b = 6, _ = !1), String.fromCharCode(o)) {
|
|
case "h":
|
|
104 == O[t + 2 >> 0] ? (t++, h = 1) : h = 2;
|
|
break;
|
|
case "l":
|
|
108 == O[t + 2 >> 0] ? (t++, h = 8) : h = 4;
|
|
break;
|
|
case "L":
|
|
case "q":
|
|
case "j":
|
|
h = 8;
|
|
break;
|
|
case "z":
|
|
case "t":
|
|
case "I":
|
|
h = 4;
|
|
break;
|
|
default:
|
|
h = null
|
|
}
|
|
switch (h && t++, o = O[t + 1 >> 0], String.fromCharCode(o)) {
|
|
case "d":
|
|
case "i":
|
|
case "u":
|
|
case "o":
|
|
case "x":
|
|
case "X":
|
|
case "p":
|
|
var w = 100 == o || 105 == o;
|
|
u = i("i" + 8 * (h = h || 4)), 8 == h && (u = 117 == o ? (u[0] >>> 0) + 4294967296 * (u[1] >>> 0) : rr(u[0], u[1])), h <= 4 && (u = (w ? ie : ne)(u & Math.pow(256, h) - 1, 8 * h));
|
|
var E = Math.abs(u),
|
|
x = "";
|
|
if (100 == o || 105 == o) S = ie(u, 8 * h).toString(10);
|
|
else if (117 == o) S = ne(u, 8 * h).toString(10), u = Math.abs(u);
|
|
else if (111 == o) S = (m ? "0" : "") + E.toString(8);
|
|
else if (120 == o || 88 == o) {
|
|
if (x = m && 0 != u ? "0x" : "", u < 0) {
|
|
u = -u, S = (E - 1).toString(16);
|
|
for (var k = [], C = 0; C < S.length; C++) k.push((15 - parseInt(S[C], 16)).toString(16));
|
|
for (S = k.join(""); S.length < 2 * h;) S = "f" + S
|
|
} else S = E.toString(16);
|
|
88 == o && (x = x.toUpperCase(), S = S.toUpperCase())
|
|
} else 112 == o && (0 === E ? S = "(nil)" : (x = "0x", S = E.toString(16)));
|
|
if (_)
|
|
for (; S.length < b;) S = "0" + S;
|
|
for (u >= 0 && (f ? x = "+" + x : v && (x = " " + x)), "-" == S.charAt(0) && (x = "-" + x, S = S.substr(1)); x.length + S.length < g;) d ? S += " " : p ? S = "0" + S : x = " " + x;
|
|
(S = x + S).split("").forEach((function(e) {
|
|
c.push(e.charCodeAt(0))
|
|
}));
|
|
break;
|
|
case "f":
|
|
case "F":
|
|
case "e":
|
|
case "E":
|
|
case "g":
|
|
case "G":
|
|
var S;
|
|
if (u = i("double"), isNaN(u)) S = "nan", p = !1;
|
|
else if (isFinite(u)) {
|
|
var D = !1,
|
|
F = Math.min(b, 20);
|
|
if (103 == o || 71 == o) {
|
|
D = !0, b = b || 1;
|
|
var A = parseInt(u.toExponential(F).split("e")[1], 10);
|
|
b > A && A >= -4 ? (o = (103 == o ? "f" : "F").charCodeAt(0), b -= A + 1) : (o = (103 == o ? "e" : "E").charCodeAt(0), b--), F = Math.min(b, 20)
|
|
}
|
|
101 == o || 69 == o ? (S = u.toExponential(F), /[eE][-+]\d$/.test(S) && (S = S.slice(0, -1) + "0" + S.slice(-1))) : 102 != o && 70 != o || (S = u.toFixed(F), 0 === u && ((s = u) < 0 || 0 === s && 1 / s == -1 / 0) && (S = "-" + S));
|
|
var P = S.split("e");
|
|
if (D && !m)
|
|
for (; P[0].length > 1 && -1 != P[0].indexOf(".") && ("0" == P[0].slice(-1) || "." == P[0].slice(-1));) P[0] = P[0].slice(0, -1);
|
|
else
|
|
for (m && -1 == S.indexOf(".") && (P[0] += "."); b > F++;) P[0] += "0";
|
|
S = P[0] + (P.length > 1 ? "e" + P[1] : ""), 69 == o && (S = S.toUpperCase()), u >= 0 && (f ? S = "+" + S : v && (S = " " + S))
|
|
} else S = (u < 0 ? "-" : "") + "inf", p = !1;
|
|
for (; S.length < g;) d ? S += " " : S = !p || "-" != S[0] && "+" != S[0] ? (p ? "0" : " ") + S : S[0] + "0" + S.slice(1);
|
|
o < 97 && (S = S.toUpperCase()), S.split("").forEach((function(e) {
|
|
c.push(e.charCodeAt(0))
|
|
}));
|
|
break;
|
|
case "s":
|
|
var T = i("i8*"),
|
|
L = T ? Yr(T) : "(null)".length;
|
|
if (_ && (L = Math.min(L, b)), !d)
|
|
for (; L < g--;) c.push(32);
|
|
if (T)
|
|
for (C = 0; C < L; C++) c.push(G[T++ >> 0]);
|
|
else c = c.concat(Qr("(null)".substr(0, L), !0));
|
|
if (d)
|
|
for (; L < g--;) c.push(32);
|
|
break;
|
|
case "c":
|
|
for (d && c.push(i("i8")); --g > 0;) c.push(32);
|
|
d || c.push(i("i8"));
|
|
break;
|
|
case "n":
|
|
var I = i("i32*");
|
|
q[I >> 2] = c.length;
|
|
break;
|
|
case "%":
|
|
c.push(a);
|
|
break;
|
|
default:
|
|
for (C = l; C < t + 2; C++) c.push(O[C >> 0])
|
|
}
|
|
t += 2
|
|
} else c.push(a), t += 1
|
|
}
|
|
return c
|
|
}(r, t), a = 0; a < i.length; ++a) n += String.fromCharCode(i[a]);
|
|
gr(e, n)
|
|
},
|
|
emscripten_longjmp: function(e, r) {
|
|
! function(e, r) {
|
|
throw nt(e, r || 1), "longjmp"
|
|
}(e, r)
|
|
},
|
|
emscripten_memcpy_big: function(e, r, t) {
|
|
G.copyWithin(e, r, r + t)
|
|
},
|
|
emscripten_request_fullscreen_strategy: function(e, r, t) {
|
|
return function(e, r) {
|
|
return Oe.fullscreenEnabled() ? (e = ze(e)) ? e.requestFullscreen || e.webkitRequestFullscreen ? Oe.canPerformEventHandlerRequests() ? Ke(e, r) : r.deferUntilInEventHandler ? (Oe.deferCall(Ke, 1, [e, r]), 1) : -2 : -3 : -4 : -1
|
|
}(e, {
|
|
scaleMode: q[t >> 2],
|
|
canvasResolutionScaleMode: q[t + 4 >> 2],
|
|
filteringMode: q[t + 8 >> 2],
|
|
deferUntilInEventHandler: r,
|
|
canvasResizedCallback: q[t + 12 >> 2],
|
|
canvasResizedCallbackUserData: q[t + 16 >> 2]
|
|
})
|
|
},
|
|
emscripten_request_pointerlock: function(e, r) {
|
|
return (e = ze(e)) ? e.requestPointerLock || e.msRequestPointerLock ? Oe.canPerformEventHandlerRequests() ? $e(e) : r ? (Oe.deferCall($e, 2, [e]), 1) : -2 : -1 : -4
|
|
},
|
|
emscripten_resize_heap: function(e) {
|
|
e >>>= 0;
|
|
var r = G.length,
|
|
t = 2147483648;
|
|
if (e > t) return !1;
|
|
for (var n, i, a = 1; a <= 4; a *= 2) {
|
|
var o = r * (1 + .2 / a);
|
|
if (o = Math.min(o, e + 100663296), _r(Math.min(t, ((n = Math.max(16777216, e, o)) % (i = 65536) > 0 && (n += i - n % i), n)))) return !0
|
|
}
|
|
return !1
|
|
},
|
|
emscripten_sample_gamepad_data: function() {
|
|
return (Oe.lastGamepadState = navigator.getGamepads ? navigator.getGamepads() : navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : null) ? 0 : -1
|
|
},
|
|
emscripten_set_beforeunload_callback_on_thread: function(e, r, t) {
|
|
return "undefined" == typeof onbeforeunload ? -1 : 1 !== t ? -5 : (function(e, r, t, n, i, a) {
|
|
var o = {
|
|
target: ze(e),
|
|
eventTypeString: a,
|
|
callbackfunc: n,
|
|
handlerFunc: function(e) {
|
|
var t = e || event,
|
|
a = mt(n, i, 0, r);
|
|
if (a && (a = L(a)), a) return t.preventDefault(), t.returnValue = a, a
|
|
},
|
|
useCapture: t
|
|
};
|
|
Oe.registerOrRemoveHandler(o)
|
|
}(2, e, !0, r, 28, "beforeunload"), 0)
|
|
},
|
|
emscripten_set_blur_callback_on_thread: function(e, r, t, n, i) {
|
|
return br(e, r, t, n, 12, "blur"), 0
|
|
},
|
|
emscripten_set_canvas_element_id: function(e) {
|
|
if (r.gid = L(e), window.dataLayer) r.ga = function() {
|
|
window.dataLayer.push(arguments)
|
|
};
|
|
else {
|
|
const e = document.createElement("script");
|
|
e.async = 1, e.src = "//www.googletagmanager.com/gtag/js?id=" + r.gid, document.head.append(e), window.dataLayer = window.dataLayer || [], r.ga = function() {
|
|
window.dataLayer.push(arguments)
|
|
}, r.ga("js", new Date)
|
|
}
|
|
r.ga("config", r.gid, {
|
|
send_page_view: !1
|
|
})
|
|
},
|
|
emscripten_set_canvas_element_size: Xe,
|
|
emscripten_set_element_css_size: function(e, r, t) {
|
|
return (e = ze(e)) ? (e.style.width = r + "px", e.style.height = t + "px", 0) : -4
|
|
},
|
|
emscripten_set_focus_callback_on_thread: function(e, r, t, n, i) {
|
|
return br(e, r, t, n, 13, "focus"), 0
|
|
},
|
|
emscripten_set_fullscreenchange_callback_on_thread: function(e, r, t, n, i) {
|
|
return Oe.fullscreenEnabled() ? (e = ze(e)) ? (yr(e, r, t, n, 19, "fullscreenchange"), yr(e, r, t, n, 19, "webkitfullscreenchange"), 0) : -4 : -1
|
|
},
|
|
emscripten_set_gamepadconnected_callback_on_thread: function(e, r, t, n) {
|
|
return navigator.getGamepads || navigator.webkitGetGamepads ? (wr(2, e, r, t, 26, "gamepadconnected"), 0) : -1
|
|
},
|
|
emscripten_set_gamepaddisconnected_callback_on_thread: function(e, r, t, n) {
|
|
return navigator.getGamepads || navigator.webkitGetGamepads ? (wr(2, e, r, t, 27, "gamepaddisconnected"), 0) : -1
|
|
},
|
|
emscripten_set_keydown_callback_on_thread: function(e, r, t, n, i) {
|
|
return Er(e, r, t, n, 2, "keydown"), 0
|
|
},
|
|
emscripten_set_keypress_callback_on_thread: function(e, r, t, n, i) {
|
|
return Er(e, r, t, n, 1, "keypress"), 0
|
|
},
|
|
emscripten_set_keyup_callback_on_thread: function(e, r, t, n, i) {
|
|
return Er(e, r, t, n, 3, "keyup"), 0
|
|
},
|
|
emscripten_set_main_loop_arg: function(e, r, t, n) {
|
|
Ie(e, t, n, r)
|
|
},
|
|
emscripten_set_mousedown_callback_on_thread: function(e, r, t, n, i) {
|
|
return kr(e, r, t, n, 5, "mousedown"), 0
|
|
},
|
|
emscripten_set_mouseenter_callback_on_thread: function(e, r, t, n, i) {
|
|
return kr(e, r, t, n, 33, "mouseenter"), 0
|
|
},
|
|
emscripten_set_mouseleave_callback_on_thread: function(e, r, t, n, i) {
|
|
return kr(e, r, t, n, 34, "mouseleave"), 0
|
|
},
|
|
emscripten_set_mousemove_callback_on_thread: function(e, r, t, n, i) {
|
|
return kr(e, r, t, n, 8, "mousemove"), 0
|
|
},
|
|
emscripten_set_mouseup_callback_on_thread: function(e, r, t, n, i) {
|
|
return kr(e, r, t, n, 6, "mouseup"), 0
|
|
},
|
|
emscripten_set_pointerlockchange_callback_on_thread: function(e, r, t, n, i) {
|
|
return document && document.body && (document.body.requestPointerLock || document.body.mozRequestPointerLock || document.body.webkitRequestPointerLock || document.body.msRequestPointerLock) ? (e = ze(e)) ? (Cr(e, r, t, n, 20, "pointerlockchange"), Cr(e, r, t, n, 20, "mozpointerlockchange"), Cr(e, r, t, n, 20, "webkitpointerlockchange"), Cr(e, r, t, n, 20, "mspointerlockchange"), 0) : -4 : -1
|
|
},
|
|
emscripten_set_resize_callback_on_thread: function(e, r, t, n, i) {
|
|
return function(e, r, t, n, i, a, o) {
|
|
Oe.uiEvent || (Oe.uiEvent = Zr(36));
|
|
var u = {
|
|
target: e = ze(e),
|
|
eventTypeString: a,
|
|
callbackfunc: n,
|
|
handlerFunc: function(t) {
|
|
var a = t || event;
|
|
if (a.target == e) {
|
|
var o = Oe.uiEvent,
|
|
u = document.body;
|
|
q[o >> 2] = a.detail, q[o + 4 >> 2] = u.clientWidth, q[o + 8 >> 2] = u.clientHeight, q[o + 12 >> 2] = innerWidth, q[o + 16 >> 2] = innerHeight, q[o + 20 >> 2] = outerWidth, q[o + 24 >> 2] = outerHeight, q[o + 28 >> 2] = pageXOffset, q[o + 32 >> 2] = pageYOffset, mt(n, i, o, r) && a.preventDefault()
|
|
}
|
|
},
|
|
useCapture: t
|
|
};
|
|
Oe.registerOrRemoveHandler(u)
|
|
}(e, r, t, n, 10, "resize"), 0
|
|
},
|
|
emscripten_set_touchcancel_callback_on_thread: function(e, r, t, n, i) {
|
|
return Sr(e, r, t, n, 25, "touchcancel"), 0
|
|
},
|
|
emscripten_set_touchend_callback_on_thread: function(e, r, t, n, i) {
|
|
return Sr(e, r, t, n, 23, "touchend"), 0
|
|
},
|
|
emscripten_set_touchmove_callback_on_thread: function(e, r, t, n, i) {
|
|
return Sr(e, r, t, n, 24, "touchmove"), 0
|
|
},
|
|
emscripten_set_touchstart_callback_on_thread: function(e, r, t, n, i) {
|
|
return Sr(e, r, t, n, 22, "touchstart"), 0
|
|
},
|
|
emscripten_set_visibilitychange_callback_on_thread: function(e, r, t, n) {
|
|
return Dr(je[1], e, r, t, 21, "visibilitychange"), 0
|
|
},
|
|
emscripten_set_wheel_callback_on_thread: function(e, r, t, n, i) {
|
|
return void 0 !== (e = ze(e)).onwheel ? (Fr(e, r, t, n, 9, "wheel"), 0) : void 0 !== e.onmousewheel ? (Fr(e, r, t, n, 9, "mousewheel"), 0) : -1
|
|
},
|
|
emscripten_sleep: function() {
|
|
throw "Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"
|
|
},
|
|
emscripten_start_fetch: function(e, r, t, n, i) {
|
|
void 0 !== y && (y = !0);
|
|
var a = e + 112,
|
|
o = L(a),
|
|
u = Q[a + 36 >> 2],
|
|
s = Q[a + 40 >> 2],
|
|
c = Q[a + 44 >> 2],
|
|
l = Q[a + 48 >> 2],
|
|
f = Q[a + 52 >> 2],
|
|
d = !!(4 & f),
|
|
m = !!(32 & f),
|
|
p = !!(16 & f),
|
|
v = function(e, t, n) {
|
|
u ? it(u, e) : r && r(e)
|
|
},
|
|
g = function(e, r, t) {
|
|
c ? it(c, e) : n && n(e)
|
|
},
|
|
h = function(e, r, n) {
|
|
s ? it(s, e) : t && t(e)
|
|
},
|
|
_ = function(e, r, t) {
|
|
l ? it(l, e) : i && i(e)
|
|
},
|
|
b = function(e, t, n) {
|
|
Tr(Ar.dbInstance, e, t.response, (function(e, t, n) {
|
|
u ? it(u, e) : r && r(e)
|
|
}), (function(e, t, n) {
|
|
u ? it(u, e) : r && r(e)
|
|
}))
|
|
};
|
|
if ("EM_IDB_STORE" === o) {
|
|
var w = Q[a + 84 >> 2];
|
|
Tr(Ar.dbInstance, e, G.slice(w, w + Q[a + 88 >> 2]), v, h)
|
|
} else if ("EM_IDB_DELETE" === o) ! function(e, r, t, n) {
|
|
if (e) {
|
|
var i = Q[r + 112 + 64 >> 2];
|
|
i || (i = Q[r + 8 >> 2]);
|
|
var a = L(i);
|
|
try {
|
|
var o = e.transaction(["FILES"], "readwrite").objectStore("FILES").delete(a);
|
|
o.onsuccess = function(e) {
|
|
var n = e.target.result;
|
|
Q[r + 12 >> 2] = 0, Ar.setu64(r + 16, 0), Ar.setu64(r + 24, 0), Ar.setu64(r + 32, 0), z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 200, B("OK", r + 44, 64), t(r, 0, n)
|
|
}, o.onerror = function(e) {
|
|
z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 404, B("Not Found", r + 44, 64), n(r, 0, e)
|
|
}
|
|
} catch (e) {
|
|
n(r, 0, e)
|
|
}
|
|
} else n(r, 0, "IndexedDB not available!")
|
|
}(Ar.dbInstance, e, v, h);
|
|
else if (p) {
|
|
if (m) return 0;
|
|
Pr(e, d ? b : v, h, g, _)
|
|
} else ! function(e, r, t, n) {
|
|
if (e) {
|
|
var i = Q[r + 112 + 64 >> 2];
|
|
i || (i = Q[r + 8 >> 2]);
|
|
var a = L(i);
|
|
try {
|
|
var o = e.transaction(["FILES"], "readonly").objectStore("FILES").get(a);
|
|
o.onsuccess = function(e) {
|
|
if (e.target.result) {
|
|
var i = e.target.result,
|
|
a = i.byteLength || i.length,
|
|
o = Zr(a);
|
|
G.set(new Uint8Array(i), o), Q[r + 12 >> 2] = o, Ar.setu64(r + 16, a), Ar.setu64(r + 24, 0), Ar.setu64(r + 32, a), z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 200, B("OK", r + 44, 64), t(r, 0, i)
|
|
} else z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 404, B("Not Found", r + 44, 64), n(r, 0, "no data")
|
|
}, o.onerror = function(e) {
|
|
z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 404, B("Not Found", r + 44, 64), n(r, 0, e)
|
|
}
|
|
} catch (e) {
|
|
n(r, 0, e)
|
|
}
|
|
} else n(r, 0, "IndexedDB not available!")
|
|
}(Ar.dbInstance, e, v, m ? h : d ? function(e, r, t) {
|
|
Pr(e, b, h, g, _)
|
|
} : function(e, r, t) {
|
|
Pr(e, v, h, g, _)
|
|
});
|
|
return e
|
|
},
|
|
environ_get: function(e, r) {
|
|
var t = 0;
|
|
return Ir().forEach((function(n, i) {
|
|
var a = r + t;
|
|
q[e + 4 * i >> 2] = a,
|
|
function(e, r, t) {
|
|
for (var n = 0; n < e.length; ++n) O[r++ >> 0] = e.charCodeAt(n);
|
|
t || (O[r >> 0] = 0)
|
|
}(n, a), t += n.length + 1
|
|
})), 0
|
|
},
|
|
environ_sizes_get: function(e, r) {
|
|
var t = Ir();
|
|
q[e >> 2] = t.length;
|
|
var n = 0;
|
|
return t.forEach((function(e) {
|
|
n += e.length + 1
|
|
})), q[r >> 2] = n, 0
|
|
},
|
|
exit: function(e) {
|
|
Ct(e)
|
|
},
|
|
fd_close: function(e) {
|
|
try {
|
|
var r = Te.getStreamFromFD(e);
|
|
return Pe.close(r), 0
|
|
} catch (e) {
|
|
return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno
|
|
}
|
|
},
|
|
fd_fdstat_get: function(e, r) {
|
|
try {
|
|
var t = Te.getStreamFromFD(e),
|
|
n = t.tty ? 2 : Pe.isDir(t.mode) ? 3 : Pe.isLink(t.mode) ? 7 : 4;
|
|
return O[r >> 0] = n, 0
|
|
} catch (e) {
|
|
return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno
|
|
}
|
|
},
|
|
fd_read: function(e, r, t, n) {
|
|
try {
|
|
var i = Te.getStreamFromFD(e),
|
|
a = Te.doReadv(i, r, t);
|
|
return q[n >> 2] = a, 0
|
|
} catch (e) {
|
|
return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno
|
|
}
|
|
},
|
|
fd_seek: function(e, r, t, n, i) {
|
|
try {
|
|
var a = Te.getStreamFromFD(e),
|
|
o = 4294967296 * t + (r >>> 0),
|
|
u = 9007199254740992;
|
|
return o <= -u || o >= u ? -61 : (Pe.llseek(a, o, n), _e = [a.position >>> 0, (he = a.position, +ae(he) >= 1 ? he > 0 ? (0 | se(+ue(he / 4294967296), 4294967295)) >>> 0 : ~~+oe((he - +(~~he >>> 0)) / 4294967296) >>> 0 : 0)], q[i >> 2] = _e[0], q[i + 4 >> 2] = _e[1], a.getdents && 0 === o && 0 === n && (a.getdents = null), 0)
|
|
} catch (e) {
|
|
return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno
|
|
}
|
|
},
|
|
fd_write: function(e, r, t, n) {
|
|
try {
|
|
var i = Te.getStreamFromFD(e),
|
|
a = Te.doWritev(i, r, t);
|
|
return q[n >> 2] = a, 0
|
|
} catch (e) {
|
|
return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno
|
|
}
|
|
},
|
|
getCanvasPaddingLeft: function() {
|
|
return r.canvas.style.paddingLeft
|
|
},
|
|
getCanvasPaddingTop: function() {
|
|
return r.canvas.style.paddingTop
|
|
},
|
|
getTempRet0: function() {
|
|
return 0 | E
|
|
},
|
|
gettimeofday: function(e) {
|
|
var r = Date.now();
|
|
return q[e >> 2] = r / 1e3 | 0, q[e + 4 >> 2] = r % 1e3 * 1e3 | 0, 0
|
|
},
|
|
glActiveTexture: function(e) {
|
|
Or.activeTexture(e)
|
|
},
|
|
glAttachShader: function(e, r) {
|
|
Or.attachShader(Ue.programs[e], Ue.shaders[r])
|
|
},
|
|
glBindAttribLocation: function(e, r, t) {
|
|
Or.bindAttribLocation(Ue.programs[e], r, L(t))
|
|
},
|
|
glBindBuffer: function(e, r) {
|
|
35051 == e ? Or.currentPixelPackBufferBinding = r : 35052 == e && (Or.currentPixelUnpackBufferBinding = r), Or.bindBuffer(e, Ue.buffers[r])
|
|
},
|
|
glBindFramebuffer: function(e, r) {
|
|
Or.bindFramebuffer(e, Ue.framebuffers[r])
|
|
},
|
|
glBindRenderbuffer: function(e, r) {
|
|
Or.bindRenderbuffer(e, Ue.renderbuffers[r])
|
|
},
|
|
glBindTexture: function(e, r) {
|
|
Or.bindTexture(e, Ue.textures[r])
|
|
},
|
|
glBlendEquation: function(e) {
|
|
Or.blendEquation(e)
|
|
},
|
|
glBlendEquationSeparate: function(e, r) {
|
|
Or.blendEquationSeparate(e, r)
|
|
},
|
|
glBlendFunc: function(e, r) {
|
|
Or.blendFunc(e, r)
|
|
},
|
|
glBlendFuncSeparate: function(e, r, t, n) {
|
|
Or.blendFuncSeparate(e, r, t, n)
|
|
},
|
|
glBufferData: function(e, r, t, n) {
|
|
Ue.currentContext.version >= 2 ? t ? Or.bufferData(e, G, n, t, r) : Or.bufferData(e, r, n) : Or.bufferData(e, t ? G.subarray(t, t + r) : r, n)
|
|
},
|
|
glBufferSubData: function(e, r, t, n) {
|
|
Ue.currentContext.version >= 2 ? Or.bufferSubData(e, r, G, n, t) : Or.bufferSubData(e, r, G.subarray(n, n + t))
|
|
},
|
|
glCheckFramebufferStatus: function(e) {
|
|
return Or.checkFramebufferStatus(e)
|
|
},
|
|
glClear: function(e) {
|
|
Or.clear(e)
|
|
},
|
|
glClearColor: function(e, r, t, n) {
|
|
Or.clearColor(e, r, t, n)
|
|
},
|
|
glColorMask: function(e, r, t, n) {
|
|
Or.colorMask(!!e, !!r, !!t, !!n)
|
|
},
|
|
glCompileShader: function(e) {
|
|
Or.compileShader(Ue.shaders[e])
|
|
},
|
|
glCompressedTexImage2D: function(e, r, t, n, i, a, o, u) {
|
|
Ue.currentContext.version >= 2 ? Or.currentPixelUnpackBufferBinding ? Or.compressedTexImage2D(e, r, t, n, i, a, o, u) : Or.compressedTexImage2D(e, r, t, n, i, a, G, u, o) : Or.compressedTexImage2D(e, r, t, n, i, a, u ? G.subarray(u, u + o) : null)
|
|
},
|
|
glCreateProgram: function() {
|
|
var e = Ue.getNewId(Ue.programs),
|
|
r = Or.createProgram();
|
|
return r.name = e, Ue.programs[e] = r, e
|
|
},
|
|
glCreateShader: function(e) {
|
|
var r = Ue.getNewId(Ue.shaders);
|
|
return Ue.shaders[r] = Or.createShader(e), r
|
|
},
|
|
glDeleteBuffers: function(e, r) {
|
|
for (var t = 0; t < e; t++) {
|
|
var n = q[r + 4 * t >> 2],
|
|
i = Ue.buffers[n];
|
|
i && (Or.deleteBuffer(i), i.name = 0, Ue.buffers[n] = null, n == Ue.currArrayBuffer && (Ue.currArrayBuffer = 0), n == Ue.currElementArrayBuffer && (Ue.currElementArrayBuffer = 0), n == Or.currentPixelPackBufferBinding && (Or.currentPixelPackBufferBinding = 0), n == Or.currentPixelUnpackBufferBinding && (Or.currentPixelUnpackBufferBinding = 0))
|
|
}
|
|
},
|
|
glDeleteFramebuffers: function(e, r) {
|
|
for (var t = 0; t < e; ++t) {
|
|
var n = q[r + 4 * t >> 2],
|
|
i = Ue.framebuffers[n];
|
|
i && (Or.deleteFramebuffer(i), i.name = 0, Ue.framebuffers[n] = null)
|
|
}
|
|
},
|
|
glDeleteProgram: function(e) {
|
|
if (e) {
|
|
var r = Ue.programs[e];
|
|
r ? (Or.deleteProgram(r), r.name = 0, Ue.programs[e] = null, Ue.programInfos[e] = null) : Ue.recordError(1281)
|
|
}
|
|
},
|
|
glDeleteRenderbuffers: function(e, r) {
|
|
for (var t = 0; t < e; t++) {
|
|
var n = q[r + 4 * t >> 2],
|
|
i = Ue.renderbuffers[n];
|
|
i && (Or.deleteRenderbuffer(i), i.name = 0, Ue.renderbuffers[n] = null)
|
|
}
|
|
},
|
|
glDeleteShader: function(e) {
|
|
if (e) {
|
|
var r = Ue.shaders[e];
|
|
r ? (Or.deleteShader(r), Ue.shaders[e] = null) : Ue.recordError(1281)
|
|
}
|
|
},
|
|
glDeleteTextures: function(e, r) {
|
|
for (var t = 0; t < e; t++) {
|
|
var n = q[r + 4 * t >> 2],
|
|
i = Ue.textures[n];
|
|
i && (Or.deleteTexture(i), i.name = 0, Ue.textures[n] = null)
|
|
}
|
|
},
|
|
glDetachShader: function(e, r) {
|
|
Or.detachShader(Ue.programs[e], Ue.shaders[r])
|
|
},
|
|
glDisable: function(e) {
|
|
Or.disable(e)
|
|
},
|
|
glDisableVertexAttribArray: function(e) {
|
|
Or.disableVertexAttribArray(e)
|
|
},
|
|
glDrawArrays: function(e, r, t) {
|
|
Or.drawArrays(e, r, t)
|
|
},
|
|
glDrawElements: nr,
|
|
glEnable: function(e) {
|
|
Or.enable(e)
|
|
},
|
|
glEnableVertexAttribArray: function(e) {
|
|
Or.enableVertexAttribArray(e)
|
|
},
|
|
glFramebufferRenderbuffer: function(e, r, t, n) {
|
|
Or.framebufferRenderbuffer(e, r, t, Ue.renderbuffers[n])
|
|
},
|
|
glFramebufferTexture2D: function(e, r, t, n, i) {
|
|
Or.framebufferTexture2D(e, r, t, Ue.textures[n], i)
|
|
},
|
|
glFrontFace: function(e) {
|
|
Or.frontFace(e)
|
|
},
|
|
glGenBuffers: function(e, r) {
|
|
ir(e, r, "createBuffer", Ue.buffers)
|
|
},
|
|
glGenFramebuffers: function(e, r) {
|
|
ir(e, r, "createFramebuffer", Ue.framebuffers)
|
|
},
|
|
glGenRenderbuffers: function(e, r) {
|
|
ir(e, r, "createRenderbuffer", Ue.renderbuffers)
|
|
},
|
|
glGenTextures: function(e, r) {
|
|
ir(e, r, "createTexture", Ue.textures)
|
|
},
|
|
glGetActiveAttrib: function(e, r, t, n, i, a, o) {
|
|
e = Ue.programs[e];
|
|
var u = Or.getActiveAttrib(e, r);
|
|
if (u) {
|
|
var s = t > 0 && o ? B(u.name, o, t) : 0;
|
|
n && (q[n >> 2] = s), i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type)
|
|
}
|
|
},
|
|
glGetActiveUniform: function(e, r, t, n, i, a, o) {
|
|
e = Ue.programs[e];
|
|
var u = Or.getActiveUniform(e, r);
|
|
if (u) {
|
|
var s = t > 0 && o ? B(u.name, o, t) : 0;
|
|
n && (q[n >> 2] = s), i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type)
|
|
}
|
|
},
|
|
glGetAttribLocation: function(e, r) {
|
|
return Or.getAttribLocation(Ue.programs[e], L(r))
|
|
},
|
|
glGetError: function() {
|
|
var e = Or.getError() || Ue.lastError;
|
|
return Ue.lastError = 0, e
|
|
},
|
|
glGetFramebufferAttachmentParameteriv: function(e, r, t, n) {
|
|
var i = Or.getFramebufferAttachmentParameter(e, r, t);
|
|
(i instanceof WebGLRenderbuffer || i instanceof WebGLTexture) && (i = 0 | i.name), q[n >> 2] = i
|
|
},
|
|
glGetIntegerv: function(e, r) {
|
|
or(e, r, 0)
|
|
},
|
|
glGetProgramInfoLog: function(e, r, t, n) {
|
|
var i = Or.getProgramInfoLog(Ue.programs[e]);
|
|
null === i && (i = "(unknown error)");
|
|
var a = r > 0 && n ? B(i, n, r) : 0;
|
|
t && (q[t >> 2] = a)
|
|
},
|
|
glGetProgramiv: function(e, r, t) {
|
|
if (t)
|
|
if (e >= Ue.counter) Ue.recordError(1281);
|
|
else {
|
|
var n = Ue.programInfos[e];
|
|
if (n)
|
|
if (35716 == r) {
|
|
var i = Or.getProgramInfoLog(Ue.programs[e]);
|
|
null === i && (i = "(unknown error)"), q[t >> 2] = i.length + 1
|
|
} else if (35719 == r) q[t >> 2] = n.maxUniformLength;
|
|
else if (35722 == r) {
|
|
if (-1 == n.maxAttributeLength) {
|
|
e = Ue.programs[e];
|
|
var a = Or.getProgramParameter(e, 35721);
|
|
n.maxAttributeLength = 0;
|
|
for (var o = 0; o < a; ++o) {
|
|
var u = Or.getActiveAttrib(e, o);
|
|
n.maxAttributeLength = Math.max(n.maxAttributeLength, u.name.length + 1)
|
|
}
|
|
}
|
|
q[t >> 2] = n.maxAttributeLength
|
|
} else if (35381 == r) {
|
|
if (-1 == n.maxUniformBlockNameLength) {
|
|
e = Ue.programs[e];
|
|
var s = Or.getProgramParameter(e, 35382);
|
|
n.maxUniformBlockNameLength = 0;
|
|
for (o = 0; o < s; ++o) {
|
|
var c = Or.getActiveUniformBlockName(e, o);
|
|
n.maxUniformBlockNameLength = Math.max(n.maxUniformBlockNameLength, c.length + 1)
|
|
}
|
|
}
|
|
q[t >> 2] = n.maxUniformBlockNameLength
|
|
} else q[t >> 2] = Or.getProgramParameter(Ue.programs[e], r);
|
|
else Ue.recordError(1282)
|
|
}
|
|
else Ue.recordError(1281)
|
|
},
|
|
glGetShaderInfoLog: function(e, r, t, n) {
|
|
var i = Or.getShaderInfoLog(Ue.shaders[e]);
|
|
null === i && (i = "(unknown error)");
|
|
var a = r > 0 && n ? B(i, n, r) : 0;
|
|
t && (q[t >> 2] = a)
|
|
},
|
|
glGetShaderiv: function(e, r, t) {
|
|
if (t)
|
|
if (35716 == r) {
|
|
var n = Or.getShaderInfoLog(Ue.shaders[e]);
|
|
null === n && (n = "(unknown error)"), q[t >> 2] = n.length + 1
|
|
} else if (35720 == r) {
|
|
var i = Or.getShaderSource(Ue.shaders[e]),
|
|
a = null === i || 0 == i.length ? 0 : i.length + 1;
|
|
q[t >> 2] = a
|
|
} else q[t >> 2] = Or.getShaderParameter(Ue.shaders[e], r);
|
|
else Ue.recordError(1281)
|
|
},
|
|
glGetString: function(e) {
|
|
if (Ue.stringCache[e]) return Ue.stringCache[e];
|
|
var r;
|
|
switch (e) {
|
|
case 7939:
|
|
var t = Or.getSupportedExtensions() || [];
|
|
r = sr((t = t.concat(t.map((function(e) {
|
|
return "GL_" + e
|
|
})))).join(" "));
|
|
break;
|
|
case 7936:
|
|
case 7937:
|
|
case 37445:
|
|
case 37446:
|
|
var n = Or.getParameter(e);
|
|
n || Ue.recordError(1280), r = sr(n);
|
|
break;
|
|
case 7938:
|
|
var i = Or.getParameter(7938);
|
|
r = sr(i = Ue.currentContext.version >= 2 ? "OpenGL ES 3.0 (" + i + ")" : "OpenGL ES 2.0 (" + i + ")");
|
|
break;
|
|
case 35724:
|
|
var a = Or.getParameter(35724),
|
|
o = a.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);
|
|
null !== o && (3 == o[1].length && (o[1] = o[1] + "0"), a = "OpenGL ES GLSL ES " + o[1] + " (" + a + ")"), r = sr(a);
|
|
break;
|
|
default:
|
|
return Ue.recordError(1280), 0
|
|
}
|
|
return Ue.stringCache[e] = r, r
|
|
},
|
|
glGetUniformLocation: function(e, r) {
|
|
var t = 0;
|
|
if ("]" == (r = L(r))[r.length - 1]) {
|
|
var n = r.lastIndexOf("[");
|
|
t = "]" != r[n + 1] ? cr(r.slice(n + 1)) : 0, r = r.slice(0, n)
|
|
}
|
|
var i = Ue.programInfos[e] && Ue.programInfos[e].uniforms[r];
|
|
return i && t >= 0 && t < i[0] ? i[1] + t : -1
|
|
},
|
|
glIsEnabled: function(e) {
|
|
return Or.isEnabled(e)
|
|
},
|
|
glLineWidth: function(e) {
|
|
Or.lineWidth(e)
|
|
},
|
|
glLinkProgram: function(e) {
|
|
Or.linkProgram(Ue.programs[e]), Ue.populateUniformTable(e)
|
|
},
|
|
glPixelStorei: function(e, r) {
|
|
3317 == e && (Ue.unpackAlignment = r), Or.pixelStorei(e, r)
|
|
},
|
|
glReadPixels: function(e, r, t, n, i, a, o) {
|
|
if (Ue.currentContext.version >= 2)
|
|
if (Or.currentPixelPackBufferBinding) Or.readPixels(e, r, t, n, i, a, o);
|
|
else {
|
|
var u = dr(a);
|
|
Or.readPixels(e, r, t, n, i, a, u, o >> mr(u))
|
|
}
|
|
else {
|
|
var s = pr(a, i, t, n, o);
|
|
s ? Or.readPixels(e, r, t, n, i, a, s) : Ue.recordError(1280)
|
|
}
|
|
},
|
|
glRenderbufferStorage: function(e, r, t, n) {
|
|
Or.renderbufferStorage(e, r, t, n)
|
|
},
|
|
glScissor: function(e, r, t, n) {
|
|
Or.scissor(e, r, t, n)
|
|
},
|
|
glShaderBinary: function() {
|
|
Ue.recordError(1280)
|
|
},
|
|
glShaderSource: function(e, r, t, n) {
|
|
var i = Ue.getSource(e, r, t, n);
|
|
Or.shaderSource(Ue.shaders[e], i)
|
|
},
|
|
glStencilFunc: function(e, r, t) {
|
|
Or.stencilFunc(e, r, t)
|
|
},
|
|
glStencilOp: function(e, r, t) {
|
|
Or.stencilOp(e, r, t)
|
|
},
|
|
glTexImage2D: function(e, r, t, n, i, a, o, u, s) {
|
|
if (Ue.currentContext.version >= 2)
|
|
if (Or.currentPixelUnpackBufferBinding) Or.texImage2D(e, r, t, n, i, a, o, u, s);
|
|
else if (s) {
|
|
var c = dr(u);
|
|
Or.texImage2D(e, r, t, n, i, a, o, u, c, s >> mr(c))
|
|
} else Or.texImage2D(e, r, t, n, i, a, o, u, null);
|
|
else Or.texImage2D(e, r, t, n, i, a, o, u, s ? pr(u, o, n, i, s) : null)
|
|
},
|
|
glTexParameteri: function(e, r, t) {
|
|
Or.texParameteri(e, r, t)
|
|
},
|
|
glTexSubImage2D: function(e, r, t, n, i, a, o, u, s) {
|
|
if (Ue.currentContext.version >= 2)
|
|
if (Or.currentPixelUnpackBufferBinding) Or.texSubImage2D(e, r, t, n, i, a, o, u, s);
|
|
else if (s) {
|
|
var c = dr(u);
|
|
Or.texSubImage2D(e, r, t, n, i, a, o, u, c, s >> mr(c))
|
|
} else Or.texSubImage2D(e, r, t, n, i, a, o, u, null);
|
|
else {
|
|
var l = null;
|
|
s && (l = pr(u, o, i, a, s)), Or.texSubImage2D(e, r, t, n, i, a, o, u, l)
|
|
}
|
|
},
|
|
glUniform1f: function(e, r) {
|
|
Or.uniform1f(Ue.uniforms[e], r)
|
|
},
|
|
glUniform1fv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform1fv(Ue.uniforms[e], V, t >> 2, r);
|
|
else {
|
|
if (r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var n = Ue.miniTempBufferFloatViews[r - 1], i = 0; i < r; ++i) n[i] = V[t + 4 * i >> 2];
|
|
else n = V.subarray(t >> 2, t + 4 * r >> 2);
|
|
Or.uniform1fv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
glUniform1i: function(e, r) {
|
|
Or.uniform1i(Ue.uniforms[e], r)
|
|
},
|
|
glUniform1iv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform1iv(Ue.uniforms[e], q, t >> 2, r);
|
|
else {
|
|
if (r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var n = Ue.miniTempBufferIntViews[r - 1], i = 0; i < r; ++i) n[i] = q[t + 4 * i >> 2];
|
|
else n = q.subarray(t >> 2, t + 4 * r >> 2);
|
|
Or.uniform1iv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
glUniform2f: function(e, r, t) {
|
|
Or.uniform2f(Ue.uniforms[e], r, t)
|
|
},
|
|
glUniform2fv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform2fv(Ue.uniforms[e], V, t >> 2, 2 * r);
|
|
else {
|
|
if (2 * r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var n = Ue.miniTempBufferFloatViews[2 * r - 1], i = 0; i < 2 * r; i += 2) n[i] = V[t + 4 * i >> 2], n[i + 1] = V[t + (4 * i + 4) >> 2];
|
|
else n = V.subarray(t >> 2, t + 8 * r >> 2);
|
|
Or.uniform2fv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
glUniform2iv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform2iv(Ue.uniforms[e], q, t >> 2, 2 * r);
|
|
else {
|
|
if (2 * r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var n = Ue.miniTempBufferIntViews[2 * r - 1], i = 0; i < 2 * r; i += 2) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2];
|
|
else n = q.subarray(t >> 2, t + 8 * r >> 2);
|
|
Or.uniform2iv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
glUniform3fv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform3fv(Ue.uniforms[e], V, t >> 2, 3 * r);
|
|
else {
|
|
if (3 * r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var n = Ue.miniTempBufferFloatViews[3 * r - 1], i = 0; i < 3 * r; i += 3) n[i] = V[t + 4 * i >> 2], n[i + 1] = V[t + (4 * i + 4) >> 2], n[i + 2] = V[t + (4 * i + 8) >> 2];
|
|
else n = V.subarray(t >> 2, t + 12 * r >> 2);
|
|
Or.uniform3fv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
glUniform3iv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform3iv(Ue.uniforms[e], q, t >> 2, 3 * r);
|
|
else {
|
|
if (3 * r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var n = Ue.miniTempBufferIntViews[3 * r - 1], i = 0; i < 3 * r; i += 3) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2], n[i + 2] = q[t + (4 * i + 8) >> 2];
|
|
else n = q.subarray(t >> 2, t + 12 * r >> 2);
|
|
Or.uniform3iv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
glUniform4f: function(e, r, t, n, i) {
|
|
Or.uniform4f(Ue.uniforms[e], r, t, n, i)
|
|
},
|
|
glUniform4fv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform4fv(Ue.uniforms[e], V, t >> 2, 4 * r);
|
|
else {
|
|
if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE) {
|
|
var n = Ue.miniTempBufferFloatViews[4 * r - 1],
|
|
i = V;
|
|
t >>= 2;
|
|
for (var a = 0; a < 4 * r; a += 4) {
|
|
var o = t + a;
|
|
n[a] = i[o], n[a + 1] = i[o + 1], n[a + 2] = i[o + 2], n[a + 3] = i[o + 3]
|
|
}
|
|
} else n = V.subarray(t >> 2, t + 16 * r >> 2);
|
|
Or.uniform4fv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
glUniform4iv: function(e, r, t) {
|
|
if (Ue.currentContext.version >= 2) Or.uniform4iv(Ue.uniforms[e], q, t >> 2, 4 * r);
|
|
else {
|
|
if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var n = Ue.miniTempBufferIntViews[4 * r - 1], i = 0; i < 4 * r; i += 4) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2], n[i + 2] = q[t + (4 * i + 8) >> 2], n[i + 3] = q[t + (4 * i + 12) >> 2];
|
|
else n = q.subarray(t >> 2, t + 16 * r >> 2);
|
|
Or.uniform4iv(Ue.uniforms[e], n)
|
|
}
|
|
},
|
|
glUniformMatrix2fv: function(e, r, t, n) {
|
|
if (Ue.currentContext.version >= 2) Or.uniformMatrix2fv(Ue.uniforms[e], !!t, V, n >> 2, 4 * r);
|
|
else {
|
|
if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var i = Ue.miniTempBufferFloatViews[4 * r - 1], a = 0; a < 4 * r; a += 4) i[a] = V[n + 4 * a >> 2], i[a + 1] = V[n + (4 * a + 4) >> 2], i[a + 2] = V[n + (4 * a + 8) >> 2], i[a + 3] = V[n + (4 * a + 12) >> 2];
|
|
else i = V.subarray(n >> 2, n + 16 * r >> 2);
|
|
Or.uniformMatrix2fv(Ue.uniforms[e], !!t, i)
|
|
}
|
|
},
|
|
glUniformMatrix3fv: function(e, r, t, n) {
|
|
if (Ue.currentContext.version >= 2) Or.uniformMatrix3fv(Ue.uniforms[e], !!t, V, n >> 2, 9 * r);
|
|
else {
|
|
if (9 * r <= Ue.MINI_TEMP_BUFFER_SIZE)
|
|
for (var i = Ue.miniTempBufferFloatViews[9 * r - 1], a = 0; a < 9 * r; a += 9) i[a] = V[n + 4 * a >> 2], i[a + 1] = V[n + (4 * a + 4) >> 2], i[a + 2] = V[n + (4 * a + 8) >> 2], i[a + 3] = V[n + (4 * a + 12) >> 2], i[a + 4] = V[n + (4 * a + 16) >> 2], i[a + 5] = V[n + (4 * a + 20) >> 2], i[a + 6] = V[n + (4 * a + 24) >> 2], i[a + 7] = V[n + (4 * a + 28) >> 2], i[a + 8] = V[n + (4 * a + 32) >> 2];
|
|
else i = V.subarray(n >> 2, n + 36 * r >> 2);
|
|
Or.uniformMatrix3fv(Ue.uniforms[e], !!t, i)
|
|
}
|
|
},
|
|
glUniformMatrix4fv: function(e, r, t, n) {
|
|
if (Ue.currentContext.version >= 2) Or.uniformMatrix4fv(Ue.uniforms[e], !!t, V, n >> 2, 16 * r);
|
|
else {
|
|
if (16 * r <= Ue.MINI_TEMP_BUFFER_SIZE) {
|
|
var i = Ue.miniTempBufferFloatViews[16 * r - 1],
|
|
a = V;
|
|
n >>= 2;
|
|
for (var o = 0; o < 16 * r; o += 16) {
|
|
var u = n + o;
|
|
i[o] = a[u], i[o + 1] = a[u + 1], i[o + 2] = a[u + 2], i[o + 3] = a[u + 3], i[o + 4] = a[u + 4], i[o + 5] = a[u + 5], i[o + 6] = a[u + 6], i[o + 7] = a[u + 7], i[o + 8] = a[u + 8], i[o + 9] = a[u + 9], i[o + 10] = a[u + 10], i[o + 11] = a[u + 11], i[o + 12] = a[u + 12], i[o + 13] = a[u + 13], i[o + 14] = a[u + 14], i[o + 15] = a[u + 15]
|
|
}
|
|
} else i = V.subarray(n >> 2, n + 64 * r >> 2);
|
|
Or.uniformMatrix4fv(Ue.uniforms[e], !!t, i)
|
|
}
|
|
},
|
|
glUseProgram: function(e) {
|
|
Or.useProgram(Ue.programs[e])
|
|
},
|
|
glVertexAttrib1fv: function(e, r) {
|
|
Or.vertexAttrib1f(e, V[r >> 2])
|
|
},
|
|
glVertexAttrib2fv: function(e, r) {
|
|
Or.vertexAttrib2f(e, V[r >> 2], V[r + 4 >> 2])
|
|
},
|
|
glVertexAttrib3fv: function(e, r) {
|
|
Or.vertexAttrib3f(e, V[r >> 2], V[r + 4 >> 2], V[r + 8 >> 2])
|
|
},
|
|
glVertexAttrib4f: function(e, r, t, n, i) {
|
|
Or.vertexAttrib4f(e, r, t, n, i)
|
|
},
|
|
glVertexAttrib4fv: function(e, r) {
|
|
Or.vertexAttrib4f(e, V[r >> 2], V[r + 4 >> 2], V[r + 8 >> 2], V[r + 12 >> 2])
|
|
},
|
|
glVertexAttribPointer: function(e, r, t, n, i, a) {
|
|
Or.vertexAttribPointer(e, r, t, !!n, i, a)
|
|
},
|
|
glViewport: function(e, r, t, n) {
|
|
Or.viewport(e, r, t, n)
|
|
},
|
|
gmtime_r: function(e, r) {
|
|
var t = new Date(1e3 * q[e >> 2]);
|
|
q[r >> 2] = t.getUTCSeconds(), q[r + 4 >> 2] = t.getUTCMinutes(), q[r + 8 >> 2] = t.getUTCHours(), q[r + 12 >> 2] = t.getUTCDate(), q[r + 16 >> 2] = t.getUTCMonth(), q[r + 20 >> 2] = t.getUTCFullYear() - 1900, q[r + 24 >> 2] = t.getUTCDay(), q[r + 36 >> 2] = 0, q[r + 32 >> 2] = 0;
|
|
var n = Date.UTC(t.getUTCFullYear(), 0, 1, 0, 0, 0, 0),
|
|
i = (t.getTime() - n) / 864e5 | 0;
|
|
return q[r + 28 >> 2] = i, q[r + 40 >> 2] = Br, r
|
|
},
|
|
invoke_di: function(e, r) {
|
|
var t = yt();
|
|
try {
|
|
return bt(e, r)
|
|
} catch (e) {
|
|
if (Et(t), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_i: function(e) {
|
|
var r = yt();
|
|
try {
|
|
return lt(e)
|
|
} catch (e) {
|
|
if (Et(r), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_ii: function(e, r) {
|
|
var t = yt();
|
|
try {
|
|
return ft(e, r)
|
|
} catch (e) {
|
|
if (Et(t), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_iid: function(e, r, t) {
|
|
var n = yt();
|
|
try {
|
|
return _t(e, r, t)
|
|
} catch (e) {
|
|
if (Et(n), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_iii: function(e, r, t) {
|
|
var n = yt();
|
|
try {
|
|
return dt(e, r, t)
|
|
} catch (e) {
|
|
if (Et(n), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_iiii: function(e, r, t, n) {
|
|
var i = yt();
|
|
try {
|
|
return mt(e, r, t, n)
|
|
} catch (e) {
|
|
if (Et(i), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_iiiii: function(e, r, t, n, i) {
|
|
var a = yt();
|
|
try {
|
|
return pt(e, r, t, n, i)
|
|
} catch (e) {
|
|
if (Et(a), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_iiiiii: function(e, r, t, n, i, a) {
|
|
var o = yt();
|
|
try {
|
|
return vt(e, r, t, n, i, a)
|
|
} catch (e) {
|
|
if (Et(o), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_iiiiiii: function(e, r, t, n, i, a, o) {
|
|
var u = yt();
|
|
try {
|
|
return gt(e, r, t, n, i, a, o)
|
|
} catch (e) {
|
|
if (Et(u), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_iiiiiiii: function(e, r, t, n, i, a, o, u) {
|
|
var s = yt();
|
|
try {
|
|
return ht(e, r, t, n, i, a, o, u)
|
|
} catch (e) {
|
|
if (Et(s), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_vi: function(e, r) {
|
|
var t = yt();
|
|
try {
|
|
it(e, r)
|
|
} catch (e) {
|
|
if (Et(t), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_vii: function(e, r, t) {
|
|
var n = yt();
|
|
try {
|
|
at(e, r, t)
|
|
} catch (e) {
|
|
if (Et(n), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_viii: function(e, r, t, n) {
|
|
var i = yt();
|
|
try {
|
|
ot(e, r, t, n)
|
|
} catch (e) {
|
|
if (Et(i), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_viiii: function(e, r, t, n, i) {
|
|
var a = yt();
|
|
try {
|
|
ut(e, r, t, n, i)
|
|
} catch (e) {
|
|
if (Et(a), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_viiiii: function(e, r, t, n, i, a) {
|
|
var o = yt();
|
|
try {
|
|
st(e, r, t, n, i, a)
|
|
} catch (e) {
|
|
if (Et(o), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
invoke_viiiiii: function(e, r, t, n, i, a, o) {
|
|
var u = yt();
|
|
try {
|
|
ct(e, r, t, n, i, a, o)
|
|
} catch (e) {
|
|
if (Et(u), e !== e + 0 && "longjmp" !== e) throw e;
|
|
nt(1, 0)
|
|
}
|
|
},
|
|
localtime: function(e) {
|
|
return Mr(e, 1052512)
|
|
},
|
|
localtime_r: Mr,
|
|
memory: w,
|
|
mktime: function(e) {
|
|
Rr();
|
|
var r = new Date(q[e + 20 >> 2] + 1900, q[e + 16 >> 2], q[e + 12 >> 2], q[e + 8 >> 2], q[e + 4 >> 2], q[e >> 2], 0),
|
|
t = q[e + 32 >> 2],
|
|
n = r.getTimezoneOffset(),
|
|
i = new Date(r.getFullYear(), 0, 1),
|
|
a = new Date(r.getFullYear(), 6, 1).getTimezoneOffset(),
|
|
o = i.getTimezoneOffset(),
|
|
u = Math.min(o, a);
|
|
if (t < 0) q[e + 32 >> 2] = Number(a != o && u == n);
|
|
else if (t > 0 != (u == n)) {
|
|
var s = Math.max(o, a),
|
|
c = t > 0 ? u : s;
|
|
r.setTime(r.getTime() + 6e4 * (c - n))
|
|
}
|
|
q[e + 24 >> 2] = r.getDay();
|
|
var l = (r.getTime() - i.getTime()) / 864e5 | 0;
|
|
return q[e + 28 >> 2] = l, r.getTime() / 1e3 | 0
|
|
},
|
|
nanosleep: function(e, r) {
|
|
if (0 === e) return xe(28), -1;
|
|
var t = q[e >> 2],
|
|
n = q[e + 4 >> 2];
|
|
return n < 0 || n > 999999999 || t < 0 ? (xe(28), -1) : (0 !== r && (q[r >> 2] = 0, q[r + 4 >> 2] = 0), Nr(1e6 * t + n / 1e3))
|
|
},
|
|
round: function(e) {
|
|
return (e = +e) >= 0 ? +ue(e + .5) : +oe(e - .5)
|
|
},
|
|
saveSetjmp: function e(r, t, n, i) {
|
|
t |= 0, n |= 0, i |= 0;
|
|
var a = 0;
|
|
for (hr = hr + 1 | 0, q[(r |= 0) >> 2] = hr;
|
|
(0 | a) < (0 | i);) {
|
|
if (0 == (0 | q[n + (a << 3) >> 2])) return q[n + (a << 3) >> 2] = hr, q[n + (4 + (a << 3)) >> 2] = t, q[n + (8 + (a << 3)) >> 2] = 0, x(0 | i), 0 | n;
|
|
a = a + 1 | 0
|
|
}
|
|
return n = 0 | e(0 | r, 0 | t, 0 | (n = 0 | Kr(0 | n, 8 * ((i = 2 * i | 0) + 1 | 0) | 0)), 0 | i), x(0 | i), 0 | n
|
|
},
|
|
setTempRet0: function(e) {
|
|
x(0 | e)
|
|
},
|
|
sigaction: function(e, r, t) {
|
|
return 0
|
|
},
|
|
signal: function(e, r) {
|
|
return 14 == e && r, 0
|
|
},
|
|
sysconf: function(e) {
|
|
switch (e) {
|
|
case 30:
|
|
return 16384;
|
|
case 85:
|
|
return 131072;
|
|
case 132:
|
|
case 133:
|
|
case 12:
|
|
case 137:
|
|
case 138:
|
|
case 15:
|
|
case 235:
|
|
case 16:
|
|
case 17:
|
|
case 18:
|
|
case 19:
|
|
case 20:
|
|
case 149:
|
|
case 13:
|
|
case 10:
|
|
case 236:
|
|
case 153:
|
|
case 9:
|
|
case 21:
|
|
case 22:
|
|
case 159:
|
|
case 154:
|
|
case 14:
|
|
case 77:
|
|
case 78:
|
|
case 139:
|
|
case 80:
|
|
case 81:
|
|
case 82:
|
|
case 68:
|
|
case 67:
|
|
case 164:
|
|
case 11:
|
|
case 29:
|
|
case 47:
|
|
case 48:
|
|
case 95:
|
|
case 52:
|
|
case 51:
|
|
case 46:
|
|
case 79:
|
|
return 200809;
|
|
case 27:
|
|
case 246:
|
|
case 127:
|
|
case 128:
|
|
case 23:
|
|
case 24:
|
|
case 160:
|
|
case 161:
|
|
case 181:
|
|
case 182:
|
|
case 242:
|
|
case 183:
|
|
case 184:
|
|
case 243:
|
|
case 244:
|
|
case 245:
|
|
case 165:
|
|
case 178:
|
|
case 179:
|
|
case 49:
|
|
case 50:
|
|
case 168:
|
|
case 169:
|
|
case 175:
|
|
case 170:
|
|
case 171:
|
|
case 172:
|
|
case 97:
|
|
case 76:
|
|
case 32:
|
|
case 173:
|
|
case 35:
|
|
return -1;
|
|
case 176:
|
|
case 177:
|
|
case 7:
|
|
case 155:
|
|
case 8:
|
|
case 157:
|
|
case 125:
|
|
case 126:
|
|
case 92:
|
|
case 93:
|
|
case 129:
|
|
case 130:
|
|
case 131:
|
|
case 94:
|
|
case 91:
|
|
return 1;
|
|
case 74:
|
|
case 60:
|
|
case 69:
|
|
case 70:
|
|
case 4:
|
|
return 1024;
|
|
case 31:
|
|
case 42:
|
|
case 72:
|
|
return 32;
|
|
case 87:
|
|
case 26:
|
|
case 33:
|
|
return 2147483647;
|
|
case 34:
|
|
case 1:
|
|
return 47839;
|
|
case 38:
|
|
case 36:
|
|
return 99;
|
|
case 43:
|
|
case 37:
|
|
return 2048;
|
|
case 0:
|
|
return 2097152;
|
|
case 3:
|
|
return 65536;
|
|
case 28:
|
|
return 32768;
|
|
case 44:
|
|
return 32767;
|
|
case 75:
|
|
return 16384;
|
|
case 39:
|
|
return 1e3;
|
|
case 89:
|
|
return 700;
|
|
case 71:
|
|
return 256;
|
|
case 40:
|
|
return 255;
|
|
case 2:
|
|
return 100;
|
|
case 180:
|
|
return 64;
|
|
case 25:
|
|
return 20;
|
|
case 5:
|
|
return 16;
|
|
case 6:
|
|
return 6;
|
|
case 73:
|
|
return 4;
|
|
case 84:
|
|
return "object" == typeof navigator && navigator.hardwareConcurrency || 1
|
|
}
|
|
return xe(28), -1
|
|
},
|
|
table: C,
|
|
testSetjmp: function(e, r, t) {
|
|
e |= 0, r |= 0, t |= 0;
|
|
for (var n = 0, i = 0;
|
|
(0 | n) < (0 | t) && 0 != (0 | (i = 0 | q[r + (n << 3) >> 2]));) {
|
|
if ((0 | i) == (0 | e)) return 0 | q[r + (4 + (n << 3)) >> 2];
|
|
n = n + 1 | 0
|
|
}
|
|
return 0
|
|
},
|
|
time: function(e) {
|
|
var r = Date.now() / 1e3 | 0;
|
|
return e && (q[e >> 2] = r), r
|
|
},
|
|
usleep: Nr,
|
|
wafjs_file_loaddata: function(e) {
|
|
const t = localStorage.getItem(L(e));
|
|
if (t && t.length > 0) {
|
|
const e = new Uint8Array(JSON.parse(t)),
|
|
n = r._malloc(e.length + 4);
|
|
return r.HEAP8.set(e, n + 4), r.HEAP32[n >> 2] = e.length, n
|
|
}
|
|
return 0
|
|
},
|
|
wafjs_file_savedata: function(e, t, n) {
|
|
if (t && n > 0) {
|
|
const i = L(e),
|
|
a = new Uint8Array(r.HEAP8.buffer, t, n);
|
|
a && a.length > 0 ? localStorage.setItem(i, JSON.stringify(Array.from(a))) : localStorage.removeItem(i)
|
|
}
|
|
},
|
|
wafjs_hal_inputtext_begin: function(e, t, n, i, a, o, u, s, c) {
|
|
const l = document.createElement("input");
|
|
l.value = L(e), l.style.position = "absolute", l.style.resize = "none", l.style.overflow = "hidden", l.style.zIndex = -999, l.style.top = "50%", l.style.left = "50%", l.style.width = "32px", l.wafSelectionStart = l.wafSelectionEnd = l.value ? l.value.length : 0;
|
|
let f = !1,
|
|
d = !1;
|
|
const m = (e, r) => {
|
|
ut(u, c, 0, e, r)
|
|
};
|
|
window.requestAnimationFrame((function() {
|
|
l.focus()
|
|
})), l.addEventListener("input", (function(e) {
|
|
if ("insertCompositionText" != e.inputType || e.isComposing) {
|
|
if ("deleteContentForward" == e.inputType || "insertText" == e.inputType && null == e.data) m(l.wafSelectionStart, l.wafSelectionEnd + 1);
|
|
else if ("deleteContentBackward" == e.inputType) {
|
|
if (l.wafSelectionStart <= 0) return;
|
|
m(l.wafSelectionStart - 1, l.wafSelectionEnd), l.wafSelectionEnd = --l.wafSelectionStart
|
|
} else {
|
|
const r = e.data || "";
|
|
let t = l.wafSelectionStart,
|
|
n = l.wafSelectionEnd;
|
|
e.isComposing ? (f ? (l.wafSelectionEnd = ++l.wafSelectionStart, f = !1) : t -= 1, r || (l.wafSelectionEnd = --l.wafSelectionStart)) : l.wafSelectionEnd = ++l.wafSelectionStart, ((e, r, t) => {
|
|
const n = R(e) + 1,
|
|
i = Zr(n);
|
|
B(e, i, n), ut(u, c, i, r, t)
|
|
})(r, t, n)
|
|
}
|
|
var r, t;
|
|
r = l.wafSelectionStart, t = l.wafSelectionEnd, ot(s, c, r, t)
|
|
}
|
|
})), l.addEventListener("select", (e => {
|
|
e.preventDefault(), e.stopPropagation()
|
|
})), l.addEventListener("keydown", (e => {
|
|
d = !0;
|
|
const t = e.key,
|
|
n = e.ctrlKey && "/a/A/c/C/v/V/".indexOf("/" + t + "/") >= 0,
|
|
i = "Home" == t || "End" == t,
|
|
a = (e.ctrlKey || e.shiftKey) && "/Home/End/ArrowUp/ArrowDown/ArrowLeft/ArrowRight/".indexOf("/" + t + "/") >= 0;
|
|
if (n || a || i) return e.preventDefault(), void e.stopPropagation();
|
|
const o = new e.constructor(e.type, e);
|
|
r.canvas.dispatchEvent(o)
|
|
})), l.addEventListener("keyup", (e => {
|
|
d = !1;
|
|
const t = new e.constructor(e.type, e);
|
|
r.canvas.dispatchEvent(t)
|
|
})), l.addEventListener("keypress", (e => {})), l.addEventListener("compositionstart", (e => {
|
|
f = !0
|
|
})), l.addEventListener("compositionupdate", (e => {})), l.addEventListener("compositionend", (e => {})), !r.canvas.inputTextFocusHandler && (r.canvas.inputTextFocusHandler = e => {
|
|
r.canvas.wafActiveInputText && window.requestAnimationFrame((function() {
|
|
r.canvas.wafActiveInputText.focus()
|
|
}))
|
|
}, r.canvas.addEventListener("focus", r.canvas.inputTextFocusHandler)), r.canvas.parentNode.appendChild(l), r.canvas.wafActiveInputText = l
|
|
},
|
|
wafjs_hidestatus: function() {
|
|
"function" == typeof r.hideStatus && r.hideStatus()
|
|
},
|
|
wafjs_setcontentinfo: function(e, t, n) {
|
|
r.canvas.setAttribute("waf-content-width", e), r.canvas.setAttribute("waf-content-height", t), r.canvas.setAttribute("waf-content-fps", n), r.canvas.style.setProperty("--waf-content-width", e + "px"), r.canvas.style.setProperty("--waf-content-height", t + "px")
|
|
},
|
|
wafjs_setstatus: function(e) {
|
|
"function" == typeof r.setStatus && r.setStatus(L(e))
|
|
},
|
|
wafjs_url_transformNavigateUrl: function(e, t) {
|
|
const n = L(e),
|
|
i = L(t) || "_self",
|
|
a = r.WAFLASH,
|
|
o = a && a.hal && "function" == typeof a.hal.url_transformNavigateUrl && a.hal.url_transformNavigateUrl(n, i);
|
|
"function" == typeof o && window.requestAnimationFrame((() => o()))
|
|
},
|
|
wafjs_url_transformRequestUrl: function(e) {
|
|
const t = L(e),
|
|
n = r.WAFLASH,
|
|
i = n ? n.hal && "function" == typeof n.hal.url_transformRequestUrl && n.hal.url_transformRequestUrl(t) : t;
|
|
if (i) {
|
|
const e = R(i) + 1,
|
|
r = Zr(e);
|
|
return B(i, r, e), r
|
|
}
|
|
return 0
|
|
}
|
|
},
|
|
Xr = function() {
|
|
var e = {
|
|
env: Vr,
|
|
wasi_snapshot_preview1: Vr
|
|
};
|
|
|
|
function t(e, t) {
|
|
var n = e.exports;
|
|
r.asm = n, me()
|
|
}
|
|
|
|
function n(e) {
|
|
t(e.instance)
|
|
}
|
|
|
|
function i(r) {
|
|
return (b || "function" != typeof fetch ? new Promise((function(e, r) {
|
|
e(ye())
|
|
})) : fetch(be, {
|
|
credentials: "same-origin"
|
|
}).then((function(e) {
|
|
if (!e.ok) throw "failed to load wasm binary file at '" + be + "'";
|
|
return e.arrayBuffer()
|
|
})).catch((function() {
|
|
return ye()
|
|
}))).then((function(r) {
|
|
return WebAssembly.instantiate(r, e)
|
|
})).then(r, (function(e) {
|
|
p("failed to asynchronously prepare wasm: " + e), pe(e)
|
|
}))
|
|
}
|
|
if (de(), r.instantiateWasm) try {
|
|
return r.instantiateWasm(e, t)
|
|
} catch (e) {
|
|
return p("Module.instantiateWasm callback failed with error: " + e), !1
|
|
}
|
|
return function() {
|
|
if (b || "function" != typeof WebAssembly.instantiateStreaming || ve(be) || "function" != typeof fetch) return i(n);
|
|
fetch(be, {
|
|
credentials: "same-origin"
|
|
}).then((function(r) {
|
|
return WebAssembly.instantiateStreaming(r, e).then(n, (function(e) {
|
|
p("wasm streaming compile failed: " + e), p("falling back to ArrayBuffer instantiation"), i(n)
|
|
}))
|
|
}))
|
|
}(), {}
|
|
}();
|
|
r.asm = Xr;
|
|
var Hr, Wr = r.___wasm_call_ctors = function() {
|
|
return (Wr = r.___wasm_call_ctors = r.asm.__wasm_call_ctors).apply(null, arguments)
|
|
},
|
|
Yr = (r._reopenBuffer = function() {
|
|
return (r._reopenBuffer = r.asm.reopenBuffer).apply(null, arguments)
|
|
}, r._invokeExternalCallback = function() {
|
|
return (r._invokeExternalCallback = r.asm.invokeExternalCallback).apply(null, arguments)
|
|
}, r.___em_js__wafjs_setstatus = function() {
|
|
return (r.___em_js__wafjs_setstatus = r.asm.__em_js__wafjs_setstatus).apply(null, arguments)
|
|
}, r.___em_js__wafjs_hidestatus = function() {
|
|
return (r.___em_js__wafjs_hidestatus = r.asm.__em_js__wafjs_hidestatus).apply(null, arguments)
|
|
}, r.___em_js__wafjs_setcontentinfo = function() {
|
|
return (r.___em_js__wafjs_setcontentinfo = r.asm.__em_js__wafjs_setcontentinfo).apply(null, arguments)
|
|
}, r.___em_js__emscripten_set_canvas_element_id = function() {
|
|
return (r.___em_js__emscripten_set_canvas_element_id = r.asm.__em_js__emscripten_set_canvas_element_id).apply(null, arguments)
|
|
}, r.___em_js__emscripten_get_canvas_element_id = function() {
|
|
return (r.___em_js__emscripten_get_canvas_element_id = r.asm.__em_js__emscripten_get_canvas_element_id).apply(null, arguments)
|
|
}, r._memset = function() {
|
|
return (r._memset = r.asm.memset).apply(null, arguments)
|
|
}, r._strlen = function() {
|
|
return (Yr = r._strlen = r.asm.strlen).apply(null, arguments)
|
|
}),
|
|
Zr = (r._free = function() {
|
|
return (r._free = r.asm.free).apply(null, arguments)
|
|
}, r.___em_js__getCanvasPaddingLeft = function() {
|
|
return (r.___em_js__getCanvasPaddingLeft = r.asm.__em_js__getCanvasPaddingLeft).apply(null, arguments)
|
|
}, r.___em_js__getCanvasPaddingTop = function() {
|
|
return (r.___em_js__getCanvasPaddingTop = r.asm.__em_js__getCanvasPaddingTop).apply(null, arguments)
|
|
}, r._main = function() {
|
|
return (r._main = r.asm.main).apply(null, arguments)
|
|
}, r._fileno = function() {
|
|
return (r._fileno = r.asm.fileno).apply(null, arguments)
|
|
}, r.___em_js__wafjs_file_savedata = function() {
|
|
return (r.___em_js__wafjs_file_savedata = r.asm.__em_js__wafjs_file_savedata).apply(null, arguments)
|
|
}, r.___em_js__wafjs_file_loaddata = function() {
|
|
return (r.___em_js__wafjs_file_loaddata = r.asm.__em_js__wafjs_file_loaddata).apply(null, arguments)
|
|
}, r._memcpy = function() {
|
|
return (r._memcpy = r.asm.memcpy).apply(null, arguments)
|
|
}, r._malloc = function() {
|
|
return (Zr = r._malloc = r.asm.malloc).apply(null, arguments)
|
|
}),
|
|
Kr = (r.___em_js__wafjs_url_transformRequestUrl = function() {
|
|
return (r.___em_js__wafjs_url_transformRequestUrl = r.asm.__em_js__wafjs_url_transformRequestUrl).apply(null, arguments)
|
|
}, r.___em_js__wafjs_url_transformNavigateUrl = function() {
|
|
return (r.___em_js__wafjs_url_transformNavigateUrl = r.asm.__em_js__wafjs_url_transformNavigateUrl).apply(null, arguments)
|
|
}, r._strstr = function() {
|
|
return (r._strstr = r.asm.strstr).apply(null, arguments)
|
|
}, r.___em_js__changeCursor = function() {
|
|
return (r.___em_js__changeCursor = r.asm.__em_js__changeCursor).apply(null, arguments)
|
|
}, r._realloc = function() {
|
|
return (Kr = r._realloc = r.asm.realloc).apply(null, arguments)
|
|
}),
|
|
$r = r.___errno_location = function() {
|
|
return ($r = r.___errno_location = r.asm.__errno_location).apply(null, arguments)
|
|
},
|
|
Jr = r._emscripten_GetProcAddress = function() {
|
|
return (Jr = r._emscripten_GetProcAddress = r.asm.emscripten_GetProcAddress).apply(null, arguments)
|
|
},
|
|
et = r.__get_tzname = function() {
|
|
return (et = r.__get_tzname = r.asm._get_tzname).apply(null, arguments)
|
|
},
|
|
rt = r.__get_daylight = function() {
|
|
return (rt = r.__get_daylight = r.asm._get_daylight).apply(null, arguments)
|
|
},
|
|
tt = r.__get_timezone = function() {
|
|
return (tt = r.__get_timezone = r.asm._get_timezone).apply(null, arguments)
|
|
},
|
|
nt = r._setThrew = function() {
|
|
return (nt = r._setThrew = r.asm.setThrew).apply(null, arguments)
|
|
},
|
|
it = (r._emscripten_main_thread_process_queued_calls = function() {
|
|
return (r._emscripten_main_thread_process_queued_calls = r.asm.emscripten_main_thread_process_queued_calls).apply(null, arguments)
|
|
}, r.dynCall_vi = function() {
|
|
return (it = r.dynCall_vi = r.asm.dynCall_vi).apply(null, arguments)
|
|
}),
|
|
at = r.dynCall_vii = function() {
|
|
return (at = r.dynCall_vii = r.asm.dynCall_vii).apply(null, arguments)
|
|
},
|
|
ot = r.dynCall_viii = function() {
|
|
return (ot = r.dynCall_viii = r.asm.dynCall_viii).apply(null, arguments)
|
|
},
|
|
ut = r.dynCall_viiii = function() {
|
|
return (ut = r.dynCall_viiii = r.asm.dynCall_viiii).apply(null, arguments)
|
|
},
|
|
st = r.dynCall_viiiii = function() {
|
|
return (st = r.dynCall_viiiii = r.asm.dynCall_viiiii).apply(null, arguments)
|
|
},
|
|
ct = r.dynCall_viiiiii = function() {
|
|
return (ct = r.dynCall_viiiiii = r.asm.dynCall_viiiiii).apply(null, arguments)
|
|
},
|
|
lt = r.dynCall_i = function() {
|
|
return (lt = r.dynCall_i = r.asm.dynCall_i).apply(null, arguments)
|
|
},
|
|
ft = r.dynCall_ii = function() {
|
|
return (ft = r.dynCall_ii = r.asm.dynCall_ii).apply(null, arguments)
|
|
},
|
|
dt = r.dynCall_iii = function() {
|
|
return (dt = r.dynCall_iii = r.asm.dynCall_iii).apply(null, arguments)
|
|
},
|
|
mt = r.dynCall_iiii = function() {
|
|
return (mt = r.dynCall_iiii = r.asm.dynCall_iiii).apply(null, arguments)
|
|
},
|
|
pt = r.dynCall_iiiii = function() {
|
|
return (pt = r.dynCall_iiiii = r.asm.dynCall_iiiii).apply(null, arguments)
|
|
},
|
|
vt = r.dynCall_iiiiii = function() {
|
|
return (vt = r.dynCall_iiiiii = r.asm.dynCall_iiiiii).apply(null, arguments)
|
|
},
|
|
gt = r.dynCall_iiiiiii = function() {
|
|
return (gt = r.dynCall_iiiiiii = r.asm.dynCall_iiiiiii).apply(null, arguments)
|
|
},
|
|
ht = r.dynCall_iiiiiiii = function() {
|
|
return (ht = r.dynCall_iiiiiiii = r.asm.dynCall_iiiiiiii).apply(null, arguments)
|
|
},
|
|
_t = r.dynCall_iid = function() {
|
|
return (_t = r.dynCall_iid = r.asm.dynCall_iid).apply(null, arguments)
|
|
},
|
|
bt = r.dynCall_di = function() {
|
|
return (bt = r.dynCall_di = r.asm.dynCall_di).apply(null, arguments)
|
|
},
|
|
yt = r.stackSave = function() {
|
|
return (yt = r.stackSave = r.asm.stackSave).apply(null, arguments)
|
|
},
|
|
wt = r.stackAlloc = function() {
|
|
return (wt = r.stackAlloc = r.asm.stackAlloc).apply(null, arguments)
|
|
},
|
|
Et = r.stackRestore = function() {
|
|
return (Et = r.stackRestore = r.asm.stackRestore).apply(null, arguments)
|
|
};
|
|
r.__growWasmMemory = function() {
|
|
return (r.__growWasmMemory = r.asm.__growWasmMemory).apply(null, arguments)
|
|
}, r.dynCall_viiiiiii = function() {
|
|
return (r.dynCall_viiiiiii = r.asm.dynCall_viiiiiii).apply(null, arguments)
|
|
}, r.dynCall_viiiiiiiii = function() {
|
|
return (r.dynCall_viiiiiiiii = r.asm.dynCall_viiiiiiiii).apply(null, arguments)
|
|
}, r.dynCall_v = function() {
|
|
return (r.dynCall_v = r.asm.dynCall_v).apply(null, arguments)
|
|
}, r.dynCall_diii = function() {
|
|
return (r.dynCall_diii = r.asm.dynCall_diii).apply(null, arguments)
|
|
}, r.dynCall_viiiiiiii = function() {
|
|
return (r.dynCall_viiiiiiii = r.asm.dynCall_viiiiiiii).apply(null, arguments)
|
|
}, r.dynCall_iiiiiiiiii = function() {
|
|
return (r.dynCall_iiiiiiiiii = r.asm.dynCall_iiiiiiiiii).apply(null, arguments)
|
|
}, r.dynCall_jiji = function() {
|
|
return (r.dynCall_jiji = r.asm.dynCall_jiji).apply(null, arguments)
|
|
}, r.dynCall_ji = function() {
|
|
return (r.dynCall_ji = r.asm.dynCall_ji).apply(null, arguments)
|
|
}, r.dynCall_iiiiiidii = function() {
|
|
return (r.dynCall_iiiiiidii = r.asm.dynCall_iiiiiidii).apply(null, arguments)
|
|
}, r.dynCall_iiiiiiiii = function() {
|
|
return (r.dynCall_iiiiiiiii = r.asm.dynCall_iiiiiiiii).apply(null, arguments)
|
|
}, r.dynCall_viiiiiiiiiii = function() {
|
|
return (r.dynCall_viiiiiiiiiii = r.asm.dynCall_viiiiiiiiiii).apply(null, arguments)
|
|
}, r.dynCall_iidiiii = function() {
|
|
return (r.dynCall_iidiiii = r.asm.dynCall_iidiiii).apply(null, arguments)
|
|
}, r.dynCall_vffff = function() {
|
|
return (r.dynCall_vffff = r.asm.dynCall_vffff).apply(null, arguments)
|
|
}, r.dynCall_vf = function() {
|
|
return (r.dynCall_vf = r.asm.dynCall_vf).apply(null, arguments)
|
|
}, r.dynCall_vff = function() {
|
|
return (r.dynCall_vff = r.asm.dynCall_vff).apply(null, arguments)
|
|
}, r.dynCall_vfi = function() {
|
|
return (r.dynCall_vfi = r.asm.dynCall_vfi).apply(null, arguments)
|
|
}, r.dynCall_viif = function() {
|
|
return (r.dynCall_viif = r.asm.dynCall_viif).apply(null, arguments)
|
|
}, r.dynCall_vif = function() {
|
|
return (r.dynCall_vif = r.asm.dynCall_vif).apply(null, arguments)
|
|
}, r.dynCall_viff = function() {
|
|
return (r.dynCall_viff = r.asm.dynCall_viff).apply(null, arguments)
|
|
}, r.dynCall_vifff = function() {
|
|
return (r.dynCall_vifff = r.asm.dynCall_vifff).apply(null, arguments)
|
|
}, r.dynCall_viffff = function() {
|
|
return (r.dynCall_viffff = r.asm.dynCall_viffff).apply(null, arguments)
|
|
}, r.dynCall_viiiiiiiiii = function() {
|
|
return (r.dynCall_viiiiiiiiii = r.asm.dynCall_viiiiiiiiii).apply(null, arguments)
|
|
}, r.dynCall_viifi = function() {
|
|
return (r.dynCall_viifi = r.asm.dynCall_viifi).apply(null, arguments)
|
|
};
|
|
|
|
function xt(e) {
|
|
this.name = "ExitStatus", this.message = "Program terminated with exit(" + e + ")", this.status = e
|
|
}
|
|
r.asm = Xr, r.ccall = A, r.cwrap = function(e, r, t, n) {
|
|
var i = (t = t || []).every((function(e) {
|
|
return "number" === e
|
|
}));
|
|
return "string" !== r && i && !n ? F(e) : function() {
|
|
return A(e, r, t, arguments)
|
|
}
|
|
}, r.getMemory = function(e) {
|
|
return te ? Zr(e) : v(e)
|
|
}, r.addRunDependency = de, r.removeRunDependency = me, r.FS_createFolder = Pe.createFolder, r.FS_createPath = Pe.createPath, r.FS_createDataFile = Pe.createDataFile, r.FS_createPreloadedFile = Pe.createPreloadedFile, r.FS_createLazyFile = Pe.createLazyFile, r.FS_createLink = Pe.createLink, r.FS_createDevice = Pe.createDevice, r.FS_unlink = Pe.unlink;
|
|
|
|
function kt(e) {
|
|
function n() {
|
|
Hr || (Hr = !0, r.calledRun = !0, S || (te = !0, r.noFSInit || Pe.init.initialized || Pe.init(), De.init(), Z($), Pe.ignorePermissions = !1, Z(J), t(r), r.onRuntimeInitialized && r.onRuntimeInitialized(), St && function(e) {
|
|
var t = r._main,
|
|
n = (e = e || []).length + 1,
|
|
i = wt(4 * (n + 1));
|
|
q[i >> 2] = N(l);
|
|
for (var a = 1; a < n; a++) q[(i >> 2) + a] = N(e[a - 1]);
|
|
q[(i >> 2) + n] = 0;
|
|
try {
|
|
Ct(t(n, i), !0)
|
|
} catch (e) {
|
|
if (e instanceof xt) return;
|
|
if ("unwind" == e) return void(y = !0);
|
|
var o = e;
|
|
e && "object" == typeof e && e.stack && (o = [e, e.stack]), p("exception thrown: " + o), f(1, e)
|
|
} finally {
|
|
!0
|
|
}
|
|
}(e), function() {
|
|
if (r.postRun)
|
|
for ("function" == typeof r.postRun && (r.postRun = [r.postRun]); r.postRun.length;) e = r.postRun.shift(), re.unshift(e);
|
|
var e;
|
|
Z(re)
|
|
}()))
|
|
}
|
|
e = e || c, ce > 0 || (! function() {
|
|
if (r.preRun)
|
|
for ("function" == typeof r.preRun && (r.preRun = [r.preRun]); r.preRun.length;) e = r.preRun.shift(), K.unshift(e);
|
|
var e;
|
|
Z(K)
|
|
}(), ce > 0 || (r.setStatus ? (r.setStatus("Running..."), setTimeout((function() {
|
|
setTimeout((function() {
|
|
r.setStatus("")
|
|
}), 1), n()
|
|
}), 1)) : n()))
|
|
}
|
|
|
|
function Ct(e, t) {
|
|
t && y && 0 === e || (y || (S = !0, e, !0, r.onExit && r.onExit(e)), f(e, new xt(e)))
|
|
}
|
|
if (fe = function e() {
|
|
Hr || kt(), Hr || (fe = e)
|
|
}, r.run = kt, r.preInit)
|
|
for ("function" == typeof r.preInit && (r.preInit = [r.preInit]); r.preInit.length > 0;) r.preInit.pop()();
|
|
var St = !0;
|
|
return r.noInitialRun && (St = !1), y = !0, kt(), r.ready
|
|
}
|
|
}();
|
|
export default Module; |