/*! For license information please see viewer.min.js.LICENSE.txt */ (() => { var t = { 591: (t, e, i) => { 'use strict'; var r = {}; (0, i(236).assign)(r, i(555), i(843), i(619)), (t.exports = r); }, 555: (t, e, i) => { 'use strict'; var r = i(405), n = i(236), a = i(373), s = i(898), o = i(292), l = Object.prototype.toString; function h(t) { if (!(this instanceof h)) return new h(t); this.options = n.assign({ level: -1, method: 8, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: 0, to: '' }, t || {}); var e = this.options; e.raw && e.windowBits > 0 ? (e.windowBits = -e.windowBits) : e.gzip && e.windowBits > 0 && e.windowBits < 16 && (e.windowBits += 16), (this.err = 0), (this.msg = ''), (this.ended = !1), (this.chunks = []), (this.strm = new o()), (this.strm.avail_out = 0); var i = r.deflateInit2(this.strm, e.level, e.method, e.windowBits, e.memLevel, e.strategy); if (0 !== i) throw new Error(s[i]); if ((e.header && r.deflateSetHeader(this.strm, e.header), e.dictionary)) { var u; if ( ((u = 'string' == typeof e.dictionary ? a.string2buf(e.dictionary) : '[object ArrayBuffer]' === l.call(e.dictionary) ? new Uint8Array(e.dictionary) : e.dictionary), 0 !== (i = r.deflateSetDictionary(this.strm, u))) ) throw new Error(s[i]); this._dict_set = !0; } } function u(t, e) { var i = new h(e); if ((i.push(t, !0), i.err)) throw i.msg || s[i.err]; return i.result; } (h.prototype.push = function (t, e) { var i, s, o = this.strm, h = this.options.chunkSize; if (this.ended) return !1; (s = e === ~~e ? e : !0 === e ? 4 : 0), 'string' == typeof t ? (o.input = a.string2buf(t)) : '[object ArrayBuffer]' === l.call(t) ? (o.input = new Uint8Array(t)) : (o.input = t), (o.next_in = 0), (o.avail_in = o.input.length); do { if ( (0 === o.avail_out && ((o.output = new n.Buf8(h)), (o.next_out = 0), (o.avail_out = h)), 1 !== (i = r.deflate(o, s)) && 0 !== i) ) return this.onEnd(i), (this.ended = !0), !1; (0 !== o.avail_out && (0 !== o.avail_in || (4 !== s && 2 !== s))) || ('string' === this.options.to ? this.onData(a.buf2binstring(n.shrinkBuf(o.output, o.next_out))) : this.onData(n.shrinkBuf(o.output, o.next_out))); } while ((o.avail_in > 0 || 0 === o.avail_out) && 1 !== i); return 4 === s ? ((i = r.deflateEnd(this.strm)), this.onEnd(i), (this.ended = !0), 0 === i) : 2 !== s || (this.onEnd(0), (o.avail_out = 0), !0); }), (h.prototype.onData = function (t) { this.chunks.push(t); }), (h.prototype.onEnd = function (t) { 0 === t && ('string' === this.options.to ? (this.result = this.chunks.join('')) : (this.result = n.flattenChunks(this.chunks))), (this.chunks = []), (this.err = t), (this.msg = this.strm.msg); }), (e.Deflate = h), (e.deflate = u), (e.deflateRaw = function (t, e) { return ((e = e || {}).raw = !0), u(t, e); }), (e.gzip = function (t, e) { return ((e = e || {}).gzip = !0), u(t, e); }); }, 843: (t, e, i) => { 'use strict'; var r = i(948), n = i(236), a = i(373), s = i(619), o = i(898), l = i(292), h = i(401), u = Object.prototype.toString; function c(t) { if (!(this instanceof c)) return new c(t); this.options = n.assign({ chunkSize: 16384, windowBits: 0, to: '' }, t || {}); var e = this.options; e.raw && e.windowBits >= 0 && e.windowBits < 16 && ((e.windowBits = -e.windowBits), 0 === e.windowBits && (e.windowBits = -15)), !(e.windowBits >= 0 && e.windowBits < 16) || (t && t.windowBits) || (e.windowBits += 32), e.windowBits > 15 && e.windowBits < 48 && 0 == (15 & e.windowBits) && (e.windowBits |= 15), (this.err = 0), (this.msg = ''), (this.ended = !1), (this.chunks = []), (this.strm = new l()), (this.strm.avail_out = 0); var i = r.inflateInit2(this.strm, e.windowBits); if (i !== s.Z_OK) throw new Error(o[i]); if ( ((this.header = new h()), r.inflateGetHeader(this.strm, this.header), e.dictionary && ('string' == typeof e.dictionary ? (e.dictionary = a.string2buf(e.dictionary)) : '[object ArrayBuffer]' === u.call(e.dictionary) && (e.dictionary = new Uint8Array(e.dictionary)), e.raw && (i = r.inflateSetDictionary(this.strm, e.dictionary)) !== s.Z_OK)) ) throw new Error(o[i]); } function f(t, e) { var i = new c(e); if ((i.push(t, !0), i.err)) throw i.msg || o[i.err]; return i.result; } (c.prototype.push = function (t, e) { var i, o, l, h, c, f = this.strm, d = this.options.chunkSize, b = this.options.dictionary, g = !1; if (this.ended) return !1; (o = e === ~~e ? e : !0 === e ? s.Z_FINISH : s.Z_NO_FLUSH), 'string' == typeof t ? (f.input = a.binstring2buf(t)) : '[object ArrayBuffer]' === u.call(t) ? (f.input = new Uint8Array(t)) : (f.input = t), (f.next_in = 0), (f.avail_in = f.input.length); do { if ( (0 === f.avail_out && ((f.output = new n.Buf8(d)), (f.next_out = 0), (f.avail_out = d)), (i = r.inflate(f, s.Z_NO_FLUSH)) === s.Z_NEED_DICT && b && (i = r.inflateSetDictionary(this.strm, b)), i === s.Z_BUF_ERROR && !0 === g && ((i = s.Z_OK), (g = !1)), i !== s.Z_STREAM_END && i !== s.Z_OK) ) return this.onEnd(i), (this.ended = !0), !1; f.next_out && ((0 !== f.avail_out && i !== s.Z_STREAM_END && (0 !== f.avail_in || (o !== s.Z_FINISH && o !== s.Z_SYNC_FLUSH))) || ('string' === this.options.to ? ((l = a.utf8border(f.output, f.next_out)), (h = f.next_out - l), (c = a.buf2string(f.output, l)), (f.next_out = h), (f.avail_out = d - h), h && n.arraySet(f.output, f.output, l, h, 0), this.onData(c)) : this.onData(n.shrinkBuf(f.output, f.next_out)))), 0 === f.avail_in && 0 === f.avail_out && (g = !0); } while ((f.avail_in > 0 || 0 === f.avail_out) && i !== s.Z_STREAM_END); return ( i === s.Z_STREAM_END && (o = s.Z_FINISH), o === s.Z_FINISH ? ((i = r.inflateEnd(this.strm)), this.onEnd(i), (this.ended = !0), i === s.Z_OK) : o !== s.Z_SYNC_FLUSH || (this.onEnd(s.Z_OK), (f.avail_out = 0), !0) ); }), (c.prototype.onData = function (t) { this.chunks.push(t); }), (c.prototype.onEnd = function (t) { t === s.Z_OK && ('string' === this.options.to ? (this.result = this.chunks.join('')) : (this.result = n.flattenChunks(this.chunks))), (this.chunks = []), (this.err = t), (this.msg = this.strm.msg); }), (e.Inflate = c), (e.inflate = f), (e.inflateRaw = function (t, e) { return ((e = e || {}).raw = !0), f(t, e); }), (e.ungzip = f); }, 236: (t, e) => { 'use strict'; var i = 'undefined' != typeof Uint8Array && 'undefined' != typeof Uint16Array && 'undefined' != typeof Int32Array; function r(t, e) { return Object.prototype.hasOwnProperty.call(t, e); } (e.assign = function (t) { for (var e = Array.prototype.slice.call(arguments, 1); e.length; ) { var i = e.shift(); if (i) { if ('object' != typeof i) throw new TypeError(i + 'must be non-object'); for (var n in i) r(i, n) && (t[n] = i[n]); } } return t; }), (e.shrinkBuf = function (t, e) { return t.length === e ? t : t.subarray ? t.subarray(0, e) : ((t.length = e), t); }); var n = { arraySet: function (t, e, i, r, n) { if (e.subarray && t.subarray) t.set(e.subarray(i, i + r), n); else for (var a = 0; a < r; a++) t[n + a] = e[i + a]; }, flattenChunks: function (t) { var e, i, r, n, a, s; for (r = 0, e = 0, i = t.length; e < i; e++) r += t[e].length; for (s = new Uint8Array(r), n = 0, e = 0, i = t.length; e < i; e++) (a = t[e]), s.set(a, n), (n += a.length); return s; }, }, a = { arraySet: function (t, e, i, r, n) { for (var a = 0; a < r; a++) t[n + a] = e[i + a]; }, flattenChunks: function (t) { return [].concat.apply([], t); }, }; (e.setTyped = function (t) { t ? ((e.Buf8 = Uint8Array), (e.Buf16 = Uint16Array), (e.Buf32 = Int32Array), e.assign(e, n)) : ((e.Buf8 = Array), (e.Buf16 = Array), (e.Buf32 = Array), e.assign(e, a)); }), e.setTyped(i); }, 373: (t, e, i) => { 'use strict'; var r = i(236), n = !0, a = !0; try { String.fromCharCode.apply(null, [0]); } catch (t) { n = !1; } try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (t) { a = !1; } for (var s = new r.Buf8(256), o = 0; o < 256; o++) s[o] = o >= 252 ? 6 : o >= 248 ? 5 : o >= 240 ? 4 : o >= 224 ? 3 : o >= 192 ? 2 : 1; function l(t, e) { if (e < 65534 && ((t.subarray && a) || (!t.subarray && n))) return String.fromCharCode.apply(null, r.shrinkBuf(t, e)); for (var i = '', s = 0; s < e; s++) i += String.fromCharCode(t[s]); return i; } (s[254] = s[254] = 1), (e.string2buf = function (t) { var e, i, n, a, s, o = t.length, l = 0; for (a = 0; a < o; a++) 55296 == (64512 & (i = t.charCodeAt(a))) && a + 1 < o && 56320 == (64512 & (n = t.charCodeAt(a + 1))) && ((i = 65536 + ((i - 55296) << 10) + (n - 56320)), a++), (l += i < 128 ? 1 : i < 2048 ? 2 : i < 65536 ? 3 : 4); for (e = new r.Buf8(l), s = 0, a = 0; s < l; a++) 55296 == (64512 & (i = t.charCodeAt(a))) && a + 1 < o && 56320 == (64512 & (n = t.charCodeAt(a + 1))) && ((i = 65536 + ((i - 55296) << 10) + (n - 56320)), a++), i < 128 ? (e[s++] = i) : i < 2048 ? ((e[s++] = 192 | (i >>> 6)), (e[s++] = 128 | (63 & i))) : i < 65536 ? ((e[s++] = 224 | (i >>> 12)), (e[s++] = 128 | ((i >>> 6) & 63)), (e[s++] = 128 | (63 & i))) : ((e[s++] = 240 | (i >>> 18)), (e[s++] = 128 | ((i >>> 12) & 63)), (e[s++] = 128 | ((i >>> 6) & 63)), (e[s++] = 128 | (63 & i))); return e; }), (e.buf2binstring = function (t) { return l(t, t.length); }), (e.binstring2buf = function (t) { for (var e = new r.Buf8(t.length), i = 0, n = e.length; i < n; i++) e[i] = t.charCodeAt(i); return e; }), (e.buf2string = function (t, e) { var i, r, n, a, o = e || t.length, h = new Array(2 * o); for (r = 0, i = 0; i < o; ) if ((n = t[i++]) < 128) h[r++] = n; else if ((a = s[n]) > 4) (h[r++] = 65533), (i += a - 1); else { for (n &= 2 === a ? 31 : 3 === a ? 15 : 7; a > 1 && i < o; ) (n = (n << 6) | (63 & t[i++])), a--; a > 1 ? (h[r++] = 65533) : n < 65536 ? (h[r++] = n) : ((n -= 65536), (h[r++] = 55296 | ((n >> 10) & 1023)), (h[r++] = 56320 | (1023 & n))); } return l(h, r); }), (e.utf8border = function (t, e) { var i; for ((e = e || t.length) > t.length && (e = t.length), i = e - 1; i >= 0 && 128 == (192 & t[i]); ) i--; return i < 0 || 0 === i ? e : i + s[t[i]] > e ? i : e; }); }, 69: (t) => { 'use strict'; t.exports = function (t, e, i, r) { for (var n = (65535 & t) | 0, a = ((t >>> 16) & 65535) | 0, s = 0; 0 !== i; ) { i -= s = i > 2e3 ? 2e3 : i; do { a = (a + (n = (n + e[r++]) | 0)) | 0; } while (--s); (n %= 65521), (a %= 65521); } return n | (a << 16) | 0; }; }, 619: (t) => { 'use strict'; t.exports = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8, }; }, 869: (t) => { 'use strict'; var e = (function () { for (var t, e = [], i = 0; i < 256; i++) { t = i; for (var r = 0; r < 8; r++) t = 1 & t ? 3988292384 ^ (t >>> 1) : t >>> 1; e[i] = t; } return e; })(); t.exports = function (t, i, r, n) { var a = e, s = n + r; t ^= -1; for (var o = n; o < s; o++) t = (t >>> 8) ^ a[255 & (t ^ i[o])]; return -1 ^ t; }; }, 405: (t, e, i) => { 'use strict'; var r, n = i(236), a = i(342), s = i(69), o = i(869), l = i(898), h = -2, u = 258, c = 262, f = 103, d = 113, b = 666; function g(t, e) { return (t.msg = l[e]), e; } function _(t) { return (t << 1) - (t > 4 ? 9 : 0); } function p(t) { for (var e = t.length; --e >= 0; ) t[e] = 0; } function m(t) { var e = t.state, i = e.pending; i > t.avail_out && (i = t.avail_out), 0 !== i && (n.arraySet(t.output, e.pending_buf, e.pending_out, i, t.next_out), (t.next_out += i), (e.pending_out += i), (t.total_out += i), (t.avail_out -= i), (e.pending -= i), 0 === e.pending && (e.pending_out = 0)); } function v(t, e) { a._tr_flush_block(t, t.block_start >= 0 ? t.block_start : -1, t.strstart - t.block_start, e), (t.block_start = t.strstart), m(t.strm); } function x(t, e) { t.pending_buf[t.pending++] = e; } function T(t, e) { (t.pending_buf[t.pending++] = (e >>> 8) & 255), (t.pending_buf[t.pending++] = 255 & e); } function w(t, e) { var i, r, n = t.max_chain_length, a = t.strstart, s = t.prev_length, o = t.nice_match, l = t.strstart > t.w_size - c ? t.strstart - (t.w_size - c) : 0, h = t.window, f = t.w_mask, d = t.prev, b = t.strstart + u, g = h[a + s - 1], _ = h[a + s]; t.prev_length >= t.good_match && (n >>= 2), o > t.lookahead && (o = t.lookahead); do { if (h[(i = e) + s] === _ && h[i + s - 1] === g && h[i] === h[a] && h[++i] === h[a + 1]) { (a += 2), i++; do {} while ( h[++a] === h[++i] && h[++a] === h[++i] && h[++a] === h[++i] && h[++a] === h[++i] && h[++a] === h[++i] && h[++a] === h[++i] && h[++a] === h[++i] && h[++a] === h[++i] && a < b ); if (((r = u - (b - a)), (a = b - u), r > s)) { if (((t.match_start = e), (s = r), r >= o)) break; (g = h[a + s - 1]), (_ = h[a + s]); } } } while ((e = d[e & f]) > l && 0 != --n); return s <= t.lookahead ? s : t.lookahead; } function y(t) { var e, i, r, a, l, h, u, f, d, b, g = t.w_size; do { if (((a = t.window_size - t.lookahead - t.strstart), t.strstart >= g + (g - c))) { n.arraySet(t.window, t.window, g, g, 0), (t.match_start -= g), (t.strstart -= g), (t.block_start -= g), (e = i = t.hash_size); do { (r = t.head[--e]), (t.head[e] = r >= g ? r - g : 0); } while (--i); e = i = g; do { (r = t.prev[--e]), (t.prev[e] = r >= g ? r - g : 0); } while (--i); a += g; } if (0 === t.strm.avail_in) break; if ( ((h = t.strm), (u = t.window), (f = t.strstart + t.lookahead), (d = a), (b = void 0), (b = h.avail_in) > d && (b = d), (i = 0 === b ? 0 : ((h.avail_in -= b), n.arraySet(u, h.input, h.next_in, b, f), 1 === h.state.wrap ? (h.adler = s(h.adler, u, b, f)) : 2 === h.state.wrap && (h.adler = o(h.adler, u, b, f)), (h.next_in += b), (h.total_in += b), b)), (t.lookahead += i), t.lookahead + t.insert >= 3) ) for ( l = t.strstart - t.insert, t.ins_h = t.window[l], t.ins_h = ((t.ins_h << t.hash_shift) ^ t.window[l + 1]) & t.hash_mask; t.insert && ((t.ins_h = ((t.ins_h << t.hash_shift) ^ t.window[l + 3 - 1]) & t.hash_mask), (t.prev[l & t.w_mask] = t.head[t.ins_h]), (t.head[t.ins_h] = l), l++, t.insert--, !(t.lookahead + t.insert < 3)); ); } while (t.lookahead < c && 0 !== t.strm.avail_in); } function A(t, e) { for (var i, r; ; ) { if (t.lookahead < c) { if ((y(t), t.lookahead < c && 0 === e)) return 1; if (0 === t.lookahead) break; } if ( ((i = 0), t.lookahead >= 3 && ((t.ins_h = ((t.ins_h << t.hash_shift) ^ t.window[t.strstart + 3 - 1]) & t.hash_mask), (i = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h]), (t.head[t.ins_h] = t.strstart)), 0 !== i && t.strstart - i <= t.w_size - c && (t.match_length = w(t, i)), t.match_length >= 3) ) if ( ((r = a._tr_tally(t, t.strstart - t.match_start, t.match_length - 3)), (t.lookahead -= t.match_length), t.match_length <= t.max_lazy_match && t.lookahead >= 3) ) { t.match_length--; do { t.strstart++, (t.ins_h = ((t.ins_h << t.hash_shift) ^ t.window[t.strstart + 3 - 1]) & t.hash_mask), (i = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h]), (t.head[t.ins_h] = t.strstart); } while (0 != --t.match_length); t.strstart++; } else (t.strstart += t.match_length), (t.match_length = 0), (t.ins_h = t.window[t.strstart]), (t.ins_h = ((t.ins_h << t.hash_shift) ^ t.window[t.strstart + 1]) & t.hash_mask); else (r = a._tr_tally(t, 0, t.window[t.strstart])), t.lookahead--, t.strstart++; if (r && (v(t, !1), 0 === t.strm.avail_out)) return 1; } return ( (t.insert = t.strstart < 2 ? t.strstart : 2), 4 === e ? (v(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.last_lit && (v(t, !1), 0 === t.strm.avail_out) ? 1 : 2 ); } function E(t, e) { for (var i, r, n; ; ) { if (t.lookahead < c) { if ((y(t), t.lookahead < c && 0 === e)) return 1; if (0 === t.lookahead) break; } if ( ((i = 0), t.lookahead >= 3 && ((t.ins_h = ((t.ins_h << t.hash_shift) ^ t.window[t.strstart + 3 - 1]) & t.hash_mask), (i = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h]), (t.head[t.ins_h] = t.strstart)), (t.prev_length = t.match_length), (t.prev_match = t.match_start), (t.match_length = 2), 0 !== i && t.prev_length < t.max_lazy_match && t.strstart - i <= t.w_size - c && ((t.match_length = w(t, i)), t.match_length <= 5 && (1 === t.strategy || (3 === t.match_length && t.strstart - t.match_start > 4096)) && (t.match_length = 2)), t.prev_length >= 3 && t.match_length <= t.prev_length) ) { (n = t.strstart + t.lookahead - 3), (r = a._tr_tally(t, t.strstart - 1 - t.prev_match, t.prev_length - 3)), (t.lookahead -= t.prev_length - 1), (t.prev_length -= 2); do { ++t.strstart <= n && ((t.ins_h = ((t.ins_h << t.hash_shift) ^ t.window[t.strstart + 3 - 1]) & t.hash_mask), (i = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h]), (t.head[t.ins_h] = t.strstart)); } while (0 != --t.prev_length); if (((t.match_available = 0), (t.match_length = 2), t.strstart++, r && (v(t, !1), 0 === t.strm.avail_out))) return 1; } else if (t.match_available) { if (((r = a._tr_tally(t, 0, t.window[t.strstart - 1])) && v(t, !1), t.strstart++, t.lookahead--, 0 === t.strm.avail_out)) return 1; } else (t.match_available = 1), t.strstart++, t.lookahead--; } return ( t.match_available && ((r = a._tr_tally(t, 0, t.window[t.strstart - 1])), (t.match_available = 0)), (t.insert = t.strstart < 2 ? t.strstart : 2), 4 === e ? (v(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.last_lit && (v(t, !1), 0 === t.strm.avail_out) ? 1 : 2 ); } function C(t, e, i, r, n) { (this.good_length = t), (this.max_lazy = e), (this.nice_length = i), (this.max_chain = r), (this.func = n); } function S() { (this.strm = null), (this.status = 0), (this.pending_buf = null), (this.pending_buf_size = 0), (this.pending_out = 0), (this.pending = 0), (this.wrap = 0), (this.gzhead = null), (this.gzindex = 0), (this.method = 8), (this.last_flush = -1), (this.w_size = 0), (this.w_bits = 0), (this.w_mask = 0), (this.window = null), (this.window_size = 0), (this.prev = null), (this.head = null), (this.ins_h = 0), (this.hash_size = 0), (this.hash_bits = 0), (this.hash_mask = 0), (this.hash_shift = 0), (this.block_start = 0), (this.match_length = 0), (this.prev_match = 0), (this.match_available = 0), (this.strstart = 0), (this.match_start = 0), (this.lookahead = 0), (this.prev_length = 0), (this.max_chain_length = 0), (this.max_lazy_match = 0), (this.level = 0), (this.strategy = 0), (this.good_match = 0), (this.nice_match = 0), (this.dyn_ltree = new n.Buf16(1146)), (this.dyn_dtree = new n.Buf16(122)), (this.bl_tree = new n.Buf16(78)), p(this.dyn_ltree), p(this.dyn_dtree), p(this.bl_tree), (this.l_desc = null), (this.d_desc = null), (this.bl_desc = null), (this.bl_count = new n.Buf16(16)), (this.heap = new n.Buf16(573)), p(this.heap), (this.heap_len = 0), (this.heap_max = 0), (this.depth = new n.Buf16(573)), p(this.depth), (this.l_buf = 0), (this.lit_bufsize = 0), (this.last_lit = 0), (this.d_buf = 0), (this.opt_len = 0), (this.static_len = 0), (this.matches = 0), (this.insert = 0), (this.bi_buf = 0), (this.bi_valid = 0); } function M(t) { var e; return t && t.state ? ((t.total_in = t.total_out = 0), (t.data_type = 2), ((e = t.state).pending = 0), (e.pending_out = 0), e.wrap < 0 && (e.wrap = -e.wrap), (e.status = e.wrap ? 42 : d), (t.adler = 2 === e.wrap ? 0 : 1), (e.last_flush = 0), a._tr_init(e), 0) : g(t, h); } function k(t) { var e, i = M(t); return ( 0 === i && (((e = t.state).window_size = 2 * e.w_size), p(e.head), (e.max_lazy_match = r[e.level].max_lazy), (e.good_match = r[e.level].good_length), (e.nice_match = r[e.level].nice_length), (e.max_chain_length = r[e.level].max_chain), (e.strstart = 0), (e.block_start = 0), (e.lookahead = 0), (e.insert = 0), (e.match_length = e.prev_length = 2), (e.match_available = 0), (e.ins_h = 0)), i ); } function F(t, e, i, r, a, s) { if (!t) return h; var o = 1; if ( (-1 === e && (e = 6), r < 0 ? ((o = 0), (r = -r)) : r > 15 && ((o = 2), (r -= 16)), a < 1 || a > 9 || 8 !== i || r < 8 || r > 15 || e < 0 || e > 9 || s < 0 || s > 4) ) return g(t, h); 8 === r && (r = 9); var l = new S(); return ( (t.state = l), (l.strm = t), (l.wrap = o), (l.gzhead = null), (l.w_bits = r), (l.w_size = 1 << l.w_bits), (l.w_mask = l.w_size - 1), (l.hash_bits = a + 7), (l.hash_size = 1 << l.hash_bits), (l.hash_mask = l.hash_size - 1), (l.hash_shift = ~~((l.hash_bits + 3 - 1) / 3)), (l.window = new n.Buf8(2 * l.w_size)), (l.head = new n.Buf16(l.hash_size)), (l.prev = new n.Buf16(l.w_size)), (l.lit_bufsize = 1 << (a + 6)), (l.pending_buf_size = 4 * l.lit_bufsize), (l.pending_buf = new n.Buf8(l.pending_buf_size)), (l.d_buf = 1 * l.lit_bufsize), (l.l_buf = 3 * l.lit_bufsize), (l.level = e), (l.strategy = s), (l.method = i), k(t) ); } (r = [ new C(0, 0, 0, 0, function (t, e) { var i = 65535; for (i > t.pending_buf_size - 5 && (i = t.pending_buf_size - 5); ; ) { if (t.lookahead <= 1) { if ((y(t), 0 === t.lookahead && 0 === e)) return 1; if (0 === t.lookahead) break; } (t.strstart += t.lookahead), (t.lookahead = 0); var r = t.block_start + i; if ( (0 === t.strstart || t.strstart >= r) && ((t.lookahead = t.strstart - r), (t.strstart = r), v(t, !1), 0 === t.strm.avail_out) ) return 1; if (t.strstart - t.block_start >= t.w_size - c && (v(t, !1), 0 === t.strm.avail_out)) return 1; } return ( (t.insert = 0), 4 === e ? (v(t, !0), 0 === t.strm.avail_out ? 3 : 4) : (t.strstart > t.block_start && (v(t, !1), t.strm.avail_out), 1) ); }), new C(4, 4, 8, 4, A), new C(4, 5, 16, 8, A), new C(4, 6, 32, 32, A), new C(4, 4, 16, 16, E), new C(8, 16, 32, 32, E), new C(8, 16, 128, 128, E), new C(8, 32, 128, 256, E), new C(32, 128, 258, 1024, E), new C(32, 258, 258, 4096, E), ]), (e.deflateInit = function (t, e) { return F(t, e, 8, 15, 8, 0); }), (e.deflateInit2 = F), (e.deflateReset = k), (e.deflateResetKeep = M), (e.deflateSetHeader = function (t, e) { return t && t.state ? (2 !== t.state.wrap ? h : ((t.state.gzhead = e), 0)) : h; }), (e.deflate = function (t, e) { var i, n, s, l; if (!t || !t.state || e > 5 || e < 0) return t ? g(t, h) : h; if (((n = t.state), !t.output || (!t.input && 0 !== t.avail_in) || (n.status === b && 4 !== e))) return g(t, 0 === t.avail_out ? -5 : h); if (((n.strm = t), (i = n.last_flush), (n.last_flush = e), 42 === n.status)) if (2 === n.wrap) (t.adler = 0), x(n, 31), x(n, 139), x(n, 8), n.gzhead ? (x( n, (n.gzhead.text ? 1 : 0) + (n.gzhead.hcrc ? 2 : 0) + (n.gzhead.extra ? 4 : 0) + (n.gzhead.name ? 8 : 0) + (n.gzhead.comment ? 16 : 0), ), x(n, 255 & n.gzhead.time), x(n, (n.gzhead.time >> 8) & 255), x(n, (n.gzhead.time >> 16) & 255), x(n, (n.gzhead.time >> 24) & 255), x(n, 9 === n.level ? 2 : n.strategy >= 2 || n.level < 2 ? 4 : 0), x(n, 255 & n.gzhead.os), n.gzhead.extra && n.gzhead.extra.length && (x(n, 255 & n.gzhead.extra.length), x(n, (n.gzhead.extra.length >> 8) & 255)), n.gzhead.hcrc && (t.adler = o(t.adler, n.pending_buf, n.pending, 0)), (n.gzindex = 0), (n.status = 69)) : (x(n, 0), x(n, 0), x(n, 0), x(n, 0), x(n, 0), x(n, 9 === n.level ? 2 : n.strategy >= 2 || n.level < 2 ? 4 : 0), x(n, 3), (n.status = d)); else { var c = (8 + ((n.w_bits - 8) << 4)) << 8; (c |= (n.strategy >= 2 || n.level < 2 ? 0 : n.level < 6 ? 1 : 6 === n.level ? 2 : 3) << 6), 0 !== n.strstart && (c |= 32), (c += 31 - (c % 31)), (n.status = d), T(n, c), 0 !== n.strstart && (T(n, t.adler >>> 16), T(n, 65535 & t.adler)), (t.adler = 1); } if (69 === n.status) if (n.gzhead.extra) { for ( s = n.pending; n.gzindex < (65535 & n.gzhead.extra.length) && (n.pending !== n.pending_buf_size || (n.gzhead.hcrc && n.pending > s && (t.adler = o(t.adler, n.pending_buf, n.pending - s, s)), m(t), (s = n.pending), n.pending !== n.pending_buf_size)); ) x(n, 255 & n.gzhead.extra[n.gzindex]), n.gzindex++; n.gzhead.hcrc && n.pending > s && (t.adler = o(t.adler, n.pending_buf, n.pending - s, s)), n.gzindex === n.gzhead.extra.length && ((n.gzindex = 0), (n.status = 73)); } else n.status = 73; if (73 === n.status) if (n.gzhead.name) { s = n.pending; do { if ( n.pending === n.pending_buf_size && (n.gzhead.hcrc && n.pending > s && (t.adler = o(t.adler, n.pending_buf, n.pending - s, s)), m(t), (s = n.pending), n.pending === n.pending_buf_size) ) { l = 1; break; } (l = n.gzindex < n.gzhead.name.length ? 255 & n.gzhead.name.charCodeAt(n.gzindex++) : 0), x(n, l); } while (0 !== l); n.gzhead.hcrc && n.pending > s && (t.adler = o(t.adler, n.pending_buf, n.pending - s, s)), 0 === l && ((n.gzindex = 0), (n.status = 91)); } else n.status = 91; if (91 === n.status) if (n.gzhead.comment) { s = n.pending; do { if ( n.pending === n.pending_buf_size && (n.gzhead.hcrc && n.pending > s && (t.adler = o(t.adler, n.pending_buf, n.pending - s, s)), m(t), (s = n.pending), n.pending === n.pending_buf_size) ) { l = 1; break; } (l = n.gzindex < n.gzhead.comment.length ? 255 & n.gzhead.comment.charCodeAt(n.gzindex++) : 0), x(n, l); } while (0 !== l); n.gzhead.hcrc && n.pending > s && (t.adler = o(t.adler, n.pending_buf, n.pending - s, s)), 0 === l && (n.status = f); } else n.status = f; if ( (n.status === f && (n.gzhead.hcrc ? (n.pending + 2 > n.pending_buf_size && m(t), n.pending + 2 <= n.pending_buf_size && (x(n, 255 & t.adler), x(n, (t.adler >> 8) & 255), (t.adler = 0), (n.status = d))) : (n.status = d)), 0 !== n.pending) ) { if ((m(t), 0 === t.avail_out)) return (n.last_flush = -1), 0; } else if (0 === t.avail_in && _(e) <= _(i) && 4 !== e) return g(t, -5); if (n.status === b && 0 !== t.avail_in) return g(t, -5); if (0 !== t.avail_in || 0 !== n.lookahead || (0 !== e && n.status !== b)) { var w = 2 === n.strategy ? (function (t, e) { for (var i; ; ) { if (0 === t.lookahead && (y(t), 0 === t.lookahead)) { if (0 === e) return 1; break; } if ( ((t.match_length = 0), (i = a._tr_tally(t, 0, t.window[t.strstart])), t.lookahead--, t.strstart++, i && (v(t, !1), 0 === t.strm.avail_out)) ) return 1; } return ( (t.insert = 0), 4 === e ? (v(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.last_lit && (v(t, !1), 0 === t.strm.avail_out) ? 1 : 2 ); })(n, e) : 3 === n.strategy ? (function (t, e) { for (var i, r, n, s, o = t.window; ; ) { if (t.lookahead <= u) { if ((y(t), t.lookahead <= u && 0 === e)) return 1; if (0 === t.lookahead) break; } if ( ((t.match_length = 0), t.lookahead >= 3 && t.strstart > 0 && (r = o[(n = t.strstart - 1)]) === o[++n] && r === o[++n] && r === o[++n]) ) { s = t.strstart + u; do {} while ( r === o[++n] && r === o[++n] && r === o[++n] && r === o[++n] && r === o[++n] && r === o[++n] && r === o[++n] && r === o[++n] && n < s ); (t.match_length = u - (s - n)), t.match_length > t.lookahead && (t.match_length = t.lookahead); } if ( (t.match_length >= 3 ? ((i = a._tr_tally(t, 1, t.match_length - 3)), (t.lookahead -= t.match_length), (t.strstart += t.match_length), (t.match_length = 0)) : ((i = a._tr_tally(t, 0, t.window[t.strstart])), t.lookahead--, t.strstart++), i && (v(t, !1), 0 === t.strm.avail_out)) ) return 1; } return ( (t.insert = 0), 4 === e ? (v(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.last_lit && (v(t, !1), 0 === t.strm.avail_out) ? 1 : 2 ); })(n, e) : r[n.level].func(n, e); if (((3 !== w && 4 !== w) || (n.status = b), 1 === w || 3 === w)) return 0 === t.avail_out && (n.last_flush = -1), 0; if ( 2 === w && (1 === e ? a._tr_align(n) : 5 !== e && (a._tr_stored_block(n, 0, 0, !1), 3 === e && (p(n.head), 0 === n.lookahead && ((n.strstart = 0), (n.block_start = 0), (n.insert = 0)))), m(t), 0 === t.avail_out) ) return (n.last_flush = -1), 0; } return 4 !== e ? 0 : n.wrap <= 0 ? 1 : (2 === n.wrap ? (x(n, 255 & t.adler), x(n, (t.adler >> 8) & 255), x(n, (t.adler >> 16) & 255), x(n, (t.adler >> 24) & 255), x(n, 255 & t.total_in), x(n, (t.total_in >> 8) & 255), x(n, (t.total_in >> 16) & 255), x(n, (t.total_in >> 24) & 255)) : (T(n, t.adler >>> 16), T(n, 65535 & t.adler)), m(t), n.wrap > 0 && (n.wrap = -n.wrap), 0 !== n.pending ? 0 : 1); }), (e.deflateEnd = function (t) { var e; return t && t.state ? 42 !== (e = t.state.status) && 69 !== e && 73 !== e && 91 !== e && e !== f && e !== d && e !== b ? g(t, h) : ((t.state = null), e === d ? g(t, -3) : 0) : h; }), (e.deflateSetDictionary = function (t, e) { var i, r, a, o, l, u, c, f, d = e.length; if (!t || !t.state) return h; if (2 === (o = (i = t.state).wrap) || (1 === o && 42 !== i.status) || i.lookahead) return h; for ( 1 === o && (t.adler = s(t.adler, e, d, 0)), i.wrap = 0, d >= i.w_size && (0 === o && (p(i.head), (i.strstart = 0), (i.block_start = 0), (i.insert = 0)), (f = new n.Buf8(i.w_size)), n.arraySet(f, e, d - i.w_size, i.w_size, 0), (e = f), (d = i.w_size)), l = t.avail_in, u = t.next_in, c = t.input, t.avail_in = d, t.next_in = 0, t.input = e, y(i); i.lookahead >= 3; ) { (r = i.strstart), (a = i.lookahead - 2); do { (i.ins_h = ((i.ins_h << i.hash_shift) ^ i.window[r + 3 - 1]) & i.hash_mask), (i.prev[r & i.w_mask] = i.head[i.ins_h]), (i.head[i.ins_h] = r), r++; } while (--a); (i.strstart = r), (i.lookahead = 2), y(i); } return ( (i.strstart += i.lookahead), (i.block_start = i.strstart), (i.insert = i.lookahead), (i.lookahead = 0), (i.match_length = i.prev_length = 2), (i.match_available = 0), (t.next_in = u), (t.input = c), (t.avail_in = l), (i.wrap = o), 0 ); }), (e.deflateInfo = 'pako deflate (from Nodeca project)'); }, 401: (t) => { 'use strict'; t.exports = function () { (this.text = 0), (this.time = 0), (this.xflags = 0), (this.os = 0), (this.extra = null), (this.extra_len = 0), (this.name = ''), (this.comment = ''), (this.hcrc = 0), (this.done = !1); }; }, 264: (t) => { 'use strict'; t.exports = function (t, e) { var i, r, n, a, s, o, l, h, u, c, f, d, b, g, _, p, m, v, x, T, w, y, A, E, C; (i = t.state), (r = t.next_in), (E = t.input), (n = r + (t.avail_in - 5)), (a = t.next_out), (C = t.output), (s = a - (e - t.avail_out)), (o = a + (t.avail_out - 257)), (l = i.dmax), (h = i.wsize), (u = i.whave), (c = i.wnext), (f = i.window), (d = i.hold), (b = i.bits), (g = i.lencode), (_ = i.distcode), (p = (1 << i.lenbits) - 1), (m = (1 << i.distbits) - 1); t: do { b < 15 && ((d += E[r++] << b), (b += 8), (d += E[r++] << b), (b += 8)), (v = g[d & p]); e: for (;;) { if (((d >>>= x = v >>> 24), (b -= x), 0 === (x = (v >>> 16) & 255))) C[a++] = 65535 & v; else { if (!(16 & x)) { if (0 == (64 & x)) { v = g[(65535 & v) + (d & ((1 << x) - 1))]; continue e; } if (32 & x) { i.mode = 12; break t; } (t.msg = 'invalid literal/length code'), (i.mode = 30); break t; } (T = 65535 & v), (x &= 15) && (b < x && ((d += E[r++] << b), (b += 8)), (T += d & ((1 << x) - 1)), (d >>>= x), (b -= x)), b < 15 && ((d += E[r++] << b), (b += 8), (d += E[r++] << b), (b += 8)), (v = _[d & m]); i: for (;;) { if (((d >>>= x = v >>> 24), (b -= x), !(16 & (x = (v >>> 16) & 255)))) { if (0 == (64 & x)) { v = _[(65535 & v) + (d & ((1 << x) - 1))]; continue i; } (t.msg = 'invalid distance code'), (i.mode = 30); break t; } if ( ((w = 65535 & v), b < (x &= 15) && ((d += E[r++] << b), (b += 8) < x && ((d += E[r++] << b), (b += 8))), (w += d & ((1 << x) - 1)) > l) ) { (t.msg = 'invalid distance too far back'), (i.mode = 30); break t; } if (((d >>>= x), (b -= x), w > (x = a - s))) { if ((x = w - x) > u && i.sane) { (t.msg = 'invalid distance too far back'), (i.mode = 30); break t; } if (((y = 0), (A = f), 0 === c)) { if (((y += h - x), x < T)) { T -= x; do { C[a++] = f[y++]; } while (--x); (y = a - w), (A = C); } } else if (c < x) { if (((y += h + c - x), (x -= c) < T)) { T -= x; do { C[a++] = f[y++]; } while (--x); if (((y = 0), c < T)) { T -= x = c; do { C[a++] = f[y++]; } while (--x); (y = a - w), (A = C); } } } else if (((y += c - x), x < T)) { T -= x; do { C[a++] = f[y++]; } while (--x); (y = a - w), (A = C); } for (; T > 2; ) (C[a++] = A[y++]), (C[a++] = A[y++]), (C[a++] = A[y++]), (T -= 3); T && ((C[a++] = A[y++]), T > 1 && (C[a++] = A[y++])); } else { y = a - w; do { (C[a++] = C[y++]), (C[a++] = C[y++]), (C[a++] = C[y++]), (T -= 3); } while (T > 2); T && ((C[a++] = C[y++]), T > 1 && (C[a++] = C[y++])); } break; } } break; } } while (r < n && a < o); (r -= T = b >> 3), (d &= (1 << (b -= T << 3)) - 1), (t.next_in = r), (t.next_out = a), (t.avail_in = r < n ? n - r + 5 : 5 - (r - n)), (t.avail_out = a < o ? o - a + 257 : 257 - (a - o)), (i.hold = d), (i.bits = b); }; }, 948: (t, e, i) => { 'use strict'; var r = i(236), n = i(69), a = i(869), s = i(264), o = i(241), l = -2, h = 12, u = 30; function c(t) { return ((t >>> 24) & 255) + ((t >>> 8) & 65280) + ((65280 & t) << 8) + ((255 & t) << 24); } function f() { (this.mode = 0), (this.last = !1), (this.wrap = 0), (this.havedict = !1), (this.flags = 0), (this.dmax = 0), (this.check = 0), (this.total = 0), (this.head = null), (this.wbits = 0), (this.wsize = 0), (this.whave = 0), (this.wnext = 0), (this.window = null), (this.hold = 0), (this.bits = 0), (this.length = 0), (this.offset = 0), (this.extra = 0), (this.lencode = null), (this.distcode = null), (this.lenbits = 0), (this.distbits = 0), (this.ncode = 0), (this.nlen = 0), (this.ndist = 0), (this.have = 0), (this.next = null), (this.lens = new r.Buf16(320)), (this.work = new r.Buf16(288)), (this.lendyn = null), (this.distdyn = null), (this.sane = 0), (this.back = 0), (this.was = 0); } function d(t) { var e; return t && t.state ? ((e = t.state), (t.total_in = t.total_out = e.total = 0), (t.msg = ''), e.wrap && (t.adler = 1 & e.wrap), (e.mode = 1), (e.last = 0), (e.havedict = 0), (e.dmax = 32768), (e.head = null), (e.hold = 0), (e.bits = 0), (e.lencode = e.lendyn = new r.Buf32(852)), (e.distcode = e.distdyn = new r.Buf32(592)), (e.sane = 1), (e.back = -1), 0) : l; } function b(t) { var e; return t && t.state ? (((e = t.state).wsize = 0), (e.whave = 0), (e.wnext = 0), d(t)) : l; } function g(t, e) { var i, r; return t && t.state ? ((r = t.state), e < 0 ? ((i = 0), (e = -e)) : ((i = 1 + (e >> 4)), e < 48 && (e &= 15)), e && (e < 8 || e > 15) ? l : (null !== r.window && r.wbits !== e && (r.window = null), (r.wrap = i), (r.wbits = e), b(t))) : l; } function _(t, e) { var i, r; return t ? ((r = new f()), (t.state = r), (r.window = null), 0 !== (i = g(t, e)) && (t.state = null), i) : l; } var p, m, v = !0; function x(t) { if (v) { var e; for (p = new r.Buf32(512), m = new r.Buf32(32), e = 0; e < 144; ) t.lens[e++] = 8; for (; e < 256; ) t.lens[e++] = 9; for (; e < 280; ) t.lens[e++] = 7; for (; e < 288; ) t.lens[e++] = 8; for (o(1, t.lens, 0, 288, p, 0, t.work, { bits: 9 }), e = 0; e < 32; ) t.lens[e++] = 5; o(2, t.lens, 0, 32, m, 0, t.work, { bits: 5 }), (v = !1); } (t.lencode = p), (t.lenbits = 9), (t.distcode = m), (t.distbits = 5); } function T(t, e, i, n) { var a, s = t.state; return ( null === s.window && ((s.wsize = 1 << s.wbits), (s.wnext = 0), (s.whave = 0), (s.window = new r.Buf8(s.wsize))), n >= s.wsize ? (r.arraySet(s.window, e, i - s.wsize, s.wsize, 0), (s.wnext = 0), (s.whave = s.wsize)) : ((a = s.wsize - s.wnext) > n && (a = n), r.arraySet(s.window, e, i - n, a, s.wnext), (n -= a) ? (r.arraySet(s.window, e, i - n, n, 0), (s.wnext = n), (s.whave = s.wsize)) : ((s.wnext += a), s.wnext === s.wsize && (s.wnext = 0), s.whave < s.wsize && (s.whave += a))), 0 ); } (e.inflateReset = b), (e.inflateReset2 = g), (e.inflateResetKeep = d), (e.inflateInit = function (t) { return _(t, 15); }), (e.inflateInit2 = _), (e.inflate = function (t, e) { var i, f, d, b, g, _, p, m, v, w, y, A, E, C, S, M, k, F, R, D, I, U, B, P, z = 0, O = new r.Buf8(4), N = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; if (!t || !t.state || !t.output || (!t.input && 0 !== t.avail_in)) return l; (i = t.state).mode === h && (i.mode = 13), (g = t.next_out), (d = t.output), (p = t.avail_out), (b = t.next_in), (f = t.input), (_ = t.avail_in), (m = i.hold), (v = i.bits), (w = _), (y = p), (U = 0); t: for (;;) switch (i.mode) { case 1: if (0 === i.wrap) { i.mode = 13; break; } for (; v < 16; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } if (2 & i.wrap && 35615 === m) { (i.check = 0), (O[0] = 255 & m), (O[1] = (m >>> 8) & 255), (i.check = a(i.check, O, 2, 0)), (m = 0), (v = 0), (i.mode = 2); break; } if (((i.flags = 0), i.head && (i.head.done = !1), !(1 & i.wrap) || (((255 & m) << 8) + (m >> 8)) % 31)) { (t.msg = 'incorrect header check'), (i.mode = u); break; } if (8 != (15 & m)) { (t.msg = 'unknown compression method'), (i.mode = u); break; } if (((v -= 4), (I = 8 + (15 & (m >>>= 4))), 0 === i.wbits)) i.wbits = I; else if (I > i.wbits) { (t.msg = 'invalid window size'), (i.mode = u); break; } (i.dmax = 1 << I), (t.adler = i.check = 1), (i.mode = 512 & m ? 10 : h), (m = 0), (v = 0); break; case 2: for (; v < 16; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } if (((i.flags = m), 8 != (255 & i.flags))) { (t.msg = 'unknown compression method'), (i.mode = u); break; } if (57344 & i.flags) { (t.msg = 'unknown header flags set'), (i.mode = u); break; } i.head && (i.head.text = (m >> 8) & 1), 512 & i.flags && ((O[0] = 255 & m), (O[1] = (m >>> 8) & 255), (i.check = a(i.check, O, 2, 0))), (m = 0), (v = 0), (i.mode = 3); case 3: for (; v < 32; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } i.head && (i.head.time = m), 512 & i.flags && ((O[0] = 255 & m), (O[1] = (m >>> 8) & 255), (O[2] = (m >>> 16) & 255), (O[3] = (m >>> 24) & 255), (i.check = a(i.check, O, 4, 0))), (m = 0), (v = 0), (i.mode = 4); case 4: for (; v < 16; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } i.head && ((i.head.xflags = 255 & m), (i.head.os = m >> 8)), 512 & i.flags && ((O[0] = 255 & m), (O[1] = (m >>> 8) & 255), (i.check = a(i.check, O, 2, 0))), (m = 0), (v = 0), (i.mode = 5); case 5: if (1024 & i.flags) { for (; v < 16; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } (i.length = m), i.head && (i.head.extra_len = m), 512 & i.flags && ((O[0] = 255 & m), (O[1] = (m >>> 8) & 255), (i.check = a(i.check, O, 2, 0))), (m = 0), (v = 0); } else i.head && (i.head.extra = null); i.mode = 6; case 6: if ( 1024 & i.flags && ((A = i.length) > _ && (A = _), A && (i.head && ((I = i.head.extra_len - i.length), i.head.extra || (i.head.extra = new Array(i.head.extra_len)), r.arraySet(i.head.extra, f, b, A, I)), 512 & i.flags && (i.check = a(i.check, f, A, b)), (_ -= A), (b += A), (i.length -= A)), i.length) ) break t; (i.length = 0), (i.mode = 7); case 7: if (2048 & i.flags) { if (0 === _) break t; A = 0; do { (I = f[b + A++]), i.head && I && i.length < 65536 && (i.head.name += String.fromCharCode(I)); } while (I && A < _); if ((512 & i.flags && (i.check = a(i.check, f, A, b)), (_ -= A), (b += A), I)) break t; } else i.head && (i.head.name = null); (i.length = 0), (i.mode = 8); case 8: if (4096 & i.flags) { if (0 === _) break t; A = 0; do { (I = f[b + A++]), i.head && I && i.length < 65536 && (i.head.comment += String.fromCharCode(I)); } while (I && A < _); if ((512 & i.flags && (i.check = a(i.check, f, A, b)), (_ -= A), (b += A), I)) break t; } else i.head && (i.head.comment = null); i.mode = 9; case 9: if (512 & i.flags) { for (; v < 16; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } if (m !== (65535 & i.check)) { (t.msg = 'header crc mismatch'), (i.mode = u); break; } (m = 0), (v = 0); } i.head && ((i.head.hcrc = (i.flags >> 9) & 1), (i.head.done = !0)), (t.adler = i.check = 0), (i.mode = h); break; case 10: for (; v < 32; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } (t.adler = i.check = c(m)), (m = 0), (v = 0), (i.mode = 11); case 11: if (0 === i.havedict) return (t.next_out = g), (t.avail_out = p), (t.next_in = b), (t.avail_in = _), (i.hold = m), (i.bits = v), 2; (t.adler = i.check = 1), (i.mode = h); case h: if (5 === e || 6 === e) break t; case 13: if (i.last) { (m >>>= 7 & v), (v -= 7 & v), (i.mode = 27); break; } for (; v < 3; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } switch (((i.last = 1 & m), (v -= 1), 3 & (m >>>= 1))) { case 0: i.mode = 14; break; case 1: if ((x(i), (i.mode = 20), 6 === e)) { (m >>>= 2), (v -= 2); break t; } break; case 2: i.mode = 17; break; case 3: (t.msg = 'invalid block type'), (i.mode = u); } (m >>>= 2), (v -= 2); break; case 14: for (m >>>= 7 & v, v -= 7 & v; v < 32; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } if ((65535 & m) != ((m >>> 16) ^ 65535)) { (t.msg = 'invalid stored block lengths'), (i.mode = u); break; } if (((i.length = 65535 & m), (m = 0), (v = 0), (i.mode = 15), 6 === e)) break t; case 15: i.mode = 16; case 16: if ((A = i.length)) { if ((A > _ && (A = _), A > p && (A = p), 0 === A)) break t; r.arraySet(d, f, b, A, g), (_ -= A), (b += A), (p -= A), (g += A), (i.length -= A); break; } i.mode = h; break; case 17: for (; v < 14; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } if ( ((i.nlen = 257 + (31 & m)), (m >>>= 5), (v -= 5), (i.ndist = 1 + (31 & m)), (m >>>= 5), (v -= 5), (i.ncode = 4 + (15 & m)), (m >>>= 4), (v -= 4), i.nlen > 286 || i.ndist > 30) ) { (t.msg = 'too many length or distance symbols'), (i.mode = u); break; } (i.have = 0), (i.mode = 18); case 18: for (; i.have < i.ncode; ) { for (; v < 3; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } (i.lens[N[i.have++]] = 7 & m), (m >>>= 3), (v -= 3); } for (; i.have < 19; ) i.lens[N[i.have++]] = 0; if ( ((i.lencode = i.lendyn), (i.lenbits = 7), (B = { bits: i.lenbits }), (U = o(0, i.lens, 0, 19, i.lencode, 0, i.work, B)), (i.lenbits = B.bits), U) ) { (t.msg = 'invalid code lengths set'), (i.mode = u); break; } (i.have = 0), (i.mode = 19); case 19: for (; i.have < i.nlen + i.ndist; ) { for (; (M = ((z = i.lencode[m & ((1 << i.lenbits) - 1)]) >>> 16) & 255), (k = 65535 & z), !((S = z >>> 24) <= v); ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } if (k < 16) (m >>>= S), (v -= S), (i.lens[i.have++] = k); else { if (16 === k) { for (P = S + 2; v < P; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } if (((m >>>= S), (v -= S), 0 === i.have)) { (t.msg = 'invalid bit length repeat'), (i.mode = u); break; } (I = i.lens[i.have - 1]), (A = 3 + (3 & m)), (m >>>= 2), (v -= 2); } else if (17 === k) { for (P = S + 3; v < P; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } (v -= S), (I = 0), (A = 3 + (7 & (m >>>= S))), (m >>>= 3), (v -= 3); } else { for (P = S + 7; v < P; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } (v -= S), (I = 0), (A = 11 + (127 & (m >>>= S))), (m >>>= 7), (v -= 7); } if (i.have + A > i.nlen + i.ndist) { (t.msg = 'invalid bit length repeat'), (i.mode = u); break; } for (; A--; ) i.lens[i.have++] = I; } } if (i.mode === u) break; if (0 === i.lens[256]) { (t.msg = 'invalid code -- missing end-of-block'), (i.mode = u); break; } if ( ((i.lenbits = 9), (B = { bits: i.lenbits }), (U = o(1, i.lens, 0, i.nlen, i.lencode, 0, i.work, B)), (i.lenbits = B.bits), U) ) { (t.msg = 'invalid literal/lengths set'), (i.mode = u); break; } if ( ((i.distbits = 6), (i.distcode = i.distdyn), (B = { bits: i.distbits }), (U = o(2, i.lens, i.nlen, i.ndist, i.distcode, 0, i.work, B)), (i.distbits = B.bits), U) ) { (t.msg = 'invalid distances set'), (i.mode = u); break; } if (((i.mode = 20), 6 === e)) break t; case 20: i.mode = 21; case 21: if (_ >= 6 && p >= 258) { (t.next_out = g), (t.avail_out = p), (t.next_in = b), (t.avail_in = _), (i.hold = m), (i.bits = v), s(t, y), (g = t.next_out), (d = t.output), (p = t.avail_out), (b = t.next_in), (f = t.input), (_ = t.avail_in), (m = i.hold), (v = i.bits), i.mode === h && (i.back = -1); break; } for ( i.back = 0; (M = ((z = i.lencode[m & ((1 << i.lenbits) - 1)]) >>> 16) & 255), (k = 65535 & z), !((S = z >>> 24) <= v); ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } if (M && 0 == (240 & M)) { for ( F = S, R = M, D = k; (M = ((z = i.lencode[D + ((m & ((1 << (F + R)) - 1)) >> F)]) >>> 16) & 255), (k = 65535 & z), !(F + (S = z >>> 24) <= v); ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } (m >>>= F), (v -= F), (i.back += F); } if (((m >>>= S), (v -= S), (i.back += S), (i.length = k), 0 === M)) { i.mode = 26; break; } if (32 & M) { (i.back = -1), (i.mode = h); break; } if (64 & M) { (t.msg = 'invalid literal/length code'), (i.mode = u); break; } (i.extra = 15 & M), (i.mode = 22); case 22: if (i.extra) { for (P = i.extra; v < P; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } (i.length += m & ((1 << i.extra) - 1)), (m >>>= i.extra), (v -= i.extra), (i.back += i.extra); } (i.was = i.length), (i.mode = 23); case 23: for (; (M = ((z = i.distcode[m & ((1 << i.distbits) - 1)]) >>> 16) & 255), (k = 65535 & z), !((S = z >>> 24) <= v); ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } if (0 == (240 & M)) { for ( F = S, R = M, D = k; (M = ((z = i.distcode[D + ((m & ((1 << (F + R)) - 1)) >> F)]) >>> 16) & 255), (k = 65535 & z), !(F + (S = z >>> 24) <= v); ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } (m >>>= F), (v -= F), (i.back += F); } if (((m >>>= S), (v -= S), (i.back += S), 64 & M)) { (t.msg = 'invalid distance code'), (i.mode = u); break; } (i.offset = k), (i.extra = 15 & M), (i.mode = 24); case 24: if (i.extra) { for (P = i.extra; v < P; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } (i.offset += m & ((1 << i.extra) - 1)), (m >>>= i.extra), (v -= i.extra), (i.back += i.extra); } if (i.offset > i.dmax) { (t.msg = 'invalid distance too far back'), (i.mode = u); break; } i.mode = 25; case 25: if (0 === p) break t; if (((A = y - p), i.offset > A)) { if ((A = i.offset - A) > i.whave && i.sane) { (t.msg = 'invalid distance too far back'), (i.mode = u); break; } A > i.wnext ? ((A -= i.wnext), (E = i.wsize - A)) : (E = i.wnext - A), A > i.length && (A = i.length), (C = i.window); } else (C = d), (E = g - i.offset), (A = i.length); A > p && (A = p), (p -= A), (i.length -= A); do { d[g++] = C[E++]; } while (--A); 0 === i.length && (i.mode = 21); break; case 26: if (0 === p) break t; (d[g++] = i.length), p--, (i.mode = 21); break; case 27: if (i.wrap) { for (; v < 32; ) { if (0 === _) break t; _--, (m |= f[b++] << v), (v += 8); } if ( ((y -= p), (t.total_out += y), (i.total += y), y && (t.adler = i.check = i.flags ? a(i.check, d, y, g - y) : n(i.check, d, y, g - y)), (y = p), (i.flags ? m : c(m)) !== i.check) ) { (t.msg = 'incorrect data check'), (i.mode = u); break; } (m = 0), (v = 0); } i.mode = 28; case 28: if (i.wrap && i.flags) { for (; v < 32; ) { if (0 === _) break t; _--, (m += f[b++] << v), (v += 8); } if (m !== (4294967295 & i.total)) { (t.msg = 'incorrect length check'), (i.mode = u); break; } (m = 0), (v = 0); } i.mode = 29; case 29: U = 1; break t; case u: U = -3; break t; case 31: return -4; default: return l; } return ( (t.next_out = g), (t.avail_out = p), (t.next_in = b), (t.avail_in = _), (i.hold = m), (i.bits = v), (i.wsize || (y !== t.avail_out && i.mode < u && (i.mode < 27 || 4 !== e))) && T(t, t.output, t.next_out, y - t.avail_out) ? ((i.mode = 31), -4) : ((w -= t.avail_in), (y -= t.avail_out), (t.total_in += w), (t.total_out += y), (i.total += y), i.wrap && y && (t.adler = i.check = i.flags ? a(i.check, d, y, t.next_out - y) : n(i.check, d, y, t.next_out - y)), (t.data_type = i.bits + (i.last ? 64 : 0) + (i.mode === h ? 128 : 0) + (20 === i.mode || 15 === i.mode ? 256 : 0)), ((0 === w && 0 === y) || 4 === e) && 0 === U && (U = -5), U) ); }), (e.inflateEnd = function (t) { if (!t || !t.state) return l; var e = t.state; return e.window && (e.window = null), (t.state = null), 0; }), (e.inflateGetHeader = function (t, e) { var i; return t && t.state ? (0 == (2 & (i = t.state).wrap) ? l : ((i.head = e), (e.done = !1), 0)) : l; }), (e.inflateSetDictionary = function (t, e) { var i, r = e.length; return t && t.state ? 0 !== (i = t.state).wrap && 11 !== i.mode ? l : 11 === i.mode && n(1, e, r, 0) !== i.check ? -3 : T(t, e, r, r) ? ((i.mode = 31), -4) : ((i.havedict = 1), 0) : l; }), (e.inflateInfo = 'pako inflate (from Nodeca project)'); }, 241: (t, e, i) => { 'use strict'; var r = i(236), n = 15, a = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], s = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78], o = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0, ], l = [ 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64, ]; t.exports = function (t, e, i, h, u, c, f, d) { var b, g, _, p, m, v, x, T, w, y = d.bits, A = 0, E = 0, C = 0, S = 0, M = 0, k = 0, F = 0, R = 0, D = 0, I = 0, U = null, B = 0, P = new r.Buf16(16), z = new r.Buf16(16), O = null, N = 0; for (A = 0; A <= n; A++) P[A] = 0; for (E = 0; E < h; E++) P[e[i + E]]++; for (M = y, S = n; S >= 1 && 0 === P[S]; S--); if ((M > S && (M = S), 0 === S)) return (u[c++] = 20971520), (u[c++] = 20971520), (d.bits = 1), 0; for (C = 1; C < S && 0 === P[C]; C++); for (M < C && (M = C), R = 1, A = 1; A <= n; A++) if (((R <<= 1), (R -= P[A]) < 0)) return -1; if (R > 0 && (0 === t || 1 !== S)) return -1; for (z[1] = 0, A = 1; A < n; A++) z[A + 1] = z[A] + P[A]; for (E = 0; E < h; E++) 0 !== e[i + E] && (f[z[e[i + E]]++] = E); if ( (0 === t ? ((U = O = f), (v = 19)) : 1 === t ? ((U = a), (B -= 257), (O = s), (N -= 257), (v = 256)) : ((U = o), (O = l), (v = -1)), (I = 0), (E = 0), (A = C), (m = c), (k = M), (F = 0), (_ = -1), (p = (D = 1 << M) - 1), (1 === t && D > 852) || (2 === t && D > 592)) ) return 1; for (;;) { (x = A - F), f[E] < v ? ((T = 0), (w = f[E])) : f[E] > v ? ((T = O[N + f[E]]), (w = U[B + f[E]])) : ((T = 96), (w = 0)), (b = 1 << (A - F)), (C = g = 1 << k); do { u[m + (I >> F) + (g -= b)] = (x << 24) | (T << 16) | w | 0; } while (0 !== g); for (b = 1 << (A - 1); I & b; ) b >>= 1; if ((0 !== b ? ((I &= b - 1), (I += b)) : (I = 0), E++, 0 == --P[A])) { if (A === S) break; A = e[i + f[E]]; } if (A > M && (I & p) !== _) { for (0 === F && (F = M), m += C, R = 1 << (k = A - F); k + F < S && !((R -= P[k + F]) <= 0); ) k++, (R <<= 1); if (((D += 1 << k), (1 === t && D > 852) || (2 === t && D > 592))) return 1; u[(_ = I & p)] = (M << 24) | (k << 16) | (m - c) | 0; } } return 0 !== I && (u[m + I] = ((A - F) << 24) | (64 << 16) | 0), (d.bits = M), 0; }; }, 898: (t) => { 'use strict'; t.exports = { 2: 'need dictionary', 1: 'stream end', 0: '', '-1': 'file error', '-2': 'stream error', '-3': 'data error', '-4': 'insufficient memory', '-5': 'buffer error', '-6': 'incompatible version', }; }, 342: (t, e, i) => { 'use strict'; var r = i(236); function n(t) { for (var e = t.length; --e >= 0; ) t[e] = 0; } var a = 256, s = 286, o = 30, l = 15, h = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], u = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], c = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], f = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], d = new Array(576); n(d); var b = new Array(60); n(b); var g = new Array(512); n(g); var _ = new Array(256); n(_); var p = new Array(29); n(p); var m, v, x, T = new Array(o); function w(t, e, i, r, n) { (this.static_tree = t), (this.extra_bits = e), (this.extra_base = i), (this.elems = r), (this.max_length = n), (this.has_stree = t && t.length); } function y(t, e) { (this.dyn_tree = t), (this.max_code = 0), (this.stat_desc = e); } function A(t) { return t < 256 ? g[t] : g[256 + (t >>> 7)]; } function E(t, e) { (t.pending_buf[t.pending++] = 255 & e), (t.pending_buf[t.pending++] = (e >>> 8) & 255); } function C(t, e, i) { t.bi_valid > 16 - i ? ((t.bi_buf |= (e << t.bi_valid) & 65535), E(t, t.bi_buf), (t.bi_buf = e >> (16 - t.bi_valid)), (t.bi_valid += i - 16)) : ((t.bi_buf |= (e << t.bi_valid) & 65535), (t.bi_valid += i)); } function S(t, e, i) { C(t, i[2 * e], i[2 * e + 1]); } function M(t, e) { var i = 0; do { (i |= 1 & t), (t >>>= 1), (i <<= 1); } while (--e > 0); return i >>> 1; } function k(t, e, i) { var r, n, a = new Array(16), s = 0; for (r = 1; r <= l; r++) a[r] = s = (s + i[r - 1]) << 1; for (n = 0; n <= e; n++) { var o = t[2 * n + 1]; 0 !== o && (t[2 * n] = M(a[o]++, o)); } } function F(t) { var e; for (e = 0; e < s; e++) t.dyn_ltree[2 * e] = 0; for (e = 0; e < o; e++) t.dyn_dtree[2 * e] = 0; for (e = 0; e < 19; e++) t.bl_tree[2 * e] = 0; (t.dyn_ltree[512] = 1), (t.opt_len = t.static_len = 0), (t.last_lit = t.matches = 0); } function R(t) { t.bi_valid > 8 ? E(t, t.bi_buf) : t.bi_valid > 0 && (t.pending_buf[t.pending++] = t.bi_buf), (t.bi_buf = 0), (t.bi_valid = 0); } function D(t, e, i, r) { var n = 2 * e, a = 2 * i; return t[n] < t[a] || (t[n] === t[a] && r[e] <= r[i]); } function I(t, e, i) { for ( var r = t.heap[i], n = i << 1; n <= t.heap_len && (n < t.heap_len && D(e, t.heap[n + 1], t.heap[n], t.depth) && n++, !D(e, r, t.heap[n], t.depth)); ) (t.heap[i] = t.heap[n]), (i = n), (n <<= 1); t.heap[i] = r; } function U(t, e, i) { var r, n, s, o, l = 0; if (0 !== t.last_lit) do { (r = (t.pending_buf[t.d_buf + 2 * l] << 8) | t.pending_buf[t.d_buf + 2 * l + 1]), (n = t.pending_buf[t.l_buf + l]), l++, 0 === r ? S(t, n, e) : (S(t, (s = _[n]) + a + 1, e), 0 !== (o = h[s]) && C(t, (n -= p[s]), o), S(t, (s = A(--r)), i), 0 !== (o = u[s]) && C(t, (r -= T[s]), o)); } while (l < t.last_lit); S(t, 256, e); } function B(t, e) { var i, r, n, a = e.dyn_tree, s = e.stat_desc.static_tree, o = e.stat_desc.has_stree, h = e.stat_desc.elems, u = -1; for (t.heap_len = 0, t.heap_max = 573, i = 0; i < h; i++) 0 !== a[2 * i] ? ((t.heap[++t.heap_len] = u = i), (t.depth[i] = 0)) : (a[2 * i + 1] = 0); for (; t.heap_len < 2; ) (a[2 * (n = t.heap[++t.heap_len] = u < 2 ? ++u : 0)] = 1), (t.depth[n] = 0), t.opt_len--, o && (t.static_len -= s[2 * n + 1]); for (e.max_code = u, i = t.heap_len >> 1; i >= 1; i--) I(t, a, i); n = h; do { (i = t.heap[1]), (t.heap[1] = t.heap[t.heap_len--]), I(t, a, 1), (r = t.heap[1]), (t.heap[--t.heap_max] = i), (t.heap[--t.heap_max] = r), (a[2 * n] = a[2 * i] + a[2 * r]), (t.depth[n] = (t.depth[i] >= t.depth[r] ? t.depth[i] : t.depth[r]) + 1), (a[2 * i + 1] = a[2 * r + 1] = n), (t.heap[1] = n++), I(t, a, 1); } while (t.heap_len >= 2); (t.heap[--t.heap_max] = t.heap[1]), (function (t, e) { var i, r, n, a, s, o, h = e.dyn_tree, u = e.max_code, c = e.stat_desc.static_tree, f = e.stat_desc.has_stree, d = e.stat_desc.extra_bits, b = e.stat_desc.extra_base, g = e.stat_desc.max_length, _ = 0; for (a = 0; a <= l; a++) t.bl_count[a] = 0; for (h[2 * t.heap[t.heap_max] + 1] = 0, i = t.heap_max + 1; i < 573; i++) (a = h[2 * h[2 * (r = t.heap[i]) + 1] + 1] + 1) > g && ((a = g), _++), (h[2 * r + 1] = a), r > u || (t.bl_count[a]++, (s = 0), r >= b && (s = d[r - b]), (o = h[2 * r]), (t.opt_len += o * (a + s)), f && (t.static_len += o * (c[2 * r + 1] + s))); if (0 !== _) { do { for (a = g - 1; 0 === t.bl_count[a]; ) a--; t.bl_count[a]--, (t.bl_count[a + 1] += 2), t.bl_count[g]--, (_ -= 2); } while (_ > 0); for (a = g; 0 !== a; a--) for (r = t.bl_count[a]; 0 !== r; ) (n = t.heap[--i]) > u || (h[2 * n + 1] !== a && ((t.opt_len += (a - h[2 * n + 1]) * h[2 * n]), (h[2 * n + 1] = a)), r--); } })(t, e), k(a, u, t.bl_count); } function P(t, e, i) { var r, n, a = -1, s = e[1], o = 0, l = 7, h = 4; for (0 === s && ((l = 138), (h = 3)), e[2 * (i + 1) + 1] = 65535, r = 0; r <= i; r++) (n = s), (s = e[2 * (r + 1) + 1]), (++o < l && n === s) || (o < h ? (t.bl_tree[2 * n] += o) : 0 !== n ? (n !== a && t.bl_tree[2 * n]++, t.bl_tree[32]++) : o <= 10 ? t.bl_tree[34]++ : t.bl_tree[36]++, (o = 0), (a = n), 0 === s ? ((l = 138), (h = 3)) : n === s ? ((l = 6), (h = 3)) : ((l = 7), (h = 4))); } function z(t, e, i) { var r, n, a = -1, s = e[1], o = 0, l = 7, h = 4; for (0 === s && ((l = 138), (h = 3)), r = 0; r <= i; r++) if (((n = s), (s = e[2 * (r + 1) + 1]), !(++o < l && n === s))) { if (o < h) do { S(t, n, t.bl_tree); } while (0 != --o); else 0 !== n ? (n !== a && (S(t, n, t.bl_tree), o--), S(t, 16, t.bl_tree), C(t, o - 3, 2)) : o <= 10 ? (S(t, 17, t.bl_tree), C(t, o - 3, 3)) : (S(t, 18, t.bl_tree), C(t, o - 11, 7)); (o = 0), (a = n), 0 === s ? ((l = 138), (h = 3)) : n === s ? ((l = 6), (h = 3)) : ((l = 7), (h = 4)); } } n(T); var O = !1; function N(t, e, i, n) { C(t, 0 + (n ? 1 : 0), 3), (function (t, e, i, n) { R(t), n && (E(t, i), E(t, ~i)), r.arraySet(t.pending_buf, t.window, e, i, t.pending), (t.pending += i); })(t, e, i, !0); } (e._tr_init = function (t) { O || (!(function () { var t, e, i, r, n, a = new Array(16); for (i = 0, r = 0; r < 28; r++) for (p[r] = i, t = 0; t < 1 << h[r]; t++) _[i++] = r; for (_[i - 1] = r, n = 0, r = 0; r < 16; r++) for (T[r] = n, t = 0; t < 1 << u[r]; t++) g[n++] = r; for (n >>= 7; r < o; r++) for (T[r] = n << 7, t = 0; t < 1 << (u[r] - 7); t++) g[256 + n++] = r; for (e = 0; e <= l; e++) a[e] = 0; for (t = 0; t <= 143; ) (d[2 * t + 1] = 8), t++, a[8]++; for (; t <= 255; ) (d[2 * t + 1] = 9), t++, a[9]++; for (; t <= 279; ) (d[2 * t + 1] = 7), t++, a[7]++; for (; t <= 287; ) (d[2 * t + 1] = 8), t++, a[8]++; for (k(d, 287, a), t = 0; t < o; t++) (b[2 * t + 1] = 5), (b[2 * t] = M(t, 5)); (m = new w(d, h, 257, s, l)), (v = new w(b, u, 0, o, l)), (x = new w(new Array(0), c, 0, 19, 7)); })(), (O = !0)), (t.l_desc = new y(t.dyn_ltree, m)), (t.d_desc = new y(t.dyn_dtree, v)), (t.bl_desc = new y(t.bl_tree, x)), (t.bi_buf = 0), (t.bi_valid = 0), F(t); }), (e._tr_stored_block = N), (e._tr_flush_block = function (t, e, i, r) { var n, s, o = 0; t.level > 0 ? (2 === t.strm.data_type && (t.strm.data_type = (function (t) { var e, i = 4093624447; for (e = 0; e <= 31; e++, i >>>= 1) if (1 & i && 0 !== t.dyn_ltree[2 * e]) return 0; if (0 !== t.dyn_ltree[18] || 0 !== t.dyn_ltree[20] || 0 !== t.dyn_ltree[26]) return 1; for (e = 32; e < a; e++) if (0 !== t.dyn_ltree[2 * e]) return 1; return 0; })(t)), B(t, t.l_desc), B(t, t.d_desc), (o = (function (t) { var e; for ( P(t, t.dyn_ltree, t.l_desc.max_code), P(t, t.dyn_dtree, t.d_desc.max_code), B(t, t.bl_desc), e = 18; e >= 3 && 0 === t.bl_tree[2 * f[e] + 1]; e-- ); return (t.opt_len += 3 * (e + 1) + 5 + 5 + 4), e; })(t)), (n = (t.opt_len + 3 + 7) >>> 3), (s = (t.static_len + 3 + 7) >>> 3) <= n && (n = s)) : (n = s = i + 5), i + 4 <= n && -1 !== e ? N(t, e, i, r) : 4 === t.strategy || s === n ? (C(t, 2 + (r ? 1 : 0), 3), U(t, d, b)) : (C(t, 4 + (r ? 1 : 0), 3), (function (t, e, i, r) { var n; for (C(t, e - 257, 5), C(t, i - 1, 5), C(t, r - 4, 4), n = 0; n < r; n++) C(t, t.bl_tree[2 * f[n] + 1], 3); z(t, t.dyn_ltree, e - 1), z(t, t.dyn_dtree, i - 1); })(t, t.l_desc.max_code + 1, t.d_desc.max_code + 1, o + 1), U(t, t.dyn_ltree, t.dyn_dtree)), F(t), r && R(t); }), (e._tr_tally = function (t, e, i) { return ( (t.pending_buf[t.d_buf + 2 * t.last_lit] = (e >>> 8) & 255), (t.pending_buf[t.d_buf + 2 * t.last_lit + 1] = 255 & e), (t.pending_buf[t.l_buf + t.last_lit] = 255 & i), t.last_lit++, 0 === e ? t.dyn_ltree[2 * i]++ : (t.matches++, e--, t.dyn_ltree[2 * (_[i] + a + 1)]++, t.dyn_dtree[2 * A(e)]++), t.last_lit === t.lit_bufsize - 1 ); }), (e._tr_align = function (t) { C(t, 2, 3), S(t, 256, d), (function (t) { 16 === t.bi_valid ? (E(t, t.bi_buf), (t.bi_buf = 0), (t.bi_valid = 0)) : t.bi_valid >= 8 && ((t.pending_buf[t.pending++] = 255 & t.bi_buf), (t.bi_buf >>= 8), (t.bi_valid -= 8)); })(t); }); }, 292: (t) => { 'use strict'; t.exports = function () { (this.input = null), (this.next_in = 0), (this.avail_in = 0), (this.total_in = 0), (this.output = null), (this.next_out = 0), (this.avail_out = 0), (this.total_out = 0), (this.msg = ''), (this.state = null), (this.data_type = 2), (this.adler = 0); }; }, 287: () => { var t, e; (window.requestAnimFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (t, e) { window.setTimeout(t, 1e3 / 60); }), (jQuery.support.cors = !0), $.ajaxTransport ? ($.ajaxSetup({ flatOptions: { renderer: !0 } }), $.ajaxTransport('+binary', function (t, e, i) { if ( window.FormData && ((t.dataType && 'binary' == t.dataType) || (t.data && ((window.ArrayBuffer && t.data instanceof ArrayBuffer) || (window.Blob && t.data instanceof Blob)))) ) return { send: function (e, i) { var r = new XMLHttpRequest(), n = t.url, a = t.type, s = t.responseType || 'blob', o = t.data || null; t.renderer && r.addEventListener('progress', function (e) { e.lengthComputable && (t.renderer.downloads[this.responseURL] ? (t.renderer.downloads[this.responseURL].loaded = e.loaded) : (t.renderer.downloads[this.responseURL] = { loaded: e.loaded, total: e.total }), t.renderer.updateProgress()); }), r.addEventListener('load', function () { t.renderer && (delete t.renderer.downloads[this.responseURL], t.renderer.updateProgress()); var e = {}; (e[t.dataType] = r.response), i(r.status, r.statusText, e, r.getAllResponseHeaders()); }), r.open(a, n, !0), (r.responseType = s), r.send(o); }, abort: function () { i.abort(); }, }; })) : ((t = $.httpData), ($.httpData = function (e, i, r) { return 'binary' == i ? e.response : t(e, i, r); }), $.ajaxSetup({ beforeSend: function (t, e) { 'binary' == e.dataType && ((t.responseType = e.responseType || 'arraybuffer'), t.addEventListener( 'progress', function (t) { e.renderer && t.lengthComputable && (e.renderer.downloads[this.responseURL] ? (e.renderer.downloads[this.responseURL].loaded = t.loaded) : (e.renderer.downloads[this.responseURL] = { loaded: t.loaded, total: t.total }), e.renderer.updateProgress()); }, !1, ), t.addEventListener( 'load', function () { e.renderer && (delete e.renderer.downloads[this.responseURL], e.renderer.updateProgress()); }, !1, )); }, })), (Math.randomInt = Math.randomInt || function (t, e) { return Math.floor(Math.random() * (e - t)) + t; }), 'function' != typeof Object.create && (Object.create = ((e = function () {}), function (t) { if (arguments.length > 1) throw Error('Second argument not supported'); if ('object' != typeof t) throw TypeError('Argument must be an object'); e.prototype = t; var i = new e(); return (e.prototype = null), i; })), (window.console = window.console || { log: function () {}, error: function () {}, warn: function () {} }); }, }, e = {}; function i(r) { var n = e[r]; if (void 0 !== n) return n.exports; var a = (e[r] = { exports: {} }); return t[r](a, a.exports, i), a.exports; } (() => { 'use strict'; i(287); let t = Float32Array; function e(e, i, r) { const n = new t(3); return e && (n[0] = e), i && (n[1] = i), r && (n[2] = r), n; } function r(e, i, r) { return ((r = r || new t(3))[0] = e[0] + i[0]), (r[1] = e[1] + i[1]), (r[2] = e[2] + i[2]), r; } function n(e, i, r) { return ((r = r || new t(3))[0] = e[0] * i[0]), (r[1] = e[1] * i[1]), (r[2] = e[2] * i[2]), r; } let a = Float32Array; function s(t) { return ( ((t = t || new a(16))[0] = 1), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), (t[5] = 1), (t[6] = 0), (t[7] = 0), (t[8] = 0), (t[9] = 0), (t[10] = 1), (t[11] = 0), (t[12] = 0), (t[13] = 0), (t[14] = 0), (t[15] = 1), t ); } function o(t, e) { e = e || new a(16); const i = t[0], r = t[1], n = t[2], s = t[3], o = t[4], l = t[5], h = t[6], u = t[7], c = t[8], f = t[9], d = t[10], b = t[11], g = t[12], _ = t[13], p = t[14], m = t[15], v = d * m, x = p * b, T = h * m, w = p * u, y = h * b, A = d * u, E = n * m, C = p * s, S = n * b, M = d * s, k = n * u, F = h * s, R = c * _, D = g * f, I = o * _, U = g * l, B = o * f, P = c * l, z = i * _, O = g * r, N = i * f, L = c * r, H = i * l, V = o * r, j = v * l + w * f + y * _ - (x * l + T * f + A * _), G = x * r + E * f + M * _ - (v * r + C * f + S * _), X = T * r + C * l + k * _ - (w * r + E * l + F * _), q = A * r + S * l + F * f - (y * r + M * l + k * f), W = 1 / (i * j + o * G + c * X + g * q); return ( (e[0] = W * j), (e[1] = W * G), (e[2] = W * X), (e[3] = W * q), (e[4] = W * (x * o + T * c + A * g - (v * o + w * c + y * g))), (e[5] = W * (v * i + C * c + S * g - (x * i + E * c + M * g))), (e[6] = W * (w * i + E * o + F * g - (T * i + C * o + k * g))), (e[7] = W * (y * i + M * o + k * c - (A * i + S * o + F * c))), (e[8] = W * (R * u + U * b + B * m - (D * u + I * b + P * m))), (e[9] = W * (D * s + z * b + L * m - (R * s + O * b + N * m))), (e[10] = W * (I * s + O * u + H * m - (U * s + z * u + V * m))), (e[11] = W * (P * s + N * u + V * b - (B * s + L * u + H * b))), (e[12] = W * (I * d + P * p + D * h - (B * p + R * h + U * d))), (e[13] = W * (N * p + R * n + O * d - (z * d + L * p + D * n))), (e[14] = W * (z * h + V * p + U * n - (H * p + I * n + O * h))), (e[15] = W * (H * d + B * n + L * h - (N * h + V * d + P * n))), e ); } function l(t, i, r) { r = r || e(); const n = i[0], a = i[1], s = i[2], o = n * t[3] + a * t[7] + s * t[11] + t[15]; return ( (r[0] = (n * t[0] + a * t[4] + s * t[8] + t[12]) / o), (r[1] = (n * t[1] + a * t[5] + s * t[9] + t[13]) / o), (r[2] = (n * t[2] + a * t[6] + s * t[10] + t[14]) / o), r ); } function h(t, i, r) { r = r || e(); const n = i[0], a = i[1], s = i[2]; return (r[0] = n * t[0] + a * t[4] + s * t[8]), (r[1] = n * t[1] + a * t[5] + s * t[9]), (r[2] = n * t[2] + a * t[6] + s * t[10]), r; } const u = 5120, c = 5121, f = 5122, d = 5123, b = 5124, g = 5125, _ = 5126, p = {}; { const t = p; (t[u] = Int8Array), (t[5121] = Uint8Array), (t[5122] = Int16Array), (t[5123] = Uint16Array), (t[b] = Int32Array), (t[5125] = Uint32Array), (t[5126] = Float32Array), (t[32819] = Uint16Array), (t[32820] = Uint16Array), (t[33635] = Uint16Array), (t[5131] = Uint16Array), (t[33640] = Uint32Array), (t[35899] = Uint32Array), (t[35902] = Uint32Array), (t[36269] = Uint32Array), (t[34042] = Uint32Array); } function m(t) { if (t instanceof Int8Array) return u; if (t instanceof Uint8Array) return c; if (t instanceof Uint8ClampedArray) return c; if (t instanceof Int16Array) return f; if (t instanceof Uint16Array) return d; if (t instanceof Int32Array) return b; if (t instanceof Uint32Array) return g; if (t instanceof Float32Array) return _; throw new Error('unsupported typed array type'); } function v(t) { if (t === Int8Array) return u; if (t === Uint8Array) return c; if (t === Uint8ClampedArray) return c; if (t === Int16Array) return f; if (t === Uint16Array) return d; if (t === Int32Array) return b; if (t === Uint32Array) return g; if (t === Float32Array) return _; throw new Error('unsupported typed array type'); } const x = 'undefined' != typeof SharedArrayBuffer ? function (t) { return t && t.buffer && (t.buffer instanceof ArrayBuffer || t.buffer instanceof SharedArrayBuffer); } : function (t) { return t && t.buffer && t.buffer instanceof ArrayBuffer; }; function T(...t) { console.error(...t); } function w(t, e) { return 'undefined' != typeof WebGLTexture && e instanceof WebGLTexture; } const y = 34962, A = { attribPrefix: '' }; function E(t, e, i, r, n) { t.bindBuffer(e, i), t.bufferData(e, r, n || 35044); } function C(t, e, i, r) { if (((n = e), 'undefined' != typeof WebGLBuffer && n instanceof WebGLBuffer)) return e; var n; i = i || y; const a = t.createBuffer(); return E(t, i, a, e, r), a; } function S(t) { return 'indices' === t; } function M(t) { return t.length ? t : t.data; } const k = /coord|texture/i, F = /color|colour/i; function R(t, e) { let i; if (((i = k.test(t) ? 2 : F.test(t) ? 4 : 3), e % i > 0)) throw new Error( `Can not guess numComponents for attribute '${t}'. Tried ${i} but ${e} values is not evenly divisible by ${i}. You should specify it.`, ); return i; } function D(t, e) { return t.numComponents || t.size || R(e, M(t).length); } function I(t, e) { if (x(t)) return t; if (x(t.data)) return t.data; Array.isArray(t) && (t = { data: t }); let i = t.type; return i || (i = S(e) ? Uint16Array : Float32Array), new i(t.data); } function U(t, e) { const i = {}; return ( Object.keys(e).forEach(function (r) { if (!S(r)) { const a = e[r], s = a.attrib || a.name || a.attribName || A.attribPrefix + r; if (a.value) { if (!Array.isArray(a.value) && !x(a.value)) throw new Error('array.value is not array or typedarray'); i[s] = { value: a.value }; } else { let e, o, l, h; if (a.buffer && a.buffer instanceof WebGLBuffer) (e = a.buffer), (h = a.numComponents || a.size), (o = a.type), (l = a.normalize); else if ('number' == typeof a || 'number' == typeof a.data) { const i = a.data || a, s = a.type || Float32Array, u = i * s.BYTES_PER_ELEMENT; (o = v(s)), (l = void 0 !== a.normalize ? a.normalize : (n = s) === Int8Array || n === Uint8Array), (h = a.numComponents || a.size || R(r, i)), (e = t.createBuffer()), t.bindBuffer(y, e), t.bufferData(y, u, a.drawType || 35044); } else { const i = I(a, r); (e = C(t, i, void 0, a.drawType)), (o = m(i)), (l = void 0 !== a.normalize ? a.normalize : (function (t) { return t instanceof Int8Array || t instanceof Uint8Array; })(i)), (h = D(a, r)); } i[s] = { buffer: e, numComponents: h, type: o, normalize: l, stride: a.stride || 0, offset: a.offset || 0, divisor: void 0 === a.divisor ? void 0 : a.divisor, drawType: a.drawType, }; } } var n; }), t.bindBuffer(y, null), i ); } const B = ['position', 'positions', 'a_position']; function P(t, e, i) { const r = U(t, e), n = Object.assign({}, i || {}); n.attribs = Object.assign({}, i ? i.attribs : {}, r); const a = e.indices; if (a) { const e = I(a, 'indices'); (n.indices = C(t, e, 34963)), (n.numElements = e.length), (n.elementType = m(e)); } else n.numElements || (n.numElements = (function (t, e) { let i, r; for (r = 0; r < B.length && ((i = B[r]), !(i in e)) && ((i = A.attribPrefix + i), !(i in e)); ++r); r === B.length && (i = Object.keys(e)[0]); const n = e[i]; t.bindBuffer(y, n.buffer); const a = t.getBufferParameter(y, 34660); var s; t.bindBuffer(y, null); const o = a / (5120 === (s = n.type) || 5121 === s ? 1 : 5122 === s || 5123 === s ? 2 : 5124 === s || 5125 === s || 5126 === s ? 4 : 0), l = n.numComponents || n.size, h = o / l; if (h % 1 != 0) throw new Error(`numComponents ${l} not correct for length ${length}`); return h; })(t, n.attribs)); return n; } function z(t, e, i) { const r = 'indices' === i ? 34963 : y; return C(t, I(e, i), r); } function O(t, e) { const i = {}; return ( Object.keys(e).forEach(function (r) { i[r] = z(t, e[r], r); }), e.indices ? ((i.numElements = e.indices.length), (i.elementType = m(I(e.indices)))) : (i.numElements = (function (t) { let e, i; for (i = 0; i < B.length && ((e = B[i]), !(e in t)); ++i); i === B.length && (e = Object.keys(t)[0]); const r = t[e], n = M(r).length, a = D(r, e), s = n / a; if (n % a > 0) throw new Error(`numComponents ${a} not correct for length ${n}`); return s; })(e)), i ); } function N(t, e) { let i = 0; return ( (t.push = function () { for (let e = 0; e < arguments.length; ++e) { const r = arguments[e]; if (r instanceof Array || x(r)) for (let e = 0; e < r.length; ++e) t[i++] = r[e]; else t[i++] = r; } }), (t.reset = function (t) { i = t || 0; }), (t.numComponents = e), Object.defineProperty(t, 'numElements', { get: function () { return (this.length / this.numComponents) | 0; }, }), t ); } function L(t, e, i) { return N(new (i || Float32Array)(t * e), t); } function H(t, e, i) { const r = t.length, n = new Float32Array(3); for (let a = 0; a < r; a += 3) i(e, [t[a], t[a + 1], t[a + 2]], n), (t[a] = n[0]), (t[a + 1] = n[1]), (t[a + 2] = n[2]); } function V(t, i, r) { r = r || e(); const n = i[0], a = i[1], s = i[2]; return (r[0] = n * t[0] + a * t[1] + s * t[2]), (r[1] = n * t[4] + a * t[5] + s * t[6]), (r[2] = n * t[8] + a * t[9] + s * t[10]), r; } function j(t, e) { return H(t, e, h), t; } function G(t, e) { return H(t, o(e), V), t; } function X(t, e) { return H(t, e, l), t; } function q(t, e) { return ( Object.keys(t).forEach(function (i) { const r = t[i]; i.indexOf('pos') >= 0 ? X(r, e) : i.indexOf('tan') >= 0 || i.indexOf('binorm') >= 0 ? j(r, e) : i.indexOf('norm') >= 0 && G(r, e); }), t ); } function W(t, e, i) { return ( (t = t || 2), { position: { numComponents: 2, data: [ (e = e || 0) + -1 * (t *= 0.5), (i = i || 0) + -1 * t, e + 1 * t, i + -1 * t, e + -1 * t, i + 1 * t, e + 1 * t, i + 1 * t, ], }, normal: [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1], texcoord: [0, 0, 1, 0, 0, 1, 1, 1], indices: [0, 1, 2, 2, 1, 3], } ); } function Y(t, e, i, r, n) { (t = t || 1), (e = e || 1), (i = i || 1), (r = r || 1), (n = n || s()); const a = (i + 1) * (r + 1), o = L(3, a), l = L(3, a), h = L(2, a); for (let n = 0; n <= r; n++) for (let a = 0; a <= i; a++) { const s = a / i, u = n / r; o.push(t * s - 0.5 * t, 0, e * u - 0.5 * e), l.push(0, 1, 0), h.push(s, u); } const u = i + 1, c = L(3, i * r * 2, Uint16Array); for (let t = 0; t < r; t++) for (let e = 0; e < i; e++) c.push((t + 0) * u + e, (t + 1) * u + e, (t + 0) * u + e + 1), c.push((t + 1) * u + e, (t + 1) * u + e + 1, (t + 0) * u + e + 1); return q({ position: o, normal: l, texcoord: h, indices: c }, n); } function Z(t, e, i, r, n, a, s) { if (e <= 0 || i <= 0) throw new Error('subdivisionAxis and subdivisionHeight must be > 0'); (r = r || 0), (a = a || 0); const o = (n = n || Math.PI) - r, l = (s = s || 2 * Math.PI) - a, h = (e + 1) * (i + 1), u = L(3, h), c = L(3, h), f = L(2, h); for (let n = 0; n <= i; n++) for (let s = 0; s <= e; s++) { const h = s / e, d = n / i, b = l * h + a, g = o * d + r, _ = Math.sin(b), p = Math.cos(b), m = Math.sin(g), v = p * m, x = Math.cos(g), T = _ * m; u.push(t * v, t * x, t * T), c.push(v, x, T), f.push(1 - h, d); } const d = e + 1, b = L(3, e * i * 2, Uint16Array); for (let t = 0; t < e; t++) for (let e = 0; e < i; e++) b.push((e + 0) * d + t, (e + 0) * d + t + 1, (e + 1) * d + t), b.push((e + 1) * d + t, (e + 0) * d + t + 1, (e + 1) * d + t + 1); return { position: u, normal: c, texcoord: f, indices: b }; } const J = [ [3, 7, 5, 1], [6, 2, 0, 4], [6, 7, 3, 2], [0, 1, 5, 4], [7, 6, 4, 5], [2, 3, 1, 0], ]; function K(t) { const e = (t = t || 1) / 2, i = [ [-e, -e, -e], [+e, -e, -e], [-e, +e, -e], [+e, +e, -e], [-e, -e, +e], [+e, -e, +e], [-e, +e, +e], [+e, +e, +e], ], r = [ [1, 0, 0], [-1, 0, 0], [0, 1, 0], [0, -1, 0], [0, 0, 1], [0, 0, -1], ], n = [ [1, 0], [0, 0], [0, 1], [1, 1], ], a = L(3, 24), s = L(3, 24), o = L(2, 24), l = L(3, 12, Uint16Array); for (let t = 0; t < 6; ++t) { const e = J[t]; for (let l = 0; l < 4; ++l) { const h = i[e[l]], u = r[t], c = n[l]; a.push(h), s.push(u), o.push(c); } const h = 4 * t; l.push(h + 0, h + 1, h + 2), l.push(h + 0, h + 2, h + 3); } return { position: a, normal: s, texcoord: o, indices: l }; } function Q(t, e, i, r, n, a, s) { if (r < 3) throw new Error('radialSubdivisions must be 3 or greater'); if (n < 1) throw new Error('verticalSubdivisions must be 1 or greater'); const o = void 0 === a || a, l = void 0 === s || s, h = (o ? 2 : 0) + (l ? 2 : 0), u = (r + 1) * (n + 1 + h), c = L(3, u), f = L(3, u), d = L(2, u), b = L(3, r * (n + h / 2) * 2, Uint16Array), g = r + 1, _ = Math.atan2(t - e, i), p = Math.cos(_), m = Math.sin(_), v = n + (l ? 2 : 0); for (let a = o ? -2 : 0; a <= v; ++a) { let s, o = a / n, l = i * o; a < 0 ? ((l = 0), (o = 1), (s = t)) : a > n ? ((l = i), (o = 1), (s = e)) : (s = t + (a / n) * (e - t)), (-2 !== a && a !== n + 2) || ((s = 0), (o = 0)), (l -= i / 2); for (let t = 0; t < g; ++t) { const e = Math.sin((t * Math.PI * 2) / r), i = Math.cos((t * Math.PI * 2) / r); c.push(e * s, l, i * s), a < 0 ? f.push(0, -1, 0) : a > n ? f.push(0, 1, 0) : 0 === s ? f.push(0, 0, 0) : f.push(e * p, m, i * p), d.push(t / r, 1 - o); } } for (let t = 0; t < n + h; ++t) if (!((1 === t && o) || (t === n + h - 2 && l))) for (let e = 0; e < r; ++e) b.push(g * (t + 0) + 0 + e, g * (t + 0) + 1 + e, g * (t + 1) + 1 + e), b.push(g * (t + 0) + 0 + e, g * (t + 1) + 1 + e, g * (t + 1) + 0 + e); return { position: c, normal: f, texcoord: d, indices: b }; } function tt(t, e) { e = e || []; const i = []; for (let r = 0; r < t.length; r += 4) { const n = t[r], a = t.slice(r + 1, r + 4); a.push.apply(a, e); for (let t = 0; t < n; ++t) i.push.apply(i, a); } return i; } function et() { const t = [ 0, 0, 0, 0, 150, 0, 30, 0, 0, 0, 150, 0, 30, 150, 0, 30, 0, 0, 30, 0, 0, 30, 30, 0, 100, 0, 0, 30, 30, 0, 100, 30, 0, 100, 0, 0, 30, 60, 0, 30, 90, 0, 67, 60, 0, 30, 90, 0, 67, 90, 0, 67, 60, 0, 0, 0, 30, 30, 0, 30, 0, 150, 30, 0, 150, 30, 30, 0, 30, 30, 150, 30, 30, 0, 30, 100, 0, 30, 30, 30, 30, 30, 30, 30, 100, 0, 30, 100, 30, 30, 30, 60, 30, 67, 60, 30, 30, 90, 30, 30, 90, 30, 67, 60, 30, 67, 90, 30, 0, 0, 0, 100, 0, 0, 100, 0, 30, 0, 0, 0, 100, 0, 30, 0, 0, 30, 100, 0, 0, 100, 30, 0, 100, 30, 30, 100, 0, 0, 100, 30, 30, 100, 0, 30, 30, 30, 0, 30, 30, 30, 100, 30, 30, 30, 30, 0, 100, 30, 30, 100, 30, 0, 30, 30, 0, 30, 60, 30, 30, 30, 30, 30, 30, 0, 30, 60, 0, 30, 60, 30, 30, 60, 0, 67, 60, 30, 30, 60, 30, 30, 60, 0, 67, 60, 0, 67, 60, 30, 67, 60, 0, 67, 90, 30, 67, 60, 30, 67, 60, 0, 67, 90, 0, 67, 90, 30, 30, 90, 0, 30, 90, 30, 67, 90, 30, 30, 90, 0, 67, 90, 30, 67, 90, 0, 30, 90, 0, 30, 150, 30, 30, 90, 30, 30, 90, 0, 30, 150, 0, 30, 150, 30, 0, 150, 0, 0, 150, 30, 30, 150, 30, 0, 150, 0, 30, 150, 30, 30, 150, 0, 0, 0, 0, 0, 0, 30, 0, 150, 30, 0, 0, 0, 0, 150, 30, 0, 150, 0, ], e = tt([ 18, 0, 0, 1, 18, 0, 0, -1, 6, 0, 1, 0, 6, 1, 0, 0, 6, 0, -1, 0, 6, 1, 0, 0, 6, 0, 1, 0, 6, 1, 0, 0, 6, 0, -1, 0, 6, 1, 0, 0, 6, 0, -1, 0, 6, -1, 0, 0, ]), i = tt( [ 18, 200, 70, 120, 18, 80, 70, 200, 6, 70, 200, 210, 6, 200, 200, 70, 6, 210, 100, 70, 6, 210, 160, 70, 6, 70, 180, 210, 6, 100, 70, 210, 6, 76, 210, 100, 6, 140, 210, 80, 6, 90, 130, 110, 6, 160, 160, 220, ], [255], ), r = t.length / 3, n = { position: L(3, r), texcoord: L(2, r), normal: L(3, r), color: L(4, r, Uint8Array), indices: L(3, r / 3, Uint16Array) }; n.position.push(t), n.texcoord.push([ 0.22, 0.19, 0.22, 0.79, 0.34, 0.19, 0.22, 0.79, 0.34, 0.79, 0.34, 0.19, 0.34, 0.19, 0.34, 0.31, 0.62, 0.19, 0.34, 0.31, 0.62, 0.31, 0.62, 0.19, 0.34, 0.43, 0.34, 0.55, 0.49, 0.43, 0.34, 0.55, 0.49, 0.55, 0.49, 0.43, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, ]), n.normal.push(e), n.color.push(i); for (let t = 0; t < r; ++t) n.indices.push(t); return n; } function it(t, e, i, a, s, o, l) { if (s <= 0) throw new Error('subdivisionDown must be > 0'); const h = (l = l || 1) - (o = o || 0), u = 2 * (s + 1) * 4, c = L(3, u), f = L(3, u), d = L(2, u); function b(t, e, i) { return t + (e - t) * i; } function g(e, i, l, u, g, _) { for (let p = 0; p <= s; p++) { const m = i / 1, v = p / s, x = 2 * (m - 0.5), T = (o + v * h) * Math.PI, w = Math.sin(T), y = Math.cos(T), A = b(t, e, w), E = x * a, C = y * t, S = w * A; c.push(E, C, S); const M = r(n([0, w, y], l), u); f.push(M), d.push(m * g + _, v); } } for (let t = 0; t < 2; t++) { const r = 2 * (t / 1 - 0.5); g(e, t, [1, 1, 1], [0, 0, 0], 1, 0), g(e, t, [0, 0, 0], [r, 0, 0], 0, 0), g(i, t, [1, 1, 1], [0, 0, 0], 1, 0), g(i, t, [0, 0, 0], [r, 0, 0], 0, 1); } const _ = L(3, 2 * s * 4, Uint16Array); function p(t, e) { for (let i = 0; i < s; ++i) _.push(t + i + 0, t + i + 1, e + i + 0), _.push(t + i + 1, e + i + 1, e + i + 0); } const m = s + 1; return p(0 * m, 4 * m), p(5 * m, 7 * m), p(6 * m, 2 * m), p(3 * m, 1 * m), { position: c, normal: f, texcoord: d, indices: _ }; } function rt(t, e, i, r, n, a) { return Q(t, t, e, i, r, n, a); } function nt(t, e, i, r, n, a) { if (i < 3) throw new Error('radialSubdivisions must be 3 or greater'); if (r < 3) throw new Error('verticalSubdivisions must be 3 or greater'); n = n || 0; const s = (a = a || 2 * Math.PI) - n, o = i + 1, l = r + 1, h = o * l, u = L(3, h), c = L(3, h), f = L(2, h), d = L(3, i * r * 2, Uint16Array); for (let a = 0; a < l; ++a) { const l = a / r, h = l * Math.PI * 2, d = Math.sin(h), b = t + d * e, g = Math.cos(h), _ = g * e; for (let t = 0; t < o; ++t) { const e = t / i, r = n + e * s, a = Math.sin(r), o = Math.cos(r), h = a * b, p = o * b, m = a * d, v = o * d; u.push(h, _, p), c.push(m, g, v), f.push(e, 1 - l); } } for (let t = 0; t < r; ++t) for (let e = 0; e < i; ++e) { const i = 1 + e, r = 1 + t; d.push(o * t + e, o * r + e, o * t + i), d.push(o * r + e, o * r + i, o * t + i); } return { position: u, normal: c, texcoord: f, indices: d }; } function at(t, e, i, r, n) { if (e < 3) throw new Error('divisions must be at least 3'); (n = n || 1), (r = r || 0); const a = (e + 1) * ((i = i || 1) + 1), s = L(3, a), o = L(3, a), l = L(2, a), h = L(3, i * e * 2, Uint16Array); let u = 0; const c = t - r, f = e + 1; for (let t = 0; t <= i; ++t) { const a = r + c * Math.pow(t / i, n); for (let r = 0; r <= e; ++r) { const n = (2 * Math.PI * r) / e, c = a * Math.cos(n), d = a * Math.sin(n); if ((s.push(c, 0, d), o.push(0, 1, 0), l.push(1 - r / e, t / i), t > 0 && r !== e)) { const t = u + (r + 1), e = u + r, i = u + r - f, n = u + (r + 1) - f; h.push(t, e, i), h.push(t, i, n); } } u += e + 1; } return { position: s, normal: o, texcoord: l, indices: h }; } function st(t) { return function (e) { const i = t.apply(this, Array.prototype.slice.call(arguments, 1)); return O(e, i); }; } function ot(t) { return function (e) { const i = t.apply(null, Array.prototype.slice.call(arguments, 1)); return P(e, i); }; } ot(et), st(et), ot(K), st(K), ot(Y), st(Y), ot(Z), st(Z), ot(Q), st(Q), ot(W), st(W), ot(it), st(it), ot(rt), st(rt), ot(nt), st(nt), ot(at), st(at); function lt(t) { return !!t.texStorage2D; } const ht = (function () { const t = {}, e = {}; return function (i, r) { return ( (function (i) { const r = i.constructor.name; if (!t[r]) { for (const t in i) if ('number' == typeof i[t]) { const r = e[i[t]]; e[i[t]] = r ? `${r} | ${t}` : t; } t[r] = !0; } })(i), e[r] || ('number' == typeof r ? `0x${r.toString(16)}` : r) ); }; })(); new Uint8Array([128, 192, 255, 255]), (function () { let t; })(); const ut = 6407, ct = 6408, ft = 33319, dt = 6403, bt = {}; { const t = bt; (t[6406] = { numColorComponents: 1 }), (t[6409] = { numColorComponents: 1 }), (t[6410] = { numColorComponents: 2 }), (t[ut] = { numColorComponents: 3 }), (t[ct] = { numColorComponents: 4 }), (t[dt] = { numColorComponents: 1 }), (t[36244] = { numColorComponents: 1 }), (t[ft] = { numColorComponents: 2 }), (t[33320] = { numColorComponents: 2 }), (t[ut] = { numColorComponents: 3 }), (t[36248] = { numColorComponents: 3 }), (t[ct] = { numColorComponents: 4 }), (t[36249] = { numColorComponents: 4 }), (t[6402] = { numColorComponents: 1 }), (t[34041] = { numColorComponents: 2 }); } const gt = T; function _t(t) { return 'undefined' != typeof document && document.getElementById ? document.getElementById(t) : null; } const pt = 33984, mt = 34962, vt = 5126, xt = 5124, Tt = 5125, wt = 3553, yt = 34067, At = 32879, Et = 35866, Ct = {}; function St(t, e) { return Ct[e].bindPoint; } function Mt(t, e) { return function (i) { t.uniform1i(e, i); }; } function kt(t, e) { return function (i) { t.uniform1iv(e, i); }; } function Ft(t, e) { return function (i) { t.uniform2iv(e, i); }; } function Rt(t, e) { return function (i) { t.uniform3iv(e, i); }; } function Dt(t, e) { return function (i) { t.uniform4iv(e, i); }; } function It(t, e, i, r) { const n = St(0, e); return lt(t) ? function (e) { let a, s; w(0, e) ? ((a = e), (s = null)) : ((a = e.texture), (s = e.sampler)), t.uniform1i(r, i), t.activeTexture(pt + i), t.bindTexture(n, a), t.bindSampler(i, s); } : function (e) { t.uniform1i(r, i), t.activeTexture(pt + i), t.bindTexture(n, e); }; } function Ut(t, e, i, r, n) { const a = St(0, e), s = new Int32Array(n); for (let t = 0; t < n; ++t) s[t] = i + t; return lt(t) ? function (e) { t.uniform1iv(r, s), e.forEach(function (e, r) { let n, o; t.activeTexture(pt + s[r]), w(0, e) ? ((n = e), (o = null)) : ((n = e.texture), (o = e.sampler)), t.bindSampler(i, o), t.bindTexture(a, n); }); } : function (e) { t.uniform1iv(r, s), e.forEach(function (e, i) { t.activeTexture(pt + s[i]), t.bindTexture(a, e); }); }; } function Bt(t, e) { return function (i) { if (i.value) switch ((t.disableVertexAttribArray(e), i.value.length)) { case 4: t.vertexAttrib4fv(e, i.value); break; case 3: t.vertexAttrib3fv(e, i.value); break; case 2: t.vertexAttrib2fv(e, i.value); break; case 1: t.vertexAttrib1fv(e, i.value); break; default: throw new Error('the length of a float constant value must be between 1 and 4!'); } else t.bindBuffer(mt, i.buffer), t.enableVertexAttribArray(e), t.vertexAttribPointer(e, i.numComponents || i.size, i.type || vt, i.normalize || !1, i.stride || 0, i.offset || 0), void 0 !== i.divisor && t.vertexAttribDivisor(e, i.divisor); }; } function Pt(t, e) { return function (i) { if (i.value) { if ((t.disableVertexAttribArray(e), 4 !== i.value.length)) throw new Error('The length of an integer constant value must be 4!'); t.vertexAttrib4iv(e, i.value); } else t.bindBuffer(mt, i.buffer), t.enableVertexAttribArray(e), t.vertexAttribIPointer(e, i.numComponents || i.size, i.type || xt, i.stride || 0, i.offset || 0), void 0 !== i.divisor && t.vertexAttribDivisor(e, i.divisor); }; } function zt(t, e) { return function (i) { if (i.value) { if ((t.disableVertexAttribArray(e), 4 !== i.value.length)) throw new Error('The length of an unsigned integer constant value must be 4!'); t.vertexAttrib4uiv(e, i.value); } else t.bindBuffer(mt, i.buffer), t.enableVertexAttribArray(e), t.vertexAttribIPointer(e, i.numComponents || i.size, i.type || Tt, i.stride || 0, i.offset || 0), void 0 !== i.divisor && t.vertexAttribDivisor(e, i.divisor); }; } function Ot(t, e, i) { const r = i.size, n = i.count; return function (i) { t.bindBuffer(mt, i.buffer); const a = i.size || i.numComponents || r, s = a / n, o = i.type || vt, l = Ct[o].size * a, h = i.normalize || !1, u = i.offset || 0, c = l / n; for (let r = 0; r < n; ++r) t.enableVertexAttribArray(e + r), t.vertexAttribPointer(e + r, s, o, h, l, u + c * r), void 0 !== i.divisor && t.vertexAttribDivisor(e + r, i.divisor); }; } (Ct[5126] = { Type: Float32Array, size: 4, setter: function (t, e) { return function (i) { t.uniform1f(e, i); }; }, arraySetter: function (t, e) { return function (i) { t.uniform1fv(e, i); }; }, }), (Ct[35664] = { Type: Float32Array, size: 8, setter: function (t, e) { return function (i) { t.uniform2fv(e, i); }; }, cols: 2, }), (Ct[35665] = { Type: Float32Array, size: 12, setter: function (t, e) { return function (i) { t.uniform3fv(e, i); }; }, cols: 3, }), (Ct[35666] = { Type: Float32Array, size: 16, setter: function (t, e) { return function (i) { t.uniform4fv(e, i); }; }, cols: 4, }), (Ct[5124] = { Type: Int32Array, size: 4, setter: Mt, arraySetter: kt }), (Ct[35667] = { Type: Int32Array, size: 8, setter: Ft, cols: 2 }), (Ct[35668] = { Type: Int32Array, size: 12, setter: Rt, cols: 3 }), (Ct[35669] = { Type: Int32Array, size: 16, setter: Dt, cols: 4 }), (Ct[5125] = { Type: Uint32Array, size: 4, setter: function (t, e) { return function (i) { t.uniform1ui(e, i); }; }, arraySetter: function (t, e) { return function (i) { t.uniform1uiv(e, i); }; }, }), (Ct[36294] = { Type: Uint32Array, size: 8, setter: function (t, e) { return function (i) { t.uniform2uiv(e, i); }; }, cols: 2, }), (Ct[36295] = { Type: Uint32Array, size: 12, setter: function (t, e) { return function (i) { t.uniform3uiv(e, i); }; }, cols: 3, }), (Ct[36296] = { Type: Uint32Array, size: 16, setter: function (t, e) { return function (i) { t.uniform4uiv(e, i); }; }, cols: 4, }), (Ct[35670] = { Type: Uint32Array, size: 4, setter: Mt, arraySetter: kt }), (Ct[35671] = { Type: Uint32Array, size: 8, setter: Ft, cols: 2 }), (Ct[35672] = { Type: Uint32Array, size: 12, setter: Rt, cols: 3 }), (Ct[35673] = { Type: Uint32Array, size: 16, setter: Dt, cols: 4 }), (Ct[35674] = { Type: Float32Array, size: 32, setter: function (t, e) { return function (i) { t.uniformMatrix2fv(e, !1, i); }; }, rows: 2, cols: 2, }), (Ct[35675] = { Type: Float32Array, size: 48, setter: function (t, e) { return function (i) { t.uniformMatrix3fv(e, !1, i); }; }, rows: 3, cols: 3, }), (Ct[35676] = { Type: Float32Array, size: 64, setter: function (t, e) { return function (i) { t.uniformMatrix4fv(e, !1, i); }; }, rows: 4, cols: 4, }), (Ct[35685] = { Type: Float32Array, size: 32, setter: function (t, e) { return function (i) { t.uniformMatrix2x3fv(e, !1, i); }; }, rows: 2, cols: 3, }), (Ct[35686] = { Type: Float32Array, size: 32, setter: function (t, e) { return function (i) { t.uniformMatrix2x4fv(e, !1, i); }; }, rows: 2, cols: 4, }), (Ct[35687] = { Type: Float32Array, size: 48, setter: function (t, e) { return function (i) { t.uniformMatrix3x2fv(e, !1, i); }; }, rows: 3, cols: 2, }), (Ct[35688] = { Type: Float32Array, size: 48, setter: function (t, e) { return function (i) { t.uniformMatrix3x4fv(e, !1, i); }; }, rows: 3, cols: 4, }), (Ct[35689] = { Type: Float32Array, size: 64, setter: function (t, e) { return function (i) { t.uniformMatrix4x2fv(e, !1, i); }; }, rows: 4, cols: 2, }), (Ct[35690] = { Type: Float32Array, size: 64, setter: function (t, e) { return function (i) { t.uniformMatrix4x3fv(e, !1, i); }; }, rows: 4, cols: 3, }), (Ct[35678] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: wt }), (Ct[35680] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: yt }), (Ct[35679] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: At }), (Ct[35682] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: wt }), (Ct[36289] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: Et }), (Ct[36292] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: Et }), (Ct[36293] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: yt }), (Ct[36298] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: wt }), (Ct[36299] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: At }), (Ct[36300] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: yt }), (Ct[36303] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: Et }), (Ct[36306] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: wt }), (Ct[36307] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: At }), (Ct[36308] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: yt }), (Ct[36311] = { Type: null, size: 0, setter: It, arraySetter: Ut, bindPoint: Et }); const Nt = {}; (Nt[5126] = { size: 4, setter: Bt }), (Nt[35664] = { size: 8, setter: Bt }), (Nt[35665] = { size: 12, setter: Bt }), (Nt[35666] = { size: 16, setter: Bt }), (Nt[5124] = { size: 4, setter: Pt }), (Nt[35667] = { size: 8, setter: Pt }), (Nt[35668] = { size: 12, setter: Pt }), (Nt[35669] = { size: 16, setter: Pt }), (Nt[5125] = { size: 4, setter: zt }), (Nt[36294] = { size: 8, setter: zt }), (Nt[36295] = { size: 12, setter: zt }), (Nt[36296] = { size: 16, setter: zt }), (Nt[35670] = { size: 4, setter: Pt }), (Nt[35671] = { size: 8, setter: Pt }), (Nt[35672] = { size: 12, setter: Pt }), (Nt[35673] = { size: 16, setter: Pt }), (Nt[35674] = { size: 4, setter: Ot, count: 2 }), (Nt[35675] = { size: 9, setter: Ot, count: 3 }), (Nt[35676] = { size: 16, setter: Ot, count: 4 }); const Lt = /ERROR:\s*\d+:(\d+)/gi; function Ht(t, e = '', i = 0) { const r = [...e.matchAll(Lt)], n = new Map( r.map((t, i) => { const n = parseInt(t[1]), a = r[i + 1], s = a ? a.index : e.length; return [n - 1, e.substring(t.index, s)]; }), ); return t .split('\n') .map((t, e) => { const r = n.get(e); return `${e + 1 + i}: ${t}${r ? `\n\n^^^ ${r}` : ''}`; }) .join('\n'); } const Vt = /^[ \t]*\n/; function jt(t, e, i, r) { const n = r || gt, a = t.createShader(i); let s = 0; Vt.test(e) && ((s = 1), (e = e.replace(Vt, ''))), t.shaderSource(a, e), t.compileShader(a); if (!t.getShaderParameter(a, 35713)) { const r = t.getShaderInfoLog(a); return n(`${Ht(e, r, s)}\nError compiling ${ht(t, i)}: ${r}`), t.deleteShader(a), null; } return a; } function Gt(t, e, i) { let r, n; if (('function' == typeof e && ((i = e), (e = void 0)), 'function' == typeof t)) (i = t), (t = void 0); else if (t && !Array.isArray(t)) { if (t.errorCallback) return t; const e = t; (i = e.errorCallback), (t = e.attribLocations), (r = e.transformFeedbackVaryings), (n = e.transformFeedbackMode); } const a = { errorCallback: i || gt, transformFeedbackVaryings: r, transformFeedbackMode: n }; if (t) { let i = {}; Array.isArray(t) ? t.forEach(function (t, r) { i[t] = e ? e[r] : r; }) : (i = t), (a.attribLocations = i); } return a; } const Xt = ['VERTEX_SHADER', 'FRAGMENT_SHADER']; function qt(t, e) { return e.indexOf('frag') >= 0 ? 35632 : e.indexOf('vert') >= 0 ? 35633 : void 0; } function Wt(t, e) { e.forEach(function (e) { t.deleteShader(e); }); } function Yt(t, e, i, r, n) { const a = Gt(i, r, n), s = [], o = []; for (let i = 0; i < e.length; ++i) { let r = e[i]; if ('string' == typeof r) { const e = _t(r), n = e ? e.text : r; let s = t[Xt[i]]; e && e.type && (s = qt(0, e.type) || s), (r = jt(t, n, s, a.errorCallback)), o.push(r); } (l = r), 'undefined' != typeof WebGLShader && l instanceof WebGLShader && s.push(r); } var l; if (s.length !== e.length) return a.errorCallback('not enough shaders for program'), Wt(t, o), null; const h = t.createProgram(); s.forEach(function (e) { t.attachShader(h, e); }), a.attribLocations && Object.keys(a.attribLocations).forEach(function (e) { t.bindAttribLocation(h, a.attribLocations[e], e); }); let u = a.transformFeedbackVaryings; u && (u.attribs && (u = u.attribs), Array.isArray(u) || (u = Object.keys(u)), t.transformFeedbackVaryings(h, u, a.transformFeedbackMode || 35981)), t.linkProgram(h); if (!t.getProgramParameter(h, 35714)) { const e = t.getProgramInfoLog(h); return ( a.errorCallback( `${s .map((e) => { const i = Ht(t.getShaderSource(e), '', 0), r = t.getShaderParameter(e, t.SHADER_TYPE); return `${ht(t, r)}\n${i}}`; }) .join('\n')}\nError in program linking: ${e}`, ), t.deleteProgram(h), Wt(t, o), null ); } return h; } function Zt(t, e, i, r, n) { const a = Gt(i, r, n), s = []; for (let i = 0; i < e.length; ++i) { const r = jt(t, e[i], t[Xt[i]], a.errorCallback); if (!r) return null; s.push(r); } return Yt(t, s, a); } function Jt(t) { const e = t.name; return e.startsWith('gl_') || e.startsWith('webgl_'); } const Kt = /(\.|\[|]|\w+)/g; function $t(t, e, i, r) { const n = t.split(Kt).filter((t) => '' !== t); let a = 0, s = ''; for (;;) { const t = n[a++]; s += t; const l = (o = t[0]) >= '0' && o <= '9', h = l ? parseInt(t) : t; l && (s += n[a++]); if (a === n.length) { i[h] = e; break; } { const t = n[a++], e = '[' === t, o = i[h] || (e ? [] : {}); (i[h] = o), (i = o), (r[s] = r[s] || (function (t) { return function (e) { ie(t, e); }; })(o)), (s += t); } } var o; } function Qt(t, e) { let i = 0; function r(e, r, n) { const a = r.name.endsWith('[0]'), s = r.type, o = Ct[s]; if (!o) throw new Error(`unknown type: 0x${s.toString(16)}`); let l; if (o.bindPoint) { const e = i; (i += r.size), (l = a ? o.arraySetter(t, s, e, n, r.size) : o.setter(t, s, e, n, r.size)); } else l = o.arraySetter && a ? o.arraySetter(t, n) : o.setter(t, n); return (l.location = n), l; } const n = {}, a = {}, s = t.getProgramParameter(e, 35718); for (let i = 0; i < s; ++i) { const s = t.getActiveUniform(e, i); if (Jt(s)) continue; let o = s.name; o.endsWith('[0]') && (o = o.substr(0, o.length - 3)); const l = t.getUniformLocation(e, s.name); if (l) { const t = r(0, s, l); (n[o] = t), $t(o, t, a, n); } } return n; } function te(t, e) { const i = {}, r = t.getProgramParameter(e, 35971); for (let n = 0; n < r; ++n) { const r = t.getTransformFeedbackVarying(e, n); i[r.name] = { index: n, type: r.type, size: r.size }; } return i; } function ee(t, e) { const i = t.getProgramParameter(e, 35718), r = [], n = []; for (let a = 0; a < i; ++a) { n.push(a), r.push({}); const i = t.getActiveUniform(e, a); r[a].name = i.name; } [ ['UNIFORM_TYPE', 'type'], ['UNIFORM_SIZE', 'size'], ['UNIFORM_BLOCK_INDEX', 'blockNdx'], ['UNIFORM_OFFSET', 'offset'], ].forEach(function (i) { const a = i[0], s = i[1]; t.getActiveUniforms(e, n, t[a]).forEach(function (t, e) { r[e][s] = t; }); }); const a = {}, s = t.getProgramParameter(e, 35382); for (let i = 0; i < s; ++i) { const r = t.getActiveUniformBlockName(e, i), n = { index: t.getUniformBlockIndex(e, r), usedByVertexShader: t.getActiveUniformBlockParameter(e, i, 35396), usedByFragmentShader: t.getActiveUniformBlockParameter(e, i, 35398), size: t.getActiveUniformBlockParameter(e, i, 35392), uniformIndices: t.getActiveUniformBlockParameter(e, i, 35395), }; (n.used = n.usedByVertexShader || n.usedByFragmentShader), (a[r] = n); } return { blockSpecs: a, uniformData: r }; } function ie(t, e) { for (const i in e) { const r = t[i]; 'function' == typeof r ? r(e[i]) : ie(t[i], e[i]); } } function re(t, ...e) { const i = t.uniformSetters || t, r = e.length; for (let t = 0; t < r; ++t) { const r = e[t]; if (Array.isArray(r)) { const t = r.length; for (let e = 0; e < t; ++e) re(i, r[e]); } else for (const t in r) { const e = i[t]; e && e(r[t]); } } } function ne(t, e) { const i = {}, r = t.getProgramParameter(e, 35721); for (let n = 0; n < r; ++n) { const r = t.getActiveAttrib(e, n); if (Jt(r)) continue; const a = t.getAttribLocation(e, r.name), s = Nt[r.type], o = s.setter(t, a, s); (o.location = a), (i[r.name] = o); } return i; } function ae(t, e) { const i = { program: e, uniformSetters: Qt(t, e), attribSetters: ne(t, e) }; return lt(t) && ((i.uniformBlockSpec = ee(t, e)), (i.transformFeedbackInfo = te(t, e))), i; } function se(t, e, i, r, n) { const a = Gt(i, r, n); let s = !0; if ( ((e = e.map(function (t) { if (t.indexOf('\n') < 0) { const e = _t(t); e ? (t = e.text) : (a.errorCallback('no element with id: ' + t), (s = !1)); } return t; })), !s) ) return null; const o = Zt(t, e, a); return o ? ae(t, o) : null; } const oe = 36096, le = 33306, he = {}; (he[34041] = le), (he[6401] = 36128), (he[36168] = 36128), (he[6402] = oe), (he[33189] = oe), (he[33190] = oe), (he[36012] = oe), (he[35056] = le), (he[36013] = le); const ue = {}; (ue[32854] = !0), (ue[32855] = !0), (ue[36194] = !0), (ue[34041] = !0), (ue[33189] = !0), (ue[6401] = !0), (ue[36168] = !0); var ce = {}; const fe = { position: 3, normal: 3, tangent: 3, texcoord: 2, texcoord0: 2, texcoord1: 2, texcoord2: 2 }; var de = {}; class be { constructor() { this.attribs = {}; } disableAll() { for (let t in this.attribs) this.gl.disableVertexAttribArray(this.attribs[t]); this.attribs = {}; } enable(t, e) { this.gl = t; var i = {}; for (let n in e) { var r = e[n]; void 0 !== r.loc && (void 0 === this.attribs[r.loc] && t.enableVertexAttribArray(r.loc), t.vertexAttribPointer(r.loc, r.size, r.type, !1, r.stride, r.offset), (i[r.loc] = r.loc), (this.attribs[n] = null)); } for (let t in this.attribs); this.attribs = i; } } class ge { static CreateProgramAttributes(t, e) { var i = {}, r = 0; for (let s in e) { var n = e[s], a = fe[s]; (i[n] = { type: t.FLOAT, size: a, offset: 4 * r }), (r += a); } for (let t in i) i[t].stride = 4 * r; return i; } CleanUpPrograms() { de = {}; } ReleaseProgram(t) {} static _GetProgram(t) { return de[t]; } static RegisterProgram(t, e) { if (!de[t]) { var i = e.shaders; de[t] = { shaders: [i[0], i[1]], attributes: e.attributes }; } return de[t]; } static GetProgram(t, e, i, r) { var n = de[e], a = ''; for (var s in i) a += s + ':' + i[s] + '-'; if (!n) { var o = e.split('.'), l = ce[o[0]][o[1]]; l && (n = ge.RegisterProgram(e, l)); } if (!n) throw 'Program not registered: ' + o; n.programInfo || (n.programInfo = {}), (n.programInfo[a] = ge.CompileProgram(t, n.shaders, i)), (r = r || (n.attributes && ge.CreateProgramAttributes(t, n.attributes))); var h = n.programInfo[a]; if (r) for (var s in r) { var u = h.attribSetters[s]; u && ((r[s] = r[s] || {}), (r[s].loc = u.location)); } return (h.attributes = r), h; } static CompileProgram(t, e, i, r) { var n = ''; for (var a in i) { var s = i[a]; n = '#define ' + a + ' ' + (null === s ? '' : s) + '\n'; } var o = {}; const l = se(t, [n + e[0], n + e[1]], null, null); if (r) for (var a in r) { var h = l.attribSetters[a]; h && ((r[a] = r[a] || {}), (r[a].loc = h.location)); } for (var a in l.uniformSetters) o[a] = l.uniformSetters[a].location; return (l.uniforms = o), l; } } var _e = new ge(), pe = 1e-6, me = 'undefined' != typeof Float32Array ? Float32Array : Array; Math.random; Math.PI; function ve() { var t = new me(3); return me != Float32Array && ((t[0] = 0), (t[1] = 0), (t[2] = 0)), t; } function xe(t) { var e = new me(3); return (e[0] = t[0]), (e[1] = t[1]), (e[2] = t[2]), e; } function Te(t) { var e = t[0], i = t[1], r = t[2]; return Math.hypot(e, i, r); } function we(t, e, i) { var r = new me(3); return (r[0] = t), (r[1] = e), (r[2] = i), r; } function ye(t, e) { return (t[0] = e[0]), (t[1] = e[1]), (t[2] = e[2]), t; } function Ae(t, e, i, r) { return (t[0] = e), (t[1] = i), (t[2] = r), t; } function Ee(t, e, i) { return (t[0] = e[0] + i[0]), (t[1] = e[1] + i[1]), (t[2] = e[2] + i[2]), t; } function Ce(t, e, i) { return (t[0] = e[0] - i[0]), (t[1] = e[1] - i[1]), (t[2] = e[2] - i[2]), t; } function Se(t, e, i) { return (t[0] = e[0] * i[0]), (t[1] = e[1] * i[1]), (t[2] = e[2] * i[2]), t; } function Me(t, e, i) { return (t[0] = Math.min(e[0], i[0])), (t[1] = Math.min(e[1], i[1])), (t[2] = Math.min(e[2], i[2])), t; } function ke(t, e, i) { return (t[0] = Math.max(e[0], i[0])), (t[1] = Math.max(e[1], i[1])), (t[2] = Math.max(e[2], i[2])), t; } function Fe(t, e, i) { return (t[0] = e[0] * i), (t[1] = e[1] * i), (t[2] = e[2] * i), t; } function Re(t, e, i, r) { return (t[0] = e[0] + i[0] * r), (t[1] = e[1] + i[1] * r), (t[2] = e[2] + i[2] * r), t; } function De(t) { var e = t[0], i = t[1], r = t[2]; return e * e + i * i + r * r; } function Ie(t, e) { return (t[0] = -e[0]), (t[1] = -e[1]), (t[2] = -e[2]), t; } function Ue(t, e) { var i = e[0], r = e[1], n = e[2], a = i * i + r * r + n * n; return a > 0 && (a = 1 / Math.sqrt(a)), (t[0] = e[0] * a), (t[1] = e[1] * a), (t[2] = e[2] * a), t; } function Be(t, e) { return t[0] * e[0] + t[1] * e[1] + t[2] * e[2]; } function Pe(t, e, i) { var r = e[0], n = e[1], a = e[2], s = i[0], o = i[1], l = i[2]; return (t[0] = n * l - a * o), (t[1] = a * s - r * l), (t[2] = r * o - n * s), t; } function ze(t, e, i, r) { var n = e[0], a = e[1], s = e[2]; return (t[0] = n + r * (i[0] - n)), (t[1] = a + r * (i[1] - a)), (t[2] = s + r * (i[2] - s)), t; } function Oe(t, e, i) { var r = e[0], n = e[1], a = e[2], s = i[3] * r + i[7] * n + i[11] * a + i[15]; return ( (s = s || 1), (t[0] = (i[0] * r + i[4] * n + i[8] * a + i[12]) / s), (t[1] = (i[1] * r + i[5] * n + i[9] * a + i[13]) / s), (t[2] = (i[2] * r + i[6] * n + i[10] * a + i[14]) / s), t ); } function Ne(t, e, i) { var r = e[0], n = e[1], a = e[2]; return (t[0] = r * i[0] + n * i[3] + a * i[6]), (t[1] = r * i[1] + n * i[4] + a * i[7]), (t[2] = r * i[2] + n * i[5] + a * i[8]), t; } Math.hypot || (Math.hypot = function () { for (var t = 0, e = arguments.length; e--; ) t += arguments[e] * arguments[e]; return Math.sqrt(t); }); var Le, He = Ce, Ve = Te; Le = ve(); function je() { var t = new me(16); return ( me != Float32Array && ((t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), (t[6] = 0), (t[7] = 0), (t[8] = 0), (t[9] = 0), (t[11] = 0), (t[12] = 0), (t[13] = 0), (t[14] = 0)), (t[0] = 1), (t[5] = 1), (t[10] = 1), (t[15] = 1), t ); } function Ge(t, e) { return ( (t[0] = e[0]), (t[1] = e[1]), (t[2] = e[2]), (t[3] = e[3]), (t[4] = e[4]), (t[5] = e[5]), (t[6] = e[6]), (t[7] = e[7]), (t[8] = e[8]), (t[9] = e[9]), (t[10] = e[10]), (t[11] = e[11]), (t[12] = e[12]), (t[13] = e[13]), (t[14] = e[14]), (t[15] = e[15]), t ); } function Xe(t, e, i, r, n, a, s, o, l, h, u, c, f, d, b, g) { var _ = new me(16); return ( (_[0] = t), (_[1] = e), (_[2] = i), (_[3] = r), (_[4] = n), (_[5] = a), (_[6] = s), (_[7] = o), (_[8] = l), (_[9] = h), (_[10] = u), (_[11] = c), (_[12] = f), (_[13] = d), (_[14] = b), (_[15] = g), _ ); } function qe(t) { return ( (t[0] = 1), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), (t[5] = 1), (t[6] = 0), (t[7] = 0), (t[8] = 0), (t[9] = 0), (t[10] = 1), (t[11] = 0), (t[12] = 0), (t[13] = 0), (t[14] = 0), (t[15] = 1), t ); } function We(t, e) { var i = e[0], r = e[1], n = e[2], a = e[3], s = e[4], o = e[5], l = e[6], h = e[7], u = e[8], c = e[9], f = e[10], d = e[11], b = e[12], g = e[13], _ = e[14], p = e[15], m = i * o - r * s, v = i * l - n * s, x = i * h - a * s, T = r * l - n * o, w = r * h - a * o, y = n * h - a * l, A = u * g - c * b, E = u * _ - f * b, C = u * p - d * b, S = c * _ - f * g, M = c * p - d * g, k = f * p - d * _, F = m * k - v * M + x * S + T * C - w * E + y * A; return F ? ((F = 1 / F), (t[0] = (o * k - l * M + h * S) * F), (t[1] = (n * M - r * k - a * S) * F), (t[2] = (g * y - _ * w + p * T) * F), (t[3] = (f * w - c * y - d * T) * F), (t[4] = (l * C - s * k - h * E) * F), (t[5] = (i * k - n * C + a * E) * F), (t[6] = (_ * x - b * y - p * v) * F), (t[7] = (u * y - f * x + d * v) * F), (t[8] = (s * M - o * C + h * A) * F), (t[9] = (r * C - i * M - a * A) * F), (t[10] = (b * w - g * x + p * m) * F), (t[11] = (c * x - u * w - d * m) * F), (t[12] = (o * E - s * S - l * A) * F), (t[13] = (i * S - r * E + n * A) * F), (t[14] = (g * v - b * T - _ * m) * F), (t[15] = (u * T - c * v + f * m) * F), t) : null; } function Ye(t, e, i) { var r = e[0], n = e[1], a = e[2], s = e[3], o = e[4], l = e[5], h = e[6], u = e[7], c = e[8], f = e[9], d = e[10], b = e[11], g = e[12], _ = e[13], p = e[14], m = e[15], v = i[0], x = i[1], T = i[2], w = i[3]; return ( (t[0] = v * r + x * o + T * c + w * g), (t[1] = v * n + x * l + T * f + w * _), (t[2] = v * a + x * h + T * d + w * p), (t[3] = v * s + x * u + T * b + w * m), (v = i[4]), (x = i[5]), (T = i[6]), (w = i[7]), (t[4] = v * r + x * o + T * c + w * g), (t[5] = v * n + x * l + T * f + w * _), (t[6] = v * a + x * h + T * d + w * p), (t[7] = v * s + x * u + T * b + w * m), (v = i[8]), (x = i[9]), (T = i[10]), (w = i[11]), (t[8] = v * r + x * o + T * c + w * g), (t[9] = v * n + x * l + T * f + w * _), (t[10] = v * a + x * h + T * d + w * p), (t[11] = v * s + x * u + T * b + w * m), (v = i[12]), (x = i[13]), (T = i[14]), (w = i[15]), (t[12] = v * r + x * o + T * c + w * g), (t[13] = v * n + x * l + T * f + w * _), (t[14] = v * a + x * h + T * d + w * p), (t[15] = v * s + x * u + T * b + w * m), t ); } function Ze(t, e, i) { var r, n, a, s, o, l, h, u, c, f, d, b, g = i[0], _ = i[1], p = i[2]; return ( e === t ? ((t[12] = e[0] * g + e[4] * _ + e[8] * p + e[12]), (t[13] = e[1] * g + e[5] * _ + e[9] * p + e[13]), (t[14] = e[2] * g + e[6] * _ + e[10] * p + e[14]), (t[15] = e[3] * g + e[7] * _ + e[11] * p + e[15])) : ((r = e[0]), (n = e[1]), (a = e[2]), (s = e[3]), (o = e[4]), (l = e[5]), (h = e[6]), (u = e[7]), (c = e[8]), (f = e[9]), (d = e[10]), (b = e[11]), (t[0] = r), (t[1] = n), (t[2] = a), (t[3] = s), (t[4] = o), (t[5] = l), (t[6] = h), (t[7] = u), (t[8] = c), (t[9] = f), (t[10] = d), (t[11] = b), (t[12] = r * g + o * _ + c * p + e[12]), (t[13] = n * g + l * _ + f * p + e[13]), (t[14] = a * g + h * _ + d * p + e[14]), (t[15] = s * g + u * _ + b * p + e[15])), t ); } function Je(t, e, i) { var r = i[0], n = i[1], a = i[2]; return ( (t[0] = e[0] * r), (t[1] = e[1] * r), (t[2] = e[2] * r), (t[3] = e[3] * r), (t[4] = e[4] * n), (t[5] = e[5] * n), (t[6] = e[6] * n), (t[7] = e[7] * n), (t[8] = e[8] * a), (t[9] = e[9] * a), (t[10] = e[10] * a), (t[11] = e[11] * a), (t[12] = e[12]), (t[13] = e[13]), (t[14] = e[14]), (t[15] = e[15]), t ); } function Ke(t, e, i) { var r = Math.sin(i), n = Math.cos(i), a = e[4], s = e[5], o = e[6], l = e[7], h = e[8], u = e[9], c = e[10], f = e[11]; return ( e !== t && ((t[0] = e[0]), (t[1] = e[1]), (t[2] = e[2]), (t[3] = e[3]), (t[12] = e[12]), (t[13] = e[13]), (t[14] = e[14]), (t[15] = e[15])), (t[4] = a * n + h * r), (t[5] = s * n + u * r), (t[6] = o * n + c * r), (t[7] = l * n + f * r), (t[8] = h * n - a * r), (t[9] = u * n - s * r), (t[10] = c * n - o * r), (t[11] = f * n - l * r), t ); } function $e(t, e, i) { var r = Math.sin(i), n = Math.cos(i), a = e[0], s = e[1], o = e[2], l = e[3], h = e[8], u = e[9], c = e[10], f = e[11]; return ( e !== t && ((t[4] = e[4]), (t[5] = e[5]), (t[6] = e[6]), (t[7] = e[7]), (t[12] = e[12]), (t[13] = e[13]), (t[14] = e[14]), (t[15] = e[15])), (t[0] = a * n - h * r), (t[1] = s * n - u * r), (t[2] = o * n - c * r), (t[3] = l * n - f * r), (t[8] = a * r + h * n), (t[9] = s * r + u * n), (t[10] = o * r + c * n), (t[11] = l * r + f * n), t ); } function Qe(t, e, i) { var r = Math.sin(i), n = Math.cos(i), a = e[0], s = e[1], o = e[2], l = e[3], h = e[4], u = e[5], c = e[6], f = e[7]; return ( e !== t && ((t[8] = e[8]), (t[9] = e[9]), (t[10] = e[10]), (t[11] = e[11]), (t[12] = e[12]), (t[13] = e[13]), (t[14] = e[14]), (t[15] = e[15])), (t[0] = a * n + h * r), (t[1] = s * n + u * r), (t[2] = o * n + c * r), (t[3] = l * n + f * r), (t[4] = h * n - a * r), (t[5] = u * n - s * r), (t[6] = c * n - o * r), (t[7] = f * n - l * r), t ); } function ti(t, e) { return ( (t[0] = 1), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), (t[5] = 1), (t[6] = 0), (t[7] = 0), (t[8] = 0), (t[9] = 0), (t[10] = 1), (t[11] = 0), (t[12] = e[0]), (t[13] = e[1]), (t[14] = e[2]), (t[15] = 1), t ); } function ei(t, e, i) { var r = e[0], n = e[1], a = e[2], s = e[3], o = r + r, l = n + n, h = a + a, u = r * o, c = r * l, f = r * h, d = n * l, b = n * h, g = a * h, _ = s * o, p = s * l, m = s * h; return ( (t[0] = 1 - (d + g)), (t[1] = c + m), (t[2] = f - p), (t[3] = 0), (t[4] = c - m), (t[5] = 1 - (u + g)), (t[6] = b + _), (t[7] = 0), (t[8] = f + p), (t[9] = b - _), (t[10] = 1 - (u + d)), (t[11] = 0), (t[12] = i[0]), (t[13] = i[1]), (t[14] = i[2]), (t[15] = 1), t ); } function ii(t, e) { return (t[0] = e[12]), (t[1] = e[13]), (t[2] = e[14]), t; } function ri(t, e) { var i = e[0], r = e[1], n = e[2], a = e[4], s = e[5], o = e[6], l = e[8], h = e[9], u = e[10]; return (t[0] = Math.hypot(i, r, n)), (t[1] = Math.hypot(a, s, o)), (t[2] = Math.hypot(l, h, u)), t; } var ni = function (t, e, i, r, n) { var a, s = 1 / Math.tan(e / 2); return ( (t[0] = s / i), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), (t[5] = s), (t[6] = 0), (t[7] = 0), (t[8] = 0), (t[9] = 0), (t[11] = -1), (t[12] = 0), (t[13] = 0), (t[15] = 0), null != n && n !== 1 / 0 ? ((a = 1 / (r - n)), (t[10] = (n + r) * a), (t[14] = 2 * n * r * a)) : ((t[10] = -1), (t[14] = -2 * r)), t ); }; var ai = Ye; const si = { 147259: !0 }, oi = { 28060: !0, 28063: !0, 28082: !0, 41903: !0, 42147: !0, 44808: !0, 45271: !0 }; const li = { 2: { GeosetType: 15, Original: 2, Override: 11 }, 3: { GeosetType: 15, Original: 3, Override: 12 }, 4: { GeosetType: 15, Original: 4, Override: 13 }, 5: { GeosetType: 15, Original: 5, Override: 14 }, 6: { GeosetType: 15, Original: 6, Override: 15 }, 7: { GeosetType: 15, Original: 7, Override: 16 }, 8: { GeosetType: 15, Original: 8, Override: 17 }, 9: { GeosetType: 15, Original: 9, Override: 18 }, 10: { GeosetType: 15, Original: 10, Override: 19 }, }, hi = { ITEM: 1, HELM: 2, SHOULDER: 4, NPC: 8, CHARACTER: 16, HUMANOIDNPC: 32, OBJECT: 64, ARMOR: 128, PATH: 256, ITEMVISUAL: 512, COLLECTION: 1024, }, ui = { MALE: 0, FEMALE: 1, 0: 'male', 1: 'female' }, ci = 5, fi = 15, di = 21, bi = 27, gi = 30, _i = { 1: 'human', 2: 'orc', 3: 'dwarf', 4: 'nightelf', 5: 'scourge', 6: 'tauren', 7: 'gnome', 8: 'troll', 9: 'goblin', 10: 'bloodelf', 11: 'draenei', 12: 'felorc', 13: 'naga_', 14: 'broken', 15: 'skeleton', 16: 'vrykul', 17: 'tuskarr', 18: 'foresttroll', 19: 'taunka', 20: 'northrendskeleton', 21: 'icetroll', 22: 'worgen', 23: 'gilnean', 24: 'pandaren', 25: 'pandarena', 26: 'pandarenh', 27: 'nightborne', 28: 'highmountaintauren', 29: 'voidelf', 30: 'lightforgeddraenei', 31: 'zandalaritroll', 32: 'kultiran', 33: 'thinhuman', 34: 'darkirondwarf', 35: 'vulpera', 36: 'magharorc', 37: 'mechagnome', }, pi = [0, 1, 0, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, 21, 22, 22, 16, 21, 0, 19, 5, 21, 22, 22, 0, 21, 21, 27], mi = [0, 16, 0, 15, 1, 8, 10, 5, 6, 6, 7, 0, 0, 17, 18, 19, 14, 20, 0, 9, 8, 21, 22, 23, 0, 24, 25, 0], vi = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], xi = [0, 2, 0, 4, 128, 128, 128, 128, 128, 128, 128, 0, 0, 1, 1, 1, 128, 1, 0, 128, 128, 1, 1, 1, 0, 1, 1, 2], Ti = 1, wi = 3, yi = 4, Ai = 5, Ei = 6, Ci = 7, Si = 8, Mi = 9, ki = 10, Fi = 13, Ri = 14, Di = 15, Ii = 16, Ui = 19, Bi = 20, Pi = 21, zi = 22, Oi = 23, Ni = 26, Li = 1, Hi = 10, Vi = [13, 14, 15, 16, 17, 88, 89], ji = [8, 9, 10, 11, 12, 86, 87], Gi = 3, Xi = 5, qi = 7, Wi = 12, Yi = [ { x: 0, y: 0, w: 0.5, h: 0.25 }, { x: 0, y: 0.25, w: 0.5, h: 0.25 }, { x: 0, y: 0.5, w: 0.5, h: 0.125 }, { x: 0.5, y: 0, w: 0.5, h: 0.25 }, { x: 0.5, y: 0.25, w: 0.5, h: 0.125 }, { x: 0.5, y: 0.375, w: 0.5, h: 0.25 }, { x: 0.5, y: 0.625, w: 0.5, h: 0.25 }, { x: 0.5, y: 0.875, w: 0.5, h: 0.125 }, {}, { x: 0, y: 0.625, w: 0.5, h: 0.125 }, { x: 0, y: 0.75, w: 0.5, h: 0.25 }, {}, { x: 0, y: 0, w: 1, h: 1 }, { x: 0, y: 0, w: 1, h: 1 }, ], Zi = [ { x: 0, y: 0, w: 0.25, h: 0.25 }, { x: 0, y: 0.25, w: 0.25, h: 0.25 }, { x: 0, y: 0.5, w: 0.25, h: 0.125 }, { x: 0.25, y: 0, w: 0.25, h: 0.25 }, { x: 0.25, y: 0.25, w: 0.25, h: 0.125 }, { x: 0.25, y: 0.375, w: 0.25, h: 0.25 }, { x: 0.25, y: 0.625, w: 0.25, h: 0.25 }, { x: 0.25, y: 0.875, w: 0.25, h: 0.125 }, { x: 0.75, y: 0.75, w: 0.25, h: 0.25 }, { x: 0.5, y: 0, w: 0.5, h: 1 }, { x: 0.5, y: 0, w: 0.5, h: 1 }, { x: 0.5, y: 0, w: 0.5, h: 1 }, { x: 0, y: 0, w: 0.5, h: 1 }, { x: 0, y: 0, w: 1, h: 1 }, { x: 0, y: 0, w: 0.5, h: 1 }, ], Ji = { 40: [5, 0, 5, 1, 5, 0, 5, 1], 37: [7, 0, 7, 1, 7, 0, 7, 1], 36: [2, 0, 2, 1, 2, 0, 2, 1], 35: [9, 0, 9, 1, 9, 0, 9, 1], 34: [3, 0, 3, 1, 3, 0, 3, 1], 33: [5, 1, 0, -1, 5, 0, 0, -1], 31: [0, -1, 8, 1, 0, -1, 8, 1], 30: [11, 0, 11, 1, 11, 0, 11, 1], 29: [10, 0, 10, 1, 10, 0, 10, 1], 28: [6, 0, 6, 1, 6, 0, 6, 1], 27: [4, 0, 4, 1, 4, 0, 4, 1], 26: [24, 0, 24, 1, 24, 0, 24, 1], 25: [24, 0, 24, 1, 24, 0, 24, 1], 23: [1, 0, 1, 1, 1, 0, 1, 1], 15: [5, 0, 5, 1, 5, 0, 5, 1], }, Ki = { 21: 26, 22: 27, 15: 28, 17: 26, 25: 32, 13: 32, 23: 33, 14: 28, 26: 26 }, $i = { 0: { 21: 26, 22: 27 }, 1: { 21: 26, 22: 27 }, 2: { 21: 30, 22: 31 }, 3: { 21: 32, 22: 33 }, 4: { 21: 26, 22: 27, 15: 28 }, 5: { 21: 26 }, 6: { 21: 26, 22: 27 }, 7: { 21: 26, 22: 27 }, 8: { 21: 26, 22: 27 }, 9: { 21: 33, 22: 28 }, }; function Qi() { var t = new me(4); return me != Float32Array && ((t[0] = 0), (t[1] = 0), (t[2] = 0), (t[3] = 0)), t; } function tr(t) { var e = new me(4); return (e[0] = t[0]), (e[1] = t[1]), (e[2] = t[2]), (e[3] = t[3]), e; } function er(t, e, i, r) { var n = new me(4); return (n[0] = t), (n[1] = e), (n[2] = i), (n[3] = r), n; } function ir(t, e) { return (t[0] = e[0]), (t[1] = e[1]), (t[2] = e[2]), (t[3] = e[3]), t; } function rr(t, e, i) { return (t[0] = e[0] + i[0]), (t[1] = e[1] + i[1]), (t[2] = e[2] + i[2]), (t[3] = e[3] + i[3]), t; } function nr(t, e, i) { return (t[0] = e[0] - i[0]), (t[1] = e[1] - i[1]), (t[2] = e[2] - i[2]), (t[3] = e[3] - i[3]), t; } function ar(t, e, i) { return (t[0] = e[0] * i), (t[1] = e[1] * i), (t[2] = e[2] * i), (t[3] = e[3] * i), t; } function sr(t) { var e = t[0], i = t[1], r = t[2], n = t[3]; return Math.hypot(e, i, r, n); } function or(t, e) { var i = e[0], r = e[1], n = e[2], a = e[3], s = i * i + r * r + n * n + a * a; return s > 0 && (s = 1 / Math.sqrt(s)), (t[0] = i * s), (t[1] = r * s), (t[2] = n * s), (t[3] = a * s), t; } function lr(t, e, i) { var r = e[0], n = e[1], a = e[2], s = e[3]; return ( (t[0] = i[0] * r + i[4] * n + i[8] * a + i[12] * s), (t[1] = i[1] * r + i[5] * n + i[9] * a + i[13] * s), (t[2] = i[2] * r + i[6] * n + i[10] * a + i[14] * s), (t[3] = i[3] * r + i[7] * n + i[11] * a + i[15] * s), t ); } var hr = sr; !(function () { var t = Qi(); })(); const ur = class { constructor(t) { var e = this; (e.a = we(t.getFloat(), t.getFloat(), t.getFloat())), (e.b = er(t.getFloat(), t.getFloat(), t.getFloat(), 0)), (e.c = t.getFloat()), (e.d = t.getFloat()), (e.e = t.getFloat()), (e.f = t.getFloat()), (e.g = [t.getUint8(), t.getUint8(), t.getUint8(), t.getUint8()]), (e.h = [t.getUint8(), t.getUint8(), t.getUint8(), t.getUint8()]), (e.i = xe(e.a)), (e.j = tr(e.b)); } l() { var t = this; (t.a = null), (t.b = null), (t.g = null), (t.h = null), (t.i = null), (t.j = null); } }; const cr = class { constructor(t) { var e = this; (e.a = t.getUint16()), (e.b = t.getUint16()), (e.g = t.getUint32()), (e.c = t.getUint32()), (e.d = t.getUint16()), (e.e = t.getUint16()), (e.f = t.getUint16()), (e.h = t.getInt16()), (e.i = t.getUint16()), t.getBool() && (e.j = t.getString()); } k() {} }; function fr() { var t = new me(2); return me != Float32Array && ((t[0] = 0), (t[1] = 0)), t; } function dr(t, e) { var i = new me(2); return (i[0] = t), (i[1] = e), i; } function br(t, e, i) { return (t[0] = e), (t[1] = i), t; } function gr(t, e, i) { return (t[0] = e[0] * i[0]), (t[1] = e[1] * i[1]), t; } function _r(t, e, i) { return (t[0] = e[0] * i), (t[1] = e[1] * i), t; } !(function () { var t = fr(); })(); function pr() { var t = new me(9); return ( me != Float32Array && ((t[1] = 0), (t[2] = 0), (t[3] = 0), (t[5] = 0), (t[6] = 0), (t[7] = 0)), (t[0] = 1), (t[4] = 1), (t[8] = 1), t ); } function mr(t, e) { return ( (t[0] = e[0]), (t[1] = e[1]), (t[2] = e[2]), (t[3] = e[4]), (t[4] = e[5]), (t[5] = e[6]), (t[6] = e[8]), (t[7] = e[9]), (t[8] = e[10]), t ); } function vr(t, e, i) { var r = e[0], n = e[1], a = e[2], s = e[3], o = e[4], l = e[5], h = e[6], u = e[7], c = e[8], f = i[0], d = i[1], b = i[2], g = i[3], _ = i[4], p = i[5], m = i[6], v = i[7], x = i[8]; return ( (t[0] = f * r + d * s + b * h), (t[1] = f * n + d * o + b * u), (t[2] = f * a + d * l + b * c), (t[3] = g * r + _ * s + p * h), (t[4] = g * n + _ * o + p * u), (t[5] = g * a + _ * l + p * c), (t[6] = m * r + v * s + x * h), (t[7] = m * n + v * o + x * u), (t[8] = m * a + v * l + x * c), t ); } function xr() { var t = new me(4); return me != Float32Array && ((t[0] = 0), (t[1] = 0), (t[2] = 0)), (t[3] = 1), t; } function Tr(t, e, i) { i *= 0.5; var r = Math.sin(i); return (t[0] = r * e[0]), (t[1] = r * e[1]), (t[2] = r * e[2]), (t[3] = Math.cos(i)), t; } function wr(t, e, i, r) { var n, a, s, o, l, h = e[0], u = e[1], c = e[2], f = e[3], d = i[0], b = i[1], g = i[2], _ = i[3]; return ( (a = h * d + u * b + c * g + f * _) < 0 && ((a = -a), (d = -d), (b = -b), (g = -g), (_ = -_)), 1 - a > pe ? ((n = Math.acos(a)), (s = Math.sin(n)), (o = Math.sin((1 - r) * n) / s), (l = Math.sin(r * n) / s)) : ((o = 1 - r), (l = r)), (t[0] = o * h + l * d), (t[1] = o * u + l * b), (t[2] = o * c + l * g), (t[3] = o * f + l * _), t ); } var yr, Ar, Er, Cr, Sr, Mr, kr = ir, Fr = function (t, e, i, r, n) { return (t[0] = e), (t[1] = i), (t[2] = r), (t[3] = n), t; }, Rr = or; (yr = ve()), (Ar = we(1, 0, 0)), (Er = we(0, 1, 0)), (Cr = xr()), (Sr = xr()), (Mr = pr()); class Dr { constructor() { (this.a = -1), (this.b = null), (this.c = 0); } } class Ir { constructor() { (this.a = new Dr()), (this.b = new Dr()), (this.c = 0), (this.d = !1); } } class Ur { f() { var t = this; if (t.b) for (var e = 0; e < t.b.length; ++e) t.b[e] = null; return (t.a = null), (t.b = null), null; } k(t, e, i, r) { let n = this; if ((null == r && (r = this.g()), this.d >= 0 && (t = this.d < e.length ? e[this.d] : e[0]), 0 != n.c || n.b.length > 1)) { if (n.a.length > 1) { var a = n.a[n.a.length - 1]; a > 0 && t > a && this.d < 0 && (t %= a); for (var s = 0, o = n.a.length, l = 0; l < o; ++l) if (t >= n.a[l] && t < n.a[l + 1]) { s = l; break; } var h = n.a[s], u = n.a[s + 1], c = 0; return h != u && (c = (t - h) / (u - h)), 1 == n.c ? n.h(n.b[s], n.b[s + 1], c, r) : (r = n.i(r, n.b[s])); } return n.b.length > 0 ? (r = n.i(r, n.b[0])) : i; } return 0 == n.b.length ? r : (r = n.i(r, n.b[0])); } l(t) { var e, i = this; (i.c = t.getInt16()), (i.d = t.getInt16()), (i.e = t.getBool()); var r = t.getInt32(); for (i.a = new Array(r), e = 0; e < r; ++e) i.a[e] = t.getInt32(); var n = t.getInt32(); for (i.b = new Array(n), e = 0; e < n; ++e) i.b[e] = i.j(t); } } class Br extends Ur { constructor(t) { super(); (this.ba = ve()), this.l(t); } g() { return ve(); } h(t, e, i, r) { return ze(r, t, e, i); } i(t, e) { return ye(t, e), t; } j(t) { return Ae(ve(), t.getFloat(), t.getFloat(), t.getFloat()); } } class Pr extends Ur { constructor(t) { super(); this.l(t), (this.ba = xr()); } g() { return xr(); } h(t, e, i, r) { return wr(r, t, e, i); } i(t, e) { return kr(t, e), t; } j(t) { return Fr(xr(), -t.getFloat(), -t.getFloat(), -t.getFloat(), t.getFloat()); } } class zr extends Ur { constructor(t) { super(); this.l(t); } j(t) { return t.getUint16(); } g() { return 0; } h(t, e, i, r) { return t + (e - t) * i; } i(t, e) { return e; } } class Or extends zr { j(t) { return t.getFloat(); } } class Nr extends zr { j(t) { return t.getUint8(); } } class Lr { d() { for (var t = this, e = 0; e < t.b.length; ++e) t.b[e] = null; return (t.a = null), (t.b = null), (t.c = null), null; } i(t, e, i, r) { let n = this; i || (i = this.e()); let a = r || n.b; if (n.b.length > 1 && n.a.length > 1) { var s = n.a[n.a.length - 1]; s > 0 && t > s && (t %= s); for (var o = 0, l = n.a.length, h = 0; h < l - 1; ++h) if (t > n.a[h] && t <= n.a[h + 1]) { o = h; break; } var u = n.a[o], c = n.a[o + 1], f = 0; return u != c && (f = (t - u) / (c - u)), n.f(a[o], a[o + 1], f, i); } return a.length > 0 ? (i = n.g(i, a[0])) : e; } j(t) { var e, i = this, r = t.getInt32(); for (i.a = new Array(r), e = 0; e < r; ++e) i.a[e] = t.getInt16() / 32767; var n = t.getInt32(); for (i.b = new Array(n), e = 0; e < n; ++e) i.b[e] = i.h(t); } } class Hr extends Lr { constructor(t) { super(); (this.ba = fr()), this.j(t); } e() { return fr(); } f(t, e, i, r) { return (n = r), (s = e), (o = i), (l = (a = t)[0]), (h = a[1]), (n[0] = l + o * (s[0] - l)), (n[1] = h + o * (s[1] - h)), n; var n, a, s, o, l, h; } g(t, e) { var i, r; return (r = e), ((i = t)[0] = r[0]), (i[1] = r[1]), t; } h(t) { return br(fr(), t.getFloat(), t.getFloat()); } } class Vr extends Lr { constructor(t) { super(); this.j(t); } e() { return ve(); } f(t, e, i, r) { return ze(r, t, e, i); } g(t, e) { return ye(t, e), t; } h(t) { return Ae(ve(), t.getFloat(), t.getFloat(), t.getFloat()); } } class jr extends Lr { constructor(t) { super(); this.j(t); } e() { return 0; } f(t, e, i, r) { return t + (e - t) * i; } g(t, e) { return t; } h(t) { return t.getUint16(); } } class Gr { constructor(t, e) { this.b(t, e); } b(t, e) { var i = t.getInt32(); this.a = new Array(i); for (let r = 0; r < i; ++r) this.a[r] = new e(t); } c(t) { return !(!this.a || 0 == this.a.length) && (t >= this.a.length && (t = 0), this.a[t].e); } d(t, e, i, r) { if (!this.a || 0 == this.a.length) return i; let n = t.a.a; n >= this.a.length && (n = 0); let a = this.a[n].k(t.a.c, e, i, r); if (t.c > 0 && t.c < 1) { let n = this.a[0].g(), s = t.b.a; s >= this.a.length && (s = 0); let o = this.a[s].k(t.b.c, e, i, n); o || (o = n), (n = this.a[0].g()), (a = this.a[0].h(o, a, t.c, n)), r && this.a[0].i(r, n); } return a; } e() { if (this.a && 0 != this.a.length) { for (var t = 0; t < this.a.length; ++t) this.a[t].f(), (this.a[t] = null); return null; } } } function Xr(t, e) { return er(t[4 * e + 0], t[4 * e + 1], t[4 * e + 2], 0); } function qr(t, e, i) { for (let r = 0; r < 4; r++) t[4 * e + r] = i[r]; } const Wr = class { constructor(t, e, i) { (this.t = null), (this.u = null), (this.v = null); var r = this; (r.a = t), (r.b = e), (r.c = i.getInt32()), (r.d = i.getUint32()), (r.e = i.getInt16()), (r.f = i.getUint16()), (r.g = i.getUint32()), (r.h = we(i.getFloat(), i.getFloat(), i.getFloat())), (r.i = new Gr(i, Br)), (r.j = new Gr(i, Pr)), (r.k = new Gr(i, Br)), (r.l = ve()), (r.m = je()), (r.n = ve()), (r.o = xr()), (r.p = je()), (r.q = !1), (r.r = !1), (r.s = !1); } y() { var t = this; (t.a = null), (t.h = null), (t.l = null), (t.m = null), (t.n = null), (t.o = null), (t.p = null), t.i.e(), t.j.e(), t.k.e(), (t.i = null), (t.j = null), (t.k = null); } z() { this.q = !0; for (var t = 0; t < 16; ++t) this.m[t] = 0; } A(t) { t ? (null == this.t && (this.t = new Ir()), this.a.bt(t, this.t)) : (this.t = null); let e = this.a.ai[this.b]; for (let i = 0; i < e.length; i++) this.a.ap[e[i]].A(t); } B(t) { t ? (null == this.u && (this.u = new Ir()), this.a.bt(t, this.u)) : (this.u = null); let e = this.a.ai[this.b]; for (let i = 0; i < e.length; i++) this.a.ap[e[i]].B(t); } C(t) { var e = this; if (e.q) return void e.z(); if ((null != this.t && this.a.bX(this.t, t), e.r || e.s)) return; if (((e.r = !0), !e.a)) return; qe(e.m); var i = e.a.R; if (!i) return; let r = je(); if ((Ye(r, r, this.a.aS.viewMatrix), Ye(r, r, this.a.U), Ye(e.m, e.m, r), e.e > -1)) { e.a.ap[e.e].C(t); let i = je(); if ((Ge(i, e.a.ap[e.e].m), Ye(i, r, i), 1 & e.d || 2 & e.d || 4 & e.d)) { if (4 & e.d && 2 & e.d) qr(i, 0, Xr(r, 0)), qr(i, 1, Xr(r, 1)), qr(i, 2, Xr(r, 2)); else if (4 & e.d) { { let t = Xr(r, 0), e = sr(t); ar(t, t, sr(Xr(i, 0)) / e), qr(i, 0, t); } { let t = Xr(r, 1), e = sr(t); ar(t, t, sr(Xr(i, 1)) / e), qr(i, 1, t); } { let t = Xr(r, 2), e = sr(t); ar(t, t, sr(Xr(i, 2)) / e), qr(i, 2, t); } } else if (2 & e.d) { { let t = Xr(r, 0); ar(t, t, 1 / sr(Xr(i, 0))), ar(t, t, sr(Xr(r, 0))), qr(i, 0, t); } { let t = Xr(r, 1); ar(t, t, 1 / sr(Xr(i, 1))), ar(t, t, sr(Xr(r, 1))), qr(i, 1, t); } { let t = Xr(r, 2); ar(t, t, 1 / sr(Xr(i, 2))), ar(t, t, sr(Xr(r, 2))), qr(i, 2, t); } } if (1 & e.d) qr(i, 3, Xr(r, 3)); else { let t = er(e.h[0], e.h[1], e.h[2], 1), n = Qi(); ir(n, t), (n[3] = 0); let a = Qi(), s = Qi(); lr(a, t, e.a.ap[e.e].m), lr(a, a, r), lr(s, n, i), nr(a, a, s), (a[3] = 1), qr(i, 3, a); } } let n = je(); We(n, r), Ye(i, n, i), Ye(e.m, e.m, i); } let n = null; if (null != this.t) { let t = this.D(this.t); this.a.S || (this.w = t), (n = this.a.S ? this.w : t); } else { let t = this.D(i); this.a.S || (this.w = t), (n = this.a.S ? this.w : t); } let a = null; if (null != this.u) { let t = this.D(this.u); this.a.S || (this.x = t), (a = this.a.S ? this.x : t); } let s = null != n || null != a, o = je(); s && (null != n && Ye(o, o, n), null != a && Ye(o, o, a)), null != this.v && (Ze(o, o, this.h), Ye(o, o, this.v), Ze(o, o, Ie(this.n, this.h))), Ye(e.m, e.m, o); let l = 120 & e.d; if (l) { let t = je(); Ge(t, e.m); let i = e.m, r = ve(); ri(r, e.m); let n = Qi(); if (16 == l) { let t = Xr(e.m, 0); ar(t, t, 1 / Te(t)), qr(e.m, 0, t); let r = er(i[4], -i[0], 0, 0); qr(i, 1, or(r, r)), Pe(n, r, t), (n[3] = 0), qr(i, 2, n); } else if (l > 16) { if (32 == l) { let t = Xr(i, 1); ar(t, t, 1 / sr(t)), qr(e.m, 1, t); let r = er(-i[5], i[1], 0, 0); qr(i, 0, or(r, r)), (n[3] = 0), qr(i, 2, n); } else if (64 == l) { let t = Xr(i, 2); or(t, t), qr(i, 2, t); let e = er(t[1], -t[0], 0, 0); or(e, e), qr(i, 1, e), Pe(n, t, e), (n[3] = 0), qr(i, 0, n); } } else if (8 == l) { let t = this.a.h; if (s) { let e = Xr(o, 0); (e = er(e[1], e[2], -e[0], 0)), or(e, e), qr(i, 0, e); let r = Xr(o, 1); (r = er(t ? -r[1] : r[1], t ? -r[2] : r[2], t ? r[0] : -r[0], 0)), or(r, r), qr(i, 1, r); let n = Xr(o, 2); (n = er(n[1], n[2], -n[0], 0)), or(n, n), qr(i, 2, n); } else { qr(i, 0, er(0, 0, -1, 0)), qr(i, 1, er(t ? -1 : 1, 0, 0, 0)), qr(i, 2, er(0, 1, 0, 0)); } } let a = er(this.h[0], this.h[1], this.h[2], 1), h = er(this.h[0], this.h[1], this.h[2], 0), u = Xr(i, 0), c = Xr(i, 1), f = Xr(i, 2); ar(u, u, r[0]), ar(c, c, r[1]), ar(f, f, r[2]), qr(i, 0, u), qr(i, 1, c), qr(i, 2, f), lr(a, a, t), lr(h, h, i); let d = Qi(); nr(d, a, h), (d[3] = 1), qr(i, 3, d); } We(r, r), Ye(e.m, r, e.m), Oe(e.l, e.h, e.m); } D(t) { var e = this.i.c(t.a.a), i = this.j.c(t.a.a), r = this.k.c(t.a.a); if (0 != (640 & this.d)) { let w = je(); return ( qe(w), Ze(w, w, this.h), e && ((this.n = this.i.d(t, this.a.aX)), Ze(w, w, this.n)), i && ((this.o = this.j.d(t, this.a.aX, xr())), (n = this.p), (a = this.o), (s = a[0]), (o = a[1]), (l = a[2]), (h = a[3]), (d = s * (u = s + s)), (b = o * u), (g = o * (c = o + o)), (_ = l * u), (p = l * c), (m = l * (f = l + l)), (v = h * u), (x = h * c), (T = h * f), (n[0] = 1 - g - m), (n[1] = b + T), (n[2] = _ - x), (n[3] = 0), (n[4] = b - T), (n[5] = 1 - d - m), (n[6] = p + v), (n[7] = 0), (n[8] = _ + x), (n[9] = p - v), (n[10] = 1 - d - g), (n[11] = 0), (n[12] = 0), (n[13] = 0), (n[14] = 0), (n[15] = 1), Ye(w, w, this.p)), r && ((this.n = this.k.d(t, this.a.aX)), Je(w, w, this.n)), Ze(w, w, Ie(this.n, this.h)), w ); } var n, a, s, o, l, h, u, c, f, d, b, g, _, p, m, v, x, T; return null; } }; const Yr = class { constructor(t) { var e = this; (e.a = t.getUint16()), (e.b = t.getUint16()), (e.c = t.getUint16()), (e.d = t.getUint16()), (e.e = t.getUint16() + 65536 * e.b), (e.f = t.getUint16()), (e.g = t.getUint16()), (e.h = we(t.getFloat(), t.getFloat(), t.getFloat())), (e.i = we(t.getFloat(), t.getFloat(), t.getFloat())), (e.j = t.getFloat()); } k() { (this.h = null), (this.i = null); } }; var Zr = i(591); const Jr = class { constructor(t) { (this.a = t.getUint16()), (this.b = t.getUint16()); } static c(t) { (t.E = !1), t.o.av && t.g < t.o.av.length ? (t.r = t.o.av[t.g]) : (t.r = { a: 0, b: 0 }), (t.x = 0 != (1 & t.r.a)), (t.y = 0 == (4 & t.r.a)), (t.z = 0 != (16 & t.r.a)); } }; class Kr { static a(t) { const e = 32767 & t; return e < $r.length ? $r[e] : (WH.debug('Unknown shader effect:', e), ['PS_Combiners_Opaque', 'VS_Diffuse_T1']); } static b(t, e) { var i = ''; if (-1e3 == t && 3 == e) return 'Skin'; if (32768 & t) return Kr.a(t)[0]; if (1 == e) i = 112 & t ? 'PS_Combiners_Mod' : 'PS_Combiners_Opaque'; else { i = (112 & t ? 'PS_Combiners_Mod' : 'PS_Combiners_Opaque') + '_' + (112 & t ? ['Opaque', 'Mod', 'Mod', 'Add', 'Mod2x', 'Mod', 'Mod2xNA', 'AddNA'] : ['Opaque', 'Mod', 'Mod', 'AddAlpha', 'Mod2x', 'Mod', 'Mod2xNA', 'AddAlpha'])[7 & t]; } return i; } static c(t, e) { var i = ''; if (-1e3 == t && 3 == e) i = 'T1_T1_T1'; else { if (32768 & t) return Kr.a(t)[1]; i = 1 == e ? 128 & t ? 'Env' : 16384 & t ? 'T2' : 'T1' : 128 & t ? 8 & t ? 'Env_Env' : 'Env_T1' : 8 & t ? 'T1_Env' : 16384 & t ? 'T1_T2' : 'T1_T1'; } return 'VS_Diffuse_' + i; } static d(t, e, i) { var r = Kr.b(t, e), n = Kr.c(t, e), a = 'Wow.' + n + '_' + r; if (ge._GetProgram(a)) return { name: a }; var s = { shaders: [Kr.f(n), Kr.g(r, i)], attributes: { position: 'aPosition', normal: 'aNormal', texcoord0: 'aTexCoord0', texcoord1: 'aTexCoord1' }, }; return ge.RegisterProgram(a, s), { name: a }; } static e(t) { var e = {}, i = { texcoord1: function (t, e) { t.INPUT_TEXCOORD1 = 'aTexCoord' + e; }, }; for (var r in t.options) { var n = t.options[r]; i[r](e, n); } return { name: 'Wow.' + t.name, config: e }; } static f(t) { var e = ''; if ( ((e += 'vTexCoord1 = (uTextureMatrix1 * vec4(aTexCoord0, 0, 1)).st;\n'), (e += 'vTexCoord2 = (uTextureMatrix2 * vec4(aTexCoord1, 0, 1)).st;\n'), 'VS' === t.substr(0, 2)) ) { var i = (t = t.substr(3)).split('_'), r = i[0]; if ('Diffuse' === r || 'Color' === r) { (e = ''), i.splice(0, 1); var n = { T1: ['uTextureMatrix1', 'aTexCoord0'], T2: ['uTextureMatrix2', 'aTexCoord1'], T3: ['', 'aTexCoord2'], Env: ['', 'texEnv'], }, a = 1; for (var s in i) n[i[s]] ? (n[i[s]][0] && 'texEnv' != n[i[s]][1] ? (e += 'vTexCoord' + a + ' = (' + n[i[s]][0] + ' * vec4(' + n[i[s]][1] + ', 0, 1)).st;\n') : 'texEnv' == n[i[s]][1] ? (e += 'vTexCoord' + a + ' = texEnv;\n') : (e += 'vTexCoord' + a + ' = (uTextureMatrix' + a + ' * vec4(' + n[i[s]][1] + ', 0, 1)).st;\n'), a++) : WH.debug('Missing vertex shader def?', t); } } return ( ' attribute vec3 aPosition;\n attribute vec3 aNormal;\n attribute vec2 aTexCoord0;\n attribute vec2 aTexCoord1;\n attribute vec3 aColor;\n \n varying vec3 vPosition;\n varying vec3 vNormal;\n varying vec2 vTexCoord1;\n varying vec2 vTexCoord2;\n varying vec2 vTexCoord3;\n varying vec2 vTexCoord4;\n \n uniform mat4 uModelMatrix;\n uniform mat4 uPanningMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjMatrix;\n uniform mat4 uTextureMatrix1;\n uniform mat4 uTextureMatrix2;\n uniform mat4 uTextureMatrix3;\n uniform mat4 uTextureMatrix4;\n uniform vec3 uCameraPos;\n uniform bool uHasTexture1;\n uniform bool uHasTexture2;\n uniform bool uHasTexture3;\n uniform bool uHasTexture4;\n \n vec2 sphereMap(vec3 vertex, vec3 normal)\n {\n vec3 normPos = -(normalize(vertex.xyz));\n vec3 temp = (normPos - (normal * (2.0 * dot(normPos, normal))));\n temp = vec3(temp.x, temp.y, temp.z + 1.0);\n vec2 texCoord = ((normalize(temp).xy * 0.5) + vec2(0.5));\n return texCoord;\n }\n void main(void) {\n vec4 pos = uViewMatrix * uModelMatrix * vec4(aPosition, 1);\n vPosition = pos.rgb;\n vNormal = normalize(mat3(uViewMatrix * uModelMatrix) * aNormal);\n vec2 texEnv = sphereMap(pos.xyz,vNormal.xyz);\n gl_Position = uProjMatrix * uViewMatrix * uModelMatrix * vec4(aPosition, 1);\n \n ' + e + '\n vNormal = mat3(uViewMatrix * uModelMatrix) * aNormal; }' ); } static g(t, e) { var i = Qr[t]; i || (WH.debug('Missing pixel shader def', t), (i = Qr[(t = 'PS_Combiners_Opaque_Mod')])); for (var r = '\t\t' + i.slice(1, i.length).join('\n\t\t'), n = 0; n < i[0]; n++) { var a = n + 1; r = 'vec4 tex' + n + ' = texture2D(uTexture' + a + ', vTexCoord' + a + '.st);\n' + r; } return ( ' precision mediump float; \n varying vec3 vPosition;\n varying vec3 vNormal;\n varying vec2 vTexCoord1;\n varying vec2 vTexCoord2;\n varying vec2 vTexCoord3;\n varying vec2 vTexCoord4;\n \n uniform bool uHasTexture1;\n uniform bool uHasTexture2;\n uniform bool uHasTexture3;\n uniform bool uHasTexture4;\n uniform bool uHasAlpha;\n uniform bool uHasSpecEmiss;\n uniform bool uHasEmissiveGlowing;\n uniform int uBlendMode;\n uniform bool uUnlit;\n uniform vec4 uColor;\n uniform vec4 uAmbientColor;\n uniform vec4 uDiffuseColor;\n uniform vec4 uPrimaryColor;\n uniform vec4 uSecondaryColor;\n uniform vec3 uLightDir1;\n uniform vec3 uLightDir2;\n uniform vec3 uLightDir3;\n uniform sampler2D uTexture1;\n uniform sampler2D uTexture2;\n uniform sampler2D uTexture3;\n uniform sampler2D uTexture4;\n uniform sampler2D uAlpha;\n uniform vec4 uTexSampleAlpha;\n \n void main(void) {\n vec4 _output = vec4(1.0);\n vec4 _input = uColor;\n vec3 _specular = vec3(0.0); ' + r + '\n \n if (uBlendMode == 13) {\n _output.a = _output.a * _input.a;\n } else if (uBlendMode == 1) {\n if (_output.a < (128.0/255.0))\n discard;\n _output.a = _input.a;\n } else if (uBlendMode == 0) {\n _output.a = _input.a;\n } else {\n _output.a = _output.a * _input.a;\n }\n // if (uBlendMode > 1) {\n // if (_output.a < (1.0/255.0)) {\n // discard;\n // }\n // }\n if (!uUnlit) { vec4 litColor = uAmbientColor; vec3 normal = normalize(vNormal); float dp = max(0.0, dot(normal, uLightDir1)); litColor += uPrimaryColor * dp; dp = max(0.0, dot(normal, uLightDir2)); litColor += uSecondaryColor * dp; dp = max(0.0, dot(normal, uLightDir3)); litColor += uSecondaryColor * dp; litColor = clamp(litColor, vec4(0,0,0,0), vec4(1,1,1,1)); _output *= (litColor * uDiffuseColor); } _output += vec4(_specular, 0.0); gl_FragColor = _output.xyzw;\n }' ); } } const $r = [ ['PS_Combiners_Opaque_Mod2xNA_Alpha', 'VS_Diffuse_T1_Env', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Opaque_AddAlpha', 'VS_Diffuse_T1_Env', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Opaque_AddAlpha_Alpha', 'VS_Diffuse_T1_Env', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Opaque_Mod2xNA_Alpha_Add', 'VS_Diffuse_T1_Env_T1', 'HS_T1_T2_T3', 'DS_T1_T2_T3'], ['PS_Combiners_Mod_AddAlpha', 'VS_Diffuse_T1_Env', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Opaque_AddAlpha', 'VS_Diffuse_T1_T1', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Mod_AddAlpha', 'VS_Diffuse_T1_T1', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Mod_AddAlpha_Alpha', 'VS_Diffuse_T1_Env', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Opaque_Alpha_Alpha', 'VS_Diffuse_T1_Env', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Opaque_Mod2xNA_Alpha_3s', 'VS_Diffuse_T1_Env_T1', 'HS_T1_T2_T3', 'DS_T1_T2_T3'], ['PS_Combiners_Opaque_AddAlpha_Wgt', 'VS_Diffuse_T1_T1', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Mod_Add_Alpha', 'VS_Diffuse_T1_Env', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Opaque_ModNA_Alpha', 'VS_Diffuse_T1_Env', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Mod_AddAlpha_Wgt', 'VS_Diffuse_T1_Env', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Mod_AddAlpha_Wgt', 'VS_Diffuse_T1_T1', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Opaque_AddAlpha_Wgt', 'VS_Diffuse_T1_T2', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Opaque_Mod_Add_Wgt', 'VS_Diffuse_T1_Env', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Opaque_Mod2xNA_Alpha_UnshAlpha', 'VS_Diffuse_T1_Env_T1', 'HS_T1_T2_T3', 'DS_T1_T2_T3'], ['PS_Combiners_Mod_Dual_Crossfade', 'VS_Diffuse_T1', 'HS_T1', 'DS_T1'], ['PS_Combiners_Mod_Depth', 'VS_Diffuse_EdgeFade_T1', 'HS_T1', 'DS_T1'], ['PS_Combiners_Opaque_Mod2xNA_Alpha_Alpha', 'VS_Diffuse_T1_Env_T2', 'HS_T1_T2_T3', 'DS_T1_T2_T3'], ['PS_Combiners_Mod_Mod', 'VS_Diffuse_EdgeFade_T1_T2', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Mod_Masked_Dual_Crossfade', 'VS_Diffuse_T1_T2', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Opaque_Alpha', 'VS_Diffuse_T1_T1', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Opaque_Mod2xNA_Alpha_UnshAlpha', 'VS_Diffuse_T1_Env_T2', 'HS_T1_T2_T3', 'DS_T1_T2_T3'], ['PS_Combiners_Mod_Depth', 'VS_Diffuse_EdgeFade_Env', 'HS_T1', 'DS_T1'], ['PS_Guild', 'VS_Diffuse_T1_T2_T1', 'HS_T1_T2_T3', 'DS_T1_T2'], ['PS_Guild_NoBorder', 'VS_Diffuse_T1_T2', 'HS_T1_T2', 'DS_T1_T2_T3'], ['PS_Guild_Opaque', 'VS_Diffuse_T1_T2_T1', 'HS_T1_T2_T3', 'DS_T1_T2'], ['PS_Illum', 'VS_Diffuse_T1_T1', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Mod_Mod_Mod_Const', 'VS_Diffuse_T1_T2_T3', 'HS_T1_T2_T3', 'DS_T1_T2_T3'], ['PS_Combiners_Mod_Mod_Mod_Const', 'VS_Color_T1_T2_T3', 'HS_T1_T2_T3', 'DS_T1_T2_T3'], ['PS_Combiners_Opaque', 'VS_Diffuse_T1', 'HS_T1', 'DS_T1'], ['PS_Combiners_Mod_Mod2x', 'VS_Diffuse_EdgeFade_T1_T2', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Combiners_Mod', 'VS_Diffuse_EdgeFade_T1', 'HS_T1_T2', 'DS_T1_T2'], ['PS_Unknown_34821', 'VS_Diffuse_EdgeFade_T1_T2', 'HS_T1_T2', 'DS_T1_T2'], ], Qr = { PS_Combiners_Add: [1, '_output.rgb = _input.rgb + tex0.rgb;', '_output.a = _input.a + tex0.a;'], PS_Combiners_Decal: [1, '_output.rgb = mix(_input.rgb, tex0.rgb, _input.a);', '_output.a = _input.a;'], PS_Combiners_Fade: [1, '_output.rgb = mix(tex0.rgb, _input.rgb, _input.a);', '_output.a = _input.a;'], PS_Combiners_Mod: [1, '_output.rgb = _input.rgb * tex0.rgb;', '_output.a = tex0.a;'], PS_Combiners_Mod2x: [1, '_output.rgb = _input.rgb * tex0.rgb * 2.0;', '_output.a = tex0.a * 2.0;'], PS_Combiners_Opaque: [1, '_output.rgb = _input.rgb * tex0.rgb;', '_output.a = 1.0;'], PS_Combiners_Add_Add: [2, '_output.rgb = (_input.rgb + tex0.rgb) + tex1.rgb;', '_output.a = (_input.a + tex0.a) + tex1.a;'], PS_Combiners_Add_Mod: [2, '_output.rgb = (_input.rgb + tex0.rgb) * tex1.rgb;', '_output.a = (_input.a + tex0.a) * tex1.a;'], PS_Combiners_Add_Mod2x: [ 2, '_output.rgb = (_input.rgb + tex0.rgb) * tex1.rgb * 2.0;', '_output.a = (_input.a + tex0.a) * tex1.a * 2.0;', ], PS_Combiners_Add_Opaque: [2, '_output.rgb = (_input.rgb + tex0.rgb) * tex1.rgb;', '_output.a = _input.a + tex0.a;'], PS_Combiners_Mod_AddNA: [2, '_output.rgb = (_input.rgb * tex0.rgb);', '_output.a = tex0.a;', '_specular = tex1.rgb;'], PS_Combiners_Mod_Mod: [2, '_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb;', '_output.a = tex0.a * tex1.a;'], PS_Combiners_Mod_Mod2x: [2, '_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb * 2.0;', '_output.a = tex0.a * tex1.a * 2.0;'], PS_Combiners_Mod_Add: [2, '_output.rgb = (_input.rgb * tex0.rgb);', '_output.a = tex0.a + tex1.a;', '_specular = tex1.rgb;'], PS_Combiners_Mod_Mod2xNA: [2, '_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb * 2.0;', '_output.a = tex0.a;'], PS_Combiners_Mod_Opaque: [2, '_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb;', '_output.a = tex0.a;'], PS_Combiners_Mod2x_Add: [2, '_output.rgb = (_input.rgb * tex0.rgb) * 2.0 + tex1.rgb;', '_output.a = (tex0.a) * 2.0 + tex1.a;'], PS_Combiners_Mod2x_Mod2x: [2, '_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb * 4.0;', '_output.a = (tex0.a) * tex1.a * 4.0;'], PS_Combiners_Mod2x_Opaque: [2, '_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb * 2.0;', '_output.a = tex0.a * 2.0;'], PS_Combiners_Opaque_Add: [2, '_output.rgb = (_input.rgb * tex0.rgb) + tex1.rgb;', '_output.a = _input.a + tex1.a;'], PS_Combiners_Opaque_AddAlpha: [2, '_output.rgb = (_input.rgb * tex0.rgb);', '_specular = (tex1.rgb * tex1.a);'], PS_Combiners_Opaque_AddAlpha_Wgt: [ 2, '_output.rgb = (_input.rgb * tex0.rgb);', '_specular = (tex1.rgb * tex1.a) * uTexSampleAlpha.g;', ], PS_Combiners_Opaque_AddAlpha_Alpha: [ 2, '_output.rgb = (_input.rgb * tex0.rgb);', '_specular = (tex1.rgb * tex1.a * (1.0 - tex0.a));', ], PS_Combiners_Opaque_AddNA: [2, '_output.rgb = (_input.rgb * tex0.rgb) + tex1.rgb;', '_output.a = _input.a;'], PS_Combiners_Opaque_Mod: [2, '_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb;', '_output.a = tex1.a;'], PS_Combiners_Opaque_Mod2x: [2, '_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb * 2.0;', '_output.a = tex1.a * 2.0;'], PS_Combiners_Opaque_Mod2xNA: [2, '_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb * 2.0;', ''], PS_Combiners_Opaque_Mod2xNA_Alpha: [2, '_output.rgb = _input.rgb * mix(tex0.rgb * tex1.rgb * 2.0, tex0.rgb, vec3(tex0.a));', ''], PS_Combiners_Opaque_Opaque: [2, '_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb;', ''], PS_Combiners_Opaque_Mod2xNA_Alpha_Add: [ 3, '_output.rgb = _input.rgb * mix(tex0.rgb * tex1.rgb * 2.0, tex0.rgb, vec3(tex0.a));', '_specular = tex2.rgb * tex2.a * uTexSampleAlpha.b; ', ], PS_Combiners_Mod_Mod_Mod_Const: [3, '_output.rgb = _input.rgb * (tex0 * tex1 * tex2).rgb;', '_output.a = (tex0 * tex1 * tex2).a;'], PS_Combiners_Mod_AddAlpha: [2, '_output.rgb = (_input.rgb * tex0.rgb);', '_output.a = tex0.a;', '_specular = tex1.rgb * tex1.a;'], PS_Combiners_Mod_AddAlpha_Wgt: [ 2, '_output.rgb = (_input.rgb * tex0.rgb);', '_output.a = tex0.a;', '_specular = tex1.rgb * tex1.a * uTexSampleAlpha.g;', ], PS_Combiners_Mod_AddAlpha_Alpha: [ 2, '_output.rgb = _input.rgb * tex0.rgb;', '_output.a = (tex0.a + tex1.a * (0.3 * tex1.r + 0.59 * tex1.g + 0.11 * tex1.b));', '_specular = tex1.rgb * tex1.a * (1.0 - tex0.a);', ], PS_Combiners_Opaque_Mod_Add_Wgt: [ 2, '_output.rgb = _input.rgb * mix(tex0.rgb, tex1.rgb, vec3(tex1.a));', '_specular = (tex0.rgb * tex0.a) * uTexSampleAlpha.r;', ], PS_Guild: [ 3, '_output.rgb = _input.rgb * mix(tex0.rgb * mix(vec3(1.0, 1.0, 1.0), tex1.rgb * vec3(1.0, 1.0, 1.0), vec3(tex1.a)), tex2.rgb * vec3(1.0, 1.0, 1.0), vec3(tex2.a));', '_output.a = tex0.a;', ], PS_Guild_Opaque: [ 3, '_output.rgb = _input.rgb * mix(tex0.rgb * mix(vec3(1.0, 1.0, 1.0), tex1.rgb * vec3(1.0, 1.0, 1.0), vec3(tex1.a)), tex2.rgb * vec3(1.0, 1.0, 1.0), vec3(tex2.a));', '', ], PS_Guild_NoBorder: [ 2, '_output.rgb = _input.rgb * tex0.rgb * mix(vec3(1.0, 1.0, 1.0), tex1.rgb * vec3(1.0, 1.0, 1.0), vec3(tex1.a));', '_output.a = tex0.a;', ], PS_Combiners_Opaque_Alpha_Alpha: [ 2, '_output.rgb = _input.rgb * mix(mix(tex0.rgb, tex1.rgb, vec3(tex1.a)), tex0.rgb, vec3(tex0.a));', '', ], PS_Combiners_Opaque_Mod2xNA_Alpha_3s: [3, '_output.rgb = _input.rgb * mix(tex0.rgb * tex1.rgb * 2.0, tex2.rgb, vec3(tex2.a));'], PS_Combiners_Mod_Add_Alpha: [ 2, '_output.rgb = _input.rgb * tex0.rgb;', '_output.a = (tex0.a + tex1.a);', '_specular = tex1.rgb * (1.0 - tex0.a);', ], PS_Combiners_Opaque_ModNA_Alpha: [2, '_output.rgb = _input.rgb * mix(tex0.rgb * tex1.rgb, tex0.rgb, vec3(tex0.a));', ''], PS_Combiners_Opaque_Mod2xNA_Alpha_UnshAlpha: [ 3, 'float glowOpacity = clamp((tex2.a * vec4(1.0, 1.0, 1.0, 1.0).z), 0.0, 1.0); _output.rgb = _input.rgb * mix(tex0.rgb * tex1.rgb * 2.000000, tex0.rgb, vec3(tex0.a)) * (1.0 - glowOpacity);', '_specular = tex2.rgb * glowOpacity;', ], PS_Combiners_Opaque_Mod2xNA_Alpha_Alpha: [ 3, '_output.rgb = _input.rgb * mix(mix(tex0.rgb * tex1.rgb * 2.000000, tex2.rgb, vec3(tex2.a)), tex0.rgb, vec3(tex0.a));', '', ], PS_Combiners_Mod_Depth: [1, '_output.rgb = _input.rgb * tex0.rgb;', '_output.a = tex0.a;'], PS_Combiners_Opaque_Alpha: [2, '_output.rgb = _input.rgb * mix(tex0.rgb, tex1.rgb, vec3(tex1.a));', ''], Skin: [ 3, '//Fresnel Rim\r\nif (uHasSpecEmiss) {\r\n vec3 emissiveColor = tex2.rgb;\r\n vec3 emissiveTerm = tex2.rgb;\r\n if (uHasEmissiveGlowing) {\r\n vec3 eyeVec_120 = vPosition.xyz;\r\n vec3 t121 = -(eyeVec_120);\r\n vec2 term_126 = vec2(dot(t121, vNormal), dot(normalize(t121), (vNormal * vec3(0.0500000007, 0.0500000007, 1.0))));\r\n vec2 invTerm_128 = (vec2(1.0) - clamp(term_126, 0.0, 1.0));\r\n vec2 f_129 = (invTerm_128 * invTerm_128);\r\n float fresnel_rim_133 = pow((f_129.x + f_129.y), 0.600000024);\r\n vec3 t136 = (tex2.rgb /*+ ((vec3(0.0500000007, 0.0, 0.400000006) * 1.0) * fresnel_rim_133)*/);\r\n emissiveColor = vec3(t136.r, tex2.g, t136.b);\r\n\r\n float t267 = dot(normalize(vNormal), normalize(-(vPosition.xyz)));\r\n emissiveTerm = mix(vec3(0.0), 2.0*emissiveColor, vec3(pow(clamp(t267, 0.0, 1.0), (( 128.0 * (tex2.a)) + 9.99999975e-006))));\r\n }\r\n\r\n _output.rgb = _input.rgb * tex0.rgb + tex1.rgb + emissiveTerm.rgb;\r\n} else {\r\n _output.rgb = _input.rgb * tex0.rgb;\r\n}\r\n_output.a = tex0.a; //', ], PS_Combiners_Mod_Dual_Crossfade: [ 3, '_output.rgb = _input.rgb * mix(mix(tex0, texture2D(uTexture2,vTexCoord1), vec4(clamp(uTexSampleAlpha.g, 0.000000, 1.000000))), texture2D(uTexture3,vTexCoord1), vec4(clamp(uTexSampleAlpha.b, 0.000000, 1.000000))).rgb;', '_output.a = mix(mix(tex0, texture2D(uTexture2,vTexCoord1), vec4(clamp(uTexSampleAlpha.g, 0.000000, 1.000000))), texture2D(uTexture3,vTexCoord1), vec4(clamp(uTexSampleAlpha.b, 0.000000, 1.000000))).a;', ], PS_Combiners_Mod_Masked_Dual_Crossfade: [ 4, '_output.rgb = _input.rgb * mix(mix(tex0, texture2D(uTexture2,texCoord), vec4(clamp(uTexSampleAlpha.g, 0.000000, 1.000000))), texture2D(uTexture3,texCoord), vec4(clamp(uTexSampleAlpha.b, 0.000000, 1.000000))).rgb;', '_output.a = mix(mix(tex0, texture2D(uTexture2,texCoord), vec4(clamp(uTexSampleAlpha.g, 0.000000, 1.000000))), texture2D(uTexture3,texCoord), vec4(clamp(uTexSampleAlpha.b, 0.000000, 1.000000))).a * texture(uTexture4,texCoord2).a;', ], PS_Unknown_34821: [2, '_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb;', '_output.a = tex0.a * tex1.a;'], }, tn = Kr; const en = class { constructor() { (this.h = !1), (this.i = !0); } }, rn = [0, 1, 2, 10, 3, 4, 5, 13]; const nn = class { constructor(t) { (this.E = !1), (this.F = !1); var e = this; (e.a = t.getUint8()), (e.b = t.getInt8()), (e.c = t.getUint16()), (e.d = t.getUint16()), (e.e = t.getUint16()), (e.f = t.getInt16()), (e.g = t.getUint16()), (e.h = t.getUint16()), (e.i = t.getUint16()), (e.j = t.getInt16()), (e.k = t.getUint16()), (e.l = t.getInt16()), (e.m = t.getInt16()), (e.n = !0), (e.o = null), (e.p = null), (e.q = 0), (e.r = null), (e.s = []), (e.t = []), (e.u = new Array()), (e.v = null), (e.w = []), (e.x = !1), (e.y = !1), (e.z = !1), (e.A = Qi()), (e.B = ve()), (e.C = xr()); } K(t) { var e = this; (e.o = t), (e.p = t.as[e.d]), (e.q = e.p.a), Jr.c(e); let i = this.o.ax[e.j]; 1 == this.i && i > -1 && 1 == this.o.aw[i].c && ((this.c = -1e3), (this.i = 3)); const r = tn.d(e.c, e.i, e.r); e.H = r; for (let i = 0; i < e.i; i++) { if (e.j > -1 && e.j < t.ax.length) { let r = t.ax[e.j + i]; r > -1 && r < t.aw.length && e.s.splice(i, 0, t.aw[r]); } if (e.m > -1 && e.m < t.az.length) { let r = t.az[e.m + i]; r > -1 && t.ay && r < t.ay.length ? e.t.splice(i, 0, t.ay[r]) : e.t.splice(i, 0, null); } if (e.l > -1 && e.l < t.aF.length) { let r = t.aF[e.l + i]; r > -1 && r < t.aE.length ? e.w.splice(i, 0, t.aE[r]) : e.w.splice(i, 0, null); } } this.u = new Array(e.t.length); for (let t = 0; t < this.u.length; t++) this.u[t] = je(); e.E && ((e.s = e.s.reverse()), (e.t = e.t.reverse())), t.aD && e.f > -1 && e.f < t.aD.length && (e.v = t.aD[e.f]), (e.D = this.r.b > 1); } L() { const t = this, e = t.o.aS.context, i = ge.GetProgram(e, t.H.name, t.H.config); (t.G = i), (t.H = i.program), (t.I = i.uniforms); } M() { let t = er(this.p.i[0], this.p.i[1], this.p.i[2], 1), e = this.o.ap[this.p.g].m, i = je(); Ye(i, i, this.o.aW.uViewMatrix), Ye(i, i, this.o.U), Ye(i, i, e), lr(t, t, i), (t[3] = 0); let r = hr(t); if ((3 & this.a) > 0) { let e = Qi(); r > 0 ? ar(e, t, 1 / r) : ir(e, t), ar(e, e, Te(we(i[8], i[9], i[10])) * this.p.j), 1 & this.a ? nr(e, t, e) : rr(e, t, e), (r = sr(e)); } return r; } N(t) { const e = this, i = e.o, r = e.o.aS.context, n = e.o.R; if ((e.G || e.L(), !e.G.program)) return; if ( (this.J || ((this.J = new en()), (this.J.a = e.G), (this.J.b = Object.assign({}, i.aW))), (this.J.c = i.aU), (this.J.d = i.aV), (this.J.b = Object.assign({}, i.aW)), (e.A[0] = e.A[1] = e.A[2] = e.A[3] = 1), e.v && e.v.g(n, e.o.aX, e.A), e.w[0] && (e.A[3] *= e.w[0].d(n, e.o.aX)), e.A[3] <= 0.001) ) return; let a = e.r.b; const s = [0, 0, 0]; for (let t = 0; t < e.w.length; t++) { const i = e.w[t]; i && (s[t] = i.d(n, e.o.aX)); } (this.J.b.uColor = e.A), (this.J.b.uTexSampleAlpha = er(s[0], s[1], s[2], 0)), (this.J.b.uBlendMode = a), (this.J.b.uHasSpecEmiss = i.aJ && i.aJ.h), (this.J.b.uHasEmissiveGlowing = i.n == bi || i.n == gi), (this.J.e = rn[a]), (this.J.i = !this.o.aY), (this.J.b.uUnlit = e.x ? 1 : 0), (this.J.n = this.M()), (this.J.m = this.b), (this.J.o = this.h); const o = this.O(); let l = !0; for (const t in o) { const e = o[t], i = e.a && e.a.d; (l = l && (null == e.a || null != i)), i && (this.J.b[e.c] = i); } l && !e.F && (e.F = !0), e.t.forEach((t, i) => { if (!e.o.S && (qe(e.u[i]), e.t[i])) { let t = !1, r = !1; e.t[i].a && e.t[i].a.c(n.a.a) ? ((e.B = e.t[i].a.d(n, e.o.aX)), (r = !0)) : Ae(e.B, 0, 0, 0), e.t[i].b && e.t[i].b.c(n.a.a) ? ((e.C = e.t[i].b.d(n, e.o.aX)), (t = !0)) : Fr(e.C, 0, 0, 0, 1); let a, s = !1; if ( (e.t[i].c && e.t[i].c.c(n.a.a) && ((a = e.t[i].c.d(n, e.o.aX)), (s = !0)), qe(e.u[i]), Ze(e.u[i], e.u[i], we(0.5, 0.5, 0)), s && Je(e.u[i], e.u[i], a), t) ) { let t = je(); ei(t, e.C, [0, 0, 0]), Ye(e.u[i], e.u[i], t); } r && Ze(e.u[i], e.u[i], e.B), Ze(e.u[i], e.u[i], we(-0.5, -0.5, 0)); } this.J.b['uTextureMatrix' + (i + 1).toString()] = e.u[i]; }), (this.J.h = e.y), (this.J.f = !e.z), (this.J.j = r.TRIANGLES), (this.J.l = 2 * e.p.e), (this.J.k = e.p.f), t.push(this.J); } O() { let t = 0; const e = []; this.s.forEach((i, r) => { const n = r; let a = null; if (this.s[n]) if (this.s[0] && 1 == this.s[0].c && r > 0) 1 == r ? (a = this.o.aJ && this.o.aJ.b ? { d: this.o.aJ.b } : { d: this.o.aS.blackPixelTexture }) : 2 == r && (a = this.o.aJ && this.o.aJ.c ? { d: this.o.aJ.c } : { d: this.o.aS.blackPixelTexture }); else if (1 == this.s[n].c) this.o.aK ? (a = this.o.aK.a) : this.o.aJ && this.o.aJ.a && (a = { d: this.o.aJ.a }); else if (this.s[n].f) a = this.s[n].f; else if ( (((this.o.a.type < 8 || this.o.a.type > 32) && 2 == this.s[n].c) || [2, 11, 12, 13].includes(this.s[n].c)) && this.o.B[this.s[n].b] ) a = this.o.B[this.s[n].b]; else if (-1 != this.s[n].c && this.o.B[this.s[n].c]) a = this.o.B[this.s[n].c]; else if (-1 != this.s[n].c && this.o.C[this.s[n].c][n]) a = this.o.C[this.s[n].c][n].a; else if (8 == this.s[n].c && this.o.v) a = this.o.v.C[this.s[n].c][0].a; else if (!this.s[n].e && this.j + t < this.o.aw.length) { let e = this.o.aw[this.j + t]; e && e.f && (a = e.f); } else this.s[n].g || WH.debug("can't find texture for material", n, 'type', this.s[n].c), (this.s[n].g = !0); (e[n] = a), t++; }); const i = {}; for (let r = 0; r < t; r++) i['Texture' + (r + 1)] = { a: e[r], b: r, c: 'uTexture' + (r + 1), d: 'TEXTURE' + r }; return i; } get show() { return this.n; } set show(t) { this.n = t; } get meshId() { return this.q; } P() { (this.o = null), (this.p = null), (this.r = null), (this.s = null), (this.t = null), (this.v = null), (this.w = null), (this.A = null), (this.u = null), (this.B = null), (this.C = null); } }; const an = class { constructor(t, e, i) { var r = this; t.aS.context; 0 == i && console.log('Texture file is 0'), (r.b = t), (r.c = t.k.contentPath + 'textures/' + i + '.png'), (r.d = null), (r.f = !1), (function (t, e) { (t.a = new Image()), (t.a.crossOrigin = ''), (t.a.onload = function () { t.i(); }), (t.a.onerror = function () { t.a = null; }), (t.a.src = t.c); })(r); } g() { return this.f; } h() { var t = this; if (t.b) { var e = t.b.aS.context; t.d && e.deleteTexture(t.d), (t.d = null), (t.b = null); } } i() { var t = this; if (t.b) { var e = t.b.aS.context; (t.d = e.createTexture()), e.bindTexture(e.TEXTURE_2D, t.d), e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1), e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, e.RGBA, e.UNSIGNED_BYTE, t.a), r(t.a.width) && r(t.a.height) ? e.generateMipmap(e.TEXTURE_2D) : (e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, e.LINEAR)); var i = t.b.aS.aniFilterExt; i && e.texParameteri(e.TEXTURE_2D, i.TEXTURE_MAX_ANISOTROPY_EXT, t.b.aS.aniFilterMax), (t.f = !0); } function r(t) { return 0 == (t & (t - 1)); } } }; const sn = class { constructor(t, e, i) { var r = this; (r.a = t), (r.b = e), (r.c = i.getInt32()), (r.d = i.getUint32()), (r.e = i.getUint32()), (r.f = null), (r.g = !1), r.i(); } h() { var t = this; (t.a = null), t.f && t.f.h(), (t.f = null); } i() { var t = this; 0 != t.e && (t.f = new an(t.a, 0, t.e)); } }; const on = class { constructor(t) { (this.a = new Gr(t, Br)), (this.b = new Gr(t, Pr)), (this.c = new Gr(t, Br)); } d() { var t = this; t.a && (t.a.e(), (t.a = null)), t.b && (t.b.e(), (t.b = null)), t.c && (t.c.e(), (t.c = null)); } }; const ln = class { constructor(t) { var e = this; (e.a = t.getInt32()), (e.b = t.getInt32()), (e.c = we(t.getFloat(), t.getFloat(), t.getFloat())), (e.d = -1); } e() { this.c = null; } }; const hn = class { constructor(t) { (this.a = new Gr(t, Br)), (this.b = new Gr(t, zr)); } c() { var t = this; t.a && t.a.e(), t.b && t.b.e(); } d(t) { return !!this.a && this.a.c(t); } e(t) { return !!this.b && this.b.c(t); } f(t) { return this.d(t) || this.e(t); } g(t, e, i) { var r = this; i ? (i[0] = i[1] = i[2] = i[3] = 1) : (i = er(1, 1, 1, 1)); let n = we(1, 1, 1); return ( r.d(t.a.a) && r.a.d(t, e, n, n), r.e(t.a.a) && (i[3] = r.b.d(t, e, i[3]) / 32767), (i[0] = n[0]), (i[1] = n[1]), (i[2] = n[2]), i ); } }; const un = class { constructor(t) { this.a = new Gr(t, zr); } b() { this.a.e(), (this.a = null); } c(t) { return this.a.c(t); } d(t, e) { var i = 1; this.c(t.a.a) && (i = this.a.d(t, e, i) / 32767); return i > 1 ? (i = 1) : i < 0 && (i = 0), i; } }; const cn = class { constructor() { (this.a = 0), (this.b = 0), (this.c = -1), (this.d = null), (this.e = null); } }; class fn extends cn {} const dn = class { constructor(t, e) { (this.d = !1), (this.a = t), (this.b = e), (this.c = new Array(e.length)); } e(t) { for (let e = 0; e < this.b.length; e++) this.c[e] && this.c[e].e && this.c[e].e.setAnimation(t); } f(t) { this.d = t; } g(t) { for (let e = 0; e < this.b.length; e++) switch (this.b[e].EffectType) { case 1: if (1 == this.b[e].ProcEffectType) { let t = this.b[e].Value[0]; this.a.V = er(((t >> 16) & 255) / 255, ((t >> 8) & 255) / 255, (255 & t) / 255, this.a.V[3]); } else if (14 == this.b[e].ProcEffectType) { let t = Math.min(Math.max(this.b[e].Value[0], 0), 1); this.a.V[3] = t; } else if (22 == this.b[e].ProcEffectType) { let t = this.b[e].Value[3]; this.a.V = er(((t >> 16) & 255) / 255, ((t >> 8) & 255) / 255, (255 & t) / 255, this.a.V[3]); } break; case 2: this.h(e, t); } } h(t, e) { if (!this.a) return; if (!this.a.d) return; if (!this.c[t]) { let e = this.b[t].AttachmentID; this.b[t].Positioner > -1 && (e = this.b[t].Positioner), e < 0 && (e = 19); let i = this.a.bV(e); if (((this.c[t] = new fn()), (this.c[t].d = i), (this.c[t].c = i ? i.b : -1), 0 == this.b[t].ModelType)) { let e = { type: hi.PATH, id: this.b[t].Model, parent: this.a, shoulder: -1 }; this.c[t].e = new $n(this.a.aS, this.a.k, e, 0, !1, !0, !1); } else if (1 == this.b[t].ModelType) { let e = this.a.n > 0 ? this.a.n : 1, i = -1 != this.a.o ? this.a.o : 0; (this.a.n = e), (this.a.o = i), (this.c[t].ba = new _n(this.a, this.b[t].InvType, this.b[t].Model, e, i)); } else if (2 == this.b[t].ModelType) { let e = { type: hi.NPC, id: this.b[t].Model, parent: this.a, shoulder: -1 }; this.c[t].e = new $n(this.a.aS, this.a.k, e, 0, !1, !0, !1); } } if (!(0 != this.b[t].ModelType || (this.c[t].e && this.c[t].e.d))) return; if (!(1 != this.b[t].ModelType || (this.c[t].ba && this.c[t].ba.m))) return; if (!(2 != this.b[t].ModelType || (this.c[t].e && this.c[t].e.d))) return; let i = je(); Qe(i, i, -this.b[t].Yaw), $e(i, i, this.b[t].Pitch), Ke(i, i, this.b[t].Roll), Je(i, i, [this.b[t].Scale1, this.b[t].Scale1, this.b[t].Scale1]), Je(i, i, [this.b[t].Scale2, this.b[t].Scale2, this.b[t].Scale2]); let r = je(); if (this.c[t].d) { let e = this.c[t].d.c; Ye(r, r, this.a.ap[this.c[t].c].m), Ze(r, r, we(e[0], e[1], e[2])); } if ((Ze(r, r, we(this.b[t].Offset[0], -this.b[t].Offset[1], this.b[t].Offset[2])), Ye(r, r, i), 0 == this.b[t].ModelType)) { let i = this.c[t].e; i.setAnimPaused(this.d), i.bs(this.a.U, r, null, null), i.bY(e); } else if (1 == this.b[t].ModelType) for (let i = 0; i < this.c[t].ba.i.length; i++) { let n = this.c[t].ba.i[i].e; n.d && (n.setAnimPaused(this.d), n.bs(this.a.U, r, null, null), n.bY(e)); } else if (2 == this.b[t].ModelType) { let i = this.c[t].e; i.setAnimPaused(this.d), i.bs(this.a.U, r, null, null), i.bY(e); } } }; const bn = class { constructor(t, e, i) { var r = this; (r.a = t), (r.d = e), (r.b = []), (r.c = !1), (r.f = []), i && r.h(i); } g() { var t = this; if (((t.a = null), t.b)) { for (var e = 0; e < t.b.length; ++e) { var i = t.b[e]; i && (i.e && i.e.ba(), (i.e = null), (i.d = null), (t.b[e] = null)); } t.b = null; } } h(t) { var e = this; e.e = t; var i = e.a.k.contentPath + 'meta/itemvisual/' + e.e + '.json'; $.getJSON(i, function (t) { e.i(t); }); } i(t) { var e = this; if (((e.b = new Array(7)), t.ItemEffects)) for (let r = 0; r < t.ItemEffects.length; ++r) { let n = t.ItemEffects[r]; if (-1 == n.SubClass || this.d == n.SubClass) { if (n.Model) { e.b[n.Slot - 1] = new cn(); var i = { type: hi.PATH, id: n.Model, parent: e.a, shoulder: -1 }; e.b[n.Slot - 1].e = new $n(e.a.aS, e.a.k, i, 0, !1, !0, !1); } n.kit && (this.a.E, this.a.E.push(new dn(this.a, n.kit.effects))); } } for (var r = 0; r < e.b.length; ++r) if (t.Equipment[r] && null == e.b[r]) { e.b[r] = new cn(); i = { type: hi.PATH, id: t.Equipment[r], parent: e.a, shoulder: -1 }; e.b[r].e = new $n(e.a.aS, e.a.k, i, r, !1, !0, !1); } (e.c = !0), e.a.bH(); } j(t) { if (this.a.d) { for (var e = 0; e < this.f.length; e++) this.f[e].g(t); for (var i = 0; i < this.b.length; i++) { var r = this.b[i]; if (r) { let e = we(0, 0, 0); if ((i >= 5 || (r && r.d && (e = r.d.c)), -1 != r.c)) { let i = this.a.ap[r.c].m; r.e.bs(this.a.U, i, e, null), r.e.bY(t); } } } } } }; class gn { static a(t, e, i, r, n) { let a = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; if (!e) return WH.debug('selectBestTexture:', 'textures are null'), null; for (let t = 0; t < e.length; t++) { let s = e[t], o = s.Gender, l = s.Class, h = s.Race, u = s.ExtraData, c = 0; if (i > 1 || o != i) { if (o < 2) continue; c = 0; } else c = 2; let f = 1; if (r > 0 && l == r) f = 0; else if (l > 0) continue; let d = 1; if (n > 0 && h == n) d = 0; else if (h > 0) continue; a[u + 3 * (d + 2 * (c + f))] = s.FileDataId; } for (let t = 0; t < 2; t++) for (let e = 0; e < 2; e++) for (let i = 0; i < 2; i++) { let r = 3 * (t + 2 * (e + 2 * i)); if (a[r] > 0) { let t; return (t = { a: a[r], b: a[r + 1], c: a[r + 2] }), t; } } if (t) { let a = t.bR(i, n, !0); if (a && 0 != a[0]) return (n = a[0]), (i = a[1]), gn.a(t, e, i, r, n); } return null; } static b(t, e, i, r, n, a) { let s = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (let t = 0; t < e.length; t++) { let o = e[t], l = o.Gender, h = o.Class, u = o.Race, c = o.ExtraData, f = 0; if (r > 1 || l != r) { if (l < 2) continue; f = 0; } else f = 2; let d = 1; if (n > 0 && h == n) d = 0; else if (h > 0) continue; let b = 1; if (a > 0 && u == a) b = 0; else if (u > 0) continue; let g = 1; if (-1 == i || c != i) { if (-1 != c && -1 != i) continue; } else g = 0; s[g + 2 * (b + 2 * (f + d))] = o.FileDataId; } for (let t = 0; t < 2; t++) for (let e = 0; e < 2; e++) for (let i = 0; i < 2; i++) for (let r = 0; r < 2; r++) { let n = r + 2 * (t + 2 * (e + 2 * i)); if (s[n]) return s[n]; } if (t) { var o = t.bR(r, a, !1); if (o && 0 != o[0]) return (a = o[0]), (r = o[1]), gn.b(t, e, i, r, n, a); } return 0; } } const _n = class { constructor(t, e, i, r, n) { (this.q = null), (this.r = []), WH.debug('Creating item', i), (this.a = t), (this.b = e), (this.s = i), (this.t = r), (this.u = n), (this.e = pi[e]), (this.f = mi[e]), (this.i = null), (this.j = null), (this.k = null), (this.g = 0), (this.h = 0), (this.m = !1), (this.n = !1), (this.o = 0), (this.p = 3), i && this.y(); } x() { var t = this; if (t.i) { for (let e = 0; e < t.i.length; ++e) t.i[e].e && t.i[e].e.ba(), (t.i[e].e = null), (t.i[e].d = null), (t.i[e] = null); t.i = null; } if (t.j) { for (let e = 0; e < t.j.length; ++e) t.j[e].texture && t.j[e].texture.h(), (t.j[e].texture = null), (t.j[e] = null); t.j = null; } if (((t.k = null), (t.l = null), t.r)) { for (let e = 0; e < t.r.length; e++) t.r[e].g(); t.r = null; } (t.m = !1), t.q && (t.q.ba(), (t.q = null)), t.a && (t.a.bB(), (t.a = null)), WH.debug('Destroyed item', this.s); } y() { let t = this; WH.debug('Loading item', this.s); let e = 'meta/item/'; const i = this.b; (i != Ti && i != wi && i != yi && i != Ai && i != Ei && i != Ci && i != Si && i != Mi && i != ki && i != Ii && i != Ui && i != Bi) || (e = 'meta/armor/' + i + '/'); let r = t.a.k.contentPath + e + t.s + '.json'; $.getJSON(r) .done(function (e) { t.z(e); }) .fail(function (e, i, r) { let n = i + ', ' + r; WH.debug('Error loading item metadata', t.s, n), (t.n = !0); }); } z(t) { if (!this.a) return void WH.debug('Item was destroyed before it was loaded', this.s); if ( ((this.h = parseInt(t.Item.Flags)), (this.g = parseInt(t.Item.InventoryType)), (this.c = parseInt(t.Item.ItemClass)), (this.d = parseInt(t.Item.ItemSubClass)), t.ComponentTextures) ) { this.j = []; for (let e in t.ComponentTextures) { const i = parseInt(e), r = gn.a(this.a, t.TextureFiles[t.ComponentTextures[e]], this.a.o, this.a.p, this.a.n); if (r) { let t; (t = { region: i, gender: this.a.o, file: r.a, texture: null }), i != Wi ? (t.texture = new an(this.a, i, r.a)) : this.b == Ii && (this.a.B[2] = new an(this.a, 2, r.a)), this.j.push(t); } } } if (((this.k = t.Item.GeosetGroup), (this.l = t.Item.AttachGeosetGroup), this.b == Ti)) { 0 == this.a.o ? (this.v = t.Item.HideGeosetMale) : (this.w = t.Item.HideGeosetFemale); } if ((this.b == wi ? (this.i = new Array(2)) : xi[this.b] != hi.ARMOR && (this.i = new Array(1)), this.i)) for (let e = 0; e < this.i.length; ++e) { const i = { race: this.t, gender: this.u, bone: -1, attachment: null, model: null }, r = { type: xi[this.b], id: this.s, parent: this.a, shoulder: 0 }; this.b == wi && (r.shoulder = e + 1), (i.e = new $n(this.a.aS, this.a.k, r, e, !1, !1, !0)), (i.e.n = this.t), (i.e.o = this.u), i.e.bS(t, r.type), (this.i[e] = i); } if ((this.b == Ei || this.b == Ii) && t.ComponentModels) { let e = 0; if ((this.b == Ii && (e = 1), t.ComponentModels[e])) { const i = { type: xi[this.b], id: this.s, parent: this.a, shoulder: 0 }, r = new $n(this.a.aS, this.a.k, i, 0, !1, !1, !0); r.u = t; const n = { race: 0, gender: 0, bone: -1, attachment: null, model: null }; (n.e = r), (this.i = [n]); let a = 1, s = 0, o = 1; this.a && ((a = this.a.n), (s = this.a.o), (o = this.a.p)); const l = t.ComponentModels[e], h = gn.b(r, t.ModelFiles[l], -1, s, o, a); if (h) { r.bQ(hi.PATH, h); const i = 0 == e ? t.Textures : t.Textures2; if (i) for (let t in i) 0 != i[t] && (r.B[+t] = new an(r, parseInt(t), i[t])); } } } const e = this.b; if ((e == yi || e == Ai || e == Bi || e == Ei || e == Ci || e == ki || e == Si || e == Ti || e == Ii) && t.ComponentModels) { let i = 0; if (((e != Ti && e != Ei) || (i = 1), t.ComponentModels[i])) { const r = t.ComponentModels[i]; if (r && t.ModelFiles && t.ModelFiles[r]) { const n = { type: xi[e], id: this.s, parent: this.a, shoulder: 0 }, a = new $n(this.a.aS, this.a.k, n, 0, !1, !1, !0); a.u = t; let s = 1, o = 0, l = 1; this.a && ((s = this.a.n), (o = this.a.o), (l = this.a.p)); const h = gn.b(a, t.ModelFiles[r], -1, o, l, s); if (h) { (this.q = a), a.bQ(hi.PATH, h); const e = 0 == i ? t.Textures : t.Textures2; if (e) for (let t in e) 0 != e[t] && (a.B[+t] = new an(a, parseInt(t), e[t])); } } } } if ((e == Ci && this.k[2] > 0 && (this.f += 2), 0 != this.o)) { const t = 2 == this.c ? this.d : -1; for (let e = 0; e < this.i.length; e++) this.r.push(new bn(this.i[e].e, t, this.o)); } this.a.bH(), (this.m = !0), WH.debug('Loaded item', this.s); } A(t) { for (let t = 0; t < this.r.length; t++) this.r[t].g(); (this.r = []), (this.o = t); } B(t) { this.p = t; } C(t) { if (!this.i) return; if (this.a.d) { const t = this.a.bN(this.e, this); for (let e = 0; e < this.i.length; ++e) if (this.i[e] && t.length > e) { let i = this.a.aB[t[e]]; if (((this.i[e].c = i.b), (this.i[e].d = i), this.r[e] && this.r[e].b)) { const t = this.i[e].e; for (let r = 0; r < this.r[e].b.length; r++) if (t.aB && this.r[e].b[r]) { if (r < 5) { if (!t.aB[r]) continue; i = t.aB[r]; } else i = t.bV(19); (this.r[e].b[r].c = i.b), (this.r[e].b[r].d = i); } } } } let e = je(), i = ve(); for (let r = 0; r < this.i.length; ++r) { const n = this.i[r]; if (n && n.e) { if (this.b == wi) { if (1 == n.e.a.shoulder && 0 == (1 & this.p)) continue; if (2 == n.e.a.shoulder && 0 == (2 & this.p)) continue; } if (n.c > -1 && n.c < this.a.ap.length) { this.r[r] && n.e.d && this.r[r].j(t); let a = !1, s = si[n.e.a.id]; if ( (qe(e), s && (Ae(i, 1, 1, -1), Je(e, e, i), (a = !0)), (this.b != zi && this.b != Oi && this.e != zi) || 0 == (256 & this.h) || (Ae(i, 1, -1, 1), Je(e, e, i), (a = !0), (n.e.h = !0)), (n.e.aY = a), 5 == this.a.H && this.b == Ni && 2 == this.c && 18 == this.d && (qe(e), Ke(e, e, -Math.PI / 2)), 27 == this.b) ) { let t = n.e.u.Scale; Ae(i, t, t, t), Je(e, e, i); } n.e.bs(this.a.U, this.a.ap[n.c].m, n.d.c, e), n.e.bW(), n.e.bY(t); } else -1 == n.c && this.a.bG(n.e, t); } } } }; const pn = class { constructor(t) { (this.c = t), (this.b = 267320826 ^ t); let e = new ArrayBuffer(4); this.a = new DataView(e); } d() { let t = this.b; return (t ^= t << 13), (t ^= t >> 17), (t ^= t << 5), (this.b = t), t; } e() { let t, e = this.d(); return ( this.a.setInt32(0, 1065353216 | (8388607 & e)), (t = 2147483648 & e ? 2 - this.a.getFloat32(0) : this.a.getFloat32(0) - 2), t ); } f() { let t = this.d(); return this.a.setInt32(0, 1065353216 | (8388607 & t)), this.a.getFloat32(0) - 1; } }; const mn = class { constructor() { (this.a = 0), (this.b = 0), (this.c = 0), (this.d = 0), (this.e = ve()), (this.f = 0), (this.g = 0), (this.h = 0), (this.i = 0), (this.j = 0); } }; const vn = class { constructor(t, e) { (this.b = t), (this.c = e), (this.a = new mn()); } d() { return this.a.d + this.b.e() * this.c.u; } e() { return this.a.d + this.c.u; } f() { return this.a.c + this.c.s; } g(t) { return this.a.c + 30518509e-12 * t * this.c.s; } h() { let t = this.a.a; return (t *= 1 + this.a.b * this.b.e()), t; } i() { return this.a; } j(t) { ye(t, this.a.e); } }; const xn = class extends vn { k(t, e) { let i, r = e * this.b.f(), n = this.b.e(); (i = n < 1 ? (n > -1 ? Math.trunc(32767 * n + 0.5) : -32767) : 32767), (t.d = i); let a = this.g(i); a < 0.001 && (a = 0.001), (t.b = (function (t, e) { let i = Math.abs(t), r = Math.abs(e); return Number((i - Math.floor(i / r) * r).toPrecision(8)) * Math.sign(t); })(r, a)), (t.e = 65535 & this.b.d()), Ae(t.a, this.b.e() * this.a.g * 0.5, this.b.e() * this.a.h * 0.5, 0); let s = this.h(), o = this.a.f; if (o < 0.001) { let e = this.a.i * this.b.e(), i = this.a.j * this.b.e(), r = Math.sin(e), n = Math.sin(i), a = Math.cos(e), o = Math.cos(i); Ae(t.c, o * r * s, n * r * s, a * s); } else { let e = ve(); ye(e, t.a), (e[2] = e[2] - o), Te(e) > 1e-4 && (Ue(e, e), Fe(t.c, e, s)); } } }; const Tn = class extends vn { constructor(t, e, i) { super(t, e), (this.ba = i); } k(t, e) { let i, r = e * this.b.f(), n = this.b.e(); (i = n < 1 ? (n > -1 ? Math.trunc(32767 * n + 0.5) : -32767) : 32767), (t.d = i); let a = this.g(i); a < 0.001 && (a = 0.001), (t.b = (function (t, e) { let i = Math.abs(t), r = Math.abs(e); return Number((i - Math.floor(i / r) * r).toPrecision(8)) * Math.sign(t); })(r, a)), (t.e = 65535 & this.b.d()); let s = this.a.h - this.a.g, o = this.a.g + s * this.b.f(), l = this.a.i * this.b.e(), h = this.a.j * this.b.e(), u = Math.cos(l), c = we(u * Math.cos(h), u * Math.sin(h), Math.sin(l)); Fe(t.a, c, o); let f = this.h(), d = this.a.f, b = we(0.5, 0.5, 0.5); 0 == d ? this.ba ? Ae(b, 0, 0, 1) : Ae(b, u * Math.cos(h), u * Math.sin(h), Math.sin(l)) : (Ae(b, 0, 0, d), Ce(b, t.a, b), Te(b) > 1e-4 && Ue(b, b)), Fe(t.c, b, f); } }; const wn = class { constructor(t) { (this.a = t.getInt32()), (this.b = t.getUint32()), (this.c = we(t.getFloat(), t.getFloat(), t.getFloat())), (this.d = t.getInt16()), (this.e = t.getInt16()), 0 != (268435456 & this.b) && ((this.f = [0, 0, 0]), (this.f[0] = 31 & this.e), (this.f[1] = (this.e >> 5) & 31), (this.f[2] = (this.e >> 10) & 31)), (this.g = t.getUint8()), (this.h = t.getUint8()), (this.i = t.getUint16()), (this.j = t.getUint16()), (this.k = t.getUint16()), (this.l = t.getUint16()), (this.m = new Gr(t, Or)), (this.n = new Gr(t, Or)), (this.o = new Gr(t, Or)), (this.p = new Gr(t, Or)), (this.q = new Gr(t, Br)), (this.r = new Gr(t, Or)), (this.s = t.getFloat()), (this.t = new Gr(t, Or)), (this.u = t.getFloat()), (this.v = new Gr(t, Or)), (this.w = new Gr(t, Or)), (this.x = new Gr(t, Or)), (this.y = new Vr(t)), (this.z = new jr(t)), (this.A = new Hr(t)), (this.B = [t.getFloat(), t.getFloat()]), (this.C = new jr(t)), (this.D = new jr(t)), (this.E = t.getFloat()), (this.F = t.getFloat()), (this.G = t.getFloat()), (this.H = [t.getFloat(), t.getFloat()]), (this.I = t.getFloat()), (this.J = t.getFloat()), (this.K = t.getFloat()), (this.L = t.getFloat()), (this.M = t.getFloat()), (this.N = t.getFloat()), (this.O = we(t.getFloat(), t.getFloat(), t.getFloat())), (this.P = we(t.getFloat(), t.getFloat(), t.getFloat())), (this.Q = we(t.getFloat(), t.getFloat(), t.getFloat())), (this.R = t.getFloat()), (this.S = t.getFloat()), (this.T = t.getFloat()), (this.U = t.getFloat()), (this.V = t.getFloat()); var e = t.getInt32(); this.W = new Array(e); for (var i = 0; i < e; i++) this.W[i] = we(t.getFloat(), t.getFloat(), t.getFloat()); (this.X = new Gr(t, Nr)), (this.Y = dr(t.getFloat(), t.getFloat())), (this.Z = [dr(t.getFloat(), t.getFloat()), dr(t.getFloat(), t.getFloat())]), (this.aa = [dr(t.getFloat(), t.getFloat()), dr(t.getFloat(), t.getFloat())]); } }; const yn = class { constructor() { (this.a = ve()), (this.b = 0), (this.c = ve()), (this.d = 0), (this.e = (2147483647 * Math.random()) >> 0), (this.f = [fr(), fr()]), (this.g = [fr(), fr()]); } }; let An = new Array(128); for (let t = 0; t < 128; t++) An[t] = Math.random(); const En = Xe(0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); class Cn {} class Sn { constructor() { (this.a = ve()), (this.b = 0), (this.c = { a: fr(), b: ve(), c: 0, d: 0, e: 0 }); } } function Mn(t) { return er(((t >> 16) & 255) / 255, ((t >> 8) & 255) / 255, ((t >> 0) & 255) / 255, ((t >> 24) & 255) / 255); } const kn = class { constructor(t, e) { (this.E = 0), (this.U = !1), (this.a = new Date().getTime()), (this.b = t); let i = new wn(e); if (i.i >= 11 && i.i <= 13) { let e; t.u.Item && t.u.Item.ParticleColor ? (e = t.u.Item.ParticleColor) : t.u.Creature && t.u.Creature.ParticleColor && (e = t.u.Creature.ParticleColor), e && ((this.H = [Qi(), Qi(), Qi()]), ir(this.H[0], Mn(e.Start[i.i - 11])), ir(this.H[1], Mn(e.Mid[i.i - 11])), ir(this.H[2], Mn(e.End[i.i - 11]))); } (this.c = i), (this.d = je()), (this.e = je()), (this.f = je()), (this.g = je()), (this.h = Qi()), (this.i = pr()), (this.j = ve()), (this.k = 1), (this.l = ve()), (this.m = 0), (this.n = ve()), (this.o = ve()), (this.p = []), (this.q = ve()), (this.r = 0), (this.s = 0), (this.t = 0), (this.u = 0), (this.v = ve()), (this.w = ve()), (this.x = 0), (this.y = 0), (this.z = 0), (this.A = 0), (this.B = 0), (this.C = 0), (this.D = 0), (this.F = []), (this.G = []); for (let t = 0; t < 1e3; t++) this.G.push(4 * t + 0), this.G.push(4 * t + 1), this.G.push(4 * t + 2), this.G.push(4 * t + 3), this.G.push(4 * t + 2), this.G.push(4 * t + 1); switch (((this.J = new pn((2147483647 * Math.random()) >> 0)), this.c.h)) { case 1: this.I = new xn(this.J, i); break; case 2: this.I = new Tn(this.J, i, 0 != (256 & this.c.b)); break; default: (this.I = null), WH.debug('Found unimplemented generator ', this.c.h); } const r = this.c.U - this.c.S; 0 != r ? ((this.s = (this.c.V - this.c.T) / r), (this.t = this.c.T - this.c.S * this.s)) : ((this.s = 0), (this.t = 0)); let n = this.c.l; n <= 0 && (n = 1); let a = this.c.k; a <= 0 && (a = 1), (this.y = n * a - 1), (this.z = 0); let s = n, o = -1; do { ++o, (s >>= 1); } while (s); if (((this.A = o), (this.B = n - 1), (this.z = 0), (32768 & this.c.b) > 0)) { let t = (this.y + 1) * this.J.d(); this.z = (t / 4294967296) | 0; } if (((this.C = 1 / n), (this.D = 1 / a), (269484032 & this.c.b) > 0)) { const t = 0 != (1 & (this.c.b >> 28)); this.r = t ? 2 : 3; } else this.r = 0; this.K = i.g > 1; } W() { var t = this; (t.b = null), (t.c.c = null), (t.c.O = null), (t.c.P = null), (t.c.m = t.c.m.e()), (t.c.n = t.c.n.e()), (t.c.o = t.c.o.e()), (t.c.p = t.c.p.e()), (t.c.q = t.c.q.e()), (t.c.r = t.c.r.e()), (t.c.t = t.c.t.e()), (t.c.v = t.c.v.e()), (t.c.w = t.c.w.e()), (t.c.x = t.c.x.e()), (t.c.X = t.c.X.e()), (t.c.y = t.c.y.d()), (t.c.z = t.c.z.d()), (t.c.A = t.c.A.d()), (t.c.C = t.c.C.d()), (t.c.D = t.c.D.d()), (t.p = null); } X(t, e, i) { if (!this.I) return; let r = je(), n = this.I.i(), a = !0; this.c.X.c(t.a.a) && (a = this.c.X.d(t, this.b.aX) > 0), (this.T = a); const s = we(0, 0, 0); a && ((n.a = this.c.m.d(t, this.b.aX, 0)), (n.b = this.c.n.d(t, this.b.aX, 0)), (n.i = this.c.o.d(t, this.b.aX, 0)), (n.j = this.c.p.d(t, this.b.aX, 0)), this.c.q.d(t, this.b.aX, s, n.e), (n.c = this.c.r.d(t, this.b.aX, 0)), (n.d = this.c.t.d(t, this.b.aX, 0)), (n.h = this.c.w.d(t, this.b.aX, 0)), (n.g = this.c.v.d(t, this.b.aX, 0)), (n.f = i ? i.a : this.c.x.d(t, this.b.aX, 0))), Ye(r, r, this.b.U), Ye(r, r, this.b.ap[this.c.d].m); let o = je(); ti(o, we(this.c.c[0], this.c.c[1], this.c.c[2])), Ye(r, r, o), Ye(r, r, En); let l = je(), h = ve(); We(l, this.b.aS.viewMatrix), ii(h, l), this.aa(e, r, h, null, this.b.aS.viewMatrix), this.ak(this.b.aS.viewMatrix); let u = this.b.aS.context; this.L ? (u.bindBuffer(u.ARRAY_BUFFER, this.L), u.bufferData(u.ARRAY_BUFFER, new Float32Array(this.F), u.DYNAMIC_DRAW)) : ((this.L = u.createBuffer()), u.bindBuffer(u.ARRAY_BUFFER, this.L), u.bufferData(u.ARRAY_BUFFER, new Float32Array(this.F), u.DYNAMIC_DRAW)), this.M || ((this.M = u.createBuffer()), u.bindBuffer(u.ELEMENT_ARRAY_BUFFER, this.M), u.bufferData(u.ELEMENT_ARRAY_BUFFER, new Uint16Array(this.G), u.DYNAMIC_DRAW)); } Y(t) { if (this.p.length <= 0) return; const e = this.b.aS.context; if ( (this.V || ((this.V = new en()), (this.V.a = se( e, [ ' attribute vec3 aPosition;\n attribute vec4 aColor; attribute vec2 aTexcoord0; attribute vec2 aTexcoord1; attribute vec2 aTexcoord2; varying vec4 vColor; varying vec2 vTexcoord0; varying vec2 vTexcoord1; varying vec2 vTexcoord2; uniform mat4 uModelMatrix; uniform mat4 uViewMatrix; uniform mat4 uProjMatrix; void main(void) { vec4 pos = vec4(aPosition, 1); gl_Position = uProjMatrix * pos; vColor = aColor; vTexcoord0 = aTexcoord0; vTexcoord1 = aTexcoord1; vTexcoord2 = aTexcoord2; } ', ' precision mediump float;\n varying vec4 vColor; varying vec2 vTexcoord0; varying vec2 vTexcoord1; varying vec2 vTexcoord2; uniform bool uHasTexture; uniform bool uHasTexture2; uniform bool uHasTexture3; uniform bool uHasAlpha; uniform int uBlendMode; uniform int uPixelShader; uniform sampler2D uTexture; uniform sampler2D uTexture2; uniform sampler2D uTexture3; uniform float uAlphaTreshold; void main(void) { float lo_thresh = 0.01; vec4 color = vec4(1, 1, 1, 1); vec4 tex = vec4(1, 1, 1, 1); vec4 tex2 = vec4(1, 1, 1, 1); vec4 tex3 = vec4(1, 1, 1, 1); if (uHasTexture) { tex = texture2D(uTexture, vTexcoord0).rgba; } if (uHasTexture2) { tex2 = texture2D(uTexture2, vTexcoord1).rgba; } if (uHasTexture3) { tex3 = texture2D(uTexture3, vTexcoord2).rgba; } vec4 finalColor = vec4((tex * vColor ).rgb, tex.a*vColor.a ); if (uPixelShader == 0) { vec3 matDiffuse = vColor.xyz * tex.rgb; finalColor = vec4(matDiffuse.rgb, tex.a*vColor.a); } else if (uPixelShader == 1) { vec4 textureMod = tex*tex2; float texAlpha = (textureMod.w * tex3.w); float opacity = texAlpha*vColor.a; vec3 matDiffuse = vColor.xyz * textureMod.rgb; finalColor = vec4(matDiffuse.rgb, opacity); } else if (uPixelShader == 2) { vec4 textureMod = tex*tex2*tex3; float texAlpha = (textureMod.w); float opacity = texAlpha*vColor.a; vec3 matDiffuse = vColor.xyz * textureMod.rgb; finalColor = vec4(matDiffuse.rgb, opacity); } else if (uPixelShader == 3) { vec4 textureMod = tex*tex2*tex3; float texAlpha = (textureMod.w); float opacity = texAlpha*vColor.a; vec3 matDiffuse = vColor.xyz * textureMod.rgb; finalColor = vec4(matDiffuse.rgb, opacity); }; if (finalColor.a < uAlphaTreshold ) discard; gl_FragColor = finalColor; } ', ], null, null, )), (this.V.b = {}), (this.V.a.attributes = [ { loc: e.getAttribLocation(this.V.a.program, 'aPosition'), type: e.FLOAT, size: 3, offset: 0, stride: 52 }, { loc: e.getAttribLocation(this.V.a.program, 'aColor'), type: e.FLOAT, size: 4, offset: 12, stride: 52 }, { loc: e.getAttribLocation(this.V.a.program, 'aTexcoord0'), type: e.FLOAT, size: 2, offset: 28, stride: 52 }, { loc: e.getAttribLocation(this.V.a.program, 'aTexcoord1'), type: e.FLOAT, size: 2, offset: 36, stride: 52 }, { loc: e.getAttribLocation(this.V.a.program, 'aTexcoord2'), type: e.FLOAT, size: 2, offset: 44, stride: 52 }, ]), (this.V.c = this.L), (this.V.d = this.M), (this.V.m = this.c.j)), !this.S) ) if (((this.S = [null, null, null]), 0 != (268435456 & this.c.b))) { WH.debug('multitexture particle', this.c.f[0], this.c.f[1], this.c.f[2], this); for (let t = 0; t < this.c.f.length; t++) { const e = this.c.f[t]; e > -1 && e < this.b.aw.length && (this.S[t] = this.b.aw[e]); } } else this.c.e > -1 && this.c.e < this.b.aw.length && (this.S[0] = this.b.aw[this.c.e]); if (!this.S[0].f || !this.S[0].f.f) return; (this.V.b.uViewMatrix = this.b.aS.viewMatrix), (this.V.b.uProjMatrix = this.b.aS.projMatrix), (this.V.b.uBlendMode = this.c.g), (this.V.b.uPixelShader = this.r > 1 ? this.r - 1 : 0); let i = [ this.S[0] && this.S[0].f && this.S[0].f.f, this.S[1] && this.S[1].f && this.S[1].f.f, this.S[2] && this.S[2].f && this.S[2].f.f, ]; (this.V.b.uTexture = this.S[0].f.d), (this.V.b.uTexture2 = i[1] ? this.S[1].f.d : null), (this.V.b.uTexture3 = i[2] ? this.S[2].f.d : null), (this.V.b.uHasTexture = i[0] ? 1 : 0), (this.V.b.uHasTexture2 = i[1] ? 1 : 0), (this.V.b.uHasTexture3 = i[2] ? 1 : 0); let r = this.c.g; 4 == r && (r = 3), (this.V.e = r), (this.V.i = !this.b.aY); let n = -1; 1 == r ? (n = 0.501960814) : r > 1 && (n = 1 / 255), (this.V.b.uAlphaTreshold = n), (this.V.h = !1), (this.V.f = !1), (this.V.j = e.TRIANGLES), (this.V.k = (6 * this.E) >> 0), (this.V.l = 0), t.push(this.V); } Z(t, e) { if (0 == (16 & this.c.b)) for (let i = 0; i < this.p.length; i++) { const r = this.p[i]; Oe(r.a, r.a, t), Ne(r.c, r.c, e); } } aa(t, e, i, r, n) { if (null == this.I) return; if (this.b.S) return; ii(this.l, this.d); let a = Qi(); ii(a, e), (a[3] = 1), lr(a, a, n), (this.m = a[2]); let s = ve(); if ((ii(s, n), this.ab(e, s, r), t > 0)) { let e = ve(); if ((ii(e, this.d), 16384 & this.c.b)) { Ce(this.o, e, this.l); let i = this.s * (Te(this.o) / t) + this.t; i >= 0 && (i = Math.min(i, 1)), Fe(this.n, this.o, i); } if (64 & this.c.b) { this.u += t; let i = 0.03; if (this.u > i) if (((this.u = 0), 0 == this.p.length)) { let t = i / this.u, r = ve(); Ce(r, e, this.l); let n = t * this.c.I; Se(this.v, r, we(n, n, n)); } else Ae(this.v, 0, 0, 0); } this.ac(t); } } ab(t, e, i) { if ((ye(this.w, e), null == i || 16 & this.c.b)) Ge(this.d, t); else { let e = je(); We(e, i), Ye(this.d, e, t); } let r = ve(); ri(r, t), (this.k = r[0]); } ac(t) { if ((t = Math.max(t, 0)) < 0.1) ye(this.n, this.o); else { let e = Math.floor(t / 0.1); t = -0.1 * e + t; let i = Math.min(Math.floor(this.I.i().lifespan / 0.1), e), r = i + 1, n = 1; (n = r < 0 ? ((1 & r) | (r >> 1)) + ((1 & r) | (r >> 1)) : r), Fe(this.n, this.o, 1 / n); for (let t = 0; t < i; t++) this.ad(0.1); } this.ad(t); } ad(t) { let e = new Cn(); if (t < 0) return; this.c.b, this.ae(e, t), this.af(t); let i = 0; for (; i < this.p.length; ) { let r = this.p[i]; (r.b = r.b + t), r.b > Math.max(this.I.g(r.e), 0.001) ? (this.ai(i), i--) : this.aj(r, t, e) || (this.ai(i), i--), i++; } } ae(t, e) { (t.a = ve()), (t.b = ve()), (t.c = ve()), (t.d = 0); let i = we(e, e, e), r = e * e * 0.5, n = we(r, r, r); Se(t.a, this.c.Q, i); let a = ve(); this.I.j(a), Se(t.b, a, i), Se(t.c, a, n), (t.d = this.c.J * e); } af(t) { if (!this.T) return; let e = this.I.d(); for (this.x = this.x + t * e; this.x > 1; ) this.ag(t), (this.x -= 1); } ag(t) { let e = this.ah(); if ((this.I.k(e, t), !(16 & this.c.b))) { let t = er(e.a[0], e.a[1], e.a[2], 1), i = er(e.c[0], e.c[1], e.c[2], 0); lr(t, t, this.d), lr(i, i, this.d), ye(e.a, t), ye(e.c, i), 8192 & this.c.b && (e.a[2] = 0); } if (64 & this.c.b) { let t = 1 + this.I.i().speedVariation * this.J.e(), i = ve(); Fe(i, this.v, t), Ee(e.c, e.c, i); } if (this.r >= 2) for (let t = 0; t < 2; t++) { (e.f[t][0] = this.J.f()), (e.f[t][1] = this.J.f()); let a = fr(); _r(a, this.c.aa[t], this.J.e()), (i = e.g[t]), (r = a), (n = this.c.Z[t]), (i[0] = r[0] + n[0]), (i[1] = r[1] + n[1]); } var i, r, n; } ah() { let t = new yn(); return this.p.push(t), t; } ai(t) { this.p.splice(t, 1); } aj(t, e, i) { if (this.r >= 2) for (let i = 0; i < 2; i++) { let r = t.f[i][0] + e * t.g[i][0]; (t.f[i][0] = r - Math.floor(r)), (r = t.f[i][1] + e * t.g[i][1]), (t.f[i][1] = r - Math.floor(r)); } Ee(t.c, t.c, i.a), 16384 & this.c.b && 2 * e < t.b && Ee(t.a, t.a, this.n); let r = we(e, e, e), n = ve(); if ( (Se(n, t.c, r), Ee(t.c, t.c, i.b), Fe(t.c, t.c, 1 - i.d), Ee(t.a, t.a, n), Ee(t.a, t.a, i.c), 2 == this.c.h && 128 & this.c.b) ) { let e = ve(); if ((ye(e, t.a), 16 & this.c.b)) { if (Be(e, n) > 0) return !1; } else { let i = ve(); if ((ii(i, this.d), Ce(e, t.a, i), Be(e, n) > 0)) return !1; } } return !0; } ak(t) { if (((this.F.length = 0), 0 == this.p.length && null != this.I)) return; We(this.f, t), mr(pr(), t), this.al(null, t); let e = 0; for (let t = 0; t < this.p.length; t++) { let i = this.p[t], r = new Sn(); if ((this.an(i, r) && (131072 & this.c.b && (this.ap(i, r), e++), 262144 & this.c.b && (this.aq(i, r), e++)), e >= 1e3)) break; } this.E = e; } al(t, e) { var i, r, n; 16 & this.c.b ? Ye(this.g, e, this.d) : null != t ? Ye(this.g, e, t) : Ge(this.g, e), ii(this.h, e), 4096 & this.c.b && (mr(this.i, this.g), 16 & this.c.b && Math.abs(this.k) > 0 && ((i = this.i), (r = this.i), (n = 1 / this.k), (i[0] = r[0] * n), (i[1] = r[1] * n), (i[2] = r[2] * n), (i[3] = r[3] * n), (i[4] = r[4] * n), (i[5] = r[5] * n), (i[6] = r[6] * n), (i[7] = r[7] * n), (i[8] = r[8] * n)), Ae(this.j, this.i[6], this.i[7], this.i[8]), De(this.j) <= 2.3841858e-7 ? Ae(this.j, 0, 0, 1) : Ue(this.j, this.j)); } am(t) { let e = 0, i = 0; if (0 != this.c.K || 0 != this.c.N) { let r = new pn(t.e); (e = 0 == this.c.L ? this.c.K : this.c.K + r.e() * this.c.L), (i = 0 == this.c.N ? this.c.M : this.c.M + r.e() * this.c.N); } else (e = this.c.K), (i = this.c.M); return { deltaSpin: i, baseSpin: e }; } an(t, e) { let i = this.c.G, r = this.c.H, n = r[0], a = r[1] - n, s = 0, o = t.e, l = t.b; if (((i < 1 || 0 != a) && (s = 127 & (l * this.c.F + o)), i < An[s])) return 0; this.ao(t, e, o); let h = a * An[s] + n; _r(e.c.a, e.c.a, h), 32 & this.c.b && _r(e.c.a, e.c.a, this.k); let u = er(t.a[0], t.a[1], t.a[2], 1); return lr(u, u, this.g), ye(e.a, u), (e.b = 1), 1; } ao(t, e, i) { let r = t.b / this.I.f(), n = new pn(i); Math.min(r, 1) <= 0 ? (r = 0) : r >= 1 && (r = 1); let a = we(255, 255, 255), s = dr(1, 1), o = 1, l = e.c; this.c.y.i(r, a, l.b, this.H), this.H || Fe(l.b, l.b, 1 / 255), this.c.A.i(r, s, l.a), (l.e = this.c.z.i(r, 1) / 32767); let h = 0; this.c.C.a.length > 0 ? ((o = 0), (l.c = this.c.C.i(r, o)), (l.c = this.y & (l.c + this.z))) : 65536 & this.c.b ? ((h = (this.y + 1) * n.d()), (l.c = (h / 4294967296) | 0)) : (l.c = 0), (o = 0), (l.d = this.c.D.i(r, o)), (l.d = (l.d + this.z) & this.y); let u = 1; 524288 & this.c.b ? ((u = Math.max(1 + n.e() * this.c.B[1], 99999997e-12)), (l.a[0] = Math.max(1 + n.e() * this.c.B[0], 99999997e-12) * l.a[0])) : ((u = Math.max(1 + n.e() * this.c.B[0], 99999997e-12)), (l.a[0] = u * l.a[0])), (l.a[1] = u * l.a[1]); } ap(t, e) { let i = dr((e.c.c & this.B) * this.C, (e.c.c >> this.A) * this.D), r = 0, n = 0, a = this.am(t); (r = a.baseSpin), (n = a.deltaSpin); let s = 0, o = we(0, 0, 0), l = we(0, 0, 0), h = !1, u = !1; if (4 & this.c.b && De(t.c) > 2.3841858e-7) if (((s = 1), 4096 & this.c.b)) h = !0; else { let i = er(-t.c[0], -t.c[1], -t.c[2], 0); lr(i, i, this.g); let r = ve(); ye(r, i); let n = 0, a = De(r); n = a <= 2.3841858e-7 ? 0 : 1 / Math.sqrt(a); let s = ve(); ye(s, r), Fe(s, s, n), ye(o, s), Fe(o, o, e.c.a[0]), (l = we(s[1], -s[0], 0)), Fe(l, l, e.c.a[1]), (u = !0), (h = !1); } if ((4096 & this.c.b || h) && !u) { let i = pr(); (c = i), (f = this.i), (c[0] = f[0]), (c[1] = f[1]), (c[2] = f[2]), (c[3] = f[3]), (c[4] = f[4]), (c[5] = f[5]), (c[6] = f[6]), (c[7] = f[7]), (c[8] = f[8]); let a = e.c.a[0]; if (s) { let r = 0, n = we(-t.c[0], -t.c[1], -t.c[2]), s = De(n); (r = s <= 2.3841858e-7 ? 0 : 1 / Math.sqrt(s)), vr( i, this.i, (function (t, e, i, r, n, a, s, o, l) { var h = new me(9); return (h[0] = t), (h[1] = e), (h[2] = i), (h[3] = r), (h[4] = n), (h[5] = a), (h[6] = s), (h[7] = o), (h[8] = l), h; })(n[0] * r, n[1] * r, 0, -n[1] * r, n[0] * r, 0, 0, 0, 1), ), r > 2.3841858e-7 && (a = e.c.a[0] * (1 / Math.sqrt(De(t.c)) / r)); } if ( (this.r, Ae(o, i[0], i[1], i[2]), Fe(o, o, a), Ae(l, i[3], i[4], i[5]), Fe(l, l, e.c.a[1]), (n = l[0]), (u = !0), 0 != this.c.M || 0 != this.c.N) ) { let e = r + n * t.b; 512 & this.c.b && 1 & t.e && (e = -e); let i = ve(); ye(i, this.j), this.r; let a = pr(), s = xr(); Tr(s, i, e), (function (t, e) { var i = e[0], r = e[1], n = e[2], a = e[3], s = i + i, o = r + r, l = n + n, h = i * s, u = r * s, c = r * o, f = n * s, d = n * o, b = n * l, g = a * s, _ = a * o, p = a * l; (t[0] = 1 - c - b), (t[3] = u - p), (t[6] = f + _), (t[1] = u + p), (t[4] = 1 - h - b), (t[7] = d - g), (t[2] = f - _), (t[5] = d + g), (t[8] = 1 - h - c); })(a, s), Ne(o, o, a), Ae(l, n, l[1], l[2]), Ne(l, l, a); } } var c, f; if (!u) if (0 != this.c.M || 0 != this.c.N) { let i = r + n * t.b; 512 & this.c.b && 1 & t.e && (i = -i); let a = Math.cos(i), s = Math.sin(i); Ae(o, a, s, 0), Fe(o, o, e.c.a[0]), Ae(l, -s, a, 0), Fe(l, l, e.c.a[1]), 134217728 & this.c.b && Ee(e.a, e.a, we(l[0], l[1], 0)); } else Ae(o, e.c.a[0], 0, 0), Ae(l, 0, e.c.a[1], 0); return this.ar(o, l, e.a, e.c.b, e.c.e, i[0], i[1], t.f), 0; } aq(t, e) { let i = dr((e.c.d & this.B) * this.C, (e.c.d >> this.A) * this.D), r = we(0, 0, 0), n = we(0, 0, 0), a = this.c.E; 1024 & this.c.b && (a = Math.min(t.b, a)); let s = Qi(); Fe(s, t.c, -1), (s[3] = 0), lr(s, s, this.g), Fe(s, s, a); let o = we(s[0], s[1], 0); if (Be(o, o) > 1e-4) { let t = 1 / Te(o); _r(e.c.a, e.c.a, t), gr(o, o, e.c.a), (n = we(-o[1], o[0], 0)), Fe(r, s, 0.5), Ee(e.a, e.a, r); } else (r = we(0.05 * e.c.a[0], 0, 0)), (n = we(0, 0.05 * e.c.a[1], 0)); return this.ar(r, n, e.a, e.c.b, e.c.e, i[0], i[1], t.f), 1; } ar(t, e, i, r, n, a, s, o) { const l = [-1, -1, 1, 1], h = [1, -1, 1, -1], u = [0, 0, 1, 1], c = [0, 1, 0, 1]; let f = ve(), d = fr(), b = fr(), g = fr(); for (let _ = 0; _ < 4; _++) Ae(f, 0, 0, 0), Re(f, f, t, l[_]), Re(f, f, e, h[_]), Ee(f, f, i), br(d, u[_] * this.C + a, c[_] * this.D + s), br(b, u[_] * this.c.Y[0] + o[0][0], c[_] * this.c.Y[0] + o[0][1]), br(g, u[_] * this.c.Y[1] + o[1][0], c[_] * this.c.Y[1] + o[1][1]), this.F.push(f[0]), this.F.push(f[1]), this.F.push(f[2]), this.F.push(r[0]), this.F.push(r[1]), this.F.push(r[2]), this.F.push(n), this.F.push(d[0]), this.F.push(d[1]), this.F.push(b[0]), this.F.push(b[1]), this.F.push(g[0]), this.F.push(g[1]); } }; const Fn = class { constructor(t) { this.a = t.getFloat(); } }; const Rn = class { constructor(t) { (this.buffer = new DataView(t)), (this.position = 0); } getBool() { var t = 0 != this.buffer.getUint8(this.position); return (this.position += 1), t; } getUint8() { var t = this.buffer.getUint8(this.position); return (this.position += 1), t; } getInt8() { var t = this.buffer.getInt8(this.position); return (this.position += 1), t; } getUint16() { var t = this.buffer.getUint16(this.position, !0); return (this.position += 2), t; } getInt16() { var t = this.buffer.getInt16(this.position, !0); return (this.position += 2), t; } getUint32() { var t = this.buffer.getUint32(this.position, !0); return (this.position += 4), t; } getInt32() { var t = this.buffer.getInt32(this.position, !0); return (this.position += 4), t; } getFloat() { var t = this.buffer.getFloat32(this.position, !0); return (this.position += 4), t; } getString(t) { void 0 === t && (t = this.getUint16()); for (var e = '', i = 0; i < t; ++i) e += String.fromCharCode(this.getUint8()); return e; } setBool(t) { this.buffer.setUint8(this.position, t ? 1 : 0), (this.position += 1); } setUint8(t) { this.buffer.setUint8(this.position, t), (this.position += 1); } setInt8(t) { this.buffer.setInt8(this.position, t), (this.position += 1); } setUint16(t) { this.buffer.setUint16(this.position, t, !0), (this.position += 2); } setInt16(t) { this.buffer.setInt16(this.position, t, !0), (this.position += 2); } setUint32(t) { this.buffer.setUint32(this.position, t, !0), (this.position += 4); } setInt32(t) { this.buffer.setInt32(this.position, t, !0), (this.position += 4); } setFloat(t) { this.buffer.setFloat32(this.position, t, !0), (this.position += 4); } }; class Dn { constructor() { (this.a = ve()), (this.b = Qi()), (this.c = fr()); } } class In {} const Un = [0, 1, 2, 10, 3, 4, 5, 13]; function Bn(t, e) { return we(t[4 * e + 0], t[4 * e + 1], t[4 * e + 2]); } class Pn {} const zn = class { constructor(t, e) { (this.g = ve()), (this.h = ve()), (this.p = new In()), (this.q = ve()), (this.r = ve()), (this.s = ve()), (this.t = ve()), (this.u = ve()), (this.v = ve()), (this.w = ve()), (this.x = ve()), (this.y = ve()), (this.z = ve()), (this.A = ve()), (this.B = ve()), (this.O = ve()), (this.V = t.aS.context), (this.a = t); let i = new Pn(); var r; if (((i.a = e.getInt32()), (i.b = e.getInt32()), (i.c = we(e.getFloat(), e.getFloat(), e.getFloat())), (r = e.getInt32()) > 0)) { i.j = new Array(r); for (let t = 0; t < r; ++t) i.j[t] = e.getInt16(); } if ((r = e.getInt32()) > 0) { i.k = new Array(r); for (let t = 0; t < r; ++t) i.k[t] = e.getInt16(); } (i.l = new Gr(e, Br)), (i.m = new Gr(e, zr)), (i.n = new Gr(e, Or)), (i.o = new Gr(e, Or)), (i.d = e.getFloat()), (i.e = e.getFloat()), (i.f = e.getFloat()), (i.g = e.getInt16()), (i.h = e.getInt16()), (i.p = new Gr(e, zr)), (i.q = new Gr(e, Nr)), (i.r = e.getInt16()), (this.U = i), (this.ab = new Array(i.k.length)), (this.ae = new Array(i.k.length)); for (let e = 0; e < i.k.length; e++) this.ae[e] = t.av[i.k[e]]; let n = er(255, 255, 255, 255), a = new In(); (a.a = 0), (a.b = 0), (a.c = 1), (a.d = 1), this.au(i.d, i.e, n, a, i.h, i.g), this.ag(i.f), this.af(!1); } af(t) { (this.L = t), this.L || (this.J = !1); } ag(t) { this.S = t; } ah() { return this.e == this.d; } ai(t) { this.R = t; } aj(t) { this.Q = t; } ak(t) { this.F[3] = Math.max(t, 0); } al() { let t = ve(); He(t, this.g, this.O); let e = De(t); Fe(t, this.q, this.R), Ce(this.w, this.g, t), Fe(t, this.r, this.R), Ce(this.x, this.O, t), Fe(t, this.q, this.Q), Ee(this.y, this.g, t), Fe(t, this.r, this.Q), Ee(this.z, this.O, t), Fe(this.u, this.s, e), Fe(this.v, this.t, e); } am(t, e, i) { let r; if (this.M && this.L) { r = t; let i = ve(); ii(i, r), Ee(i, i, e), ye(this.h, e), this.J ? (ye(this.g, this.O), ye(this.s, this.t), ye(this.q, this.r)) : (ye(this.g, i), (this.s = Bn(r, 2)), (this.q = Bn(r, 1)), (this.f = 0), (this.J = !0)), (this.O = i), (this.t = Bn(r, 2)), (this.r = Bn(r, 1)); } } an(t) { var e = pr(); mr(e, t), (this.s = Ne(this.s, this.s, e)), (this.q = Ne(this.q, this.q, e)), (this.t = Ne(this.t, this.t, e)), (this.r = Ne(this.r, this.r, e)), (this.g = Oe(this.g, this.g, t)), (this.O = Oe(this.O, this.O, t)); for (var i = 0; i < this.i.length; i++) Oe(this.i[i].a, this.i[i].a, t); } ao(t, e, i) { (this.F[2] = i), (this.F[1] = e), (this.F[0] = t); } ap(t) { if (this.P != t) { this.P = t; let e = t % this.I, i = e; 0 != (2147483648 & e) && (i = ((1 & e) | (e >> 1)) + ((1 & e) | (e >> 1))); let r = i * this.l + this.G.b; this.p.b = r; let n = t / this.I, a = n; 0 != (2147483648 & n) && ((n = (1 & n) | (n >> 1)), (a = n + n), (r = this.p.b)); let s = a * this.m + this.G.a; (this.p.a = s), (this.p.d = r + this.l), (this.p.c = s + this.m); } } aq(t, e, i) { let r, n = this.i[2 * this.d], a = this.i[2 * this.d + 1], s = ve(); Fe(s, this.v, 1 - e), Ce(s, this.x, s), Fe(n.a, s, e), Fe(s, this.u, e), Ee(s, this.w, s), Fe(s, s, 1 - e), Ee(n.a, n.a, s), Fe(s, this.v, 1 - e), Ce(s, this.z, s), Fe(a.a, s, e), Fe(s, this.u, e), Ee(s, this.y, s), Fe(s, s, 1 - e), Ee(a.a, a.a, s), (this.c[this.d] = t), (r = i), (this.d = this.d + r), this.d >= this.c.length && (this.d -= this.c.length); } ar(t, e) { if (this.a.S) return; let i = ve(), r = 1; (i = this.U.l.d(t, this.a.aX, i)), (r = this.U.m.d(t, this.a.aX)), this.ao(i[0], i[1], i[2]), this.ak(r / 32767); let n = this.U.n.d(t, this.a.aX); this.aj(n); let a = this.U.o.d(t, this.a.aX); this.ai(a); let s = this.U.p.d(t, this.a.aX); this.ap(s); let o = this.U.q.d(t, this.a.aX, 1); this.af(0 != o); let l = je(); ai(l, this.a.U, this.a.ap[this.U.b].m), Ze(l, l, this.U.c); let h = ve(); this.am(l, h, null), this.as(e, !1); } as(t, e) { let i, r, n, a, s, o, l, h, u, c, f, d, b, g, _, p, m, v, x, T, w, y, A, E, C, S, M, k, F, R, D, I, U, B, P, z, O, N, L, H, V, j, G, X, q, W, Y, Z; for ( this.N || (this.C > 0 && (t = 1 / this.C + 99999997e-12)), t >= 0 ? this.D <= t && (t = this.D) : (t = 0), v = this.e; v != this.d && !(t + this.c[v] <= this.D); v = this.e ) this.e = this.at(this.e, 1); if (!e && this.M && this.L && this.J) { (D = t * this.C + this.f), (Z = this.F), this.al(); let e = !1; if ( ((B = 0), D < 1 ? (e = !0) : ((Y = this.f), (U = 1 / (D - Y)), (m = Math.floor(D - 1)), (B = Math.ceil(Math.max(m, 0)))), -1 == B || e) ); else for ( I = 1, v = 1; (R = this.d), (N = this.i.length), (this.i[2 * R].b = Z), (x = 2 * this.d + 1), (L = this.i.length), (this.i[x].b = Z), this.aq((v - Y) * U * -t, (v - Y) * U, 1), -1 != --B; v = I ) (I += 1), (Y = this.f); (T = Math.floor(D)), (this.f = D - T), this.aq(0, 1, 0), (F = this.d), (H = this.i.length), (w = this.i[2 * F]), (y = this.p.b), (w.c[1] = this.p.a), (w.c[0] = y), (A = 2 * this.d + 1), (V = this.i.length), (E = this.i[A]), (C = this.p.b), (E.c[1] = this.p.c), (E.c[0] = C), (k = this.d), (j = this.i.length), (this.i[2 * k].b = Z), (S = 2 * this.d + 1), (G = this.i.length), (this.i[S].b = Z); } (this.A[2] = 34028235e31), (this.A[1] = 34028235e31), (this.A[0] = 34028235e31), (this.B[2] = -34028235e31), (this.B[1] = -34028235e31), (this.B[0] = -34028235e31), (P = this.e); for (let e = this.e; e != this.d; P = e) (p = 2 * e), (W = this.i.length), (M = P), (O = this.i[2 * e]), (i = p + 1), (r = this.i[2 * e + 1]), (n = (this.S + this.S) * this.c[M] * t + t * this.S * t), (O.a[2] = O.a[2] + n), (r.a[2] = n + r.a[2]), (a = O.a[0]), (s = this.A[0]), s > O.a[0] && ((s = O.a[0]), (this.A[0] = a), (a = O.a[0])), (o = O.a[1]), (l = this.A[1]), l > o && ((l = O.a[1]), (this.A[1] = o), (o = O.a[1])), (h = O.a[2]), (u = this.A[2]), u > h && ((u = O.a[2]), (this.A[2] = h), (h = O.a[2])), a > this.B[0] && (this.B[0] = a), o > this.B[1] && (this.B[1] = o), h > this.B[2] && (this.B[2] = h), (c = r.a[0]), s > r.a[0] && ((this.A[0] = c), (c = r.a[0])), (f = r.a[1]), l > f && ((this.A[1] = f), (f = r.a[1])), (d = r.a[2]), u > d && ((this.A[2] = d), (d = r.a[2])), c > this.B[0] && (this.B[0] = c), f > this.B[1] && (this.B[1] = f), d > this.B[2] && (this.B[2] = d), (X = this.c.length), (this.c[M] = t + this.c[M]), (b = this.l), (q = this.c.length), (g = b * this.c[M] * this.k + this.p.b), (O.c[1] = this.p.a), (O.c[0] = g), (r.c[1] = this.p.c), (r.c[0] = g), (_ = this.c.length), (z = P + 1), (e = z - _), _ > z && (e = z); this.N = !0; } at(t, e) { let i = e + t; t = i; let r = this.c.length; return i >= r && (t = i - r), t; } au(t, e, i, r, n, a) { let s, o, l, h, u, c, f, d; (f = Math.ceil(t)), (d = Math.max(0.25, e)), (s = Math.ceil(d * f)), (o = Math.ceil(Math.max(s + 1 + 1, 0))), (this.c = new Array(o)), (this.e = 0), (this.d = 0), (this.f = 0), (this.J = !1), (this.i = new Array(2 * o)); for (let t = 0; t < this.i.length; t++) { this.i[t] = new Dn(); let e = this.i[t]; (e.a[0] = 0), (e.a[1] = 0), (e.a[2] = 0), (e.b = er(0, 0, 0, 0)), (e.c[0] = 0), (e.c[1] = 0); } this.j = new Array(4 * o); for (let t = 0; t < this.j.length; t++) this.j[t] = t % (2 * o); (this.k = 1 / d), (l = a), 0 != (2147483648 & a) && (l = ((1 & a) | (a >> 1)) + ((1 & a) | (a >> 1))), (this.l = (r.d - r.b) / l), (h = n), 0 != (2147483648 & n) && (h = ((1 & n) | (n >> 1)) + ((1 & n) | (n >> 1))), (this.m = (r.c - r.a) / h), (this.n = 1 / this.l), (this.o = 1 / this.m), (this.C = f), (this.D = d), ar(i, i, 1 / 255), (this.F = i), (this.G = r), (this.H = n), (this.I = a), (this.P = 0), (u = 0 * this.l + this.G.b), (this.p.b = u), (c = 0 * this.m + this.G.a), (this.p.a = c), (this.p.d = u + this.l), (this.p.c = c + this.m), (this.Q = 10), (this.R = 10), (this.S = 0), (this.M = !0), (this.L = !0), (this.K = !0); } av() { let t = new Array(this.i.length); for (let e = 0, i = 0; e < this.i.length; ++e) (t[i++] = this.i[e].a[0]), (t[i++] = this.i[e].a[1]), (t[i++] = this.i[e].a[2]), (t[i++] = this.i[e].b[0]), (t[i++] = this.i[e].b[1]), (t[i++] = this.i[e].b[2]), (t[i++] = this.i[e].b[3]), (t[i++] = this.i[e].c[0]), (t[i++] = this.i[e].c[1]); if (this.ah()) return; let e = this.V; this.W ? (e.bindBuffer(e.ARRAY_BUFFER, this.W), e.bufferData(e.ARRAY_BUFFER, new Float32Array(t), e.DYNAMIC_DRAW)) : ((this.W = e.createBuffer()), e.bindBuffer(e.ARRAY_BUFFER, this.W), e.bufferData(e.ARRAY_BUFFER, new Float32Array(t), e.DYNAMIC_DRAW)), this.X ? (e.bindBuffer(e.ELEMENT_ARRAY_BUFFER, this.X), e.bufferData(e.ELEMENT_ARRAY_BUFFER, new Uint16Array(this.j), e.DYNAMIC_DRAW)) : ((this.X = e.createBuffer()), e.bindBuffer(e.ELEMENT_ARRAY_BUFFER, this.X), e.bufferData(e.ELEMENT_ARRAY_BUFFER, new Uint16Array(this.j), e.DYNAMIC_DRAW)); } aw(t) { if (this.ah()) return; let e = this.V; for (let r = 0; r < this.U.j.length; r++) { if (!this.ab[r]) { let t = new en(); (t.a = se( e, [ ' attribute vec3 aPosition;\n attribute vec4 aColor;\n attribute vec2 aTexcoord0;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjMatrix;\n varying vec4 vColor;\n varying vec2 vTexcoord0;\n void main() {\n vec4 aPositionVec4 = vec4(aPosition, 1);\n vColor = aColor;\n vTexcoord0 = aTexcoord0;\n gl_Position = uProjMatrix * uViewMatrix * aPositionVec4;\n }', ' precision mediump float; varying vec4 vColor;\n varying vec2 vTexcoord0;\n uniform sampler2D uTexture;\n void main() {\n vec4 tex = texture2D(uTexture, vTexcoord0).rgba;\n gl_FragColor = vec4((vColor.rgb*tex.rgb), tex.a * vColor.a );\n }', ], null, null, )), (t.b = {}), (t.a.attributes = [ { loc: e.getAttribLocation(t.a.program, 'aPosition'), type: e.FLOAT, size: 3, offset: 0, stride: 36 }, { loc: e.getAttribLocation(t.a.program, 'aColor'), type: e.FLOAT, size: 4, offset: 12, stride: 36 }, { loc: e.getAttribLocation(t.a.program, 'aTexcoord0'), type: e.FLOAT, size: 2, offset: 28, stride: 36 }, ]), (t.c = this.W), (t.d = this.X), (this.ab[r] = t); } var i = this.U.j[r]; if (i <= -1 || i > this.a.aw.length) continue; let n = this.a.aw[i]; if (!n.f || !n.f.f) continue; let a = r; a >= this.U.k.length && (a = 0); let s = this.a.av[this.U.k[a]]; (this.ab[r].b.uViewMatrix = this.a.aS.viewMatrix), (this.ab[r].b.uProjMatrix = this.a.aS.projMatrix), (this.ab[r].b.uTexture = n.f.d), (this.ab[r].h = !1), (this.ab[r].f = !1), (this.ab[r].e = Un[s.b]), (this.ab[r].i = !this.a.aY); let o = this.d > this.e ? 2 * (this.d - this.e) + 2 : 2 * (this.c.length + this.d - this.e) + 2; (this.ab[r].j = e.TRIANGLE_STRIP), (this.ab[r].k = o), (this.ab[r].l = 2 * this.e * 2), t.push(this.ab[r]); } } }, On = 'uniform float x;\r\nuniform float y;\r\nuniform float width;\r\nuniform float height;\r\n\r\nattribute vec2 aTextCoord;\r\nvarying vec2 vTextCoords;\r\nvoid main() {\r\n vTextCoords = aTextCoord;\r\n\r\n vec2 pos = vec2(\r\n (x + aTextCoord.x*width)* 2.0 - 1.0,\r\n (y + aTextCoord.y*height)* 2.0 - 1.0\r\n );\r\n\r\n gl_Position = vec4(pos.x, pos.y, 0, 1);\r\n}'; class Nn { constructor() { (this.a = null), (this.b = null), (this.c = null); } d() { null != this.a && this.a.h(), null != this.b && this.b.h(), null != this.c && this.c.h(); } e() { return !(this.a && !this.a.g()) && !(this.b && !this.b.g()) && !(this.c && !this.c.g()); } } class Ln { constructor() { (this.a = null), (this.b = null), (this.c = null), (this.d = {}), (this.i = new be()); } } let Hn = null, Vn = null, jn = null; class Gn { constructor(t, e, i) { (this.h = !1), (this.e = t), (this.f = e), (this.g = i), (function (t) { (Vn = t.createTexture()), t.bindTexture(t.TEXTURE_2D, Vn), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, 1, 1, 0, t.RGBA, t.UNSIGNED_BYTE, new Uint8Array([0, 0, 0, 0])), t.bindTexture(t.TEXTURE_2D, null), (jn = t.createTexture()), t.bindTexture(t.TEXTURE_2D, jn), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, 1, 1, 0, t.RGBA, t.UNSIGNED_BYTE, new Uint8Array([0, 0, 0, 255])), t.bindTexture(t.TEXTURE_2D, null), (Hn = new Ln()); let e = Hn; (e.a = se( t, [ On, 'precision mediump float;\r\nvarying vec2 vTextCoords;\r\nuniform sampler2D uDiffuseTexture;\r\nuniform sampler2D uSpecularTexture;\r\nuniform sampler2D uEmissiveTexture;\r\nuniform sampler2D renderResultTexture;\r\nuniform int uBlendMode;\r\nuniform int layer;\r\nuniform vec2 screenResolution;\r\n\r\nfloat overlayBlend(float a, float b) {\r\n if (b <= 0.5) {\r\n return 2.0 * a * b;\r\n } else {\r\n return 1.0 - ((2.0 * (1.0 - a) * (1.0 - b)));\r\n// return (1.0 - (1.0 - 2.0 * (a - 0.5)) * (1.0 - b));\r\n }\r\n}\r\n\r\nfloat alphaStraightBlend(float a, float b, float alpha) {\r\n return (a * alpha) + (b * (1.0 - alpha));\r\n}\r\n\r\nvoid main() {\r\n vec4 diffuse = texture2D( uDiffuseTexture, vTextCoords.xy );\r\n vec4 backGround = texture2D( renderResultTexture, gl_FragCoord.xy / screenResolution );\r\n\r\n //Blit and Inferior Alpha\r\n if (uBlendMode == 0 || uBlendMode == 4) {\r\n if (diffuse.a < 0.001) discard;\r\n\r\n vec3 finalColor = mix(backGround.rgb, diffuse.rgb, diffuse.a);\r\n\r\n diffuse = vec4(finalColor.rgb, 1.0);\r\n } else\r\n if (uBlendMode == 1) {\r\n // Multiply blending //\r\n if (diffuse.a < 0.001) discard;\r\n\r\n vec4 multTexture = diffuse;\r\n vec3 finalColor = (diffuse.rgb * backGround.rgb);\r\n\r\n diffuse = vec4(finalColor.rgb, 1.0);\r\n } else if (uBlendMode == 2) {\r\n // Overlay Blending //\r\n if (diffuse.a < 0.001) discard;\r\n\r\n vec4 overlayTex = diffuse;\r\n\r\n vec3 finalColor = vec3(\r\n overlayBlend(overlayTex.r, backGround.r),\r\n overlayBlend(overlayTex.g, backGround.g),\r\n overlayBlend(overlayTex.b, backGround.b)\r\n );\r\n\r\n diffuse = vec4(finalColor, 1.0);\r\n// diffuse = vec4(finalColor.rgb, overlayTex.a);\r\n } else if (uBlendMode == 3) {\r\n// if (diffuse.a > 0.5) discard;\r\n // Alpha Straight //\r\n vec4 overlayTex = diffuse;\r\n\r\n float alphaMult = 1.0;\r\n vec3 finalColor = vec3(\r\n alphaStraightBlend(overlayTex.r, backGround.r, alphaMult*overlayTex.a),\r\n alphaStraightBlend(overlayTex.g, backGround.g, alphaMult*overlayTex.a),\r\n alphaStraightBlend(overlayTex.b, backGround.b, alphaMult*overlayTex.a)\r\n );\r\n\r\n diffuse = vec4(finalColor.rgb, 1.0);\r\n// diffuse = vec4(1.0,1.0,1.0, 1.0-overlayTex.a);\r\n }\r\n\r\n gl_FragColor = diffuse;\r\n}', ], null, null, )), (e.b = se( t, [ On, 'precision mediump float;\r\n\r\nvarying vec2 vTextCoords;\r\nuniform sampler2D uDiffuseTexture;\r\nuniform sampler2D uSpecularTexture;\r\nuniform sampler2D uEmissiveTexture;\r\nuniform sampler2D renderResultTexture;\r\nuniform int uBlendMode;\r\n\r\nvoid main() {\r\n vec4 diffuse = texture2D( uDiffuseTexture, vTextCoords.xy );\r\n vec4 specular = texture2D( uSpecularTexture, vTextCoords.xy );\r\n if (diffuse.a < 0.001) discard;\r\n gl_FragColor = vec4(specular.rgb, 1.0);\r\n}', ], null, null, )), (e.c = se( t, [ On, 'precision mediump float;\r\n\r\nvarying vec2 vTextCoords;\r\nuniform sampler2D uDiffuseTexture;\r\nuniform sampler2D uSpecularTexture;\r\nuniform sampler2D uEmissiveTexture;\r\nuniform sampler2D renderResultTexture;\r\nuniform vec2 screenResolution;\r\nuniform int uBlendMode;\r\nuniform float emissiveAlphaOverride;\r\nuniform int layer;\r\n\r\nvoid main() {\r\n vec4 diffuse = texture2D( uDiffuseTexture, vTextCoords.xy );\r\n vec4 emissive = texture2D( uEmissiveTexture, vTextCoords.xy );\r\n vec4 backGround = texture2D( renderResultTexture, gl_FragCoord.xy / screenResolution );\r\n\r\n if (diffuse.a < 0.001) discard;\r\n// if (emissive.a < 0.001) discard;\r\n\r\n //TODO: This is a hack from what was obeserved in Nightbourn texture customization with tatoos.\r\n //TODO: But Maybe switch should be over layer or something else instead of blend\r\n float alpha = 1.0;\r\n\r\n if (emissiveAlphaOverride > -1.0) {\r\n alpha = emissiveAlphaOverride;\r\n } else if (layer <= 1) {\r\n alpha = 0.0;\r\n } else {\r\n alpha = emissive.a;\r\n }\r\n\r\n\r\n gl_FragColor = vec4(emissive.rgb, alpha);\r\n}', ], null, null, )), (e.d = {}), (e.f = t.createBuffer()), t.bindBuffer(t.ARRAY_BUFFER, e.f), t.bufferData(t.ARRAY_BUFFER, new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]), t.STATIC_DRAW), t.bindBuffer(t.ARRAY_BUFFER, null), (e.e = t.createBuffer()), t.bindBuffer(t.ELEMENT_ARRAY_BUFFER, e.e), t.bufferData(t.ELEMENT_ARRAY_BUFFER, new Int16Array([0, 1, 2, 1, 3, 2]), t.STATIC_DRAW), t.bindBuffer(t.ELEMENT_ARRAY_BUFFER, null), (e.g = t.createFramebuffer()), (e.h = { loc: t.getAttribLocation(e.a.program, 'aTextCoord'), type: t.FLOAT, size: 2, offset: 0, stride: 0 }); })(t); } i() { let t = this.e; this.d && t.deleteTexture(this.d), this.a && t.deleteTexture(this.a), this.b && t.deleteTexture(this.b), this.c && t.deleteTexture(this.c), (this.d = t.createTexture()), t.bindTexture(t.TEXTURE_2D, this.d), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, this.f, this.g, 0, t.RGBA, t.UNSIGNED_BYTE, null), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, t.LINEAR), (this.a = t.createTexture()), t.bindTexture(t.TEXTURE_2D, this.a), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, this.f, this.g, 0, t.RGBA, t.UNSIGNED_BYTE, null), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, t.LINEAR), (this.b = t.createTexture()), t.bindTexture(t.TEXTURE_2D, this.b), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, this.f, this.g, 0, t.RGBA, t.UNSIGNED_BYTE, null), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, t.LINEAR), (this.c = t.createTexture()), t.bindTexture(t.TEXTURE_2D, this.c), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, this.f, this.g, 0, t.RGBA, t.UNSIGNED_BYTE, null), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, t.LINEAR), t.bindTexture(t.TEXTURE_2D, null), t.bindFramebuffer(t.FRAMEBUFFER, Hn.g), t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_2D, this.a, 0), t.clear(t.COLOR_BUFFER_BIT | t.DEPTH_BUFFER_BIT), t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_2D, this.b, 0), t.clear(t.COLOR_BUFFER_BIT | t.DEPTH_BUFFER_BIT), t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_2D, this.c, 0), t.clear(t.COLOR_BUFFER_BIT | t.DEPTH_BUFFER_BIT), t.useProgram(Hn.b.program), t.bindBuffer(t.ARRAY_BUFFER, Hn.f), t.bindBuffer(t.ELEMENT_ARRAY_BUFFER, Hn.e), Hn.i.disableAll(), Hn.i.enable(t, [Hn.h]), t.viewport(0, 0, this.f, this.g); } j(t, e, i, r, n, a, s, o) { let l = this.e; (Hn.d.x = e), (Hn.d.y = i), (Hn.d.width = r), (Hn.d.height = n), (null == t.b && null == t.c) || (this.h = !0); let h = 0; 4 == a ? (h = 1) : 6 == a ? (h = 2) : 9 == a ? (h = 3) : 15 == a && (h = 4), (Hn.d.uBlendMode = h), (Hn.d.screenResolution = new Float32Array([this.f, this.g])), (Hn.d.uDiffuseTexture = null != t.a ? t.a.d : Vn), (Hn.d.uSpecularTexture = null != t.b ? t.b.d : Vn), (Hn.d.uEmissiveTexture = null != t.c ? t.c.d : jn), (Hn.d.renderResultTexture = null != this.d ? this.d : Vn), (Hn.d.layer = s), (Hn.d.emissiveAlphaOverride = o), l.disable(l.CULL_FACE), l.disable(l.DEPTH_TEST), l.disable(l.BLEND), l.useProgram(Hn.a.program), l.framebufferTexture2D(l.FRAMEBUFFER, l.COLOR_ATTACHMENT0, l.TEXTURE_2D, this.a, 0), l.bindTexture(l.TEXTURE_2D, this.d), l.copyTexImage2D(l.TEXTURE_2D, 0, l.RGBA, 0, 0, this.f, this.g, 0), l.bindTexture(l.TEXTURE_2D, null), re(Hn.a, Hn.d), l.drawElements(l.TRIANGLES, 6, l.UNSIGNED_SHORT, 0), l.useProgram(Hn.b.program), l.framebufferTexture2D(l.FRAMEBUFFER, l.COLOR_ATTACHMENT0, l.TEXTURE_2D, this.b, 0), l.bindTexture(l.TEXTURE_2D, this.d), l.copyTexImage2D(l.TEXTURE_2D, 0, l.RGBA, 0, 0, this.f, this.g, 0), l.bindTexture(l.TEXTURE_2D, null), re(Hn.b, Hn.d), l.drawElements(l.TRIANGLES, 6, l.UNSIGNED_SHORT, 0), l.useProgram(Hn.c.program), l.framebufferTexture2D(l.FRAMEBUFFER, l.COLOR_ATTACHMENT0, l.TEXTURE_2D, this.c, 0), l.bindTexture(l.TEXTURE_2D, this.d), l.copyTexImage2D(l.TEXTURE_2D, 0, l.RGBA, 0, 0, this.f, this.g, 0), l.bindTexture(l.TEXTURE_2D, null), re(Hn.c, Hn.d), l.drawElements(l.TRIANGLES, 6, l.UNSIGNED_SHORT, 0), l.useProgram(null); } k() { let t = this.e; t.bindFramebuffer(t.FRAMEBUFFER, null), t.enable(t.CULL_FACE), t.enable(t.DEPTH_TEST); } } class Xn { constructor(t, e) { (this.a = t), (this.b = e); } c() { const t = []; for (let e of this.b.Options) for (let i of e.Choices) for (let e of i.Elements) e.SkinnedModel && t.push(e.SkinnedModel.CollectionFileDataID); const e = new Set(t); if (0 != e.size) { e.size > 1 && WH.debug('more than 1 skinned model detected!'); let i = t[0], r = { type: hi.PATH, id: i, parent: this.a, shoulder: 0 }; this.a.aR = new $n(this.a.aS, this.a.k, r, 0, !1, !1, !1); } } d(t) { return gn.a(this.a, this.b.TextureFiles[t], this.a.o, this.a.p, this.a.n); } e(t) { WH.debug('applyCustomization options', t), (this.a.M = []), this.a.bu(0); for (let t = 0; t < this.a.K.length; t++) this.a.K[t] = -1; if (this.a.aR) for (let t = 0; t < this.a.aR.K.length; t++) this.a.aR.K[t] = -1; for (let e = 0; e < t.length; e++) { let i = this.b.Options.find((i) => i.Id == t[e].optionId); if ((WH.debug('option', i), i)) { let r = i.Choices.find((i) => i.Id == t[e].choiceId); if ((WH.debug('choice', r), r)) { let e = r.Elements.filter( (e) => e.BoneSet && e.BoneSet.BoneFileDataID && (0 == e.VariationChoiceID || t.some((t) => t.choiceId == e.VariationChoiceID)), ); e.length > 0 && this.a.bu(e[0].BoneSet.BoneFileDataID); let n = r.Elements.filter( (e) => e.Material && (0 == e.VariationChoiceID || t.some((t) => t.choiceId == e.VariationChoiceID)), ); n.sort((t, e) => e.VariationChoiceID - t.VariationChoiceID), n.forEach((t) => { WH.debug('element material', t); let e = this.d(t.Material.MaterialResourcesID); if (!e) return void WH.debug("element material: can't get texture files for material", t); let i = this.b.TextureLayers.find((e) => e.ChrModelTextureTargetID == t.Material.TextureTarget); i ? 1 == i.TextureType ? t.Material.TextureTarget == Li ? (this.a.C[1][0] = this.a.bA(1, e)) : this.a.D[t.Material.TextureTarget] || (this.a.D[t.Material.TextureTarget] = this.a.bA(i.TextureSection, e)) : 6 == i.TextureType ? (this.a.C[6][0] = this.a.bA(6, e)) : 7 == i.TextureType ? (this.a.C[7][0] = this.a.bA(7, e)) : 8 == i.TextureType ? (this.a.C[8][0] = this.a.bA(8, e)) : 10 == i.TextureType ? (this.a.C[10][0] = this.a.bA(10, e)) : 19 == i.TextureType ? (this.a.C[19][0] = this.a.bA(19, e)) : 20 == i.TextureType ? (this.a.C[20][0] = this.a.bA(20, e)) : 21 == i.TextureType ? (this.a.C[21][0] = this.a.bA(21, e)) : 22 == i.TextureType ? (this.a.C[22][0] = this.a.bA(22, e)) : WH.debug('unhandled texture type', i.TextureType, 'target', t.Material.TextureTarget) : WH.debug("element material: can't get texture layer for material", t); }), r.Elements.filter( (e) => e.Geoset && (0 == e.VariationChoiceID || t.some((t) => t.choiceId == e.VariationChoiceID)), ).forEach((t) => { WH.debug('element geoset', t), this.a.bD(t.Geoset); }), r.Elements.filter( (e) => e.SkinnedModel && (0 == e.VariationChoiceID || t.some((t) => t.choiceId == e.VariationChoiceID)), ).forEach((t) => { WH.debug('element skinnedmodel', t), this.a.aR && this.a.aR.bD(t.SkinnedModel); }); let a = r.Elements.find( (e) => 0 != e.CondModelFileDataId && (0 == e.VariationChoiceID || t.some((t) => t.choiceId == e.VariationChoiceID)), ); if (24 == i.Id || 353 == i.Id) if (a && !this.a.c) { WH.debug('element condModel', a); let e = this.a.aS, i = this.a.a, r = e.models.indexOf(this.a); if (r > -1) { e.models.splice(r, 1), WH.debug('test 1!', t, e.options, i), (e.options.charCustomization = this.a.q); let n = new $n(e, e.options, i, r, !0, !1, !1, a.CondModelFileDataId); return (n.q = this.a.q), e.models.push(n), void this.a.ba(); } } else if (!a && this.a.c) { let e = this.a.aS, i = this.a.a, r = e.models.indexOf(this.a); if (r > -1) { e.models.splice(r, 1), WH.debug('test 2!', t, e.options, i), (e.options.charCustomization = this.a.q); let n = new $n(e, e.options, i, r, !0, !1, !1); return (n.q = this.a.q), e.models.push(n), void this.a.ba(); } } r.Elements.filter( (e) => e.ChrCustItemGeoModifyID && (0 == e.VariationChoiceID || t.some((t) => t.choiceId == e.VariationChoiceID)), ).forEach((t) => { WH.debug('element ChrCustItemGeoModify', t), this.a && this.a.M.push(t.ChrCustItemGeoModifyID); }); } } } if (!this.a.C[6][0]) { let e = this.b.Options.find((t) => t.Id == this.b.HairStyleOptionId); if (e) { let i = e.Choices[1]; if (i) { let e = i.Elements.filter( (e) => e.Material && e.Material.TextureTarget == Hi && (0 == e.VariationChoiceID || t.some((t) => t.choiceId == e.VariationChoiceID)), ); if (e.length > 0) { let t = this.d(e[0].Material.MaterialResourcesID); t && (this.a.C[6][0] = this.a.bA(6, t)); } } } } } f() { let t = []; for (let e = 0; e < this.b.Options.length; e++) { let i = this.b.Options[e]; if (i) { let e = i.Choices[0]; e && t.push({ optionId: i.Id, choiceId: e.Id }); } } this.e(t); } g(t) { let e = { options: t, sheathMain: -1, sheathOff: -1 }; for (let t of this.b.Options) e.options.some((e) => e.optionId == t.Id) || e.options.push({ optionId: t.Id, choiceId: t.Choices[0].Id }); return e; } } const qn = function (t, e) { const i = Math.abs(t), r = Math.abs(e); return Number((i - Math.floor(i / r) * r).toPrecision(8)) * Math.sign(t); }, Wn = 44, Yn = 4400, Zn = 'DressingRoom', Jn = 'Stand'; class Kn { constructor(t, e, i, r, n, a, s, o) { (this.e = !1), (this.r = 0), (this.s = null), (this.t = null), (this.E = []), (this.M = []), (this.R = new Ir()), (this.T = !1), (this.an = []), (this.aG = []), (this.aH = []), (this.aJ = null), (this.aQ = !1), (this.aT = null), (this.aU = null), (this.aV = null), (this.aX = []), (this.aY = !1); var l = this; if ( ((l.e = n), (l.aS = t), (l.a = i), (l.b = r), (l.c = o), (l.d = !1), (l.f = !0), (l.g = !0), (this.h = !1), (l.ad = a), (l.k = e), 'classic' == l.k.gameDataEnv ? ((pi[14] = 14), (pi[15] = 15)) : ((pi[14] = 22), (pi[15] = 22)), (l.i = null), (l.l = l.k.mount && l.k.mount.type == hi.NPC && l.k.mount.id == l.a.id), (l.j = null), (l.m = l.k.pet && l.k.pet.type == hi.NPC && l.k.pet.id == l.a.id), l.a.type == hi.CHARACTER && l.k.mount && l.k.mount.type == hi.NPC && l.k.mount.id && ((l.k.mount.parent = l), (l.i = new Kn(t, e, l.k.mount, 0, !1, !1, !1))), l.a.type == hi.CHARACTER && l.k.pet && l.k.pet.type == hi.NPC && l.k.pet.id && ((l.k.pet.parent = l), (l.j = new Kn(t, e, l.k.pet, 0, !1, !1, !1))), l.k.extraModels && !l.a.parent) ) { l.A = []; const i = l.k.extraModels; if ($.isArray(i)) for (let r = 0; r < i.length; ++r) { const n = { type: hi.PATH, id: i[r][0], parent: l, shoulder: -1 }; l.A.push(new Kn(t, e, n, 0, !1, !1, !1)); } } (l.n = 0), (l.o = -1), (l.p = l.k.cls ? parseInt(l.k.cls) : 0), (l.u = null), (l.v = l.a.parent || null), (l.x = new Map()), (this.y = [null, null]), (l.w = !1), (l.B = {}), (l.aJ = null), (l.aK = null), (l.C = []); for (let t = 0; t < 25; t++) l.C.push({}); (l.D = {}), (l.H = -1), (l.I = -1), (l.J = new Array(Wn)), (l.K = new Array(Wn)), (l.L = [ 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, ]), (l.N = null), (l.O = 0); for (let t = 0; t < Wn; t++) l.J[t] = 100 * t + l.L[t]; (l.P = 0), (l.Q = 0), (l.R.c = 0), (l.R.a.a = -1), (l.S = !1), (l.U = je()), (l.V = er(1, 1, 1, 1)), (l.W = [0.35, 0.35, 0.35, 1]), (l.X = [1, 1, 1, 1]), (l.Y = [0.35, 0.35, 0.35, 1]), (l.Z = ve()), (l.aa = ve()), (l.ab = ve()), Ue(l.Z, [5, -3, 3]), Ue(l.aa, [5, 5, 5]), Ue(l.ab, [-5, -5, -5]), (l.ac = !1), (l.ae = we(0, 0, 0)), (l.af = we(0, 0, 0)), (l.ag = we(0, 0, 0)), (l.boundsSize = we(0, 0, 0)), (l.ak = null), (l.al = null), (l.an = null), (l.ao = null), (l.ap = null), (l.aq = null), (l.ar = null), (l.as = null), (l.at = null), (l.au = null), (l.av = null), (l.aw = null), (l.ax = null), (l.ay = null), (l.az = null), (l.aA = null), (l.aB = null), (l.aC = null), (l.aD = null), (l.aE = null), (l.aF = null), (l.aG = null), (l.aH = null), (l.aM = je()), (l.aN = ve()), (l.aO = ve()), (l.aP = Qi()), s || l.bP(); } bZ(t) { if (this[t]) { for (var e = this[t], i = 0; i < e.length; ++i) e[i] && e[i].destroy && e[i].destroy(), (e[i] = null); this[t] = null; } } ba() { var t = this; if (((this.aQ = !0), (this.d = !1), t.aK && t.aK.d(), t.C)) for (let e = 0; e < t.C.length; ++e) for (const i in t.C[e]) t.C[e][i].d(); if (t.B) for (const e in t.B) t.B[e].h(); if ( (t.al && (t.al = null), t.ao && (t.ao = null), t.aq && (t.aq = null), t.ar && (t.ar = null), t.au && (t.au = null), t.ax && (t.ax = null), t.az && (t.az = null), t.aA && (t.aA = null), t.aC && (t.aC = null), t.aF && (t.aF = null), t.av) ) for (let e = 0; e < t.av.length; ++e) t.av[e] = null; (t.av = null), this.bZ('vertices'), this.bZ('animations'), this.bZ('bones'), this.bZ('meshes'), this.bZ('texUnits'), this.bZ('materials'), this.bZ('textureAnims'), this.bZ('attachments'), this.bZ('colors'), this.bZ('alphas'), this.bZ('particleEmitters'), this.bZ('ribbonEmitters'), this.bZ('skins'), this.bZ('faces'), this.bZ('hairs'), (this.an = null), t.x && t.x.forEach((e, i) => { e.x(), t.x.set(i, null); }), t.i && t.i.ba(), (t.i = null), t.j && t.j.ba(), (t.j = null), t.aR && t.aR.ba(), (t.aR = null), (t.a = null), (t.x = null), (t.B = null), (t.C = null), (t.J = null), (t.U = null), (t.W = null), (t.X = null), (t.Y = null), (t.Z = null), (t.aa = null), (t.ab = null), (t.ae = null), (t.af = null), (t.ag = null), (t.boundsSize = null), (t.aM = null), (t.aN = null), (t.aO = null), (t.aP = null); } getNumAnimations() { const t = this.i ? this.i : this; return t.an ? t.an.length + 1 : 0; } getAnimation(t) { const e = this.i ? this.i : this; return e.an && t > -1 && t < e.an.length ? e.an[t].j : t == e.an.length ? Zn : ''; } resetAnimation() { (this.i ? this.i : this).setAnimation(Jn); } setAnimPaused(t) { var e; (this.S = t), null === (e = this.i) || void 0 === e || e.setAnimPaused(t), this.E.forEach((e) => e.f(t)); } setAnimNoSubAnim(t) { this.T = t; } bg(t) { var e; null === (e = this.j) || void 0 === e || e.setAnimation(t); } setItems(t) { WH.debug('setItems', t); const e = []; for (let i = 0; i < t.length; i++) e.push([t[i].slot, t[i].display, t[i].visual]); e.forEach((t) => { const e = [parseInt(t[0]), parseInt(t[1])]; this.k.items.push(e); }), this.bK(e), (this.w = !0); } attachList(t) { WH.debug('attachList', t); const e = t.split(','), i = []; for (let t = 0; t < e.length; t += 2) i.push([e[t], e[t + 1]]); i.forEach((t) => { const e = [parseInt(t[0]), parseInt(t[1])]; this.k.items.push(e); }), this.bK(i), (this.w = !0); } clearSlots(t) { WH.debug('clearSlots', t); const e = t.split(','); for (let t = 0; t < e.length; ++t) { this.bM(parseInt(e[t])); const i = []; this.k.items.forEach((e) => { 0 != this.k.items[t].indexOf(parseInt(e)) && i.push(e); }), (this.k.items = i); } this.bJ(), (this.w = !0); } setShouldersOverride(t) { if ((WH.debug('setShouldersOverride', t), !t || 2 != t.length)) return; for (let t = 0; t < 2; t++) { const e = this.y[t]; e && e.x(), (this.y[t] = null); } for (let e = 0; e < 2; e++) if (null != t[e]) { const i = new _n(this, wi, t[e], this.n, this.o); let r = 0; (r = 0 == e ? 1 : 2), i.B(r), (this.y[e] = i); } const e = this.x.get(wi); if (e) { let t = 3; for (let e = 0; e < 2; e++) this.y[e] && (t &= ~(1 << e)); e.B(t); } } setSheath(t, e) { (this.H = t), (this.I = e), this.bJ(); } setAppearance(t) { var e; const i = function (t, e) { t[e].d(), delete t[e]; }; if ( (this.C[1][0] && i(this.C[1], 0), this.C[6][0] && i(this.C[6], 0), this.C[8][0] && i(this.C[8], 0), this.C[19][0] && i(this.C[19], 0), this.C[19][1] && i(this.C[19], 1), this.D) ) for (const t in this.D) this.D[t].d(), delete this.D[t]; (this.q = t), (this.H = t.sheathMain), (this.I = t.sheathOff), null === (e = this.F) || void 0 === e || e.e(t.options), (this.w = !0), this.bB(), this.bJ(); } setCustomizationsLoadedCallback(t) { this.G = t; } isLoaded() { return this.i ? this.i.d && this.d : this.d; } setParticlesEnabled(t) { (this.f = t), this.x.forEach(function (e) { if (e.i) for (let i = 0; i < e.i.length; ++i) if (e.i[i] && (e.i[i].e.setParticlesEnabled(t), e.r[i] && e.r[i].b)) { const r = e.i[i].e; for (let n = 0; n < e.r[i].b.length; n++) r.aB && r.aB[n] && e.r[i].b[n] && e.r[i].b[n].e.setParticlesEnabled(t); } }); } setRibbonsEnabled(t) { this.g = t; } getTexUnits() { return this.aL; } bs(t, e, i, r) { Ge(this.U, t), Ye(this.U, this.U, e), i && Ze(this.U, this.U, i), r && Ye(this.U, this.U, r); } bt(t, e) { let i = !1; const r = t == Zn; r && (t = Jn); for (let n = 0; n < this.an.length; ++n) { const a = this.an[n]; if (a.j && a.j == t && 0 == a.b) { (i = !0), (e.a.a = n), (e.a.b = a), (e.a.c = 0), (e.b = new Dr()), (e.c = 0), (e.d = r), WH.debug('Set animation to', a.a, a.j); break; } } t == Jn || i || this.bt(Jn, e); } bu(t) { if (this.r == t) return; if (this.d) for (let t = 0; t < this.ap.length; t++) this.ap[t].v = null; if (((this.r = t), t <= 0)) return; let e = this.k.contentPath + 'bone/' + t + '.bone', i = this; $.ajax({ url: e, type: 'GET', dataType: 'binary', responseType: 'arraybuffer', processData: !1, renderer: this.aS, success: function (t) { i.bv(t); }, error: function (t, e, i) { console.log(i); }, }); } bv(t) { let e = new Rn(t); e.getInt32(); for (; e.position < e.buffer.byteLength; ) { let t = String.fromCharCode(e.getUint8(), e.getUint8(), e.getUint8(), e.getUint8()), i = e.getUint32(); if ('BIDA' == t) { let t = i / 2; this.s = new Array(t); for (let i = 0; i < t; i++) this.s[i] = e.getUint16(); } if ('BOMT' == t) { let t = i / 64; this.t = new Array(t); for (let i = 0; i < t; i++) { let t = Xe( e.getFloat(), e.getFloat(), e.getFloat(), e.getFloat(), e.getFloat(), e.getFloat(), e.getFloat(), e.getFloat(), e.getFloat(), e.getFloat(), e.getFloat(), e.getFloat(), e.getFloat(), e.getFloat(), e.getFloat(), e.getFloat(), ); this.t[i] = t; } } } this.d && this.bw(); } bw() { if (!(this.r <= 0) && this.s && this.s.length) for (let t = 0; t < this.s.length; t++) this.ap[this.s[t]].v = this.t[t]; } setAnimation(t) { this.an && (this.i && (this.i.setAnimation(t), (t = oi[this.i.a.id] ? 'StealthStand' : 'Mount')), this.bt(t, this.R), this.x.forEach((e) => { if (e.i) for (let i = 0; i < e.i.length; i++) e.i[i].e.setAnimation(t); }), this.E && this.E.forEach((e) => e.e(t))); } by(t) { let e = this, i = e.aS.context; if (!e.ak || !e.al) return; const r = 10 * e.ak.length; if ((e.aT || (e.aT = new Float32Array(r)), t)) { var n = e.aT, a = e.ak; for (let t = 0, e = 0; t < r; ++e) (n[t + 0] = a[e].i[0]), (n[t + 1] = a[e].i[1]), (n[t + 2] = a[e].i[2]), (n[t + 3] = a[e].j[0]), (n[t + 4] = a[e].j[1]), (n[t + 5] = a[e].j[2]), (n[t + 6] = a[e].c), (n[t + 7] = a[e].d), (n[t + 8] = a[e].e), (n[t + 9] = a[e].f), (t += 10); } e.aU ? (i.bindBuffer(i.ARRAY_BUFFER, e.aU), i.bufferSubData(i.ARRAY_BUFFER, 0, e.aT)) : ((e.aU = i.createBuffer()), i.bindBuffer(i.ARRAY_BUFFER, e.aU), i.bufferData(i.ARRAY_BUFFER, e.aT, i.DYNAMIC_DRAW), (e.aV = i.createBuffer()), i.bindBuffer(i.ELEMENT_ARRAY_BUFFER, e.aV), i.bufferData(i.ELEMENT_ARRAY_BUFFER, new Uint16Array(e.al), i.STATIC_DRAW)); } bz() { let t, e = this, i = er(1, 1, 1, 1), r = e.ae, n = e.af, a = e.aN; if ((Ae(r, 9999, 9999, 999), Ae(n, -9999, -9999, -9999), !e.at)) return qe(e.U), e.v || (e.aS.distance = 1), !1; for (let a = 0; a < e.at.length; ++a) { let s = e.at[a]; if (!s.show) continue; if ( ((i[0] = i[1] = i[2] = i[3] = 1), e.R.a.a > 0 && (s.v && (i = s.v.g(e.R, this.aX)), s.w[0] && (i[3] *= s.w[0].d(e.R, this.aX))), i[3] < 0.01) ) continue; let o = s.p; for (let i = 0; i < o.f; ++i) (t = e.ak[e.al[o.e + i]].i), Me(r, r, t), ke(n, n, t); } const s = e.aR; if (s && s.d && s.at && s.at.length > 0) for (let e = 0; e < s.at.length; ++e) { let i = s.at[e]; if (!i.show) continue; let a = i.p; for (let e = 0; e < a.f; ++e) (t = s.ak[s.al[a.e + e]].i), Me(r, r, t), ke(n, n, t); } e.i && e.i.d && e.i.bz() && (ye(r, Fe(r, e.i.ae, 1.1)), ye(n, Fe(n, e.i.af, 1.1)), (n[2] *= 1.75)), e.a.type == hi.NPC && (Fe(r, r, e.u.Scale), Fe(n, n, e.u.Scale)), Ce(e.boundsSize, n, r), Re(e.ag, r, e.boundsSize, 0.5); let o, l, h = e.boundsSize[2]; const u = e.u && e.u.Scale ? e.u.Scale : 1; if ((e.a.type != hi.ITEM ? ((o = e.boundsSize[1]), (l = e.boundsSize[0])) : ((o = e.boundsSize[0]), (l = e.boundsSize[1])), !e.v)) { const t = e.aS.width / e.aS.height, i = 2 * Math.tan((e.aS.fov / 2) * 0.0174532925), r = (1.2 * h) / i, n = (1.2 * o) / (i * t); e.aS.distance = Math.max(Math.max(r, n), 2 * l); } return ( qe(e.U), e.a.type != hi.ITEM && Qe(e.U, e.U, Math.PI / 2), Ze(e.U, e.U, Ie(a, e.ag)), Ae(e.aN, u, u, u), Je(e.U, e.U, e.aN), !0 ); } bA(t, e) { let i = new Nn(); return e.a > 0 && (i.a = new an(this, t, e.a)), e.b > 0 && (i.b = new an(this, t, e.b)), e.c > 0 && (i.c = new an(this, t, e.c)), i; } bB() { this.aQ || ((this.a.type != hi.CHARACTER && this.a.type != hi.NPC && this.a.type != hi.HUMANOIDNPC) || this.n < 1 ? this.bF() : (this.bH(), this.aK || (this.w = !0))); } bC(t) { t && (this.J[t.geosetType] = 100 * t.geosetType + t.geosetID); } bD(t) { t && (this.K[t.GeosetType] = 100 * t.GeosetType + t.GeosetID); } bE(t, e, i) { if (!this.at || 0 == this.at.length) return !1; let r; for (let n = 0; n < this.at.length; ++n) (r = this.at[n]), r.meshId >= t && r.meshId <= e && (r.show = i); return !0; } bF() { if ((this.bE(0, 0, !0), 0 != this.O && (this.bE(1, 1699, !1), this.N))) for (let t of this.N) { let e = 100 * (t.GeosetIndex + 1), i = e + t.GeosetValue; this.bE(e, e + 99, !1), this.bE(i, i, !0); } } bG(t, e) { let i = []; for (let t = 0; t < this.ap.length; t++) i[this.ap[t].g] = t; let r = t.ap; if (r) { for (let t = 0; t < r.length; t++) { let e = i[r[t].g]; if ('number' != typeof e) continue; let n = r[t].m, a = this.ap[e].m; (r[t].s = !0), Ge(n, a); } qe(this.aM), t.bs(this.U, this.aM), t.bW(), t.bY(e); } } bH() { var t = this; if (!t.at || 0 == t.at.length) return; for (let e = 0; e < Wn; e++) t.J[e] = 100 * e + t.L[e]; t.bE(0, Yn, !1), t.bE(0, 0, !0); for (let e = 0; e < t.K.length; e++) -1 != this.K[e] && (this.J[e] = this.K[e]); for (let e = 0; e < t.J.length; e++) t.bE(t.J[e], t.J[e], !0); let e = t.x.get(Ti), i = t.x.get(yi), r = t.x.get(Ai), n = t.x.get(Ei), a = t.x.get(Ci), s = t.x.get(Si), o = t.x.get(Mi), l = t.x.get(ki), h = t.x.get(Ui), u = t.x.get(Ii); function c(t, e, i) { if (!t.at) return; let r = i + 1, n = e > 0 ? i + e : r, a = t.at.some((t) => t.meshId == n); (n = a ? n : r), t.bE(n, n, !0); } function f(t, e, i) { if (!t.at) return; let r = 100 * i, n = r + t.L[i] + e; t.bE(r, r + 99, !1), t.bE(n, n, !0); } if ( (t.x.forEach((t) => { if (t && t.q) { let e = t.q; e.bE(0, Yn, !1), t.b == Ti ? (c(e, t.k[0], 2700), c(e, t.k[1], 2100)) : t.b == wi ? c(e, t.k[0], 2600) : t.b == yi ? (c(e, t.k[0], 800), c(e, t.k[1], 1e3)) : t.b == Ai || t.b == Bi ? (c(e, t.k[0], 800), c(e, t.k[1], 1e3), c(e, t.k[2], 1300), c(e, t.k[3], 2200), c(e, t.k[4], 2800)) : t.b == Ei ? c(e, t.k[0], 1800) : t.b == Ci ? (c(e, t.k[0], 1100), c(e, t.k[1], 900), c(e, t.k[2], 1300)) : t.b == Si ? (c(e, t.k[0], 500), c(e, t.k[1], 2e3)) : t.b == ki ? (c(e, t.k[0], 400), c(e, t.k[1], 2300)) : t.b == Ii ? c(e, t.k[0], 1500) : t.b == Ui && c(e, t.k[0], 1200); } }), t.x.forEach((t) => { if (t && t.i) for (let e of t.i) { let i = e.e; t.b == Ti ? (f(i, t.l[0], 27), f(i, t.l[1], 21)) : t.b == wi ? f(i, t.l[0], 26) : t.b == yi ? (f(i, t.l[0], 8), f(i, t.l[1], 10)) : t.b == Ai || t.b == Bi ? (f(i, t.l[0], 8), f(i, t.l[1], 10), f(i, t.l[2], 13), f(i, t.l[3], 22), f(i, t.l[4], 28)) : t.b == Ei ? f(i, t.l[0], 18) : t.b == Ci ? (f(i, t.l[0], 11), f(i, t.l[1], 9), f(i, t.l[2], 13)) : t.b == Si ? (f(i, t.l[0], 5), f(i, t.l[1], 20)) : t.b == ki ? (f(i, t.l[0], 4), f(i, t.l[1], 23)) : t.b == Ii ? f(i, t.l[0], 15) : t.b == Ui && f(i, t.l[0], 12); } }), e) ) { const i = t.n, r = t.o == ui.MALE ? e.v : e.w; if (r) for (let e = 0; e < r.length; e++) if (r[e].RaceId == i) { const n = r[e].GeosetGroup; if (i == ci && (1 == n || 2 == n)) continue; if (n < Wn) if (0 == n) t.bE(1, 99, !1); else { const e = 100 * n; t.bE(e, e + 99, !1); } } } let d = 0; if ((h && (d |= 16), l && l.k && l.k[0])) { let e = 401 + l.k[0]; t.bE(401, 499, !1), t.bE(e, e, !0), (l.f += 2); } else if (r && r.k && r.k[0]) { let e = 801 + r.k[0]; t.bE(e, e, !0); } if (!(r || n || o) && i && i.k && i.k[0]) { let e = 801 + i.k[0]; t.bE(e, e, !0); } if (h) 0 == (1048576 & h.h) && (t.bE(2200, 2299, !1), t.bE(2202, 2202, !0)); else if (r && r.k && r.k[3]) { let e = 2201 + r.k[3]; t.bE(2200, 2299, !1), t.bE(e, e, !0); } let b = !1; n && n.k && n.k[0] && (b = 0 != (512 & n.h)); let g, _ = !1, p = !1; if (r && r.k && r.k[2]) { (p = !0), t.bE(501, 599, !1), t.bE(902, 999, !1), t.bE(1100, 1199, !1), t.bE(1300, 1399, !1); let e = 1301 + r.k[2]; t.bE(e, e, !0); } else if (a && a.k && a.k[2]) { (_ = !0), t.bE(501, 599, !1), t.bE(902, 999, !1), t.bE(1100, 1199, !1), t.bE(1300, 1399, !1); let e = 1301 + a.k[2]; t.bE(e, e, !0); } else if (s && s.k && s.k[0]) { t.bE(501, 599, !1), t.bE(901, 901, !0); let e = 501 + s.k[0]; t.bE(e, e, !0); } else { let e; (e = a && a.k && a.k[1] ? 901 + a.k[1] : 901), t.bE(e, e, !0); } (g = s && s.k && s.k[1] ? 2e3 + s.k[1] : s && 0 == (1048576 & s.h) ? 2002 : 2001), t.bE(2001, 2099, !1), t.bE(g, g, !0); let m = !1, v = p || _; if (!v && h && h.k && h.k[0]) { let e; (m = !1), b ? ((m = !0), (e = 1203)) : ((m = !0), (e = 1201 + h.k[0])), t.bE(e, e, !0); } else 16 & d && (t.bE(1201, 1201, !0), v || (t.bE(1202, 1202, !0), (m = !0))); if (!m && !p) if (r && r.k && r.k[1]) { let e = 1001 + r.k[1]; t.bE(e, e, !0); } else if (i && i.k && i.k[1]) { let e = 1001 + i.k[1]; t.bE(e, e, !0); } if (!p && a && a.k && a.k[0]) { let e = a.k[0], i = 1101 + e; e > 2 ? (t.bE(1300, 1399, !1), t.bE(i, i, !0)) : m || t.bE(i, i, !0); } if (u && u.k && u.k[0]) { t.bE(1500, 1599, !1); let e = 1501 + u.k[0]; if (this.M.length > 0) for (let t of this.M) { const i = li[t]; i && 15 == i.a && i.b == u.k[0] + 1 && (e = 1500 + i.c); } t.bE(e, e, !0); } if (n && n.k && n.k[0]) { t.bE(1800, 1899, !1); let e = 1801 + n.k[0]; t.bE(e, e, !0); } if ((a || p || _ || m || b ? t.bE(1400, 1499, !1) : t.bE(1401, 1401, !0), t.aR)) { let e = t.aR; e.bE(0, Yn, !1); for (let t = 0; t < e.K.length; t++) if ((e.bE(e.K[t], e.K[t], !0), e.at)) { let i = e.K[t]; if (e.at.some((t) => t.meshId == i)) { let e = 100 * t; this.bE(e, e + 99, !1); } } } } bI() { var t = this; let e = !1; if ( (t.x.forEach((t) => { if (t.m || t.n) { if (t.j) for (let i = 0; i < t.j.length; ++i) t.j[i].texture && !t.j[i].texture.g() && (e = !0); } else e = !0; }), e) ) return; if (!t.C[1][0] || (t.C[1][0] && !t.C[1][0].e())) return; if (!this.aJ) { var i = t.C[1][0].a, r = i.a.width, n = i.a.height; this.aJ = new Gn(t.aS.context, r, n); } let a = this.aJ; a.i(); let s = !0, o = !0; (t.n != fi && t.n != di) || (o = !1), t.x.forEach((t) => { let e = t.e; (e != yi && e != Ai && e != Ui) || (s = !1), e == Ci && (o = !1); }); let l, h = Yi; a.f != a.g && (h = Zi); let u = this.F.b.TextureLayers, c = this.F.b.TextureSections, f = -1; if (this.n == bi) for (let t of u) 9 == t.BlendMode && 1 == t.TextureType && t.Layer > f && (f = t.Layer); for (let e of u) { if (1 != e.TextureType) continue; if (0 == e.Layer) { a.j(t.C[1][0], 0, 0, 1, 1, 0, 0, 0); continue; } let i = -1; e.Layer == f && (i = 0); let r = this.D[e.ChrModelTextureTargetID]; if (r) { if (!r.e()) return void WH.debug('texture target', e.ChrModelTextureTargetID, 'layer', e.Layer, 'not ready!'); let t = e.TextureSection; if ((t != Gi && t != Xi) || (s && t == Gi) || (o && t == Xi)) { let n = 0, s = 0, o = 1, u = 1; if (-1 != t) if (c) { let e = c.find((e) => e.SectionType == t); (n = e.X), (s = e.Y), (o = e.Width), (u = e.Height); } else (l = h[t]), (n = l.x), (s = l.y), (o = l.w), (u = l.h); a.j(r, n, s, o, u, e.BlendMode, e.Layer, i); } } } let d = []; t.x.forEach((t) => { d.push(t); }), d.sort(function (t, e) { return t.f - e.f; }); for (let e = 0; e < d.length; ++e) { let i = d[e]; if (i.j) for (let e = 0; e < i.j.length; ++e) { let r = i.j[e]; if (r.gender == t.o && r.texture && r.texture.g() && r.region != Wi) { if (0 != (2 & t.u.RaceFlags) && r.region == qi) continue; l = h[r.region]; let e = new Nn(); (e.a = r.texture), a.j(e, l.x, l.y, l.w, l.h, 0, -1, -1); } } } a.k(), (t.w = !1); } bJ() { if (!this.d) return; let t = (-1 == this.I || !this.I) && null != this.x.get(zi), e = !((-1 != this.H && this.H) || (null == this.x.get(Fi) && null == this.x.get(Pi))); for (let e of Vi) { let i = this.ar[e]; i > 0 && i < this.ap.length && this.ap[i].A(t ? 'HandsClosed' : ''); } for (let t of ji) { let i = this.ar[t]; i > 0 && i < this.ap.length && this.ap[i].A(e ? 'HandsClosed' : ''); } } bK(t) { if ($.isArray(t)) for (let e = 0; e < t.length; ++e) this.bL(t[e][0], t[e][1], t[e][2]); else for (let e in t) this.bL(parseInt(e), t[e]); this.bJ(); } bL(t, e, i) { let r = new _n(this, t, e, this.n, this.o); i && r.A(i); let n = r.e, a = vi[t]; this.x.get(n) && 0 != a ? ((r.e = a), this.x.set(a, r)) : this.x.set(n, r); } bM(t) { var e = this.x.get(t); e || ((t = pi[t]), (e = this.x.get(t))), e && (this.x.delete(t), e.x()); } bN(t, e) { const i = [], r = { [Ri]: (t) => [0], [Ni]: (t) => (2 == t.c && 18 == t.d ? [1] : null) }; if (this.aB && this.aC) { const n = { 1: (t) => [11], 3: (t) => [6, 5], 22: (t) => { var e; return (null === (e = r[t.b]) || void 0 === e ? void 0 : e.call(r, t)) || [2]; }, 21: (t) => [1], 17: (t) => [1], 15: (t) => [2], 25: (t) => [1], 13: (t) => [1], 14: (t) => [0], 23: (t) => [2], 6: (t) => [53], 26: (t) => [1], 16: (t) => [57], 27: (t) => [55], }; if (n[t]) { const r = n[t](e); for (let n = 0; n < r.length; ++n) { let a = r[n]; (this.H >= 0 || this.I >= 0 || this.i) && Ki[t] && (a = Ki[t]), this.H >= 0 && t == Pi && $i[this.H][t] && (a = $i[this.H][t]), this.I >= 0 && t == zi && $i[this.I][t] && (a = $i[this.I][t]), e.g == Di && this.I >= 0 && t == zi && $i[this.I][e.b] && (a = $i[this.I][e.b]), a >= this.aC.length || -1 == this.aC[a] || i.push(this.aC[a]); } } } return i; } bO() { if (this.at) { for (let t = 0; t < this.at.length; ++t) this.at[t].K(this); this.aL = this.at.concat(); } this.setAnimation(Jn), this.by(!0), this.bz(), this.bB(), (this.d = !0), this.bw(), this.bJ(), this.l && this.v.d && this.v.bz(), this.m && this.v.d && this.v.bz(), this.v && this.v.d && !this.ad && this.v.bH(); } bP() { this.a && this.a.type && this.a.id && this.bQ(this.a.type, this.a.id); } bQ(t, e) { let i, r = this; t == hi.ITEM ? (i = 'meta/item/') : t == hi.HELM ? (i = 'meta/armor/1/') : t == hi.SHOULDER ? (i = 'meta/armor/3/') : t == hi.NPC || t == hi.HUMANOIDNPC ? (i = 'meta/npc/') : t == hi.OBJECT ? (i = 'meta/object/') : t == hi.CHARACTER ? (i = 'meta/character/') : t == hi.ITEMVISUAL && (i = 'meta/itemvisual/'), i ? ((i = this.k.contentPath + i + e + '.json'), (function (t) { $.getJSON(i) .done(function (e) { r.bS(e, t); }) .fail(function (t, e, i) { let r = e + ', ' + i; console.log('Model:_load Error loading metadata: ' + r); }); })(t)) : t == hi.PATH && (this.u || (this.u = {}), (i = this.k.contentPath + 'mo3/' + e + '.mo3'), $.ajax({ url: i, type: 'GET', dataType: 'binary', responseType: 'arraybuffer', processData: !1, renderer: this.aS, success: function (t) { r.bT(t); }, error: function (t, e, i) { console.log(i); }, })); } bR(t, e, i) { const r = Ji[e]; if (r) { const e = i ? 4 : 0; return r.slice(2 * t + e, 2 * t + e + 2); } } bS(t, e) { var i, r, n = this; if ((e || (e = n.a.type), n.u || (n.u = t), e == hi.CHARACTER)) { let e = this.c ? this.c : t.Model; (n.n = t.Race), (n.o = t.Gender), n.k.cls && (n.p = parseInt(n.k.cls)); let a = n.k.contentPath + 'meta/charactercustomization2/' + t.Race + '_' + t.Gender + '.json'; if ( ($.getJSON(a, function (t) { var e, i, r; if ( (WH.debug('Got customization data v2', t), (n.F = new Xn(n, t)), null === (e = n.G) || void 0 === e || e.call(n, n.F.b), n.F.c(), n.q) ) n.setAppearance(n.q); else if ( n.a.type != hi.CHARACTER && n.u.Race > 0 && (null === (r = null === (i = n.u) || void 0 === i ? void 0 : i.Creature) || void 0 === r ? void 0 : r.CreatureCustomizations) ) { let t = n.F.g(n.u.Creature.CreatureCustomizations); n.setAppearance(t); } else n.F.f(); n.w && n.bB(); }), n.u.Creature && n.u.Creature.Texture && (n.aK = this.bA(-1, gn.a(null, n.u.TextureFiles[n.u.Creature.Texture], 3, 0, 0))), n.bQ(hi.PATH, e), n.u.Equipment && n.bK(n.u.Equipment), n.k.items && n.bK(n.k.items), n.k.shouldersOverride && n.setShouldersOverride(n.k.shouldersOverride), n.a.type != hi.CHARACTER && n.u.Race > 0) ) { if ( n.F && (null === (r = null === (i = n.u) || void 0 === i ? void 0 : i.Creature) || void 0 === r ? void 0 : r.CreatureCustomizations) ) { let t = n.F.g(n.u.Creature.CreatureCustomizations); n.q = t; } } else n.k.charCustomization && (n.q = n.k.charCustomization); } else if (e == hi.HELM) { let e = 1, i = 0, r = 1; if ((n.v && ((e = n.v.n), (i = n.v.o), (r = n.v.p)), t.ComponentModels)) { let a = t.ComponentModels[0]; a && t.ModelFiles && t.ModelFiles[a] && (27 == t.Item.InventoryType ? n.bQ(hi.PATH, t.ModelFiles[a][0].FileDataId) : (n.v || t.ModelFiles[a].some((t) => t.Race == e) || (e = t.ModelFiles[a][0].Race), n.bQ(hi.PATH, gn.b(n, t.ModelFiles[a], -1, i, r, e)))); } if (t.Textures) for (let e in t.Textures) 0 != t.Textures[e] && (n.B[parseInt(e)] = new an(n, parseInt(e), t.Textures[e])); } else if (e == hi.SHOULDER) { let e = 1, i = 0, r = 1; if ((n.v && ((e = n.v.n), (i = n.v.o), (r = n.v.p)), t.ComponentModels)) { let a = t.ComponentModels[0], s = t.ComponentModels[1]; if (1 == n.a.shoulder || (void 0 === n.a.shoulder && a)) { if ((a && t.ModelFiles[a] && n.bQ(hi.PATH, gn.b(n, t.ModelFiles[a], 0, i, r, e)), t.Textures)) for (let e in t.Textures) 0 != t.Textures[e] && (n.B[+e] = new an(n, parseInt(e), t.Textures[e])); } else if ( (2 == n.a.shoulder || (void 0 === n.a.shoulder && s)) && (s && t.ModelFiles[s] && n.bQ(hi.PATH, gn.b(n, t.ModelFiles[s], 1, i, r, e)), t.Textures2) ) for (let e in t.Textures2) 0 != t.Textures2[e] && (n.B[+e] = new an(n, parseInt(e), t.Textures2[e])); } } else if (e == hi.ITEMVISUAL) n.bQ(hi.PATH, t.Equipment[n.b]); else if (e == hi.ITEM) { let e = 1, i = 0, r = 1; if ((n.v && ((e = n.v.n), (i = n.v.o), (r = n.v.p)), t.ComponentModels)) { let a = t.ComponentModels[0]; a && t.ModelFiles && t.ModelFiles[a] && n.bQ(hi.PATH, gn.b(n, t.ModelFiles[a], -1, i, r, e)); } if (t.Textures) for (let e in t.Textures) 0 != t.Textures[e] && (n.B[+e] = new an(n, parseInt(e), t.Textures[e])); } else { if ( (t.stateKit && this.E.push(new dn(this, t.stateKit.effects)), t.Creature && ((n.N = t.Creature.CreatureGeosetData), (n.O = t.Creature.CreatureGeosetDataID)), t.Textures) ) for (let e in t.Textures) 0 != t.Textures[e] && (n.B[+e] = new an(n, parseInt(e), t.Textures[e])); else if (t.ComponentTextures && n.v) { let e = n.v.o; for (let i in t.ComponentTextures) { let r = t.TextureFiles[t.ComponentTextures[i]]; for (let t = 0; t < r.length; t++) { let a = r[t]; (a.Gender != e && 3 != a.Gender) || (n.B[+i] = new an(n, parseInt(i), a.FileDataId)); } } } if (t.Model) n.bQ(hi.PATH, t.Model); else if (t.Race > 0) { const e = _i[t.Race] + ui[t.Gender]; (n.n = t.Race), (n.o = t.Gender), n.bQ(hi.CHARACTER, e); } } } bT(t) { if (!t) return void console.error('Bad buffer for DataView'); let e = this, i = new Rn(t); if (604210112 != i.getUint32()) return void console.log('Bad magic value'); if (i.getUint32() < 2e3) return void console.log('Bad version'); e.aj = i.getUint32(); var r = i.getUint32(), n = i.getUint32(), a = i.getUint32(), s = i.getUint32(), o = i.getUint32(), l = i.getUint32(), h = i.getUint32(), u = i.getUint32(), c = i.getUint32(), f = i.getUint32(), d = i.getUint32(), b = i.getUint32(), g = i.getUint32(), _ = i.getUint32(), p = i.getUint32(), m = i.getUint32(), v = i.getUint32(), x = i.getUint32(), T = i.getUint32(), w = i.getUint32(), y = i.getUint32(), A = i.getUint32(), E = i.getUint32(), C = i.getUint32(), S = i.getUint32(), M = i.getUint32(); let k = new Uint8Array(t, i.position), F = null; try { F = (0, Zr.inflate)(k); } catch (t) { return void console.log('Decompression error: ' + t); } if (F.length < M) console.log('Unexpected data size', F.length, M); else { (i = new Rn(F.buffer)), (i.position = r); var R, D = i.getInt32(); if (D > 0) { e.ak = new Array(D); for (let t = 0; t < D; ++t) e.ak[t] = new ur(i); } if (((i.position = n), (R = i.getInt32()) > 0)) { e.al = new Array(R); for (let t = 0; t < R; ++t) e.al[t] = i.getUint16(); } if (((i.position = a), (R = i.getInt32()) > 0)) { (e.am = new Array(R)), (e.aX = new Array(R)); for (let t = 0; t < R; ++t) (e.am[t] = i.getUint32()), (e.aX[t] = 0); } i.position = s; var I = i.getInt32(); if (I > 0) { e.an = new Array(I); for (let t = 0; t < I; ++t) e.an[t] = new cr(i); } i.position = o; var U = i.getInt32(); if (U > 0) { e.ao = new Array(U); for (let t = 0; t < U; ++t) e.ao[t] = i.getInt16(); } i.position = l; var B = i.getInt32(); if (B > 0) { e.ap = new Array(B); for (let t = 0; t < B; ++t) e.ap[t] = new Wr(e, t, i); this.ai = new Array(B); for (let t = 0; t < B; t++) { this.ai[t] = []; for (let i = 0; i < B; i++) e.ap[i].e == t && this.ai[t].push(i); } } i.position = h; var P = i.getInt32(); if (P > 0) { e.aq = new Array(P); for (let t = 0; t < P; ++t) e.aq[t] = i.getInt16(); } i.position = u; var z = i.getInt32(); if (z > 0) { e.ar = new Array(z); for (let t = 0; t < z; ++t) e.ar[t] = i.getInt16(); } i.position = c; var O = i.getInt32(); if (O > 0) { e.as = new Array(O); for (let t = 0; t < O; ++t) e.as[t] = new Yr(i); } i.position = f; var N = i.getInt32(); if (N > 0) { e.at = new Array(N); for (let t = 0; t < N; ++t) e.at[t] = new nn(i); } i.position = d; var L = i.getInt32(); if (L > 0) { e.au = new Array(L); for (let t = 0; t < L; ++t) e.au[t] = i.getInt16(); } i.position = b; var H = i.getInt32(); if (H > 0) { e.av = new Array(H); for (let t = 0; t < H; ++t) e.av[t] = new Jr(i); } i.position = g; var V = i.getInt32(); if (V > 0) { e.aw = new Array(V); for (let t = 0; t < V; ++t) e.aw[t] = new sn(e, t, i); } i.position = _; var j = i.getInt32(); if (j > 0) { e.ax = new Array(j); for (let t = 0; t < j; ++t) e.ax[t] = i.getInt16(); } i.position = p; var G = i.getInt32(); if (G > 0) { e.ay = new Array(G); for (let t = 0; t < G; ++t) e.ay[t] = new on(i); } i.position = m; var X = i.getInt32(); if (X > 0) { e.az = new Array(X); for (let t = 0; t < X; ++t) e.az[t] = i.getInt16(); } i.position = v; var q = i.getInt32(); if (q > 0) { e.aA = new Array(q); for (let t = 0; t < q; ++t) e.aA[t] = i.getInt16(); } i.position = x; var W = i.getInt32(); if (W > 0) { e.aB = new Array(W); for (let t = 0; t < W; ++t) e.aB[t] = new ln(i); } i.position = T; var Y = i.getInt32(); if (Y > 0) { e.aC = new Array(Y); for (let t = 0; t < Y; ++t) e.aC[t] = i.getInt16(); } i.position = w; var Z = i.getInt32(); if (Z > 0) { e.aD = new Array(Z); for (let t = 0; t < Z; ++t) e.aD[t] = new hn(i); } i.position = y; var J = i.getInt32(); if (J > 0) { e.aE = new Array(J); for (let t = 0; t < J; ++t) e.aE[t] = new un(i); } i.position = A; var K = i.getInt32(); if (K > 0) { e.aF = new Array(K); for (let t = 0; t < K; ++t) e.aF[t] = i.getInt16(); } i.position = E; var $ = i.getInt32(); if ($ > 0) { e.aG = new Array($); for (let t = 0; t < $; ++t) e.aG[t] = new kn(e, i); } i.position = S; var Q = i.getInt32(); if (Q > 0 && S > 0) { e.aI = new Array(Q); for (let t = 0; t < Q; ++t) e.aI[t] = new Fn(i); } i.position = C; var tt = i.getInt32(); if (tt > 0) { e.aH = new Array(tt); for (let t = 0; t < tt; ++t) e.aH[t] = new zn(e, i); } e.bO(); } } bU(t) { var e = pr(); if ((mr(e, t), this.aG)) for (var i = 0; i < this.aG.length; i++) this.aG[i].Z(t, e); if (this.aH) for (i = 0; i < this.aH.length; i++) this.aH[i].an(t); } bV(t) { let e = null; return this.aC && this.aC.length ? ((e = t < this.aC.length ? this.aB[this.aC[t]] : this.aB[this.aC[0]]), e) : null; } bW() { const t = this; if (!t.d) return; t.Q++; let e = t.aS.time - t.P; if ((e > 0 && (t.P = t.aS.time), this.e && this.R.a && this.R.a.b)) { let i = ve(); const r = [4, 119, 233, 242, 348, 526, 527, 544, 545]; [5, 143, 234, 524, 525, 540, 541, 556, 557].indexOf(this.R.a.b.a) > -1 ? (i = we(0, (-5 * e) / 1e3, 0)) : r.indexOf(this.R.a.b.a) > -1 && (i = we(0, (-3 * e) / 1e3, 0)); let n = je(); if ((ti(n, i), this.bU(n), this.i && this.i.bU(n), this.aR && this.aR.bU(n), t.A)) for (let e = 0; e < t.A.length; e++) this.aR.bU(n); } if (!this.S && t.R.a.a > -1) { let t = e; for (let e = 0; e < this.aX.length; e++) (this.aX[e] += t), this.am[e] > 0 && (this.aX[e] %= this.am[e]); this.bX(this.R, t); } let i, r, n, a = t.at ? t.at.length : 0; for (let e = 0; e < a; ++e) if (((n = t.at[e]), n.show)) { (i = n.p.f), (r = n.p.e); for (let e = 0; e < i; ++e) t.ak[t.al[r + e]].k = t.Q; } t.aL && t.aL.sort(function (t, e) { return t.b != e.b ? t.b - e.b : t.meshId - e.meshId; }); let s = t.ap.length, o = t.aT; if (t.ap && t.an) { for (let e = 0; e < s; ++e) t.ap[e].r = !1; for (let i = 0; i < s; ++i) t.ap[i].C(e); if (t.ak) { let e, i, r, n, a = t.ak.length, s = t.aO, l = t.aP; for (let h = 0; h < a; ++h) { if (((e = t.ak[h]), e.k != t.Q)) continue; (n = h * 10), (o[n] = o[n + 1] = o[n + 2] = o[n + 3] = o[n + 4] = o[n + 5] = 0); for (let a = 0; a < 4; ++a) (r = e.g[a] / 255), r > 0 && ((i = t.ap[e.h[a]]), Oe(s, e.a, i.m), lr(l, e.b, i.m), (o[n + 0] += s[0] * r), (o[n + 1] += s[1] * r), (o[n + 2] += s[2] * r), (o[n + 3] += l[0] * r), (o[n + 4] += l[1] * r), (o[n + 5] += l[2] * r)); (e.i[0] = o[n + 0]), (e.i[1] = o[n + 1]), (e.i[2] = o[n + 2]), (e.j[0] = o[n + 3]), (e.j[1] = o[n + 4]), (e.j[2] = o[n + 5]); } t.by(!1), t.ac || ((t.ac = !0), t.bz()); } } if (t.i && t.i.d) { const e = t.i.aB[t.i.aC[0]], i = 1 / t.i.u.Scale; Ae(t.aN, i, i, i), qe(t.aM), Je(t.aM, t.aM, t.aN), t.bs(t.i.U, t.i.ap[e.b].m, e.c, t.aM); } if (t.j && t.j.d) { const e = t.aB[t.aC[19]], i = t.k.pet.scale || 0.2 / t.j.u.Scale; Ae(t.aN, i, i, i), qe(t.aM), Je(t.aM, t.aM, t.aN); const r = xe(e.c); Ee(r, r, t.k.pet.offset || we(0, -1.25, 0)), t.j.bs(t.U, t.ap[e.b].m, r, t.aM); } si[t.a.id] && !t.v && (qe(t.U), Ae(t.aN, 1, 1, -1), Je(t.U, t.U, t.aN)), t.w && t.bI(); } bX(t, e) { if (((t.a.c += e), t.b.a < 0 && !this.T && !t.d)) if (t.a.b.h > -1) { let e = 32767 * Math.random(), i = 0, r = t.a.a, n = this.an[r]; for (i += n.d; i < e && n.h > -1; ) (r = n.h), (n = this.an[r]), (i += n.d); (t.b.a = r), (t.b.b = this.an[r]), (t.b.c = 0); } else { let e = this.an.find((e) => e.a == t.a.b.a && 0 == e.b); e && ((t.b.a = e.i), (t.b.b = e), (t.b.c = 0)); } let i = t.a, r = t.b, n = i.b.g - i.c, a = 0, s = null; if ( (r.a > -1 && ((s = this.an[r.a]), (a = s.e)), a > 0 && n < a ? ((r.c = qn(a - n, s.g)), (t.c = n / a)) : (t.c = 1), i.c >= i.b.g) ) if (r.a > -1) { if (r.a > -1) for ( ; 0 == (32 & this.an[r.a].c) && (64 & this.an[r.a].c) > 0 && ((r.a = this.an[r.a].i), (r.b = this.an[r.a]), !(r.a < 0)); ); (t.a = r), (t.b = new Dr()), (t.c = 1); } else i.b.g > 0 && (i.c = qn(i.c, i.b.g)); } bY(t) { var e = this; if ((this.v ? ir(e.V, this.v.V) : (e.V = er(1, 1, 1, 1)), e.i && e.i.bY(t), e.d)) { if ( (e.j && e.j.bY(t), e.bW(), this.E && this.E.forEach((e) => e.g(t)), (e.aW = { uModelMatrix: e.U, uViewMatrix: e.aS.viewMatrix, uProjMatrix: e.aS.projMatrix, uCameraPos: e.aS.eye, uAmbientColor: e.W, uDiffuseColor: e.V, uPrimaryColor: e.X, uSecondaryColor: e.Y, uLightDir1: e.Z, uLightDir2: e.aa, uLightDir3: e.ab, }), e.aU && e.aL) ) for (let i = 0; i < e.aL.length; ++i) e.aL[i].show && e.aL[i].N(t); if (e.aG && e.f) for (let i = 0; i < e.aG.length; ++i) { let r = e.aI ? e.aI[i] : null; e.aG[i].X(e.R, e.aS.delta, r), e.aG[i].Y(t); } if (e.aH && e.g) for (let i = 0; i < e.aH.length; ++i) e.aH[i].ar(e.R, e.aS.delta), e.aH[i].av(), e.aH[i].aw(t); if ( (e.aR && e.bG(e.aR, t), e.x.forEach((i, r) => { if (i) { if (2 == i.c && 13 == i.d) { if (i.e == Pi && -1 != e.H) return; if (i.e == zi && -1 != e.I) return; } i.C(t); } }), e.y.forEach((e, i) => { e && e.i && e.C(t); }), e.A) ) for (let i = 0; i < e.A.length; i++) for (let i = 0; i < e.A.length; i++) { let r = e.A[i]; if (!r.d) continue; let n = e.aC[e.k.extraModels[i][1]]; if (-1 == n) { console.log('invalid extra model attachment', e.k.extraModels[i][1]); continue; } let a = e.aB[n], s = e.k.extraModels[i][2]; Ae(e.aN, s, s, s), qe(e.aM), Je(e.aM, e.aM, e.aN), Ke(e.aM, e.aM, e.k.extraModels[i][3]), $e(e.aM, e.aM, e.k.extraModels[i][4]), Qe(e.aM, e.aM, e.k.extraModels[i][5]), r.bs(e.U, e.ap[a.b].m, a.c, e.aM), r.bW(), r.bY(t); } e.x.forEach((i, r) => { i && i.q && e.bG(i.q, t); }); } } } const $n = Kn, Qn = { 2: 'Wowhead', 3: 'LolKing', 6: 'HeroKing', 7: 'DestinyDB' }; class ta { constructor(t) { if (!t.type || !Qn[t.type]) throw 'Viewer error: Bad viewer type given'; if (!t.container) throw 'Viewer error: Bad container given'; if (!t.aspect) throw 'Viewer error: Bad aspect ratio given'; if (!t.contentPath) throw 'Viewer error: No content path given'; console.log('Creating viewer with options', t), (this.type = t.type), (this.container = t.container), (this.aspect = parseFloat(t.aspect)), (this.renderer = null), (this.options = t); const e = this.container.width(), i = Math.round(e / this.aspect); this.init(e, i); } destroy() { this.renderer && this.renderer.destroy(), (this.options = null), (this.container = null); } init(t, e) { if (void 0 !== typeof window.Uint8Array && void 0 !== typeof window.DataView) try { const t = document.createElement('canvas'); if (!(t.getContext('webgl', { alpha: !1 }) || t.getContext('experimental-webgl', { alpha: !1 }))) return void console.log('viewer init failed'); } catch (t) { return void console.log('viewer init failed'); } (this.mode = 1), (this.renderer = new ia(this)), this.renderer.resize(t, e), this.renderer.init(); } setAdaptiveMode(t) { this.renderer.setAdaptiveMode(t); } setZoom(t) { this.renderer.zoom.target = t; } setOffset(t, e) { this.renderer.setTranslation(t, e, 0); } setFullscreen(t) { t ? ta.requestFullscreen(this.renderer.canvas[0]) : ta.exitFullscreen(); } method(t, e) { return void 0 === e && (e = []), this.renderer ? this.renderer.method(t, [].concat(e)) : null; } option(t, e) { return void 0 !== e && (this.options[t] = e), this.options[t]; } static isFullscreen() { return !!( document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement ); } static requestFullscreen(t) { document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || (t.requestFullscreen ? t.requestFullscreen() : t.webkitRequestFullscreen ? t.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT) : t.mozRequestFullScreen ? t.mozRequestFullScreen() : t.msRequestFullscreen && t.msRequestFullscreen()); } static exitFullscreen() { (document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement) && (document.exitFullscreen ? document.exitFullscreen() : document.webkitExitFullscreen ? document.webkitExitFullscreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.msExitFullscreen && document.msExitFullscreen()); } } const ea = ta; const ia = class { constructor(t) { (this.currFrame = 0), (this.clearColor = we(0, 0, 0)), (this.addedCss = !1), (this.progressShown = !1), (this.attributeState = new be()), (this.onContextMenu = function (t) { return !1; }); var e = this; (e.viewer = t), (e.options = t.options), (e.downloads = {}), (e.context = null), (e.width = 0), (e.height = 0), (e.time = 0), (e.delta = 0), (e.models = []), (e.screenshotDataURL = null), (e.makeDataURL = !1), (e.screenshotCallback = null), (e.azimuth = 1.5 * Math.PI), (e.zenith = Math.PI / 2), (e.distance = 15), (e.fov = 30), (e.zoom = { rateStep: 0.1, rateAccelerationDecay: 0.4, interpolationRate: 0.3, range: [0.3, 4], rateCurrent: 0, target: 1, current: 1, }), (e.zoom.range = e.zoom.range.map(function (t) { return Math.log(t) / Math.log(1 + e.zoom.rateStep); })), (e.translation = we(0, 0, 0)), (e.target = we(0, 0, 0)), (e.eye = we(0, 0, 0)), (e.up = we(0, 0, 1)), (e.lookDir = ve()), (e.fullscreen = !1), (e.projMatrix = je()), (e.viewMatrix = je()), (e.panningMatrix = je()), (e.viewOffset = ve()), (e.aniFilterExt = null), (e.aniFilterMax = 0), this.addedCss || ((this.addedCss = !0), $('head').append('')); } updateProgress() { var t = this, e = 0, i = 0; for (var r in t.downloads) (e += t.downloads[r].total), (i += t.downloads[r].loaded); if (e <= 0) t.progressShown && (t.progressBg.hide(), t.progressBar.hide(), (t.progressShown = !1)); else { t.progressShown || (t.progressBg.show(), t.progressBar.show(), (t.progressShown = !0)); var n = i / e; t.progressBar.width(Math.round(t.width * n) + 'px'); } } destroy() { var t = this; if ( ((t.stop = !0), t.canvas && (t.canvas.detach(), t.progressBg.detach(), t.progressBar.detach(), t.canvas .off('mousedown touchstart', t.onMouseDown) .off('DOMMouseScroll', t.onMouseScroll) .off('mousewheel', t.onMouseWheel) .off('dblclick', t.onDoubleClick) .off('contextmenu', t.onContextMenu), $(window).off('resize', t.onFullscreen), $(document).off('mouseup touchend', t.onMouseUp).off('mousemove touchmove', t.onMouseMove), (t.canvas = t.progressBg = t.progressBar = null)), t.context) ) { var e = t.context; t.bgTexture && e.deleteTexture(t.bgTexture), (t.bgTexture = null), t.program && e.deleteProgram(t.program), (t.program = null), t.vb && e.deleteBuffer(t.vb), t.vs && e.deleteShader(t.vs), t.fs && e.deleteShader(t.fs), (t.vb = t.vs = t.fs = null); } t.bgImg && (t.bgImg = null); for (var i = 0; i < t.models.length; ++i) t.models[i].ba(), (t.models[i] = null); t.models = []; } method(t, e) { if (this.models.length > 0 && this.models[0]) { const i = this.models[0][t]; return i ? i.apply(this.models[0], e) : void WH.debug('Unknown viewer method', t, 'args', e); } } getTime() { return window.performance && window.performance.now ? window.performance.now() : Date.now(); } draw(t) { var e, i = this, r = i.context; (i.delta = 0.001 * (t - i.time)), (i.time = t), i.currFrame++, i.updateCamera(), r.bindFramebuffer(r.FRAMEBUFFER, null), r.viewport(0, 0, i.width, i.height), r.clearColor(this.clearColor[0], this.clearColor[1], this.clearColor[2], 0), r.clear(r.COLOR_BUFFER_BIT | r.DEPTH_BUFFER_BIT), i.bgTexture && i.program && (r.useProgram(i.program), r.activeTexture(r.TEXTURE0), r.bindTexture(r.TEXTURE_2D, i.bgTexture), r.uniform1i(i.uTexture, 0), r.bindBuffer(r.ARRAY_BUFFER, i.vb), r.bindBuffer(r.ELEMENT_ARRAY_BUFFER, null), r.enableVertexAttribArray(i.aPosition), r.vertexAttribPointer(i.aPosition, 2, r.FLOAT, !1, 16, 0), r.enableVertexAttribArray(i.aTexCoord), r.vertexAttribPointer(i.aTexCoord, 2, r.FLOAT, !1, 16, 8), r.depthMask(!1), r.disable(r.CULL_FACE), r.blendFunc(r.ONE, r.ZERO), r.drawArrays(r.TRIANGLE_STRIP, 0, 4), r.blendFunc(r.SRC_ALPHA, r.ONE_MINUS_SRC_ALPHA), r.enable(r.CULL_FACE), r.depthMask(!0), r.disableVertexAttribArray(i.aPosition), r.disableVertexAttribArray(i.aTexCoord)); let n = new Array(); for (e = 0; e < i.models.length; ++e) i.models[e].bY(n); n.sort((t, e) => { let i = t.e > 1, r = e.e > 1; return i > r ? 1 : i < r ? -1 : t.m != e.m ? e.m > t.m ? -1 : 1 : t.n > e.n ? -1 : t.n < e.n ? 1 : e.o != t.o ? e.o < t.o ? 1 : -1 : e.e != t.e ? t.e < e.e ? -1 : 1 : 0; }), r.viewport(0, 0, i.width, i.height), this.attributeState.disableAll(), n.forEach((t) => { r.useProgram(t.a.program), r.bindBuffer(r.ARRAY_BUFFER, t.c), r.bindBuffer(r.ELEMENT_ARRAY_BUFFER, t.d), this.attributeState.enable(r, t.a.attributes), re(t.a, t.b), t.h ? r.enable(r.CULL_FACE) : r.disable(r.CULL_FACE), t.i ? r.frontFace(r.CCW) : r.frontFace(r.CW), this.setBlendMode(r, t.e), r.depthMask(t.f), r.drawElements(t.j, t.k, r.UNSIGNED_SHORT, t.l); }), this.attributeState.disableAll(); } setAdaptiveMode(t) { (this.addaptiveMode = t), t && $(window).trigger('resize'); } setTranslation(t, e, i) { this.translation = we(t, e, i); } setBlendMode(t, e) { switch ((0 == e ? t.disable(t.BLEND) : (t.enable(t.BLEND), t.blendEquation(t.FUNC_ADD)), e)) { case 0: break; case 1: t.blendFuncSeparate(t.ONE, t.ZERO, t.ONE, t.ONE); break; case 2: t.blendFuncSeparate(t.SRC_ALPHA, t.ONE_MINUS_SRC_ALPHA, t.ONE, t.ONE); break; case 3: t.blendFuncSeparate(t.SRC_ALPHA, t.ONE, t.ONE, t.ONE); break; case 4: t.blendFuncSeparate(t.DST_COLOR, t.ZERO, t.ONE, t.ONE); break; case 5: t.blendFuncSeparate(t.DST_COLOR, t.SRC_COLOR, t.ONE, t.ONE); break; case 6: t.blendFuncSeparate(t.DST_COLOR, t.ONE, t.ONE, t.ONE); break; case 10: t.blendFunc(t.ONE, t.ONE); break; case 7: t.blendFuncSeparate(t.ONE_MINUS_SRC_ALPHA, t.ONE, t.ONE, t.ONE); break; case 8: t.blendFuncSeparate(t.ONE_MINUS_SRC_ALPHA, t.ZERO, t.ONE, t.ONE); break; case 13: t.blendFuncSeparate(t.ONE, t.ONE_MINUS_SRC_ALPHA, t.ONE, t.ONE); break; default: throw 3735927486; } } updateCamera() { var t = this; (t.zoom.target += t.zoom.rateCurrent), (t.zoom.rateCurrent *= 1 - t.zoom.rateAccelerationDecay), (t.zoom.target = -Math.max(Math.min(-t.zoom.target, t.zoom.range[1]), t.zoom.range[0])), (t.zoom.current += (t.zoom.target - t.zoom.current) * t.zoom.interpolationRate); var e = t.distance * Math.pow(t.zoom.rateStep + 1, -t.zoom.current), i = t.azimuth, r = t.zenith; 1 == t.up[2] ? ((t.eye[0] = -e * Math.sin(r) * Math.cos(i) + t.target[0]), (t.eye[1] = -e * Math.sin(r) * Math.sin(i) + t.target[1]), (t.eye[2] = -e * Math.cos(r) + t.target[2])) : ((t.eye[0] = -e * Math.sin(r) * Math.cos(i) + t.target[0]), (t.eye[1] = -e * Math.cos(r) + t.target[1]), (t.eye[2] = -e * Math.sin(r) * Math.sin(i) + t.target[2])), Ce(t.lookDir, t.target, t.eye), Ue(t.lookDir, t.lookDir), (function (t, e, i, r) { var n, a, s, o, l, h, u, c, f, d, b = e[0], g = e[1], _ = e[2], p = r[0], m = r[1], v = r[2], x = i[0], T = i[1], w = i[2]; Math.abs(b - x) < pe && Math.abs(g - T) < pe && Math.abs(_ - w) < pe ? qe(t) : ((u = b - x), (c = g - T), (f = _ - w), (n = m * (f *= d = 1 / Math.hypot(u, c, f)) - v * (c *= d)), (a = v * (u *= d) - p * f), (s = p * c - m * u), (d = Math.hypot(n, a, s)) ? ((n *= d = 1 / d), (a *= d), (s *= d)) : ((n = 0), (a = 0), (s = 0)), (o = c * s - f * a), (l = f * n - u * s), (h = u * a - c * n), (d = Math.hypot(o, l, h)) ? ((o *= d = 1 / d), (l *= d), (h *= d)) : ((o = 0), (l = 0), (h = 0)), (t[0] = n), (t[1] = o), (t[2] = u), (t[3] = 0), (t[4] = a), (t[5] = l), (t[6] = c), (t[7] = 0), (t[8] = s), (t[9] = h), (t[10] = f), (t[11] = 0), (t[12] = -(n * b + a * g + s * _)), (t[13] = -(o * b + l * g + h * _)), (t[14] = -(u * b + c * g + f * _)), (t[15] = 1)); })(t.viewMatrix, t.eye, t.target, t.up), qe(t.panningMatrix), 1 == t.up[2] ? Ae(t.viewOffset, t.translation[0], -t.translation[1], 0) : Ae(t.viewOffset, t.translation[0], 0, t.translation[1]), Ze(t.panningMatrix, t.panningMatrix, t.viewOffset), Ye(t.viewMatrix, t.panningMatrix, t.viewMatrix); } init() { var t, e = this, i = e.context; (this.blackPixelTexture = i.createTexture()), i.bindTexture(i.TEXTURE_2D, this.blackPixelTexture), i.texImage2D(i.TEXTURE_2D, 0, i.RGBA, 1, 1, 0, i.RGBA, i.UNSIGNED_BYTE, new Uint8Array([0, 0, 0, 1])), i.bindTexture(i.TEXTURE_2D, null), ni(e.projMatrix, 0.0174532925 * e.fov, e.viewer.aspect, 0.1, 5e3), e.updateCamera(), i.clearColor(this.clearColor[0], this.clearColor[1], this.clearColor[2], 0), i.enable(i.DEPTH_TEST), i.depthFunc(i.LEQUAL), i.blendFunc(i.SRC_ALPHA, i.ONE_MINUS_SRC_ALPHA), i.enable(i.BLEND); var r = null; if (2 === e.viewer.type) r = $n; if ((e.options.models || e.options.items) && r) { var n = [].concat(e.options.models); if (n.length > 0) for (t = 0; t < n.length; ++t) e.models.push(new r(e, e.options, n[t], t, !0, !1, !1)); } !(function t() { if (!e.stop) { window.requestAnimationFrame(t); var r = e.getTime(); if (!1 !== e.makeDataURL) { if (e.canvas[0].toDataURL) { var n = e.clearColor, a = e.bgTexture; e.options.transparent && ((e.bgTexture = null), (e.clearColor = we(0, 0, 0))), e.draw(r); var s = e.width * e.height * 4, o = new Uint8Array(s); i.readPixels(0, 0, e.width, e.height, i.RGBA, i.UNSIGNED_BYTE, o); let t = null; e.options.transparent ? ((e.clearColor = we(1, 1, 1)), e.draw(r), (t = new Uint8Array(s)), i.readPixels(0, 0, e.width, e.height, i.RGBA, i.UNSIGNED_BYTE, t)) : (t = o); for (var l = new Uint8Array(s), h = 0, u = e.height - 1; u >= 0; u--) for (var c = 0; c < e.width; c++) { var f = 4 * (u * e.width + c), d = 255 - (t[h + 0] - o[h + 0]), b = o[h + 0], g = o[h + 1], _ = o[h + 2]; o[h + 3]; (l[f + 0] = b), (l[f + 1] = g), (l[f + 2] = _), (l[f + 3] = d), (h += 4); } var p = document.createElement('canvas'), m = p.getContext('2d'); (p.width = e.width), (p.height = e.height); var v = m.createImageData(e.width, e.height); v.data.set(l), m.putImageData(v, 0, 0), (e.screenshotDataURL = p.toDataURL.apply(p, e.makeDataURL)), e.screenshotCallback && (e.screenshotCallback(), (e.screenshotCallback = null)), (e.clearColor = n), (e.bgTexture = a); } e.makeDataURL = !1; } e.draw(r); } })(); } onDoubleClick(t) { ea.isFullscreen() ? ea.exitFullscreen() : ea.requestFullscreen(this.canvas[0]); } onFullscreen(t) { let e = this; if (e.viewer.container) if ((!e.fullscreen && ea.isFullscreen()) || this.addaptiveMode) { if (((e.restoreWidth = e.width), (e.restoreHeight = e.height), (e.fullscreen = !0), ea.isFullscreen())) { var i = $(window); let t = window.screen.width || i.width(), e = window.screen.height || i.height(); this.onResize(t, e, t / e); } else if (this.addaptiveMode) { var r = e.viewer.container; this.onResize(r.width(), r.height(), r.width() / r.height()); } } else e.fullscreen && !ea.isFullscreen() && ((e.fullscreen = !1), this.onResize(e.restoreWidth, e.restoreHeight, e.viewer.aspect)); } onResize(t, e, i) { this.resize(t, e), ni(this.projMatrix, 0.0174532925 * this.fov, i, 0.1, 5e3); } onMouseDown(t) { let e = this; 3 == t.which || t.ctrlKey ? (e.rightMouseDown = !0) : (e.mouseDown = !0), 'touchstart' == t.type ? ((e.mouseX = t.originalEvent.touches[0].clientX), (e.mouseY = t.originalEvent.touches[0].clientY)) : ((e.mouseX = t.clientX), (e.mouseY = t.clientY)), $('body').addClass('unselectable'); } onMouseScroll(t) { return (this.zoom.rateCurrent += t.originalEvent.detail > 0 ? 1 : -1), t.preventDefault(), !1; } onMouseWheel(t) { if (!this.options.wheelEventValidation || this.options.wheelEventValidation.call(this, t)) return (this.zoom.rateCurrent += t.originalEvent.wheelDelta > 0 ? 1 : -1), t.preventDefault(), !1; } onMouseUp(t) { let e = this; (e.mouseDown || e.rightMouseDown) && ($('body').removeClass('unselectable'), (e.mouseDown = !1), (e.rightMouseDown = !1)); } onMouseMove(t) { let e = this; if ((e.mouseDown || e.rightMouseDown) && void 0 !== e.mouseX) { var i, r; 'touchmove' == t.type ? (t.preventDefault(), (i = t.originalEvent.touches[0].clientX), (r = t.originalEvent.touches[0].clientY)) : ((i = t.clientX), (r = t.clientY)); var n = ((i - e.mouseX) / e.width) * Math.PI * 2, a = ((r - e.mouseY) / e.width) * Math.PI * 2; if (e.mouseDown) { 1 == e.up[2] ? (e.azimuth -= n) : (e.azimuth += n), (e.zenith += a); for (var s = 2 * Math.PI; e.azimuth < 0; ) e.azimuth += s; for (; e.azimuth > s; ) e.azimuth -= s; e.zenith < 1e-4 && (e.zenith = 1e-4), e.zenith >= Math.PI && (e.zenith = Math.PI - 1e-4); } else (e.translation[0] += n), (e.translation[1] += a); (e.mouseX = i), (e.mouseY = r); } } resize(t, e) { var i = this; if (i.width !== t || i.height !== e) { if ((i.fullscreen || i.viewer.container.css({ height: e + 'px', position: 'relative' }), (i.width = t), (i.height = e), i.canvas)) i.canvas.attr({ width: t, height: e }), i.canvas.css({ width: t + 'px', height: e + 'px' }), i.context.viewport(0, 0, i.width, i.height); else { if ( ((i.canvas = $('')), i.canvas.attr({ width: t, height: e }), i.viewer.container.append(i.canvas), (i.context = i.canvas[0].getContext('webgl', { alpha: !0, premultipliedAlpha: !1 }) || i.canvas[0].getContext('experimental-webgl', { alpha: !0, premultipliedAlpha: !1 })), (i.progressBg = $('
', { css: { display: 'none', position: 'absolute', bottom: 0, left: 0, right: 0, height: '10px', backgroundColor: '#000' }, })), (i.progressBar = $('
', { css: { display: 'none', position: 'absolute', bottom: 0, left: 0, width: 0, height: '10px', backgroundColor: '#ccc' }, })), i.viewer.container.append(i.progressBg), i.viewer.container.append(i.progressBar), !i.context) ) return alert('No WebGL support, sorry! You should totally use Chrome.'), i.canvas.detach(), void (i.canvas = null); const r = i.context.getExtension('EXT_texture_filter_anisotropic') || i.context.getExtension('MOZ_EXT_texture_filter_anisotropic') || i.context.getExtension('WEBKIT_EXT_texture_filter_anisotropic'); r ? ((i.aniFilterExt = r), (i.aniFilterMax = i.context.getParameter(r.MAX_TEXTURE_MAX_ANISOTROPY_EXT)), WH.debug('Texture anisotropy enabled', i.aniFilterMax)) : WH.debug('Texture anisotropy disabled (not supported)'), i.canvas .on('mousedown touchstart', i.onMouseDown.bind(i)) .on('DOMMouseScroll', i.onMouseScroll.bind(i)) .on('mousewheel', i.onMouseWheel.bind(i)) .on('dblclick', i.onDoubleClick.bind(i)) .on('contextmenu', i.onContextMenu.bind(i)), $(window).on('resize', i.onFullscreen.bind(i)), $(document).on('mouseup touchend', i.onMouseUp.bind(i)).on('mousemove touchmove', i.onMouseMove.bind(i)), i.onFullscreen(null); } i.options.background && i.loadBackground(); } } loadBackground() { var t = this, e = t.context; const i = function () { (t.vb = e.createBuffer()), e.bindBuffer(e.ARRAY_BUFFER, t.vb), e.bufferData(e.ARRAY_BUFFER, new Float32Array(16), e.DYNAMIC_DRAW); var i = t.compileShader( e.VERTEX_SHADER, ' attribute vec2 aPosition; attribute vec2 aTexCoord; varying vec2 vTexCoord; void main(void) { vTexCoord = aTexCoord; gl_Position = vec4(aPosition, 0, 1); } ', ), r = t.compileShader( e.FRAGMENT_SHADER, ' precision mediump float; varying vec2 vTexCoord; uniform sampler2D uTexture; void main(void) { gl_FragColor = texture2D(uTexture, vTexCoord); } ', ), n = e.createProgram(); e.attachShader(n, i), e.attachShader(n, r), e.linkProgram(n), e.getProgramParameter(n, e.LINK_STATUS) ? ((t.vs = i), (t.fs = r), (t.program = n), (t.uTexture = e.getUniformLocation(n, 'uTexture')), (t.aPosition = e.getAttribLocation(n, 'aPosition')), (t.aTexCoord = e.getAttribLocation(n, 'aTexCoord'))) : console.error('Error linking shaders'); }, r = function () { var i = t.width / t.bgImg.width, r = t.height / t.bgImg.height; const n = [-1, -1, 0, r, 1, -1, i, r, -1, 1, 0, 0, 1, 1, i, 0]; e.bindBuffer(e.ARRAY_BUFFER, t.vb), e.bufferSubData(e.ARRAY_BUFFER, 0, new Float32Array(n)); }; t.bgImg ? t.bgImg.loaded && (t.vb || i(), r()) : ((t.bgImg = new Image()), (t.bgImg.crossOrigin = ''), (t.bgImg.onload = function () { (t.bgImg.loaded = !0), (t.bgTexture = e.createTexture()), e.bindTexture(e.TEXTURE_2D, t.bgTexture), e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, e.RGBA, e.UNSIGNED_BYTE, t.bgImg), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, e.LINEAR), t.vb || i(), r(); }), (t.bgImg.onerror = function () { t.bgImg = null; }), (t.bgImg.src = t.options.contentPath + t.options.background)); } compileShader(t, e) { var i = this.context, r = i.createShader(t); if ((i.shaderSource(r, e), i.compileShader(r), !i.getShaderParameter(r, i.COMPILE_STATUS))) throw 'Shader compile error: ' + i.getShaderInfoLog(r); return r; } }; let ra = { Types: hi }; const na = Object.assign(ea, { Tools: _e, WebGL: ia, WEBGL: 1, WOW: 2, FLASH: 2, Wow: ra }); window.ZamModelViewer = na; })(); })();