import { r as __toESM } from "./chunk-B-1-B7_t.js"; import { t as _typeof } from "./typeof-KEtdrNHU.js"; //#region node_modules/fflate/esm/browser.js var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array; var fleb = new u8([ 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, 0, 0, 0 ]); var fdeb = new u8([ 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, 0, 0 ]); var clim = new u8([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]); var freb = function(eb, start) { var b = new u16(31); for (var i = 0; i < 31; ++i) b[i] = start += 1 << eb[i - 1]; var r = new i32(b[30]); for (var i = 1; i < 30; ++i) for (var j = b[i]; j < b[i + 1]; ++j) r[j] = j - b[i] << 5 | i; return { b, r }; }; var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r; fl[28] = 258, revfl[258] = 28; var _b = freb(fdeb, 0); _b.b; var revfd = _b.r; var rev = new u16(32768); for (var i$1 = 0; i$1 < 32768; ++i$1) { var x$1 = (i$1 & 43690) >> 1 | (i$1 & 21845) << 1; x$1 = (x$1 & 52428) >> 2 | (x$1 & 13107) << 2; x$1 = (x$1 & 61680) >> 4 | (x$1 & 3855) << 4; rev[i$1] = ((x$1 & 65280) >> 8 | (x$1 & 255) << 8) >> 1; } var hMap = (function(cd, mb, r) { var s = cd.length; var i = 0; var l = new u16(mb); for (; i < s; ++i) if (cd[i]) ++l[cd[i] - 1]; var le = new u16(mb); for (i = 1; i < mb; ++i) le[i] = le[i - 1] + l[i - 1] << 1; var co; if (r) { co = new u16(1 << mb); var rvb = 15 - mb; for (i = 0; i < s; ++i) if (cd[i]) { var sv = i << 4 | cd[i]; var r_1 = mb - cd[i]; var v = le[cd[i] - 1]++ << r_1; for (var m = v | (1 << r_1) - 1; v <= m; ++v) co[rev[v] >> rvb] = sv; } } else { co = new u16(s); for (i = 0; i < s; ++i) if (cd[i]) co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i]; } return co; }); var flt = new u8(288); for (var i$1 = 0; i$1 < 144; ++i$1) flt[i$1] = 8; for (var i$1 = 144; i$1 < 256; ++i$1) flt[i$1] = 9; for (var i$1 = 256; i$1 < 280; ++i$1) flt[i$1] = 7; for (var i$1 = 280; i$1 < 288; ++i$1) flt[i$1] = 8; var fdt = new u8(32); for (var i$1 = 0; i$1 < 32; ++i$1) fdt[i$1] = 5; var flm = /*#__PURE__*/ hMap(flt, 9, 0), fdm = /*#__PURE__*/ hMap(fdt, 5, 0); var shft = function(p) { return (p + 7) / 8 | 0; }; var slc = function(v, s, e) { if (s == null || s < 0) s = 0; if (e == null || e > v.length) e = v.length; return new u8(v.subarray(s, e)); }; var wbits = function(d, p, v) { v <<= p & 7; var o = p / 8 | 0; d[o] |= v; d[o + 1] |= v >> 8; }; var wbits16 = function(d, p, v) { v <<= p & 7; var o = p / 8 | 0; d[o] |= v; d[o + 1] |= v >> 8; d[o + 2] |= v >> 16; }; var hTree = function(d, mb) { var t = []; for (var i = 0; i < d.length; ++i) if (d[i]) t.push({ s: i, f: d[i] }); var s = t.length; var t2 = t.slice(); if (!s) return { t: et$1, l: 0 }; if (s == 1) { var v = new u8(t[0].s + 1); v[t[0].s] = 1; return { t: v, l: 1 }; } t.sort(function(a, b) { return a.f - b.f; }); t.push({ s: -1, f: 25001 }); var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2; t[0] = { s: -1, f: l.f + r.f, l, r }; while (i1 != s - 1) { l = t[t[i0].f < t[i2].f ? i0++ : i2++]; r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++]; t[i1++] = { s: -1, f: l.f + r.f, l, r }; } var maxSym = t2[0].s; for (var i = 1; i < s; ++i) if (t2[i].s > maxSym) maxSym = t2[i].s; var tr = new u16(maxSym + 1); var mbt = ln(t[i1 - 1], tr, 0); if (mbt > mb) { var i = 0, dt = 0; var lft = mbt - mb, cst = 1 << lft; t2.sort(function(a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; }); for (; i < s; ++i) { var i2_1 = t2[i].s; if (tr[i2_1] > mb) { dt += cst - (1 << mbt - tr[i2_1]); tr[i2_1] = mb; } else break; } dt >>= lft; while (dt > 0) { var i2_2 = t2[i].s; if (tr[i2_2] < mb) dt -= 1 << mb - tr[i2_2]++ - 1; else ++i; } for (; i >= 0 && dt; --i) { var i2_3 = t2[i].s; if (tr[i2_3] == mb) { --tr[i2_3]; ++dt; } } mbt = mb; } return { t: new u8(tr), l: mbt }; }; var ln = function(n, l, d) { return n.s == -1 ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) : l[n.s] = d; }; var lc = function(c) { var s = c.length; while (s && !c[--s]); var cl = new u16(++s); var cli = 0, cln = c[0], cls = 1; var w = function(v) { cl[cli++] = v; }; for (var i = 1; i <= s; ++i) if (c[i] == cln && i != s) ++cls; else { if (!cln && cls > 2) { for (; cls > 138; cls -= 138) w(32754); if (cls > 2) { w(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305); cls = 0; } } else if (cls > 3) { w(cln), --cls; for (; cls > 6; cls -= 6) w(8304); if (cls > 2) w(cls - 3 << 5 | 8208), cls = 0; } while (cls--) w(cln); cls = 1; cln = c[i]; } return { c: cl.subarray(0, cli), n: s }; }; var clen = function(cf, cl) { var l = 0; for (var i = 0; i < cl.length; ++i) l += cf[i] * cl[i]; return l; }; var wfblk = function(out, pos, dat) { var s = dat.length; var o = shft(pos + 2); out[o] = s & 255; out[o + 1] = s >> 8; out[o + 2] = out[o] ^ 255; out[o + 3] = out[o + 1] ^ 255; for (var i = 0; i < s; ++i) out[o + i + 4] = dat[i]; return (o + 4 + s) * 8; }; var wblk = function(dat, out, final, syms, lf, df, eb, li, bs, bl, p) { wbits(out, p++, final); ++lf[256]; var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l; var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l; var _c = lc(dlt), lclt = _c.c, nlc = _c.n; var _d = lc(ddt), lcdt = _d.c, ndc = _d.n; var lcfreq = new u16(19); for (var i = 0; i < lclt.length; ++i) ++lcfreq[lclt[i] & 31]; for (var i = 0; i < lcdt.length; ++i) ++lcfreq[lcdt[i] & 31]; var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l; var nlcc = 19; for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc); var flen = bl + 5 << 3; var ftlen = clen(lf, flt) + clen(df, fdt) + eb; var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]; if (bs >= 0 && flen <= ftlen && flen <= dtlen) return wfblk(out, p, dat.subarray(bs, bs + bl)); var lm, ll, dm, dl; wbits(out, p, 1 + (dtlen < ftlen)), p += 2; if (dtlen < ftlen) { lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt; var llm = hMap(lct, mlcb, 0); wbits(out, p, nlc - 257); wbits(out, p + 5, ndc - 1); wbits(out, p + 10, nlcc - 4); p += 14; for (var i = 0; i < nlcc; ++i) wbits(out, p + 3 * i, lct[clim[i]]); p += 3 * nlcc; var lcts = [lclt, lcdt]; for (var it = 0; it < 2; ++it) { var clct = lcts[it]; for (var i = 0; i < clct.length; ++i) { var len = clct[i] & 31; wbits(out, p, llm[len]), p += lct[len]; if (len > 15) wbits(out, p, clct[i] >> 5 & 127), p += clct[i] >> 12; } } } else lm = flm, ll = flt, dm = fdm, dl = fdt; for (var i = 0; i < li; ++i) { var sym = syms[i]; if (sym > 255) { var len = sym >> 18 & 31; wbits16(out, p, lm[len + 257]), p += ll[len + 257]; if (len > 7) wbits(out, p, sym >> 23 & 31), p += fleb[len]; var dst = sym & 31; wbits16(out, p, dm[dst]), p += dl[dst]; if (dst > 3) wbits16(out, p, sym >> 5 & 8191), p += fdeb[dst]; } else wbits16(out, p, lm[sym]), p += ll[sym]; } wbits16(out, p, lm[256]); return p + ll[256]; }; var deo = /*#__PURE__*/ new i32([ 65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632 ]); var et$1 = /*#__PURE__*/ new u8(0); var dflt = function(dat, lvl, plvl, pre, post, st) { var s = st.z || dat.length; var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7e3)) + post); var w = o.subarray(pre, o.length - post); var lst = st.l; var pos = (st.r || 0) & 7; if (lvl) { if (pos) w[0] = st.r >> 3; var opt = deo[lvl - 1]; var n = opt >> 13, c = opt & 8191; var msk_1 = (1 << plvl) - 1; var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1); var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1; var hsh = function(i) { return (dat[i] ^ dat[i + 1] << bs1_1 ^ dat[i + 2] << bs2_1) & msk_1; }; var syms = new i32(25e3); var lf = new u16(288), df = new u16(32); var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0; for (; i + 2 < s; ++i) { var hv = hsh(i); var imod = i & 32767, pimod = head[hv]; prev[imod] = pimod; head[hv] = imod; if (wi <= i) { var rem = s - i; if ((lc_1 > 7e3 || li > 24576) && (rem > 423 || !lst)) { pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos); li = lc_1 = eb = 0, bs = i; for (var j = 0; j < 286; ++j) lf[j] = 0; for (var j = 0; j < 30; ++j) df[j] = 0; } var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767; if (rem > 2 && hv == hsh(i - dif)) { var maxn = Math.min(n, rem) - 1; var maxd = Math.min(32767, i); var ml = Math.min(258, rem); while (dif <= maxd && --ch_1 && imod != pimod) { if (dat[i + l] == dat[i + l - dif]) { var nl = 0; for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl); if (nl > l) { l = nl, d = dif; if (nl > maxn) break; var mmd = Math.min(dif, nl - 2); var md = 0; for (var j = 0; j < mmd; ++j) { var ti = i - dif + j & 32767; var cd = ti - prev[ti] & 32767; if (cd > md) md = cd, pimod = ti; } } } imod = pimod, pimod = prev[imod]; dif += imod - pimod & 32767; } } if (d) { syms[li++] = 268435456 | revfl[l] << 18 | revfd[d]; var lin = revfl[l] & 31, din = revfd[d] & 31; eb += fleb[lin] + fdeb[din]; ++lf[257 + lin]; ++df[din]; wi = i + l; ++lc_1; } else { syms[li++] = dat[i]; ++lf[dat[i]]; } } } for (i = Math.max(i, wi); i < s; ++i) { syms[li++] = dat[i]; ++lf[dat[i]]; } pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos); if (!lst) { st.r = pos & 7 | w[pos / 8 | 0] << 3; pos -= 7; st.h = head, st.p = prev, st.i = i, st.w = wi; } } else { for (var i = st.w || 0; i < s + lst; i += 65535) { var e = i + 65535; if (e >= s) { w[pos / 8 | 0] = lst; e = s; } pos = wfblk(w, pos + 1, dat.subarray(i, e)); } st.i = s; } return slc(o, 0, pre + shft(pos) + post); }; var adler = function() { var a = 1, b = 0; return { p: function(d) { var n = a, m = b; var l = d.length | 0; for (var i = 0; i != l;) { var e = Math.min(i + 2655, l); for (; i < e; ++i) m += n += d[i]; n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16); } a = n, b = m; }, d: function() { a %= 65521, b %= 65521; return (a & 255) << 24 | (a & 65280) << 8 | (b & 255) << 8 | b >> 8; } }; }; var dopt = function(dat, opt, pre, post, st) { if (!st) { st = { l: 1 }; if (opt.dictionary) { var dict = opt.dictionary.subarray(-32768); var newDat = new u8(dict.length + dat.length); newDat.set(dict); newDat.set(dat, dict.length); dat = newDat; st.w = dict.length; } } return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20 : 12 + opt.mem, pre, post, st); }; var wbytes = function(d, b, v) { for (; v; ++b) d[b] = v, v >>>= 8; }; var zlh = function(c, o) { var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2; c[0] = 120, c[1] = fl << 6 | (o.dictionary && 32); c[1] |= 31 - (c[0] << 8 | c[1]) % 31; if (o.dictionary) { var h = adler(); h.p(o.dictionary); wbytes(c, 2, h.d()); } }; /** * Compress data with Zlib * @param data The data to compress * @param opts The compression options * @returns The zlib-compressed version of the data */ function zlibSync(data, opts) { if (!opts) opts = {}; var a = adler(); a.p(data); var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4); return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d; } var td = typeof TextDecoder != "undefined" && /*#__PURE__*/ new TextDecoder(); try { td.decode(et$1, { stream: true }); } catch (e) {} //#endregion //#region node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } //#endregion //#region node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } //#endregion //#region node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } //#endregion //#region node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } //#endregion //#region node_modules/@babel/runtime/helpers/esm/nonIterableRest.js function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } //#endregion //#region node_modules/@babel/runtime/helpers/esm/slicedToArray.js function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } //#endregion //#region node_modules/iobuffer/lib-esm/text.js function decode(bytes, encoding = "utf8") { return new TextDecoder(encoding).decode(bytes); } var encoder = new TextEncoder(); function encode(str) { return encoder.encode(str); } //#endregion //#region node_modules/iobuffer/lib-esm/IOBuffer.js var defaultByteLength = 1024 * 8; var hostBigEndian = (() => { const array = new Uint8Array(4); const view = new Uint32Array(array.buffer); return !((view[0] = 1) & array[0]); })(); var typedArrays = { int8: globalThis.Int8Array, uint8: globalThis.Uint8Array, int16: globalThis.Int16Array, uint16: globalThis.Uint16Array, int32: globalThis.Int32Array, uint32: globalThis.Uint32Array, uint64: globalThis.BigUint64Array, int64: globalThis.BigInt64Array, float32: globalThis.Float32Array, float64: globalThis.Float64Array }; var IOBuffer = class IOBuffer { /** * Reference to the internal ArrayBuffer object. */ buffer; /** * Byte length of the internal ArrayBuffer. */ byteLength; /** * Byte offset of the internal ArrayBuffer. */ byteOffset; /** * Byte length of the internal ArrayBuffer. */ length; /** * The current offset of the buffer's pointer. */ offset; lastWrittenByte; littleEndian; _data; _mark; _marks; /** * Create a new IOBuffer. * @param data - The data to construct the IOBuffer with. * If data is a number, it will be the new buffer's length
* If data is `undefined`, the buffer will be initialized with a default length of 8Kb
* If data is an ArrayBuffer, SharedArrayBuffer, an ArrayBufferView (Typed Array), an IOBuffer instance, * or a Node.js Buffer, a view will be created over the underlying ArrayBuffer. * @param options - An object for the options. * @returns A new IOBuffer instance. */ constructor(data = defaultByteLength, options = {}) { let dataIsGiven = false; if (typeof data === "number") data = new ArrayBuffer(data); else { dataIsGiven = true; this.lastWrittenByte = data.byteLength; } const offset = options.offset ? options.offset >>> 0 : 0; const byteLength = data.byteLength - offset; let dvOffset = offset; if (ArrayBuffer.isView(data) || data instanceof IOBuffer) { if (data.byteLength !== data.buffer.byteLength) dvOffset = data.byteOffset + offset; data = data.buffer; } if (dataIsGiven) this.lastWrittenByte = byteLength; else this.lastWrittenByte = 0; this.buffer = data; this.length = byteLength; this.byteLength = byteLength; this.byteOffset = dvOffset; this.offset = 0; this.littleEndian = true; this._data = new DataView(this.buffer, dvOffset, byteLength); this._mark = 0; this._marks = []; } /** * Checks if the memory allocated to the buffer is sufficient to store more * bytes after the offset. * @param byteLength - The needed memory in bytes. * @returns `true` if there is sufficient space and `false` otherwise. */ available(byteLength = 1) { return this.offset + byteLength <= this.length; } /** * Check if little-endian mode is used for reading and writing multi-byte * values. * @returns `true` if little-endian mode is used, `false` otherwise. */ isLittleEndian() { return this.littleEndian; } /** * Set little-endian mode for reading and writing multi-byte values. * @returns This. */ setLittleEndian() { this.littleEndian = true; return this; } /** * Check if big-endian mode is used for reading and writing multi-byte values. * @returns `true` if big-endian mode is used, `false` otherwise. */ isBigEndian() { return !this.littleEndian; } /** * Switches to big-endian mode for reading and writing multi-byte values. * @returns This. */ setBigEndian() { this.littleEndian = false; return this; } /** * Move the pointer n bytes forward. * @param n - Number of bytes to skip. * @returns This. */ skip(n = 1) { this.offset += n; return this; } /** * Move the pointer n bytes backward. * @param n - Number of bytes to move back. * @returns This. */ back(n = 1) { this.offset -= n; return this; } /** * Move the pointer to the given offset. * @param offset - The offset to move to. * @returns This. */ seek(offset) { this.offset = offset; return this; } /** * Store the current pointer offset. * @see {@link IOBuffer#reset} * @returns This. */ mark() { this._mark = this.offset; return this; } /** * Move the pointer back to the last pointer offset set by mark. * @see {@link IOBuffer#mark} * @returns This. */ reset() { this.offset = this._mark; return this; } /** * Push the current pointer offset to the mark stack. * @see {@link IOBuffer#popMark} * @returns This. */ pushMark() { this._marks.push(this.offset); return this; } /** * Pop the last pointer offset from the mark stack, and set the current * pointer offset to the popped value. * @see {@link IOBuffer#pushMark} * @returns This. */ popMark() { const offset = this._marks.pop(); if (offset === void 0) throw new Error("Mark stack empty"); this.seek(offset); return this; } /** * Move the pointer offset back to 0. * @returns This. */ rewind() { this.offset = 0; return this; } /** * Make sure the buffer has sufficient memory to write a given byteLength at * the current pointer offset. * If the buffer's memory is insufficient, this method will create a new * buffer (a copy) with a length that is twice (byteLength + current offset). * @param byteLength - The needed memory in bytes. * @returns This. */ ensureAvailable(byteLength = 1) { if (!this.available(byteLength)) { const newLength = (this.offset + byteLength) * 2; const newArray = new Uint8Array(newLength); newArray.set(new Uint8Array(this.buffer)); this.buffer = newArray.buffer; this.length = newLength; this.byteLength = newLength; this._data = new DataView(this.buffer); } return this; } /** * Read a byte and return false if the byte's value is 0, or true otherwise. * Moves pointer forward by one byte. * @returns The read boolean. */ readBoolean() { return this.readUint8() !== 0; } /** * Read a signed 8-bit integer and move pointer forward by 1 byte. * @returns The read byte. */ readInt8() { return this._data.getInt8(this.offset++); } /** * Read an unsigned 8-bit integer and move pointer forward by 1 byte. * @returns The read byte. */ readUint8() { return this._data.getUint8(this.offset++); } /** * Alias for {@link IOBuffer#readUint8}. * @returns The read byte. */ readByte() { return this.readUint8(); } /** * Read `n` bytes and move pointer forward by `n` bytes. * @param n - Number of bytes to read. * @returns The read bytes. */ readBytes(n = 1) { return this.readArray(n, "uint8"); } /** * Creates an array of corresponding to the type `type` and size `size`. * For example type `uint8` will create a `Uint8Array`. * @param size - size of the resulting array * @param type - number type of elements to read * @returns The read array. */ readArray(size, type) { const bytes = typedArrays[type].BYTES_PER_ELEMENT * size; const offset = this.byteOffset + this.offset; const slice = this.buffer.slice(offset, offset + bytes); if (this.littleEndian === hostBigEndian && type !== "uint8" && type !== "int8") { const slice = new Uint8Array(this.buffer.slice(offset, offset + bytes)); slice.reverse(); const returnArray = new typedArrays[type](slice.buffer); this.offset += bytes; returnArray.reverse(); return returnArray; } const returnArray = new typedArrays[type](slice); this.offset += bytes; return returnArray; } /** * Read a 16-bit signed integer and move pointer forward by 2 bytes. * @returns The read value. */ readInt16() { const value = this._data.getInt16(this.offset, this.littleEndian); this.offset += 2; return value; } /** * Read a 16-bit unsigned integer and move pointer forward by 2 bytes. * @returns The read value. */ readUint16() { const value = this._data.getUint16(this.offset, this.littleEndian); this.offset += 2; return value; } /** * Read a 32-bit signed integer and move pointer forward by 4 bytes. * @returns The read value. */ readInt32() { const value = this._data.getInt32(this.offset, this.littleEndian); this.offset += 4; return value; } /** * Read a 32-bit unsigned integer and move pointer forward by 4 bytes. * @returns The read value. */ readUint32() { const value = this._data.getUint32(this.offset, this.littleEndian); this.offset += 4; return value; } /** * Read a 32-bit floating number and move pointer forward by 4 bytes. * @returns The read value. */ readFloat32() { const value = this._data.getFloat32(this.offset, this.littleEndian); this.offset += 4; return value; } /** * Read a 64-bit floating number and move pointer forward by 8 bytes. * @returns The read value. */ readFloat64() { const value = this._data.getFloat64(this.offset, this.littleEndian); this.offset += 8; return value; } /** * Read a 64-bit signed integer number and move pointer forward by 8 bytes. * @returns The read value. */ readBigInt64() { const value = this._data.getBigInt64(this.offset, this.littleEndian); this.offset += 8; return value; } /** * Read a 64-bit unsigned integer number and move pointer forward by 8 bytes. * @returns The read value. */ readBigUint64() { const value = this._data.getBigUint64(this.offset, this.littleEndian); this.offset += 8; return value; } /** * Read a 1-byte ASCII character and move pointer forward by 1 byte. * @returns The read character. */ readChar() { return String.fromCharCode(this.readInt8()); } /** * Read `n` 1-byte ASCII characters and move pointer forward by `n` bytes. * @param n - Number of characters to read. * @returns The read characters. */ readChars(n = 1) { let result = ""; for (let i = 0; i < n; i++) result += this.readChar(); return result; } /** * Read the next `n` bytes, return a UTF-8 decoded string and move pointer * forward by `n` bytes. * @param n - Number of bytes to read. * @returns The decoded string. */ readUtf8(n = 1) { return decode(this.readBytes(n)); } /** * Read the next `n` bytes, return a string decoded with `encoding` and move pointer * forward by `n` bytes. * If no encoding is passed, the function is equivalent to @see {@link IOBuffer#readUtf8} * @param n - Number of bytes to read. * @param encoding - The encoding to use. Default is 'utf8'. * @returns The decoded string. */ decodeText(n = 1, encoding = "utf8") { return decode(this.readBytes(n), encoding); } /** * Write 0xff if the passed value is truthy, 0x00 otherwise and move pointer * forward by 1 byte. * @param value - The value to write. * @returns This. */ writeBoolean(value) { this.writeUint8(value ? 255 : 0); return this; } /** * Write `value` as an 8-bit signed integer and move pointer forward by 1 byte. * @param value - The value to write. * @returns This. */ writeInt8(value) { this.ensureAvailable(1); this._data.setInt8(this.offset++, value); this._updateLastWrittenByte(); return this; } /** * Write `value` as an 8-bit unsigned integer and move pointer forward by 1 * byte. * @param value - The value to write. * @returns This. */ writeUint8(value) { this.ensureAvailable(1); this._data.setUint8(this.offset++, value); this._updateLastWrittenByte(); return this; } /** * An alias for {@link IOBuffer#writeUint8}. * @param value - The value to write. * @returns This. */ writeByte(value) { return this.writeUint8(value); } /** * Write all elements of `bytes` as uint8 values and move pointer forward by * `bytes.length` bytes. * @param bytes - The array of bytes to write. * @returns This. */ writeBytes(bytes) { this.ensureAvailable(bytes.length); for (let i = 0; i < bytes.length; i++) this._data.setUint8(this.offset++, bytes[i]); this._updateLastWrittenByte(); return this; } /** * Write `value` as a 16-bit signed integer and move pointer forward by 2 * bytes. * @param value - The value to write. * @returns This. */ writeInt16(value) { this.ensureAvailable(2); this._data.setInt16(this.offset, value, this.littleEndian); this.offset += 2; this._updateLastWrittenByte(); return this; } /** * Write `value` as a 16-bit unsigned integer and move pointer forward by 2 * bytes. * @param value - The value to write. * @returns This. */ writeUint16(value) { this.ensureAvailable(2); this._data.setUint16(this.offset, value, this.littleEndian); this.offset += 2; this._updateLastWrittenByte(); return this; } /** * Write `value` as a 32-bit signed integer and move pointer forward by 4 * bytes. * @param value - The value to write. * @returns This. */ writeInt32(value) { this.ensureAvailable(4); this._data.setInt32(this.offset, value, this.littleEndian); this.offset += 4; this._updateLastWrittenByte(); return this; } /** * Write `value` as a 32-bit unsigned integer and move pointer forward by 4 * bytes. * @param value - The value to write. * @returns This. */ writeUint32(value) { this.ensureAvailable(4); this._data.setUint32(this.offset, value, this.littleEndian); this.offset += 4; this._updateLastWrittenByte(); return this; } /** * Write `value` as a 32-bit floating number and move pointer forward by 4 * bytes. * @param value - The value to write. * @returns This. */ writeFloat32(value) { this.ensureAvailable(4); this._data.setFloat32(this.offset, value, this.littleEndian); this.offset += 4; this._updateLastWrittenByte(); return this; } /** * Write `value` as a 64-bit floating number and move pointer forward by 8 * bytes. * @param value - The value to write. * @returns This. */ writeFloat64(value) { this.ensureAvailable(8); this._data.setFloat64(this.offset, value, this.littleEndian); this.offset += 8; this._updateLastWrittenByte(); return this; } /** * Write `value` as a 64-bit signed bigint and move pointer forward by 8 * bytes. * @param value - The value to write. * @returns This. */ writeBigInt64(value) { this.ensureAvailable(8); this._data.setBigInt64(this.offset, value, this.littleEndian); this.offset += 8; this._updateLastWrittenByte(); return this; } /** * Write `value` as a 64-bit unsigned bigint and move pointer forward by 8 * bytes. * @param value - The value to write. * @returns This. */ writeBigUint64(value) { this.ensureAvailable(8); this._data.setBigUint64(this.offset, value, this.littleEndian); this.offset += 8; this._updateLastWrittenByte(); return this; } /** * Write the charCode of `str`'s first character as an 8-bit unsigned integer * and move pointer forward by 1 byte. * @param str - The character to write. * @returns This. */ writeChar(str) { return this.writeUint8(str.charCodeAt(0)); } /** * Write the charCodes of all `str`'s characters as 8-bit unsigned integers * and move pointer forward by `str.length` bytes. * @param str - The characters to write. * @returns This. */ writeChars(str) { for (let i = 0; i < str.length; i++) this.writeUint8(str.charCodeAt(i)); return this; } /** * UTF-8 encode and write `str` to the current pointer offset and move pointer * forward according to the encoded length. * @param str - The string to write. * @returns This. */ writeUtf8(str) { return this.writeBytes(encode(str)); } /** * Export a Uint8Array view of the internal buffer. * The view starts at the byte offset and its length * is calculated to stop at the last written byte or the original length. * @returns A new Uint8Array view. */ toArray() { return new Uint8Array(this.buffer, this.byteOffset, this.lastWrittenByte); } /** * Get the total number of bytes written so far, regardless of the current offset. * @returns - Total number of bytes. */ getWrittenByteLength() { return this.lastWrittenByte - this.byteOffset; } /** * Update the last written byte offset * @private */ _updateLastWrittenByte() { if (this.offset > this.lastWrittenByte) this.lastWrittenByte = this.offset; } }; //#endregion //#region node_modules/pako/dist/pako.esm.mjs /*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ var Z_FIXED$1 = 4; var Z_BINARY = 0; var Z_TEXT = 1; var Z_UNKNOWN$1 = 2; function zero$1(buf) { let len = buf.length; while (--len >= 0) buf[len] = 0; } var STORED_BLOCK = 0; var STATIC_TREES = 1; var DYN_TREES = 2; var LENGTH_CODES$1 = 29; var LITERALS$1 = 256; var L_CODES$1 = 286; var D_CODES$1 = 30; var BL_CODES$1 = 19; var HEAP_SIZE$1 = 573; var MAX_BITS$1 = 15; var Buf_size = 16; var MAX_BL_BITS = 7; var END_BLOCK = 256; var REP_3_6 = 16; var REPZ_3_10 = 17; var REPZ_11_138 = 18; var extra_lbits = new Uint8Array([ 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 ]); var extra_dbits = new Uint8Array([ 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 ]); var extra_blbits = new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7 ]); var bl_order = new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]); var DIST_CODE_LEN = 512; var static_ltree = new Array(288 * 2); zero$1(static_ltree); var static_dtree = new Array(D_CODES$1 * 2); zero$1(static_dtree); var _dist_code = new Array(DIST_CODE_LEN); zero$1(_dist_code); var _length_code = new Array(256); zero$1(_length_code); var base_length = new Array(LENGTH_CODES$1); zero$1(base_length); var base_dist = new Array(D_CODES$1); zero$1(base_dist); function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) { this.static_tree = static_tree; this.extra_bits = extra_bits; this.extra_base = extra_base; this.elems = elems; this.max_length = max_length; this.has_stree = static_tree && static_tree.length; } var static_l_desc; var static_d_desc; var static_bl_desc; function TreeDesc(dyn_tree, stat_desc) { this.dyn_tree = dyn_tree; this.max_code = 0; this.stat_desc = stat_desc; } var d_code = (dist) => { return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; }; var put_short = (s, w) => { s.pending_buf[s.pending++] = w & 255; s.pending_buf[s.pending++] = w >>> 8 & 255; }; var send_bits = (s, value, length) => { if (s.bi_valid > Buf_size - length) { s.bi_buf |= value << s.bi_valid & 65535; put_short(s, s.bi_buf); s.bi_buf = value >> Buf_size - s.bi_valid; s.bi_valid += length - Buf_size; } else { s.bi_buf |= value << s.bi_valid & 65535; s.bi_valid += length; } }; var send_code = (s, c, tree) => { send_bits(s, tree[c * 2], tree[c * 2 + 1]); }; var bi_reverse = (code, len) => { let res = 0; do { res |= code & 1; code >>>= 1; res <<= 1; } while (--len > 0); return res >>> 1; }; var bi_flush = (s) => { if (s.bi_valid === 16) { put_short(s, s.bi_buf); s.bi_buf = 0; s.bi_valid = 0; } else if (s.bi_valid >= 8) { s.pending_buf[s.pending++] = s.bi_buf & 255; s.bi_buf >>= 8; s.bi_valid -= 8; } }; var gen_bitlen = (s, desc) => { const tree = desc.dyn_tree; const max_code = desc.max_code; const stree = desc.stat_desc.static_tree; const has_stree = desc.stat_desc.has_stree; const extra = desc.stat_desc.extra_bits; const base = desc.stat_desc.extra_base; const max_length = desc.stat_desc.max_length; let h; let n, m; let bits; let xbits; let f; let overflow = 0; for (bits = 0; bits <= MAX_BITS$1; bits++) s.bl_count[bits] = 0; tree[s.heap[s.heap_max] * 2 + 1] = 0; for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) { n = s.heap[h]; bits = tree[tree[n * 2 + 1] * 2 + 1] + 1; if (bits > max_length) { bits = max_length; overflow++; } tree[n * 2 + 1] = bits; if (n > max_code) continue; s.bl_count[bits]++; xbits = 0; if (n >= base) xbits = extra[n - base]; f = tree[n * 2]; s.opt_len += f * (bits + xbits); if (has_stree) s.static_len += f * (stree[n * 2 + 1] + xbits); } if (overflow === 0) return; do { bits = max_length - 1; while (s.bl_count[bits] === 0) bits--; s.bl_count[bits]--; s.bl_count[bits + 1] += 2; s.bl_count[max_length]--; overflow -= 2; } while (overflow > 0); for (bits = max_length; bits !== 0; bits--) { n = s.bl_count[bits]; while (n !== 0) { m = s.heap[--h]; if (m > max_code) continue; if (tree[m * 2 + 1] !== bits) { s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2]; tree[m * 2 + 1] = bits; } n--; } } }; var gen_codes = (tree, max_code, bl_count) => { const next_code = new Array(16); let code = 0; let bits; let n; for (bits = 1; bits <= MAX_BITS$1; bits++) { code = code + bl_count[bits - 1] << 1; next_code[bits] = code; } for (n = 0; n <= max_code; n++) { let len = tree[n * 2 + 1]; if (len === 0) continue; tree[n * 2] = bi_reverse(next_code[len]++, len); } }; var tr_static_init = () => { let n; let bits; let length; let code; let dist; const bl_count = new Array(16); length = 0; for (code = 0; code < LENGTH_CODES$1 - 1; code++) { base_length[code] = length; for (n = 0; n < 1 << extra_lbits[code]; n++) _length_code[length++] = code; } _length_code[length - 1] = code; dist = 0; for (code = 0; code < 16; code++) { base_dist[code] = dist; for (n = 0; n < 1 << extra_dbits[code]; n++) _dist_code[dist++] = code; } dist >>= 7; for (; code < D_CODES$1; code++) { base_dist[code] = dist << 7; for (n = 0; n < 1 << extra_dbits[code] - 7; n++) _dist_code[256 + dist++] = code; } for (bits = 0; bits <= MAX_BITS$1; bits++) bl_count[bits] = 0; n = 0; while (n <= 143) { static_ltree[n * 2 + 1] = 8; n++; bl_count[8]++; } while (n <= 255) { static_ltree[n * 2 + 1] = 9; n++; bl_count[9]++; } while (n <= 279) { static_ltree[n * 2 + 1] = 7; n++; bl_count[7]++; } while (n <= 287) { static_ltree[n * 2 + 1] = 8; n++; bl_count[8]++; } gen_codes(static_ltree, 287, bl_count); for (n = 0; n < D_CODES$1; n++) { static_dtree[n * 2 + 1] = 5; static_dtree[n * 2] = bi_reverse(n, 5); } static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, 257, L_CODES$1, MAX_BITS$1); static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES$1, MAX_BITS$1); static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES$1, MAX_BL_BITS); }; var init_block = (s) => { let n; for (n = 0; n < L_CODES$1; n++) s.dyn_ltree[n * 2] = 0; for (n = 0; n < D_CODES$1; n++) s.dyn_dtree[n * 2] = 0; for (n = 0; n < BL_CODES$1; n++) s.bl_tree[n * 2] = 0; s.dyn_ltree[END_BLOCK * 2] = 1; s.opt_len = s.static_len = 0; s.sym_next = s.matches = 0; }; var bi_windup = (s) => { if (s.bi_valid > 8) put_short(s, s.bi_buf); else if (s.bi_valid > 0) s.pending_buf[s.pending++] = s.bi_buf; s.bi_buf = 0; s.bi_valid = 0; }; var smaller = (tree, n, m, depth) => { const _n2 = n * 2; const _m2 = m * 2; return tree[_n2] < tree[_m2] || tree[_n2] === tree[_m2] && depth[n] <= depth[m]; }; var pqdownheap = (s, tree, k) => { const v = s.heap[k]; let j = k << 1; while (j <= s.heap_len) { if (j < s.heap_len && smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) j++; if (smaller(tree, v, s.heap[j], s.depth)) break; s.heap[k] = s.heap[j]; k = j; j <<= 1; } s.heap[k] = v; }; var compress_block = (s, ltree, dtree) => { let dist; let lc; let sx = 0; let code; let extra; if (s.sym_next !== 0) do { dist = s.pending_buf[s.sym_buf + sx++] & 255; dist += (s.pending_buf[s.sym_buf + sx++] & 255) << 8; lc = s.pending_buf[s.sym_buf + sx++]; if (dist === 0) send_code(s, lc, ltree); else { code = _length_code[lc]; send_code(s, code + LITERALS$1 + 1, ltree); extra = extra_lbits[code]; if (extra !== 0) { lc -= base_length[code]; send_bits(s, lc, extra); } dist--; code = d_code(dist); send_code(s, code, dtree); extra = extra_dbits[code]; if (extra !== 0) { dist -= base_dist[code]; send_bits(s, dist, extra); } } } while (sx < s.sym_next); send_code(s, END_BLOCK, ltree); }; var build_tree = (s, desc) => { const tree = desc.dyn_tree; const stree = desc.stat_desc.static_tree; const has_stree = desc.stat_desc.has_stree; const elems = desc.stat_desc.elems; let n, m; let max_code = -1; let node; s.heap_len = 0; s.heap_max = HEAP_SIZE$1; for (n = 0; n < elems; n++) if (tree[n * 2] !== 0) { s.heap[++s.heap_len] = max_code = n; s.depth[n] = 0; } else tree[n * 2 + 1] = 0; while (s.heap_len < 2) { node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0; tree[node * 2] = 1; s.depth[node] = 0; s.opt_len--; if (has_stree) s.static_len -= stree[node * 2 + 1]; } desc.max_code = max_code; for (n = s.heap_len >> 1; n >= 1; n--) pqdownheap(s, tree, n); node = elems; do { /*** pqremove ***/ n = s.heap[1]; s.heap[1] = s.heap[s.heap_len--]; pqdownheap(s, tree, 1); m = s.heap[1]; s.heap[--s.heap_max] = n; s.heap[--s.heap_max] = m; tree[node * 2] = tree[n * 2] + tree[m * 2]; s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; tree[n * 2 + 1] = tree[m * 2 + 1] = node; s.heap[1] = node++; pqdownheap(s, tree, 1); } while (s.heap_len >= 2); s.heap[--s.heap_max] = s.heap[1]; gen_bitlen(s, desc); gen_codes(tree, max_code, s.bl_count); }; var scan_tree = (s, tree, max_code) => { let n; let prevlen = -1; let curlen; let nextlen = tree[1]; let count = 0; let max_count = 7; let min_count = 4; if (nextlen === 0) { max_count = 138; min_count = 3; } tree[(max_code + 1) * 2 + 1] = 65535; for (n = 0; n <= max_code; n++) { curlen = nextlen; nextlen = tree[(n + 1) * 2 + 1]; if (++count < max_count && curlen === nextlen) continue; else if (count < min_count) s.bl_tree[curlen * 2] += count; else if (curlen !== 0) { if (curlen !== prevlen) s.bl_tree[curlen * 2]++; s.bl_tree[REP_3_6 * 2]++; } else if (count <= 10) s.bl_tree[REPZ_3_10 * 2]++; else s.bl_tree[REPZ_11_138 * 2]++; count = 0; prevlen = curlen; if (nextlen === 0) { max_count = 138; min_count = 3; } else if (curlen === nextlen) { max_count = 6; min_count = 3; } else { max_count = 7; min_count = 4; } } }; var send_tree = (s, tree, max_code) => { let n; let prevlen = -1; let curlen; let nextlen = tree[1]; let count = 0; let max_count = 7; let min_count = 4; if (nextlen === 0) { max_count = 138; min_count = 3; } for (n = 0; n <= max_code; n++) { curlen = nextlen; nextlen = tree[(n + 1) * 2 + 1]; if (++count < max_count && curlen === nextlen) continue; else if (count < min_count) do send_code(s, curlen, s.bl_tree); while (--count !== 0); else if (curlen !== 0) { if (curlen !== prevlen) { send_code(s, curlen, s.bl_tree); count--; } send_code(s, REP_3_6, s.bl_tree); send_bits(s, count - 3, 2); } else if (count <= 10) { send_code(s, REPZ_3_10, s.bl_tree); send_bits(s, count - 3, 3); } else { send_code(s, REPZ_11_138, s.bl_tree); send_bits(s, count - 11, 7); } count = 0; prevlen = curlen; if (nextlen === 0) { max_count = 138; min_count = 3; } else if (curlen === nextlen) { max_count = 6; min_count = 3; } else { max_count = 7; min_count = 4; } } }; var build_bl_tree = (s) => { let max_blindex; scan_tree(s, s.dyn_ltree, s.l_desc.max_code); scan_tree(s, s.dyn_dtree, s.d_desc.max_code); build_tree(s, s.bl_desc); for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) if (s.bl_tree[bl_order[max_blindex] * 2 + 1] !== 0) break; s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; return max_blindex; }; var send_all_trees = (s, lcodes, dcodes, blcodes) => { let rank; send_bits(s, lcodes - 257, 5); send_bits(s, dcodes - 1, 5); send_bits(s, blcodes - 4, 4); for (rank = 0; rank < blcodes; rank++) send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1], 3); send_tree(s, s.dyn_ltree, lcodes - 1); send_tree(s, s.dyn_dtree, dcodes - 1); }; var detect_data_type = (s) => { let block_mask = 4093624447; let n; for (n = 0; n <= 31; n++, block_mask >>>= 1) if (block_mask & 1 && s.dyn_ltree[n * 2] !== 0) return Z_BINARY; if (s.dyn_ltree[18] !== 0 || s.dyn_ltree[20] !== 0 || s.dyn_ltree[26] !== 0) return Z_TEXT; for (n = 32; n < LITERALS$1; n++) if (s.dyn_ltree[n * 2] !== 0) return Z_TEXT; return Z_BINARY; }; var static_init_done = false; var _tr_init$1 = (s) => { if (!static_init_done) { tr_static_init(); static_init_done = true; } s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc); s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc); s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc); s.bi_buf = 0; s.bi_valid = 0; init_block(s); }; var _tr_stored_block$1 = (s, buf, stored_len, last) => { send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); bi_windup(s); put_short(s, stored_len); put_short(s, ~stored_len); if (stored_len) s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending); s.pending += stored_len; }; var _tr_align$1 = (s) => { send_bits(s, STATIC_TREES << 1, 3); send_code(s, END_BLOCK, static_ltree); bi_flush(s); }; var _tr_flush_block$1 = (s, buf, stored_len, last) => { let opt_lenb, static_lenb; let max_blindex = 0; if (s.level > 0) { if (s.strm.data_type === Z_UNKNOWN$1) s.strm.data_type = detect_data_type(s); build_tree(s, s.l_desc); build_tree(s, s.d_desc); max_blindex = build_bl_tree(s); opt_lenb = s.opt_len + 3 + 7 >>> 3; static_lenb = s.static_len + 3 + 7 >>> 3; if (static_lenb <= opt_lenb) opt_lenb = static_lenb; } else opt_lenb = static_lenb = stored_len + 5; if (stored_len + 4 <= opt_lenb && buf !== -1) _tr_stored_block$1(s, buf, stored_len, last); else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) { send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3); compress_block(s, static_ltree, static_dtree); } else { send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3); send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1); compress_block(s, s.dyn_ltree, s.dyn_dtree); } init_block(s); if (last) bi_windup(s); }; var _tr_tally$1 = (s, dist, lc) => { s.pending_buf[s.sym_buf + s.sym_next++] = dist; s.pending_buf[s.sym_buf + s.sym_next++] = dist >> 8; s.pending_buf[s.sym_buf + s.sym_next++] = lc; if (dist === 0) s.dyn_ltree[lc * 2]++; else { s.matches++; dist--; s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]++; s.dyn_dtree[d_code(dist) * 2]++; } return s.sym_next === s.sym_end; }; var trees = { _tr_init: _tr_init$1, _tr_stored_block: _tr_stored_block$1, _tr_flush_block: _tr_flush_block$1, _tr_tally: _tr_tally$1, _tr_align: _tr_align$1 }; var adler32 = (adler, buf, len, pos) => { let s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n = 0; while (len !== 0) { n = len > 2e3 ? 2e3 : len; len -= n; do { s1 = s1 + buf[pos++] | 0; s2 = s2 + s1 | 0; } while (--n); s1 %= 65521; s2 %= 65521; } return s1 | s2 << 16 | 0; }; var adler32_1 = adler32; var makeTable = () => { let c, table = []; for (var n = 0; n < 256; n++) { c = n; for (var k = 0; k < 8; k++) c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1; table[n] = c; } return table; }; var crcTable$1 = new Uint32Array(makeTable()); var crc32 = (crc, buf, len, pos) => { const t = crcTable$1; const end = pos + len; crc ^= -1; for (let i = pos; i < end; i++) crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 255]; return crc ^ -1; }; var crc32_1 = crc32; var messages = { 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" }; var constants$2 = { 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_MEM_ERROR: -4, 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 }; var { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees; var { Z_NO_FLUSH: Z_NO_FLUSH$2, Z_PARTIAL_FLUSH, Z_FULL_FLUSH: Z_FULL_FLUSH$1, Z_FINISH: Z_FINISH$3, Z_BLOCK: Z_BLOCK$1, Z_OK: Z_OK$3, Z_STREAM_END: Z_STREAM_END$3, Z_STREAM_ERROR: Z_STREAM_ERROR$2, Z_DATA_ERROR: Z_DATA_ERROR$2, Z_BUF_ERROR: Z_BUF_ERROR$1, Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1, Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1, Z_UNKNOWN, Z_DEFLATED: Z_DEFLATED$2 } = constants$2; var MAX_MEM_LEVEL = 9; var MAX_WBITS$1 = 15; var DEF_MEM_LEVEL = 8; var HEAP_SIZE = 573; var MIN_MATCH = 3; var MAX_MATCH = 258; var MIN_LOOKAHEAD = 262; var PRESET_DICT = 32; var INIT_STATE = 42; var GZIP_STATE = 57; var EXTRA_STATE = 69; var NAME_STATE = 73; var COMMENT_STATE = 91; var HCRC_STATE = 103; var BUSY_STATE = 113; var FINISH_STATE = 666; var BS_NEED_MORE = 1; var BS_BLOCK_DONE = 2; var BS_FINISH_STARTED = 3; var BS_FINISH_DONE = 4; var OS_CODE = 3; var err = (strm, errorCode) => { strm.msg = messages[errorCode]; return errorCode; }; var rank = (f) => { return f * 2 - (f > 4 ? 9 : 0); }; var zero = (buf) => { let len = buf.length; while (--len >= 0) buf[len] = 0; }; var slide_hash = (s) => { let n, m; let p; let wsize = s.w_size; n = s.hash_size; p = n; do { m = s.head[--p]; s.head[p] = m >= wsize ? m - wsize : 0; } while (--n); n = wsize; p = n; do { m = s.prev[--p]; s.prev[p] = m >= wsize ? m - wsize : 0; } while (--n); }; var HASH_ZLIB = (s, prev, data) => (prev << s.hash_shift ^ data) & s.hash_mask; var HASH = HASH_ZLIB; var flush_pending = (strm) => { const s = strm.state; let len = s.pending; if (len > strm.avail_out) len = strm.avail_out; if (len === 0) return; strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out); strm.next_out += len; s.pending_out += len; strm.total_out += len; strm.avail_out -= len; s.pending -= len; if (s.pending === 0) s.pending_out = 0; }; var flush_block_only = (s, last) => { _tr_flush_block(s, s.block_start >= 0 ? s.block_start : -1, s.strstart - s.block_start, last); s.block_start = s.strstart; flush_pending(s.strm); }; var put_byte = (s, b) => { s.pending_buf[s.pending++] = b; }; var putShortMSB = (s, b) => { s.pending_buf[s.pending++] = b >>> 8 & 255; s.pending_buf[s.pending++] = b & 255; }; var read_buf = (strm, buf, start, size) => { let len = strm.avail_in; if (len > size) len = size; if (len === 0) return 0; strm.avail_in -= len; buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start); if (strm.state.wrap === 1) strm.adler = adler32_1(strm.adler, buf, len, start); else if (strm.state.wrap === 2) strm.adler = crc32_1(strm.adler, buf, len, start); strm.next_in += len; strm.total_in += len; return len; }; var longest_match = (s, cur_match) => { let chain_length = s.max_chain_length; let scan = s.strstart; let match; let len; let best_len = s.prev_length; let nice_match = s.nice_match; const limit = s.strstart > s.w_size - MIN_LOOKAHEAD ? s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0; const _win = s.window; const wmask = s.w_mask; const prev = s.prev; const strend = s.strstart + MAX_MATCH; let scan_end1 = _win[scan + best_len - 1]; let scan_end = _win[scan + best_len]; if (s.prev_length >= s.good_match) chain_length >>= 2; if (nice_match > s.lookahead) nice_match = s.lookahead; do { match = cur_match; if (_win[match + best_len] !== scan_end || _win[match + best_len - 1] !== scan_end1 || _win[match] !== _win[scan] || _win[++match] !== _win[scan + 1]) continue; scan += 2; match++; do ; while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && scan < strend); len = MAX_MATCH - (strend - scan); scan = strend - MAX_MATCH; if (len > best_len) { s.match_start = cur_match; best_len = len; if (len >= nice_match) break; scan_end1 = _win[scan + best_len - 1]; scan_end = _win[scan + best_len]; } } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0); if (best_len <= s.lookahead) return best_len; return s.lookahead; }; var fill_window = (s) => { const _w_size = s.w_size; let n, more, str; do { more = s.window_size - s.lookahead - s.strstart; if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) { s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0); s.match_start -= _w_size; s.strstart -= _w_size; s.block_start -= _w_size; if (s.insert > s.strstart) s.insert = s.strstart; slide_hash(s); more += _w_size; } if (s.strm.avail_in === 0) break; n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more); s.lookahead += n; if (s.lookahead + s.insert >= MIN_MATCH) { str = s.strstart - s.insert; s.ins_h = s.window[str]; s.ins_h = HASH(s, s.ins_h, s.window[str + 1]); while (s.insert) { s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]); s.prev[str & s.w_mask] = s.head[s.ins_h]; s.head[s.ins_h] = str; str++; s.insert--; if (s.lookahead + s.insert < MIN_MATCH) break; } } } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0); }; var deflate_stored = (s, flush) => { let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5; let len, left, have, last = 0; let used = s.strm.avail_in; do { len = 65535; have = s.bi_valid + 42 >> 3; if (s.strm.avail_out < have) break; have = s.strm.avail_out - have; left = s.strstart - s.block_start; if (len > left + s.strm.avail_in) len = left + s.strm.avail_in; if (len > have) len = have; if (len < min_block && (len === 0 && flush !== Z_FINISH$3 || flush === Z_NO_FLUSH$2 || len !== left + s.strm.avail_in)) break; last = flush === Z_FINISH$3 && len === left + s.strm.avail_in ? 1 : 0; _tr_stored_block(s, 0, 0, last); s.pending_buf[s.pending - 4] = len; s.pending_buf[s.pending - 3] = len >> 8; s.pending_buf[s.pending - 2] = ~len; s.pending_buf[s.pending - 1] = ~len >> 8; flush_pending(s.strm); if (left) { if (left > len) left = len; s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out); s.strm.next_out += left; s.strm.avail_out -= left; s.strm.total_out += left; s.block_start += left; len -= left; } if (len) { read_buf(s.strm, s.strm.output, s.strm.next_out, len); s.strm.next_out += len; s.strm.avail_out -= len; s.strm.total_out += len; } } while (last === 0); used -= s.strm.avail_in; if (used) { if (used >= s.w_size) { s.matches = 2; s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0); s.strstart = s.w_size; s.insert = s.strstart; } else { if (s.window_size - s.strstart <= used) { s.strstart -= s.w_size; s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0); if (s.matches < 2) s.matches++; if (s.insert > s.strstart) s.insert = s.strstart; } s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart); s.strstart += used; s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used; } s.block_start = s.strstart; } if (s.high_water < s.strstart) s.high_water = s.strstart; if (last) return BS_FINISH_DONE; if (flush !== Z_NO_FLUSH$2 && flush !== Z_FINISH$3 && s.strm.avail_in === 0 && s.strstart === s.block_start) return BS_BLOCK_DONE; have = s.window_size - s.strstart; if (s.strm.avail_in > have && s.block_start >= s.w_size) { s.block_start -= s.w_size; s.strstart -= s.w_size; s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0); if (s.matches < 2) s.matches++; have += s.w_size; if (s.insert > s.strstart) s.insert = s.strstart; } if (have > s.strm.avail_in) have = s.strm.avail_in; if (have) { read_buf(s.strm, s.window, s.strstart, have); s.strstart += have; s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have; } if (s.high_water < s.strstart) s.high_water = s.strstart; have = s.bi_valid + 42 >> 3; have = s.pending_buf_size - have > 65535 ? 65535 : s.pending_buf_size - have; min_block = have > s.w_size ? s.w_size : have; left = s.strstart - s.block_start; if (left >= min_block || (left || flush === Z_FINISH$3) && flush !== Z_NO_FLUSH$2 && s.strm.avail_in === 0 && left <= have) { len = left > have ? have : left; last = flush === Z_FINISH$3 && s.strm.avail_in === 0 && len === left ? 1 : 0; _tr_stored_block(s, s.block_start, len, last); s.block_start += len; flush_pending(s.strm); } return last ? BS_FINISH_STARTED : BS_NEED_MORE; }; var deflate_fast = (s, flush) => { let hash_head; let bflush; for (;;) { if (s.lookahead < MIN_LOOKAHEAD) { fill_window(s); if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) return BS_NEED_MORE; if (s.lookahead === 0) break; } hash_head = 0; if (s.lookahead >= MIN_MATCH) { /*** INSERT_STRING(s, s.strstart, hash_head); ***/ s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; s.head[s.ins_h] = s.strstart; } if (hash_head !== 0 && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) s.match_length = longest_match(s, hash_head); if (s.match_length >= MIN_MATCH) { /*** _tr_tally_dist(s, s.strstart - s.match_start, s.match_length - MIN_MATCH, bflush); ***/ bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH); s.lookahead -= s.match_length; if (s.match_length <= s.max_lazy_match && s.lookahead >= MIN_MATCH) { s.match_length--; do { s.strstart++; /*** INSERT_STRING(s, s.strstart, hash_head); ***/ s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; s.head[s.ins_h] = s.strstart; } while (--s.match_length !== 0); s.strstart++; } else { s.strstart += s.match_length; s.match_length = 0; s.ins_h = s.window[s.strstart]; s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]); } } else { /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ bflush = _tr_tally(s, 0, s.window[s.strstart]); s.lookahead--; s.strstart++; } if (bflush) { /*** FLUSH_BLOCK(s, 0); ***/ flush_block_only(s, false); if (s.strm.avail_out === 0) return BS_NEED_MORE; } } s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; if (flush === Z_FINISH$3) { /*** FLUSH_BLOCK(s, 1); ***/ flush_block_only(s, true); if (s.strm.avail_out === 0) return BS_FINISH_STARTED; return BS_FINISH_DONE; } if (s.sym_next) { /*** FLUSH_BLOCK(s, 0); ***/ flush_block_only(s, false); if (s.strm.avail_out === 0) return BS_NEED_MORE; } return BS_BLOCK_DONE; }; var deflate_slow = (s, flush) => { let hash_head; let bflush; let max_insert; for (;;) { if (s.lookahead < MIN_LOOKAHEAD) { fill_window(s); if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) return BS_NEED_MORE; if (s.lookahead === 0) break; } hash_head = 0; if (s.lookahead >= MIN_MATCH) { /*** INSERT_STRING(s, s.strstart, hash_head); ***/ s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; s.head[s.ins_h] = s.strstart; } s.prev_length = s.match_length; s.prev_match = s.match_start; s.match_length = MIN_MATCH - 1; if (hash_head !== 0 && s.prev_length < s.max_lazy_match && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) { s.match_length = longest_match(s, hash_head); if (s.match_length <= 5 && (s.strategy === Z_FILTERED || s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096)) s.match_length = MIN_MATCH - 1; } if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) { max_insert = s.strstart + s.lookahead - MIN_MATCH; /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH, bflush);***/ bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH); s.lookahead -= s.prev_length - 1; s.prev_length -= 2; do if (++s.strstart <= max_insert) { /*** INSERT_STRING(s, s.strstart, hash_head); ***/ s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; s.head[s.ins_h] = s.strstart; } while (--s.prev_length !== 0); s.match_available = 0; s.match_length = MIN_MATCH - 1; s.strstart++; if (bflush) { /*** FLUSH_BLOCK(s, 0); ***/ flush_block_only(s, false); if (s.strm.avail_out === 0) return BS_NEED_MORE; } } else if (s.match_available) { /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ bflush = _tr_tally(s, 0, s.window[s.strstart - 1]); if (bflush) /*** FLUSH_BLOCK_ONLY(s, 0) ***/ flush_block_only(s, false); s.strstart++; s.lookahead--; if (s.strm.avail_out === 0) return BS_NEED_MORE; } else { s.match_available = 1; s.strstart++; s.lookahead--; } } if (s.match_available) { /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ bflush = _tr_tally(s, 0, s.window[s.strstart - 1]); s.match_available = 0; } s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; if (flush === Z_FINISH$3) { /*** FLUSH_BLOCK(s, 1); ***/ flush_block_only(s, true); if (s.strm.avail_out === 0) return BS_FINISH_STARTED; return BS_FINISH_DONE; } if (s.sym_next) { /*** FLUSH_BLOCK(s, 0); ***/ flush_block_only(s, false); if (s.strm.avail_out === 0) return BS_NEED_MORE; } return BS_BLOCK_DONE; }; var deflate_rle = (s, flush) => { let bflush; let prev; let scan, strend; const _win = s.window; for (;;) { if (s.lookahead <= MAX_MATCH) { fill_window(s); if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) return BS_NEED_MORE; if (s.lookahead === 0) break; } s.match_length = 0; if (s.lookahead >= MIN_MATCH && s.strstart > 0) { scan = s.strstart - 1; prev = _win[scan]; if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) { strend = s.strstart + MAX_MATCH; do ; while (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && scan < strend); s.match_length = MAX_MATCH - (strend - scan); if (s.match_length > s.lookahead) s.match_length = s.lookahead; } } if (s.match_length >= MIN_MATCH) { /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/ bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH); s.lookahead -= s.match_length; s.strstart += s.match_length; s.match_length = 0; } else { /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ bflush = _tr_tally(s, 0, s.window[s.strstart]); s.lookahead--; s.strstart++; } if (bflush) { /*** FLUSH_BLOCK(s, 0); ***/ flush_block_only(s, false); if (s.strm.avail_out === 0) return BS_NEED_MORE; } } s.insert = 0; if (flush === Z_FINISH$3) { /*** FLUSH_BLOCK(s, 1); ***/ flush_block_only(s, true); if (s.strm.avail_out === 0) return BS_FINISH_STARTED; return BS_FINISH_DONE; } if (s.sym_next) { /*** FLUSH_BLOCK(s, 0); ***/ flush_block_only(s, false); if (s.strm.avail_out === 0) return BS_NEED_MORE; } return BS_BLOCK_DONE; }; var deflate_huff = (s, flush) => { let bflush; for (;;) { if (s.lookahead === 0) { fill_window(s); if (s.lookahead === 0) { if (flush === Z_NO_FLUSH$2) return BS_NEED_MORE; break; } } s.match_length = 0; /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ bflush = _tr_tally(s, 0, s.window[s.strstart]); s.lookahead--; s.strstart++; if (bflush) { /*** FLUSH_BLOCK(s, 0); ***/ flush_block_only(s, false); if (s.strm.avail_out === 0) return BS_NEED_MORE; } } s.insert = 0; if (flush === Z_FINISH$3) { /*** FLUSH_BLOCK(s, 1); ***/ flush_block_only(s, true); if (s.strm.avail_out === 0) return BS_FINISH_STARTED; return BS_FINISH_DONE; } if (s.sym_next) { /*** FLUSH_BLOCK(s, 0); ***/ flush_block_only(s, false); if (s.strm.avail_out === 0) return BS_NEED_MORE; } return BS_BLOCK_DONE; }; function Config(good_length, max_lazy, nice_length, max_chain, func) { this.good_length = good_length; this.max_lazy = max_lazy; this.nice_length = nice_length; this.max_chain = max_chain; this.func = func; } var configuration_table = [ new Config(0, 0, 0, 0, deflate_stored), new Config(4, 4, 8, 4, deflate_fast), new Config(4, 5, 16, 8, deflate_fast), new Config(4, 6, 32, 32, deflate_fast), new Config(4, 4, 16, 16, deflate_slow), new Config(8, 16, 32, 32, deflate_slow), new Config(8, 16, 128, 128, deflate_slow), new Config(8, 32, 128, 256, deflate_slow), new Config(32, 128, 258, 1024, deflate_slow), new Config(32, 258, 258, 4096, deflate_slow) ]; var lm_init = (s) => { s.window_size = 2 * s.w_size; /*** CLEAR_HASH(s); ***/ zero(s.head); s.max_lazy_match = configuration_table[s.level].max_lazy; s.good_match = configuration_table[s.level].good_length; s.nice_match = configuration_table[s.level].nice_length; s.max_chain_length = configuration_table[s.level].max_chain; s.strstart = 0; s.block_start = 0; s.lookahead = 0; s.insert = 0; s.match_length = s.prev_length = MIN_MATCH - 1; s.match_available = 0; s.ins_h = 0; }; function DeflateState() { 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 = Z_DEFLATED$2; 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 Uint16Array(HEAP_SIZE * 2); this.dyn_dtree = new Uint16Array(122); this.bl_tree = new Uint16Array(78); zero(this.dyn_ltree); zero(this.dyn_dtree); zero(this.bl_tree); this.l_desc = null; this.d_desc = null; this.bl_desc = null; this.bl_count = new Uint16Array(16); this.heap = new Uint16Array(573); zero(this.heap); this.heap_len = 0; this.heap_max = 0; this.depth = new Uint16Array(573); zero(this.depth); this.sym_buf = 0; this.lit_bufsize = 0; this.sym_next = 0; this.sym_end = 0; this.opt_len = 0; this.static_len = 0; this.matches = 0; this.insert = 0; this.bi_buf = 0; this.bi_valid = 0; } var deflateStateCheck = (strm) => { if (!strm) return 1; const s = strm.state; if (!s || s.strm !== strm || s.status !== INIT_STATE && s.status !== GZIP_STATE && s.status !== EXTRA_STATE && s.status !== NAME_STATE && s.status !== COMMENT_STATE && s.status !== HCRC_STATE && s.status !== BUSY_STATE && s.status !== FINISH_STATE) return 1; return 0; }; var deflateResetKeep = (strm) => { if (deflateStateCheck(strm)) return err(strm, Z_STREAM_ERROR$2); strm.total_in = strm.total_out = 0; strm.data_type = Z_UNKNOWN; const s = strm.state; s.pending = 0; s.pending_out = 0; if (s.wrap < 0) s.wrap = -s.wrap; s.status = s.wrap === 2 ? GZIP_STATE : s.wrap ? INIT_STATE : BUSY_STATE; strm.adler = s.wrap === 2 ? 0 : 1; s.last_flush = -2; _tr_init(s); return Z_OK$3; }; var deflateReset = (strm) => { const ret = deflateResetKeep(strm); if (ret === Z_OK$3) lm_init(strm.state); return ret; }; var deflateSetHeader = (strm, head) => { if (deflateStateCheck(strm) || strm.state.wrap !== 2) return Z_STREAM_ERROR$2; strm.state.gzhead = head; return Z_OK$3; }; var deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => { if (!strm) return Z_STREAM_ERROR$2; let wrap = 1; if (level === Z_DEFAULT_COMPRESSION$1) level = 6; if (windowBits < 0) { wrap = 0; windowBits = -windowBits; } else if (windowBits > 15) { wrap = 2; windowBits -= 16; } if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED || windowBits === 8 && wrap !== 1) return err(strm, Z_STREAM_ERROR$2); if (windowBits === 8) windowBits = 9; const s = new DeflateState(); strm.state = s; s.strm = strm; s.status = INIT_STATE; s.wrap = wrap; s.gzhead = null; s.w_bits = windowBits; s.w_size = 1 << s.w_bits; s.w_mask = s.w_size - 1; s.hash_bits = memLevel + 7; s.hash_size = 1 << s.hash_bits; s.hash_mask = s.hash_size - 1; s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); s.window = new Uint8Array(s.w_size * 2); s.head = new Uint16Array(s.hash_size); s.prev = new Uint16Array(s.w_size); s.lit_bufsize = 1 << memLevel + 6; s.pending_buf_size = s.lit_bufsize * 4; s.pending_buf = new Uint8Array(s.pending_buf_size); s.sym_buf = s.lit_bufsize; s.sym_end = (s.lit_bufsize - 1) * 3; s.level = level; s.strategy = strategy; s.method = method; return deflateReset(strm); }; var deflateInit = (strm, level) => { return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1); }; var deflate$2 = (strm, flush) => { if (deflateStateCheck(strm) || flush > Z_BLOCK$1 || flush < 0) return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2; const s = strm.state; if (!strm.output || strm.avail_in !== 0 && !strm.input || s.status === FINISH_STATE && flush !== Z_FINISH$3) return err(strm, strm.avail_out === 0 ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$2); const old_flush = s.last_flush; s.last_flush = flush; if (s.pending !== 0) { flush_pending(strm); if (strm.avail_out === 0) { s.last_flush = -1; return Z_OK$3; } } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && flush !== Z_FINISH$3) return err(strm, Z_BUF_ERROR$1); if (s.status === FINISH_STATE && strm.avail_in !== 0) return err(strm, Z_BUF_ERROR$1); if (s.status === INIT_STATE && s.wrap === 0) s.status = BUSY_STATE; if (s.status === INIT_STATE) { let header = Z_DEFLATED$2 + (s.w_bits - 8 << 4) << 8; let level_flags = -1; if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) level_flags = 0; else if (s.level < 6) level_flags = 1; else if (s.level === 6) level_flags = 2; else level_flags = 3; header |= level_flags << 6; if (s.strstart !== 0) header |= PRESET_DICT; header += 31 - header % 31; putShortMSB(s, header); if (s.strstart !== 0) { putShortMSB(s, strm.adler >>> 16); putShortMSB(s, strm.adler & 65535); } strm.adler = 1; s.status = BUSY_STATE; flush_pending(strm); if (s.pending !== 0) { s.last_flush = -1; return Z_OK$3; } } if (s.status === GZIP_STATE) { strm.adler = 0; put_byte(s, 31); put_byte(s, 139); put_byte(s, 8); if (!s.gzhead) { put_byte(s, 0); put_byte(s, 0); put_byte(s, 0); put_byte(s, 0); put_byte(s, 0); put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0); put_byte(s, OS_CODE); s.status = BUSY_STATE; flush_pending(strm); if (s.pending !== 0) { s.last_flush = -1; return Z_OK$3; } } else { put_byte(s, (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (!s.gzhead.extra ? 0 : 4) + (!s.gzhead.name ? 0 : 8) + (!s.gzhead.comment ? 0 : 16)); put_byte(s, s.gzhead.time & 255); put_byte(s, s.gzhead.time >> 8 & 255); put_byte(s, s.gzhead.time >> 16 & 255); put_byte(s, s.gzhead.time >> 24 & 255); put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0); put_byte(s, s.gzhead.os & 255); if (s.gzhead.extra && s.gzhead.extra.length) { put_byte(s, s.gzhead.extra.length & 255); put_byte(s, s.gzhead.extra.length >> 8 & 255); } if (s.gzhead.hcrc) strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0); s.gzindex = 0; s.status = EXTRA_STATE; } } if (s.status === EXTRA_STATE) { if (s.gzhead.extra) { let beg = s.pending; let left = (s.gzhead.extra.length & 65535) - s.gzindex; while (s.pending + left > s.pending_buf_size) { let copy = s.pending_buf_size - s.pending; s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending); s.pending = s.pending_buf_size; if (s.gzhead.hcrc && s.pending > beg) strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); s.gzindex += copy; flush_pending(strm); if (s.pending !== 0) { s.last_flush = -1; return Z_OK$3; } beg = 0; left -= copy; } let gzhead_extra = new Uint8Array(s.gzhead.extra); s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending); s.pending += left; if (s.gzhead.hcrc && s.pending > beg) strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); s.gzindex = 0; } s.status = NAME_STATE; } if (s.status === NAME_STATE) { if (s.gzhead.name) { let beg = s.pending; let val; do { if (s.pending === s.pending_buf_size) { if (s.gzhead.hcrc && s.pending > beg) strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); flush_pending(strm); if (s.pending !== 0) { s.last_flush = -1; return Z_OK$3; } beg = 0; } if (s.gzindex < s.gzhead.name.length) val = s.gzhead.name.charCodeAt(s.gzindex++) & 255; else val = 0; put_byte(s, val); } while (val !== 0); if (s.gzhead.hcrc && s.pending > beg) strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); s.gzindex = 0; } s.status = COMMENT_STATE; } if (s.status === COMMENT_STATE) { if (s.gzhead.comment) { let beg = s.pending; let val; do { if (s.pending === s.pending_buf_size) { if (s.gzhead.hcrc && s.pending > beg) strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); flush_pending(strm); if (s.pending !== 0) { s.last_flush = -1; return Z_OK$3; } beg = 0; } if (s.gzindex < s.gzhead.comment.length) val = s.gzhead.comment.charCodeAt(s.gzindex++) & 255; else val = 0; put_byte(s, val); } while (val !== 0); if (s.gzhead.hcrc && s.pending > beg) strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); } s.status = HCRC_STATE; } if (s.status === HCRC_STATE) { if (s.gzhead.hcrc) { if (s.pending + 2 > s.pending_buf_size) { flush_pending(strm); if (s.pending !== 0) { s.last_flush = -1; return Z_OK$3; } } put_byte(s, strm.adler & 255); put_byte(s, strm.adler >> 8 & 255); strm.adler = 0; } s.status = BUSY_STATE; flush_pending(strm); if (s.pending !== 0) { s.last_flush = -1; return Z_OK$3; } } if (strm.avail_in !== 0 || s.lookahead !== 0 || flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE) { let bstate = s.level === 0 ? deflate_stored(s, flush) : s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : s.strategy === Z_RLE ? deflate_rle(s, flush) : configuration_table[s.level].func(s, flush); if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) s.status = FINISH_STATE; if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) { if (strm.avail_out === 0) s.last_flush = -1; return Z_OK$3; } if (bstate === BS_BLOCK_DONE) { if (flush === Z_PARTIAL_FLUSH) _tr_align(s); else if (flush !== Z_BLOCK$1) { _tr_stored_block(s, 0, 0, false); if (flush === Z_FULL_FLUSH$1) { /*** CLEAR_HASH(s); ***/ zero(s.head); if (s.lookahead === 0) { s.strstart = 0; s.block_start = 0; s.insert = 0; } } } flush_pending(strm); if (strm.avail_out === 0) { s.last_flush = -1; return Z_OK$3; } } } if (flush !== Z_FINISH$3) return Z_OK$3; if (s.wrap <= 0) return Z_STREAM_END$3; if (s.wrap === 2) { put_byte(s, strm.adler & 255); put_byte(s, strm.adler >> 8 & 255); put_byte(s, strm.adler >> 16 & 255); put_byte(s, strm.adler >> 24 & 255); put_byte(s, strm.total_in & 255); put_byte(s, strm.total_in >> 8 & 255); put_byte(s, strm.total_in >> 16 & 255); put_byte(s, strm.total_in >> 24 & 255); } else { putShortMSB(s, strm.adler >>> 16); putShortMSB(s, strm.adler & 65535); } flush_pending(strm); if (s.wrap > 0) s.wrap = -s.wrap; return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3; }; var deflateEnd = (strm) => { if (deflateStateCheck(strm)) return Z_STREAM_ERROR$2; const status = strm.state.status; strm.state = null; return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3; }; var deflateSetDictionary = (strm, dictionary) => { let dictLength = dictionary.length; if (deflateStateCheck(strm)) return Z_STREAM_ERROR$2; const s = strm.state; const wrap = s.wrap; if (wrap === 2 || wrap === 1 && s.status !== INIT_STATE || s.lookahead) return Z_STREAM_ERROR$2; if (wrap === 1) strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0); s.wrap = 0; if (dictLength >= s.w_size) { if (wrap === 0) { /*** CLEAR_HASH(s); ***/ zero(s.head); s.strstart = 0; s.block_start = 0; s.insert = 0; } let tmpDict = new Uint8Array(s.w_size); tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0); dictionary = tmpDict; dictLength = s.w_size; } const avail = strm.avail_in; const next = strm.next_in; const input = strm.input; strm.avail_in = dictLength; strm.next_in = 0; strm.input = dictionary; fill_window(s); while (s.lookahead >= MIN_MATCH) { let str = s.strstart; let n = s.lookahead - (MIN_MATCH - 1); do { s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]); s.prev[str & s.w_mask] = s.head[s.ins_h]; s.head[s.ins_h] = str; str++; } while (--n); s.strstart = str; s.lookahead = MIN_MATCH - 1; fill_window(s); } s.strstart += s.lookahead; s.block_start = s.strstart; s.insert = s.lookahead; s.lookahead = 0; s.match_length = s.prev_length = MIN_MATCH - 1; s.match_available = 0; strm.next_in = next; strm.input = input; strm.avail_in = avail; s.wrap = wrap; return Z_OK$3; }; var deflate_1$2 = { deflateInit, deflateInit2, deflateReset, deflateResetKeep, deflateSetHeader, deflate: deflate$2, deflateEnd, deflateSetDictionary, deflateInfo: "pako deflate (from Nodeca project)" }; var _has = (obj, key) => { return Object.prototype.hasOwnProperty.call(obj, key); }; var assign = function(obj) { const sources = Array.prototype.slice.call(arguments, 1); while (sources.length) { const source = sources.shift(); if (!source) continue; if (typeof source !== "object") throw new TypeError(source + "must be non-object"); for (const p in source) if (_has(source, p)) obj[p] = source[p]; } return obj; }; var flattenChunks = (chunks) => { let len = 0; for (let i = 0, l = chunks.length; i < l; i++) len += chunks[i].length; const result = new Uint8Array(len); for (let i = 0, pos = 0, l = chunks.length; i < l; i++) { let chunk = chunks[i]; result.set(chunk, pos); pos += chunk.length; } return result; }; var common = { assign, flattenChunks }; var STR_APPLY_UIA_OK = true; try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; } var _utf8len = new Uint8Array(256); for (let q = 0; q < 256; q++) _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1; _utf8len[254] = _utf8len[254] = 1; var string2buf = (str) => { if (typeof TextEncoder === "function" && TextEncoder.prototype.encode) return new TextEncoder().encode(str); let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0; for (m_pos = 0; m_pos < str_len; m_pos++) { c = str.charCodeAt(m_pos); if ((c & 64512) === 55296 && m_pos + 1 < str_len) { c2 = str.charCodeAt(m_pos + 1); if ((c2 & 64512) === 56320) { c = 65536 + (c - 55296 << 10) + (c2 - 56320); m_pos++; } } buf_len += c < 128 ? 1 : c < 2048 ? 2 : c < 65536 ? 3 : 4; } buf = new Uint8Array(buf_len); for (i = 0, m_pos = 0; i < buf_len; m_pos++) { c = str.charCodeAt(m_pos); if ((c & 64512) === 55296 && m_pos + 1 < str_len) { c2 = str.charCodeAt(m_pos + 1); if ((c2 & 64512) === 56320) { c = 65536 + (c - 55296 << 10) + (c2 - 56320); m_pos++; } } if (c < 128) buf[i++] = c; else if (c < 2048) { buf[i++] = 192 | c >>> 6; buf[i++] = 128 | c & 63; } else if (c < 65536) { buf[i++] = 224 | c >>> 12; buf[i++] = 128 | c >>> 6 & 63; buf[i++] = 128 | c & 63; } else { buf[i++] = 240 | c >>> 18; buf[i++] = 128 | c >>> 12 & 63; buf[i++] = 128 | c >>> 6 & 63; buf[i++] = 128 | c & 63; } } return buf; }; var buf2binstring = (buf, len) => { if (len < 65534) { if (buf.subarray && STR_APPLY_UIA_OK) return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len)); } let result = ""; for (let i = 0; i < len; i++) result += String.fromCharCode(buf[i]); return result; }; var buf2string = (buf, max) => { const len = max || buf.length; if (typeof TextDecoder === "function" && TextDecoder.prototype.decode) return new TextDecoder().decode(buf.subarray(0, max)); let i, out; const utf16buf = new Array(len * 2); for (out = 0, i = 0; i < len;) { let c = buf[i++]; if (c < 128) { utf16buf[out++] = c; continue; } let c_len = _utf8len[c]; if (c_len > 4) { utf16buf[out++] = 65533; i += c_len - 1; continue; } c &= c_len === 2 ? 31 : c_len === 3 ? 15 : 7; while (c_len > 1 && i < len) { c = c << 6 | buf[i++] & 63; c_len--; } if (c_len > 1) { utf16buf[out++] = 65533; continue; } if (c < 65536) utf16buf[out++] = c; else { c -= 65536; utf16buf[out++] = 55296 | c >> 10 & 1023; utf16buf[out++] = 56320 | c & 1023; } } return buf2binstring(utf16buf, out); }; var utf8border = (buf, max) => { max = max || buf.length; if (max > buf.length) max = buf.length; let pos = max - 1; while (pos >= 0 && (buf[pos] & 192) === 128) pos--; if (pos < 0) return max; if (pos === 0) return max; return pos + _utf8len[buf[pos]] > max ? pos : max; }; var strings = { string2buf, buf2string, utf8border }; function ZStream() { 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; } var zstream = ZStream; var toString$1 = Object.prototype.toString; var { Z_NO_FLUSH: Z_NO_FLUSH$1, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH: Z_FINISH$2, Z_OK: Z_OK$2, Z_STREAM_END: Z_STREAM_END$2, Z_DEFAULT_COMPRESSION, Z_DEFAULT_STRATEGY, Z_DEFLATED: Z_DEFLATED$1 } = constants$2; /** * class Deflate * * Generic JS-style wrapper for zlib calls. If you don't need * streaming behaviour - use more simple functions: [[deflate]], * [[deflateRaw]] and [[gzip]]. **/ /** * Deflate.result -> Uint8Array * * Compressed result, generated by default [[Deflate#onData]] * and [[Deflate#onEnd]] handlers. Filled after you push last chunk * (call [[Deflate#push]] with `Z_FINISH` / `true` param). **/ /** * Deflate.err -> Number * * Error code after deflate finished. 0 (Z_OK) on success. * You will not need it in real life, because deflate errors * are possible only on wrong options or bad `onData` / `onEnd` * custom handlers. **/ /** * Deflate.msg -> String * * Error message, if [[Deflate.err]] != 0 **/ /** * new Deflate(options) * - options (Object): zlib deflate options. * * Creates new deflator instance with specified params. Throws exception * on bad params. Supported options: * * - `level` * - `windowBits` * - `memLevel` * - `strategy` * - `dictionary` * * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) * for more information on these. * * Additional options, for internal needs: * * - `chunkSize` - size of generated data chunks (16K by default) * - `raw` (Boolean) - do raw deflate * - `gzip` (Boolean) - create gzip wrapper * - `header` (Object) - custom header for gzip * - `text` (Boolean) - true if compressed data believed to be text * - `time` (Number) - modification time, unix timestamp * - `os` (Number) - operation system code * - `extra` (Array) - array of bytes with extra data (max 65536) * - `name` (String) - file name (binary string) * - `comment` (String) - comment (binary string) * - `hcrc` (Boolean) - true if header crc should be added * * ##### Example: * * ```javascript * const pako = require('pako') * , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9]) * , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]); * * const deflate = new pako.Deflate({ level: 3}); * * deflate.push(chunk1, false); * deflate.push(chunk2, true); // true -> last chunk * * if (deflate.err) { throw new Error(deflate.err); } * * console.log(deflate.result); * ``` **/ function Deflate$1(options) { this.options = common.assign({ level: Z_DEFAULT_COMPRESSION, method: Z_DEFLATED$1, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: Z_DEFAULT_STRATEGY }, options || {}); let opt = this.options; if (opt.raw && opt.windowBits > 0) opt.windowBits = -opt.windowBits; else if (opt.gzip && opt.windowBits > 0 && opt.windowBits < 16) opt.windowBits += 16; this.err = 0; this.msg = ""; this.ended = false; this.chunks = []; this.strm = new zstream(); this.strm.avail_out = 0; let status = deflate_1$2.deflateInit2(this.strm, opt.level, opt.method, opt.windowBits, opt.memLevel, opt.strategy); if (status !== Z_OK$2) throw new Error(messages[status]); if (opt.header) deflate_1$2.deflateSetHeader(this.strm, opt.header); if (opt.dictionary) { let dict; if (typeof opt.dictionary === "string") dict = strings.string2buf(opt.dictionary); else if (toString$1.call(opt.dictionary) === "[object ArrayBuffer]") dict = new Uint8Array(opt.dictionary); else dict = opt.dictionary; status = deflate_1$2.deflateSetDictionary(this.strm, dict); if (status !== Z_OK$2) throw new Error(messages[status]); this._dict_set = true; } } /** * Deflate#push(data[, flush_mode]) -> Boolean * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be * converted to utf8 byte sequence. * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes. * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH. * * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with * new compressed chunks. Returns `true` on success. The last data block must * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending * buffers and call [[Deflate#onEnd]]. * * On fail call [[Deflate#onEnd]] with error code and return false. * * ##### Example * * ```javascript * push(chunk, false); // push one of data chunks * ... * push(chunk, true); // push last chunk * ``` **/ Deflate$1.prototype.push = function(data, flush_mode) { const strm = this.strm; const chunkSize = this.options.chunkSize; let status, _flush_mode; if (this.ended) return false; if (flush_mode === ~~flush_mode) _flush_mode = flush_mode; else _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1; if (typeof data === "string") strm.input = strings.string2buf(data); else if (toString$1.call(data) === "[object ArrayBuffer]") strm.input = new Uint8Array(data); else strm.input = data; strm.next_in = 0; strm.avail_in = strm.input.length; for (;;) { if (strm.avail_out === 0) { strm.output = new Uint8Array(chunkSize); strm.next_out = 0; strm.avail_out = chunkSize; } if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) { this.onData(strm.output.subarray(0, strm.next_out)); strm.avail_out = 0; continue; } status = deflate_1$2.deflate(strm, _flush_mode); if (status === Z_STREAM_END$2) { if (strm.next_out > 0) this.onData(strm.output.subarray(0, strm.next_out)); status = deflate_1$2.deflateEnd(this.strm); this.onEnd(status); this.ended = true; return status === Z_OK$2; } if (strm.avail_out === 0) { this.onData(strm.output); continue; } if (_flush_mode > 0 && strm.next_out > 0) { this.onData(strm.output.subarray(0, strm.next_out)); strm.avail_out = 0; continue; } if (strm.avail_in === 0) break; } return true; }; /** * Deflate#onData(chunk) -> Void * - chunk (Uint8Array): output data. * * By default, stores data blocks in `chunks[]` property and glue * those in `onEnd`. Override this handler, if you need another behaviour. **/ Deflate$1.prototype.onData = function(chunk) { this.chunks.push(chunk); }; /** * Deflate#onEnd(status) -> Void * - status (Number): deflate status. 0 (Z_OK) on success, * other if not. * * Called once after you tell deflate that the input stream is * complete (Z_FINISH). By default - join collected chunks, * free memory and fill `results` / `err` properties. **/ Deflate$1.prototype.onEnd = function(status) { if (status === Z_OK$2) this.result = common.flattenChunks(this.chunks); this.chunks = []; this.err = status; this.msg = this.strm.msg; }; /** * deflate(data[, options]) -> Uint8Array * - data (Uint8Array|ArrayBuffer|String): input data to compress. * - options (Object): zlib deflate options. * * Compress `data` with deflate algorithm and `options`. * * Supported options are: * * - level * - windowBits * - memLevel * - strategy * - dictionary * * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) * for more information on these. * * Sugar (options): * * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify * negative windowBits implicitly. * * ##### Example: * * ```javascript * const pako = require('pako') * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]); * * console.log(pako.deflate(data)); * ``` **/ function deflate$1(input, options) { const deflator = new Deflate$1(options); deflator.push(input, true); if (deflator.err) throw deflator.msg || messages[deflator.err]; return deflator.result; } /** * deflateRaw(data[, options]) -> Uint8Array * - data (Uint8Array|ArrayBuffer|String): input data to compress. * - options (Object): zlib deflate options. * * The same as [[deflate]], but creates raw data, without wrapper * (header and adler32 crc). **/ function deflateRaw$1(input, options) { options = options || {}; options.raw = true; return deflate$1(input, options); } /** * gzip(data[, options]) -> Uint8Array * - data (Uint8Array|ArrayBuffer|String): input data to compress. * - options (Object): zlib deflate options. * * The same as [[deflate]], but create gzip wrapper instead of * deflate one. **/ function gzip$1(input, options) { options = options || {}; options.gzip = true; return deflate$1(input, options); } var deflate_1$1 = { Deflate: Deflate$1, deflate: deflate$1, deflateRaw: deflateRaw$1, gzip: gzip$1, constants: constants$2 }; var BAD$1 = 16209; var TYPE$1 = 16191; var inffast = function inflate_fast(strm, start) { let _in; let last; let _out; let beg; let end; let dmax; let wsize; let whave; let wnext; let s_window; let hold; let bits; let lcode; let dcode; let lmask; let dmask; let here; let op; let len; let dist; let from; let from_source; let input, output; const state = strm.state; _in = strm.next_in; input = strm.input; last = _in + (strm.avail_in - 5); _out = strm.next_out; output = strm.output; beg = _out - (start - strm.avail_out); end = _out + (strm.avail_out - 257); dmax = state.dmax; wsize = state.wsize; whave = state.whave; wnext = state.wnext; s_window = state.window; hold = state.hold; bits = state.bits; lcode = state.lencode; dcode = state.distcode; lmask = (1 << state.lenbits) - 1; dmask = (1 << state.distbits) - 1; top: do { if (bits < 15) { hold += input[_in++] << bits; bits += 8; hold += input[_in++] << bits; bits += 8; } here = lcode[hold & lmask]; dolen: for (;;) { op = here >>> 24; hold >>>= op; bits -= op; op = here >>> 16 & 255; if (op === 0) output[_out++] = here & 65535; else if (op & 16) { len = here & 65535; op &= 15; if (op) { if (bits < op) { hold += input[_in++] << bits; bits += 8; } len += hold & (1 << op) - 1; hold >>>= op; bits -= op; } if (bits < 15) { hold += input[_in++] << bits; bits += 8; hold += input[_in++] << bits; bits += 8; } here = dcode[hold & dmask]; dodist: for (;;) { op = here >>> 24; hold >>>= op; bits -= op; op = here >>> 16 & 255; if (op & 16) { dist = here & 65535; op &= 15; if (bits < op) { hold += input[_in++] << bits; bits += 8; if (bits < op) { hold += input[_in++] << bits; bits += 8; } } dist += hold & (1 << op) - 1; if (dist > dmax) { strm.msg = "invalid distance too far back"; state.mode = BAD$1; break top; } hold >>>= op; bits -= op; op = _out - beg; if (dist > op) { op = dist - op; if (op > whave) { if (state.sane) { strm.msg = "invalid distance too far back"; state.mode = BAD$1; break top; } } from = 0; from_source = s_window; if (wnext === 0) { from += wsize - op; if (op < len) { len -= op; do output[_out++] = s_window[from++]; while (--op); from = _out - dist; from_source = output; } } else if (wnext < op) { from += wsize + wnext - op; op -= wnext; if (op < len) { len -= op; do output[_out++] = s_window[from++]; while (--op); from = 0; if (wnext < len) { op = wnext; len -= op; do output[_out++] = s_window[from++]; while (--op); from = _out - dist; from_source = output; } } } else { from += wnext - op; if (op < len) { len -= op; do output[_out++] = s_window[from++]; while (--op); from = _out - dist; from_source = output; } } while (len > 2) { output[_out++] = from_source[from++]; output[_out++] = from_source[from++]; output[_out++] = from_source[from++]; len -= 3; } if (len) { output[_out++] = from_source[from++]; if (len > 1) output[_out++] = from_source[from++]; } } else { from = _out - dist; do { output[_out++] = output[from++]; output[_out++] = output[from++]; output[_out++] = output[from++]; len -= 3; } while (len > 2); if (len) { output[_out++] = output[from++]; if (len > 1) output[_out++] = output[from++]; } } } else if ((op & 64) === 0) { here = dcode[(here & 65535) + (hold & (1 << op) - 1)]; continue dodist; } else { strm.msg = "invalid distance code"; state.mode = BAD$1; break top; } break; } } else if ((op & 64) === 0) { here = lcode[(here & 65535) + (hold & (1 << op) - 1)]; continue dolen; } else if (op & 32) { state.mode = TYPE$1; break top; } else { strm.msg = "invalid literal/length code"; state.mode = BAD$1; break top; } break; } } while (_in < last && _out < end); len = bits >> 3; _in -= len; bits -= len << 3; hold &= (1 << bits) - 1; strm.next_in = _in; strm.next_out = _out; strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last); strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end); state.hold = hold; state.bits = bits; }; var MAXBITS = 15; var ENOUGH_LENS$1 = 852; var ENOUGH_DISTS$1 = 592; var CODES$1 = 0; var LENS$1 = 1; var DISTS$1 = 2; var lbase = new Uint16Array([ 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 ]); var lext = new Uint8Array([ 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 ]); var dbase = new Uint16Array([ 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 ]); var dext = new Uint8Array([ 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 ]); var inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) => { const bits = opts.bits; let len = 0; let sym = 0; let min = 0, max = 0; let root = 0; let curr = 0; let drop = 0; let left = 0; let used = 0; let huff = 0; let incr; let fill; let low; let mask; let next; let base = null; let match; const count = new Uint16Array(16); const offs = new Uint16Array(16); let extra = null; let here_bits, here_op, here_val; for (len = 0; len <= MAXBITS; len++) count[len] = 0; for (sym = 0; sym < codes; sym++) count[lens[lens_index + sym]]++; root = bits; for (max = MAXBITS; max >= 1; max--) if (count[max] !== 0) break; if (root > max) root = max; if (max === 0) { table[table_index++] = 20971520; table[table_index++] = 20971520; opts.bits = 1; return 0; } for (min = 1; min < max; min++) if (count[min] !== 0) break; if (root < min) root = min; left = 1; for (len = 1; len <= MAXBITS; len++) { left <<= 1; left -= count[len]; if (left < 0) return -1; } if (left > 0 && (type === CODES$1 || max !== 1)) return -1; offs[1] = 0; for (len = 1; len < MAXBITS; len++) offs[len + 1] = offs[len] + count[len]; for (sym = 0; sym < codes; sym++) if (lens[lens_index + sym] !== 0) work[offs[lens[lens_index + sym]]++] = sym; if (type === CODES$1) { base = extra = work; match = 20; } else if (type === LENS$1) { base = lbase; extra = lext; match = 257; } else { base = dbase; extra = dext; match = 0; } huff = 0; sym = 0; len = min; next = table_index; curr = root; drop = 0; low = -1; used = 1 << root; mask = used - 1; if (type === LENS$1 && used > ENOUGH_LENS$1 || type === DISTS$1 && used > ENOUGH_DISTS$1) return 1; for (;;) { here_bits = len - drop; if (work[sym] + 1 < match) { here_op = 0; here_val = work[sym]; } else if (work[sym] >= match) { here_op = extra[work[sym] - match]; here_val = base[work[sym] - match]; } else { here_op = 96; here_val = 0; } incr = 1 << len - drop; fill = 1 << curr; min = fill; do { fill -= incr; table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0; } while (fill !== 0); incr = 1 << len - 1; while (huff & incr) incr >>= 1; if (incr !== 0) { huff &= incr - 1; huff += incr; } else huff = 0; sym++; if (--count[len] === 0) { if (len === max) break; len = lens[lens_index + work[sym]]; } if (len > root && (huff & mask) !== low) { if (drop === 0) drop = root; next += min; curr = len - drop; left = 1 << curr; while (curr + drop < max) { left -= count[curr + drop]; if (left <= 0) break; curr++; left <<= 1; } used += 1 << curr; if (type === LENS$1 && used > ENOUGH_LENS$1 || type === DISTS$1 && used > ENOUGH_DISTS$1) return 1; low = huff & mask; table[low] = root << 24 | curr << 16 | next - table_index | 0; } } if (huff !== 0) table[next + huff] = len - drop << 24 | 4194304; opts.bits = root; return 0; }; var inftrees = inflate_table; var CODES = 0; var LENS = 1; var DISTS = 2; var { Z_FINISH: Z_FINISH$1, Z_BLOCK, Z_TREES, Z_OK: Z_OK$1, Z_STREAM_END: Z_STREAM_END$1, Z_NEED_DICT: Z_NEED_DICT$1, Z_STREAM_ERROR: Z_STREAM_ERROR$1, Z_DATA_ERROR: Z_DATA_ERROR$1, Z_MEM_ERROR: Z_MEM_ERROR$1, Z_BUF_ERROR, Z_DEFLATED } = constants$2; var HEAD = 16180; var FLAGS = 16181; var TIME = 16182; var OS = 16183; var EXLEN = 16184; var EXTRA = 16185; var NAME = 16186; var COMMENT = 16187; var HCRC = 16188; var DICTID = 16189; var DICT = 16190; var TYPE = 16191; var TYPEDO = 16192; var STORED = 16193; var COPY_ = 16194; var COPY = 16195; var TABLE = 16196; var LENLENS = 16197; var CODELENS = 16198; var LEN_ = 16199; var LEN = 16200; var LENEXT = 16201; var DIST = 16202; var DISTEXT = 16203; var MATCH = 16204; var LIT = 16205; var CHECK = 16206; var LENGTH = 16207; var DONE = 16208; var BAD = 16209; var MEM = 16210; var SYNC = 16211; var ENOUGH_LENS = 852; var ENOUGH_DISTS = 592; var DEF_WBITS = 15; var zswap32 = (q) => { return (q >>> 24 & 255) + (q >>> 8 & 65280) + ((q & 65280) << 8) + ((q & 255) << 24); }; function InflateState() { this.strm = null; this.mode = 0; this.last = false; this.wrap = 0; this.havedict = false; 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 Uint16Array(320); this.work = new Uint16Array(288); this.lendyn = null; this.distdyn = null; this.sane = 0; this.back = 0; this.was = 0; } var inflateStateCheck = (strm) => { if (!strm) return 1; const state = strm.state; if (!state || state.strm !== strm || state.mode < HEAD || state.mode > SYNC) return 1; return 0; }; var inflateResetKeep = (strm) => { if (inflateStateCheck(strm)) return Z_STREAM_ERROR$1; const state = strm.state; strm.total_in = strm.total_out = state.total = 0; strm.msg = ""; if (state.wrap) strm.adler = state.wrap & 1; state.mode = HEAD; state.last = 0; state.havedict = 0; state.flags = -1; state.dmax = 32768; state.head = null; state.hold = 0; state.bits = 0; state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS); state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS); state.sane = 1; state.back = -1; return Z_OK$1; }; var inflateReset = (strm) => { if (inflateStateCheck(strm)) return Z_STREAM_ERROR$1; const state = strm.state; state.wsize = 0; state.whave = 0; state.wnext = 0; return inflateResetKeep(strm); }; var inflateReset2 = (strm, windowBits) => { let wrap; if (inflateStateCheck(strm)) return Z_STREAM_ERROR$1; const state = strm.state; if (windowBits < 0) { wrap = 0; windowBits = -windowBits; } else { wrap = (windowBits >> 4) + 5; if (windowBits < 48) windowBits &= 15; } if (windowBits && (windowBits < 8 || windowBits > 15)) return Z_STREAM_ERROR$1; if (state.window !== null && state.wbits !== windowBits) state.window = null; state.wrap = wrap; state.wbits = windowBits; return inflateReset(strm); }; var inflateInit2 = (strm, windowBits) => { if (!strm) return Z_STREAM_ERROR$1; const state = new InflateState(); strm.state = state; state.strm = strm; state.window = null; state.mode = HEAD; const ret = inflateReset2(strm, windowBits); if (ret !== Z_OK$1) strm.state = null; return ret; }; var inflateInit = (strm) => { return inflateInit2(strm, DEF_WBITS); }; var virgin = true; var lenfix, distfix; var fixedtables = (state) => { if (virgin) { lenfix = new Int32Array(512); distfix = new Int32Array(32); let sym = 0; while (sym < 144) state.lens[sym++] = 8; while (sym < 256) state.lens[sym++] = 9; while (sym < 280) state.lens[sym++] = 7; while (sym < 288) state.lens[sym++] = 8; inftrees(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 }); sym = 0; while (sym < 32) state.lens[sym++] = 5; inftrees(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 }); virgin = false; } state.lencode = lenfix; state.lenbits = 9; state.distcode = distfix; state.distbits = 5; }; var updatewindow = (strm, src, end, copy) => { let dist; const state = strm.state; if (state.window === null) { state.wsize = 1 << state.wbits; state.wnext = 0; state.whave = 0; state.window = new Uint8Array(state.wsize); } if (copy >= state.wsize) { state.window.set(src.subarray(end - state.wsize, end), 0); state.wnext = 0; state.whave = state.wsize; } else { dist = state.wsize - state.wnext; if (dist > copy) dist = copy; state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext); copy -= dist; if (copy) { state.window.set(src.subarray(end - copy, end), 0); state.wnext = copy; state.whave = state.wsize; } else { state.wnext += dist; if (state.wnext === state.wsize) state.wnext = 0; if (state.whave < state.wsize) state.whave += dist; } } return 0; }; var inflate$2 = (strm, flush) => { let state; let input, output; let next; let put; let have, left; let hold; let bits; let _in, _out; let copy; let from; let from_source; let here = 0; let here_bits, here_op, here_val; let last_bits, last_op, last_val; let len; let ret; const hbuf = new Uint8Array(4); let opts; let n; const order = new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]); if (inflateStateCheck(strm) || !strm.output || !strm.input && strm.avail_in !== 0) return Z_STREAM_ERROR$1; state = strm.state; if (state.mode === TYPE) state.mode = TYPEDO; put = strm.next_out; output = strm.output; left = strm.avail_out; next = strm.next_in; input = strm.input; have = strm.avail_in; hold = state.hold; bits = state.bits; _in = have; _out = left; ret = Z_OK$1; inf_leave: for (;;) switch (state.mode) { case HEAD: if (state.wrap === 0) { state.mode = TYPEDO; break; } while (bits < 16) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } if (state.wrap & 2 && hold === 35615) { if (state.wbits === 0) state.wbits = 15; state.check = 0; hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; state.check = crc32_1(state.check, hbuf, 2, 0); hold = 0; bits = 0; state.mode = FLAGS; break; } if (state.head) state.head.done = false; if (!(state.wrap & 1) || (((hold & 255) << 8) + (hold >> 8)) % 31) { strm.msg = "incorrect header check"; state.mode = BAD; break; } if ((hold & 15) !== Z_DEFLATED) { strm.msg = "unknown compression method"; state.mode = BAD; break; } hold >>>= 4; bits -= 4; len = (hold & 15) + 8; if (state.wbits === 0) state.wbits = len; if (len > 15 || len > state.wbits) { strm.msg = "invalid window size"; state.mode = BAD; break; } state.dmax = 1 << state.wbits; state.flags = 0; strm.adler = state.check = 1; state.mode = hold & 512 ? DICTID : TYPE; hold = 0; bits = 0; break; case FLAGS: while (bits < 16) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } state.flags = hold; if ((state.flags & 255) !== Z_DEFLATED) { strm.msg = "unknown compression method"; state.mode = BAD; break; } if (state.flags & 57344) { strm.msg = "unknown header flags set"; state.mode = BAD; break; } if (state.head) state.head.text = hold >> 8 & 1; if (state.flags & 512 && state.wrap & 4) { hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; state.check = crc32_1(state.check, hbuf, 2, 0); } hold = 0; bits = 0; state.mode = TIME; case TIME: while (bits < 32) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } if (state.head) state.head.time = hold; if (state.flags & 512 && state.wrap & 4) { hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; hbuf[2] = hold >>> 16 & 255; hbuf[3] = hold >>> 24 & 255; state.check = crc32_1(state.check, hbuf, 4, 0); } hold = 0; bits = 0; state.mode = OS; case OS: while (bits < 16) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } if (state.head) { state.head.xflags = hold & 255; state.head.os = hold >> 8; } if (state.flags & 512 && state.wrap & 4) { hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; state.check = crc32_1(state.check, hbuf, 2, 0); } hold = 0; bits = 0; state.mode = EXLEN; case EXLEN: if (state.flags & 1024) { while (bits < 16) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } state.length = hold; if (state.head) state.head.extra_len = hold; if (state.flags & 512 && state.wrap & 4) { hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; state.check = crc32_1(state.check, hbuf, 2, 0); } hold = 0; bits = 0; } else if (state.head) state.head.extra = null; state.mode = EXTRA; case EXTRA: if (state.flags & 1024) { copy = state.length; if (copy > have) copy = have; if (copy) { if (state.head) { len = state.head.extra_len - state.length; if (!state.head.extra) state.head.extra = new Uint8Array(state.head.extra_len); state.head.extra.set(input.subarray(next, next + copy), len); } if (state.flags & 512 && state.wrap & 4) state.check = crc32_1(state.check, input, copy, next); have -= copy; next += copy; state.length -= copy; } if (state.length) break inf_leave; } state.length = 0; state.mode = NAME; case NAME: if (state.flags & 2048) { if (have === 0) break inf_leave; copy = 0; do { len = input[next + copy++]; if (state.head && len && state.length < 65536) state.head.name += String.fromCharCode(len); } while (len && copy < have); if (state.flags & 512 && state.wrap & 4) state.check = crc32_1(state.check, input, copy, next); have -= copy; next += copy; if (len) break inf_leave; } else if (state.head) state.head.name = null; state.length = 0; state.mode = COMMENT; case COMMENT: if (state.flags & 4096) { if (have === 0) break inf_leave; copy = 0; do { len = input[next + copy++]; if (state.head && len && state.length < 65536) state.head.comment += String.fromCharCode(len); } while (len && copy < have); if (state.flags & 512 && state.wrap & 4) state.check = crc32_1(state.check, input, copy, next); have -= copy; next += copy; if (len) break inf_leave; } else if (state.head) state.head.comment = null; state.mode = HCRC; case HCRC: if (state.flags & 512) { while (bits < 16) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } if (state.wrap & 4 && hold !== (state.check & 65535)) { strm.msg = "header crc mismatch"; state.mode = BAD; break; } hold = 0; bits = 0; } if (state.head) { state.head.hcrc = state.flags >> 9 & 1; state.head.done = true; } strm.adler = state.check = 0; state.mode = TYPE; break; case DICTID: while (bits < 32) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } strm.adler = state.check = zswap32(hold); hold = 0; bits = 0; state.mode = DICT; case DICT: if (state.havedict === 0) { strm.next_out = put; strm.avail_out = left; strm.next_in = next; strm.avail_in = have; state.hold = hold; state.bits = bits; return Z_NEED_DICT$1; } strm.adler = state.check = 1; state.mode = TYPE; case TYPE: if (flush === Z_BLOCK || flush === Z_TREES) break inf_leave; case TYPEDO: if (state.last) { hold >>>= bits & 7; bits -= bits & 7; state.mode = CHECK; break; } while (bits < 3) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } state.last = hold & 1; hold >>>= 1; bits -= 1; switch (hold & 3) { case 0: state.mode = STORED; break; case 1: fixedtables(state); state.mode = LEN_; if (flush === Z_TREES) { hold >>>= 2; bits -= 2; break inf_leave; } break; case 2: state.mode = TABLE; break; case 3: strm.msg = "invalid block type"; state.mode = BAD; } hold >>>= 2; bits -= 2; break; case STORED: hold >>>= bits & 7; bits -= bits & 7; while (bits < 32) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } if ((hold & 65535) !== (hold >>> 16 ^ 65535)) { strm.msg = "invalid stored block lengths"; state.mode = BAD; break; } state.length = hold & 65535; hold = 0; bits = 0; state.mode = COPY_; if (flush === Z_TREES) break inf_leave; case COPY_: state.mode = COPY; case COPY: copy = state.length; if (copy) { if (copy > have) copy = have; if (copy > left) copy = left; if (copy === 0) break inf_leave; output.set(input.subarray(next, next + copy), put); have -= copy; next += copy; left -= copy; put += copy; state.length -= copy; break; } state.mode = TYPE; break; case TABLE: while (bits < 14) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } state.nlen = (hold & 31) + 257; hold >>>= 5; bits -= 5; state.ndist = (hold & 31) + 1; hold >>>= 5; bits -= 5; state.ncode = (hold & 15) + 4; hold >>>= 4; bits -= 4; if (state.nlen > 286 || state.ndist > 30) { strm.msg = "too many length or distance symbols"; state.mode = BAD; break; } state.have = 0; state.mode = LENLENS; case LENLENS: while (state.have < state.ncode) { while (bits < 3) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } state.lens[order[state.have++]] = hold & 7; hold >>>= 3; bits -= 3; } while (state.have < 19) state.lens[order[state.have++]] = 0; state.lencode = state.lendyn; state.lenbits = 7; opts = { bits: state.lenbits }; ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts); state.lenbits = opts.bits; if (ret) { strm.msg = "invalid code lengths set"; state.mode = BAD; break; } state.have = 0; state.mode = CODELENS; case CODELENS: while (state.have < state.nlen + state.ndist) { for (;;) { here = state.lencode[hold & (1 << state.lenbits) - 1]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (here_bits <= bits) break; if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } if (here_val < 16) { hold >>>= here_bits; bits -= here_bits; state.lens[state.have++] = here_val; } else { if (here_val === 16) { n = here_bits + 2; while (bits < n) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } hold >>>= here_bits; bits -= here_bits; if (state.have === 0) { strm.msg = "invalid bit length repeat"; state.mode = BAD; break; } len = state.lens[state.have - 1]; copy = 3 + (hold & 3); hold >>>= 2; bits -= 2; } else if (here_val === 17) { n = here_bits + 3; while (bits < n) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } hold >>>= here_bits; bits -= here_bits; len = 0; copy = 3 + (hold & 7); hold >>>= 3; bits -= 3; } else { n = here_bits + 7; while (bits < n) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } hold >>>= here_bits; bits -= here_bits; len = 0; copy = 11 + (hold & 127); hold >>>= 7; bits -= 7; } if (state.have + copy > state.nlen + state.ndist) { strm.msg = "invalid bit length repeat"; state.mode = BAD; break; } while (copy--) state.lens[state.have++] = len; } } if (state.mode === BAD) break; if (state.lens[256] === 0) { strm.msg = "invalid code -- missing end-of-block"; state.mode = BAD; break; } state.lenbits = 9; opts = { bits: state.lenbits }; ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts); state.lenbits = opts.bits; if (ret) { strm.msg = "invalid literal/lengths set"; state.mode = BAD; break; } state.distbits = 6; state.distcode = state.distdyn; opts = { bits: state.distbits }; ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts); state.distbits = opts.bits; if (ret) { strm.msg = "invalid distances set"; state.mode = BAD; break; } state.mode = LEN_; if (flush === Z_TREES) break inf_leave; case LEN_: state.mode = LEN; case LEN: if (have >= 6 && left >= 258) { strm.next_out = put; strm.avail_out = left; strm.next_in = next; strm.avail_in = have; state.hold = hold; state.bits = bits; inffast(strm, _out); put = strm.next_out; output = strm.output; left = strm.avail_out; next = strm.next_in; input = strm.input; have = strm.avail_in; hold = state.hold; bits = state.bits; if (state.mode === TYPE) state.back = -1; break; } state.back = 0; for (;;) { here = state.lencode[hold & (1 << state.lenbits) - 1]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (here_bits <= bits) break; if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } if (here_op && (here_op & 240) === 0) { last_bits = here_bits; last_op = here_op; last_val = here_val; for (;;) { here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (last_bits + here_bits <= bits) break; if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } hold >>>= last_bits; bits -= last_bits; state.back += last_bits; } hold >>>= here_bits; bits -= here_bits; state.back += here_bits; state.length = here_val; if (here_op === 0) { state.mode = LIT; break; } if (here_op & 32) { state.back = -1; state.mode = TYPE; break; } if (here_op & 64) { strm.msg = "invalid literal/length code"; state.mode = BAD; break; } state.extra = here_op & 15; state.mode = LENEXT; case LENEXT: if (state.extra) { n = state.extra; while (bits < n) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } state.length += hold & (1 << state.extra) - 1; hold >>>= state.extra; bits -= state.extra; state.back += state.extra; } state.was = state.length; state.mode = DIST; case DIST: for (;;) { here = state.distcode[hold & (1 << state.distbits) - 1]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (here_bits <= bits) break; if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } if ((here_op & 240) === 0) { last_bits = here_bits; last_op = here_op; last_val = here_val; for (;;) { here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (last_bits + here_bits <= bits) break; if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } hold >>>= last_bits; bits -= last_bits; state.back += last_bits; } hold >>>= here_bits; bits -= here_bits; state.back += here_bits; if (here_op & 64) { strm.msg = "invalid distance code"; state.mode = BAD; break; } state.offset = here_val; state.extra = here_op & 15; state.mode = DISTEXT; case DISTEXT: if (state.extra) { n = state.extra; while (bits < n) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } state.offset += hold & (1 << state.extra) - 1; hold >>>= state.extra; bits -= state.extra; state.back += state.extra; } if (state.offset > state.dmax) { strm.msg = "invalid distance too far back"; state.mode = BAD; break; } state.mode = MATCH; case MATCH: if (left === 0) break inf_leave; copy = _out - left; if (state.offset > copy) { copy = state.offset - copy; if (copy > state.whave) { if (state.sane) { strm.msg = "invalid distance too far back"; state.mode = BAD; break; } } if (copy > state.wnext) { copy -= state.wnext; from = state.wsize - copy; } else from = state.wnext - copy; if (copy > state.length) copy = state.length; from_source = state.window; } else { from_source = output; from = put - state.offset; copy = state.length; } if (copy > left) copy = left; left -= copy; state.length -= copy; do output[put++] = from_source[from++]; while (--copy); if (state.length === 0) state.mode = LEN; break; case LIT: if (left === 0) break inf_leave; output[put++] = state.length; left--; state.mode = LEN; break; case CHECK: if (state.wrap) { while (bits < 32) { if (have === 0) break inf_leave; have--; hold |= input[next++] << bits; bits += 8; } _out -= left; strm.total_out += _out; state.total += _out; if (state.wrap & 4 && _out) strm.adler = state.check = state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out); _out = left; if (state.wrap & 4 && (state.flags ? hold : zswap32(hold)) !== state.check) { strm.msg = "incorrect data check"; state.mode = BAD; break; } hold = 0; bits = 0; } state.mode = LENGTH; case LENGTH: if (state.wrap && state.flags) { while (bits < 32) { if (have === 0) break inf_leave; have--; hold += input[next++] << bits; bits += 8; } if (state.wrap & 4 && hold !== (state.total & 4294967295)) { strm.msg = "incorrect length check"; state.mode = BAD; break; } hold = 0; bits = 0; } state.mode = DONE; case DONE: ret = Z_STREAM_END$1; break inf_leave; case BAD: ret = Z_DATA_ERROR$1; break inf_leave; case MEM: return Z_MEM_ERROR$1; case SYNC: default: return Z_STREAM_ERROR$1; } strm.next_out = put; strm.avail_out = left; strm.next_in = next; strm.avail_in = have; state.hold = hold; state.bits = bits; if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush !== Z_FINISH$1)) { if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)); } _in -= strm.avail_in; _out -= strm.avail_out; strm.total_in += _in; strm.total_out += _out; state.total += _out; if (state.wrap & 4 && _out) strm.adler = state.check = state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out); strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); if ((_in === 0 && _out === 0 || flush === Z_FINISH$1) && ret === Z_OK$1) ret = Z_BUF_ERROR; return ret; }; var inflateEnd = (strm) => { if (inflateStateCheck(strm)) return Z_STREAM_ERROR$1; let state = strm.state; if (state.window) state.window = null; strm.state = null; return Z_OK$1; }; var inflateGetHeader = (strm, head) => { if (inflateStateCheck(strm)) return Z_STREAM_ERROR$1; const state = strm.state; if ((state.wrap & 2) === 0) return Z_STREAM_ERROR$1; state.head = head; head.done = false; return Z_OK$1; }; var inflateSetDictionary = (strm, dictionary) => { const dictLength = dictionary.length; let state; let dictid; let ret; if (inflateStateCheck(strm)) return Z_STREAM_ERROR$1; state = strm.state; if (state.wrap !== 0 && state.mode !== DICT) return Z_STREAM_ERROR$1; if (state.mode === DICT) { dictid = 1; dictid = adler32_1(dictid, dictionary, dictLength, 0); if (dictid !== state.check) return Z_DATA_ERROR$1; } ret = updatewindow(strm, dictionary, dictLength, dictLength); if (ret) { state.mode = MEM; return Z_MEM_ERROR$1; } state.havedict = 1; return Z_OK$1; }; var inflate_1$2 = { inflateReset, inflateReset2, inflateResetKeep, inflateInit, inflateInit2, inflate: inflate$2, inflateEnd, inflateGetHeader, inflateSetDictionary, inflateInfo: "pako inflate (from Nodeca project)" }; function GZheader() { 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 = false; } var gzheader = GZheader; var toString = Object.prototype.toString; var { Z_NO_FLUSH, Z_FINISH, Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR } = constants$2; /** * class Inflate * * Generic JS-style wrapper for zlib calls. If you don't need * streaming behaviour - use more simple functions: [[inflate]] * and [[inflateRaw]]. **/ /** * Inflate.result -> Uint8Array|String * * Uncompressed result, generated by default [[Inflate#onData]] * and [[Inflate#onEnd]] handlers. Filled after you push last chunk * (call [[Inflate#push]] with `Z_FINISH` / `true` param). **/ /** * Inflate.err -> Number * * Error code after inflate finished. 0 (Z_OK) on success. * Should be checked if broken data possible. **/ /** * Inflate.msg -> String * * Error message, if [[Inflate.err]] != 0 **/ /** * new Inflate(options) * - options (Object): zlib inflate options. * * Creates new inflator instance with specified params. Throws exception * on bad params. Supported options: * * - `windowBits` * - `dictionary` * * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) * for more information on these. * * Additional options, for internal needs: * * - `chunkSize` - size of generated data chunks (16K by default) * - `raw` (Boolean) - do raw inflate * - `to` (String) - if equal to 'string', then result will be converted * from utf8 to utf16 (javascript) string. When string output requested, * chunk length can differ from `chunkSize`, depending on content. * * By default, when no options set, autodetect deflate/gzip data format via * wrapper header. * * ##### Example: * * ```javascript * const pako = require('pako') * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9]) * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]); * * const inflate = new pako.Inflate({ level: 3}); * * inflate.push(chunk1, false); * inflate.push(chunk2, true); // true -> last chunk * * if (inflate.err) { throw new Error(inflate.err); } * * console.log(inflate.result); * ``` **/ function Inflate$1(options) { this.options = common.assign({ chunkSize: 1024 * 64, windowBits: 15, to: "" }, options || {}); const opt = this.options; if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) { opt.windowBits = -opt.windowBits; if (opt.windowBits === 0) opt.windowBits = -15; } if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) opt.windowBits += 32; if (opt.windowBits > 15 && opt.windowBits < 48) { if ((opt.windowBits & 15) === 0) opt.windowBits |= 15; } this.err = 0; this.msg = ""; this.ended = false; this.chunks = []; this.strm = new zstream(); this.strm.avail_out = 0; let status = inflate_1$2.inflateInit2(this.strm, opt.windowBits); if (status !== Z_OK) throw new Error(messages[status]); this.header = new gzheader(); inflate_1$2.inflateGetHeader(this.strm, this.header); if (opt.dictionary) { if (typeof opt.dictionary === "string") opt.dictionary = strings.string2buf(opt.dictionary); else if (toString.call(opt.dictionary) === "[object ArrayBuffer]") opt.dictionary = new Uint8Array(opt.dictionary); if (opt.raw) { status = inflate_1$2.inflateSetDictionary(this.strm, opt.dictionary); if (status !== Z_OK) throw new Error(messages[status]); } } } /** * Inflate#push(data[, flush_mode]) -> Boolean * - data (Uint8Array|ArrayBuffer): input data * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE * flush modes. See constants. Skipped or `false` means Z_NO_FLUSH, * `true` means Z_FINISH. * * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with * new output chunks. Returns `true` on success. If end of stream detected, * [[Inflate#onEnd]] will be called. * * `flush_mode` is not needed for normal operation, because end of stream * detected automatically. You may try to use it for advanced things, but * this functionality was not tested. * * On fail call [[Inflate#onEnd]] with error code and return false. * * ##### Example * * ```javascript * push(chunk, false); // push one of data chunks * ... * push(chunk, true); // push last chunk * ``` **/ Inflate$1.prototype.push = function(data, flush_mode) { const strm = this.strm; const chunkSize = this.options.chunkSize; const dictionary = this.options.dictionary; let status, _flush_mode, last_avail_out; if (this.ended) return false; if (flush_mode === ~~flush_mode) _flush_mode = flush_mode; else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH; if (toString.call(data) === "[object ArrayBuffer]") strm.input = new Uint8Array(data); else strm.input = data; strm.next_in = 0; strm.avail_in = strm.input.length; for (;;) { if (strm.avail_out === 0) { strm.output = new Uint8Array(chunkSize); strm.next_out = 0; strm.avail_out = chunkSize; } status = inflate_1$2.inflate(strm, _flush_mode); if (status === Z_NEED_DICT && dictionary) { status = inflate_1$2.inflateSetDictionary(strm, dictionary); if (status === Z_OK) status = inflate_1$2.inflate(strm, _flush_mode); else if (status === Z_DATA_ERROR) status = Z_NEED_DICT; } while (strm.avail_in > 0 && status === Z_STREAM_END && strm.state.wrap > 0 && data[strm.next_in] !== 0) { inflate_1$2.inflateReset(strm); status = inflate_1$2.inflate(strm, _flush_mode); } switch (status) { case Z_STREAM_ERROR: case Z_DATA_ERROR: case Z_NEED_DICT: case Z_MEM_ERROR: this.onEnd(status); this.ended = true; return false; } last_avail_out = strm.avail_out; if (strm.next_out) { if (strm.avail_out === 0 || status === Z_STREAM_END) if (this.options.to === "string") { let next_out_utf8 = strings.utf8border(strm.output, strm.next_out); let tail = strm.next_out - next_out_utf8; let utf8str = strings.buf2string(strm.output, next_out_utf8); strm.next_out = tail; strm.avail_out = chunkSize - tail; if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0); this.onData(utf8str); } else this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out)); } if (status === Z_OK && last_avail_out === 0) continue; if (status === Z_STREAM_END) { status = inflate_1$2.inflateEnd(this.strm); this.onEnd(status); this.ended = true; return true; } if (strm.avail_in === 0) break; } return true; }; /** * Inflate#onData(chunk) -> Void * - chunk (Uint8Array|String): output data. When string output requested, * each chunk will be string. * * By default, stores data blocks in `chunks[]` property and glue * those in `onEnd`. Override this handler, if you need another behaviour. **/ Inflate$1.prototype.onData = function(chunk) { this.chunks.push(chunk); }; /** * Inflate#onEnd(status) -> Void * - status (Number): inflate status. 0 (Z_OK) on success, * other if not. * * Called either after you tell inflate that the input stream is * complete (Z_FINISH). By default - join collected chunks, * free memory and fill `results` / `err` properties. **/ Inflate$1.prototype.onEnd = function(status) { if (status === Z_OK) if (this.options.to === "string") this.result = this.chunks.join(""); else this.result = common.flattenChunks(this.chunks); this.chunks = []; this.err = status; this.msg = this.strm.msg; }; /** * inflate(data[, options]) -> Uint8Array|String * - data (Uint8Array|ArrayBuffer): input data to decompress. * - options (Object): zlib inflate options. * * Decompress `data` with inflate/ungzip and `options`. Autodetect * format via wrapper header by default. That's why we don't provide * separate `ungzip` method. * * Supported options are: * * - windowBits * * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) * for more information. * * Sugar (options): * * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify * negative windowBits implicitly. * - `to` (String) - if equal to 'string', then result will be converted * from utf8 to utf16 (javascript) string. When string output requested, * chunk length can differ from `chunkSize`, depending on content. * * * ##### Example: * * ```javascript * const pako = require('pako'); * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9])); * let output; * * try { * output = pako.inflate(input); * } catch (err) { * console.log(err); * } * ``` **/ function inflate$1(input, options) { const inflator = new Inflate$1(options); inflator.push(input); if (inflator.err) throw inflator.msg || messages[inflator.err]; return inflator.result; } /** * inflateRaw(data[, options]) -> Uint8Array|String * - data (Uint8Array|ArrayBuffer): input data to decompress. * - options (Object): zlib inflate options. * * The same as [[inflate]], but creates raw data, without wrapper * (header and adler32 crc). **/ function inflateRaw$1(input, options) { options = options || {}; options.raw = true; return inflate$1(input, options); } var inflate_1$1 = { Inflate: Inflate$1, inflate: inflate$1, inflateRaw: inflateRaw$1, ungzip: inflate$1, constants: constants$2 }; var { Deflate, deflate, deflateRaw, gzip } = deflate_1$1; var { Inflate, inflate, inflateRaw, ungzip } = inflate_1$1; var Inflate_1 = Inflate; var inflate_1 = inflate; //#endregion //#region node_modules/fast-png/lib-esm/helpers/crc.js var crcTable = []; for (let n = 0; n < 256; n++) { let c = n; for (let k = 0; k < 8; k++) if (c & 1) c = 3988292384 ^ c >>> 1; else c = c >>> 1; crcTable[n] = c; } var initialCrc = 4294967295; function updateCrc(currentCrc, data, length) { let c = currentCrc; for (let n = 0; n < length; n++) c = crcTable[(c ^ data[n]) & 255] ^ c >>> 8; return c; } function crc(data, length) { return (updateCrc(initialCrc, data, length) ^ initialCrc) >>> 0; } function checkCrc(buffer, crcLength, chunkName) { const expectedCrc = buffer.readUint32(); const actualCrc = crc(new Uint8Array(buffer.buffer, buffer.byteOffset + buffer.offset - crcLength - 4, crcLength), crcLength); if (actualCrc !== expectedCrc) throw new Error(`CRC mismatch for chunk ${chunkName}. Expected ${expectedCrc}, found ${actualCrc}`); } //#endregion //#region node_modules/fast-png/lib-esm/helpers/unfilter.js function unfilterNone(currentLine, newLine, bytesPerLine) { for (let i = 0; i < bytesPerLine; i++) newLine[i] = currentLine[i]; } function unfilterSub(currentLine, newLine, bytesPerLine, bytesPerPixel) { let i = 0; for (; i < bytesPerPixel; i++) newLine[i] = currentLine[i]; for (; i < bytesPerLine; i++) newLine[i] = currentLine[i] + newLine[i - bytesPerPixel] & 255; } function unfilterUp(currentLine, newLine, prevLine, bytesPerLine) { let i = 0; if (prevLine.length === 0) for (; i < bytesPerLine; i++) newLine[i] = currentLine[i]; else for (; i < bytesPerLine; i++) newLine[i] = currentLine[i] + prevLine[i] & 255; } function unfilterAverage(currentLine, newLine, prevLine, bytesPerLine, bytesPerPixel) { let i = 0; if (prevLine.length === 0) { for (; i < bytesPerPixel; i++) newLine[i] = currentLine[i]; for (; i < bytesPerLine; i++) newLine[i] = currentLine[i] + (newLine[i - bytesPerPixel] >> 1) & 255; } else { for (; i < bytesPerPixel; i++) newLine[i] = currentLine[i] + (prevLine[i] >> 1) & 255; for (; i < bytesPerLine; i++) newLine[i] = currentLine[i] + (newLine[i - bytesPerPixel] + prevLine[i] >> 1) & 255; } } function unfilterPaeth(currentLine, newLine, prevLine, bytesPerLine, bytesPerPixel) { let i = 0; if (prevLine.length === 0) { for (; i < bytesPerPixel; i++) newLine[i] = currentLine[i]; for (; i < bytesPerLine; i++) newLine[i] = currentLine[i] + newLine[i - bytesPerPixel] & 255; } else { for (; i < bytesPerPixel; i++) newLine[i] = currentLine[i] + prevLine[i] & 255; for (; i < bytesPerLine; i++) newLine[i] = currentLine[i] + paethPredictor(newLine[i - bytesPerPixel], prevLine[i], prevLine[i - bytesPerPixel]) & 255; } } function paethPredictor(a, b, c) { const p = a + b - c; const pa = Math.abs(p - a); const pb = Math.abs(p - b); const pc = Math.abs(p - c); if (pa <= pb && pa <= pc) return a; else if (pb <= pc) return b; else return c; } //#endregion //#region node_modules/fast-png/lib-esm/helpers/applyUnfilter.js /** * Apllies filter on scanline based on the filter type. * @param filterType - The filter type to apply. * @param currentLine - The current line of pixel data. * @param newLine - The new line of pixel data. * @param prevLine - The previous line of pixel data. * @param passLineBytes - The number of bytes in the pass line. * @param bytesPerPixel - The number of bytes per pixel. */ function applyUnfilter(filterType, currentLine, newLine, prevLine, passLineBytes, bytesPerPixel) { switch (filterType) { case 0: unfilterNone(currentLine, newLine, passLineBytes); break; case 1: unfilterSub(currentLine, newLine, passLineBytes, bytesPerPixel); break; case 2: unfilterUp(currentLine, newLine, prevLine, passLineBytes); break; case 3: unfilterAverage(currentLine, newLine, prevLine, passLineBytes, bytesPerPixel); break; case 4: unfilterPaeth(currentLine, newLine, prevLine, passLineBytes, bytesPerPixel); break; default: throw new Error(`Unsupported filter: ${filterType}`); } } //#endregion //#region node_modules/fast-png/lib-esm/helpers/decodeInterlaceAdam7.js var uint16$1 = new Uint16Array([255]); var osIsLittleEndian$1 = new Uint8Array(uint16$1.buffer)[0] === 255; /** * Decodes the Adam7 interlaced PNG data. * * @param params - DecodeInterlaceNullParams * @returns - array of pixel data. */ function decodeInterlaceAdam7(params) { const { data, width, height, channels, depth } = params; const passes = [ { x: 0, y: 0, xStep: 8, yStep: 8 }, { x: 4, y: 0, xStep: 8, yStep: 8 }, { x: 0, y: 4, xStep: 4, yStep: 8 }, { x: 2, y: 0, xStep: 4, yStep: 4 }, { x: 0, y: 2, xStep: 2, yStep: 4 }, { x: 1, y: 0, xStep: 2, yStep: 2 }, { x: 0, y: 1, xStep: 1, yStep: 2 } ]; const bytesPerPixel = Math.ceil(depth / 8) * channels; const resultData = new Uint8Array(height * width * bytesPerPixel); let offset = 0; for (let passIndex = 0; passIndex < 7; passIndex++) { const pass = passes[passIndex]; const passWidth = Math.ceil((width - pass.x) / pass.xStep); const passHeight = Math.ceil((height - pass.y) / pass.yStep); if (passWidth <= 0 || passHeight <= 0) continue; const passLineBytes = passWidth * bytesPerPixel; const prevLine = new Uint8Array(passLineBytes); for (let y = 0; y < passHeight; y++) { const filterType = data[offset++]; const currentLine = data.subarray(offset, offset + passLineBytes); offset += passLineBytes; const newLine = new Uint8Array(passLineBytes); applyUnfilter(filterType, currentLine, newLine, prevLine, passLineBytes, bytesPerPixel); prevLine.set(newLine); for (let x = 0; x < passWidth; x++) { const outputX = pass.x + x * pass.xStep; const outputY = pass.y + y * pass.yStep; if (outputX >= width || outputY >= height) continue; for (let i = 0; i < bytesPerPixel; i++) resultData[(outputY * width + outputX) * bytesPerPixel + i] = newLine[x * bytesPerPixel + i]; } } } if (depth === 16) { const uint16Data = new Uint16Array(resultData.buffer); if (osIsLittleEndian$1) for (let k = 0; k < uint16Data.length; k++) uint16Data[k] = swap16$1(uint16Data[k]); return uint16Data; } else return resultData; } function swap16$1(val) { return (val & 255) << 8 | val >> 8 & 255; } //#endregion //#region node_modules/fast-png/lib-esm/helpers/decodeInterlaceNull.js var uint16 = new Uint16Array([255]); var osIsLittleEndian = new Uint8Array(uint16.buffer)[0] === 255; var empty = new Uint8Array(0); function decodeInterlaceNull(params) { const { data, width, height, channels, depth } = params; const bytesPerPixel = Math.ceil(depth / 8) * channels; const bytesPerLine = Math.ceil(depth / 8 * channels * width); const newData = new Uint8Array(height * bytesPerLine); let prevLine = empty; let offset = 0; let currentLine; let newLine; for (let i = 0; i < height; i++) { currentLine = data.subarray(offset + 1, offset + 1 + bytesPerLine); newLine = newData.subarray(i * bytesPerLine, (i + 1) * bytesPerLine); switch (data[offset]) { case 0: unfilterNone(currentLine, newLine, bytesPerLine); break; case 1: unfilterSub(currentLine, newLine, bytesPerLine, bytesPerPixel); break; case 2: unfilterUp(currentLine, newLine, prevLine, bytesPerLine); break; case 3: unfilterAverage(currentLine, newLine, prevLine, bytesPerLine, bytesPerPixel); break; case 4: unfilterPaeth(currentLine, newLine, prevLine, bytesPerLine, bytesPerPixel); break; default: throw new Error(`Unsupported filter: ${data[offset]}`); } prevLine = newLine; offset += bytesPerLine + 1; } if (depth === 16) { const uint16Data = new Uint16Array(newData.buffer); if (osIsLittleEndian) for (let k = 0; k < uint16Data.length; k++) uint16Data[k] = swap16(uint16Data[k]); return uint16Data; } else return newData; } function swap16(val) { return (val & 255) << 8 | val >> 8 & 255; } //#endregion //#region node_modules/fast-png/lib-esm/helpers/signature.js var pngSignature = Uint8Array.of(137, 80, 78, 71, 13, 10, 26, 10); function checkSignature(buffer) { if (!hasPngSignature(buffer.readBytes(pngSignature.length))) throw new Error("wrong PNG signature"); } function hasPngSignature(array) { if (array.length < pngSignature.length) return false; for (let i = 0; i < pngSignature.length; i++) if (array[i] !== pngSignature[i]) return false; return true; } //#endregion //#region node_modules/fast-png/lib-esm/helpers/text.js var textChunkName = "tEXt"; var NULL = 0; var latin1Decoder = new TextDecoder("latin1"); function validateKeyword(keyword) { validateLatin1(keyword); if (keyword.length === 0 || keyword.length > 79) throw new Error("keyword length must be between 1 and 79"); } var latin1Regex = /^[\u0000-\u00FF]*$/; function validateLatin1(text) { if (!latin1Regex.test(text)) throw new Error("invalid latin1 text"); } function decodetEXt(text, buffer, length) { const keyword = readKeyword(buffer); text[keyword] = readLatin1(buffer, length - keyword.length - 1); } function readKeyword(buffer) { buffer.mark(); while (buffer.readByte() !== NULL); const end = buffer.offset; buffer.reset(); const keyword = latin1Decoder.decode(buffer.readBytes(end - buffer.offset - 1)); buffer.skip(1); validateKeyword(keyword); return keyword; } function readLatin1(buffer, length) { return latin1Decoder.decode(buffer.readBytes(length)); } //#endregion //#region node_modules/fast-png/lib-esm/internalTypes.js var ColorType = { UNKNOWN: -1, GREYSCALE: 0, TRUECOLOUR: 2, INDEXED_COLOUR: 3, GREYSCALE_ALPHA: 4, TRUECOLOUR_ALPHA: 6 }; var CompressionMethod = { UNKNOWN: -1, DEFLATE: 0 }; var FilterMethod = { UNKNOWN: -1, ADAPTIVE: 0 }; var InterlaceMethod = { UNKNOWN: -1, NO_INTERLACE: 0, ADAM7: 1 }; var DisposeOpType = { NONE: 0, BACKGROUND: 1, PREVIOUS: 2 }; var BlendOpType = { SOURCE: 0, OVER: 1 }; //#endregion //#region node_modules/fast-png/lib-esm/PngDecoder.js var PngDecoder = class extends IOBuffer { _checkCrc; _inflator; _png; _apng; _end; _hasPalette; _palette; _hasTransparency; _transparency; _compressionMethod; _filterMethod; _interlaceMethod; _colorType; _isAnimated; _numberOfFrames; _numberOfPlays; _frames; _writingDataChunks; constructor(data, options = {}) { super(data); const { checkCrc = false } = options; this._checkCrc = checkCrc; this._inflator = new Inflate_1(); this._png = { width: -1, height: -1, channels: -1, data: new Uint8Array(0), depth: 1, text: {} }; this._apng = { width: -1, height: -1, channels: -1, depth: 1, numberOfFrames: 1, numberOfPlays: 0, text: {}, frames: [] }; this._end = false; this._hasPalette = false; this._palette = []; this._hasTransparency = false; this._transparency = new Uint16Array(0); this._compressionMethod = CompressionMethod.UNKNOWN; this._filterMethod = FilterMethod.UNKNOWN; this._interlaceMethod = InterlaceMethod.UNKNOWN; this._colorType = ColorType.UNKNOWN; this._isAnimated = false; this._numberOfFrames = 1; this._numberOfPlays = 0; this._frames = []; this._writingDataChunks = false; this.setBigEndian(); } decode() { checkSignature(this); while (!this._end) { const length = this.readUint32(); const type = this.readChars(4); this.decodeChunk(length, type); } this.decodeImage(); return this._png; } decodeApng() { checkSignature(this); while (!this._end) { const length = this.readUint32(); const type = this.readChars(4); this.decodeApngChunk(length, type); } this.decodeApngImage(); return this._apng; } decodeChunk(length, type) { const offset = this.offset; switch (type) { case "IHDR": this.decodeIHDR(); break; case "PLTE": this.decodePLTE(length); break; case "IDAT": this.decodeIDAT(length); break; case "IEND": this._end = true; break; case "tRNS": this.decodetRNS(length); break; case "iCCP": this.decodeiCCP(length); break; case textChunkName: decodetEXt(this._png.text, this, length); break; case "pHYs": this.decodepHYs(); break; default: this.skip(length); break; } if (this.offset - offset !== length) throw new Error(`Length mismatch while decoding chunk ${type}`); if (this._checkCrc) checkCrc(this, length + 4, type); else this.skip(4); } decodeApngChunk(length, type) { const offset = this.offset; if (type !== "fdAT" && type !== "IDAT" && this._writingDataChunks) this.pushDataToFrame(); switch (type) { case "acTL": this.decodeACTL(); break; case "fcTL": this.decodeFCTL(); break; case "fdAT": this.decodeFDAT(length); break; default: this.decodeChunk(length, type); this.offset = offset + length; break; } if (this.offset - offset !== length) throw new Error(`Length mismatch while decoding chunk ${type}`); if (this._checkCrc) checkCrc(this, length + 4, type); else this.skip(4); } decodeIHDR() { const image = this._png; image.width = this.readUint32(); image.height = this.readUint32(); image.depth = checkBitDepth(this.readUint8()); const colorType = this.readUint8(); this._colorType = colorType; let channels; switch (colorType) { case ColorType.GREYSCALE: channels = 1; break; case ColorType.TRUECOLOUR: channels = 3; break; case ColorType.INDEXED_COLOUR: channels = 1; break; case ColorType.GREYSCALE_ALPHA: channels = 2; break; case ColorType.TRUECOLOUR_ALPHA: channels = 4; break; case ColorType.UNKNOWN: default: throw new Error(`Unknown color type: ${colorType}`); } this._png.channels = channels; this._compressionMethod = this.readUint8(); if (this._compressionMethod !== CompressionMethod.DEFLATE) throw new Error(`Unsupported compression method: ${this._compressionMethod}`); this._filterMethod = this.readUint8(); this._interlaceMethod = this.readUint8(); } decodeACTL() { this._numberOfFrames = this.readUint32(); this._numberOfPlays = this.readUint32(); this._isAnimated = true; } decodeFCTL() { const image = { sequenceNumber: this.readUint32(), width: this.readUint32(), height: this.readUint32(), xOffset: this.readUint32(), yOffset: this.readUint32(), delayNumber: this.readUint16(), delayDenominator: this.readUint16(), disposeOp: this.readUint8(), blendOp: this.readUint8(), data: new Uint8Array(0) }; this._frames.push(image); } decodePLTE(length) { if (length % 3 !== 0) throw new RangeError(`PLTE field length must be a multiple of 3. Got ${length}`); const l = length / 3; this._hasPalette = true; const palette = []; this._palette = palette; for (let i = 0; i < l; i++) palette.push([ this.readUint8(), this.readUint8(), this.readUint8() ]); } decodeIDAT(length) { this._writingDataChunks = true; const dataLength = length; const dataOffset = this.offset + this.byteOffset; this._inflator.push(new Uint8Array(this.buffer, dataOffset, dataLength)); if (this._inflator.err) throw new Error(`Error while decompressing the data: ${this._inflator.err}`); this.skip(length); } decodeFDAT(length) { this._writingDataChunks = true; let dataLength = length; let dataOffset = this.offset + this.byteOffset; dataOffset += 4; dataLength -= 4; this._inflator.push(new Uint8Array(this.buffer, dataOffset, dataLength)); if (this._inflator.err) throw new Error(`Error while decompressing the data: ${this._inflator.err}`); this.skip(length); } decodetRNS(length) { switch (this._colorType) { case ColorType.GREYSCALE: case ColorType.TRUECOLOUR: if (length % 2 !== 0) throw new RangeError(`tRNS chunk length must be a multiple of 2. Got ${length}`); if (length / 2 > this._png.width * this._png.height) throw new Error(`tRNS chunk contains more alpha values than there are pixels (${length / 2} vs ${this._png.width * this._png.height})`); this._hasTransparency = true; this._transparency = new Uint16Array(length / 2); for (let i = 0; i < length / 2; i++) this._transparency[i] = this.readUint16(); break; case ColorType.INDEXED_COLOUR: { if (length > this._palette.length) throw new Error(`tRNS chunk contains more alpha values than there are palette colors (${length} vs ${this._palette.length})`); let i = 0; for (; i < length; i++) { const alpha = this.readByte(); this._palette[i].push(alpha); } for (; i < this._palette.length; i++) this._palette[i].push(255); break; } case ColorType.UNKNOWN: case ColorType.GREYSCALE_ALPHA: case ColorType.TRUECOLOUR_ALPHA: default: throw new Error(`tRNS chunk is not supported for color type ${this._colorType}`); } } decodeiCCP(length) { const name = readKeyword(this); const compressionMethod = this.readUint8(); if (compressionMethod !== CompressionMethod.DEFLATE) throw new Error(`Unsupported iCCP compression method: ${compressionMethod}`); const compressedProfile = this.readBytes(length - name.length - 2); this._png.iccEmbeddedProfile = { name, profile: inflate_1(compressedProfile) }; } decodepHYs() { const ppuX = this.readUint32(); const ppuY = this.readUint32(); const unitSpecifier = this.readByte(); this._png.resolution = { x: ppuX, y: ppuY, unit: unitSpecifier }; } decodeApngImage() { this._apng.width = this._png.width; this._apng.height = this._png.height; this._apng.channels = this._png.channels; this._apng.depth = this._png.depth; this._apng.numberOfFrames = this._numberOfFrames; this._apng.numberOfPlays = this._numberOfPlays; this._apng.text = this._png.text; this._apng.resolution = this._png.resolution; for (let i = 0; i < this._numberOfFrames; i++) { const newFrame = { sequenceNumber: this._frames[i].sequenceNumber, delayNumber: this._frames[i].delayNumber, delayDenominator: this._frames[i].delayDenominator, data: this._apng.depth === 8 ? new Uint8Array(this._apng.width * this._apng.height * this._apng.channels) : new Uint16Array(this._apng.width * this._apng.height * this._apng.channels) }; const frame = this._frames.at(i); if (frame) { frame.data = decodeInterlaceNull({ data: frame.data, width: frame.width, height: frame.height, channels: this._apng.channels, depth: this._apng.depth }); if (this._hasPalette) this._apng.palette = this._palette; if (this._hasTransparency) this._apng.transparency = this._transparency; if (i === 0 || frame.xOffset === 0 && frame.yOffset === 0 && frame.width === this._png.width && frame.height === this._png.height) newFrame.data = frame.data; else { const prevFrame = this._apng.frames.at(i - 1); this.disposeFrame(frame, prevFrame, newFrame); this.addFrameDataToCanvas(newFrame, frame); } this._apng.frames.push(newFrame); } } return this._apng; } disposeFrame(frame, prevFrame, imageFrame) { switch (frame.disposeOp) { case DisposeOpType.NONE: break; case DisposeOpType.BACKGROUND: for (let row = 0; row < this._png.height; row++) for (let col = 0; col < this._png.width; col++) { const index = (row * frame.width + col) * this._png.channels; for (let channel = 0; channel < this._png.channels; channel++) imageFrame.data[index + channel] = 0; } break; case DisposeOpType.PREVIOUS: imageFrame.data.set(prevFrame.data); break; default: throw new Error("Unknown disposeOp"); } } addFrameDataToCanvas(imageFrame, frame) { const maxValue = 1 << this._png.depth; const calculatePixelIndices = (row, col) => { return { index: ((row + frame.yOffset) * this._png.width + frame.xOffset + col) * this._png.channels, frameIndex: (row * frame.width + col) * this._png.channels }; }; switch (frame.blendOp) { case BlendOpType.SOURCE: for (let row = 0; row < frame.height; row++) for (let col = 0; col < frame.width; col++) { const { index, frameIndex } = calculatePixelIndices(row, col); for (let channel = 0; channel < this._png.channels; channel++) imageFrame.data[index + channel] = frame.data[frameIndex + channel]; } break; case BlendOpType.OVER: for (let row = 0; row < frame.height; row++) for (let col = 0; col < frame.width; col++) { const { index, frameIndex } = calculatePixelIndices(row, col); for (let channel = 0; channel < this._png.channels; channel++) { const sourceAlpha = frame.data[frameIndex + this._png.channels - 1] / maxValue; const foregroundValue = channel % (this._png.channels - 1) === 0 ? 1 : frame.data[frameIndex + channel]; const value = Math.floor(sourceAlpha * foregroundValue + (1 - sourceAlpha) * imageFrame.data[index + channel]); imageFrame.data[index + channel] += value; } } break; default: throw new Error("Unknown blendOp"); } } decodeImage() { if (this._inflator.err) throw new Error(`Error while decompressing the data: ${this._inflator.err}`); const data = this._isAnimated ? (this._frames?.at(0)).data : this._inflator.result; if (this._filterMethod !== FilterMethod.ADAPTIVE) throw new Error(`Filter method ${this._filterMethod} not supported`); if (this._interlaceMethod === InterlaceMethod.NO_INTERLACE) this._png.data = decodeInterlaceNull({ data, width: this._png.width, height: this._png.height, channels: this._png.channels, depth: this._png.depth }); else if (this._interlaceMethod === InterlaceMethod.ADAM7) this._png.data = decodeInterlaceAdam7({ data, width: this._png.width, height: this._png.height, channels: this._png.channels, depth: this._png.depth }); else throw new Error(`Interlace method ${this._interlaceMethod} not supported`); if (this._hasPalette) this._png.palette = this._palette; if (this._hasTransparency) this._png.transparency = this._transparency; } pushDataToFrame() { const result = this._inflator.result; const lastFrame = this._frames.at(-1); if (lastFrame) lastFrame.data = result; else this._frames.push({ sequenceNumber: 0, width: this._png.width, height: this._png.height, xOffset: 0, yOffset: 0, delayNumber: 0, delayDenominator: 0, disposeOp: DisposeOpType.NONE, blendOp: BlendOpType.SOURCE, data: result }); this._inflator = new Inflate_1(); this._writingDataChunks = false; } }; function checkBitDepth(value) { if (value !== 1 && value !== 2 && value !== 4 && value !== 8 && value !== 16) throw new Error(`invalid bit depth: ${value}`); return value; } //#endregion //#region node_modules/fast-png/lib-esm/types.js var ResolutionUnitSpecifier; (function(ResolutionUnitSpecifier) { /** * Unit is unknown */ ResolutionUnitSpecifier[ResolutionUnitSpecifier["UNKNOWN"] = 0] = "UNKNOWN"; /** * Unit is the metre */ ResolutionUnitSpecifier[ResolutionUnitSpecifier["METRE"] = 1] = "METRE"; })(ResolutionUnitSpecifier || (ResolutionUnitSpecifier = {})); //#endregion //#region node_modules/fast-png/lib-esm/index.js function decodePng(data, options) { return new PngDecoder(data, options).decode(); } //#endregion //#region node_modules/jspdf/dist/jspdf.es.min.js /** @license * * jsPDF - PDF Document creation from JavaScript * Version 4.2.1 Built on 2026-03-17T11:11:27.057Z * CommitID 00000000 * * Copyright (c) 2010-2025 James Hall , https://github.com/MrRio/jsPDF * 2015-2025 yWorks GmbH, http://www.yworks.com * 2015-2025 Lukas Holländer , https://github.com/HackbrettXXX * 2016-2018 Aras Abbasi * 2010 Aaron Spike, https://github.com/acspike * 2012 Willow Systems Corporation, https://github.com/willowsystems * 2012 Pablo Hess, https://github.com/pablohess * 2012 Florian Jenett, https://github.com/fjenett * 2013 Warren Weckesser, https://github.com/warrenweckesser * 2013 Youssef Beddad, https://github.com/lifof * 2013 Lee Driscoll, https://github.com/lsdriscoll * 2013 Stefan Slonevskiy, https://github.com/stefslon * 2013 Jeremy Morel, https://github.com/jmorel * 2013 Christoph Hartmann, https://github.com/chris-rock * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria * 2014 James Makes, https://github.com/dollaruw * 2014 Diego Casorran, https://github.com/diegocr * 2014 Steven Spungin, https://github.com/Flamenco * 2014 Kenneth Glassey, https://github.com/Gavvers * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * Contributor(s): * siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango, * kim3er, mfo, alnorth, Flamenco */ var i = function() { return "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this; }(); function a() { i.console && "function" == typeof i.console.log && i.console.log.apply(i.console, arguments); } var o = { log: a, warn: function(t) { i.console && ("function" == typeof i.console.warn ? i.console.warn.apply(i.console, arguments) : a.call(null, arguments)); }, error: function(t) { i.console && ("function" == typeof i.console.error ? i.console.error.apply(i.console, arguments) : a(t)); } }; function s(t, e, r) { var n = new XMLHttpRequest(); n.open("GET", t), n.responseType = "blob", n.onload = function() { l(n.response, e, r); }, n.onerror = function() { o.error("could not download file"); }, n.send(); } function u(t) { var e = new XMLHttpRequest(); e.open("HEAD", t, !1); try { e.send(); } catch (r) {} return e.status >= 200 && e.status <= 299; } function c(t) { try { t.dispatchEvent(new MouseEvent("click")); } catch (r) { var e = document.createEvent("MouseEvents"); e.initMouseEvent("click", !0, !0, window, 0, 0, 0, 80, 20, !1, !1, !1, !1, 0, null), t.dispatchEvent(e); } } var l = i.saveAs || ("object" !== ("undefined" == typeof window ? "undefined" : _typeof(window)) || window !== i ? function() {} : "undefined" != typeof HTMLAnchorElement && "download" in HTMLAnchorElement.prototype ? function(t, e, r) { var n = i.URL || i.webkitURL, a = document.createElement("a"); e = e || t.name || "download", a.download = e, a.rel = "noopener", "string" == typeof t ? (a.href = t, a.origin !== location.origin ? u(a.href) ? s(t, e, r) : c(a, a.target = "_blank") : c(a)) : (a.href = n.createObjectURL(t), setTimeout(function() { n.revokeObjectURL(a.href); }, 4e4), setTimeout(function() { c(a); }, 0)); } : "msSaveOrOpenBlob" in navigator ? function(e, r, n) { if (r = r || e.name || "download", "string" == typeof e) if (u(e)) s(e, r, n); else { var i = document.createElement("a"); i.href = e, i.target = "_blank", setTimeout(function() { c(i); }); } else navigator.msSaveOrOpenBlob(function(e, r) { return void 0 === r ? r = { autoBom: !1 } : "object" !== _typeof(r) && (o.warn("Deprecated: Expected third argument to be a object"), r = { autoBom: !r }), r.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type) ? new Blob([String.fromCharCode(65279), e], { type: e.type }) : e; }(e, n), r); } : function(e, r, n, a) { if ((a = a || open("", "_blank")) && (a.document.title = a.document.body.innerText = "downloading..."), "string" == typeof e) return s(e, r, n); var o = "application/octet-stream" === e.type, u = /constructor/i.test(i.HTMLElement) || i.safari, c = /CriOS\/[\d]+/.test(navigator.userAgent); if ((c || o && u) && "object" === ("undefined" == typeof FileReader ? "undefined" : _typeof(FileReader))) { var l = new FileReader(); l.onloadend = function() { var t = l.result; t = c ? t : t.replace(/^data:[^;]*;/, "data:attachment/file;"), a ? a.location.href = t : location = t, a = null; }, l.readAsDataURL(e); } else { var h = i.URL || i.webkitURL, f = h.createObjectURL(e); a ? a.location = f : location.href = f, a = null, setTimeout(function() { h.revokeObjectURL(f); }, 4e4); } }); /** * A class to parse color values * @author Stoyan Stefanov * {@link http://www.phpied.com/rgb-color-parser-in-javascript/} * @license Use it if you like it */ function h(t) { var e; t = t || "", this.ok = !1, "#" == t.charAt(0) && (t = t.substr(1, 6)), t = { aliceblue: "f0f8ff", antiquewhite: "faebd7", aqua: "00ffff", aquamarine: "7fffd4", azure: "f0ffff", beige: "f5f5dc", bisque: "ffe4c4", black: "000000", blanchedalmond: "ffebcd", blue: "0000ff", blueviolet: "8a2be2", brown: "a52a2a", burlywood: "deb887", cadetblue: "5f9ea0", chartreuse: "7fff00", chocolate: "d2691e", coral: "ff7f50", cornflowerblue: "6495ed", cornsilk: "fff8dc", crimson: "dc143c", cyan: "00ffff", darkblue: "00008b", darkcyan: "008b8b", darkgoldenrod: "b8860b", darkgray: "a9a9a9", darkgreen: "006400", darkkhaki: "bdb76b", darkmagenta: "8b008b", darkolivegreen: "556b2f", darkorange: "ff8c00", darkorchid: "9932cc", darkred: "8b0000", darksalmon: "e9967a", darkseagreen: "8fbc8f", darkslateblue: "483d8b", darkslategray: "2f4f4f", darkturquoise: "00ced1", darkviolet: "9400d3", deeppink: "ff1493", deepskyblue: "00bfff", dimgray: "696969", dodgerblue: "1e90ff", feldspar: "d19275", firebrick: "b22222", floralwhite: "fffaf0", forestgreen: "228b22", fuchsia: "ff00ff", gainsboro: "dcdcdc", ghostwhite: "f8f8ff", gold: "ffd700", goldenrod: "daa520", gray: "808080", green: "008000", greenyellow: "adff2f", honeydew: "f0fff0", hotpink: "ff69b4", indianred: "cd5c5c", indigo: "4b0082", ivory: "fffff0", khaki: "f0e68c", lavender: "e6e6fa", lavenderblush: "fff0f5", lawngreen: "7cfc00", lemonchiffon: "fffacd", lightblue: "add8e6", lightcoral: "f08080", lightcyan: "e0ffff", lightgoldenrodyellow: "fafad2", lightgrey: "d3d3d3", lightgreen: "90ee90", lightpink: "ffb6c1", lightsalmon: "ffa07a", lightseagreen: "20b2aa", lightskyblue: "87cefa", lightslateblue: "8470ff", lightslategray: "778899", lightsteelblue: "b0c4de", lightyellow: "ffffe0", lime: "00ff00", limegreen: "32cd32", linen: "faf0e6", magenta: "ff00ff", maroon: "800000", mediumaquamarine: "66cdaa", mediumblue: "0000cd", mediumorchid: "ba55d3", mediumpurple: "9370d8", mediumseagreen: "3cb371", mediumslateblue: "7b68ee", mediumspringgreen: "00fa9a", mediumturquoise: "48d1cc", mediumvioletred: "c71585", midnightblue: "191970", mintcream: "f5fffa", mistyrose: "ffe4e1", moccasin: "ffe4b5", navajowhite: "ffdead", navy: "000080", oldlace: "fdf5e6", olive: "808000", olivedrab: "6b8e23", orange: "ffa500", orangered: "ff4500", orchid: "da70d6", palegoldenrod: "eee8aa", palegreen: "98fb98", paleturquoise: "afeeee", palevioletred: "d87093", papayawhip: "ffefd5", peachpuff: "ffdab9", peru: "cd853f", pink: "ffc0cb", plum: "dda0dd", powderblue: "b0e0e6", purple: "800080", red: "ff0000", rosybrown: "bc8f8f", royalblue: "4169e1", saddlebrown: "8b4513", salmon: "fa8072", sandybrown: "f4a460", seagreen: "2e8b57", seashell: "fff5ee", sienna: "a0522d", silver: "c0c0c0", skyblue: "87ceeb", slateblue: "6a5acd", slategray: "708090", snow: "fffafa", springgreen: "00ff7f", steelblue: "4682b4", tan: "d2b48c", teal: "008080", thistle: "d8bfd8", tomato: "ff6347", turquoise: "40e0d0", violet: "ee82ee", violetred: "d02090", wheat: "f5deb3", white: "ffffff", whitesmoke: "f5f5f5", yellow: "ffff00", yellowgreen: "9acd32" }[t = (t = t.replace(/ /g, "")).toLowerCase()] || t; for (var r = [ { re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/, example: ["rgb(123, 234, 45)", "rgb(255,234,245)"], process: function(t) { return [ parseInt(t[1]), parseInt(t[2]), parseInt(t[3]) ]; } }, { re: /^(\w{2})(\w{2})(\w{2})$/, example: ["#00ff00", "336699"], process: function(t) { return [ parseInt(t[1], 16), parseInt(t[2], 16), parseInt(t[3], 16) ]; } }, { re: /^(\w{1})(\w{1})(\w{1})$/, example: ["#fb0", "f0f"], process: function(t) { return [ parseInt(t[1] + t[1], 16), parseInt(t[2] + t[2], 16), parseInt(t[3] + t[3], 16) ]; } } ], n = 0; n < r.length; n++) { var i = r[n].re, a = r[n].process, o = i.exec(t); o && (e = a(o), this.r = e[0], this.g = e[1], this.b = e[2], this.ok = !0); } this.r = this.r < 0 || isNaN(this.r) ? 0 : this.r > 255 ? 255 : this.r, this.g = this.g < 0 || isNaN(this.g) ? 0 : this.g > 255 ? 255 : this.g, this.b = this.b < 0 || isNaN(this.b) ? 0 : this.b > 255 ? 255 : this.b, this.toRGB = function() { return "rgb(" + this.r + ", " + this.g + ", " + this.b + ")"; }, this.toHex = function() { var t = this.r.toString(16), e = this.g.toString(16), r = this.b.toString(16); return 1 == t.length && (t = "0" + t), 1 == e.length && (e = "0" + e), 1 == r.length && (r = "0" + r), "#" + t + e + r; }; } var f = i.atob.bind(i), d = i.btoa.bind(i); /** * @license * Joseph Myers does not specify a particular license for his work. * * Author: Joseph Myers * Accessed from: http://www.myersdaily.org/joseph/javascript/md5.js * * Modified by: Owen Leong */ function p(t, e) { var r = t[0], n = t[1], i = t[2], a = t[3]; r = m(r, n, i, a, e[0], 7, -680876936), a = m(a, r, n, i, e[1], 12, -389564586), i = m(i, a, r, n, e[2], 17, 606105819), n = m(n, i, a, r, e[3], 22, -1044525330), r = m(r, n, i, a, e[4], 7, -176418897), a = m(a, r, n, i, e[5], 12, 1200080426), i = m(i, a, r, n, e[6], 17, -1473231341), n = m(n, i, a, r, e[7], 22, -45705983), r = m(r, n, i, a, e[8], 7, 1770035416), a = m(a, r, n, i, e[9], 12, -1958414417), i = m(i, a, r, n, e[10], 17, -42063), n = m(n, i, a, r, e[11], 22, -1990404162), r = m(r, n, i, a, e[12], 7, 1804603682), a = m(a, r, n, i, e[13], 12, -40341101), i = m(i, a, r, n, e[14], 17, -1502002290), r = v(r, n = m(n, i, a, r, e[15], 22, 1236535329), i, a, e[1], 5, -165796510), a = v(a, r, n, i, e[6], 9, -1069501632), i = v(i, a, r, n, e[11], 14, 643717713), n = v(n, i, a, r, e[0], 20, -373897302), r = v(r, n, i, a, e[5], 5, -701558691), a = v(a, r, n, i, e[10], 9, 38016083), i = v(i, a, r, n, e[15], 14, -660478335), n = v(n, i, a, r, e[4], 20, -405537848), r = v(r, n, i, a, e[9], 5, 568446438), a = v(a, r, n, i, e[14], 9, -1019803690), i = v(i, a, r, n, e[3], 14, -187363961), n = v(n, i, a, r, e[8], 20, 1163531501), r = v(r, n, i, a, e[13], 5, -1444681467), a = v(a, r, n, i, e[2], 9, -51403784), i = v(i, a, r, n, e[7], 14, 1735328473), r = b(r, n = v(n, i, a, r, e[12], 20, -1926607734), i, a, e[5], 4, -378558), a = b(a, r, n, i, e[8], 11, -2022574463), i = b(i, a, r, n, e[11], 16, 1839030562), n = b(n, i, a, r, e[14], 23, -35309556), r = b(r, n, i, a, e[1], 4, -1530992060), a = b(a, r, n, i, e[4], 11, 1272893353), i = b(i, a, r, n, e[7], 16, -155497632), n = b(n, i, a, r, e[10], 23, -1094730640), r = b(r, n, i, a, e[13], 4, 681279174), a = b(a, r, n, i, e[0], 11, -358537222), i = b(i, a, r, n, e[3], 16, -722521979), n = b(n, i, a, r, e[6], 23, 76029189), r = b(r, n, i, a, e[9], 4, -640364487), a = b(a, r, n, i, e[12], 11, -421815835), i = b(i, a, r, n, e[15], 16, 530742520), r = y(r, n = b(n, i, a, r, e[2], 23, -995338651), i, a, e[0], 6, -198630844), a = y(a, r, n, i, e[7], 10, 1126891415), i = y(i, a, r, n, e[14], 15, -1416354905), n = y(n, i, a, r, e[5], 21, -57434055), r = y(r, n, i, a, e[12], 6, 1700485571), a = y(a, r, n, i, e[3], 10, -1894986606), i = y(i, a, r, n, e[10], 15, -1051523), n = y(n, i, a, r, e[1], 21, -2054922799), r = y(r, n, i, a, e[8], 6, 1873313359), a = y(a, r, n, i, e[15], 10, -30611744), i = y(i, a, r, n, e[6], 15, -1560198380), n = y(n, i, a, r, e[13], 21, 1309151649), r = y(r, n, i, a, e[4], 6, -145523070), a = y(a, r, n, i, e[11], 10, -1120210379), i = y(i, a, r, n, e[2], 15, 718787259), n = y(n, i, a, r, e[9], 21, -343485551), t[0] = P(r, t[0]), t[1] = P(n, t[1]), t[2] = P(i, t[2]), t[3] = P(a, t[3]); } function g(t, e, r, n, i, a) { return e = P(P(e, t), P(n, a)), P(e << i | e >>> 32 - i, r); } function m(t, e, r, n, i, a, o) { return g(e & r | ~e & n, t, e, i, a, o); } function v(t, e, r, n, i, a, o) { return g(e & n | r & ~n, t, e, i, a, o); } function b(t, e, r, n, i, a, o) { return g(e ^ r ^ n, t, e, i, a, o); } function y(t, e, r, n, i, a, o) { return g(r ^ (e | ~n), t, e, i, a, o); } function w(t) { var e, r = t.length, n = [ 1732584193, -271733879, -1732584194, 271733878 ]; for (e = 64; e <= t.length; e += 64) p(n, N(t.substring(e - 64, e))); t = t.substring(e - 64); var i = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; for (e = 0; e < t.length; e++) i[e >> 2] |= t.charCodeAt(e) << (e % 4 << 3); if (i[e >> 2] |= 128 << (e % 4 << 3), e > 55) for (p(n, i), e = 0; e < 16; e++) i[e] = 0; return i[14] = 8 * r, p(n, i), n; } function N(t) { var e, r = []; for (e = 0; e < 64; e += 4) r[e >> 2] = t.charCodeAt(e) + (t.charCodeAt(e + 1) << 8) + (t.charCodeAt(e + 2) << 16) + (t.charCodeAt(e + 3) << 24); return r; } var L = "0123456789abcdef".split(""); function x(t) { for (var e = "", r = 0; r < 4; r++) e += L[t >> 8 * r + 4 & 15] + L[t >> 8 * r & 15]; return e; } function A(t) { return String.fromCharCode(255 & t, (65280 & t) >> 8, (16711680 & t) >> 16, (4278190080 & t) >> 24); } function S(t) { return w(t).map(A).join(""); } var _ = "5d41402abc4b2a76b9719d911017c592" != function(t) { for (var e = 0; e < t.length; e++) t[e] = x(t[e]); return t.join(""); }(w("hello")); function P(t, e) { if (_) { var r = (65535 & t) + (65535 & e); return (t >> 16) + (e >> 16) + (r >> 16) << 16 | 65535 & r; } return t + e & 4294967295; } /** * @license * FPDF is released under a permissive license: there is no usage restriction. * You may embed it freely in your application (commercial or not), with or * without modifications. * * Reference: http://www.fpdf.org/en/script/script37.php */ function k(t, e) { var r, n, i, a; if (t !== r) { for (var o = (i = t, a = 1 + (256 / t.length | 0), new Array(a + 1).join(i)), s = [], u = 0; u < 256; u++) s[u] = u; var c = 0; for (u = 0; u < 256; u++) { var l = s[u]; c = (c + l + o.charCodeAt(u)) % 256, s[u] = s[c], s[c] = l; } r = t, n = s; } else s = n; var h = e.length, f = 0, d = 0, p = ""; for (u = 0; u < h; u++) d = (d + (l = s[f = (f + 1) % 256])) % 256, s[f] = s[d], s[d] = l, o = s[(s[f] + s[d]) % 256], p += String.fromCharCode(e.charCodeAt(u) ^ o); return p; } /** * @license * Licensed under the MIT License. * http://opensource.org/licenses/mit-license * Author: Owen Leong (@owenl131) * Date: 15 Oct 2020 * References: * https://www.cs.cmu.edu/~dst/Adobe/Gallery/anon21jul01-pdf-encryption.txt * https://github.com/foliojs/pdfkit/blob/master/lib/security.js * http://www.fpdf.org/en/script/script37.php */ var F = { print: 4, modify: 8, copy: 16, "annot-forms": 32 }; function I(t, e, r, n) { this.v = 1, this.r = 2; var i = 192; t.forEach(function(t) { if (void 0 !== F.perm) throw new Error("Invalid permission: " + t); i += F[t]; }), this.padding = "(¿N^NuŠAd\0NVÿú\b..\0¶Ðh>€/\f©þdSiz"; var a = (e + this.padding).substr(0, 32), o = (r + this.padding).substr(0, 32); this.O = this.processOwnerPassword(a, o), this.P = -(1 + (255 ^ i)), this.encryptionKey = S(a + this.O + this.lsbFirstWord(this.P) + this.hexToBytes(n)).substr(0, 5), this.U = k(this.encryptionKey, this.padding); } function C(t) { if (/[^\u0000-\u00ff]/.test(t)) throw new Error("Invalid PDF Name Object: " + t + ", Only accept ASCII characters."); for (var e = "", r = t.length, n = 0; n < r; n++) { var i = t.charCodeAt(n); e += i < 33 || 35 === i || 37 === i || 40 === i || 41 === i || 47 === i || 60 === i || 62 === i || 91 === i || 93 === i || 123 === i || 125 === i || i > 126 ? "#" + ("0" + i.toString(16)).slice(-2) : t[n]; } return e; } function j(e) { if ("object" !== _typeof(e)) throw new Error("Invalid Context passed to initialize PubSub (jsPDF-module)"); var r = {}; this.subscribe = function(t, e, n) { if (n = n || !1, "string" != typeof t || "function" != typeof e || "boolean" != typeof n) throw new Error("Invalid arguments passed to PubSub.subscribe (jsPDF-module)"); r.hasOwnProperty(t) || (r[t] = {}); var i = Math.random().toString(35); return r[t][i] = [e, !!n], i; }, this.unsubscribe = function(t) { for (var e in r) if (r[e][t]) return delete r[e][t], 0 === Object.keys(r[e]).length && delete r[e], !0; return !1; }, this.publish = function(t) { if (r.hasOwnProperty(t)) { var n = Array.prototype.slice.call(arguments, 1), a = []; for (var s in r[t]) { var u = r[t][s]; try { u[0].apply(e, n); } catch (c) { i.console && o.error("jsPDF PubSub Error", c.message, c); } u[1] && a.push(s); } a.length && a.forEach(this.unsubscribe); } }, this.getTopics = function() { return r; }; } function O(t) { if (!(this instanceof O)) return new O(t); var e = "opacity,stroke-opacity".split(","); for (var r in t) t.hasOwnProperty(r) && e.indexOf(r) >= 0 && (this[r] = t[r]); this.id = "", this.objectNumber = -1; } function B(t, e) { this.gState = t, this.matrix = e, this.id = "", this.objectNumber = -1; } function M(t, e, r, n, i) { if (!(this instanceof M)) return new M(t, e, r, n, i); this.type = "axial" === t ? 2 : 3, this.coords = e, this.colors = r, B.call(this, n, i); } function q(t, e, r, n, i) { if (!(this instanceof q)) return new q(t, e, r, n, i); this.boundingBox = t, this.xStep = e, this.yStep = r, this.stream = "", this.cloneIndex = 0, B.call(this, n, i); } function E(e) { var r, n = "string" == typeof arguments[0] ? arguments[0] : "p", a = arguments[1], s = arguments[2], u = arguments[3], c = [], f = 1, p = 16, g = "S", m = null; "object" === _typeof(e = e || {}) && (n = e.orientation, a = e.unit || a, s = e.format || s, u = e.compress || e.compressPdf || u, null !== (m = e.encryption || null) && (m.userPassword = m.userPassword || "", m.ownerPassword = m.ownerPassword || "", m.userPermissions = m.userPermissions || []), f = "number" == typeof e.userUnit ? Math.abs(e.userUnit) : 1, void 0 !== e.precision && (r = e.precision), void 0 !== e.floatPrecision && (p = e.floatPrecision), g = e.defaultPathOperation || "S"), c = e.filters || (!0 === u ? ["FlateEncode"] : c), a = a || "mm", n = ("" + (n || "P")).toLowerCase(); var v = e.putOnlyUsedFonts || !1, b = {}, y = { internal: {}, __private__: {} }; y.__private__.PubSub = j; var w = "1.3", N = y.__private__.getPdfVersion = function() { return w; }; y.__private__.setPdfVersion = function(t) { w = t; }; var L = { a0: [2383.94, 3370.39], a1: [1683.78, 2383.94], a2: [1190.55, 1683.78], a3: [841.89, 1190.55], a4: [595.28, 841.89], a5: [419.53, 595.28], a6: [297.64, 419.53], a7: [209.76, 297.64], a8: [147.4, 209.76], a9: [104.88, 147.4], a10: [73.7, 104.88], b0: [2834.65, 4008.19], b1: [2004.09, 2834.65], b2: [1417.32, 2004.09], b3: [1000.63, 1417.32], b4: [708.66, 1000.63], b5: [498.9, 708.66], b6: [354.33, 498.9], b7: [249.45, 354.33], b8: [175.75, 249.45], b9: [124.72, 175.75], b10: [87.87, 124.72], c0: [2599.37, 3676.54], c1: [1836.85, 2599.37], c2: [1298.27, 1836.85], c3: [918.43, 1298.27], c4: [649.13, 918.43], c5: [459.21, 649.13], c6: [323.15, 459.21], c7: [229.61, 323.15], c8: [161.57, 229.61], c9: [113.39, 161.57], c10: [79.37, 113.39], dl: [311.81, 623.62], letter: [612, 792], "government-letter": [576, 756], legal: [612, 1008], "junior-legal": [576, 360], ledger: [1224, 792], tabloid: [792, 1224], "credit-card": [153, 243] }; y.__private__.getPageFormats = function() { return L; }; var x = y.__private__.getPageFormat = function(t) { return L[t]; }; s = s || "a4"; var A = "compat", S = "advanced", _ = A; function P() { this.saveGraphicsState(), lt(new Wt(St, 0, 0, -St, 0, Pr() * St).toString() + " cm"), this.setFontSize(this.getFontSize() / St), g = "n", _ = S; } function k() { this.restoreGraphicsState(), g = "S", _ = A; } var F = y.__private__.combineFontStyleAndFontWeight = function(t, e) { if ("bold" == t && "normal" == e || "bold" == t && 400 == e || "normal" == t && "italic" == e || "bold" == t && "italic" == e) throw new Error("Invalid Combination of fontweight and fontstyle"); return e && (t = 400 == e || "normal" === e ? "italic" === t ? "italic" : "normal" : 700 != e && "bold" !== e || "normal" !== t ? (700 == e ? "bold" : e) + "" + t : "bold"), t; }; y.advancedAPI = function(t) { var e = _ === A; return e && P.call(this), "function" != typeof t || (t(this), e && k.call(this)), this; }, y.compatAPI = function(t) { var e = _ === S; return e && k.call(this), "function" != typeof t || (t(this), e && P.call(this)), this; }, y.isAdvancedAPI = function() { return _ === S; }; var B, R = function(t) { if (_ !== S) throw new Error(t + " is only available in 'advanced' API mode. You need to call advancedAPI() first."); }, D = y.roundToPrecision = y.__private__.roundToPrecision = function(t, e) { var n = r || e; if (isNaN(t) || isNaN(n)) throw new Error("Invalid argument passed to jsPDF.roundToPrecision"); return t.toFixed(n).replace(/0+$/, ""); }; B = y.hpf = y.__private__.hpf = "number" == typeof p ? function(t) { if (isNaN(t)) throw new Error("Invalid argument passed to jsPDF.hpf"); return D(t, p); } : "smart" === p ? function(t) { if (isNaN(t)) throw new Error("Invalid argument passed to jsPDF.hpf"); return D(t, t > -1 && t < 1 ? 16 : 5); } : function(t) { if (isNaN(t)) throw new Error("Invalid argument passed to jsPDF.hpf"); return D(t, 16); }; var T = y.f2 = y.__private__.f2 = function(t) { if (isNaN(t)) throw new Error("Invalid argument passed to jsPDF.f2"); return D(t, 2); }, z = y.__private__.f3 = function(t) { if (isNaN(t)) throw new Error("Invalid argument passed to jsPDF.f3"); return D(t, 3); }, U = y.scale = y.__private__.scale = function(t) { if (isNaN(t)) throw new Error("Invalid argument passed to jsPDF.scale"); return _ === A ? t * St : _ === S ? t : void 0; }, H = function(t) { return U(function(t) { return _ === A ? Pr() - t : _ === S ? t : void 0; }(t)); }; y.__private__.setPrecision = y.setPrecision = function(t) { "number" == typeof parseInt(t, 10) && (r = parseInt(t, 10)); }; var W, V = "00000000000000000000000000000000", G = y.__private__.getFileId = function() { return V; }, Y = y.__private__.setFileId = function(t) { return V = void 0 !== t && /^[a-fA-F0-9]{32}$/.test(t) ? t.toUpperCase() : V.split("").map(function() { return "ABCDEF0123456789".charAt(Math.floor(16 * Math.random())); }).join(""), null !== m && (Oe = new I(m.userPermissions, m.userPassword, m.ownerPassword, V)), V; }; y.setFileId = function(t) { return Y(t), this; }, y.getFileId = function() { return G(); }; var J = y.__private__.convertDateToPDFDate = function(t) { var e = t.getTimezoneOffset(), r = e < 0 ? "+" : "-", n = Math.floor(Math.abs(e / 60)), i = Math.abs(e % 60), a = [ r, Q(n), "'", Q(i), "'" ].join(""); return [ "D:", t.getFullYear(), Q(t.getMonth() + 1), Q(t.getDate()), Q(t.getHours()), Q(t.getMinutes()), Q(t.getSeconds()), a ].join(""); }, X = y.__private__.convertPDFDateToDate = function(t) { var e = parseInt(t.substr(2, 4), 10), r = parseInt(t.substr(6, 2), 10) - 1, n = parseInt(t.substr(8, 2), 10), i = parseInt(t.substr(10, 2), 10), a = parseInt(t.substr(12, 2), 10), o = parseInt(t.substr(14, 2), 10); return new Date(e, r, n, i, a, o, 0); }, K = y.__private__.setCreationDate = function(t) { var e; if (void 0 === t && (t = /* @__PURE__ */ new Date()), t instanceof Date) e = J(t); else { if (!/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\+0[0-9]|\+1[0-4]|-0[0-9]|-1[0-1])'(0[0-9]|[1-5][0-9])'?$/.test(t)) throw new Error("Invalid argument passed to jsPDF.setCreationDate"); e = t; } return W = e; }, Z = y.__private__.getCreationDate = function(t) { var e = W; return "jsDate" === t && (e = X(W)), e; }; y.setCreationDate = function(t) { return K(t), this; }, y.getCreationDate = function(t) { return Z(t); }; var $, Q = y.__private__.padd2 = function(t) { return ("0" + parseInt(t)).slice(-2); }, tt = y.__private__.padd2Hex = function(t) { return ("00" + (t = t.toString())).substr(t.length); }, et = 0, rt = [], nt = [], it = 0, at = [], ot = [], st = !1, ut = nt; y.__private__.setCustomOutputDestination = function(t) { st = !0, ut = t; }; var ct = function(t) { st || (ut = t); }; y.__private__.resetCustomOutputDestination = function() { st = !1, ut = nt; }; var lt = y.__private__.out = function(t) { return t = t.toString(), it += t.length + 1, ut.push(t), ut; }, ht = y.__private__.write = function(t) { return lt(1 === arguments.length ? t.toString() : Array.prototype.join.call(arguments, " ")); }, ft = y.__private__.getArrayBuffer = function(t) { for (var e = t.length, r = new ArrayBuffer(e), n = new Uint8Array(r); e--;) n[e] = t.charCodeAt(e); return r; }, dt = [ [ "Helvetica", "helvetica", "normal", "WinAnsiEncoding" ], [ "Helvetica-Bold", "helvetica", "bold", "WinAnsiEncoding" ], [ "Helvetica-Oblique", "helvetica", "italic", "WinAnsiEncoding" ], [ "Helvetica-BoldOblique", "helvetica", "bolditalic", "WinAnsiEncoding" ], [ "Courier", "courier", "normal", "WinAnsiEncoding" ], [ "Courier-Bold", "courier", "bold", "WinAnsiEncoding" ], [ "Courier-Oblique", "courier", "italic", "WinAnsiEncoding" ], [ "Courier-BoldOblique", "courier", "bolditalic", "WinAnsiEncoding" ], [ "Times-Roman", "times", "normal", "WinAnsiEncoding" ], [ "Times-Bold", "times", "bold", "WinAnsiEncoding" ], [ "Times-Italic", "times", "italic", "WinAnsiEncoding" ], [ "Times-BoldItalic", "times", "bolditalic", "WinAnsiEncoding" ], [ "ZapfDingbats", "zapfdingbats", "normal", null ], [ "Symbol", "symbol", "normal", null ] ]; y.__private__.getStandardFonts = function() { return dt; }; var pt = e.fontSize || 16; y.__private__.setFontSize = y.setFontSize = function(t) { return pt = _ === S ? t / St : t, this; }; var gt, mt = y.__private__.getFontSize = y.getFontSize = function() { return _ === A ? pt : pt * St; }, vt = e.R2L || !1; y.__private__.setR2L = y.setR2L = function(t) { return vt = t, this; }, y.__private__.getR2L = y.getR2L = function() { return vt; }; var bt, yt = y.__private__.setZoomMode = function(t) { if (/^(?:\d+\.\d*|\d*\.\d+|\d+)%$/.test(t)) gt = t; else if (isNaN(t)) { if (-1 === [ void 0, null, "fullwidth", "fullheight", "fullpage", "original" ].indexOf(t)) throw new Error("zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. \"" + t + "\" is not recognized."); gt = t; } else gt = parseInt(t, 10); }; y.__private__.getZoomMode = function() { return gt; }; var wt, Nt = y.__private__.setPageMode = function(t) { if (-1 == [ void 0, null, "UseNone", "UseOutlines", "UseThumbs", "FullScreen" ].indexOf(t)) throw new Error("Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. \"" + t + "\" is not recognized."); bt = t; }; y.__private__.getPageMode = function() { return bt; }; var Lt = y.__private__.setLayoutMode = function(t) { if (-1 == [ void 0, null, "continuous", "single", "twoleft", "tworight", "two" ].indexOf(t)) throw new Error("Layout mode must be one of continuous, single, twoleft, tworight. \"" + t + "\" is not recognized."); wt = t; }; y.__private__.getLayoutMode = function() { return wt; }, y.__private__.setDisplayMode = y.setDisplayMode = function(t, e, r) { return yt(t), Lt(e), Nt(r), this; }; var xt = { title: "", subject: "", author: "", keywords: "", creator: "" }; y.__private__.getDocumentProperty = function(t) { if (-1 === Object.keys(xt).indexOf(t)) throw new Error("Invalid argument passed to jsPDF.getDocumentProperty"); return xt[t]; }, y.__private__.getDocumentProperties = function() { return xt; }, y.__private__.setDocumentProperties = y.setProperties = y.setDocumentProperties = function(t) { for (var e in xt) xt.hasOwnProperty(e) && t[e] && (xt[e] = t[e]); return this; }, y.__private__.setDocumentProperty = function(t, e) { if (-1 === Object.keys(xt).indexOf(t)) throw new Error("Invalid arguments passed to jsPDF.setDocumentProperty"); return xt[t] = e; }; var At, St, _t, Pt, kt, Ft = {}, It = {}, Ct = [], jt = {}, Ot = {}, Bt = {}, Mt = {}, qt = null, Et = 0, Rt = [], Dt = new j(y), Tt = e.hotfixes || [], zt = {}, Ut = {}, Ht = [], Wt = function t(e, r, n, i, a, o) { if (!(this instanceof t)) return new t(e, r, n, i, a, o); isNaN(e) && (e = 1), isNaN(r) && (r = 0), isNaN(n) && (n = 0), isNaN(i) && (i = 1), isNaN(a) && (a = 0), isNaN(o) && (o = 0), this._matrix = [ e, r, n, i, a, o ]; }; Object.defineProperty(Wt.prototype, "sx", { get: function() { return this._matrix[0]; }, set: function(t) { this._matrix[0] = t; } }), Object.defineProperty(Wt.prototype, "shy", { get: function() { return this._matrix[1]; }, set: function(t) { this._matrix[1] = t; } }), Object.defineProperty(Wt.prototype, "shx", { get: function() { return this._matrix[2]; }, set: function(t) { this._matrix[2] = t; } }), Object.defineProperty(Wt.prototype, "sy", { get: function() { return this._matrix[3]; }, set: function(t) { this._matrix[3] = t; } }), Object.defineProperty(Wt.prototype, "tx", { get: function() { return this._matrix[4]; }, set: function(t) { this._matrix[4] = t; } }), Object.defineProperty(Wt.prototype, "ty", { get: function() { return this._matrix[5]; }, set: function(t) { this._matrix[5] = t; } }), Object.defineProperty(Wt.prototype, "a", { get: function() { return this._matrix[0]; }, set: function(t) { this._matrix[0] = t; } }), Object.defineProperty(Wt.prototype, "b", { get: function() { return this._matrix[1]; }, set: function(t) { this._matrix[1] = t; } }), Object.defineProperty(Wt.prototype, "c", { get: function() { return this._matrix[2]; }, set: function(t) { this._matrix[2] = t; } }), Object.defineProperty(Wt.prototype, "d", { get: function() { return this._matrix[3]; }, set: function(t) { this._matrix[3] = t; } }), Object.defineProperty(Wt.prototype, "e", { get: function() { return this._matrix[4]; }, set: function(t) { this._matrix[4] = t; } }), Object.defineProperty(Wt.prototype, "f", { get: function() { return this._matrix[5]; }, set: function(t) { this._matrix[5] = t; } }), Object.defineProperty(Wt.prototype, "rotation", { get: function() { return Math.atan2(this.shx, this.sx); } }), Object.defineProperty(Wt.prototype, "scaleX", { get: function() { return this.decompose().scale.sx; } }), Object.defineProperty(Wt.prototype, "scaleY", { get: function() { return this.decompose().scale.sy; } }), Object.defineProperty(Wt.prototype, "isIdentity", { get: function() { return 1 === this.sx && 0 === this.shy && 0 === this.shx && 1 === this.sy && 0 === this.tx && 0 === this.ty; } }), Wt.prototype.join = function(t) { return [ this.sx, this.shy, this.shx, this.sy, this.tx, this.ty ].map(B).join(t); }, Wt.prototype.multiply = function(t) { return new Wt(t.sx * this.sx + t.shy * this.shx, t.sx * this.shy + t.shy * this.sy, t.shx * this.sx + t.sy * this.shx, t.shx * this.shy + t.sy * this.sy, t.tx * this.sx + t.ty * this.shx + this.tx, t.tx * this.shy + t.ty * this.sy + this.ty); }, Wt.prototype.decompose = function() { var t = this.sx, e = this.shy, r = this.shx, n = this.sy, i = this.tx, a = this.ty, o = Math.sqrt(t * t + e * e), s = (t /= o) * r + (e /= o) * n; r -= t * s, n -= e * s; var u = Math.sqrt(r * r + n * n); return s /= u, t * (n /= u) < e * (r /= u) && (t = -t, e = -e, s = -s, o = -o), { scale: new Wt(o, 0, 0, u, 0, 0), translate: new Wt(1, 0, 0, 1, i, a), rotate: new Wt(t, e, -e, t, 0, 0), skew: new Wt(1, 0, s, 1, 0, 0) }; }, Wt.prototype.toString = function(t) { return this.join(" "); }, Wt.prototype.inversed = function() { var t = this.sx, e = this.shy, r = this.shx, n = this.sy, i = this.tx, a = this.ty, o = 1 / (t * n - e * r), s = n * o, u = -e * o, c = -r * o, l = t * o; return new Wt(s, u, c, l, -s * i - c * a, -u * i - l * a); }, Wt.prototype.applyToPoint = function(t) { return new mr(t.x * this.sx + t.y * this.shx + this.tx, t.x * this.shy + t.y * this.sy + this.ty); }, Wt.prototype.applyToRectangle = function(t) { var e = this.applyToPoint(t), r = this.applyToPoint(new mr(t.x + t.w, t.y + t.h)); return new vr(e.x, e.y, r.x - e.x, r.y - e.y); }, Wt.prototype.clone = function() { var t = this.sx, e = this.shy, r = this.shx, n = this.sy, i = this.tx, a = this.ty; return new Wt(t, e, r, n, i, a); }, y.Matrix = Wt; var Vt = y.matrixMult = function(t, e) { return e.multiply(t); }, Gt = new Wt(1, 0, 0, 1, 0, 0); y.unitMatrix = y.identityMatrix = Gt; var Yt = function(t, e) { if (!Ot[t]) { var r = (e instanceof M ? "Sh" : "P") + (Object.keys(jt).length + 1).toString(10); e.id = r, Ot[t] = r, jt[r] = e, Dt.publish("addPattern", e); } }; y.ShadingPattern = M, y.TilingPattern = q, y.addShadingPattern = function(t, e) { return R("addShadingPattern()"), Yt(t, e), this; }, y.beginTilingPattern = function(t) { R("beginTilingPattern()"), yr(t.boundingBox[0], t.boundingBox[1], t.boundingBox[2] - t.boundingBox[0], t.boundingBox[3] - t.boundingBox[1], t.matrix); }, y.endTilingPattern = function(t, e) { R("endTilingPattern()"), e.stream = ot[$].join("\n"), Yt(t, e), Dt.publish("endTilingPattern", e), Ht.pop().restore(); }; var Jt, Xt = y.__private__.newObject = function() { var t = Kt(); return Zt(t, !0), t; }, Kt = y.__private__.newObjectDeferred = function() { return et++, rt[et] = function() { return it; }, et; }, Zt = function(t, e) { return e = "boolean" == typeof e && e, rt[t] = it, e && lt(t + " 0 obj"), t; }, $t = y.__private__.newAdditionalObject = function() { var t = { objId: Kt(), content: "" }; return at.push(t), t; }, Qt = Kt(), te = Kt(), ee = y.__private__.decodeColorString = function(t) { var e = t.split(" "); if (2 !== e.length || "g" !== e[1] && "G" !== e[1]) 5 !== e.length || "k" !== e[4] && "K" !== e[4] || (e = [ (1 - e[0]) * (1 - e[3]), (1 - e[1]) * (1 - e[3]), (1 - e[2]) * (1 - e[3]), "r" ]); else { var r = parseFloat(e[0]); e = [ r, r, r, "r" ]; } for (var n = "#", i = 0; i < 3; i++) n += ("0" + Math.floor(255 * parseFloat(e[i])).toString(16)).slice(-2); return n; }, re = y.__private__.encodeColorString = function(e) { var r; "string" == typeof e && (e = { ch1: e }); var n = e.ch1, i = e.ch2, a = e.ch3, o = e.ch4, s = "draw" === e.pdfColorType ? [ "G", "RG", "K" ] : [ "g", "rg", "k" ]; if ("string" == typeof n && "#" !== n.charAt(0)) { var u = new h(n); if (u.ok) n = u.toHex(); else if (!/^\d*\.?\d*$/.test(n)) throw new Error("Invalid color \"" + n + "\" passed to jsPDF.encodeColorString."); } if ("string" == typeof n && /^#[0-9A-Fa-f]{3}$/.test(n) && (n = "#" + n[1] + n[1] + n[2] + n[2] + n[3] + n[3]), "string" == typeof n && /^#[0-9A-Fa-f]{6}$/.test(n)) { var c = parseInt(n.substr(1), 16); n = c >> 16 & 255, i = c >> 8 & 255, a = 255 & c; } if (void 0 === i || void 0 === o && n === i && i === a) r = "string" == typeof n ? n + " " + s[0] : 2 === e.precision ? T(n / 255) + " " + s[0] : z(n / 255) + " " + s[0]; else if (void 0 === o || "object" === _typeof(o)) { if (o && !isNaN(o.a) && 0 === o.a) return [ "1.", "1.", "1.", s[1] ].join(" "); r = "string" == typeof n ? [ n, i, a, s[1] ].join(" ") : 2 === e.precision ? [ T(n / 255), T(i / 255), T(a / 255), s[1] ].join(" ") : [ z(n / 255), z(i / 255), z(a / 255), s[1] ].join(" "); } else r = "string" == typeof n ? [ n, i, a, o, s[2] ].join(" ") : 2 === e.precision ? [ T(n), T(i), T(a), T(o), s[2] ].join(" ") : [ z(n), z(i), z(a), z(o), s[2] ].join(" "); return r; }, ne = y.__private__.getFilters = function() { return c; }, ie = y.__private__.putStream = function(t) { var e = (t = t || {}).data || "", r = t.filters || ne(), n = t.alreadyAppliedFilters || [], i = t.addLength1 || !1, a = e.length, o = t.objectId, s = function(t) { return t; }; if (null !== m && void 0 === o) throw new Error("ObjectId must be passed to putStream for file encryption"); null !== m && (s = Oe.encryptor(o, 0)); var u = {}; !0 === r && (r = ["FlateEncode"]); var c = t.additionalKeyValues || [], l = (u = void 0 !== E.API.processDataByFilters ? E.API.processDataByFilters(e, r) : { data: e, reverseChain: [] }).reverseChain + (Array.isArray(n) ? n.join(" ") : n.toString()); if (0 !== u.data.length && (c.push({ key: "Length", value: u.data.length }), !0 === i && c.push({ key: "Length1", value: a })), 0 != l.length) if (l.split("/").length - 1 == 1) c.push({ key: "Filter", value: l }); else { c.push({ key: "Filter", value: "[" + l + "]" }); for (var h = 0; h < c.length; h += 1) if ("DecodeParms" === c[h].key) { for (var f = [], d = 0; d < u.reverseChain.split("/").length - 1; d += 1) f.push("null"); f.push(c[h].value), c[h].value = "[" + f.join(" ") + "]"; } } lt("<<"); for (var p = 0; p < c.length; p++) lt("/" + c[p].key + " " + c[p].value); lt(">>"), 0 !== u.data.length && (lt("stream"), lt(s(u.data)), lt("endstream")); }, ae = y.__private__.putPage = function(t) { var e = t.number, r = t.data, n = t.objId, i = t.contentsObjId; Zt(n, !0), lt("<>"), lt("endobj"); var a = r.join("\n"); return _ === S && (a += "\nQ"), Zt(i, !0), ie({ data: a, filters: ne(), objectId: i }), lt("endobj"), n; }, oe = y.__private__.putPages = function() { var t, e, r = []; for (t = 1; t <= Et; t++) Rt[t].objId = Kt(), Rt[t].contentsObjId = Kt(); for (t = 1; t <= Et; t++) r.push(ae({ number: t, data: ot[t], objId: Rt[t].objId, contentsObjId: Rt[t].contentsObjId, mediaBox: Rt[t].mediaBox, cropBox: Rt[t].cropBox, bleedBox: Rt[t].bleedBox, trimBox: Rt[t].trimBox, artBox: Rt[t].artBox, userUnit: Rt[t].userUnit, rootDictionaryObjId: Qt, resourceDictionaryObjId: te })); Zt(Qt, !0), lt("<>"), lt("endobj"), Dt.publish("postPutPages"); }, se = function(t) { Dt.publish("putFont", { font: t, out: lt, newObject: Xt, putStream: ie }), !0 !== t.isAlreadyPutted && (t.objectNumber = Xt(), lt("<<"), lt("/Type /Font"), lt("/BaseFont /" + C(t.postScriptName)), lt("/Subtype /Type1"), "string" == typeof t.encoding && lt("/Encoding /" + t.encoding), lt("/FirstChar 32"), lt("/LastChar 255"), lt(">>"), lt("endobj")); }, ue = function(t) { t.objectNumber = Xt(); var e = []; e.push({ key: "Type", value: "/XObject" }), e.push({ key: "Subtype", value: "/Form" }), e.push({ key: "BBox", value: "[" + [ B(t.x), B(t.y), B(t.x + t.width), B(t.y + t.height) ].join(" ") + "]" }), e.push({ key: "Matrix", value: "[" + t.matrix.toString() + "]" }); ie({ data: t.pages[1].join("\n"), additionalKeyValues: e, objectId: t.objectNumber }), lt("endobj"); }, ce = function(t, e) { e || (e = 21); var r = Xt(), n = function(t, e) { var r, n = [], i = 1 / (e - 1); for (r = 0; r < 1; r += i) n.push(r); if (n.push(1), 0 != t[0].offset) { var a = { offset: 0, color: t[0].color }; t.unshift(a); } if (1 != t[t.length - 1].offset) { var o = { offset: 1, color: t[t.length - 1].color }; t.push(o); } for (var s = "", u = 0, c = 0; c < n.length; c++) { for (r = n[c]; r > t[u + 1].offset;) u++; var l = t[u].offset, h = (r - l) / (t[u + 1].offset - l), f = t[u].color, d = t[u + 1].color; s += tt(Math.round((1 - h) * f[0] + h * d[0]).toString(16)) + tt(Math.round((1 - h) * f[1] + h * d[1]).toString(16)) + tt(Math.round((1 - h) * f[2] + h * d[2]).toString(16)); } return s.trim(); }(t.colors, e), i = []; i.push({ key: "FunctionType", value: "0" }), i.push({ key: "Domain", value: "[0.0 1.0]" }), i.push({ key: "Size", value: "[" + e + "]" }), i.push({ key: "BitsPerSample", value: "8" }), i.push({ key: "Range", value: "[0.0 1.0 0.0 1.0 0.0 1.0]" }), i.push({ key: "Decode", value: "[0.0 1.0 0.0 1.0 0.0 1.0]" }), ie({ data: n, additionalKeyValues: i, alreadyAppliedFilters: ["/ASCIIHexDecode"], objectId: r }), lt("endobj"), t.objectNumber = Xt(), lt("<< /ShadingType " + t.type), lt("/ColorSpace /DeviceRGB"); var a = "/Coords [" + B(parseFloat(t.coords[0])) + " " + B(parseFloat(t.coords[1])) + " "; 2 === t.type ? a += B(parseFloat(t.coords[2])) + " " + B(parseFloat(t.coords[3])) : a += B(parseFloat(t.coords[2])) + " " + B(parseFloat(t.coords[3])) + " " + B(parseFloat(t.coords[4])) + " " + B(parseFloat(t.coords[5])), lt(a += "]"), t.matrix && lt("/Matrix [" + t.matrix.toString() + "]"), lt("/Function " + r + " 0 R"), lt("/Extend [true true]"), lt(">>"), lt("endobj"); }, le = function(t, e) { var r = Kt(), n = Xt(); e.push({ resourcesOid: r, objectOid: n }), t.objectNumber = n; var i = []; i.push({ key: "Type", value: "/Pattern" }), i.push({ key: "PatternType", value: "1" }), i.push({ key: "PaintType", value: "1" }), i.push({ key: "TilingType", value: "1" }), i.push({ key: "BBox", value: "[" + t.boundingBox.map(B).join(" ") + "]" }), i.push({ key: "XStep", value: B(t.xStep) }), i.push({ key: "YStep", value: B(t.yStep) }), i.push({ key: "Resources", value: r + " 0 R" }), t.matrix && i.push({ key: "Matrix", value: "[" + t.matrix.toString() + "]" }), ie({ data: t.stream, additionalKeyValues: i, objectId: t.objectNumber }), lt("endobj"); }, he = function(t) { for (var e in t.objectNumber = Xt(), lt("<<"), t) switch (e) { case "opacity": lt("/ca " + T(t[e])); break; case "stroke-opacity": lt("/CA " + T(t[e])); } lt(">>"), lt("endobj"); }, fe = function(t) { Zt(t.resourcesOid, !0), lt("<<"), lt("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"), function() { for (var t in lt("/Font <<"), Ft) Ft.hasOwnProperty(t) && (!1 === v || !0 === v && b.hasOwnProperty(t)) && lt("/" + t + " " + Ft[t].objectNumber + " 0 R"); lt(">>"); }(), function() { if (Object.keys(jt).length > 0) { for (var t in lt("/Shading <<"), jt) jt.hasOwnProperty(t) && jt[t] instanceof M && jt[t].objectNumber >= 0 && lt("/" + t + " " + jt[t].objectNumber + " 0 R"); Dt.publish("putShadingPatternDict"), lt(">>"); } }(), function(t) { if (Object.keys(jt).length > 0) { for (var e in lt("/Pattern <<"), jt) jt.hasOwnProperty(e) && jt[e] instanceof y.TilingPattern && jt[e].objectNumber >= 0 && jt[e].objectNumber < t && lt("/" + e + " " + jt[e].objectNumber + " 0 R"); Dt.publish("putTilingPatternDict"), lt(">>"); } }(t.objectOid), function() { if (Object.keys(Bt).length > 0) { var t; for (t in lt("/ExtGState <<"), Bt) Bt.hasOwnProperty(t) && Bt[t].objectNumber >= 0 && lt("/" + t + " " + Bt[t].objectNumber + " 0 R"); Dt.publish("putGStateDict"), lt(">>"); } }(), function() { for (var t in lt("/XObject <<"), zt) zt.hasOwnProperty(t) && zt[t].objectNumber >= 0 && lt("/" + t + " " + zt[t].objectNumber + " 0 R"); Dt.publish("putXobjectDict"), lt(">>"); }(), lt(">>"), lt("endobj"); }, de = function(t) { It[t.fontName] = It[t.fontName] || {}, It[t.fontName][t.fontStyle] = t.id; }, pe = function(t, e, r, n, i) { var a = { id: "F" + (Object.keys(Ft).length + 1).toString(10), postScriptName: t, fontName: e, fontStyle: r, encoding: n, isStandardFont: i || !1, metadata: {} }; return Dt.publish("addFont", { font: a, instance: this }), Ft[a.id] = a, de(a), a.id; }, ge = y.__private__.pdfEscape = y.pdfEscape = function(t, e) { return function(t, e) { var r, n, i, a, o, s, u, c, l; if (i = (e = e || {}).sourceEncoding || "Unicode", o = e.outputEncoding, (e.autoencode || o) && Ft[At].metadata && Ft[At].metadata[i] && Ft[At].metadata[i].encoding && (a = Ft[At].metadata[i].encoding, !o && Ft[At].encoding && (o = Ft[At].encoding), !o && a.codePages && (o = a.codePages[0]), "string" == typeof o && (o = a[o]), o)) { for (u = !1, s = [], r = 0, n = t.length; r < n; r++) (c = o[t.charCodeAt(r)]) ? s.push(String.fromCharCode(c)) : s.push(t[r]), s[r].charCodeAt(0) >> 8 && (u = !0); t = s.join(""); } for (r = t.length; void 0 === u && 0 !== r;) t.charCodeAt(r - 1) >> 8 && (u = !0), r--; if (!u) return t; for (s = e.noBOM ? [] : [254, 255], r = 0, n = t.length; r < n; r++) { if ((l = (c = t.charCodeAt(r)) >> 8) >> 8) throw new Error("Character at position " + r + " of string '" + t + "' exceeds 16bits. Cannot be encoded into UCS-2 BE"); s.push(l), s.push(c - (l << 8)); } return String.fromCharCode.apply(void 0, s); }(t, e).replace(/\\/g, "\\\\").replace(/\(/g, "\\(").replace(/\)/g, "\\)"); }, me = y.__private__.beginPage = function(t) { ot[++Et] = [], Rt[Et] = { objId: 0, contentsObjId: 0, userUnit: Number(f), artBox: null, bleedBox: null, cropBox: null, trimBox: null, mediaBox: { bottomLeftX: 0, bottomLeftY: 0, topRightX: Number(t[0]), topRightY: Number(t[1]) } }, ye(Et), ct(ot[$]); }, ve = function(t, e) { var r, i, a; switch (n = e || n, "string" == typeof t && (r = x(t.toLowerCase()), Array.isArray(r) && (i = r[0], a = r[1])), Array.isArray(t) && (i = t[0] * St, a = t[1] * St), isNaN(i) && (i = s[0], a = s[1]), (i > 14400 || a > 14400) && (o.warn("A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400"), i = Math.min(14400, i), a = Math.min(14400, a)), s = [i, a], n.substr(0, 1)) { case "l": a > i && (s = [a, i]); break; case "p": i > a && (s = [a, i]); } me(s), Qe(Ze), lt(sr), 0 !== dr && lt(dr + " J"), 0 !== pr && lt(pr + " j"), Dt.publish("addPage", { pageNumber: Et }); }, be = function(t) { t > 0 && t <= Et && (ot.splice(t, 1), Rt.splice(t, 1), Et--, $ > Et && ($ = Et), this.setPage($)); }, ye = function(t) { t > 0 && t <= Et && ($ = t); }, we = y.__private__.getNumberOfPages = y.getNumberOfPages = function() { return ot.length - 1; }, Ne = function(t, e, r) { var n, i = void 0; return r = r || {}, t = void 0 !== t ? t : Ft[At].fontName, e = void 0 !== e ? e : Ft[At].fontStyle, n = t.toLowerCase(), void 0 !== It[n] && void 0 !== It[n][e] ? i = It[n][e] : void 0 !== It[t] && void 0 !== It[t][e] ? i = It[t][e] : !1 === r.disableWarning && o.warn("Unable to look up font label for font '" + t + "', '" + e + "'. Refer to getFontList() for available fonts."), i || r.noFallback || ((i = It.times[e]) ?? (i = It.times.normal)), i; }, Le = y.__private__.putInfo = function() { var t = Xt(), e = function(t) { return t; }; for (var r in null !== m && (e = Oe.encryptor(t, 0)), lt("<<"), lt("/Producer (" + ge(e("jsPDF " + E.version)) + ")"), xt) xt.hasOwnProperty(r) && xt[r] && lt("/" + r.substr(0, 1).toUpperCase() + r.substr(1) + " (" + ge(e(xt[r])) + ")"); lt("/CreationDate (" + ge(e(W)) + ")"), lt(">>"), lt("endobj"); }, xe = y.__private__.putCatalog = function(t) { var e = (t = t || {}).rootDictionaryObjId || Qt; switch (Xt(), lt("<<"), lt("/Type /Catalog"), lt("/Pages " + e + " 0 R"), gt || (gt = "fullwidth"), gt) { case "fullwidth": lt("/OpenAction [3 0 R /FitH null]"); break; case "fullheight": lt("/OpenAction [3 0 R /FitV null]"); break; case "fullpage": lt("/OpenAction [3 0 R /Fit]"); break; case "original": lt("/OpenAction [3 0 R /XYZ null null 1]"); break; default: var r = "" + gt; "%" === r.substr(r.length - 1) && (gt = parseInt(gt) / 100), "number" == typeof gt && lt("/OpenAction [3 0 R /XYZ null null " + T(gt) + "]"); } switch (wt || (wt = "continuous"), wt) { case "continuous": lt("/PageLayout /OneColumn"); break; case "single": lt("/PageLayout /SinglePage"); break; case "two": case "twoleft": lt("/PageLayout /TwoColumnLeft"); break; case "tworight": lt("/PageLayout /TwoColumnRight"); } bt && lt("/PageMode /" + bt), Dt.publish("putCatalog"), lt(">>"), lt("endobj"); }, Ae = y.__private__.putTrailer = function() { lt("trailer"), lt("<<"), lt("/Size " + (et + 1)), lt("/Root " + et + " 0 R"), lt("/Info " + (et - 1) + " 0 R"), null !== m && lt("/Encrypt " + Oe.oid + " 0 R"), lt("/ID [ <" + V + "> <" + V + "> ]"), lt(">>"); }, Se = y.__private__.putHeader = function() { lt("%PDF-" + w), lt("%ºß¬à"); }, _e = y.__private__.putXRef = function() { var t = "0000000000"; lt("xref"), lt("0 " + (et + 1)), lt("0000000000 65535 f "); for (var e = 1; e <= et; e++) "function" == typeof rt[e] ? lt((t + rt[e]()).slice(-10) + " 00000 n ") : void 0 !== rt[e] ? lt((t + rt[e]).slice(-10) + " 00000 n ") : lt("0000000000 00000 n "); }, Pe = y.__private__.buildDocument = function() { var t; et = 0, it = 0, nt = [], rt = [], at = [], Qt = Kt(), te = Kt(), ct(nt), Dt.publish("buildDocument"), Se(), oe(), function() { Dt.publish("putAdditionalObjects"); for (var t = 0; t < at.length; t++) { var e = at[t]; Zt(e.objId, !0), lt(e.content), lt("endobj"); } Dt.publish("postPutAdditionalObjects"); }(), t = [], function() { for (var t in Ft) Ft.hasOwnProperty(t) && (!1 === v || !0 === v && b.hasOwnProperty(t)) && se(Ft[t]); }(), function() { var t; for (t in Bt) Bt.hasOwnProperty(t) && he(Bt[t]); }(), function() { for (var t in zt) zt.hasOwnProperty(t) && ue(zt[t]); }(), function(t) { var e; for (e in jt) jt.hasOwnProperty(e) && (jt[e] instanceof M ? ce(jt[e]) : jt[e] instanceof q && le(jt[e], t)); }(t), Dt.publish("putResources"), t.forEach(fe), fe({ resourcesOid: te, objectOid: Number.MAX_SAFE_INTEGER }), Dt.publish("postPutResources"), null !== m && (Oe.oid = Xt(), lt("<<"), lt("/Filter /Standard"), lt("/V " + Oe.v), lt("/R " + Oe.r), lt("/U <" + Oe.toHexString(Oe.U) + ">"), lt("/O <" + Oe.toHexString(Oe.O) + ">"), lt("/P " + Oe.P), lt(">>"), lt("endobj")), Le(), xe(); var e = it; return _e(), Ae(), lt("startxref"), lt("" + e), lt("%%EOF"), ct(ot[$]), nt.join("\n"); }, ke = y.__private__.getBlob = function(t) { return new Blob([ft(t)], { type: "application/pdf" }); }, Fe = function(t) { for (; t.firstChild;) t.removeChild(t.firstChild); }, Ie = function(t) { var e, r = t.document, n = r.documentElement, i = r.head, a = r.body; return i || (i = r.createElement("head"), n.appendChild(i)), a || (a = r.createElement("body"), n.appendChild(a)), Fe(i), Fe(a), (e = r.createElement("style")).appendChild(r.createTextNode("html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;}")), i.appendChild(e), { document: r, body: a }; }, Ce = y.output = y.__private__.output = (Jt = function(t, e) { switch ("string" == typeof (e = e || {}) ? e = { filename: e } : e.filename = e.filename || "generated.pdf", t) { case void 0: return Pe(); case "save": y.save(e.filename); break; case "arraybuffer": return ft(Pe()); case "blob": return ke(Pe()); case "bloburi": case "bloburl": if (void 0 !== i.URL && "function" == typeof i.URL.createObjectURL) return i.URL && i.URL.createObjectURL(ke(Pe())) || void 0; o.warn("bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser."); break; case "datauristring": case "dataurlstring": var r = "", n = Pe(); try { r = d(n); } catch (L) { r = d(unescape(encodeURIComponent(n))); } return "data:application/pdf;filename=" + encodeURIComponent(e.filename) + ";base64," + r; case "pdfobjectnewwindow": if ("[object Window]" === Object.prototype.toString.call(i)) { var a = "https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js", s = !e.pdfObjectUrl; s || (a = e.pdfObjectUrl); var u = i.open(); if (null !== u) { var c = Ie(u), l = c.document.createElement("script"), h = this; l.src = a, s && (l.integrity = "sha512-4ze/a9/4jqu+tX9dfOqJYSvyYd5M6qum/3HpCLr+/Jqf0whc37VUbkpNGHR7/8pSnCFw47T1fmIpwBV7UySh3g==", l.crossOrigin = "anonymous"), l.onload = function() { u.PDFObject.embed(h.output("dataurlstring"), e); }, c.body.appendChild(l); } return u; } throw new Error("The option pdfobjectnewwindow just works in a browser-environment."); case "pdfjsnewwindow": if ("[object Window]" === Object.prototype.toString.call(i)) { var f = e.pdfJsUrl || "examples/PDF.js/web/viewer.html", p = i.open(); if (null !== p) { var g = Ie(p), m = g.document.createElement("iframe"), v = -1 === f.indexOf("?") ? "?" : "&"; h = this, m.id = "pdfViewer", m.width = "500px", m.height = "400px", m.src = f + v + "file=&downloadName=" + encodeURIComponent(e.filename), m.onload = function() { p.document.title = e.filename, m.contentWindow.PDFViewerApplication.open(h.output("bloburl")); }, g.body.appendChild(m); } return p; } throw new Error("The option pdfjsnewwindow just works in a browser-environment."); case "dataurlnewwindow": if ("[object Window]" !== Object.prototype.toString.call(i)) throw new Error("The option dataurlnewwindow just works in a browser-environment."); var b = i.open(); if (null !== b) { var w = Ie(b), N = w.document.createElement("iframe"); N.src = this.output("datauristring", e), w.body.appendChild(N), b.document.title = e.filename; } if (b || "undefined" == typeof safari) return b; break; case "datauri": case "dataurl": return i.document.location.href = this.output("datauristring", e); default: return null; } }, Jt.foo = function() { try { return Jt.apply(this, arguments); } catch (r) { var t = r.stack || ""; ~t.indexOf(" at ") && (t = t.split(" at ")[1]); var e = "Error in function " + t.split("\n")[0].split("<")[0] + ": " + r.message; if (!i.console) throw new Error(e); i.console.error(e, r), i.alert && alert(e); } }, Jt.foo.bar = Jt, Jt.foo), je = function(t) { return !0 === Array.isArray(Tt) && Tt.indexOf(t) > -1; }; switch (a) { case "pt": St = 1; break; case "mm": St = 72 / 25.4; break; case "cm": St = 72 / 2.54; break; case "in": St = 72; break; case "px": St = 1 == je("px_scaling") ? .75 : 96 / 72; break; case "pc": case "em": St = 12; break; case "ex": St = 6; break; default: if ("number" != typeof a) throw new Error("Invalid unit: " + a); St = a; } var Oe = null; K(), Y(); var Be = y.__private__.getPageInfo = y.getPageInfo = function(t) { if (isNaN(t) || t % 1 != 0) throw new Error("Invalid argument passed to jsPDF.getPageInfo"); return { objId: Rt[t].objId, pageNumber: t, pageContext: Rt[t] }; }, Me = y.__private__.getPageInfoByObjId = function(t) { if (isNaN(t) || t % 1 != 0) throw new Error("Invalid argument passed to jsPDF.getPageInfoByObjId"); for (var e in Rt) if (Rt[e].objId === t) break; return Be(e); }, qe = y.__private__.getCurrentPageInfo = y.getCurrentPageInfo = function() { return { objId: Rt[$].objId, pageNumber: $, pageContext: Rt[$] }; }; y.addPage = function() { return ve.apply(this, arguments), this; }, y.setPage = function() { return ye.apply(this, arguments), ct.call(this, ot[$]), this; }, y.insertPage = function(t) { return this.addPage(), this.movePage($, t), this; }, y.movePage = function(t, e) { var r, n; if (t > e) { r = ot[t], n = Rt[t]; for (var i = t; i > e; i--) ot[i] = ot[i - 1], Rt[i] = Rt[i - 1]; ot[e] = r, Rt[e] = n, this.setPage(e); } else if (t < e) { r = ot[t], n = Rt[t]; for (var a = t; a < e; a++) ot[a] = ot[a + 1], Rt[a] = Rt[a + 1]; ot[e] = r, Rt[e] = n, this.setPage(e); } return this; }, y.deletePage = function() { return be.apply(this, arguments), this; }, y.__private__.text = y.text = function(e, r, n, i, a) { var o, s, u, c, l, h, f, d, p, g = (i = i || {}).scope || this; if ("number" == typeof e && "number" == typeof r && ("string" == typeof n || Array.isArray(n))) { var m = n; n = r, r = e, e = m; } if (arguments[3] instanceof Wt == 0 ? (u = arguments[4], c = arguments[5], "object" === _typeof(f = arguments[3]) && null !== f || ("string" == typeof u && (c = u, u = null), "string" == typeof f && (c = f, f = null), "number" == typeof f && (u = f, f = null), i = { flags: f, angle: u, align: c })) : (R("The transform parameter of text() with a Matrix value"), p = a), isNaN(r) || isNaN(n) || null == e) throw new Error("Invalid arguments passed to jsPDF.text"); if (0 === e.length) return g; var v, y = "", w = "number" == typeof i.lineHeightFactor ? i.lineHeightFactor : Ke, N = g.internal.scaleFactor; function L(t) { return t = t.split(" ").join(Array(i.TabLen || 9).join(" ")), ge(t, f); } function x(t) { for (var e, r = t.concat(), n = [], i = r.length; i--;) "string" == typeof (e = r.shift()) ? n.push(e) : Array.isArray(t) && (1 === e.length || void 0 === e[1] && void 0 === e[2]) ? n.push(e[0]) : n.push([ e[0], e[1], e[2] ]); return n; } function A(t, e) { var r; if ("string" == typeof t) r = e(t)[0]; else if (Array.isArray(t)) { for (var n, i, a = t.concat(), o = [], s = a.length; s--;) "string" == typeof (n = a.shift()) ? o.push(e(n)[0]) : Array.isArray(n) && "string" == typeof n[0] && (i = e(n[0], n[1], n[2]), o.push([ i[0], i[1], i[2] ])); r = o; } return r; } var P = !1, k = !0; if ("string" == typeof e) P = !0; else if (Array.isArray(e)) { var F = e.concat(); s = []; for (var I, C = F.length; C--;) ("string" != typeof (I = F.shift()) || Array.isArray(I) && "string" != typeof I[0]) && (k = !1); P = k; } if (!1 === P) throw new Error("Type of text must be string or Array. \"" + e + "\" is not recognized."); "string" == typeof e && (e = e.match(/[\r?\n]/) ? e.split(/\r\n|\r|\n/g) : [e]); var j = pt / g.internal.scaleFactor, O = j * (w - 1); switch (i.baseline) { case "bottom": n -= O; break; case "top": n += j - O; break; case "hanging": n += j - 2 * O; break; case "middle": n += j / 2 - O; } if ((h = i.maxWidth || 0) > 0 && ("string" == typeof e ? e = g.splitTextToSize(e, h) : "[object Array]" === Object.prototype.toString.call(e) && (e = e.reduce(function(t, e) { return t.concat(g.splitTextToSize(e, h)); }, []))), o = { text: e, x: r, y: n, options: i, mutex: { pdfEscape: ge, activeFontKey: At, fonts: Ft, activeFontSize: pt } }, Dt.publish("preProcessText", o), e = o.text, u = (i = o.options).angle, p instanceof Wt == 0 && u && "number" == typeof u) { u *= Math.PI / 180, 0 === i.rotationDirection && (u = -u), _ === S && (u = -u); var M = Math.cos(u), q = Math.sin(u); p = new Wt(M, q, -q, M, 0, 0); } else u && u instanceof Wt && (p = u); _ !== S || p || (p = Gt), void 0 !== (l = i.charSpace || hr) && (y += B(U(l)) + " Tc\n", this.setCharSpace(this.getCharSpace() || 0)), void 0 !== (d = i.horizontalScale) && (y += B(100 * d) + " Tz\n"), i.lang; var E = -1, D = void 0 !== i.renderingMode ? i.renderingMode : i.stroke, T = g.internal.getCurrentPageInfo().pageContext; switch (D) { case 0: case !1: case "fill": E = 0; break; case 1: case !0: case "stroke": E = 1; break; case 2: case "fillThenStroke": E = 2; break; case 3: case "invisible": E = 3; break; case 4: case "fillAndAddForClipping": E = 4; break; case 5: case "strokeAndAddPathForClipping": E = 5; break; case 6: case "fillThenStrokeAndAddToPathForClipping": E = 6; break; case 7: case "addToPathForClipping": E = 7; } var z = void 0 !== T.usedRenderingMode ? T.usedRenderingMode : -1; -1 !== E ? y += E + " Tr\n" : -1 !== z && (y += "0 Tr\n"), -1 !== E && (T.usedRenderingMode = E), c = i.align || "left"; var H, W = pt * w, V = g.internal.pageSize.getWidth(), G = Ft[At]; l = i.charSpace || hr, h = i.maxWidth || 0, f = Object.assign({ autoencode: !0, noBOM: !0 }, i.flags); var Y = [], J = function(t) { return g.getStringUnitWidth(t, { font: G, charSpace: l, fontSize: pt, doKerning: !1 }) * pt / N; }; if ("[object Array]" === Object.prototype.toString.call(e)) { var X; s = x(e), "left" !== c && (H = s.map(J)); var K, Z = 0; if ("right" === c) { r -= H[0], e = [], C = s.length; for (var $ = 0; $ < C; $++) 0 === $ ? (K = nr(r), X = ir(n)) : (K = U(Z - H[$]), X = -W), e.push([ s[$], K, X ]), Z = H[$]; } else if ("center" === c) { r -= H[0] / 2, e = [], C = s.length; for (var Q = 0; Q < C; Q++) 0 === Q ? (K = nr(r), X = ir(n)) : (K = U((Z - H[Q]) / 2), X = -W), e.push([ s[Q], K, X ]), Z = H[Q]; } else if ("left" === c) { e = [], C = s.length; for (var tt = 0; tt < C; tt++) e.push(s[tt]); } else if ("justify" === c && "Identity-H" === G.encoding) { e = [], C = s.length, h = 0 !== h ? h : V; for (var et = 0, rt = 0; rt < C; rt++) if (X = 0 === rt ? ir(n) : -W, K = 0 === rt ? nr(r) : et, rt < C - 1) { var nt = U((h - H[rt]) / (s[rt].split(" ").length - 1)), it = s[rt].split(" "); e.push([ it[0] + " ", K, X ]), et = 0; for (var at = 1; at < it.length; at++) { var ot = (J(it[at - 1] + " " + it[at]) - J(it[at])) * N + nt; at == it.length - 1 ? e.push([ it[at], ot, 0 ]) : e.push([ it[at] + " ", ot, 0 ]), et -= ot; } } else e.push([ s[rt], K, X ]); e.push([ "", et, 0 ]); } else { if ("justify" !== c) throw new Error("Unrecognized alignment option, use \"left\", \"center\", \"right\" or \"justify\"."); for (e = [], C = s.length, h = 0 !== h ? h : V, rt = 0; rt < C; rt++) { X = 0 === rt ? ir(n) : -W, K = 0 === rt ? nr(r) : 0; var st = s[rt].split(" ").length - 1, ut = st > 0 ? (h - H[rt]) / st : 0; rt < C - 1 ? Y.push(B(U(ut))) : Y.push(0), e.push([ s[rt], K, X ]); } } } !0 === ("boolean" == typeof i.R2L ? i.R2L : vt) && (e = A(e, function(t, e, r) { return [ t.split("").reverse().join(""), e, r ]; })), o = { text: e, x: r, y: n, options: i, mutex: { pdfEscape: ge, activeFontKey: At, fonts: Ft, activeFontSize: pt } }, Dt.publish("postProcessText", o), e = o.text, v = o.mutex.isHex || !1; var ct = Ft[At].encoding; "WinAnsiEncoding" !== ct && "StandardEncoding" !== ct || (e = A(e, function(t, e, r) { return [ L(t), e, r ]; })), s = x(e), e = []; for (var ht, ft, dt, gt = Array.isArray(s[0]) ? 1 : 0, mt = "", bt = function(t, e, r) { var n = ""; return r instanceof Wt ? (r = "number" == typeof i.angle ? Vt(r, new Wt(1, 0, 0, 1, t, e)) : Vt(new Wt(1, 0, 0, 1, t, e), r), _ === S && (r = Vt(new Wt(1, 0, 0, -1, 0, 0), r)), n = r.join(" ") + " Tm\n") : n = B(t) + " " + B(e) + " Td\n", n; }, yt = 0; yt < s.length; yt++) { switch (mt = "", gt) { case 1: dt = (v ? "<" : "(") + s[yt][0] + (v ? ">" : ")"), ht = parseFloat(s[yt][1]), ft = parseFloat(s[yt][2]); break; case 0: dt = (v ? "<" : "(") + s[yt] + (v ? ">" : ")"), ht = nr(r), ft = ir(n); } void 0 !== Y && void 0 !== Y[yt] && (mt = Y[yt] + " Tw\n"), 0 === yt ? e.push(mt + bt(ht, ft, p) + dt) : 0 === gt ? e.push(mt + dt) : 1 === gt && e.push(mt + bt(ht, ft, p) + dt); } e = 0 === gt ? e.join(" Tj\nT* ") : e.join(" Tj\n"), e += " Tj\n"; var wt = "BT\n/"; return wt += At + " " + pt + " Tf\n", wt += B(pt * w) + " TL\n", wt += cr + "\n", wt += y, wt += e, lt(wt += "ET"), b[At] = !0, g; }; var Ee = y.__private__.clip = y.clip = function(t) { return lt("evenodd" === t ? "W*" : "W"), this; }; y.clipEvenOdd = function() { return Ee("evenodd"); }, y.__private__.discardPath = y.discardPath = function() { return lt("n"), this; }; var Re = y.__private__.isValidStyle = function(t) { var e = !1; return -1 !== [ void 0, null, "S", "D", "F", "DF", "FD", "f", "f*", "B", "B*", "n" ].indexOf(t) && (e = !0), e; }; y.__private__.setDefaultPathOperation = y.setDefaultPathOperation = function(t) { return Re(t) && (g = t), this; }; var De = y.__private__.getStyle = y.getStyle = function(t) { var e = g; switch (t) { case "D": case "S": e = "S"; break; case "F": e = "f"; break; case "FD": case "DF": e = "B"; break; case "f": case "f*": case "B": case "B*": e = t; } return e; }, Te = y.close = function() { return lt("h"), this; }; y.stroke = function() { return lt("S"), this; }, y.fill = function(t) { return ze("f", t), this; }, y.fillEvenOdd = function(t) { return ze("f*", t), this; }, y.fillStroke = function(t) { return ze("B", t), this; }, y.fillStrokeEvenOdd = function(t) { return ze("B*", t), this; }; var ze = function(e, r) { "object" === _typeof(r) ? We(r, e) : lt(e); }, Ue = function(t) { null === t || _ === S && void 0 === t || (t = De(t), lt(t)); }; function He(t, e, r, n, i) { var a = new q(e || this.boundingBox, r || this.xStep, n || this.yStep, this.gState, i || this.matrix); a.stream = this.stream; return Yt(t + "$$" + this.cloneIndex++ + "$$", a), a; } var We = function(t, e) { var r = Ot[t.key], n = jt[r]; if (n instanceof M) lt("q"), lt(Ve(e)), n.gState && y.setGState(n.gState), lt(t.matrix.toString() + " cm"), lt("/" + r + " sh"), lt("Q"); else if (n instanceof q) { var i = new Wt(1, 0, 0, -1, 0, Pr()); t.matrix && (i = i.multiply(t.matrix || Gt), r = He.call(n, t.key, t.boundingBox, t.xStep, t.yStep, i).id), lt("q"), lt("/Pattern cs"), lt("/" + r + " scn"), n.gState && y.setGState(n.gState), lt(e), lt("Q"); } }, Ve = function(t) { switch (t) { case "f": case "F": case "n": return "W n"; case "f*": return "W* n"; case "B": case "S": return "W S"; case "B*": return "W* S"; } }, Ge = y.moveTo = function(t, e) { return lt(B(U(t)) + " " + B(H(e)) + " m"), this; }, Ye = y.lineTo = function(t, e) { return lt(B(U(t)) + " " + B(H(e)) + " l"), this; }, Je = y.curveTo = function(t, e, r, n, i, a) { return lt([ B(U(t)), B(H(e)), B(U(r)), B(H(n)), B(U(i)), B(H(a)), "c" ].join(" ")), this; }; y.__private__.line = y.line = function(t, e, r, n, i) { if (isNaN(t) || isNaN(e) || isNaN(r) || isNaN(n) || !Re(i)) throw new Error("Invalid arguments passed to jsPDF.line"); return _ === A ? this.lines([[r - t, n - e]], t, e, [1, 1], i || "S") : this.lines([[r - t, n - e]], t, e, [1, 1]).stroke(); }, y.__private__.lines = y.lines = function(t, e, r, n, i, a) { var o, s, u, c, l, h, f, d, p, g, m, v; if ("number" == typeof t && (v = r, r = e, e = t, t = v), n = n || [1, 1], a = a || !1, isNaN(e) || isNaN(r) || !Array.isArray(t) || !Array.isArray(n) || !Re(i) || "boolean" != typeof a) throw new Error("Invalid arguments passed to jsPDF.lines"); for (Ge(e, r), o = n[0], s = n[1], c = t.length, g = e, m = r, u = 0; u < c; u++) 2 === (l = t[u]).length ? (g = l[0] * o + g, m = l[1] * s + m, Ye(g, m)) : (h = l[0] * o + g, f = l[1] * s + m, d = l[2] * o + g, p = l[3] * s + m, g = l[4] * o + g, m = l[5] * s + m, Je(h, f, d, p, g, m)); return a && Te(), Ue(i), this; }, y.path = function(t) { for (var e = 0; e < t.length; e++) { var r = t[e], n = r.c; switch (r.op) { case "m": Ge(n[0], n[1]); break; case "l": Ye(n[0], n[1]); break; case "c": Je.apply(this, n); break; case "h": Te(); } } return this; }, y.__private__.rect = y.rect = function(t, e, r, n, i) { if (isNaN(t) || isNaN(e) || isNaN(r) || isNaN(n) || !Re(i)) throw new Error("Invalid arguments passed to jsPDF.rect"); return _ === A && (n = -n), lt([ B(U(t)), B(H(e)), B(U(r)), B(U(n)), "re" ].join(" ")), Ue(i), this; }, y.__private__.triangle = y.triangle = function(t, e, r, n, i, a, o) { if (isNaN(t) || isNaN(e) || isNaN(r) || isNaN(n) || isNaN(i) || isNaN(a) || !Re(o)) throw new Error("Invalid arguments passed to jsPDF.triangle"); return this.lines([ [r - t, n - e], [i - r, a - n], [t - i, e - a] ], t, e, [1, 1], o, !0), this; }, y.__private__.roundedRect = y.roundedRect = function(t, e, r, n, i, a, o) { if (isNaN(t) || isNaN(e) || isNaN(r) || isNaN(n) || isNaN(i) || isNaN(a) || !Re(o)) throw new Error("Invalid arguments passed to jsPDF.roundedRect"); var s = 4 / 3 * (Math.SQRT2 - 1); return i = Math.min(i, .5 * r), a = Math.min(a, .5 * n), this.lines([ [r - 2 * i, 0], [ i * s, 0, i, a - a * s, i, a ], [0, n - 2 * a], [ 0, a * s, -i * s, a, -i, a ], [2 * i - r, 0], [ -i * s, 0, -i, -a * s, -i, -a ], [0, 2 * a - n], [ 0, -a * s, i * s, -a, i, -a ] ], t + i, e, [1, 1], o, !0), this; }, y.__private__.ellipse = y.ellipse = function(t, e, r, n, i) { if (isNaN(t) || isNaN(e) || isNaN(r) || isNaN(n) || !Re(i)) throw new Error("Invalid arguments passed to jsPDF.ellipse"); var a = 4 / 3 * (Math.SQRT2 - 1) * r, o = 4 / 3 * (Math.SQRT2 - 1) * n; return Ge(t + r, e), Je(t + r, e - o, t + a, e - n, t, e - n), Je(t - a, e - n, t - r, e - o, t - r, e), Je(t - r, e + o, t - a, e + n, t, e + n), Je(t + a, e + n, t + r, e + o, t + r, e), Ue(i), this; }, y.__private__.circle = y.circle = function(t, e, r, n) { if (isNaN(t) || isNaN(e) || isNaN(r) || !Re(n)) throw new Error("Invalid arguments passed to jsPDF.circle"); return this.ellipse(t, e, r, r, n); }, y.setFont = function(t, e, r) { return r && (e = F(e, r)), At = Ne(t, e, { disableWarning: !1 }), this; }; var Xe = y.__private__.getFont = y.getFont = function() { return Ft[Ne.apply(y, arguments)]; }; y.__private__.getFontList = y.getFontList = function() { var t, e, r = {}; for (t in It) if (It.hasOwnProperty(t)) for (e in r[t] = [], It[t]) It[t].hasOwnProperty(e) && r[t].push(e); return r; }, y.addFont = function(t, e, r, n, i) { var a = [ "StandardEncoding", "MacRomanEncoding", "Identity-H", "WinAnsiEncoding" ]; return arguments[3] && -1 !== a.indexOf(arguments[3]) ? i = arguments[3] : arguments[3] && -1 == a.indexOf(arguments[3]) && (r = F(r, n)), pe.call(this, t, e, r, i = i || "Identity-H"); }; var Ke, Ze = e.lineWidth || .200025, $e = y.__private__.getLineWidth = y.getLineWidth = function() { return Ze; }, Qe = y.__private__.setLineWidth = y.setLineWidth = function(t) { return Ze = t, lt(B(U(t)) + " w"), this; }; y.__private__.setLineDash = E.API.setLineDash = E.API.setLineDashPattern = function(t, e) { if (t = t || [], e = e || 0, isNaN(e) || !Array.isArray(t)) throw new Error("Invalid arguments passed to jsPDF.setLineDash"); return t = t.map(function(t) { return B(U(t)); }).join(" "), e = B(U(e)), lt("[" + t + "] " + e + " d"), this; }; var tr = y.__private__.getLineHeight = y.getLineHeight = function() { return pt * Ke; }; y.__private__.getLineHeight = y.getLineHeight = function() { return pt * Ke; }; var er = y.__private__.setLineHeightFactor = y.setLineHeightFactor = function(t) { return "number" == typeof (t = t || 1.15) && (Ke = t), this; }, rr = y.__private__.getLineHeightFactor = y.getLineHeightFactor = function() { return Ke; }; er(e.lineHeight); var nr = y.__private__.getHorizontalCoordinate = function(t) { return U(t); }, ir = y.__private__.getVerticalCoordinate = function(t) { return _ === S ? t : Rt[$].mediaBox.topRightY - Rt[$].mediaBox.bottomLeftY - U(t); }, ar = y.__private__.getHorizontalCoordinateString = y.getHorizontalCoordinateString = function(t) { return B(nr(t)); }, or = y.__private__.getVerticalCoordinateString = y.getVerticalCoordinateString = function(t) { return B(ir(t)); }, sr = e.strokeColor || "0 G"; y.__private__.getStrokeColor = y.getDrawColor = function() { return ee(sr); }, y.__private__.setStrokeColor = y.setDrawColor = function(t, e, r, n) { return sr = re({ ch1: t, ch2: e, ch3: r, ch4: n, pdfColorType: "draw", precision: 2 }), lt(sr), this; }; var ur = e.fillColor || "0 g"; y.__private__.getFillColor = y.getFillColor = function() { return ee(ur); }, y.__private__.setFillColor = y.setFillColor = function(t, e, r, n) { return ur = re({ ch1: t, ch2: e, ch3: r, ch4: n, pdfColorType: "fill", precision: 2 }), lt(ur), this; }; var cr = e.textColor || "0 g", lr = y.__private__.getTextColor = y.getTextColor = function() { return ee(cr); }; y.__private__.setTextColor = y.setTextColor = function(t, e, r, n) { return cr = re({ ch1: t, ch2: e, ch3: r, ch4: n, pdfColorType: "text", precision: 3 }), this; }; var hr = e.charSpace, fr = y.__private__.getCharSpace = y.getCharSpace = function() { return parseFloat(hr || 0); }; y.__private__.setCharSpace = y.setCharSpace = function(t) { if (isNaN(t)) throw new Error("Invalid argument passed to jsPDF.setCharSpace"); return hr = t, this; }; var dr = 0; y.CapJoinStyles = { 0: 0, butt: 0, but: 0, miter: 0, 1: 1, round: 1, rounded: 1, circle: 1, 2: 2, projecting: 2, project: 2, square: 2, bevel: 2 }, y.__private__.setLineCap = y.setLineCap = function(t) { var e = y.CapJoinStyles[t]; if (void 0 === e) throw new Error("Line cap style of '" + t + "' is not recognized. See or extend .CapJoinStyles property for valid styles"); return dr = e, lt(e + " J"), this; }; var pr = 0; y.__private__.setLineJoin = y.setLineJoin = function(t) { var e = y.CapJoinStyles[t]; if (void 0 === e) throw new Error("Line join style of '" + t + "' is not recognized. See or extend .CapJoinStyles property for valid styles"); return pr = e, lt(e + " j"), this; }, y.__private__.setLineMiterLimit = y.__private__.setMiterLimit = y.setLineMiterLimit = y.setMiterLimit = function(t) { if (t = t || 0, isNaN(t)) throw new Error("Invalid argument passed to jsPDF.setLineMiterLimit"); return lt(B(U(t)) + " M"), this; }, y.GState = O, y.setGState = function(t) { (t = "string" == typeof t ? Bt[Mt[t]] : gr(null, t)).equals(qt) || (lt("/" + t.id + " gs"), qt = t); }; var gr = function(t, e) { if (!t || !Mt[t]) { var r = !1; for (var n in Bt) if (Bt.hasOwnProperty(n) && Bt[n].equals(e)) { r = !0; break; } if (r) e = Bt[n]; else { var i = "GS" + (Object.keys(Bt).length + 1).toString(10); Bt[i] = e, e.id = i; } return t && (Mt[t] = e.id), Dt.publish("addGState", e), e; } }; y.addGState = function(t, e) { return gr(t, e), this; }, y.saveGraphicsState = function() { return lt("q"), Ct.push({ key: At, size: pt, color: cr }), this; }, y.restoreGraphicsState = function() { lt("Q"); var t = Ct.pop(); return At = t.key, pt = t.size, cr = t.color, qt = null, this; }, y.setCurrentTransformationMatrix = function(t) { return lt(t.toString() + " cm"), this; }, y.comment = function(t) { return lt("#" + t), this; }; var mr = function(t, e) { var r = t || 0; Object.defineProperty(this, "x", { enumerable: !0, get: function() { return r; }, set: function(t) { isNaN(t) || (r = parseFloat(t)); } }); var n = e || 0; Object.defineProperty(this, "y", { enumerable: !0, get: function() { return n; }, set: function(t) { isNaN(t) || (n = parseFloat(t)); } }); var i = "pt"; return Object.defineProperty(this, "type", { enumerable: !0, get: function() { return i; }, set: function(t) { i = t.toString(); } }), this; }, vr = function(t, e, r, n) { mr.call(this, t, e), this.type = "rect"; var i = r || 0; Object.defineProperty(this, "w", { enumerable: !0, get: function() { return i; }, set: function(t) { isNaN(t) || (i = parseFloat(t)); } }); var a = n || 0; return Object.defineProperty(this, "h", { enumerable: !0, get: function() { return a; }, set: function(t) { isNaN(t) || (a = parseFloat(t)); } }), this; }, br = function() { this.page = Et, this.currentPage = $, this.pages = ot.slice(0), this.pagesContext = Rt.slice(0), this.x = _t, this.y = Pt, this.matrix = kt, this.width = Nr($), this.height = xr($), this.outputDestination = ut, this.id = "", this.objectNumber = -1; }; br.prototype.restore = function() { Et = this.page, $ = this.currentPage, Rt = this.pagesContext, ot = this.pages, _t = this.x, Pt = this.y, kt = this.matrix, Lr($, this.width), Ar($, this.height), ut = this.outputDestination; }; var yr = function(t, e, r, n, i) { Ht.push(new br()), Et = $ = 0, ot = [], _t = t, Pt = e, kt = i, me([r, n]); }; for (var wr in y.beginFormObject = function(t, e, r, n, i) { return yr(t, e, r, n, i), this; }, y.endFormObject = function(t) { return function(t) { if (Ut[t]) Ht.pop().restore(); else { var e = new br(), r = "Xo" + (Object.keys(zt).length + 1).toString(10); e.id = r, Ut[t] = r, zt[r] = e, Dt.publish("addFormObject", e), Ht.pop().restore(); } }(t), this; }, y.doFormObject = function(t, e) { var r = zt[Ut[t]]; return lt("q"), lt(e.toString() + " cm"), lt("/" + r.id + " Do"), lt("Q"), this; }, y.getFormObject = function(t) { var e = zt[Ut[t]]; return { x: e.x, y: e.y, width: e.width, height: e.height, matrix: e.matrix }; }, y.save = function(t, e) { return t = t || "generated.pdf", (e = e || {}).returnPromise = e.returnPromise || !1, !1 === e.returnPromise ? (l(ke(Pe()), t), "function" == typeof l.unload && i.setTimeout && setTimeout(l.unload, 911), this) : new Promise(function(e, r) { try { var n = l(ke(Pe()), t); "function" == typeof l.unload && i.setTimeout && setTimeout(l.unload, 911), e(n); } catch (a) { r(a.message); } }); }, E.API) E.API.hasOwnProperty(wr) && ("events" === wr && E.API.events.length ? function(t, e) { var r, n, i; for (i = e.length - 1; -1 !== i; i--) r = e[i][0], n = e[i][1], t.subscribe.apply(t, [r].concat("function" == typeof n ? [n] : n)); }(Dt, E.API.events) : y[wr] = E.API[wr]); function Nr(t) { return Rt[t].mediaBox.topRightX - Rt[t].mediaBox.bottomLeftX; } function Lr(t, e) { Rt[t].mediaBox.topRightX = e + Rt[t].mediaBox.bottomLeftX; } function xr(t) { return Rt[t].mediaBox.topRightY - Rt[t].mediaBox.bottomLeftY; } function Ar(t, e) { Rt[t].mediaBox.topRightY = e + Rt[t].mediaBox.bottomLeftY; } var Sr = y.getPageWidth = function(t) { return Nr(t = t || $) / St; }, _r = y.setPageWidth = function(t, e) { Lr(t, e * St); }, Pr = y.getPageHeight = function(t) { return xr(t = t || $) / St; }, kr = y.setPageHeight = function(t, e) { Ar(t, e * St); }; return y.internal = { pdfEscape: ge, getStyle: De, getFont: Xe, getFontSize: mt, getCharSpace: fr, getTextColor: lr, getLineHeight: tr, getLineHeightFactor: rr, getLineWidth: $e, write: ht, getHorizontalCoordinate: nr, getVerticalCoordinate: ir, getCoordinateString: ar, getVerticalCoordinateString: or, collections: {}, newObject: Xt, newAdditionalObject: $t, newObjectDeferred: Kt, newObjectDeferredBegin: Zt, getFilters: ne, putStream: ie, events: Dt, scaleFactor: St, pageSize: { getWidth: function() { return Sr($); }, setWidth: function(t) { _r($, t); }, getHeight: function() { return Pr($); }, setHeight: function(t) { kr($, t); } }, encryptionOptions: m, encryption: Oe, getEncryptor: function(t) { return null !== m ? Oe.encryptor(t, 0) : function(t) { return t; }; }, output: Ce, getNumberOfPages: we, get pages() { return ot; }, out: lt, f2: T, f3: z, getPageInfo: Be, getPageInfoByObjId: Me, getCurrentPageInfo: qe, getPDFVersion: N, Point: mr, Rectangle: vr, Matrix: Wt, hasHotfix: je }, Object.defineProperty(y.internal.pageSize, "width", { get: function() { return Sr($); }, set: function(t) { _r($, t); }, enumerable: !0, configurable: !0 }), Object.defineProperty(y.internal.pageSize, "height", { get: function() { return Pr($); }, set: function(t) { kr($, t); }, enumerable: !0, configurable: !0 }), function(t) { for (var e = 0, r = dt.length; e < r; e++) { var n = pe.call(this, t[e][0], t[e][1], t[e][2], dt[e][3], !0); !1 === v && (b[n] = !0); var i = t[e][0].split("-"); de({ id: n, fontName: i[0], fontStyle: i[1] || "" }); } Dt.publish("addFonts", { fonts: Ft, dictionary: It }); }.call(y, dt), At = "F1", ve(s, n), Dt.publish("initialized"), y; } I.prototype.lsbFirstWord = function(t) { return String.fromCharCode(255 & t, t >> 8 & 255, t >> 16 & 255, t >> 24 & 255); }, I.prototype.toHexString = function(t) { return t.split("").map(function(t) { return ("0" + (255 & t.charCodeAt(0)).toString(16)).slice(-2); }).join(""); }, I.prototype.hexToBytes = function(t) { for (var e = [], r = 0; r < t.length; r += 2) e.push(String.fromCharCode(parseInt(t.substr(r, 2), 16))); return e.join(""); }, I.prototype.processOwnerPassword = function(t, e) { return k(S(e).substr(0, 5), t); }, I.prototype.encryptor = function(t, e) { var r = S(this.encryptionKey + String.fromCharCode(255 & t, t >> 8 & 255, t >> 16 & 255, 255 & e, e >> 8 & 255)).substr(0, 10); return function(t) { return k(r, t); }; }, O.prototype.equals = function(e) { var r, n = "id,objectNumber,equals"; if (!e || _typeof(e) !== _typeof(this)) return !1; var i = 0; for (r in this) if (!(n.indexOf(r) >= 0)) { if (this.hasOwnProperty(r) && !e.hasOwnProperty(r)) return !1; if (this[r] !== e[r]) return !1; i++; } for (r in e) e.hasOwnProperty(r) && n.indexOf(r) < 0 && i--; return 0 === i; }, E.API = { events: [] }, E.version = "4.2.1"; var R = E.API, D = 1, T = function(t) { return t.replace(/\\/g, "\\\\").replace(/\(/g, "\\(").replace(/\)/g, "\\)"); }, z = function(t) { return t.replace(/\\\\/g, "\\").replace(/\\\(/g, "(").replace(/\\\)/g, ")"); }, U = function(t) { return t.toString().replace(/#/g, "#23").replace(/[\s\n\r()<>[\]{}\/%]/g, function(t) { var e = t.charCodeAt(0).toString(16).toUpperCase(); return "#" + (1 === e.length ? "0" + e : e); }); }, H = function(t) { return t.toFixed(2); }, W = function(t) { return t.toFixed(5); }; R.__acroform__ = {}; var V = function(t, e) { t.prototype = Object.create(e.prototype), t.prototype.constructor = t; }, G = function(t) { return t * D; }, Y = function(t) { var e = new lt(), r = At.internal.getHeight(t) || 0, n = At.internal.getWidth(t) || 0; return e.BBox = [ 0, 0, Number(H(n)), Number(H(r)) ], e; }, J = R.__acroform__.setBit = function(t, e) { if (t = t || 0, e = e || 0, isNaN(t) || isNaN(e)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.setBit"); return t | 1 << e; }, X = R.__acroform__.clearBit = function(t, e) { if (t = t || 0, e = e || 0, isNaN(t) || isNaN(e)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.clearBit"); return t & ~(1 << e); }, K = R.__acroform__.getBit = function(t, e) { if (isNaN(t) || isNaN(e)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.getBit"); return t & 1 << e ? 1 : 0; }, Z = R.__acroform__.getBitForPdf = function(t, e) { if (isNaN(t) || isNaN(e)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf"); return K(t, e - 1); }, $ = R.__acroform__.setBitForPdf = function(t, e) { if (isNaN(t) || isNaN(e)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf"); return J(t, e - 1); }, Q = R.__acroform__.clearBitForPdf = function(t, e) { if (isNaN(t) || isNaN(e)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf"); return X(t, e - 1); }, tt = R.__acroform__.calculateCoordinates = function(t, e) { var r = e.internal.getHorizontalCoordinate, n = e.internal.getVerticalCoordinate, i = t[0], a = t[1], o = t[2], s = t[3], u = {}; return u.lowerLeft_X = r(i) || 0, u.lowerLeft_Y = n(a + s) || 0, u.upperRight_X = r(i + o) || 0, u.upperRight_Y = n(a) || 0, [ Number(H(u.lowerLeft_X)), Number(H(u.lowerLeft_Y)), Number(H(u.upperRight_X)), Number(H(u.upperRight_Y)) ]; }, et = function(t) { if (t.appearanceStreamContent) return t.appearanceStreamContent; if (t.V || t.DV) { var e = [], n = rt(t, t._V || t.DV), i = t.scope.internal.getFont(t.fontName, t.fontStyle).id; e.push("/Tx BMC"), e.push("q"), e.push("BT"), e.push(t.scope.__private__.encodeColorString(t.color)), e.push("/" + i + " " + H(n.fontSize) + " Tf"), e.push("1 0 0 1 0 0 Tm"), e.push(n.text), e.push("ET"), e.push("Q"), e.push("EMC"); var a = Y(t); return a.scope = t.scope, a.stream = e.join("\n"), a; } }, rt = function(t, e) { var r = 0 === t.fontSize ? t.maxFontSize : t.fontSize, n = { text: "", fontSize: "" }, i = (e = ")" == (e = "(" == e.substr(0, 1) ? e.substr(1) : e).substr(e.length - 1) ? e.substr(0, e.length - 1) : e).split(" "); i = t.multiline ? i.map(function(t) { return t.split("\n"); }) : i.map(function(t) { return [t]; }); var a = r, o = At.internal.getHeight(t) || 0; o = o < 0 ? -o : o; var s = At.internal.getWidth(t) || 0; s = s < 0 ? -s : s; var u = function(e, r, n) { if (e + 1 < i.length) return nt(r + " " + i[e + 1][0], t, n).width <= s - 4; return !1; }; a++; t: for (; a > 0;) { e = "", a--; var c, l, h = nt("3", t, a).height, f = t.multiline ? o - a : (o - h) / 2, d = f += 2, p = 0, g = 0, m = 0; if (a <= 0) { e = "(...) Tj\n", e += "% Width of Text: " + nt(e, t, a = 12).width + ", FieldWidth:" + s + "\n"; break; } for (var v = "", b = 0, y = 0; y < i.length; y++) if (i.hasOwnProperty(y)) { var w = !1; if (1 !== i[y].length && m !== i[y].length - 1) { if ((h + 2) * (b + 2) + 2 > o) continue t; v += i[y][m], w = !0, g = y, y--; } else { v = " " == (v += i[y][m] + " ").substr(v.length - 1) ? v.substr(0, v.length - 1) : v; var N = parseInt(y), L = u(N, v, a), x = y >= i.length - 1; if (L && !x) { v += " ", m = 0; continue; } if (L || x) { if (x) g = N; else if (t.multiline && (h + 2) * (b + 2) + 2 > o) continue t; } else { if (!t.multiline) continue t; if ((h + 2) * (b + 2) + 2 > o) continue t; g = N; } } for (var A = "", S = p; S <= g; S++) { var _ = i[S]; if (t.multiline) { if (S === g) { A += _[m] + " ", m = (m + 1) % _.length; continue; } if (S === p) { A += _[_.length - 1] + " "; continue; } } A += _[0] + " "; } switch (A = " " == A.substr(A.length - 1) ? A.substr(0, A.length - 1) : A, l = nt(A, t, a).width, t.textAlign) { case "right": c = s - l - 2; break; case "center": c = (s - l) / 2; break; default: c = 2; } e += H(c) + " " + H(d) + " Td\n", e += "(" + T(A) + ") Tj\n", e += -H(c) + " 0 Td\n", d = -(a + 2), l = 0, p = w ? g : g + 1, b++, v = ""; } break; } return n.text = e, n.fontSize = a, n; }, nt = function(t, e, r) { var n = e.scope.internal.getFont(e.fontName, e.fontStyle), i = e.scope.getStringUnitWidth(t, { font: n, fontSize: parseFloat(r), charSpace: 0 }) * parseFloat(r); return { height: e.scope.getStringUnitWidth("3", { font: n, fontSize: parseFloat(r), charSpace: 0 }) * parseFloat(r) * 1.5, width: i }; }, it = { fields: [], xForms: [], acroFormDictionaryRoot: null, printedOut: !1, internal: null, isInitialized: !1 }, at = function(t, e) { var r = { type: "reference", object: t }; void 0 === e.internal.getPageInfo(t.page).pageContext.annotations.find(function(t) { return t.type === r.type && t.object === r.object; }) && e.internal.getPageInfo(t.page).pageContext.annotations.push(r); }, ot = function(e, r) { if (r.scope = e, void 0 !== e.internal && (void 0 === e.internal.acroformPlugin || !1 === e.internal.acroformPlugin.isInitialized)) { if (ft.FieldNum = 0, e.internal.acroformPlugin = JSON.parse(JSON.stringify(it)), e.internal.acroformPlugin.acroFormDictionaryRoot) throw new Error("Exception while creating AcroformDictionary"); D = e.internal.scaleFactor, e.internal.acroformPlugin.acroFormDictionaryRoot = new ht(), e.internal.acroformPlugin.acroFormDictionaryRoot.scope = e, e.internal.acroformPlugin.acroFormDictionaryRoot._eventID = e.internal.events.subscribe("postPutResources", function() { (function(t) { t.internal.events.unsubscribe(t.internal.acroformPlugin.acroFormDictionaryRoot._eventID), delete t.internal.acroformPlugin.acroFormDictionaryRoot._eventID, t.internal.acroformPlugin.printedOut = !0; })(e); }), e.internal.events.subscribe("buildDocument", function() { (function(t) { t.internal.acroformPlugin.acroFormDictionaryRoot.objId = void 0; var e = t.internal.acroformPlugin.acroFormDictionaryRoot.Fields; for (var r in e) if (e.hasOwnProperty(r)) { var n = e[r]; n.objId = void 0, n.hasAnnotation && at(n, t); } })(e); }), e.internal.events.subscribe("putCatalog", function() { (function(t) { if (void 0 === t.internal.acroformPlugin.acroFormDictionaryRoot) throw new Error("putCatalogCallback: Root missing."); t.internal.write("/AcroForm " + t.internal.acroformPlugin.acroFormDictionaryRoot.objId + " 0 R"); })(e); }), e.internal.events.subscribe("postPutPages", function(r) { (function(e, r) { var n = !e; for (var i in e || (r.internal.newObjectDeferredBegin(r.internal.acroformPlugin.acroFormDictionaryRoot.objId, !0), r.internal.acroformPlugin.acroFormDictionaryRoot.putStream()), e = e || r.internal.acroformPlugin.acroFormDictionaryRoot.Kids) if (e.hasOwnProperty(i)) { var a = e[i], o = [], s = a.Rect; if (a.Rect && (a.Rect = tt(a.Rect, r)), r.internal.newObjectDeferredBegin(a.objId, !0), a.DA = At.createDefaultAppearanceStream(a), "object" === _typeof(a) && "function" == typeof a.getKeyValueListForStream && (o = a.getKeyValueListForStream()), a.Rect = s, a.hasAppearanceStream && !a.appearanceStreamContent) { var u = et(a); o.push({ key: "AP", value: "<>" }), r.internal.acroformPlugin.xForms.push(u); } if (a.appearanceStreamContent) { var c = ""; for (var l in a.appearanceStreamContent) if (a.appearanceStreamContent.hasOwnProperty(l)) { var h = a.appearanceStreamContent[l]; if (c += "/" + l + " ", c += "<<", Object.keys(h).length >= 1 || Array.isArray(h)) { for (var i in h) if (h.hasOwnProperty(i)) { var f = h[i]; "function" == typeof f && (f = f.call(r, a)), c += "/" + i + " " + f + " ", r.internal.acroformPlugin.xForms.indexOf(f) >= 0 || r.internal.acroformPlugin.xForms.push(f); } } else "function" == typeof (f = h) && (f = f.call(r, a)), c += "/" + i + " " + f, r.internal.acroformPlugin.xForms.indexOf(f) >= 0 || r.internal.acroformPlugin.xForms.push(f); c += ">>"; } o.push({ key: "AP", value: "<<\n" + c + ">>" }); } r.internal.putStream({ additionalKeyValues: o, objectId: a.objId }), r.internal.out("endobj"); } n && function(e, r) { for (var n in e) if (e.hasOwnProperty(n)) { var i = n, a = e[n]; r.internal.newObjectDeferredBegin(a.objId, !0), "object" === _typeof(a) && "function" == typeof a.putStream && a.putStream(), delete e[i]; } }(r.internal.acroformPlugin.xForms, r); })(r, e); }), e.internal.acroformPlugin.isInitialized = !0; } }, st = R.__acroform__.arrayToPdfArray = function(e, r, n) { var i = function(t) { return t; }; if (Array.isArray(e)) { for (var a = "[", o = 0; o < e.length; o++) switch (0 !== o && (a += " "), _typeof(e[o])) { case "boolean": case "number": case "object": a += e[o].toString(); break; case "string": "/" === e[o].substr(0, 1) ? a += "/" + U(e[o].substr(1)) : (void 0 !== r && n && (i = n.internal.getEncryptor(r)), a += "(" + T(i(e[o].toString())) + ")"); } return a + "]"; } throw new Error("Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray"); }, ut = function(t, e, r) { var n = function(t) { return t; }; return void 0 !== e && r && (n = r.internal.getEncryptor(e)), (t = t || "").toString(), "(" + T(n(t)) + ")"; }, ct = function() { this._objId = void 0, this._scope = void 0, Object.defineProperty(this, "objId", { get: function() { if (void 0 === this._objId) { if (void 0 === this.scope) return; this._objId = this.scope.internal.newObjectDeferred(); } return this._objId; }, set: function(t) { this._objId = t; } }), Object.defineProperty(this, "scope", { value: this._scope, writable: !0 }); }; ct.prototype.toString = function() { return this.objId + " 0 R"; }, ct.prototype.putStream = function() { var t = this.getKeyValueListForStream(); this.scope.internal.putStream({ data: this.stream, additionalKeyValues: t, objectId: this.objId }), this.scope.internal.out("endobj"); }, ct.prototype.getKeyValueListForStream = function() { var t = [], e = Object.getOwnPropertyNames(this).filter(function(t) { return "content" != t && "appearanceStreamContent" != t && "scope" != t && "objId" != t && "_" != t.substring(0, 1); }); for (var r in e) if (!1 === Object.getOwnPropertyDescriptor(this, e[r]).configurable) { var n = e[r], i = this[n]; i && (Array.isArray(i) ? t.push({ key: n, value: st(i, this.objId, this.scope) }) : i instanceof ct ? (i.scope = this.scope, t.push({ key: n, value: i.objId + " 0 R" })) : "function" != typeof i && t.push({ key: n, value: i })); } return t; }; var lt = function() { ct.call(this), Object.defineProperty(this, "Type", { value: "/XObject", configurable: !1, writable: !0 }), Object.defineProperty(this, "Subtype", { value: "/Form", configurable: !1, writable: !0 }), Object.defineProperty(this, "FormType", { value: 1, configurable: !1, writable: !0 }); var t, e = []; Object.defineProperty(this, "BBox", { configurable: !1, get: function() { return e; }, set: function(t) { e = t; } }), Object.defineProperty(this, "Resources", { value: "2 0 R", configurable: !1, writable: !0 }), Object.defineProperty(this, "stream", { enumerable: !1, configurable: !0, set: function(e) { t = e.trim(); }, get: function() { return t || null; } }); }; V(lt, ct); var ht = function() { ct.call(this); var t, e = []; Object.defineProperty(this, "Kids", { enumerable: !1, configurable: !0, get: function() { return e.length > 0 ? e : void 0; } }), Object.defineProperty(this, "Fields", { enumerable: !1, configurable: !1, get: function() { return e; } }), Object.defineProperty(this, "DA", { enumerable: !1, configurable: !1, get: function() { if (t) { var e = function(t) { return t; }; return this.scope && (e = this.scope.internal.getEncryptor(this.objId)), "(" + T(e(t)) + ")"; } }, set: function(e) { t = e; } }); }; V(ht, ct); var ft = function t() { ct.call(this); var e = 4; Object.defineProperty(this, "F", { enumerable: !1, configurable: !1, get: function() { return e; }, set: function(t) { if (isNaN(t)) throw new Error("Invalid value \"" + t + "\" for attribute F supplied."); e = t; } }), Object.defineProperty(this, "showWhenPrinted", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(e, 3)); }, set: function(t) { !0 === Boolean(t) ? this.F = $(e, 3) : this.F = Q(e, 3); } }); var r = 0; Object.defineProperty(this, "Ff", { enumerable: !1, configurable: !1, get: function() { return r; }, set: function(t) { if (isNaN(t)) throw new Error("Invalid value \"" + t + "\" for attribute Ff supplied."); r = t; } }); var n = []; Object.defineProperty(this, "Rect", { enumerable: !1, configurable: !1, get: function() { if (0 !== n.length) return n; }, set: function(t) { n = void 0 !== t ? t : []; } }), Object.defineProperty(this, "x", { enumerable: !0, configurable: !0, get: function() { return !n || isNaN(n[0]) ? 0 : n[0]; }, set: function(t) { n[0] = t; } }), Object.defineProperty(this, "y", { enumerable: !0, configurable: !0, get: function() { return !n || isNaN(n[1]) ? 0 : n[1]; }, set: function(t) { n[1] = t; } }), Object.defineProperty(this, "width", { enumerable: !0, configurable: !0, get: function() { return !n || isNaN(n[2]) ? 0 : n[2]; }, set: function(t) { n[2] = t; } }), Object.defineProperty(this, "height", { enumerable: !0, configurable: !0, get: function() { return !n || isNaN(n[3]) ? 0 : n[3]; }, set: function(t) { n[3] = t; } }); var i = ""; Object.defineProperty(this, "FT", { enumerable: !0, configurable: !1, get: function() { return i; }, set: function(t) { switch (t) { case "/Btn": case "/Tx": case "/Ch": case "/Sig": i = t; break; default: throw new Error("Invalid value \"" + t + "\" for attribute FT supplied."); } } }); var a = null; Object.defineProperty(this, "T", { enumerable: !0, configurable: !1, get: function() { if (!a || a.length < 1) { if (this instanceof wt) return; a = "FieldObject" + t.FieldNum++; } var e = function(t) { return t; }; return this.scope && (e = this.scope.internal.getEncryptor(this.objId)), "(" + T(e(a)) + ")"; }, set: function(t) { a = t.toString(); } }), Object.defineProperty(this, "fieldName", { configurable: !0, enumerable: !0, get: function() { return a; }, set: function(t) { a = t; } }); var o = "helvetica"; Object.defineProperty(this, "fontName", { enumerable: !0, configurable: !0, get: function() { return o; }, set: function(t) { o = t; } }); var s = "normal"; Object.defineProperty(this, "fontStyle", { enumerable: !0, configurable: !0, get: function() { return s; }, set: function(t) { s = t; } }); var u = 0; Object.defineProperty(this, "fontSize", { enumerable: !0, configurable: !0, get: function() { return u; }, set: function(t) { u = t; } }); var c = void 0; Object.defineProperty(this, "maxFontSize", { enumerable: !0, configurable: !0, get: function() { return void 0 === c ? 50 / D : c; }, set: function(t) { c = t; } }); var l = "black"; Object.defineProperty(this, "color", { enumerable: !0, configurable: !0, get: function() { return l; }, set: function(t) { l = t; } }); var h = "/F1 0 Tf 0 g"; Object.defineProperty(this, "DA", { enumerable: !0, configurable: !1, get: function() { if (!(!h || this instanceof wt || this instanceof Lt)) return ut(h, this.objId, this.scope); }, set: function(t) { t = t.toString(), h = t; } }); var f = null; Object.defineProperty(this, "DV", { enumerable: !1, configurable: !1, get: function() { if (f) return this instanceof vt == 0 ? ut(f, this.objId, this.scope) : f; }, set: function(t) { t = t.toString(), f = this instanceof vt == 0 ? "(" === t.substr(0, 1) ? z(t.substr(1, t.length - 2)) : z(t) : t; } }), Object.defineProperty(this, "defaultValue", { enumerable: !0, configurable: !0, get: function() { return this instanceof vt == 1 ? z(f.substr(1, f.length - 1)) : f; }, set: function(t) { t = t.toString(), f = this instanceof vt == 1 ? "/" + U(t) : t; } }); var d = null; Object.defineProperty(this, "_V", { enumerable: !1, configurable: !1, get: function() { if (d) return d; }, set: function(t) { this.V = t; } }), Object.defineProperty(this, "V", { enumerable: !1, configurable: !1, get: function() { if (d) return this instanceof vt == 0 ? ut(d, this.objId, this.scope) : d; }, set: function(t) { t = t.toString(), d = this instanceof vt == 0 ? "(" === t.substr(0, 1) ? z(t.substr(1, t.length - 2)) : z(t) : t; } }), Object.defineProperty(this, "value", { enumerable: !0, configurable: !0, get: function() { return this instanceof vt == 1 ? z(d.substr(1, d.length - 1)) : d; }, set: function(t) { t = t.toString(), d = this instanceof vt == 1 ? "/" + U(t) : t; } }), Object.defineProperty(this, "hasAnnotation", { enumerable: !0, configurable: !0, get: function() { return this.Rect; } }), Object.defineProperty(this, "Type", { enumerable: !0, configurable: !1, get: function() { return this.hasAnnotation ? "/Annot" : null; } }), Object.defineProperty(this, "Subtype", { enumerable: !0, configurable: !1, get: function() { return this.hasAnnotation ? "/Widget" : null; } }); var p, g = !1; Object.defineProperty(this, "hasAppearanceStream", { enumerable: !0, configurable: !0, get: function() { return g; }, set: function(t) { t = Boolean(t), g = t; } }), Object.defineProperty(this, "page", { enumerable: !0, configurable: !0, get: function() { if (p) return p; }, set: function(t) { p = t; } }), Object.defineProperty(this, "readOnly", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 1)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 1) : this.Ff = Q(this.Ff, 1); } }), Object.defineProperty(this, "required", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 2)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 2) : this.Ff = Q(this.Ff, 2); } }), Object.defineProperty(this, "noExport", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 3)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 3) : this.Ff = Q(this.Ff, 3); } }); var m = null; Object.defineProperty(this, "Q", { enumerable: !0, configurable: !1, get: function() { if (null !== m) return m; }, set: function(t) { if (-1 === [ 0, 1, 2 ].indexOf(t)) throw new Error("Invalid value \"" + t + "\" for attribute Q supplied."); m = t; } }), Object.defineProperty(this, "textAlign", { get: function() { var t; switch (m) { case 0: default: t = "left"; break; case 1: t = "center"; break; case 2: t = "right"; } return t; }, configurable: !0, enumerable: !0, set: function(t) { switch (t) { case "right": case 2: m = 2; break; case "center": case 1: m = 1; break; default: m = 0; } } }); }; V(ft, ct); var dt = function() { ft.call(this), this.FT = "/Ch", this.V = "()", this.fontName = "zapfdingbats"; var t = 0; Object.defineProperty(this, "TI", { enumerable: !0, configurable: !1, get: function() { return t; }, set: function(e) { t = e; } }), Object.defineProperty(this, "topIndex", { enumerable: !0, configurable: !0, get: function() { return t; }, set: function(e) { t = e; } }); var e = []; Object.defineProperty(this, "Opt", { enumerable: !0, configurable: !1, get: function() { return st(e, this.objId, this.scope); }, set: function(t) { var r, n = []; "string" == typeof (r = t) && (n = function(t, e, r) { r || (r = 1); for (var n, i = []; n = e.exec(t);) i.push(n[r]); return i; }(r, /\((.*?)\)/g)), e = n; } }), this.getOptions = function() { return e; }, this.setOptions = function(t) { e = t, this.sort && e.sort(); }, this.addOption = function(t) { t = (t = t || "").toString(), e.push(t), this.sort && e.sort(); }, this.removeOption = function(t, r) { for (r = r || !1, t = (t = t || "").toString(); -1 !== e.indexOf(t) && (e.splice(e.indexOf(t), 1), !1 !== r);); }, Object.defineProperty(this, "combo", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 18)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 18) : this.Ff = Q(this.Ff, 18); } }), Object.defineProperty(this, "edit", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 19)); }, set: function(t) { !0 === this.combo && (!0 === Boolean(t) ? this.Ff = $(this.Ff, 19) : this.Ff = Q(this.Ff, 19)); } }), Object.defineProperty(this, "sort", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 20)); }, set: function(t) { !0 === Boolean(t) ? (this.Ff = $(this.Ff, 20), e.sort()) : this.Ff = Q(this.Ff, 20); } }), Object.defineProperty(this, "multiSelect", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 22)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 22) : this.Ff = Q(this.Ff, 22); } }), Object.defineProperty(this, "doNotSpellCheck", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 23)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 23) : this.Ff = Q(this.Ff, 23); } }), Object.defineProperty(this, "commitOnSelChange", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 27)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 27) : this.Ff = Q(this.Ff, 27); } }), this.hasAppearanceStream = !1; }; V(dt, ft); var pt = function() { dt.call(this), this.fontName = "helvetica", this.combo = !1; }; V(pt, dt); var gt = function() { pt.call(this), this.combo = !0; }; V(gt, pt); var mt = function() { gt.call(this), this.edit = !0; }; V(mt, gt); var vt = function() { ft.call(this), this.FT = "/Btn", Object.defineProperty(this, "noToggleToOff", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 15)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 15) : this.Ff = Q(this.Ff, 15); } }), Object.defineProperty(this, "radio", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 16)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 16) : this.Ff = Q(this.Ff, 16); } }), Object.defineProperty(this, "pushButton", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 17)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 17) : this.Ff = Q(this.Ff, 17); } }), Object.defineProperty(this, "radioIsUnison", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 26)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 26) : this.Ff = Q(this.Ff, 26); } }); var e, r = {}; Object.defineProperty(this, "MK", { enumerable: !1, configurable: !1, get: function() { var t = function(t) { return t; }; if (this.scope && (t = this.scope.internal.getEncryptor(this.objId)), 0 !== Object.keys(r).length) { var e, n = []; for (e in n.push("<<"), r) n.push("/" + e + " (" + T(t(r[e])) + ")"); return n.push(">>"), n.join("\n"); } }, set: function(e) { "object" === _typeof(e) && (r = e); } }), Object.defineProperty(this, "caption", { enumerable: !0, configurable: !0, get: function() { return r.CA || ""; }, set: function(t) { "string" == typeof t && (r.CA = t); } }), Object.defineProperty(this, "AS", { enumerable: !1, configurable: !1, get: function() { return e; }, set: function(t) { var r = null == t ? "" : t.toString(); "/" === r.substr(0, 1) && (r = r.substr(1)), e = "/" + U(r); } }), Object.defineProperty(this, "appearanceState", { enumerable: !0, configurable: !0, get: function() { return e.substr(1, e.length - 1); }, set: function(t) { e = "/" + U(t); } }); }; V(vt, ft); var bt = function() { vt.call(this), this.pushButton = !0; }; V(bt, vt); var yt = function() { vt.call(this), this.radio = !0, this.pushButton = !1; var t = []; Object.defineProperty(this, "Kids", { enumerable: !0, configurable: !1, get: function() { return t; }, set: function(e) { t = void 0 !== e ? e : []; } }); }; V(yt, vt); var wt = function() { var e, r; ft.call(this), Object.defineProperty(this, "Parent", { enumerable: !1, configurable: !1, get: function() { return e; }, set: function(t) { e = t; } }), Object.defineProperty(this, "optionName", { enumerable: !1, configurable: !0, get: function() { return r; }, set: function(t) { r = t; } }); var n, i = {}; Object.defineProperty(this, "MK", { enumerable: !1, configurable: !1, get: function() { var t = function(t) { return t; }; this.scope && (t = this.scope.internal.getEncryptor(this.objId)); var e, r = []; for (e in r.push("<<"), i) r.push("/" + e + " (" + T(t(i[e])) + ")"); return r.push(">>"), r.join("\n"); }, set: function(e) { "object" === _typeof(e) && (i = e); } }), Object.defineProperty(this, "caption", { enumerable: !0, configurable: !0, get: function() { return i.CA || ""; }, set: function(t) { "string" == typeof t && (i.CA = t); } }), Object.defineProperty(this, "AS", { enumerable: !1, configurable: !1, get: function() { return n; }, set: function(t) { var e = null == t ? "" : t.toString(); "/" === e.substr(0, 1) && (e = e.substr(1)), n = "/" + U(e); } }), Object.defineProperty(this, "appearanceState", { enumerable: !0, configurable: !0, get: function() { return n.substr(1, n.length - 1); }, set: function(t) { var e = null == t ? "" : t.toString(); "/" === e.substr(0, 1) && (e = e.substr(1)), n = "/" + U(e); } }), this.caption = "l", this.appearanceState = "Off", this._AppearanceType = At.RadioButton.Circle, this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(this.optionName); }; V(wt, ft), yt.prototype.setAppearance = function(t) { if (!("createAppearanceStream" in t) || !("getCA" in t)) throw new Error("Couldn't assign Appearance to RadioButton. Appearance was Invalid!"); for (var e in this.Kids) if (this.Kids.hasOwnProperty(e)) { var r = this.Kids[e]; r.appearanceStreamContent = t.createAppearanceStream(r.optionName), r.caption = t.getCA(); } }, yt.prototype.createOption = function(t) { var e = new wt(); return e.Parent = this, e.optionName = t, this.Kids.push(e), St.call(this.scope, e), e; }; var Nt = function() { vt.call(this), this.fontName = "zapfdingbats", this.caption = "3", this.appearanceState = "On", this.value = "On", this.textAlign = "center", this.appearanceStreamContent = At.CheckBox.createAppearanceStream(); }; V(Nt, vt); var Lt = function() { ft.call(this), this.FT = "/Tx", Object.defineProperty(this, "multiline", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 13)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 13) : this.Ff = Q(this.Ff, 13); } }), Object.defineProperty(this, "fileSelect", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 21)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 21) : this.Ff = Q(this.Ff, 21); } }), Object.defineProperty(this, "doNotSpellCheck", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 23)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 23) : this.Ff = Q(this.Ff, 23); } }), Object.defineProperty(this, "doNotScroll", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 24)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 24) : this.Ff = Q(this.Ff, 24); } }), Object.defineProperty(this, "comb", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 25)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 25) : this.Ff = Q(this.Ff, 25); } }), Object.defineProperty(this, "richText", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 26)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 26) : this.Ff = Q(this.Ff, 26); } }); var t = null; Object.defineProperty(this, "MaxLen", { enumerable: !0, configurable: !1, get: function() { return t; }, set: function(e) { t = e; } }), Object.defineProperty(this, "maxLength", { enumerable: !0, configurable: !0, get: function() { return t; }, set: function(e) { Number.isInteger(e) && (t = e); } }), Object.defineProperty(this, "hasAppearanceStream", { enumerable: !0, configurable: !0, get: function() { return this.V || this.DV; } }); }; V(Lt, ft); var xt = function() { Lt.call(this), Object.defineProperty(this, "password", { enumerable: !0, configurable: !0, get: function() { return Boolean(Z(this.Ff, 14)); }, set: function(t) { !0 === Boolean(t) ? this.Ff = $(this.Ff, 14) : this.Ff = Q(this.Ff, 14); } }), this.password = !0; }; V(xt, Lt); var At = { CheckBox: { createAppearanceStream: function() { return { N: { On: At.CheckBox.YesNormal }, D: { On: At.CheckBox.YesPushDown, Off: At.CheckBox.OffPushDown } }; }, YesPushDown: function(t) { var e = Y(t); e.scope = t.scope; var r = [], n = t.scope.internal.getFont(t.fontName, t.fontStyle).id, i = t.scope.__private__.encodeColorString(t.color), a = rt(t, t.caption); return r.push("0.749023 g"), r.push("0 0 " + H(At.internal.getWidth(t)) + " " + H(At.internal.getHeight(t)) + " re"), r.push("f"), r.push("BMC"), r.push("q"), r.push("0 0 1 rg"), r.push("/" + n + " " + H(a.fontSize) + " Tf " + i), r.push("BT"), r.push(a.text), r.push("ET"), r.push("Q"), r.push("EMC"), e.stream = r.join("\n"), e; }, YesNormal: function(t) { var e = Y(t); e.scope = t.scope; var r = t.scope.internal.getFont(t.fontName, t.fontStyle).id, n = t.scope.__private__.encodeColorString(t.color), i = [], a = At.internal.getHeight(t), o = At.internal.getWidth(t), s = rt(t, t.caption); return i.push("1 g"), i.push("0 0 " + H(o) + " " + H(a) + " re"), i.push("f"), i.push("q"), i.push("0 0 1 rg"), i.push("0 0 " + H(o - 1) + " " + H(a - 1) + " re"), i.push("W"), i.push("n"), i.push("0 g"), i.push("BT"), i.push("/" + r + " " + H(s.fontSize) + " Tf " + n), i.push(s.text), i.push("ET"), i.push("Q"), e.stream = i.join("\n"), e; }, OffPushDown: function(t) { var e = Y(t); e.scope = t.scope; var r = []; return r.push("0.749023 g"), r.push("0 0 " + H(At.internal.getWidth(t)) + " " + H(At.internal.getHeight(t)) + " re"), r.push("f"), e.stream = r.join("\n"), e; } }, RadioButton: { Circle: { createAppearanceStream: function(t) { var e = { D: { Off: At.RadioButton.Circle.OffPushDown }, N: {} }; return e.N[t] = At.RadioButton.Circle.YesNormal, e.D[t] = At.RadioButton.Circle.YesPushDown, e; }, getCA: function() { return "l"; }, YesNormal: function(t) { var e = Y(t); e.scope = t.scope; var r = [], n = At.internal.getWidth(t) <= At.internal.getHeight(t) ? At.internal.getWidth(t) / 4 : At.internal.getHeight(t) / 4; n = Number((.9 * n).toFixed(5)); var i = At.internal.Bezier_C, a = Number((n * i).toFixed(5)); return r.push("q"), r.push("1 0 0 1 " + W(At.internal.getWidth(t) / 2) + " " + W(At.internal.getHeight(t) / 2) + " cm"), r.push(n + " 0 m"), r.push(n + " " + a + " " + a + " " + n + " 0 " + n + " c"), r.push("-" + a + " " + n + " -" + n + " " + a + " -" + n + " 0 c"), r.push("-" + n + " -" + a + " -" + a + " -" + n + " 0 -" + n + " c"), r.push(a + " -" + n + " " + n + " -" + a + " " + n + " 0 c"), r.push("f"), r.push("Q"), e.stream = r.join("\n"), e; }, YesPushDown: function(t) { var e = Y(t); e.scope = t.scope; var r = [], n = At.internal.getWidth(t) <= At.internal.getHeight(t) ? At.internal.getWidth(t) / 4 : At.internal.getHeight(t) / 4; n = Number((.9 * n).toFixed(5)); var i = Number((2 * n).toFixed(5)), a = Number((i * At.internal.Bezier_C).toFixed(5)), o = Number((n * At.internal.Bezier_C).toFixed(5)); return r.push("0.749023 g"), r.push("q"), r.push("1 0 0 1 " + W(At.internal.getWidth(t) / 2) + " " + W(At.internal.getHeight(t) / 2) + " cm"), r.push(i + " 0 m"), r.push(i + " " + a + " " + a + " " + i + " 0 " + i + " c"), r.push("-" + a + " " + i + " -" + i + " " + a + " -" + i + " 0 c"), r.push("-" + i + " -" + a + " -" + a + " -" + i + " 0 -" + i + " c"), r.push(a + " -" + i + " " + i + " -" + a + " " + i + " 0 c"), r.push("f"), r.push("Q"), r.push("0 g"), r.push("q"), r.push("1 0 0 1 " + W(At.internal.getWidth(t) / 2) + " " + W(At.internal.getHeight(t) / 2) + " cm"), r.push(n + " 0 m"), r.push(n + " " + o + " " + o + " " + n + " 0 " + n + " c"), r.push("-" + o + " " + n + " -" + n + " " + o + " -" + n + " 0 c"), r.push("-" + n + " -" + o + " -" + o + " -" + n + " 0 -" + n + " c"), r.push(o + " -" + n + " " + n + " -" + o + " " + n + " 0 c"), r.push("f"), r.push("Q"), e.stream = r.join("\n"), e; }, OffPushDown: function(t) { var e = Y(t); e.scope = t.scope; var r = [], n = At.internal.getWidth(t) <= At.internal.getHeight(t) ? At.internal.getWidth(t) / 4 : At.internal.getHeight(t) / 4; n = Number((.9 * n).toFixed(5)); var i = Number((2 * n).toFixed(5)), a = Number((i * At.internal.Bezier_C).toFixed(5)); return r.push("0.749023 g"), r.push("q"), r.push("1 0 0 1 " + W(At.internal.getWidth(t) / 2) + " " + W(At.internal.getHeight(t) / 2) + " cm"), r.push(i + " 0 m"), r.push(i + " " + a + " " + a + " " + i + " 0 " + i + " c"), r.push("-" + a + " " + i + " -" + i + " " + a + " -" + i + " 0 c"), r.push("-" + i + " -" + a + " -" + a + " -" + i + " 0 -" + i + " c"), r.push(a + " -" + i + " " + i + " -" + a + " " + i + " 0 c"), r.push("f"), r.push("Q"), e.stream = r.join("\n"), e; } }, Cross: { createAppearanceStream: function(t) { var e = { D: { Off: At.RadioButton.Cross.OffPushDown }, N: {} }; return e.N[t] = At.RadioButton.Cross.YesNormal, e.D[t] = At.RadioButton.Cross.YesPushDown, e; }, getCA: function() { return "8"; }, YesNormal: function(t) { var e = Y(t); e.scope = t.scope; var r = [], n = At.internal.calculateCross(t); return r.push("q"), r.push("1 1 " + H(At.internal.getWidth(t) - 2) + " " + H(At.internal.getHeight(t) - 2) + " re"), r.push("W"), r.push("n"), r.push(H(n.x1.x) + " " + H(n.x1.y) + " m"), r.push(H(n.x2.x) + " " + H(n.x2.y) + " l"), r.push(H(n.x4.x) + " " + H(n.x4.y) + " m"), r.push(H(n.x3.x) + " " + H(n.x3.y) + " l"), r.push("s"), r.push("Q"), e.stream = r.join("\n"), e; }, YesPushDown: function(t) { var e = Y(t); e.scope = t.scope; var r = At.internal.calculateCross(t), n = []; return n.push("0.749023 g"), n.push("0 0 " + H(At.internal.getWidth(t)) + " " + H(At.internal.getHeight(t)) + " re"), n.push("f"), n.push("q"), n.push("1 1 " + H(At.internal.getWidth(t) - 2) + " " + H(At.internal.getHeight(t) - 2) + " re"), n.push("W"), n.push("n"), n.push(H(r.x1.x) + " " + H(r.x1.y) + " m"), n.push(H(r.x2.x) + " " + H(r.x2.y) + " l"), n.push(H(r.x4.x) + " " + H(r.x4.y) + " m"), n.push(H(r.x3.x) + " " + H(r.x3.y) + " l"), n.push("s"), n.push("Q"), e.stream = n.join("\n"), e; }, OffPushDown: function(t) { var e = Y(t); e.scope = t.scope; var r = []; return r.push("0.749023 g"), r.push("0 0 " + H(At.internal.getWidth(t)) + " " + H(At.internal.getHeight(t)) + " re"), r.push("f"), e.stream = r.join("\n"), e; } } }, createDefaultAppearanceStream: function(t) { var e = t.scope.internal.getFont(t.fontName, t.fontStyle).id, r = t.scope.__private__.encodeColorString(t.color); return "/" + e + " " + t.fontSize + " Tf " + r; } }; At.internal = { Bezier_C: .551915024494, calculateCross: function(t) { var e = At.internal.getWidth(t), r = At.internal.getHeight(t), n = Math.min(e, r); return { x1: { x: (e - n) / 2, y: (r - n) / 2 + n }, x2: { x: (e - n) / 2 + n, y: (r - n) / 2 }, x3: { x: (e - n) / 2, y: (r - n) / 2 }, x4: { x: (e - n) / 2 + n, y: (r - n) / 2 + n } }; } }, At.internal.getWidth = function(e) { var r = 0; return "object" === _typeof(e) && (r = G(e.Rect[2])), r; }, At.internal.getHeight = function(e) { var r = 0; return "object" === _typeof(e) && (r = G(e.Rect[3])), r; }; var St = R.addField = function(t) { if (ot(this, t), !(t instanceof ft)) throw new Error("Invalid argument passed to jsPDF.addField."); var e; return (e = t).scope.internal.acroformPlugin.printedOut && (e.scope.internal.acroformPlugin.printedOut = !1, e.scope.internal.acroformPlugin.acroFormDictionaryRoot = null), e.scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(e), t.page = t.scope.internal.getCurrentPageInfo().pageNumber, this; }; R.AcroFormChoiceField = dt, R.AcroFormListBox = pt, R.AcroFormComboBox = gt, R.AcroFormEditBox = mt, R.AcroFormButton = vt, R.AcroFormPushButton = bt, R.AcroFormRadioButton = yt, R.AcroFormCheckBox = Nt, R.AcroFormTextField = Lt, R.AcroFormPasswordField = xt, R.AcroFormAppearance = At, R.AcroForm = { ChoiceField: dt, ListBox: pt, ComboBox: gt, EditBox: mt, Button: vt, PushButton: bt, RadioButton: yt, CheckBox: Nt, TextField: Lt, PasswordField: xt, Appearance: At }, E.AcroForm = { ChoiceField: dt, ListBox: pt, ComboBox: gt, EditBox: mt, Button: vt, PushButton: bt, RadioButton: yt, CheckBox: Nt, TextField: Lt, PasswordField: xt, Appearance: At }; var _t = E.AcroForm; function Pt(t) { return t.reduce(function(t, e, r) { return t[e] = r, t; }, {}); } (function(e) { var r = "addImage_"; e.__addimage__ = {}; var n = "UNKNOWN", i = { PNG: [[ 137, 80, 78, 71 ]], TIFF: [[ 77, 77, 0, 42 ], [ 73, 73, 42, 0 ]], JPEG: [ [ 255, 216, 255, 224, void 0, void 0, 74, 70, 73, 70, 0 ], [ 255, 216, 255, 225, void 0, void 0, 69, 120, 105, 102, 0, 0 ], [ 255, 216, 255, 219 ], [ 255, 216, 255, 238 ] ], JPEG2000: [[ 0, 0, 0, 12, 106, 80, 32, 32 ]], GIF87a: [[ 71, 73, 70, 56, 55, 97 ]], GIF89a: [[ 71, 73, 70, 56, 57, 97 ]], WEBP: [[ 82, 73, 70, 70, void 0, void 0, void 0, void 0, 87, 69, 66, 80 ]], BMP: [ [66, 77], [66, 65], [67, 73], [67, 80], [73, 67], [80, 84] ] }, a = e.__addimage__.getImageFileTypeByImageData = function(t, e) { var r, a, o, s, u, c = n; if ("RGBA" === (e = e || n) || void 0 !== t.data && t.data instanceof Uint8ClampedArray && "height" in t && "width" in t) return "RGBA"; if (A(t)) for (u in i) for (o = i[u], r = 0; r < o.length; r += 1) { for (s = !0, a = 0; a < o[r].length; a += 1) if (void 0 !== o[r][a] && o[r][a] !== t[a]) { s = !1; break; } if (!0 === s) { c = u; break; } } else for (u in i) for (o = i[u], r = 0; r < o.length; r += 1) { for (s = !0, a = 0; a < o[r].length; a += 1) if (void 0 !== o[r][a] && o[r][a] !== t.charCodeAt(a)) { s = !1; break; } if (!0 === s) { c = u; break; } } return c === n && e !== n && (c = e), c; }, o = function t(e) { for (var r = this.internal.write, n = this.internal.putStream, i = (0, this.internal.getFilters)(); -1 !== i.indexOf("FlateEncode");) i.splice(i.indexOf("FlateEncode"), 1); e.objectId = this.internal.newObject(); var a = []; if (a.push({ key: "Type", value: "/XObject" }), a.push({ key: "Subtype", value: "/Image" }), a.push({ key: "Width", value: e.width }), a.push({ key: "Height", value: e.height }), e.colorSpace === y.INDEXED ? a.push({ key: "ColorSpace", value: "[/Indexed /DeviceRGB " + (e.palette.length / 3 - 1) + " " + ("sMask" in e && void 0 !== e.sMask ? e.objectId + 2 : e.objectId + 1) + " 0 R]" }) : (a.push({ key: "ColorSpace", value: "/" + e.colorSpace }), e.colorSpace === y.DEVICE_CMYK && a.push({ key: "Decode", value: "[1 0 1 0 1 0 1 0]" })), a.push({ key: "BitsPerComponent", value: e.bitsPerComponent }), "decodeParameters" in e && void 0 !== e.decodeParameters && a.push({ key: "DecodeParms", value: "<<" + e.decodeParameters + ">>" }), "transparency" in e && Array.isArray(e.transparency) && e.transparency.length > 0) { for (var o = "", s = 0, u = e.transparency.length; s < u; s++) o += e.transparency[s] + " " + e.transparency[s] + " "; a.push({ key: "Mask", value: "[" + o + "]" }); } void 0 !== e.sMask && a.push({ key: "SMask", value: e.objectId + 1 + " 0 R" }); var c = void 0 !== e.filter ? ["/" + e.filter] : void 0; if (n({ data: e.data, additionalKeyValues: a, alreadyAppliedFilters: c, objectId: e.objectId }), r("endobj"), "sMask" in e && void 0 !== e.sMask) { var l, h = null !== (l = e.sMaskBitsPerComponent) && void 0 !== l ? l : e.bitsPerComponent, f = { width: e.width, height: e.height, colorSpace: "DeviceGray", bitsPerComponent: h, data: e.sMask }; "filter" in e && (f.decodeParameters = "/Predictor ".concat(e.predictor, " /Colors 1 /BitsPerComponent ").concat(h, " /Columns ").concat(e.width), f.filter = e.filter), t.call(this, f); } if (e.colorSpace === y.INDEXED) { var d = this.internal.newObject(); n({ data: _(new Uint8Array(e.palette)), objectId: d }), r("endobj"); } }, s = function() { var t = this.internal.collections[r + "images"]; for (var e in t) o.call(this, t[e]); }, u = function() { var t, e = this.internal.collections[r + "images"], n = this.internal.write; for (var i in e) n("/I" + (t = e[i]).index, t.objectId, "0", "R"); }, c = function() { this.internal.collections[r + "images"] || (this.internal.collections[r + "images"] = {}, this.internal.events.subscribe("putResources", s), this.internal.events.subscribe("putXobjectDict", u)); }, l = function() { var t = this.internal.collections[r + "images"]; return c.call(this), t; }, h = function() { return Object.keys(this.internal.collections[r + "images"]).length; }, d = function(t) { return "function" == typeof e["process" + t.toUpperCase()]; }, p = function(e) { return "object" === _typeof(e) && 1 === e.nodeType; }, g = function(t, r) { if ("IMG" === t.nodeName && t.hasAttribute("src")) { var n = "" + t.getAttribute("src"); if (0 === n.indexOf("data:image/")) return f(unescape(n).split("base64,").pop()); var i = e.loadFile(n, !0); if (void 0 !== i) return i; } if ("CANVAS" === t.nodeName) { if (0 === t.width || 0 === t.height) throw new Error("Given canvas must have data. Canvas width: " + t.width + ", height: " + t.height); var a; switch (r) { case "PNG": a = "image/png"; break; case "WEBP": a = "image/webp"; break; default: a = "image/jpeg"; } return f(t.toDataURL(a, 1).split("base64,").pop()); } }, m = function(t) { var e = this.internal.collections[r + "images"]; if (e) { for (var n in e) if (t === e[n].alias) return e[n]; } }, v = function(t, e, r) { return t || e || (t = -96, e = -96), t < 0 && (t = -1 * r.width * 72 / t / this.internal.scaleFactor), e < 0 && (e = -1 * r.height * 72 / e / this.internal.scaleFactor), 0 === t && (t = e * r.width / r.height), 0 === e && (e = t * r.height / r.width), [t, e]; }, b = function(t, e, r, n, i, a) { var o = v.call(this, r, n, i), s = this.internal.getCoordinateString, u = this.internal.getVerticalCoordinateString, c = l.call(this); if (r = o[0], n = o[1], c[i.index] = i, a) { a *= Math.PI / 180; var h = Math.cos(a), f = Math.sin(a), d = function(t) { return t.toFixed(4); }, p = [ d(h), d(f), d(-1 * f), d(h), 0, 0, "cm" ]; } this.internal.write("q"), a ? (this.internal.write([ 1, "0", "0", 1, s(t), u(e + n), "cm" ].join(" ")), this.internal.write(p.join(" ")), this.internal.write([ s(r), "0", "0", s(n), "0", "0", "cm" ].join(" "))) : this.internal.write([ s(r), "0", "0", s(n), s(t), u(e + n), "cm" ].join(" ")), this.isAdvancedAPI() && this.internal.write([ 1, 0, 0, -1, 0, 0, "cm" ].join(" ")), this.internal.write("/I" + i.index + " Do"), this.internal.write("Q"); }, y = e.color_spaces = { DEVICE_RGB: "DeviceRGB", DEVICE_GRAY: "DeviceGray", DEVICE_CMYK: "DeviceCMYK", CAL_GREY: "CalGray", CAL_RGB: "CalRGB", LAB: "Lab", ICC_BASED: "ICCBased", INDEXED: "Indexed", PATTERN: "Pattern", SEPARATION: "Separation", DEVICE_N: "DeviceN" }; e.decode = { DCT_DECODE: "DCTDecode", FLATE_DECODE: "FlateDecode", LZW_DECODE: "LZWDecode", JPX_DECODE: "JPXDecode", JBIG2_DECODE: "JBIG2Decode", ASCII85_DECODE: "ASCII85Decode", ASCII_HEX_DECODE: "ASCIIHexDecode", RUN_LENGTH_DECODE: "RunLengthDecode", CCITT_FAX_DECODE: "CCITTFaxDecode" }; var w = e.image_compression = { NONE: "NONE", FAST: "FAST", MEDIUM: "MEDIUM", SLOW: "SLOW" }, N = e.__addimage__.sHashCode = function(t) { var e, r, n = 0; if ("string" == typeof t) for (r = t.length, e = 0; e < r; e++) n = (n << 5) - n + t.charCodeAt(e), n |= 0; else if (A(t)) for (r = t.byteLength / 2, e = 0; e < r; e++) n = (n << 5) - n + t[e], n |= 0; return n; }, L = e.__addimage__.validateStringAsBase64 = function(t) { (t = t || "").toString().trim(); var e = !0; return 0 === t.length && (e = !1), t.length % 4 != 0 && (e = !1), !1 === /^[A-Za-z0-9+/]+$/.test(t.substr(0, t.length - 2)) && (e = !1), !1 === /^[A-Za-z0-9/][A-Za-z0-9+/]|[A-Za-z0-9+/]=|==$/.test(t.substr(-2)) && (e = !1), e; }, x = e.__addimage__.extractImageFromDataUrl = function(t) { if (null == t) return null; if (!(t = t.trim()).startsWith("data:")) return null; var e = t.indexOf(","); return e < 0 ? null : t.substring(0, e).trim().endsWith("base64") ? t.substring(e + 1) : null; }; e.__addimage__.isArrayBuffer = function(t) { return t instanceof ArrayBuffer; }; var A = e.__addimage__.isArrayBufferView = function(t) { return t instanceof Int8Array || t instanceof Uint8Array || t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array; }, S = e.__addimage__.binaryStringToUint8Array = function(t) { for (var e = t.length, r = new Uint8Array(e), n = 0; n < e; n++) r[n] = t.charCodeAt(n); return r; }, _ = e.__addimage__.arrayBufferToBinaryString = function(t) { for (var e = "", r = A(t) ? t : new Uint8Array(t), n = 0; n < r.length; n += 8192) e += String.fromCharCode.apply(null, r.subarray(n, n + 8192)); return e; }; e.addImage = function() { var e, r, i, a, o, s, u, l, h; if ("number" == typeof arguments[1] ? (r = n, i = arguments[1], a = arguments[2], o = arguments[3], s = arguments[4], u = arguments[5], l = arguments[6], h = arguments[7]) : (r = arguments[1], i = arguments[2], a = arguments[3], o = arguments[4], s = arguments[5], u = arguments[6], l = arguments[7], h = arguments[8]), "object" === _typeof(e = arguments[0]) && !p(e) && "imageData" in e) { var f = e; e = f.imageData, r = f.format || r || n, i = f.x || i || 0, a = f.y || a || 0, o = f.w || f.width || o, s = f.h || f.height || s, u = f.alias || u, l = f.compression || l, h = f.rotation || f.angle || h; } var d = this.internal.getFilters(); if (void 0 === l && -1 !== d.indexOf("FlateEncode") && (l = "SLOW"), isNaN(i) || isNaN(a)) throw new Error("Invalid coordinates passed to jsPDF.addImage"); c.call(this); var g = P.call(this, e, r, u, l); return b.call(this, i, a, o, s, g, h), this; }; var P = function(t, r, i, o) { var s, u, c; if ("string" == typeof t && a(t) === n) { t = unescape(t); var l = k(t, !1); ("" !== l || void 0 !== (l = e.loadFile(t, !0))) && (t = l); } if (p(t) && (t = g(t, r)), r = a(t, r), !d(r)) throw new Error("addImage does not support files of type '" + r + "', please ensure that a plugin for '" + r + "' support is added."); if ((null == (c = i) || 0 === c.length) && (i = function(t) { return "string" == typeof t || A(t) ? N(t) : A(t.data) ? N(t.data) : null; }(t)), (s = m.call(this, i)) || (t instanceof Uint8Array || "RGBA" === r || (u = t, t = S(t)), s = this["process" + r.toUpperCase()](t, h.call(this), i, function(t) { return t && "string" == typeof t && (t = t.toUpperCase()), t in e.image_compression ? t : w.NONE; }(o), u)), !s) throw new Error("An unknown error occurred whilst processing the image."); return s; }, k = e.__addimage__.convertBase64ToBinaryString = function(t, e) { e = "boolean" != typeof e || e; var r, n = ""; if ("string" == typeof t) { var i; r = null !== (i = x(t)) && void 0 !== i ? i : t; try { n = f(r); } catch (a) { if (e) throw L(r) ? /* @__PURE__ */ new Error("atob-Error in jsPDF.convertBase64ToBinaryString " + a.message) : /* @__PURE__ */ new Error("Supplied Data is not a valid base64-String jsPDF.convertBase64ToBinaryString "); } } return n; }; e.getImageProperties = function(t) { var r, i, o = ""; if (p(t) && (t = g(t)), "string" == typeof t && a(t) === n && ("" === (o = k(t, !1)) && (o = e.loadFile(t) || ""), t = o), i = a(t), !d(i)) throw new Error("addImage does not support files of type '" + i + "', please ensure that a plugin for '" + i + "' support is added."); if (t instanceof Uint8Array || (t = S(t)), !(r = this["process" + i.toUpperCase()](t))) throw new Error("An unknown error occurred whilst processing the image"); return r.fileType = i, r; }; })(E.API), function(t) { /** * @license * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv * * Licensed under the MIT License. * http://opensource.org/licenses/mit-license */ var e = function(t) { if (void 0 !== t && "" != t) return !0; }; E.API.events.push(["addPage", function(t) { this.internal.getPageInfo(t.pageNumber).pageContext.annotations = []; }]), t.events.push(["putPage", function(t) { for (var r, n, i, a = this.internal.getCoordinateString, o = this.internal.getVerticalCoordinateString, s = this.internal.getPageInfoByObjId(t.objId), u = t.pageContext.annotations, c = !1, l = 0; l < u.length && !c; l++) switch ((r = u[l]).type) { case "link": (e(r.options.url) || e(r.options.pageNumber)) && (c = !0); break; case "reference": case "text": case "freetext": c = !0; } if (0 != c) { this.internal.write("/Annots ["); for (var h = 0; h < u.length; h++) { r = u[h]; var f = this.internal.pdfEscape, d = this.internal.getEncryptor(t.objId); switch (r.type) { case "reference": this.internal.write(" " + r.object.objId + " 0 R "); break; case "text": var p = this.internal.newAdditionalObject(), g = this.internal.newAdditionalObject(), m = this.internal.getEncryptor(p.objId), v = r.title || "Note"; i = "<>", p.content = i; var b = p.objId + " 0 R"; i = "<>"; else if (r.options.pageNumber) switch (i = "<= 0; }; t.__arabicParser__.arabicLetterHasIsolatedForm = function(t) { return o(t) && a(t) && e[t.charCodeAt(0)].length >= 1; }; var c = t.__arabicParser__.arabicLetterHasFinalForm = function(t) { return o(t) && a(t) && e[t.charCodeAt(0)].length >= 2; }; t.__arabicParser__.arabicLetterHasInitialForm = function(t) { return o(t) && a(t) && e[t.charCodeAt(0)].length >= 3; }; var l = t.__arabicParser__.arabicLetterHasMedialForm = function(t) { return o(t) && a(t) && 4 == e[t.charCodeAt(0)].length; }, h = t.__arabicParser__.resolveLigatures = function(t) { var e = 0, n = r, i = "", a = 0; for (e = 0; e < t.length; e += 1) void 0 !== n[t.charCodeAt(e)] ? (a++, "number" == typeof (n = n[t.charCodeAt(e)]) && (i += String.fromCharCode(n), n = r, a = 0), e === t.length - 1 && (n = r, i += t.charAt(e - (a - 1)), e -= a - 1, a = 0)) : (n = r, i += t.charAt(e - a), e -= a, a = 0); return i; }; t.__arabicParser__.isArabicDiacritic = function(t) { return void 0 !== t && void 0 !== n[t.charCodeAt(0)]; }; var f = t.__arabicParser__.getCorrectForm = function(t, e, r) { return o(t) ? !1 === a(t) ? -1 : !c(t) || !o(e) && !o(r) || !o(r) && s(e) || s(t) && !o(e) || s(t) && u(e) || s(t) && s(e) ? 0 : l(t) && o(e) && !s(e) && o(r) && c(r) ? 3 : s(t) || !o(r) ? 1 : 2 : -1; }, d = function(t) { var r = 0, n = 0, i = 0, a = "", s = "", u = "", c = (t = t || "").split("\\s+"), l = []; for (r = 0; r < c.length; r += 1) { for (l.push(""), n = 0; n < c[r].length; n += 1) a = c[r][n], s = c[r][n - 1], u = c[r][n + 1], o(a) ? (i = f(a, s, u), l[r] += -1 !== i ? String.fromCharCode(e[a.charCodeAt(0)][i]) : a) : l[r] += a; l[r] = h(l[r]); } return l.join(" "); }, p = t.__arabicParser__.processArabic = t.processArabic = function() { var t, e = "string" == typeof arguments[0] ? arguments[0] : arguments[0].text, r = []; if (Array.isArray(e)) { var n = 0; for (r = [], n = 0; n < e.length; n += 1) Array.isArray(e[n]) ? r.push([ d(e[n][0]), e[n][1], e[n][2] ]) : r.push([d(e[n])]); t = r; } else t = d(e); return "string" == typeof arguments[0] ? t : (arguments[0].text = t, arguments[0]); }; t.events.push(["preProcessText", p]); }(E.API), E.API.autoPrint = function(t) { var e; return (t = t || {}).variant = t.variant || "non-conform", "javascript" === t.variant ? this.addJS("print({});") : (this.internal.events.subscribe("postPutResources", function() { e = this.internal.newObject(), this.internal.out("<<"), this.internal.out("/S /Named"), this.internal.out("/Type /Action"), this.internal.out("/N /Print"), this.internal.out(">>"), this.internal.out("endobj"); }), this.internal.events.subscribe("putCatalog", function() { this.internal.out("/OpenAction " + e + " 0 R"); })), this; }, function(t) { /** * @license * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv * * Licensed under the MIT License. * http://opensource.org/licenses/mit-license */ var e = function() { var t = void 0; Object.defineProperty(this, "pdf", { get: function() { return t; }, set: function(e) { t = e; } }); var e = 150; Object.defineProperty(this, "width", { get: function() { return e; }, set: function(t) { e = isNaN(t) || !1 === Number.isInteger(t) || t < 0 ? 150 : t, this.getContext("2d").pageWrapXEnabled && (this.getContext("2d").pageWrapX = e + 1); } }); var r = 300; Object.defineProperty(this, "height", { get: function() { return r; }, set: function(t) { r = isNaN(t) || !1 === Number.isInteger(t) || t < 0 ? 300 : t, this.getContext("2d").pageWrapYEnabled && (this.getContext("2d").pageWrapY = r + 1); } }); var n = []; Object.defineProperty(this, "childNodes", { get: function() { return n; }, set: function(t) { n = t; } }); var i = {}; Object.defineProperty(this, "style", { get: function() { return i; }, set: function(t) { i = t; } }), Object.defineProperty(this, "parentNode", {}); }; e.prototype.getContext = function(t, e) { var r; if ("2d" !== (t = t || "2d")) return null; for (r in e) this.pdf.context2d.hasOwnProperty(r) && (this.pdf.context2d[r] = e[r]); return this.pdf.context2d._canvas = this, this.pdf.context2d; }, e.prototype.toDataURL = function() { throw new Error("toDataURL is not implemented."); }, t.events.push(["initialized", function() { this.canvas = new e(), this.canvas.pdf = this; }]); }(E.API), function(e) { var r = { left: 0, top: 0, bottom: 0, right: 0 }, n = !1, i = function() { void 0 === this.internal.__cell__ && (this.internal.__cell__ = {}, this.internal.__cell__.padding = 3, this.internal.__cell__.headerFunction = void 0, this.internal.__cell__.margins = Object.assign({}, r), this.internal.__cell__.margins.width = this.getPageWidth(), a.call(this)); }, a = function() { this.internal.__cell__.lastCell = new o(), this.internal.__cell__.pages = 1; }, o = function() { var t = arguments[0]; Object.defineProperty(this, "x", { enumerable: !0, get: function() { return t; }, set: function(e) { t = e; } }); var e = arguments[1]; Object.defineProperty(this, "y", { enumerable: !0, get: function() { return e; }, set: function(t) { e = t; } }); var r = arguments[2]; Object.defineProperty(this, "width", { enumerable: !0, get: function() { return r; }, set: function(t) { r = t; } }); var n = arguments[3]; Object.defineProperty(this, "height", { enumerable: !0, get: function() { return n; }, set: function(t) { n = t; } }); var i = arguments[4]; Object.defineProperty(this, "text", { enumerable: !0, get: function() { return i; }, set: function(t) { i = t; } }); var a = arguments[5]; Object.defineProperty(this, "lineNumber", { enumerable: !0, get: function() { return a; }, set: function(t) { a = t; } }); var o = arguments[6]; return Object.defineProperty(this, "align", { enumerable: !0, get: function() { return o; }, set: function(t) { o = t; } }), this; }; o.prototype.clone = function() { return new o(this.x, this.y, this.width, this.height, this.text, this.lineNumber, this.align); }, o.prototype.toArray = function() { return [ this.x, this.y, this.width, this.height, this.text, this.lineNumber, this.align ]; }, e.setHeaderFunction = function(t) { return i.call(this), this.internal.__cell__.headerFunction = "function" == typeof t ? t : void 0, this; }, e.getTextDimensions = function(t, e) { i.call(this); var r = (e = e || {}).fontSize || this.getFontSize(), n = e.font || this.getFont(), a = e.scaleFactor || this.internal.scaleFactor, o = 0, s = 0, u = 0, c = this; if (!Array.isArray(t) && "string" != typeof t) { if ("number" != typeof t) throw new Error("getTextDimensions expects text-parameter to be of type String or type Number or an Array of Strings."); t = String(t); } var l = e.maxWidth; l > 0 ? "string" == typeof t ? t = this.splitTextToSize(t, l) : "[object Array]" === Object.prototype.toString.call(t) && (t = t.reduce(function(t, e) { return t.concat(c.splitTextToSize(e, l)); }, [])) : t = Array.isArray(t) ? t : [t]; for (var h = 0; h < t.length; h++) o < (u = this.getStringUnitWidth(t[h], { font: n }) * r) && (o = u); return 0 !== o && (s = t.length), { w: o /= a, h: Math.max((s * r * this.getLineHeightFactor() - r * (this.getLineHeightFactor() - 1)) / a, 0) }; }, e.cellAddPage = function() { i.call(this), this.addPage(); var t = this.internal.__cell__.margins || r; return this.internal.__cell__.lastCell = new o(t.left, t.top, void 0, void 0), this.internal.__cell__.pages += 1, this; }; var s = e.cell = function() { var t = arguments[0] instanceof o ? arguments[0] : new o(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6]); i.call(this); var e = this.internal.__cell__.lastCell, a = this.internal.__cell__.padding, s = this.internal.__cell__.margins || r, u = this.internal.__cell__.tableHeaderRow, c = this.internal.__cell__.printHeaders; return void 0 !== e.lineNumber && (e.lineNumber === t.lineNumber ? (t.x = (e.x || 0) + (e.width || 0), t.y = e.y || 0) : e.y + e.height + t.height + s.bottom > this.getPageHeight() ? (this.cellAddPage(), t.y = s.top, c && u && (this.printHeaderRow(t.lineNumber, !0), t.y += u[0].height)) : t.y = e.y + e.height || t.y), void 0 !== t.text[0] && (this.rect(t.x, t.y, t.width, t.height, !0 === n ? "FD" : void 0), "right" === t.align ? this.text(t.text, t.x + t.width - a, t.y + a, { align: "right", baseline: "top" }) : "center" === t.align ? this.text(t.text, t.x + t.width / 2, t.y + a, { align: "center", baseline: "top", maxWidth: t.width - a - a }) : this.text(t.text, t.x + a, t.y + a, { align: "left", baseline: "top", maxWidth: t.width - a - a })), this.internal.__cell__.lastCell = t, this; }; e.table = function(e, n, c, l, h) { if (i.call(this), !c) throw new Error("No data for PDF table."); var f, d, p, g, m = [], v = [], b = [], y = {}, w = {}, N = [], L = [], x = (h = h || {}).autoSize || !1, A = !1 !== h.printHeaders, S = h.css && void 0 !== h.css["font-size"] ? 16 * h.css["font-size"] : h.fontSize || 12, _ = h.margins || Object.assign({ width: this.getPageWidth() }, r), P = "number" == typeof h.padding ? h.padding : 3, k = h.headerBackgroundColor || "#c8c8c8", F = h.headerTextColor || "#000"; if (a.call(this), this.internal.__cell__.printHeaders = A, this.internal.__cell__.margins = _, this.internal.__cell__.table_font_size = S, this.internal.__cell__.padding = P, this.internal.__cell__.headerBackgroundColor = k, this.internal.__cell__.headerTextColor = F, this.setFontSize(S), null == l) v = m = Object.keys(c[0]), b = m.map(function() { return "left"; }); else if (Array.isArray(l) && "object" === _typeof(l[0])) for (m = l.map(function(t) { return t.name; }), v = l.map(function(t) { return t.prompt || t.name || ""; }), b = l.map(function(t) { return t.align || "left"; }), f = 0; f < l.length; f += 1) w[l[f].name] = .7499990551181103 * l[f].width; else Array.isArray(l) && "string" == typeof l[0] && (v = m = l, b = m.map(function() { return "left"; })); if (x || Array.isArray(l) && "string" == typeof l[0]) for (f = 0; f < m.length; f += 1) { for (y[g = m[f]] = c.map(function(t) { return t[g]; }), this.setFont(void 0, "bold"), N.push(this.getTextDimensions(v[f], { fontSize: this.internal.__cell__.table_font_size, scaleFactor: this.internal.scaleFactor }).w), d = y[g], this.setFont(void 0, "normal"), p = 0; p < d.length; p += 1) N.push(this.getTextDimensions(d[p], { fontSize: this.internal.__cell__.table_font_size, scaleFactor: this.internal.scaleFactor }).w); w[g] = Math.max.apply(null, N) + P + P, N = []; } if (A) { var I = {}; for (f = 0; f < m.length; f += 1) I[m[f]] = {}, I[m[f]].text = v[f], I[m[f]].align = b[f]; var C = u.call(this, I, w); L = m.map(function(t) { return new o(e, n, w[t], C, I[t].text, void 0, I[t].align); }), this.setTableHeaderRow(L), this.printHeaderRow(1, !1); } var j = l.reduce(function(t, e) { return t[e.name] = e.align, t; }, {}); for (f = 0; f < c.length; f += 1) { "rowStart" in h && h.rowStart instanceof Function && h.rowStart({ row: f, data: c[f] }, this); var O = u.call(this, c[f], w); for (p = 0; p < m.length; p += 1) { var B = c[f][m[p]]; "cellStart" in h && h.cellStart instanceof Function && h.cellStart({ row: f, col: p, data: B }, this), s.call(this, new o(e, n, w[m[p]], O, B, f + 2, j[m[p]])); } } return this.internal.__cell__.table_x = e, this.internal.__cell__.table_y = n, this; }; var u = function(t, e) { var r = this.internal.__cell__.padding, n = this.internal.__cell__.table_font_size, i = this.internal.scaleFactor; return Object.keys(t).map(function(n) { var i = t[n]; return this.splitTextToSize(i.hasOwnProperty("text") ? i.text : i, e[n] - r - r); }, this).map(function(t) { return this.getLineHeightFactor() * t.length * n / i + r + r; }, this).reduce(function(t, e) { return Math.max(t, e); }, 0); }; e.setTableHeaderRow = function(t) { i.call(this), this.internal.__cell__.tableHeaderRow = t; }, e.printHeaderRow = function(t, e) { if (i.call(this), !this.internal.__cell__.tableHeaderRow) throw new Error("Property tableHeaderRow does not exist."); var r; if (n = !0, "function" == typeof this.internal.__cell__.headerFunction) { var a = this.internal.__cell__.headerFunction(this, this.internal.__cell__.pages); this.internal.__cell__.lastCell = new o(a[0], a[1], a[2], a[3], void 0, -1); } this.setFont(void 0, "bold"); for (var u = [], c = 0; c < this.internal.__cell__.tableHeaderRow.length; c += 1) { r = this.internal.__cell__.tableHeaderRow[c].clone(), e && (r.y = this.internal.__cell__.margins.top || 0, u.push(r)), r.lineNumber = t; var l = this.getTextColor(); this.setTextColor(this.internal.__cell__.headerTextColor), this.setFillColor(this.internal.__cell__.headerBackgroundColor), s.call(this, r), this.setTextColor(l); } u.length > 0 && this.setTableHeaderRow(u), this.setFont(void 0, "normal"), n = !1; }; }(E.API); var kt = { italic: [ "italic", "oblique", "normal" ], oblique: [ "oblique", "italic", "normal" ], normal: [ "normal", "oblique", "italic" ] }, Ft = [ "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded" ], It = Pt(Ft), Ct = [ 100, 200, 300, 400, 500, 600, 700, 800, 900 ], jt = Pt(Ct); function Ot(t) { var e = t.family.replace(/"|'/g, "").toLowerCase(), r = function(t) { return kt[t = t || "normal"] ? t : "normal"; }(t.style), n = function(t) { return t ? "number" == typeof t ? t >= 100 && t <= 900 && t % 100 == 0 ? t : 400 : /^\d00$/.test(t) ? parseInt(t) : "bold" === t ? 700 : 400 : 400; }(t.weight), i = function(t) { return "number" == typeof It[t = t || "normal"] ? t : "normal"; }(t.stretch); return { family: e, style: r, weight: n, stretch: i, src: t.src || [], ref: t.ref || { name: e, style: [ i, r, n ].join(" ") } }; } function Bt(t, e, r, n) { var i; for (i = r; i >= 0 && i < e.length; i += n) if (t[e[i]]) return t[e[i]]; for (i = r; i >= 0 && i < e.length; i -= n) if (t[e[i]]) return t[e[i]]; } var Mt = { "sans-serif": "helvetica", fixed: "courier", monospace: "courier", terminal: "courier", cursive: "times", fantasy: "times", serif: "times" }, qt = { caption: "times", icon: "times", menu: "times", "message-box": "times", "small-caption": "times", "status-bar": "times" }; function Et(t) { return [ t.stretch, t.style, t.weight, t.family ].join(" "); } function Rt(t) { return t.trimLeft(); } function Dt(t, e) { for (var r = 0; r < t.length;) { if (t.charAt(r) === e) return [t.substring(0, r), t.substring(r + 1)]; r += 1; } return null; } function Tt(t) { var e = t.match(/^(-[a-z_]|[a-z_])[a-z0-9_-]*/i); return null === e ? null : [e[0], t.substring(e[0].length)]; } var zt, Ut, Ht, Wt, Vt, Gt = ["times"]; function Yt(t, r, n, i, a) { var o = 4, s = Kt; switch (a) { case E.API.image_compression.FAST: o = 1, s = Xt; break; case E.API.image_compression.MEDIUM: o = 6, s = Zt; break; case E.API.image_compression.SLOW: o = 9, s = $t; } t = function(t, e, r, n) { for (var i, a = t.length / e, o = new Uint8Array(t.length + a), s = [ Jt, Xt, Kt, Zt, $t ], u = 0; u < a; u += 1) { var c = u * e, l = t.subarray(c, c + e); if (n) o.set(n(l, r, i), c + u); else { for (var h = s.length, f = [], d = 0; d < h; d += 1) f[d] = s[d](l, r, i); var p = te(f.concat()); o.set(f[p], c + u); } i = l; } return o; }(t, r, Math.ceil(n * i / 8), s); var u = zlibSync(t, { level: o }); return E.API.__addimage__.arrayBufferToBinaryString(u); } function Jt(t) { var e = Array.apply([], t); return e.unshift(0), e; } function Xt(t, e) { var r = t.length, n = []; n[0] = 1; for (var i = 0; i < r; i += 1) { var a = t[i - e] || 0; n[i + 1] = t[i] - a + 256 & 255; } return n; } function Kt(t, e, r) { var n = t.length, i = []; i[0] = 2; for (var a = 0; a < n; a += 1) { var o = r && r[a] || 0; i[a + 1] = t[a] - o + 256 & 255; } return i; } function Zt(t, e, r) { var n = t.length, i = []; i[0] = 3; for (var a = 0; a < n; a += 1) { var o = t[a - e] || 0, s = r && r[a] || 0; i[a + 1] = t[a] + 256 - (o + s >>> 1) & 255; } return i; } function $t(t, e, r) { var n = t.length, i = []; i[0] = 4; for (var a = 0; a < n; a += 1) { var o = Qt(t[a - e] || 0, r && r[a] || 0, r && r[a - e] || 0); i[a + 1] = t[a] - o + 256 & 255; } return i; } function Qt(t, e, r) { if (t === e && e === r) return t; var n = Math.abs(e - r), i = Math.abs(t - r), a = Math.abs(t + e - r - r); return n <= i && n <= a ? t : i <= a ? e : r; } function te(t) { var e = t.map(function(t) { return t.reduce(function(t, e) { return t + Math.abs(e); }, 0); }); return e.indexOf(Math.min.apply(null, e)); } function ee(t, e, r) { var n = e * r, i = Math.floor(n / 8), a = 16 - (n - 8 * i + r), o = (1 << r) - 1; return ne(t, i) >> a & o; } function re(t, e, r, n) { var i = r * n, a = Math.floor(i / 8), o = 16 - (i - 8 * a + n), s = (1 << n) - 1, u = (e & s) << o; (function(t, e, r) { if (e + 1 < t.byteLength) t.setUint16(e, r, !1); else { var n = r >> 8 & 255; t.setUint8(e, n); } })(t, a, ne(t, a) & ~(s << o) & 65535 | u); /** * @license * (c) Dean McNamee , 2013. * * https://github.com/deanm/omggif * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to * deal in the Software without restriction, including without limitation the * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or * sell copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. * * omggif is a JavaScript implementation of a GIF 89a encoder and decoder, * including animation and compression. It does not rely on any specific * underlying system, so should run in the browser, Node, or Plask. */ } function ne(t, e) { return e + 1 < t.byteLength ? t.getUint16(e, !1) : t.getUint8(e) << 8; } function ie(t) { var e = 0; if (71 !== t[e++] || 73 !== t[e++] || 70 !== t[e++] || 56 !== t[e++] || 56 != (t[e++] + 1 & 253) || 97 !== t[e++]) throw new Error("Invalid GIF 87a/89a header."); var r = t[e++] | t[e++] << 8, n = t[e++] | t[e++] << 8, i = t[e++], a = i >> 7, o = 1 << 1 + (7 & i); t[e++], t[e++]; var s = null, u = null; a && (s = e, u = o, e += 3 * o); var c = !0, l = [], h = 0, f = null, d = 0, p = null; for (this.width = r, this.height = n; c && e < t.length;) switch (t[e++]) { case 33: switch (t[e++]) { case 255: if (11 !== t[e] || 78 == t[e + 1] && 69 == t[e + 2] && 84 == t[e + 3] && 83 == t[e + 4] && 67 == t[e + 5] && 65 == t[e + 6] && 80 == t[e + 7] && 69 == t[e + 8] && 50 == t[e + 9] && 46 == t[e + 10] && 48 == t[e + 11] && 3 == t[e + 12] && 1 == t[e + 13] && 0 == t[e + 16]) e += 14, p = t[e++] | t[e++] << 8, e++; else for (e += 12;;) { if (!((P = t[e++]) >= 0)) throw Error("Invalid block size"); if (0 === P) break; e += P; } break; case 249: if (4 !== t[e++] || 0 !== t[e + 4]) throw new Error("Invalid graphics extension block."); var g = t[e++]; h = t[e++] | t[e++] << 8, f = t[e++], 1 & g || (f = null), d = g >> 2 & 7, e++; break; case 254: for (;;) { if (!((P = t[e++]) >= 0)) throw Error("Invalid block size"); if (0 === P) break; e += P; } break; default: throw new Error("Unknown graphic control label: 0x" + t[e - 1].toString(16)); } break; case 44: var m = t[e++] | t[e++] << 8, v = t[e++] | t[e++] << 8, b = t[e++] | t[e++] << 8, y = t[e++] | t[e++] << 8, w = t[e++], N = w >> 6 & 1, L = 1 << 1 + (7 & w), x = s, A = u, S = !1; w >> 7 && (S = !0, x = e, A = L, e += 3 * L); var _ = e; for (e++;;) { var P; if (!((P = t[e++]) >= 0)) throw Error("Invalid block size"); if (0 === P) break; e += P; } l.push({ x: m, y: v, width: b, height: y, has_local_palette: S, palette_offset: x, palette_size: A, data_offset: _, data_length: e - _, transparent_index: f, interlaced: !!N, delay: h, disposal: d }); break; case 59: c = !1; break; default: throw new Error("Unknown gif block: 0x" + t[e - 1].toString(16)); } this.numFrames = function() { return l.length; }, this.loopCount = function() { return p; }, this.frameInfo = function(t) { if (t < 0 || t >= l.length) throw new Error("Frame index out of range."); return l[t]; }, this.decodeAndBlitFrameBGRA = function(e, n) { var i = this.frameInfo(e), a = i.width * i.height; if (a > 536870912) throw new Error("Image dimensions exceed 512MB, which is too large."); var o = new Uint8Array(a); ae(t, i.data_offset, o, a); var s = i.palette_offset, u = i.transparent_index; null === u && (u = 256); var c = i.width, l = r - c, h = c, f = 4 * (i.y * r + i.x), d = 4 * ((i.y + i.height) * r + i.x), p = f, g = 4 * l; !0 === i.interlaced && (g += 4 * r * 7); for (var m = 8, v = 0, b = o.length; v < b; ++v) { var y = o[v]; if (0 === h && (h = c, (p += g) >= d && (g = 4 * l + 4 * r * (m - 1), p = f + (c + l) * (m << 1), m >>= 1)), y === u) p += 4; else { var w = t[s + 3 * y], N = t[s + 3 * y + 1], L = t[s + 3 * y + 2]; n[p++] = L, n[p++] = N, n[p++] = w, n[p++] = 255; } --h; } }, this.decodeAndBlitFrameRGBA = function(e, n) { var i = this.frameInfo(e), a = i.width * i.height; if (a > 536870912) throw new Error("Image dimensions exceed 512MB, which is too large."); var o = new Uint8Array(a); ae(t, i.data_offset, o, a); var s = i.palette_offset, u = i.transparent_index; null === u && (u = 256); var c = i.width, l = r - c, h = c, f = 4 * (i.y * r + i.x), d = 4 * ((i.y + i.height) * r + i.x), p = f, g = 4 * l; !0 === i.interlaced && (g += 4 * r * 7); for (var m = 8, v = 0, b = o.length; v < b; ++v) { var y = o[v]; if (0 === h && (h = c, (p += g) >= d && (g = 4 * l + 4 * r * (m - 1), p = f + (c + l) * (m << 1), m >>= 1)), y === u) p += 4; else { var w = t[s + 3 * y], N = t[s + 3 * y + 1], L = t[s + 3 * y + 2]; n[p++] = w, n[p++] = N, n[p++] = L, n[p++] = 255; } --h; } }; } function ae(t, e, r, n) { for (var i = t[e++], a = 1 << i, s = a + 1, u = s + 1, c = i + 1, l = (1 << c) - 1, h = 0, f = 0, d = 0, p = t[e++], g = new Int32Array(4096), m = null;;) { for (; h < 16 && 0 !== p;) f |= t[e++] << h, h += 8, 1 === p ? p = t[e++] : --p; if (h < c) break; var v = f & l; if (f >>= c, h -= c, v !== a) { if (v === s) break; for (var b = v < u ? v : m, y = 0, w = b; w > a;) w = g[w] >> 8, ++y; var N = w; if (d + y + (b !== v ? 1 : 0) > n) return void o.log("Warning, gif stream longer than expected."); r[d++] = N; var L = d += y; for (b !== v && (r[d++] = N), w = b; y--;) w = g[w], r[--L] = 255 & w, w >>= 8; null !== m && u < 4096 && (g[u++] = m << 8 | N, u >= l + 1 && c < 12 && (++c, l = l << 1 | 1)), m = v; } else u = s + 1, l = (1 << (c = i + 1)) - 1, m = null; } return d !== n && o.log("Warning, gif stream shorter than expected."), r; } /** * @license Copyright (c) 2008, Adobe Systems Incorporated All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Adobe Systems Incorporated nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ function oe(t) { var e, r, n, i, a, o = Math.floor, s = new Array(64), u = new Array(64), c = new Array(64), l = new Array(64), h = new Array(65535), f = new Array(65535), d = new Array(64), p = new Array(64), g = [], m = 0, v = 7, b = new Array(64), y = new Array(64), w = new Array(64), N = new Array(256), L = new Array(2048), x = [ 0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63 ], A = [ 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 ], S = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ], _ = [ 0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125 ], P = [ 1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250 ], k = [ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 ], F = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ], I = [ 0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119 ], C = [ 0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250 ]; function j(t, e) { for (var r = 0, n = 0, i = new Array(), a = 1; a <= 16; a++) { for (var o = 1; o <= t[a]; o++) i[e[n]] = [], i[e[n]][0] = r, i[e[n]][1] = a, n++, r++; r *= 2; } return i; } function O(t) { for (var e = t[0], r = t[1] - 1; r >= 0;) e & 1 << r && (m |= 1 << v), r--, --v < 0 && (255 == m ? (B(255), B(0)) : B(m), v = 7, m = 0); } function B(t) { g.push(t); } function M(t) { B(t >> 8 & 255), B(255 & t); } function q(t, e, r, n, i) { for (var a, o = i[0], s = i[240], u = function(t, e) { var r, n, i, a, o, s, u, c, l, h, f = 0; for (l = 0; l < 8; ++l) { r = t[f], n = t[f + 1], i = t[f + 2], a = t[f + 3], o = t[f + 4], s = t[f + 5], u = t[f + 6]; var p = r + (c = t[f + 7]), g = r - c, m = n + u, v = n - u, b = i + s, y = i - s, w = a + o, N = a - o, L = p + w, x = p - w, A = m + b, S = m - b; t[f] = L + A, t[f + 4] = L - A; var _ = .707106781 * (S + x); t[f + 2] = x + _, t[f + 6] = x - _; var P = .382683433 * ((L = N + y) - (S = v + g)), k = .5411961 * L + P, F = 1.306562965 * S + P, I = .707106781 * (A = y + v), C = g + I, j = g - I; t[f + 5] = j + k, t[f + 3] = j - k, t[f + 1] = C + F, t[f + 7] = C - F, f += 8; } for (f = 0, l = 0; l < 8; ++l) { r = t[f], n = t[f + 8], i = t[f + 16], a = t[f + 24], o = t[f + 32], s = t[f + 40], u = t[f + 48]; var O = r + (c = t[f + 56]), B = r - c, M = n + u, q = n - u, E = i + s, R = i - s, D = a + o, T = a - o, z = O + D, U = O - D, H = M + E, W = M - E; t[f] = z + H, t[f + 32] = z - H; var V = .707106781 * (W + U); t[f + 16] = U + V, t[f + 48] = U - V; var G = .382683433 * ((z = T + R) - (W = q + B)), Y = .5411961 * z + G, J = 1.306562965 * W + G, X = .707106781 * (H = R + q), K = B + X, Z = B - X; t[f + 40] = Z + Y, t[f + 24] = Z - Y, t[f + 8] = K + J, t[f + 56] = K - J, f++; } for (l = 0; l < 64; ++l) h = t[l] * e[l], d[l] = h > 0 ? h + .5 | 0 : h - .5 | 0; return d; }(t, e), c = 0; c < 64; ++c) p[x[c]] = u[c]; var l = p[0] - r; r = p[0], 0 == l ? O(n[0]) : (O(n[f[a = 32767 + l]]), O(h[a])); for (var g = 63; g > 0 && 0 == p[g];) g--; if (0 == g) return O(o), r; for (var m, v = 1; v <= g;) { for (var b = v; 0 == p[v] && v <= g;) ++v; var y = v - b; if (y >= 16) { m = y >> 4; for (var w = 1; w <= m; ++w) O(s); y &= 15; } a = 32767 + p[v], O(i[(y << 4) + f[a]]), O(h[a]), v++; } return 63 != g && O(o), r; } function E(t) { t = Math.min(Math.max(t, 1), 100), a != t && (function(t) { for (var e = [ 16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99 ], r = 0; r < 64; r++) { var n = o((e[r] * t + 50) / 100); n = Math.min(Math.max(n, 1), 255), s[x[r]] = n; } for (var i = [ 17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 ], a = 0; a < 64; a++) { var h = o((i[a] * t + 50) / 100); h = Math.min(Math.max(h, 1), 255), u[x[a]] = h; } for (var f = [ 1, 1.387039845, 1.306562965, 1.175875602, 1, .785694958, .5411961, .275899379 ], d = 0, p = 0; p < 8; p++) for (var g = 0; g < 8; g++) c[d] = 1 / (s[x[d]] * f[p] * f[g] * 8), l[d] = 1 / (u[x[d]] * f[p] * f[g] * 8), d++; }(t < 50 ? Math.floor(5e3 / t) : Math.floor(200 - 2 * t)), a = t); } this.encode = function(t, a) { a && E(a), g = new Array(), m = 0, v = 7, M(65496), M(65504), M(16), B(74), B(70), B(73), B(70), B(0), B(1), B(1), B(0), M(1), M(1), B(0), B(0), function() { M(65499), M(132), B(0); for (var t = 0; t < 64; t++) B(s[t]); B(1); for (var e = 0; e < 64; e++) B(u[e]); }(), function(t, e) { M(65472), M(17), B(8), M(e), M(t), B(3), B(1), B(17), B(0), B(2), B(17), B(1), B(3), B(17), B(1); }(t.width, t.height), function() { M(65476), M(418), B(0); for (var t = 0; t < 16; t++) B(A[t + 1]); for (var e = 0; e <= 11; e++) B(S[e]); B(16); for (var r = 0; r < 16; r++) B(_[r + 1]); for (var n = 0; n <= 161; n++) B(P[n]); B(1); for (var i = 0; i < 16; i++) B(k[i + 1]); for (var a = 0; a <= 11; a++) B(F[a]); B(17); for (var o = 0; o < 16; o++) B(I[o + 1]); for (var s = 0; s <= 161; s++) B(C[s]); }(), M(65498), M(12), B(3), B(1), B(0), B(2), B(17), B(3), B(17), B(0), B(63), B(0); var o = 0, h = 0, f = 0; m = 0, v = 7, this.encode.displayName = "_encode_"; for (var d, p, N, x, j, R, D, T, z, U = t.data, H = t.width, W = t.height, V = 4 * H, G = 0; G < W;) { for (d = 0; d < V;) { for (j = V * G + d, D = -1, T = 0, z = 0; z < 64; z++) R = j + (T = z >> 3) * V + (D = 4 * (7 & z)), G + T >= W && (R -= V * (G + 1 + T - W)), d + D >= V && (R -= d + D - V + 4), p = U[R++], N = U[R++], x = U[R++], b[z] = (L[p] + L[N + 256 | 0] + L[x + 512 | 0] >> 16) - 128, y[z] = (L[p + 768 | 0] + L[N + 1024 | 0] + L[x + 1280 | 0] >> 16) - 128, w[z] = (L[p + 1280 | 0] + L[N + 1536 | 0] + L[x + 1792 | 0] >> 16) - 128; o = q(b, c, o, e, n), h = q(y, l, h, r, i), f = q(w, l, f, r, i), d += 32; } G += 8; } if (v >= 0) { var Y = []; Y[1] = v + 1, Y[0] = (1 << v + 1) - 1, O(Y); } return M(65497), new Uint8Array(g); }, t = t || 50, function() { for (var t = String.fromCharCode, e = 0; e < 256; e++) N[e] = t(e); }(), e = j(A, S), r = j(k, F), n = j(_, P), i = j(I, C), function() { for (var t = 1, e = 2, r = 1; r <= 15; r++) { for (var n = t; n < e; n++) f[32767 + n] = r, h[32767 + n] = [], h[32767 + n][1] = r, h[32767 + n][0] = n; for (var i = -(e - 1); i <= -t; i++) f[32767 + i] = r, h[32767 + i] = [], h[32767 + i][1] = r, h[32767 + i][0] = e - 1 + i; t <<= 1, e <<= 1; } }(), function() { for (var t = 0; t < 256; t++) L[t] = 19595 * t, L[t + 256 | 0] = 38470 * t, L[t + 512 | 0] = 7471 * t + 32768, L[t + 768 | 0] = -11059 * t, L[t + 1024 | 0] = -21709 * t, L[t + 1280 | 0] = 32768 * t + 8421375, L[t + 1536 | 0] = -27439 * t, L[t + 1792 | 0] = -5329 * t; }(), E(t); } /** * @license * Copyright (c) 2017 Aras Abbasi * * Licensed under the MIT License. * http://opensource.org/licenses/mit-license */ function se(t, e) { if (this.pos = 0, this.buffer = t, this.datav = new DataView(t.buffer), this.is_with_alpha = !!e, this.bottom_up = !0, this.flag = String.fromCharCode(this.buffer[0]) + String.fromCharCode(this.buffer[1]), this.pos += 2, -1 === [ "BM", "BA", "CI", "CP", "IC", "PT" ].indexOf(this.flag)) throw new Error("Invalid BMP File"); this.parseHeader(), this.parseBGR(); } function ue(t) { function e(t) { if (!t) throw Error("assert :P"); } function r(t, e, r) { for (var n = 0; 4 > n; n++) if (t[e + n] != r.charCodeAt(n)) return !0; return !1; } function n(t, e, r, n, i) { for (var a = 0; a < i; a++) t[e + a] = r[n + a]; } function i(t, e, r, n) { for (var i = 0; i < n; i++) t[e + i] = r; } function a(t) { return new Int32Array(t); } function o(t, e) { for (var r = [], n = 0; n < t; n++) r.push(new e()); return r; } function s(t, e) { var r = []; return function t(r, n, i) { for (var a = i[n], o = 0; o < a && (r.push(i.length > n + 1 ? [] : new e()), !(i.length < n + 1)); o++) t(r[o], n + 1, i); }(r, 0, t), r; } var u = function() { var t = this; function u(t, e) { for (var r = 1 << e - 1 >>> 0; t & r;) r >>>= 1; return r ? (t & r - 1) + r : t; } function c(t, r, n, i, a) { e(!(i % n)); do t[r + (i -= n)] = a; while (0 < i); } function l(t, r, n, i, o) { if (e(2328 >= o), 512 >= o) var s = a(512); else if (null == (s = a(o))) return 0; return function(t, r, n, i, o, s) { var l, f, d = r, p = 1 << n, g = a(16), m = a(16); for (e(0 != o), e(null != i), e(null != t), e(0 < n), f = 0; f < o; ++f) { if (15 < i[f]) return 0; ++g[i[f]]; } if (g[0] == o) return 0; for (m[1] = 0, l = 1; 15 > l; ++l) { if (g[l] > 1 << l) return 0; m[l + 1] = m[l] + g[l]; } for (f = 0; f < o; ++f) l = i[f], 0 < i[f] && (s[m[l]++] = f); if (1 == m[15]) return (i = new h()).g = 0, i.value = s[0], c(t, d, 1, p, i), p; var v, b = -1, y = p - 1, w = 0, N = 1, L = 1, x = 1 << n; for (f = 0, l = 1, o = 2; l <= n; ++l, o <<= 1) { if (N += L <<= 1, 0 > (L -= g[l])) return 0; for (; 0 < g[l]; --g[l]) (i = new h()).g = l, i.value = s[f++], c(t, d + w, o, x, i), w = u(w, l); } for (l = n + 1, o = 2; 15 >= l; ++l, o <<= 1) { if (N += L <<= 1, 0 > (L -= g[l])) return 0; for (; 0 < g[l]; --g[l]) { if (i = new h(), (w & y) != b) { for (d += x, v = 1 << (b = l) - n; 15 > b && !(0 >= (v -= g[b]));) ++b, v <<= 1; p += x = 1 << (v = b - n), t[r + (b = w & y)].g = v + n, t[r + b].value = d - r - b; } i.g = l - n, i.value = s[f++], c(t, d + (w >> n), o, x, i), w = u(w, l); } } return N != 2 * m[15] - 1 ? 0 : p; }(t, r, n, i, o, s); } function h() { this.value = this.g = 0; } function f() { this.value = this.g = 0; } function d() { this.G = o(5, h), this.H = a(5), this.jc = this.Qb = this.qb = this.nd = 0, this.pd = o(Er, f); } function p(t, r, n, i) { e(null != t), e(null != r), e(2147483648 > i), t.Ca = 254, t.I = 0, t.b = -8, t.Ka = 0, t.oa = r, t.pa = n, t.Jd = r, t.Yc = n + i, t.Zc = 4 <= i ? n + i - 4 + 1 : n, _(t); } function g(t, e) { for (var r = 0; 0 < e--;) r |= k(t, 128) << e; return r; } function m(t, e) { var r = g(t, e); return P(t) ? -r : r; } function v(t, r, n, i) { var a, o = 0; for (e(null != t), e(null != r), e(4294967288 > i), t.Sb = i, t.Ra = 0, t.u = 0, t.h = 0, 4 < i && (i = 4), a = 0; a < i; ++a) o += r[n + a] << 8 * a; t.Ra = o, t.bb = i, t.oa = r, t.pa = n; } function b(t) { for (; 8 <= t.u && t.bb < t.Sb;) t.Ra >>>= 8, t.Ra += t.oa[t.pa + t.bb] << Tr - 8 >>> 0, ++t.bb, t.u -= 8; x(t) && (t.h = 1, t.u = 0); } function y(t, r) { if (e(0 <= r), !t.h && r <= Dr) { var n = L(t) & Rr[r]; return t.u += r, b(t), n; } return t.h = 1, t.u = 0; } function w() { this.b = this.Ca = this.I = 0, this.oa = [], this.pa = 0, this.Jd = [], this.Yc = 0, this.Zc = [], this.Ka = 0; } function N() { this.Ra = 0, this.oa = [], this.h = this.u = this.bb = this.Sb = this.pa = 0; } function L(t) { return t.Ra >>> (t.u & Tr - 1) >>> 0; } function x(t) { return e(t.bb <= t.Sb), t.h || t.bb == t.Sb && t.u > Tr; } function A(t, e) { t.u = e, t.h = x(t); } function S(t) { t.u >= zr && (e(t.u >= zr), b(t)); } function _(t) { e(null != t && null != t.oa), t.pa < t.Zc ? (t.I = (t.oa[t.pa++] | t.I << 8) >>> 0, t.b += 8) : (e(null != t && null != t.oa), t.pa < t.Yc ? (t.b += 8, t.I = t.oa[t.pa++] | t.I << 8) : t.Ka ? t.b = 0 : (t.I <<= 8, t.b += 8, t.Ka = 1)); } function P(t) { return g(t, 1); } function k(t, e) { var r = t.Ca; 0 > t.b && _(t); var n = t.b, i = r * e >>> 8, a = (t.I >>> n > i) + 0; for (a ? (r -= i, t.I -= i + 1 << n >>> 0) : r = i + 1, n = r, i = 0; 256 <= n;) i += 8, n >>= 8; return n = 7 ^ i + Ur[n], t.b -= n, t.Ca = (r << n) - 1, a; } function F(t, e, r) { t[e + 0] = r >> 24 & 255, t[e + 1] = r >> 16 & 255, t[e + 2] = r >> 8 & 255, t[e + 3] = 255 & r; } function I(t, e) { return t[e + 0] | t[e + 1] << 8; } function C(t, e) { return I(t, e) | t[e + 2] << 16; } function j(t, e) { return I(t, e) | I(t, e + 2) << 16; } function O(t, r) { var n = 1 << r; return e(null != t), e(0 < r), t.X = a(n), null == t.X ? 0 : (t.Mb = 32 - r, t.Xa = r, 1); } function B(t, r) { e(null != t), e(null != r), e(t.Xa == r.Xa), n(r.X, 0, t.X, 0, 1 << r.Xa); } function M() { this.X = [], this.Xa = this.Mb = 0; } function q(t, r, n, i) { e(null != n), e(null != i); var a = n[0], o = i[0]; return 0 == a && (a = (t * o + r / 2) / r), 0 == o && (o = (r * a + t / 2) / t), 0 >= a || 0 >= o ? 0 : (n[0] = a, i[0] = o, 1); } function E(t, e) { return t + (1 << e) - 1 >>> e; } function R(t, e) { return ((4278255360 & t) + (4278255360 & e) >>> 0 & 4278255360) + ((16711935 & t) + (16711935 & e) >>> 0 & 16711935) >>> 0; } function D(e, r) { t[r] = function(r, n, i, a, o, s, u) { var c; for (c = 0; c < o; ++c) { var l = t[e](s[u + c - 1], i, a + c); s[u + c] = R(r[n + c], l); } }; } function T() { this.ud = this.hd = this.jd = 0; } function z(t, e) { return ((4278124286 & (t ^ e)) >>> 1) + (t & e) >>> 0; } function U(t) { return 0 <= t && 256 > t ? t : 0 > t ? 0 : 255 < t ? 255 : void 0; } function H(t, e) { return U(t + (t - e + .5 >> 1)); } function W(t, e, r) { return Math.abs(e - r) - Math.abs(t - r); } function V(t, e, r, n, i, a, o) { for (n = a[o - 1], r = 0; r < i; ++r) a[o + r] = n = R(t[e + r], n); } function G(t, e, r, n, i) { var a; for (a = 0; a < r; ++a) { var o = t[e + a], s = o >> 8 & 255, u = 16711935 & (u = (u = 16711935 & o) + ((s << 16) + s)); n[i + a] = (4278255360 & o) + u >>> 0; } } function Y(t, e) { e.jd = 255 & t, e.hd = t >> 8 & 255, e.ud = t >> 16 & 255; } function J(t, e, r, n, i, a) { var o; for (o = 0; o < n; ++o) { var s = e[r + o], u = s >>> 8, c = s, l = 255 & (l = (l = s >>> 16) + ((t.jd << 24 >> 24) * (u << 24 >> 24) >>> 5)); c = 255 & (c = (c += (t.hd << 24 >> 24) * (u << 24 >> 24) >>> 5) + ((t.ud << 24 >> 24) * (l << 24 >> 24) >>> 5)), i[a + o] = (4278255360 & s) + (l << 16) + c; } } function X(e, r, n, i, a) { t[r] = function(t, e, r, n, o, s, u, c, l) { for (n = u; n < c; ++n) for (u = 0; u < l; ++u) o[s++] = a(r[i(t[e++])]); }, t[e] = function(e, r, o, s, u, c, l) { var h = 8 >> e.b, f = e.Ea, d = e.K[0], p = e.w; if (8 > h) for (e = (1 << e.b) - 1, p = (1 << h) - 1; r < o; ++r) { var g, m = 0; for (g = 0; g < f; ++g) g & e || (m = i(s[u++])), c[l++] = a(d[m & p]), m >>= h; } else t["VP8LMapColor" + n](s, u, d, p, c, l, r, o, f); }; } function K(t, e, r, n, i) { for (r = e + r; e < r;) { var a = t[e++]; n[i++] = a >> 16 & 255, n[i++] = a >> 8 & 255, n[i++] = 255 & a; } } function Z(t, e, r, n, i) { for (r = e + r; e < r;) { var a = t[e++]; n[i++] = a >> 16 & 255, n[i++] = a >> 8 & 255, n[i++] = 255 & a, n[i++] = a >> 24 & 255; } } function $(t, e, r, n, i) { for (r = e + r; e < r;) { var a = (o = t[e++]) >> 16 & 240 | o >> 12 & 15, o = 240 & o | o >> 28 & 15; n[i++] = a, n[i++] = o; } } function Q(t, e, r, n, i) { for (r = e + r; e < r;) { var a = (o = t[e++]) >> 16 & 248 | o >> 13 & 7, o = o >> 5 & 224 | o >> 3 & 31; n[i++] = a, n[i++] = o; } } function tt(t, e, r, n, i) { for (r = e + r; e < r;) { var a = t[e++]; n[i++] = 255 & a, n[i++] = a >> 8 & 255, n[i++] = a >> 16 & 255; } } function et(t, e, r, i, a, o) { if (0 == o) for (r = e + r; e < r;) F(i, ((o = t[e++])[0] >> 24 | o[1] >> 8 & 65280 | o[2] << 8 & 16711680 | o[3] << 24) >>> 0), a += 32; else n(i, a, t, e, r); } function rt(e, r) { t[r][0] = t[e + "0"], t[r][1] = t[e + "1"], t[r][2] = t[e + "2"], t[r][3] = t[e + "3"], t[r][4] = t[e + "4"], t[r][5] = t[e + "5"], t[r][6] = t[e + "6"], t[r][7] = t[e + "7"], t[r][8] = t[e + "8"], t[r][9] = t[e + "9"], t[r][10] = t[e + "10"], t[r][11] = t[e + "11"], t[r][12] = t[e + "12"], t[r][13] = t[e + "13"], t[r][14] = t[e + "0"], t[r][15] = t[e + "0"]; } function nt(t) { return t == Un || t == Hn || t == Wn || t == Vn; } function it() { this.eb = [], this.size = this.A = this.fb = 0; } function at() { this.y = [], this.f = [], this.ea = [], this.F = [], this.Tc = this.Ed = this.Cd = this.Fd = this.lb = this.Db = this.Ab = this.fa = this.J = this.W = this.N = this.O = 0; } function ot() { this.Rd = this.height = this.width = this.S = 0, this.f = {}, this.f.RGBA = new it(), this.f.kb = new at(), this.sd = null; } function st() { this.width = [0], this.height = [0], this.Pd = [0], this.Qd = [0], this.format = [0]; } function ut() { this.Id = this.fd = this.Md = this.hb = this.ib = this.da = this.bd = this.cd = this.j = this.v = this.Da = this.Sd = this.ob = 0; } function ct(t) { return alert("todo:WebPSamplerProcessPlane"), t.T; } function lt(t, e) { var r = t.T, i = e.ba.f.RGBA, a = i.eb, o = i.fb + t.ka * i.A, s = mi[e.ba.S], u = t.y, c = t.O, l = t.f, h = t.N, f = t.ea, d = t.W, p = e.cc, g = e.dc, m = e.Mc, v = e.Nc, b = t.ka, y = t.ka + t.T, w = t.U, N = w + 1 >> 1; for (0 == b ? s(u, c, null, null, l, h, f, d, l, h, f, d, a, o, null, null, w) : (s(e.ec, e.fc, u, c, p, g, m, v, l, h, f, d, a, o - i.A, a, o, w), ++r); b + 2 < y; b += 2) p = l, g = h, m = f, v = d, h += t.Rc, d += t.Rc, o += 2 * i.A, s(u, (c += 2 * t.fa) - t.fa, u, c, p, g, m, v, l, h, f, d, a, o - i.A, a, o, w); return c += t.fa, t.j + y < t.o ? (n(e.ec, e.fc, u, c, w), n(e.cc, e.dc, l, h, N), n(e.Mc, e.Nc, f, d, N), r--) : 1 & y || s(u, c, null, null, l, h, f, d, l, h, f, d, a, o + i.A, null, null, w), r; } function ht(t, r, n) { var i = t.F, a = [t.J]; if (null != i) { var o = t.U, s = r.ba.S, u = s == Dn || s == Wn; r = r.ba.f.RGBA; var c = [0], l = t.ka; c[0] = t.T, t.Kb && (0 == l ? --c[0] : (--l, a[0] -= t.width), t.j + t.ka + t.T == t.o && (c[0] = t.o - t.j - l)); var h = r.eb; l = r.fb + l * r.A, t = An(i, a[0], t.width, o, c, h, l + (u ? 0 : 3), r.A), e(n == c), t && nt(s) && Ln(h, l, u, o, c, r.A); } return 0; } function ft(t) { var e = t.ma, r = e.ba.S, n = 11 > r, i = r == qn || r == Rn || r == Dn || r == Tn || 12 == r || nt(r); if (e.memory = null, e.Ib = null, e.Jb = null, e.Nd = null, !Br(e.Oa, t, i ? 11 : 12)) return 0; if (i && nt(r) && vr(), t.da) alert("todo:use_scaling"); else { if (n) { if (e.Ib = ct, t.Kb) { if (r = t.U + 1 >> 1, e.memory = a(t.U + 2 * r), null == e.memory) return 0; e.ec = e.memory, e.fc = 0, e.cc = e.ec, e.dc = e.fc + t.U, e.Mc = e.cc, e.Nc = e.dc + r, e.Ib = lt, vr(); } } else alert("todo:EmitYUV"); i && (e.Jb = ht, n && gr()); } if (n && !Ii) { for (t = 0; 256 > t; ++t) Ci[t] = 89858 * (t - 128) + Si >> Ai, Bi[t] = -22014 * (t - 128) + Si, Oi[t] = -45773 * (t - 128), ji[t] = 113618 * (t - 128) + Si >> Ai; for (t = _i; t < Pi; ++t) e = 76283 * (t - 16) + Si >> Ai, Mi[t - _i] = Vt(e, 255), qi[t - _i] = Vt(e + 8 >> 4, 15); Ii = 1; } return 1; } function dt(t) { var r = t.ma, n = t.U, i = t.T; return e(!(1 & t.ka)), 0 >= n || 0 >= i ? 0 : (n = r.Ib(t, r), null != r.Jb && r.Jb(t, r, n), r.Dc += n, 1); } function pt(t) { t.ma.memory = null; } function gt(t, e, r, n) { return 47 != y(t, 8) ? 0 : (e[0] = y(t, 14) + 1, r[0] = y(t, 14) + 1, n[0] = y(t, 1), 0 != y(t, 3) ? 0 : !t.h); } function mt(t, e) { if (4 > t) return t + 1; var r = t - 2 >> 1; return (2 + (1 & t) << r) + y(e, r) + 1; } function vt(t, e) { return 120 < e ? e - 120 : 1 <= (r = ((r = Zn[e - 1]) >> 4) * t + (8 - (15 & r))) ? r : 1; var r; } function bt(t, e, r) { var n = L(r), i = t[e += 255 & n].g - 8; return 0 < i && (A(r, r.u + 8), n = L(r), e += t[e].value, e += n & (1 << i) - 1), A(r, r.u + t[e].g), t[e].value; } function yt(t, r, n) { return n.g += t.g, n.value += t.value << r >>> 0, e(8 >= n.g), t.g; } function wt(t, r, n) { var i = t.xc; return e((r = 0 == i ? 0 : t.vc[t.md * (n >> i) + (r >> i)]) < t.Wb), t.Ya[r]; } function Nt(t, r, i, a) { var o = t.ab, s = t.c * r, u = t.C; r = u + r; var c = i, l = a; for (a = t.Ta, i = t.Ua; 0 < o--;) { var h = t.gc[o], f = u, d = r, p = c, g = l, m = (l = a, c = i, h.Ea); switch (e(f < d), e(d <= h.nc), h.hc) { case 2: Vr(p, g, (d - f) * m, l, c); break; case 0: var v = f, b = d, y = l, w = c, N = (_ = h).Ea; 0 == v && (Hr(p, g, null, null, 1, y, w), V(p, g + 1, 0, 0, N - 1, y, w + 1), g += N, w += N, ++v); for (var L = 1 << _.b, x = L - 1, A = E(N, _.b), S = _.K, _ = _.w + (v >> _.b) * A; v < b;) { var P = S, k = _, F = 1; for (Wr(p, g, y, w - N, 1, y, w); F < N;) { var I = (F & ~x) + L; I > N && (I = N), (0, Kr[P[k++] >> 8 & 15])(p, g + +F, y, w + F - N, I - F, y, w + F), F = I; } g += N, w += N, ++v & x || (_ += A); } d != h.nc && n(l, c - m, l, c + (d - f - 1) * m, m); break; case 1: for (m = p, b = g, N = (p = h.Ea) - (w = p & ~(y = (g = 1 << h.b) - 1)), v = E(p, h.b), L = h.K, h = h.w + (f >> h.b) * v; f < d;) { for (x = L, A = h, S = new T(), _ = b + w, P = b + p; b < _;) Y(x[A++], S), Zr(S, m, b, g, l, c), b += g, c += g; b < P && (Y(x[A++], S), Zr(S, m, b, N, l, c), b += N, c += N), ++f & y || (h += v); } break; case 3: if (p == l && g == c && 0 < h.b) { for (b = l, p = m = c + (d - f) * m - (w = (d - f) * E(h.Ea, h.b)), g = l, y = c, v = [], w = (N = w) - 1; 0 <= w; --w) v[w] = g[y + w]; for (w = N - 1; 0 <= w; --w) b[p + w] = v[w]; Gr(h, f, d, l, m, l, c); } else Gr(h, f, d, p, g, l, c); } c = a, l = i; } l != i && n(a, i, c, l, s); } function Lt(t, r) { var n = t.V, i = t.Ba + t.c * t.C, a = r - t.C; if (e(r <= t.l.o), e(16 >= a), 0 < a) { var o = t.l, s = t.Ta, u = t.Ua, c = o.width; if (Nt(t, a, n, i), a = u = [u], e((n = t.C) < (i = r)), e(o.v < o.va), i > o.o && (i = o.o), n < o.j) { var l = o.j - n; n = o.j, a[0] += l * c; } if (n >= i ? n = 0 : (a[0] += 4 * o.v, o.ka = n - o.j, o.U = o.va - o.v, o.T = i - n, n = 1), n) { if (u = u[0], 11 > (n = t.ca).S) { var h = n.f.RGBA, f = (i = n.S, a = o.U, o = o.T, l = h.eb, h.A), d = o; for (h = h.fb + t.Ma * h.A; 0 < d--;) { var p = s, g = u, m = a, v = l, b = h; switch (i) { case Mn: $r(p, g, m, v, b); break; case qn: Qr(p, g, m, v, b); break; case Un: Qr(p, g, m, v, b), Ln(v, b, 0, m, 1, 0); break; case En: rn(p, g, m, v, b); break; case Rn: et(p, g, m, v, b, 1); break; case Hn: et(p, g, m, v, b, 1), Ln(v, b, 0, m, 1, 0); break; case Dn: et(p, g, m, v, b, 0); break; case Wn: et(p, g, m, v, b, 0), Ln(v, b, 1, m, 1, 0); break; case Tn: tn(p, g, m, v, b); break; case Vn: tn(p, g, m, v, b), xn(v, b, m, 1, 0); break; case zn: en(p, g, m, v, b); break; default: e(0); } u += c, h += f; } t.Ma += o; } else alert("todo:EmitRescaledRowsYUVA"); e(t.Ma <= n.height); } } t.C = r, e(t.C <= t.i); } function xt(t) { var e; if (0 < t.ua) return 0; for (e = 0; e < t.Wb; ++e) { var r = t.Ya[e].G, n = t.Ya[e].H; if (0 < r[1][n[1] + 0].g || 0 < r[2][n[2] + 0].g || 0 < r[3][n[3] + 0].g) return 0; } return 1; } function At(t, r, n, i, a, o) { if (0 != t.Z) { var s = t.qd, u = t.rd; for (e(null != gi[t.Z]); r < n; ++r) gi[t.Z](s, u, i, a, i, a, o), s = i, u = a, a += o; t.qd = s, t.rd = u; } } function St(t, r) { var n = t.l.ma, i = 0 == n.Z || 1 == n.Z ? t.l.j : t.C; if (i = t.C < i ? i : t.C, e(r <= t.l.o), r > i) { var a = t.l.width, o = n.ca, s = n.tb + a * i, u = t.V, c = t.Ba + t.c * i, l = t.gc; e(1 == t.ab), e(3 == l[0].hc), Jr(l[0], i, r, u, c, o, s), At(n, i, r, o, s, a); } t.C = t.Ma = r; } function _t(t, r, n, i, a, o, s) { var u = t.$ / i, c = t.$ % i, l = t.m, h = t.s, f = n + t.$, d = f; a = n + i * a; var p = n + i * o, g = 280 + h.ua, m = t.Pb ? u : 16777216, v = 0 < h.ua ? h.Wa : null, b = h.wc, y = f < p ? wt(h, c, u) : null; e(t.C < o), e(p <= a); var w = !1; t: for (;;) { for (; w || f < p;) { var N = 0; if (u >= m) { var _ = f - n; e((m = t).Pb), m.wd = m.m, m.xd = _, 0 < m.s.ua && B(m.s.Wa, m.s.vb), m = u + Qn; } if (c & b || (y = wt(h, c, u)), e(null != y), y.Qb && (r[f] = y.qb, w = !0), !w) if (S(l), y.jc) { N = l, _ = r; var P = f, k = y.pd[L(N) & Er - 1]; e(y.jc), 256 > k.g ? (A(N, N.u + k.g), _[P] = k.value, N = 0) : (A(N, N.u + k.g - 256), e(256 <= k.value), N = k.value), 0 == N && (w = !0); } else N = bt(y.G[0], y.H[0], l); if (l.h) break; if (w || 256 > N) { if (!w) if (y.nd) r[f] = (y.qb | N << 8) >>> 0; else { if (S(l), w = bt(y.G[1], y.H[1], l), S(l), _ = bt(y.G[2], y.H[2], l), P = bt(y.G[3], y.H[3], l), l.h) break; r[f] = (P << 24 | w << 16 | N << 8 | _) >>> 0; } if (w = !1, ++f, ++c >= i && (c = 0, ++u, null != s && u <= o && !(u % 16) && s(t, u), null != v)) for (; d < f;) N = r[d++], v.X[(506832829 * N & 4294967295) >>> v.Mb] = N; } else if (280 > N) { if (N = mt(N - 256, l), _ = bt(y.G[4], y.H[4], l), S(l), _ = vt(i, _ = mt(_, l)), l.h) break; if (f - n < _ || a - f < N) break t; for (P = 0; P < N; ++P) r[f + P] = r[f + P - _]; for (f += N, c += N; c >= i;) c -= i, ++u, null != s && u <= o && !(u % 16) && s(t, u); if (e(f <= a), c & b && (y = wt(h, c, u)), null != v) for (; d < f;) N = r[d++], v.X[(506832829 * N & 4294967295) >>> v.Mb] = N; } else { if (!(N < g)) break t; for (w = N - 280, e(null != v); d < f;) N = r[d++], v.X[(506832829 * N & 4294967295) >>> v.Mb] = N; N = f, e(!(w >>> (_ = v).Xa)), r[N] = _.X[w], w = !0; } w || e(l.h == x(l)); } if (t.Pb && l.h && f < a) e(t.m.h), t.a = 5, t.m = t.wd, t.$ = t.xd, 0 < t.s.ua && B(t.s.vb, t.s.Wa); else { if (l.h) break t; s?.(t, u > o ? o : u), t.a = 0, t.$ = f - n; } return 1; } return t.a = 3, 0; } function Pt(t) { e(null != t), t.vc = null, t.yc = null, t.Ya = null; var r = t.Wa; null != r && (r.X = null), t.vb = null, e(null != t); } function kt() { var e = new ar(); return null == e ? null : (e.a = 0, e.xb = pi, rt("Predictor", "VP8LPredictors"), rt("Predictor", "VP8LPredictors_C"), rt("PredictorAdd", "VP8LPredictorsAdd"), rt("PredictorAdd", "VP8LPredictorsAdd_C"), Vr = G, Zr = J, $r = K, Qr = Z, tn = $, en = Q, rn = tt, t.VP8LMapColor32b = Yr, t.VP8LMapColor8b = Xr, e); } function Ft(t, r, n, s, u) { var c = 1, f = [t], p = [r], g = s.m, m = s.s, v = null, b = 0; t: for (;;) { if (n) for (; c && y(g, 1);) { var w = f, N = p, x = s, _ = 1, P = x.m, k = x.gc[x.ab], F = y(P, 2); if (x.Oc & 1 << F) c = 0; else { switch (x.Oc |= 1 << F, k.hc = F, k.Ea = w[0], k.nc = N[0], k.K = [null], ++x.ab, e(4 >= x.ab), F) { case 0: case 1: k.b = y(P, 3) + 2, _ = Ft(E(k.Ea, k.b), E(k.nc, k.b), 0, x, k.K), k.K = k.K[0]; break; case 3: var I, C = y(P, 8) + 1, j = 16 < C ? 0 : 4 < C ? 1 : 2 < C ? 2 : 3; if (w[0] = E(k.Ea, j), k.b = j, I = _ = Ft(C, 1, 0, x, k.K)) { var B, M = C, q = k, D = 1 << (8 >> q.b), T = a(D); if (null == T) I = 0; else { var z = q.K[0], U = q.w; for (T[0] = q.K[0][0], B = 1; B < 1 * M; ++B) T[B] = R(z[U + B], T[B - 1]); for (; B < 4 * D; ++B) T[B] = 0; q.K[0] = null, q.K[0] = T, I = 1; } } _ = I; break; case 2: break; default: e(0); } c = _; } } if (f = f[0], p = p[0], c && y(g, 1) && !(c = 1 <= (b = y(g, 4)) && 11 >= b)) { s.a = 3; break t; } var H; if (H = c) e: { var W, V, G, Y = s, J = f, X = p, K = b, Z = n, $ = Y.m, Q = Y.s, tt = [null], et = 1, rt = 0, nt = $n[K]; r: for (;;) { if (Z && y($, 1)) { var it = y($, 3) + 2, at = E(J, it), ot = E(X, it), st = at * ot; if (!Ft(at, ot, 0, Y, tt)) break r; for (tt = tt[0], Q.xc = it, W = 0; W < st; ++W) { var ut = tt[W] >> 8 & 65535; tt[W] = ut, ut >= et && (et = ut + 1); } } if ($.h) break r; for (V = 0; 5 > V; ++V) { var ct = Jn[V]; !V && 0 < K && (ct += 1 << K), rt < ct && (rt = ct); } var lt = o(et * nt, h), ht = et, ft = o(ht, d); if (null == ft) var dt = null; else e(65536 >= ht), dt = ft; var pt = a(rt); if (null == dt || null == pt || null == lt) { Y.a = 1; break r; } var gt = lt; for (W = G = 0; W < et; ++W) { var mt = dt[W], vt = mt.G, bt = mt.H, wt = 0, Nt = 1, Lt = 0; for (V = 0; 5 > V; ++V) { ct = Jn[V], vt[V] = gt, bt[V] = G, !V && 0 < K && (ct += 1 << K); n: { var xt, At = ct, St = Y, kt = pt, It = gt, Ct = G, jt = 0, Ot = St.m, Bt = y(Ot, 1); if (i(kt, 0, 0, At), Bt) { var Mt = y(Ot, 1) + 1, Et = y(Ot, 0 == y(Ot, 1) ? 1 : 8); kt[Et] = 1, 2 == Mt && (kt[Et = y(Ot, 8)] = 1); var Rt = 1; } else { var Dt = a(19), Tt = y(Ot, 4) + 4; if (19 < Tt) { St.a = 3; var zt = 0; break n; } for (xt = 0; xt < Tt; ++xt) Dt[Kn[xt]] = y(Ot, 3); var Ut = void 0, Ht = void 0, Wt = St, Vt = Dt, Gt = At, Yt = kt, Jt = 0, Xt = Wt.m, Kt = 8, Zt = o(128, h); i: for (; l(Zt, 0, 7, Vt, 19);) { if (y(Xt, 1)) { if ((Ut = 2 + y(Xt, 2 + 2 * y(Xt, 3))) > Gt) break i; } else Ut = Gt; for (Ht = 0; Ht < Gt && Ut--;) { S(Xt); var Qt = Zt[0 + (127 & L(Xt))]; A(Xt, Xt.u + Qt.g); var te = Qt.value; if (16 > te) Yt[Ht++] = te, 0 != te && (Kt = te); else { var ee = 16 == te, re = te - 16, ne = Yn[re], ie = y(Xt, Gn[re]) + ne; if (Ht + ie > Gt) break i; for (var ae = ee ? Kt : 0; 0 < ie--;) Yt[Ht++] = ae; } } Jt = 1; break i; } Jt || (Wt.a = 3), Rt = Jt; } (Rt = Rt && !Ot.h) && (jt = l(It, Ct, 8, kt, At)), Rt && 0 != jt ? zt = jt : (St.a = 3, zt = 0); } if (0 == zt) break r; if (Nt && 1 == Xn[V] && (Nt = 0 == gt[G].g), wt += gt[G].g, G += zt, 3 >= V) { var oe, se = pt[0]; for (oe = 1; oe < ct; ++oe) pt[oe] > se && (se = pt[oe]); Lt += se; } } if (mt.nd = Nt, mt.Qb = 0, Nt && (mt.qb = (vt[3][bt[3] + 0].value << 24 | vt[1][bt[1] + 0].value << 16 | vt[2][bt[2] + 0].value) >>> 0, 0 == wt && 256 > vt[0][bt[0] + 0].value && (mt.Qb = 1, mt.qb += vt[0][bt[0] + 0].value << 8)), mt.jc = !mt.Qb && 6 > Lt, mt.jc) { var ue, ce = mt; for (ue = 0; ue < Er; ++ue) { var le = ue, he = ce.pd[le], fe = ce.G[0][ce.H[0] + le]; 256 <= fe.value ? (he.g = fe.g + 256, he.value = fe.value) : (he.g = 0, he.value = 0, le >>= yt(fe, 8, he), le >>= yt(ce.G[1][ce.H[1] + le], 16, he), le >>= yt(ce.G[2][ce.H[2] + le], 0, he), yt(ce.G[3][ce.H[3] + le], 24, he)); } } } Q.vc = tt, Q.Wb = et, Q.Ya = dt, Q.yc = lt, H = 1; break e; } H = 0; } if (!(c = H)) { s.a = 3; break t; } if (0 < b) { if (m.ua = 1 << b, !O(m.Wa, b)) { s.a = 1, c = 0; break t; } } else m.ua = 0; var de = s, pe = f, ge = p, me = de.s, ve = me.xc; if (de.c = pe, de.i = ge, me.md = E(pe, ve), me.wc = 0 == ve ? -1 : (1 << ve) - 1, n) { s.xb = di; break t; } if (null == (v = a(f * p))) { s.a = 1, c = 0; break t; } c = (c = _t(s, v, 0, f, p, p, null)) && !g.h; break t; } return c ? (null != u ? u[0] = v : (e(null == v), e(n)), s.$ = 0, n || Pt(m)) : Pt(m), c; } function It(t, r) { var n = t.c * t.i, i = n + r + 16 * r; return e(t.c <= r), t.V = a(i), null == t.V ? (t.Ta = null, t.Ua = 0, t.a = 1, 0) : (t.Ta = t.V, t.Ua = t.Ba + n + r, 1); } function Ct(t, r) { var n = t.C, i = r - n, a = t.V, o = t.Ba + t.c * n; for (e(r <= t.l.o); 0 < i;) { var s = 16 < i ? 16 : i, u = t.l.ma, c = t.l.width, l = c * s, h = u.ca, f = u.tb + c * n, d = t.Ta, p = t.Ua; Nt(t, s, a, o), Sn(d, p, h, f, l), At(u, n, n + s, h, f, c), i -= s, a += s * t.c, n += s; } e(n == r), t.C = t.Ma = r; } function jt() { this.ub = this.yd = this.td = this.Rb = 0; } function Ot() { this.Kd = this.Ld = this.Ud = this.Td = this.i = this.c = 0; } function Bt() { this.Fb = this.Bb = this.Cb = 0, this.Zb = a(4), this.Lb = a(4); } function Mt() { this.Yb = function() { var t = []; return function t(e, r, n) { for (var i = n[r], a = 0; a < i && (e.push(n.length > r + 1 ? [] : 0), !(n.length < r + 1)); a++) t(e[a], r + 1, n); }(t, 0, [3, 11]), t; }(); } function qt() { this.jb = a(3), this.Wc = s([4, 8], Mt), this.Xc = s([4, 17], Mt); } function Et() { this.Pc = this.wb = this.Tb = this.zd = 0, this.vd = new a(4), this.od = new a(4); } function Rt() { this.ld = this.La = this.dd = this.tc = 0; } function Dt() { this.Na = this.la = 0; } function Tt() { this.Sc = [0, 0], this.Eb = [0, 0], this.Qc = [0, 0], this.ia = this.lc = 0; } function zt() { this.ad = a(384), this.Za = 0, this.Ob = a(16), this.$b = this.Ad = this.ia = this.Gc = this.Hc = this.Dd = 0; } function Ut() { this.uc = this.M = this.Nb = 0, this.wa = Array(new Rt()), this.Y = 0, this.ya = Array(new zt()), this.aa = 0, this.l = new Gt(); } function Ht() { this.y = a(16), this.f = a(8), this.ea = a(8); } function Wt() { this.cb = this.a = 0, this.sc = "", this.m = new w(), this.Od = new jt(), this.Kc = new Ot(), this.ed = new Et(), this.Qa = new Bt(), this.Ic = this.$c = this.Aa = 0, this.D = new Ut(), this.Xb = this.Va = this.Hb = this.zb = this.yb = this.Ub = this.za = 0, this.Jc = o(8, w), this.ia = 0, this.pb = o(4, Tt), this.Pa = new qt(), this.Bd = this.kc = 0, this.Ac = [], this.Bc = 0, this.zc = [ 0, 0, 0, 0 ], this.Gd = Array(new Ht()), this.Hd = 0, this.rb = Array(new Dt()), this.sb = 0, this.wa = Array(new Rt()), this.Y = 0, this.oc = [], this.pc = 0, this.sa = [], this.ta = 0, this.qa = [], this.ra = 0, this.Ha = [], this.B = this.R = this.Ia = 0, this.Ec = [], this.M = this.ja = this.Vb = this.Fc = 0, this.ya = Array(new zt()), this.L = this.aa = 0, this.gd = s([4, 2], Rt), this.ga = null, this.Fa = [], this.Cc = this.qc = this.P = 0, this.Gb = [], this.Uc = 0, this.mb = [], this.nb = 0, this.rc = [], this.Ga = this.Vc = 0; } function Vt(t, e) { return 0 > t ? 0 : t > e ? e : t; } function Gt() { this.T = this.U = this.ka = this.height = this.width = 0, this.y = [], this.f = [], this.ea = [], this.Rc = this.fa = this.W = this.N = this.O = 0, this.ma = "void", this.put = "VP8IoPutHook", this.ac = "VP8IoSetupHook", this.bc = "VP8IoTeardownHook", this.ha = this.Kb = 0, this.data = [], this.hb = this.ib = this.da = this.o = this.j = this.va = this.v = this.Da = this.ob = this.w = 0, this.F = [], this.J = 0; } function Yt() { var t = new Wt(); return null != t && (t.a = 0, t.sc = "OK", t.cb = 0, t.Xb = 0, ri || (ri = Zt)), t; } function Jt(t, e, r) { return 0 == t.a && (t.a = e, t.sc = r, t.cb = 0), 0; } function Xt(t, e, r) { return 3 <= r && 157 == t[e + 0] && 1 == t[e + 1] && 42 == t[e + 2]; } function Kt(t, r) { if (null == t) return 0; if (t.a = 0, t.sc = "OK", null == r) return Jt(t, 2, "null VP8Io passed to VP8GetHeaders()"); var n = r.data, a = r.w, o = r.ha; if (4 > o) return Jt(t, 7, "Truncated header."); var s = n[a + 0] | n[a + 1] << 8 | n[a + 2] << 16, u = t.Od; if (u.Rb = !(1 & s), u.td = s >> 1 & 7, u.yd = s >> 4 & 1, u.ub = s >> 5, 3 < u.td) return Jt(t, 3, "Incorrect keyframe parameters."); if (!u.yd) return Jt(t, 4, "Frame not displayable."); a += 3, o -= 3; var c = t.Kc; if (u.Rb) { if (7 > o) return Jt(t, 7, "cannot parse picture header"); if (!Xt(n, a, o)) return Jt(t, 3, "Bad code word"); c.c = 16383 & (n[a + 4] << 8 | n[a + 3]), c.Td = n[a + 4] >> 6, c.i = 16383 & (n[a + 6] << 8 | n[a + 5]), c.Ud = n[a + 6] >> 6, a += 7, o -= 7, t.za = c.c + 15 >> 4, t.Ub = c.i + 15 >> 4, r.width = c.c, r.height = c.i, r.Da = 0, r.j = 0, r.v = 0, r.va = r.width, r.o = r.height, r.da = 0, r.ib = r.width, r.hb = r.height, r.U = r.width, r.T = r.height, i((s = t.Pa).jb, 0, 255, s.jb.length), e(null != (s = t.Qa)), s.Cb = 0, s.Bb = 0, s.Fb = 1, i(s.Zb, 0, 0, s.Zb.length), i(s.Lb, 0, 0, s.Lb); } if (u.ub > o) return Jt(t, 7, "bad partition length"); p(s = t.m, n, a, u.ub), a += u.ub, o -= u.ub, u.Rb && (c.Ld = P(s), c.Kd = P(s)), c = t.Qa; var l, h = t.Pa; if (e(null != s), e(null != c), c.Cb = P(s), c.Cb) { if (c.Bb = P(s), P(s)) { for (c.Fb = P(s), l = 0; 4 > l; ++l) c.Zb[l] = P(s) ? m(s, 7) : 0; for (l = 0; 4 > l; ++l) c.Lb[l] = P(s) ? m(s, 6) : 0; } if (c.Bb) for (l = 0; 3 > l; ++l) h.jb[l] = P(s) ? g(s, 8) : 255; } else c.Bb = 0; if (s.Ka) return Jt(t, 3, "cannot parse segment header"); if ((c = t.ed).zd = P(s), c.Tb = g(s, 6), c.wb = g(s, 3), c.Pc = P(s), c.Pc && P(s)) { for (h = 0; 4 > h; ++h) P(s) && (c.vd[h] = m(s, 6)); for (h = 0; 4 > h; ++h) P(s) && (c.od[h] = m(s, 6)); } if (t.L = 0 == c.Tb ? 0 : c.zd ? 1 : 2, s.Ka) return Jt(t, 3, "cannot parse filter header"); var f = o; if (o = l = a, a = l + f, c = f, t.Xb = (1 << g(t.m, 2)) - 1, f < 3 * (h = t.Xb)) n = 7; else { for (l += 3 * h, c -= 3 * h, f = 0; f < h; ++f) { var d = n[o + 0] | n[o + 1] << 8 | n[o + 2] << 16; d > c && (d = c), p(t.Jc[+f], n, l, d), l += d, c -= d, o += 3; } p(t.Jc[+h], n, l, c), n = l < a ? 0 : 5; } if (0 != n) return Jt(t, n, "cannot parse partitions"); for (n = g(l = t.m, 7), o = P(l) ? m(l, 4) : 0, a = P(l) ? m(l, 4) : 0, c = P(l) ? m(l, 4) : 0, h = P(l) ? m(l, 4) : 0, l = P(l) ? m(l, 4) : 0, f = t.Qa, d = 0; 4 > d; ++d) { if (f.Cb) { var v = f.Zb[d]; f.Fb || (v += n); } else { if (0 < d) { t.pb[d] = t.pb[0]; continue; } v = n; } var b = t.pb[d]; b.Sc[0] = ti[Vt(v + o, 127)], b.Sc[1] = ei[Vt(v + 0, 127)], b.Eb[0] = 2 * ti[Vt(v + a, 127)], b.Eb[1] = 101581 * ei[Vt(v + c, 127)] >> 16, 8 > b.Eb[1] && (b.Eb[1] = 8), b.Qc[0] = ti[Vt(v + h, 117)], b.Qc[1] = ei[Vt(v + l, 127)], b.lc = v + l; } if (!u.Rb) return Jt(t, 4, "Not a key frame."); for (P(s), u = t.Pa, n = 0; 4 > n; ++n) { for (o = 0; 8 > o; ++o) for (a = 0; 3 > a; ++a) for (c = 0; 11 > c; ++c) h = k(s, ui[n][o][a][c]) ? g(s, 8) : oi[n][o][a][c], u.Wc[n][o].Yb[a][c] = h; for (o = 0; 17 > o; ++o) u.Xc[n][o] = u.Wc[n][ci[o]]; } return t.kc = P(s), t.kc && (t.Bd = g(s, 8)), t.cb = 1; } function Zt(t, e, r, n, i, a, o) { var s = e[i].Yb[r]; for (r = 0; 16 > i; ++i) { if (!k(t, s[r + 0])) return i; for (; !k(t, s[r + 1]);) if (s = e[++i].Yb[0], r = 0, 16 == i) return 16; var u = e[i + 1].Yb; if (k(t, s[r + 2])) { var c = t, l = 0; if (k(c, (f = s)[(h = r) + 3])) if (k(c, f[h + 6])) { for (s = 0, h = 2 * (l = k(c, f[h + 8])) + (f = k(c, f[h + 9 + l])), l = 0, f = ni[h]; f[s]; ++s) l += l + k(c, f[s]); l += 3 + (8 << h); } else k(c, f[h + 7]) ? (l = 7 + 2 * k(c, 165), l += k(c, 145)) : l = 5 + k(c, 159); else l = k(c, f[h + 4]) ? 3 + k(c, f[h + 5]) : 2; s = u[2]; } else l = 1, s = u[1]; u = o + ii[i], 0 > (c = t).b && _(c); var h, f = c.b, d = (h = c.Ca >> 1) - (c.I >> f) >> 31; --c.b, c.Ca += d, c.Ca |= 1, c.I -= (h + 1 & d) << f, a[u] = ((l ^ d) - d) * n[(0 < i) + 0]; } return 16; } function $t(t) { var e = t.rb[t.sb - 1]; e.la = 0, e.Na = 0, i(t.zc, 0, 0, t.zc.length), t.ja = 0; } function Qt(t, e, r, n, i) { i = t[e + r + 32 * n] + (i >> 3), t[e + r + 32 * n] = -256 & i ? 0 > i ? 0 : 255 : i; } function te(t, e, r, n, i, a) { Qt(t, e, 0, r, n + i), Qt(t, e, 1, r, n + a), Qt(t, e, 2, r, n - a), Qt(t, e, 3, r, n - i); } function ee(t) { return (20091 * t >> 16) + t; } function re(t, e, r, n) { var i, o = 0, s = a(16); for (i = 0; 4 > i; ++i) { var u = t[e + 0] + t[e + 8], c = t[e + 0] - t[e + 8], l = (35468 * t[e + 4] >> 16) - ee(t[e + 12]), h = ee(t[e + 4]) + (35468 * t[e + 12] >> 16); s[o + 0] = u + h, s[o + 1] = c + l, s[o + 2] = c - l, s[o + 3] = u - h, o += 4, e++; } for (i = o = 0; 4 > i; ++i) u = (t = s[o + 0] + 4) + s[o + 8], c = t - s[o + 8], l = (35468 * s[o + 4] >> 16) - ee(s[o + 12]), Qt(r, n, 0, 0, u + (h = ee(s[o + 4]) + (35468 * s[o + 12] >> 16))), Qt(r, n, 1, 0, c + l), Qt(r, n, 2, 0, c - l), Qt(r, n, 3, 0, u - h), o++, n += 32; } function ne(t, e, r, n) { var i = t[e + 0] + 4, a = 35468 * t[e + 4] >> 16, o = ee(t[e + 4]), s = 35468 * t[e + 1] >> 16; te(r, n, 0, i + o, t = ee(t[e + 1]), s), te(r, n, 1, i + a, t, s), te(r, n, 2, i - a, t, s), te(r, n, 3, i - o, t, s); } function ie(t, e, r, n, i) { re(t, e, r, n), i && re(t, e + 16, r, n + 4); } function ae(t, e, r, n) { an(t, e + 0, r, n, 1), an(t, e + 32, r, n + 128, 1); } function oe(t, e, r, n) { var i; for (t = t[e + 0] + 4, i = 0; 4 > i; ++i) for (e = 0; 4 > e; ++e) Qt(r, n, e, i, t); } function se(t, e, r, n) { t[e + 0] && un(t, e + 0, r, n), t[e + 16] && un(t, e + 16, r, n + 4), t[e + 32] && un(t, e + 32, r, n + 128), t[e + 48] && un(t, e + 48, r, n + 128 + 4); } function ue(t, e, r, n) { var i, o = a(16); for (i = 0; 4 > i; ++i) { var s = t[e + 0 + i] + t[e + 12 + i], u = t[e + 4 + i] + t[e + 8 + i], c = t[e + 4 + i] - t[e + 8 + i], l = t[e + 0 + i] - t[e + 12 + i]; o[0 + i] = s + u, o[8 + i] = s - u, o[4 + i] = l + c, o[12 + i] = l - c; } for (i = 0; 4 > i; ++i) s = (t = o[0 + 4 * i] + 3) + o[3 + 4 * i], u = o[1 + 4 * i] + o[2 + 4 * i], c = o[1 + 4 * i] - o[2 + 4 * i], l = t - o[3 + 4 * i], r[n + 0] = s + u >> 3, r[n + 16] = l + c >> 3, r[n + 32] = s - u >> 3, r[n + 48] = l - c >> 3, n += 64; } function ce(t, e, r) { var n, i = e - 32, a = On, o = 255 - t[i - 1]; for (n = 0; n < r; ++n) { var s, u = a, c = o + t[e - 1]; for (s = 0; s < r; ++s) t[e + s] = u[c + t[i + s]]; e += 32; } } function le(t, e) { ce(t, e, 4); } function he(t, e) { ce(t, e, 8); } function fe(t, e) { ce(t, e, 16); } function de(t, e) { var r; for (r = 0; 16 > r; ++r) n(t, e + 32 * r, t, e - 32, 16); } function pe(t, e) { var r; for (r = 16; 0 < r; --r) i(t, e, t[e - 1], 16), e += 32; } function ge(t, e, r) { var n; for (n = 0; 16 > n; ++n) i(e, r + 32 * n, t, 16); } function me(t, e) { var r, n = 16; for (r = 0; 16 > r; ++r) n += t[e - 1 + 32 * r] + t[e + r - 32]; ge(n >> 5, t, e); } function ve(t, e) { var r, n = 8; for (r = 0; 16 > r; ++r) n += t[e - 1 + 32 * r]; ge(n >> 4, t, e); } function be(t, e) { var r, n = 8; for (r = 0; 16 > r; ++r) n += t[e + r - 32]; ge(n >> 4, t, e); } function ye(t, e) { ge(128, t, e); } function we(t, e, r) { return t + 2 * e + r + 2 >> 2; } function Ne(t, e) { var r, i = e - 32; for (i = new Uint8Array([ we(t[i - 1], t[i + 0], t[i + 1]), we(t[i + 0], t[i + 1], t[i + 2]), we(t[i + 1], t[i + 2], t[i + 3]), we(t[i + 2], t[i + 3], t[i + 4]) ]), r = 0; 4 > r; ++r) n(t, e + 32 * r, i, 0, i.length); } function Le(t, e) { var r = t[e - 1], n = t[e - 1 + 32], i = t[e - 1 + 64], a = t[e - 1 + 96]; F(t, e + 0, 16843009 * we(t[e - 1 - 32], r, n)), F(t, e + 32, 16843009 * we(r, n, i)), F(t, e + 64, 16843009 * we(n, i, a)), F(t, e + 96, 16843009 * we(i, a, a)); } function xe(t, e) { var r, n = 4; for (r = 0; 4 > r; ++r) n += t[e + r - 32] + t[e - 1 + 32 * r]; for (n >>= 3, r = 0; 4 > r; ++r) i(t, e + 32 * r, n, 4); } function Ae(t, e) { var r = t[e - 1 + 0], n = t[e - 1 + 32], i = t[e - 1 + 64], a = t[e - 1 - 32], o = t[e + 0 - 32], s = t[e + 1 - 32], u = t[e + 2 - 32], c = t[e + 3 - 32]; t[e + 0 + 96] = we(n, i, t[e - 1 + 96]), t[e + 1 + 96] = t[e + 0 + 64] = we(r, n, i), t[e + 2 + 96] = t[e + 1 + 64] = t[e + 0 + 32] = we(a, r, n), t[e + 3 + 96] = t[e + 2 + 64] = t[e + 1 + 32] = t[e + 0 + 0] = we(o, a, r), t[e + 3 + 64] = t[e + 2 + 32] = t[e + 1 + 0] = we(s, o, a), t[e + 3 + 32] = t[e + 2 + 0] = we(u, s, o), t[e + 3 + 0] = we(c, u, s); } function Se(t, e) { var r = t[e + 1 - 32], n = t[e + 2 - 32], i = t[e + 3 - 32], a = t[e + 4 - 32], o = t[e + 5 - 32], s = t[e + 6 - 32], u = t[e + 7 - 32]; t[e + 0 + 0] = we(t[e + 0 - 32], r, n), t[e + 1 + 0] = t[e + 0 + 32] = we(r, n, i), t[e + 2 + 0] = t[e + 1 + 32] = t[e + 0 + 64] = we(n, i, a), t[e + 3 + 0] = t[e + 2 + 32] = t[e + 1 + 64] = t[e + 0 + 96] = we(i, a, o), t[e + 3 + 32] = t[e + 2 + 64] = t[e + 1 + 96] = we(a, o, s), t[e + 3 + 64] = t[e + 2 + 96] = we(o, s, u), t[e + 3 + 96] = we(s, u, u); } function _e(t, e) { var r = t[e - 1 + 0], n = t[e - 1 + 32], i = t[e - 1 + 64], a = t[e - 1 - 32], o = t[e + 0 - 32], s = t[e + 1 - 32], u = t[e + 2 - 32], c = t[e + 3 - 32]; t[e + 0 + 0] = t[e + 1 + 64] = a + o + 1 >> 1, t[e + 1 + 0] = t[e + 2 + 64] = o + s + 1 >> 1, t[e + 2 + 0] = t[e + 3 + 64] = s + u + 1 >> 1, t[e + 3 + 0] = u + c + 1 >> 1, t[e + 0 + 96] = we(i, n, r), t[e + 0 + 64] = we(n, r, a), t[e + 0 + 32] = t[e + 1 + 96] = we(r, a, o), t[e + 1 + 32] = t[e + 2 + 96] = we(a, o, s), t[e + 2 + 32] = t[e + 3 + 96] = we(o, s, u), t[e + 3 + 32] = we(s, u, c); } function Pe(t, e) { var r = t[e + 0 - 32], n = t[e + 1 - 32], i = t[e + 2 - 32], a = t[e + 3 - 32], o = t[e + 4 - 32], s = t[e + 5 - 32], u = t[e + 6 - 32], c = t[e + 7 - 32]; t[e + 0 + 0] = r + n + 1 >> 1, t[e + 1 + 0] = t[e + 0 + 64] = n + i + 1 >> 1, t[e + 2 + 0] = t[e + 1 + 64] = i + a + 1 >> 1, t[e + 3 + 0] = t[e + 2 + 64] = a + o + 1 >> 1, t[e + 0 + 32] = we(r, n, i), t[e + 1 + 32] = t[e + 0 + 96] = we(n, i, a), t[e + 2 + 32] = t[e + 1 + 96] = we(i, a, o), t[e + 3 + 32] = t[e + 2 + 96] = we(a, o, s), t[e + 3 + 64] = we(o, s, u), t[e + 3 + 96] = we(s, u, c); } function ke(t, e) { var r = t[e - 1 + 0], n = t[e - 1 + 32], i = t[e - 1 + 64], a = t[e - 1 + 96]; t[e + 0 + 0] = r + n + 1 >> 1, t[e + 2 + 0] = t[e + 0 + 32] = n + i + 1 >> 1, t[e + 2 + 32] = t[e + 0 + 64] = i + a + 1 >> 1, t[e + 1 + 0] = we(r, n, i), t[e + 3 + 0] = t[e + 1 + 32] = we(n, i, a), t[e + 3 + 32] = t[e + 1 + 64] = we(i, a, a), t[e + 3 + 64] = t[e + 2 + 64] = t[e + 0 + 96] = t[e + 1 + 96] = t[e + 2 + 96] = t[e + 3 + 96] = a; } function Fe(t, e) { var r = t[e - 1 + 0], n = t[e - 1 + 32], i = t[e - 1 + 64], a = t[e - 1 + 96], o = t[e - 1 - 32], s = t[e + 0 - 32], u = t[e + 1 - 32], c = t[e + 2 - 32]; t[e + 0 + 0] = t[e + 2 + 32] = r + o + 1 >> 1, t[e + 0 + 32] = t[e + 2 + 64] = n + r + 1 >> 1, t[e + 0 + 64] = t[e + 2 + 96] = i + n + 1 >> 1, t[e + 0 + 96] = a + i + 1 >> 1, t[e + 3 + 0] = we(s, u, c), t[e + 2 + 0] = we(o, s, u), t[e + 1 + 0] = t[e + 3 + 32] = we(r, o, s), t[e + 1 + 32] = t[e + 3 + 64] = we(n, r, o), t[e + 1 + 64] = t[e + 3 + 96] = we(i, n, r), t[e + 1 + 96] = we(a, i, n); } function Ie(t, e) { var r; for (r = 0; 8 > r; ++r) n(t, e + 32 * r, t, e - 32, 8); } function Ce(t, e) { var r; for (r = 0; 8 > r; ++r) i(t, e, t[e - 1], 8), e += 32; } function je(t, e, r) { var n; for (n = 0; 8 > n; ++n) i(e, r + 32 * n, t, 8); } function Oe(t, e) { var r, n = 8; for (r = 0; 8 > r; ++r) n += t[e + r - 32] + t[e - 1 + 32 * r]; je(n >> 4, t, e); } function Be(t, e) { var r, n = 4; for (r = 0; 8 > r; ++r) n += t[e + r - 32]; je(n >> 3, t, e); } function Me(t, e) { var r, n = 4; for (r = 0; 8 > r; ++r) n += t[e - 1 + 32 * r]; je(n >> 3, t, e); } function qe(t, e) { je(128, t, e); } function Ee(t, e, r) { var n = t[e - r], i = t[e + 0], a = 3 * (i - n) + Cn[1020 + t[e - 2 * r] - t[e + r]], o = jn[112 + (a + 4 >> 3)]; t[e - r] = On[255 + n + jn[112 + (a + 3 >> 3)]], t[e + 0] = On[255 + i - o]; } function Re(t, e, r, n) { var i = t[e + 0], a = t[e + r]; return Bn[255 + t[e - 2 * r] - t[e - r]] > n || Bn[255 + a - i] > n; } function De(t, e, r, n) { return 4 * Bn[255 + t[e - r] - t[e + 0]] + Bn[255 + t[e - 2 * r] - t[e + r]] <= n; } function Te(t, e, r, n, i) { var a = t[e - 3 * r], o = t[e - 2 * r], s = t[e - r], u = t[e + 0], c = t[e + r], l = t[e + 2 * r], h = t[e + 3 * r]; return 4 * Bn[255 + s - u] + Bn[255 + o - c] > n ? 0 : Bn[255 + t[e - 4 * r] - a] <= i && Bn[255 + a - o] <= i && Bn[255 + o - s] <= i && Bn[255 + h - l] <= i && Bn[255 + l - c] <= i && Bn[255 + c - u] <= i; } function ze(t, e, r, n) { var i = 2 * n + 1; for (n = 0; 16 > n; ++n) De(t, e + n, r, i) && Ee(t, e + n, r); } function Ue(t, e, r, n) { var i = 2 * n + 1; for (n = 0; 16 > n; ++n) De(t, e + n * r, 1, i) && Ee(t, e + n * r, 1); } function He(t, e, r, n) { var i; for (i = 3; 0 < i; --i) ze(t, e += 4 * r, r, n); } function We(t, e, r, n) { var i; for (i = 3; 0 < i; --i) Ue(t, e += 4, r, n); } function Ve(t, e, r, n, i, a, o, s) { for (a = 2 * a + 1; 0 < i--;) { if (Te(t, e, r, a, o)) if (Re(t, e, r, s)) Ee(t, e, r); else { var u = t, c = e, l = r, h = u[c - 2 * l], f = u[c - l], d = u[c + 0], p = u[c + l], g = u[c + 2 * l], m = 27 * (b = Cn[1020 + 3 * (d - f) + Cn[1020 + h - p]]) + 63 >> 7, v = 18 * b + 63 >> 7, b = 9 * b + 63 >> 7; u[c - 3 * l] = On[255 + u[c - 3 * l] + b], u[c - 2 * l] = On[255 + h + v], u[c - l] = On[255 + f + m], u[c + 0] = On[255 + d - m], u[c + l] = On[255 + p - v], u[c + 2 * l] = On[255 + g - b]; } e += n; } } function Ge(t, e, r, n, i, a, o, s) { for (a = 2 * a + 1; 0 < i--;) { if (Te(t, e, r, a, o)) if (Re(t, e, r, s)) Ee(t, e, r); else { var u = t, c = e, l = r, h = u[c - l], f = u[c + 0], d = u[c + l], p = jn[112 + (4 + (g = 3 * (f - h)) >> 3)], g = jn[112 + (g + 3 >> 3)], m = p + 1 >> 1; u[c - 2 * l] = On[255 + u[c - 2 * l] + m], u[c - l] = On[255 + h + g], u[c + 0] = On[255 + f - p], u[c + l] = On[255 + d - m]; } e += n; } } function Ye(t, e, r, n, i, a) { Ve(t, e, r, 1, 16, n, i, a); } function Je(t, e, r, n, i, a) { Ve(t, e, 1, r, 16, n, i, a); } function Xe(t, e, r, n, i, a) { var o; for (o = 3; 0 < o; --o) Ge(t, e += 4 * r, r, 1, 16, n, i, a); } function Ke(t, e, r, n, i, a) { var o; for (o = 3; 0 < o; --o) Ge(t, e += 4, 1, r, 16, n, i, a); } function Ze(t, e, r, n, i, a, o, s) { Ve(t, e, i, 1, 8, a, o, s), Ve(r, n, i, 1, 8, a, o, s); } function $e(t, e, r, n, i, a, o, s) { Ve(t, e, 1, i, 8, a, o, s), Ve(r, n, 1, i, 8, a, o, s); } function Qe(t, e, r, n, i, a, o, s) { Ge(t, e + 4 * i, i, 1, 8, a, o, s), Ge(r, n + 4 * i, i, 1, 8, a, o, s); } function tr(t, e, r, n, i, a, o, s) { Ge(t, e + 4, 1, i, 8, a, o, s), Ge(r, n + 4, 1, i, 8, a, o, s); } function er() { this.ba = new ot(), this.ec = [], this.cc = [], this.Mc = [], this.Dc = this.Nc = this.dc = this.fc = 0, this.Oa = new ut(), this.memory = 0, this.Ib = "OutputFunc", this.Jb = "OutputAlphaFunc", this.Nd = "OutputRowFunc"; } function rr() { this.data = [], this.offset = this.kd = this.ha = this.w = 0, this.na = [], this.xa = this.gb = this.Ja = this.Sa = this.P = 0; } function nr() { this.nc = this.Ea = this.b = this.hc = 0, this.K = [], this.w = 0; } function ir() { this.ua = 0, this.Wa = new M(), this.vb = new M(), this.md = this.xc = this.wc = 0, this.vc = [], this.Wb = 0, this.Ya = new d(), this.yc = new h(); } function ar() { this.xb = this.a = 0, this.l = new Gt(), this.ca = new ot(), this.V = [], this.Ba = 0, this.Ta = [], this.Ua = 0, this.m = new N(), this.Pb = 0, this.wd = new N(), this.Ma = this.$ = this.C = this.i = this.c = this.xd = 0, this.s = new ir(), this.ab = 0, this.gc = o(4, nr), this.Oc = 0; } function or() { this.Lc = this.Z = this.$a = this.i = this.c = 0, this.l = new Gt(), this.ic = 0, this.ca = [], this.tb = 0, this.qd = null, this.rd = 0; } function sr(t, e, r, n, i, a, o) { for (t = null == t ? 0 : t[e + 0], e = 0; e < o; ++e) i[a + e] = t + r[n + e] & 255, t = i[a + e]; } function ur(t, e, r, n, i, a, o) { var s; if (null == t) sr(null, null, r, n, i, a, o); else for (s = 0; s < o; ++s) i[a + s] = t[e + s] + r[n + s] & 255; } function cr(t, e, r, n, i, a, o) { if (null == t) sr(null, null, r, n, i, a, o); else { var s, u = t[e + 0], c = u, l = u; for (s = 0; s < o; ++s) c = l + (u = t[e + s]) - c, l = r[n + s] + (-256 & c ? 0 > c ? 0 : 255 : c) & 255, c = u, i[a + s] = l; } } function lr(t, r, i, o) { var s = r.width, u = r.o; if (e(null != t && null != r), 0 > i || 0 >= o || i + o > u) return null; if (!t.Cc) { if (null == t.ga) { var c; if (t.ga = new or(), (c = null == t.ga) || (c = r.width * r.o, e(0 == t.Gb.length), t.Gb = a(c), t.Uc = 0, null == t.Gb ? c = 0 : (t.mb = t.Gb, t.nb = t.Uc, t.rc = null, c = 1), c = !c), !c) { c = t.ga; var l = t.Fa, h = t.P, f = t.qc, d = t.mb, p = t.nb, g = h + 1, m = f - 1, b = c.l; if (e(null != l && null != d && null != r), gi[0] = null, gi[1] = sr, gi[2] = ur, gi[3] = cr, c.ca = d, c.tb = p, c.c = r.width, c.i = r.height, e(0 < c.c && 0 < c.i), 1 >= f) r = 0; else if (c.$a = 3 & l[h + 0], c.Z = l[h + 0] >> 2 & 3, c.Lc = l[h + 0] >> 4 & 3, h = l[h + 0] >> 6 & 3, 0 > c.$a || 1 < c.$a || 4 <= c.Z || 1 < c.Lc || h) r = 0; else if (b.put = dt, b.ac = ft, b.bc = pt, b.ma = c, b.width = r.width, b.height = r.height, b.Da = r.Da, b.v = r.v, b.va = r.va, b.j = r.j, b.o = r.o, c.$a) t: { e(1 == c.$a), r = kt(); e: for (;;) { if (null == r) { r = 0; break t; } if (e(null != c), c.mc = r, r.c = c.c, r.i = c.i, r.l = c.l, r.l.ma = c, r.l.width = c.c, r.l.height = c.i, r.a = 0, v(r.m, l, g, m), !Ft(c.c, c.i, 1, r, null)) break e; if (1 == r.ab && 3 == r.gc[0].hc && xt(r.s) ? (c.ic = 1, l = r.c * r.i, r.Ta = null, r.Ua = 0, r.V = a(l), r.Ba = 0, null == r.V ? (r.a = 1, r = 0) : r = 1) : (c.ic = 0, r = It(r, c.c)), !r) break e; r = 1; break t; } c.mc = null, r = 0; } else r = m >= c.c * c.i; c = !r; } if (c) return null; 1 != t.ga.Lc ? t.Ga = 0 : o = u - i; } e(null != t.ga), e(i + o <= u); t: { if (r = (l = t.ga).c, u = l.l.o, 0 == l.$a) { if (g = t.rc, m = t.Vc, b = t.Fa, h = t.P + 1 + i * r, f = t.mb, d = t.nb + i * r, e(h <= t.P + t.qc), 0 != l.Z) for (e(null != gi[l.Z]), c = 0; c < o; ++c) gi[l.Z](g, m, b, h, f, d, r), g = f, m = d, d += r, h += r; else for (c = 0; c < o; ++c) n(f, d, b, h, r), g = f, m = d, d += r, h += r; t.rc = g, t.Vc = m; } else { if (e(null != l.mc), r = i + o, e(null != (c = l.mc)), e(r <= c.i), c.C >= r) r = 1; else if (l.ic || gr(), l.ic) { l = c.V, g = c.Ba, m = c.c; var y = c.i, w = (b = 1, h = c.$ / m, f = c.$ % m, d = c.m, p = c.s, c.$), N = m * y, L = m * r, A = p.wc, _ = w < L ? wt(p, f, h) : null; e(w <= N), e(r <= y), e(xt(p)); e: for (;;) { for (; !d.h && w < L;) { if (f & A || (_ = wt(p, f, h)), e(null != _), S(d), 256 > (y = bt(_.G[0], _.H[0], d))) l[g + w] = y, ++w, ++f >= m && (f = 0, ++h <= r && !(h % 16) && St(c, h)); else { if (!(280 > y)) { b = 0; break e; } y = mt(y - 256, d); var P, k = bt(_.G[4], _.H[4], d); if (S(d), !(w >= (k = vt(m, k = mt(k, d))) && N - w >= y)) { b = 0; break e; } for (P = 0; P < y; ++P) l[g + w + P] = l[g + w + P - k]; for (w += y, f += y; f >= m;) f -= m, ++h <= r && !(h % 16) && St(c, h); w < L && f & A && (_ = wt(p, f, h)); } e(d.h == x(d)); } St(c, h > r ? r : h); break e; } !b || d.h && w < N ? (b = 0, c.a = d.h ? 5 : 3) : c.$ = w, r = b; } else r = _t(c, c.V, c.Ba, c.c, c.i, r, Ct); if (!r) { o = 0; break t; } } i + o >= u && (t.Cc = 1), o = 1; } if (!o) return null; if (t.Cc && (null != (o = t.ga) && (o.mc = null), t.ga = null, 0 < t.Ga)) return alert("todo:WebPDequantizeLevels"), null; } return t.nb + i * s; } function hr(t, e, r, n, i, a) { for (; 0 < i--;) { var o, s = t, u = e + (r ? 1 : 0), c = t, l = e + (r ? 0 : 3); for (o = 0; o < n; ++o) { var h = c[l + 4 * o]; 255 != h && (h *= 32897, s[u + 4 * o + 0] = s[u + 4 * o + 0] * h >> 23, s[u + 4 * o + 1] = s[u + 4 * o + 1] * h >> 23, s[u + 4 * o + 2] = s[u + 4 * o + 2] * h >> 23); } e += a; } } function fr(t, e, r, n, i) { for (; 0 < n--;) { var a; for (a = 0; a < r; ++a) { var o = t[e + 2 * a + 0], s = 15 & (c = t[e + 2 * a + 1]), u = 4369 * s, c = (240 & c | c >> 4) * u >> 16; t[e + 2 * a + 0] = (240 & o | o >> 4) * u >> 16 & 240 | (15 & o | o << 4) * u >> 16 >> 4 & 15, t[e + 2 * a + 1] = 240 & c | s; } e += i; } } function dr(t, e, r, n, i, a, o, s) { var u, c, l = 255; for (c = 0; c < i; ++c) { for (u = 0; u < n; ++u) { var h = t[e + u]; a[o + 4 * u] = h, l &= h; } e += r, o += s; } return 255 != l; } function pr(t, e, r, n, i) { var a; for (a = 0; a < i; ++a) r[n + a] = t[e + a] >> 8; } function gr() { Ln = hr, xn = fr, An = dr, Sn = pr; } function mr(r, n, i) { t[r] = function(t, r, a, o, s, u, c, l, h, f, d, p, g, m, v, b, y) { var w, N = y - 1 >> 1, L = s[u + 0] | c[l + 0] << 16, x = h[f + 0] | d[p + 0] << 16; e(null != t); var A = 3 * L + x + 131074 >> 2; for (n(t[r + 0], 255 & A, A >> 16, g, m), null != a && (A = 3 * x + L + 131074 >> 2, n(a[o + 0], 255 & A, A >> 16, v, b)), w = 1; w <= N; ++w) { var S = s[u + w] | c[l + w] << 16, _ = h[f + w] | d[p + w] << 16, P = L + S + x + _ + 524296, k = P + 2 * (S + x) >> 3; A = k + L >> 1, L = (P = P + 2 * (L + _) >> 3) + S >> 1, n(t[r + 2 * w - 1], 255 & A, A >> 16, g, m + (2 * w - 1) * i), n(t[r + 2 * w - 0], 255 & L, L >> 16, g, m + (2 * w - 0) * i), null != a && (A = P + x >> 1, L = k + _ >> 1, n(a[o + 2 * w - 1], 255 & A, A >> 16, v, b + (2 * w - 1) * i), n(a[o + 2 * w + 0], 255 & L, L >> 16, v, b + (2 * w + 0) * i)), L = S, x = _; } 1 & y || (A = 3 * L + x + 131074 >> 2, n(t[r + y - 1], 255 & A, A >> 16, g, m + (y - 1) * i), null != a && (A = 3 * x + L + 131074 >> 2, n(a[o + y - 1], 255 & A, A >> 16, v, b + (y - 1) * i))); }; } function vr() { mi[Mn] = vi, mi[qn] = yi, mi[En] = bi, mi[Rn] = wi, mi[Dn] = Ni, mi[Tn] = Li, mi[zn] = xi, mi[Un] = yi, mi[Hn] = wi, mi[Wn] = Ni, mi[Vn] = Li; } function br(t) { return t & ~Fi ? 0 > t ? 0 : 255 : t >> ki; } function yr(t, e) { return br((19077 * t >> 8) + (26149 * e >> 8) - 14234); } function wr(t, e, r) { return br((19077 * t >> 8) - (6419 * e >> 8) - (13320 * r >> 8) + 8708); } function Nr(t, e) { return br((19077 * t >> 8) + (33050 * e >> 8) - 17685); } function Lr(t, e, r, n, i) { n[i + 0] = yr(t, r), n[i + 1] = wr(t, e, r), n[i + 2] = Nr(t, e); } function xr(t, e, r, n, i) { n[i + 0] = Nr(t, e), n[i + 1] = wr(t, e, r), n[i + 2] = yr(t, r); } function Ar(t, e, r, n, i) { var a = wr(t, e, r); e = a << 3 & 224 | Nr(t, e) >> 3, n[i + 0] = 248 & yr(t, r) | a >> 5, n[i + 1] = e; } function Sr(t, e, r, n, i) { var a = 240 & Nr(t, e) | 15; n[i + 0] = 240 & yr(t, r) | wr(t, e, r) >> 4, n[i + 1] = a; } function _r(t, e, r, n, i) { n[i + 0] = 255, Lr(t, e, r, n, i + 1); } function Pr(t, e, r, n, i) { xr(t, e, r, n, i), n[i + 3] = 255; } function kr(t, e, r, n, i) { Lr(t, e, r, n, i), n[i + 3] = 255; } function Fr(e, r, n) { t[e] = function(t, e, i, a, o, s, u, c, l) { for (var h = c + (-2 & l) * n; c != h;) r(t[e + 0], i[a + 0], o[s + 0], u, c), r(t[e + 1], i[a + 0], o[s + 0], u, c + n), e += 2, ++a, ++s, c += 2 * n; 1 & l && r(t[e + 0], i[a + 0], o[s + 0], u, c); }; } function Ir(t, e, r) { return 0 == r ? 0 == t ? 0 == e ? 6 : 5 : 0 == e ? 4 : 0 : r; } function Cr(t, e, r, n, i) { switch (t >>> 30) { case 3: an(e, r, n, i, 0); break; case 2: on(e, r, n, i); break; case 1: un(e, r, n, i); } } function jr(t, e) { var r, a, o = e.M, s = e.Nb, u = t.oc, c = t.pc + 40, l = t.oc, h = t.pc + 584, f = t.oc, d = t.pc + 600; for (r = 0; 16 > r; ++r) u[c + 32 * r - 1] = 129; for (r = 0; 8 > r; ++r) l[h + 32 * r - 1] = 129, f[d + 32 * r - 1] = 129; for (0 < o ? u[c - 1 - 32] = l[h - 1 - 32] = f[d - 1 - 32] = 129 : (i(u, c - 32 - 1, 127, 21), i(l, h - 32 - 1, 127, 9), i(f, d - 32 - 1, 127, 9)), a = 0; a < t.za; ++a) { var p = e.ya[e.aa + a]; if (0 < a) { for (r = -1; 16 > r; ++r) n(u, c + 32 * r - 4, u, c + 32 * r + 12, 4); for (r = -1; 8 > r; ++r) n(l, h + 32 * r - 4, l, h + 32 * r + 4, 4), n(f, d + 32 * r - 4, f, d + 32 * r + 4, 4); } var g = t.Gd, m = t.Hd + a, v = p.ad, b = p.Hc; if (0 < o && (n(u, c - 32, g[m].y, 0, 16), n(l, h - 32, g[m].f, 0, 8), n(f, d - 32, g[m].ea, 0, 8)), p.Za) { var y = u, w = c - 32 + 16; for (0 < o && (a >= t.za - 1 ? i(y, w, g[m].y[15], 4) : n(y, w, g[m + 1].y, 0, 4)), r = 0; 4 > r; r++) y[w + 128 + r] = y[w + 256 + r] = y[w + 384 + r] = y[w + 0 + r]; for (r = 0; 16 > r; ++r, b <<= 2) y = u, w = c + Ei[r], hi[p.Ob[r]](y, w), Cr(b, v, 16 * +r, y, w); } else if (y = Ir(a, o, p.Ob[0]), li[y](u, c), 0 != b) for (r = 0; 16 > r; ++r, b <<= 2) Cr(b, v, 16 * +r, u, c + Ei[r]); for (r = p.Gc, y = Ir(a, o, p.Dd), fi[y](l, h), fi[y](f, d), b = v, y = l, w = h, 255 & (p = 0 | r) && (170 & p ? sn(b, 256, y, w) : cn(b, 256, y, w)), p = f, b = d, 255 & (r >>= 8) && (170 & r ? sn(v, 320, p, b) : cn(v, 320, p, b)), o < t.Ub - 1 && (n(g[m].y, 0, u, c + 480, 16), n(g[m].f, 0, l, h + 224, 8), n(g[m].ea, 0, f, d + 224, 8)), r = 8 * s * t.B, g = t.sa, m = t.ta + 16 * a + 16 * s * t.R, v = t.qa, p = t.ra + 8 * a + r, b = t.Ha, y = t.Ia + 8 * a + r, r = 0; 16 > r; ++r) n(g, m + r * t.R, u, c + 32 * r, 16); for (r = 0; 8 > r; ++r) n(v, p + r * t.B, l, h + 32 * r, 8), n(b, y + r * t.B, f, d + 32 * r, 8); } } function Or(t, n, i, a, o, s, u, c, l) { var h = [0], f = [0], d = 0, p = null != l ? l.kd : 0, g = null != l ? l : new rr(); if (null == t || 12 > i) return 7; g.data = t, g.w = n, g.ha = i, n = [n], i = [i], g.gb = [g.gb]; t: { var m = n, b = i, y = g.gb; if (e(null != t), e(null != b), e(null != y), y[0] = 0, 12 <= b[0] && !r(t, m[0], "RIFF")) { if (r(t, m[0] + 8, "WEBP")) { y = 3; break t; } var w = j(t, m[0] + 4); if (12 > w || 4294967286 < w) { y = 3; break t; } if (p && w > b[0] - 8) { y = 7; break t; } y[0] = w, m[0] += 12, b[0] -= 12; } y = 0; } if (0 != y) return y; for (w = 0 < g.gb[0], i = i[0];;) { t: { var L = t; b = n, y = i; var x = h, A = f, S = m = [0]; if ((k = d = [d])[0] = 0, 8 > y[0]) y = 7; else { if (!r(L, b[0], "VP8X")) { if (10 != j(L, b[0] + 4)) { y = 3; break t; } if (18 > y[0]) { y = 7; break t; } var _ = j(L, b[0] + 8), P = 1 + C(L, b[0] + 12); if (2147483648 <= P * (L = 1 + C(L, b[0] + 15))) { y = 3; break t; } null != S && (S[0] = _), null != x && (x[0] = P), null != A && (A[0] = L), b[0] += 18, y[0] -= 18, k[0] = 1; } y = 0; } } if (d = d[0], m = m[0], 0 != y) return y; if (b = !!(2 & m), !w && d) return 3; if (null != s && (s[0] = !!(16 & m)), null != u && (u[0] = b), null != c && (c[0] = 0), u = h[0], m = f[0], d && b && null == l) { y = 0; break; } if (4 > i) { y = 7; break; } if (w && d || !w && !d && !r(t, n[0], "ALPH")) { i = [i], g.na = [g.na], g.P = [g.P], g.Sa = [g.Sa]; t: { _ = t, y = n, w = i; var k = g.gb; x = g.na, A = g.P, S = g.Sa, P = 22, e(null != _), e(null != w), L = y[0]; var F = w[0]; for (e(null != x), e(null != S), x[0] = null, A[0] = null, S[0] = 0;;) { if (y[0] = L, w[0] = F, 8 > F) { y = 7; break t; } var I = j(_, L + 4); if (4294967286 < I) { y = 3; break t; } var O = 8 + I + 1 & -2; if (P += O, 0 < k && P > k) { y = 3; break t; } if (!r(_, L, "VP8 ") || !r(_, L, "VP8L")) { y = 0; break t; } if (F[0] < O) { y = 7; break t; } r(_, L, "ALPH") || (x[0] = _, A[0] = L + 8, S[0] = I), L += O, F -= O; } } if (i = i[0], g.na = g.na[0], g.P = g.P[0], g.Sa = g.Sa[0], 0 != y) break; } i = [i], g.Ja = [g.Ja], g.xa = [g.xa]; t: if (k = t, y = n, w = i, x = g.gb[0], A = g.Ja, S = g.xa, _ = y[0], L = !r(k, _, "VP8 "), P = !r(k, _, "VP8L"), e(null != k), e(null != w), e(null != A), e(null != S), 8 > w[0]) y = 7; else { if (L || P) { if (k = j(k, _ + 4), 12 <= x && k > x - 12) { y = 3; break t; } if (p && k > w[0] - 8) { y = 7; break t; } A[0] = k, y[0] += 8, w[0] -= 8, S[0] = P; } else S[0] = 5 <= w[0] && 47 == k[_ + 0] && !(k[_ + 4] >> 5), A[0] = w[0]; y = 0; } if (i = i[0], g.Ja = g.Ja[0], g.xa = g.xa[0], n = n[0], 0 != y) break; if (4294967286 < g.Ja) return 3; if (null == c || b || (c[0] = g.xa ? 2 : 1), u = [u], m = [m], g.xa) { if (5 > i) { y = 7; break; } c = u, p = m, b = s, null == t || 5 > i ? t = 0 : 5 <= i && 47 == t[n + 0] && !(t[n + 4] >> 5) ? (w = [0], k = [0], x = [0], v(A = new N(), t, n, i), gt(A, w, k, x) ? (null != c && (c[0] = w[0]), null != p && (p[0] = k[0]), null != b && (b[0] = x[0]), t = 1) : t = 0) : t = 0; } else { if (10 > i) { y = 7; break; } c = m, null == t || 10 > i || !Xt(t, n + 3, i - 3) ? t = 0 : (p = t[n + 0] | t[n + 1] << 8 | t[n + 2] << 16, b = 16383 & (t[n + 7] << 8 | t[n + 6]), t = 16383 & (t[n + 9] << 8 | t[n + 8]), 1 & p || 3 < (p >> 1 & 7) || !(p >> 4 & 1) || p >> 5 >= g.Ja || !b || !t ? t = 0 : (u && (u[0] = b), c && (c[0] = t), t = 1)); } if (!t) return 3; if (u = u[0], m = m[0], d && (h[0] != u || f[0] != m)) return 3; null != l && (l[0] = g, l.offset = n - l.w, e(4294967286 > n - l.w), e(l.offset == l.ha - i)); break; } return 0 == y || 7 == y && d && null == l ? (null != s && (s[0] |= null != g.na && 0 < g.na.length), null != a && (a[0] = u), null != o && (o[0] = m), 0) : y; } function Br(t, e, r) { var n = e.width, i = e.height, a = 0, o = 0, s = n, u = i; if (e.Da = null != t && 0 < t.Da, e.Da && (s = t.cd, u = t.bd, a = t.v, o = t.j, 11 > r || (a &= -2, o &= -2), 0 > a || 0 > o || 0 >= s || 0 >= u || a + s > n || o + u > i)) return 0; if (e.v = a, e.j = o, e.va = a + s, e.o = o + u, e.U = s, e.T = u, e.da = null != t && 0 < t.da, e.da) { if (!q(s, u, r = [t.ib], a = [t.hb])) return 0; e.ib = r[0], e.hb = a[0]; } return e.ob = null != t && t.ob, e.Kb = null == t || !t.Sd, e.da && (e.ob = e.ib < 3 * n / 4 && e.hb < 3 * i / 4, e.Kb = 0), 1; } function Mr(t) { if (null == t) return 2; if (11 > t.S) { var e = t.f.RGBA; e.fb += (t.height - 1) * e.A, e.A = -e.A; } else e = t.f.kb, t = t.height, e.O += (t - 1) * e.fa, e.fa = -e.fa, e.N += (t - 1 >> 1) * e.Ab, e.Ab = -e.Ab, e.W += (t - 1 >> 1) * e.Db, e.Db = -e.Db, null != e.F && (e.J += (t - 1) * e.lb, e.lb = -e.lb); return 0; } function qr(t, e, r, n) { if (null == n || 0 >= t || 0 >= e) return 2; if (null != r) { if (r.Da) { var i = r.cd, o = r.bd, s = -2 & r.v, u = -2 & r.j; if (0 > s || 0 > u || 0 >= i || 0 >= o || s + i > t || u + o > e) return 2; t = i, e = o; } if (r.da) { if (!q(t, e, i = [r.ib], o = [r.hb])) return 2; t = i[0], e = o[0]; } } n.width = t, n.height = e; t: { var c = n.width, l = n.height; if (t = n.S, 0 >= c || 0 >= l || !(t >= Mn && 13 > t)) t = 2; else { if (0 >= n.Rd && null == n.sd) { s = o = i = e = 0; var h = (u = c * zi[t]) * l; if (11 > t || (o = (l + 1) / 2 * (e = (c + 1) / 2), 12 == t && (s = (i = c) * l)), null == (l = a(h + 2 * o + s))) { t = 1; break t; } n.sd = l, 11 > t ? ((c = n.f.RGBA).eb = l, c.fb = 0, c.A = u, c.size = h) : ((c = n.f.kb).y = l, c.O = 0, c.fa = u, c.Fd = h, c.f = l, c.N = 0 + h, c.Ab = e, c.Cd = o, c.ea = l, c.W = 0 + h + o, c.Db = e, c.Ed = o, 12 == t && (c.F = l, c.J = 0 + h + 2 * o), c.Tc = s, c.lb = i); } if (e = 1, i = n.S, o = n.width, s = n.height, i >= Mn && 13 > i) if (11 > i) t = n.f.RGBA, e &= (u = Math.abs(t.A)) * (s - 1) + o <= t.size, e &= u >= o * zi[i], e &= null != t.eb; else { t = n.f.kb, u = (o + 1) / 2, h = (s + 1) / 2, c = Math.abs(t.fa), l = Math.abs(t.Ab); var f = Math.abs(t.Db), d = Math.abs(t.lb), p = d * (s - 1) + o; e &= c * (s - 1) + o <= t.Fd, e &= l * (h - 1) + u <= t.Cd, e = (e &= f * (h - 1) + u <= t.Ed) & c >= o & l >= u & f >= u, e &= null != t.y, e &= null != t.f, e &= null != t.ea, 12 == i && (e &= d >= o, e &= p <= t.Tc, e &= null != t.F); } else e = 0; t = e ? 0 : 2; } } return 0 != t || null != r && r.fd && (t = Mr(n)), t; } var Er = 64, Rr = [ 0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215 ], Dr = 24, Tr = 32, zr = 8, Ur = [ 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 ]; D("Predictor0", "PredictorAdd0"), t.Predictor0 = function() { return 4278190080; }, t.Predictor1 = function(t) { return t; }, t.Predictor2 = function(t, e, r) { return e[r + 0]; }, t.Predictor3 = function(t, e, r) { return e[r + 1]; }, t.Predictor4 = function(t, e, r) { return e[r - 1]; }, t.Predictor5 = function(t, e, r) { return z(z(t, e[r + 1]), e[r + 0]); }, t.Predictor6 = function(t, e, r) { return z(t, e[r - 1]); }, t.Predictor7 = function(t, e, r) { return z(t, e[r + 0]); }, t.Predictor8 = function(t, e, r) { return z(e[r - 1], e[r + 0]); }, t.Predictor9 = function(t, e, r) { return z(e[r + 0], e[r + 1]); }, t.Predictor10 = function(t, e, r) { return z(z(t, e[r - 1]), z(e[r + 0], e[r + 1])); }, t.Predictor11 = function(t, e, r) { var n = e[r + 0]; return 0 >= W(n >> 24 & 255, t >> 24 & 255, (e = e[r - 1]) >> 24 & 255) + W(n >> 16 & 255, t >> 16 & 255, e >> 16 & 255) + W(n >> 8 & 255, t >> 8 & 255, e >> 8 & 255) + W(255 & n, 255 & t, 255 & e) ? n : t; }, t.Predictor12 = function(t, e, r) { var n = e[r + 0]; return (U((t >> 24 & 255) + (n >> 24 & 255) - ((e = e[r - 1]) >> 24 & 255)) << 24 | U((t >> 16 & 255) + (n >> 16 & 255) - (e >> 16 & 255)) << 16 | U((t >> 8 & 255) + (n >> 8 & 255) - (e >> 8 & 255)) << 8 | U((255 & t) + (255 & n) - (255 & e))) >>> 0; }, t.Predictor13 = function(t, e, r) { var n = e[r - 1]; return (H((t = z(t, e[r + 0])) >> 24 & 255, n >> 24 & 255) << 24 | H(t >> 16 & 255, n >> 16 & 255) << 16 | H(t >> 8 & 255, n >> 8 & 255) << 8 | H(255 & t, 255 & n)) >>> 0; }; var Hr = t.PredictorAdd0; t.PredictorAdd1 = V, D("Predictor2", "PredictorAdd2"), D("Predictor3", "PredictorAdd3"), D("Predictor4", "PredictorAdd4"), D("Predictor5", "PredictorAdd5"), D("Predictor6", "PredictorAdd6"), D("Predictor7", "PredictorAdd7"), D("Predictor8", "PredictorAdd8"), D("Predictor9", "PredictorAdd9"), D("Predictor10", "PredictorAdd10"), D("Predictor11", "PredictorAdd11"), D("Predictor12", "PredictorAdd12"), D("Predictor13", "PredictorAdd13"); var Wr = t.PredictorAdd2; X("ColorIndexInverseTransform", "MapARGB", "32b", function(t) { return t >> 8 & 255; }, function(t) { return t; }), X("VP8LColorIndexInverseTransformAlpha", "MapAlpha", "8b", function(t) { return t; }, function(t) { return t >> 8 & 255; }); var Vr, Gr = t.ColorIndexInverseTransform, Yr = t.MapARGB, Jr = t.VP8LColorIndexInverseTransformAlpha, Xr = t.MapAlpha, Kr = t.VP8LPredictorsAdd = []; Kr.length = 16, (t.VP8LPredictors = []).length = 16, (t.VP8LPredictorsAdd_C = []).length = 16, (t.VP8LPredictors_C = []).length = 16; var Zr, $r, Qr, tn, en, rn, nn, an, on, sn, un, cn, ln, hn, fn, dn, pn, gn, mn, vn, bn, yn, wn, Nn, Ln, xn, An, Sn, _n = a(511), Pn = a(2041), kn = a(225), Fn = a(767), In = 0, Cn = Pn, jn = kn, On = Fn, Bn = _n, Mn = 0, qn = 1, En = 2, Rn = 3, Dn = 4, Tn = 5, zn = 6, Un = 7, Hn = 8, Wn = 9, Vn = 10, Gn = [ 2, 3, 7 ], Yn = [ 3, 3, 11 ], Jn = [ 280, 256, 256, 256, 40 ], Xn = [ 0, 1, 1, 1, 0 ], Kn = [ 17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ], Zn = [ 24, 7, 23, 25, 40, 6, 39, 41, 22, 26, 38, 42, 56, 5, 55, 57, 21, 27, 54, 58, 37, 43, 72, 4, 71, 73, 20, 28, 53, 59, 70, 74, 36, 44, 88, 69, 75, 52, 60, 3, 87, 89, 19, 29, 86, 90, 35, 45, 68, 76, 85, 91, 51, 61, 104, 2, 103, 105, 18, 30, 102, 106, 34, 46, 84, 92, 67, 77, 101, 107, 50, 62, 120, 1, 119, 121, 83, 93, 17, 31, 100, 108, 66, 78, 118, 122, 33, 47, 117, 123, 49, 63, 99, 109, 82, 94, 0, 116, 124, 65, 79, 16, 32, 98, 110, 48, 115, 125, 81, 95, 64, 114, 126, 97, 111, 80, 113, 127, 96, 112 ], $n = [ 2954, 2956, 2958, 2962, 2970, 2986, 3018, 3082, 3212, 3468, 3980, 5004 ], Qn = 8, ti = [ 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 93, 95, 96, 98, 100, 101, 102, 104, 106, 108, 110, 112, 114, 116, 118, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 143, 145, 148, 151, 154, 157 ], ei = [ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158, 161, 164, 167, 170, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209, 213, 217, 221, 225, 229, 234, 239, 245, 249, 254, 259, 264, 269, 274, 279, 284 ], ri = null, ni = [ [ 173, 148, 140, 0 ], [ 176, 155, 140, 135, 0 ], [ 180, 157, 141, 134, 130, 0 ], [ 254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0 ] ], ii = [ 0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15 ], ai = [ -0, 1, -1, 2, -2, 3, 4, 6, -3, 5, -4, -5, -6, 7, -7, 8, -8, -9 ], oi = [ [ [ [ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 ], [ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 ], [ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 ] ], [ [ 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 ], [ 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 ], [ 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 ] ], [ [ 1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128 ], [ 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 ], [ 78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 ] ], [ [ 1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128 ], [ 184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128 ], [ 77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 ] ], [ [ 1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128 ], [ 170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128 ], [ 37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 ] ], [ [ 1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128 ], [ 207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128 ], [ 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 ] ], [ [ 1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128 ], [ 177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128 ], [ 80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 ] ], [ [ 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 ], [ 246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 ], [ 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 ] ] ], [ [ [ 198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62 ], [ 131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1 ], [ 68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128 ] ], [ [ 1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128 ], [ 184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128 ], [ 81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128 ] ], [ [ 1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128 ], [ 99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128 ], [ 23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128 ] ], [ [ 1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128 ], [ 109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128 ], [ 44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 ] ], [ [ 1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128 ], [ 94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128 ], [ 22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 ] ], [ [ 1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128 ], [ 124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128 ], [ 35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128 ] ], [ [ 1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128 ], [ 121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128 ], [ 45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128 ] ], [ [ 1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128 ], [ 203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128 ], [ 137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128 ] ] ], [ [ [ 253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128 ], [ 175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128 ], [ 73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128 ] ], [ [ 1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128 ], [ 239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128 ], [ 155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128 ] ], [ [ 1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128 ], [ 201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128 ], [ 69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128 ] ], [ [ 1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128 ], [ 223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128 ], [ 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 ] ], [ [ 1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128 ], [ 190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128 ], [ 149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 ] ], [ [ 1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128 ], [ 247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128 ], [ 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 ] ], [ [ 1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128 ], [ 213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128 ], [ 55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128 ] ], [ [ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 ], [ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 ], [ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 ] ] ], [ [ [ 202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255 ], [ 126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128 ], [ 61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128 ] ], [ [ 1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128 ], [ 166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128 ], [ 39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128 ] ], [ [ 1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128 ], [ 124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128 ], [ 24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128 ] ], [ [ 1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128 ], [ 149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128 ], [ 28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 ] ], [ [ 1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128 ], [ 123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128 ], [ 20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128 ] ], [ [ 1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128 ], [ 168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128 ], [ 47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 ] ], [ [ 1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128 ], [ 141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128 ], [ 42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128 ] ], [ [ 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 ], [ 244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 ], [ 238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 ] ] ] ], si = [ [ [ 231, 120, 48, 89, 115, 113, 120, 152, 112 ], [ 152, 179, 64, 126, 170, 118, 46, 70, 95 ], [ 175, 69, 143, 80, 85, 82, 72, 155, 103 ], [ 56, 58, 10, 171, 218, 189, 17, 13, 152 ], [ 114, 26, 17, 163, 44, 195, 21, 10, 173 ], [ 121, 24, 80, 195, 26, 62, 44, 64, 85 ], [ 144, 71, 10, 38, 171, 213, 144, 34, 26 ], [ 170, 46, 55, 19, 136, 160, 33, 206, 71 ], [ 63, 20, 8, 114, 114, 208, 12, 9, 226 ], [ 81, 40, 11, 96, 182, 84, 29, 16, 36 ] ], [ [ 134, 183, 89, 137, 98, 101, 106, 165, 148 ], [ 72, 187, 100, 130, 157, 111, 32, 75, 80 ], [ 66, 102, 167, 99, 74, 62, 40, 234, 128 ], [ 41, 53, 9, 178, 241, 141, 26, 8, 107 ], [ 74, 43, 26, 146, 73, 166, 49, 23, 157 ], [ 65, 38, 105, 160, 51, 52, 31, 115, 128 ], [ 104, 79, 12, 27, 217, 255, 87, 17, 7 ], [ 87, 68, 71, 44, 114, 51, 15, 186, 23 ], [ 47, 41, 14, 110, 182, 183, 21, 17, 194 ], [ 66, 45, 25, 102, 197, 189, 23, 18, 22 ] ], [ [ 88, 88, 147, 150, 42, 46, 45, 196, 205 ], [ 43, 97, 183, 117, 85, 38, 35, 179, 61 ], [ 39, 53, 200, 87, 26, 21, 43, 232, 171 ], [ 56, 34, 51, 104, 114, 102, 29, 93, 77 ], [ 39, 28, 85, 171, 58, 165, 90, 98, 64 ], [ 34, 22, 116, 206, 23, 34, 43, 166, 73 ], [ 107, 54, 32, 26, 51, 1, 81, 43, 31 ], [ 68, 25, 106, 22, 64, 171, 36, 225, 114 ], [ 34, 19, 21, 102, 132, 188, 16, 76, 124 ], [ 62, 18, 78, 95, 85, 57, 50, 48, 51 ] ], [ [ 193, 101, 35, 159, 215, 111, 89, 46, 111 ], [ 60, 148, 31, 172, 219, 228, 21, 18, 111 ], [ 112, 113, 77, 85, 179, 255, 38, 120, 114 ], [ 40, 42, 1, 196, 245, 209, 10, 25, 109 ], [ 88, 43, 29, 140, 166, 213, 37, 43, 154 ], [ 61, 63, 30, 155, 67, 45, 68, 1, 209 ], [ 100, 80, 8, 43, 154, 1, 51, 26, 71 ], [ 142, 78, 78, 16, 255, 128, 34, 197, 171 ], [ 41, 40, 5, 102, 211, 183, 4, 1, 221 ], [ 51, 50, 17, 168, 209, 192, 23, 25, 82 ] ], [ [ 138, 31, 36, 171, 27, 166, 38, 44, 229 ], [ 67, 87, 58, 169, 82, 115, 26, 59, 179 ], [ 63, 59, 90, 180, 59, 166, 93, 73, 154 ], [ 40, 40, 21, 116, 143, 209, 34, 39, 175 ], [ 47, 15, 16, 183, 34, 223, 49, 45, 183 ], [ 46, 17, 33, 183, 6, 98, 15, 32, 183 ], [ 57, 46, 22, 24, 128, 1, 54, 17, 37 ], [ 65, 32, 73, 115, 28, 128, 23, 128, 205 ], [ 40, 3, 9, 115, 51, 192, 18, 6, 223 ], [ 87, 37, 9, 115, 59, 77, 64, 21, 47 ] ], [ [ 104, 55, 44, 218, 9, 54, 53, 130, 226 ], [ 64, 90, 70, 205, 40, 41, 23, 26, 57 ], [ 54, 57, 112, 184, 5, 41, 38, 166, 213 ], [ 30, 34, 26, 133, 152, 116, 10, 32, 134 ], [ 39, 19, 53, 221, 26, 114, 32, 73, 255 ], [ 31, 9, 65, 234, 2, 15, 1, 118, 73 ], [ 75, 32, 12, 51, 192, 255, 160, 43, 51 ], [ 88, 31, 35, 67, 102, 85, 55, 186, 85 ], [ 56, 21, 23, 111, 59, 205, 45, 37, 192 ], [ 55, 38, 70, 124, 73, 102, 1, 34, 98 ] ], [ [ 125, 98, 42, 88, 104, 85, 117, 175, 82 ], [ 95, 84, 53, 89, 128, 100, 113, 101, 45 ], [ 75, 79, 123, 47, 51, 128, 81, 171, 1 ], [ 57, 17, 5, 71, 102, 57, 53, 41, 49 ], [ 38, 33, 13, 121, 57, 73, 26, 1, 85 ], [ 41, 10, 67, 138, 77, 110, 90, 47, 114 ], [ 115, 21, 2, 10, 102, 255, 166, 23, 6 ], [ 101, 29, 16, 10, 85, 128, 101, 196, 26 ], [ 57, 18, 10, 102, 102, 213, 34, 20, 43 ], [ 117, 20, 15, 36, 163, 128, 68, 1, 26 ] ], [ [ 102, 61, 71, 37, 34, 53, 31, 243, 192 ], [ 69, 60, 71, 38, 73, 119, 28, 222, 37 ], [ 68, 45, 128, 34, 1, 47, 11, 245, 171 ], [ 62, 17, 19, 70, 146, 85, 55, 62, 70 ], [ 37, 43, 37, 154, 100, 163, 85, 160, 1 ], [ 63, 9, 92, 136, 28, 64, 32, 201, 85 ], [ 75, 15, 9, 9, 64, 255, 184, 119, 16 ], [ 86, 6, 28, 5, 64, 255, 25, 248, 1 ], [ 56, 8, 17, 132, 137, 255, 55, 116, 128 ], [ 58, 15, 20, 82, 135, 57, 26, 121, 40 ] ], [ [ 164, 50, 31, 137, 154, 133, 25, 35, 218 ], [ 51, 103, 44, 131, 131, 123, 31, 6, 158 ], [ 86, 40, 64, 135, 148, 224, 45, 183, 128 ], [ 22, 26, 17, 131, 240, 154, 14, 1, 209 ], [ 45, 16, 21, 91, 64, 222, 7, 1, 197 ], [ 56, 21, 39, 155, 60, 138, 23, 102, 213 ], [ 83, 12, 13, 54, 192, 255, 68, 47, 28 ], [ 85, 26, 85, 85, 128, 128, 32, 146, 171 ], [ 18, 11, 7, 63, 144, 171, 4, 4, 246 ], [ 35, 27, 10, 146, 174, 171, 12, 26, 128 ] ], [ [ 190, 80, 35, 99, 180, 80, 126, 54, 45 ], [ 85, 126, 47, 87, 176, 51, 41, 20, 32 ], [ 101, 75, 128, 139, 118, 146, 116, 128, 85 ], [ 56, 41, 15, 176, 236, 85, 37, 9, 62 ], [ 71, 30, 17, 119, 118, 255, 17, 18, 138 ], [ 101, 38, 60, 138, 55, 70, 43, 26, 142 ], [ 146, 36, 19, 30, 171, 255, 97, 27, 20 ], [ 138, 45, 61, 62, 219, 1, 81, 188, 64 ], [ 32, 41, 20, 117, 151, 142, 20, 21, 163 ], [ 112, 19, 12, 61, 195, 128, 48, 4, 24 ] ] ], ui = [ [ [ [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255 ], [ 250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255 ], [ 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ] ], [ [ [ 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255 ], [ 234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255 ] ], [ [ 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ] ], [ [ [ 186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255 ], [ 251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255 ] ], [ [ 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ] ], [ [ [ 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255 ], [ 248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ], [ [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ] ] ] ], ci = [ 0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0 ], li = [], hi = [], fi = [], di = 1, pi = 2, gi = [], mi = []; mr("UpsampleRgbLinePair", Lr, 3), mr("UpsampleBgrLinePair", xr, 3), mr("UpsampleRgbaLinePair", kr, 4), mr("UpsampleBgraLinePair", Pr, 4), mr("UpsampleArgbLinePair", _r, 4), mr("UpsampleRgba4444LinePair", Sr, 2), mr("UpsampleRgb565LinePair", Ar, 2); var vi = t.UpsampleRgbLinePair, bi = t.UpsampleBgrLinePair, yi = t.UpsampleRgbaLinePair, wi = t.UpsampleBgraLinePair, Ni = t.UpsampleArgbLinePair, Li = t.UpsampleRgba4444LinePair, xi = t.UpsampleRgb565LinePair, Ai = 16, Si = 1 << Ai - 1, _i = -227, Pi = 482, ki = 6, Fi = (256 << ki) - 1, Ii = 0, Ci = a(256), ji = a(256), Oi = a(256), Bi = a(256), Mi = a(Pi - _i), qi = a(Pi - _i); Fr("YuvToRgbRow", Lr, 3), Fr("YuvToBgrRow", xr, 3), Fr("YuvToRgbaRow", kr, 4), Fr("YuvToBgraRow", Pr, 4), Fr("YuvToArgbRow", _r, 4), Fr("YuvToRgba4444Row", Sr, 2), Fr("YuvToRgb565Row", Ar, 2); var Ei = [ 0, 4, 8, 12, 128, 132, 136, 140, 256, 260, 264, 268, 384, 388, 392, 396 ], Ri = [ 0, 2, 8 ], Di = [ 8, 7, 6, 4, 4, 2, 2, 2, 1, 1, 1, 1 ], Ti = 1; this.WebPDecodeRGBA = function(t, r, s, u, c) { var l = qn, h = new er(), f = new ot(); h.ba = f, f.S = l, f.width = [f.width], f.height = [f.height]; var d = f.width, p = f.height, g = new st(); if (null == g || null == t) var m = 2; else e(null != g), m = Or(t, r, s, g.width, g.height, g.Pd, g.Qd, g.format, null); if (0 != m ? d = 0 : (null != d && (d[0] = g.width[0]), null != p && (p[0] = g.height[0]), d = 1), d) { f.width = f.width[0], f.height = f.height[0], null != u && (u[0] = f.width), null != c && (c[0] = f.height); t: { if (u = new Gt(), (c = new rr()).data = t, c.w = r, c.ha = s, c.kd = 1, r = [0], e(null != c), (0 == (t = Or(c.data, c.w, c.ha, null, null, null, r, null, c)) || 7 == t) && r[0] && (t = 4), 0 == (r = t)) { if (e(null != h), u.data = c.data, u.w = c.w + c.offset, u.ha = c.ha - c.offset, u.put = dt, u.ac = ft, u.bc = pt, u.ma = h, c.xa) { if (null == (t = kt())) { h = 1; break t; } if (function(t, r) { var n = [0], i = [0], a = [0]; e: for (;;) { if (null == t) return 0; if (null == r) return t.a = 2, 0; if (t.l = r, t.a = 0, v(t.m, r.data, r.w, r.ha), !gt(t.m, n, i, a)) { t.a = 3; break e; } if (t.xb = pi, r.width = n[0], r.height = i[0], !Ft(n[0], i[0], 1, t, null)) break e; return 1; } return e(0 != t.a), 0; }(t, u)) { if (u = 0 == (r = qr(u.width, u.height, h.Oa, h.ba))) { e: { u = t; r: for (;;) { if (null == u) { u = 0; break e; } if (e(null != u.s.yc), e(null != u.s.Ya), e(0 < u.s.Wb), e(null != (s = u.l)), e(null != (c = s.ma)), 0 != u.xb) { if (u.ca = c.ba, u.tb = c.tb, e(null != u.ca), !Br(c.Oa, s, Rn)) { u.a = 2; break r; } if (!It(u, s.width)) break r; if (s.da) break r; if ((s.da || nt(u.ca.S)) && gr(), 11 > u.ca.S || (alert("todo:WebPInitConvertARGBToYUV"), null != u.ca.f.kb.F && gr()), u.Pb && 0 < u.s.ua && null == u.s.vb.X && !O(u.s.vb, u.s.Wa.Xa)) { u.a = 1; break r; } u.xb = 0; } if (!_t(u, u.V, u.Ba, u.c, u.i, s.o, Lt)) break r; c.Dc = u.Ma, u = 1; break e; } e(0 != u.a), u = 0; } u = !u; } u && (r = t.a); } else r = t.a; } else { if (null == (t = new Yt())) { h = 1; break t; } if (t.Fa = c.na, t.P = c.P, t.qc = c.Sa, Kt(t, u)) { if (0 == (r = qr(u.width, u.height, h.Oa, h.ba))) { if (t.Aa = 0, s = h.Oa, e(null != (c = t)), null != s) { if (0 < (d = 0 > (d = s.Md) ? 0 : 100 < d ? 255 : 255 * d / 100)) { for (p = g = 0; 4 > p; ++p) 12 > (m = c.pb[p]).lc && (m.ia = d * Di[0 > m.lc ? 0 : m.lc] >> 3), g |= m.ia; g && (alert("todo:VP8InitRandom"), c.ia = 1); } c.Ga = s.Id, 100 < c.Ga ? c.Ga = 100 : 0 > c.Ga && (c.Ga = 0); } (function(t, r) { if (null == t) return 0; if (null == r) return Jt(t, 2, "NULL VP8Io parameter in VP8Decode()."); if (!t.cb && !Kt(t, r)) return 0; if (e(t.cb), null == r.ac || r.ac(r)) { r.ob && (t.L = 0); var s = Ri[t.L]; if (2 == t.L ? (t.yb = 0, t.zb = 0) : (t.yb = r.v - s >> 4, t.zb = r.j - s >> 4, 0 > t.yb && (t.yb = 0), 0 > t.zb && (t.zb = 0)), t.Va = r.o + 15 + s >> 4, t.Hb = r.va + 15 + s >> 4, t.Hb > t.za && (t.Hb = t.za), t.Va > t.Ub && (t.Va = t.Ub), 0 < t.L) { var u = t.ed; for (s = 0; 4 > s; ++s) { var c; if (t.Qa.Cb) { var l = t.Qa.Lb[s]; t.Qa.Fb || (l += u.Tb); } else l = u.Tb; for (c = 0; 1 >= c; ++c) { var h = t.gd[s][c], f = l; if (u.Pc && (f += u.vd[0], c && (f += u.od[0])), 0 < (f = 0 > f ? 0 : 63 < f ? 63 : f)) { var d = f; 0 < u.wb && (d = 4 < u.wb ? d >> 2 : d >> 1) > 9 - u.wb && (d = 9 - u.wb), 1 > d && (d = 1), h.dd = d, h.tc = 2 * f + d, h.ld = 40 <= f ? 2 : 15 <= f ? 1 : 0; } else h.tc = 0; h.La = c; } } } s = 0; } else Jt(t, 6, "Frame setup failed"), s = t.a; if (s = 0 == s) { if (s) { t.$c = 0, 0 < t.Aa || (t.Ic = Ti); e: { s = t.Ic, u = 4 * (d = t.za); var p = 32 * d, g = d + 1, m = 0 < t.L ? d * (0 < t.Aa ? 2 : 1) : 0, v = (2 == t.Aa ? 2 : 1) * d; if ((h = u + 832 + (c = 3 * (16 * s + Ri[t.L]) / 2 * p) + (l = null != t.Fa && 0 < t.Fa.length ? t.Kc.c * t.Kc.i : 0)) != h) s = 0; else { if (h > t.Vb) { if (t.Vb = 0, t.Ec = a(h), t.Fc = 0, null == t.Ec) { s = Jt(t, 1, "no memory during frame initialization."); break e; } t.Vb = h; } h = t.Ec, f = t.Fc, t.Ac = h, t.Bc = f, f += u, t.Gd = o(p, Ht), t.Hd = 0, t.rb = o(g + 1, Dt), t.sb = 1, t.wa = m ? o(m, Rt) : null, t.Y = 0, t.D.Nb = 0, t.D.wa = t.wa, t.D.Y = t.Y, 0 < t.Aa && (t.D.Y += d), e(!0), t.oc = h, t.pc = f, f += 832, t.ya = o(v, zt), t.aa = 0, t.D.ya = t.ya, t.D.aa = t.aa, 2 == t.Aa && (t.D.aa += d), t.R = 16 * d, t.B = 8 * d, d = (p = Ri[t.L]) * t.R, p = p / 2 * t.B, t.sa = h, t.ta = f + d, t.qa = t.sa, t.ra = t.ta + 16 * s * t.R + p, t.Ha = t.qa, t.Ia = t.ra + 8 * s * t.B + p, t.$c = 0, f += c, t.mb = l ? h : null, t.nb = l ? f : null, e(f + l <= t.Fc + t.Vb), $t(t), i(t.Ac, t.Bc, 0, u), s = 1; } } if (s) { if (r.ka = 0, r.y = t.sa, r.O = t.ta, r.f = t.qa, r.N = t.ra, r.ea = t.Ha, r.Vd = t.Ia, r.fa = t.R, r.Rc = t.B, r.F = null, r.J = 0, !In) { for (s = -255; 255 >= s; ++s) _n[255 + s] = 0 > s ? -s : s; for (s = -1020; 1020 >= s; ++s) Pn[1020 + s] = -128 > s ? -128 : 127 < s ? 127 : s; for (s = -112; 112 >= s; ++s) kn[112 + s] = -16 > s ? -16 : 15 < s ? 15 : s; for (s = -255; 510 >= s; ++s) Fn[255 + s] = 0 > s ? 0 : 255 < s ? 255 : s; In = 1; } nn = ue, an = ie, sn = ae, un = oe, cn = se, on = ne, ln = Ye, hn = Je, fn = Ze, dn = $e, pn = Xe, gn = Ke, mn = Qe, vn = tr, bn = ze, yn = Ue, wn = He, Nn = We, hi[0] = xe, hi[1] = le, hi[2] = Ne, hi[3] = Le, hi[4] = Ae, hi[5] = _e, hi[6] = Se, hi[7] = Pe, hi[8] = Fe, hi[9] = ke, li[0] = me, li[1] = fe, li[2] = de, li[3] = pe, li[4] = ve, li[5] = be, li[6] = ye, fi[0] = Oe, fi[1] = he, fi[2] = Ie, fi[3] = Ce, fi[4] = Me, fi[5] = Be, fi[6] = qe, s = 1; } else s = 0; } s && (s = function(t, r) { for (t.M = 0; t.M < t.Va; ++t.M) { var o, s = t.Jc[t.M & t.Xb], u = t.m, c = t; for (o = 0; o < c.za; ++o) { var l = u, h = c, f = h.Ac, d = h.Bc + 4 * o, p = h.zc, g = h.ya[h.aa + o]; if (h.Qa.Bb ? g.$b = k(l, h.Pa.jb[0]) ? 2 + k(l, h.Pa.jb[2]) : k(l, h.Pa.jb[1]) : g.$b = 0, h.kc && (g.Ad = k(l, h.Bd)), g.Za = !k(l, 145) + 0, g.Za) { var m = g.Ob, v = 0; for (h = 0; 4 > h; ++h) { var b, y = p[0 + h]; for (b = 0; 4 > b; ++b) { y = si[f[d + b]][y]; for (var w = ai[k(l, y[0])]; 0 < w;) w = ai[2 * w + k(l, y[w])]; y = -w, f[d + b] = y; } n(m, v, f, d, 4), v += 4, p[0 + h] = y; } } else y = k(l, 156) ? k(l, 128) ? 1 : 3 : k(l, 163) ? 2 : 0, g.Ob[0] = y, i(f, d, y, 4), i(p, 0, y, 4); g.Dd = k(l, 142) ? k(l, 114) ? k(l, 183) ? 1 : 3 : 2 : 0; } if (c.m.Ka) return Jt(t, 7, "Premature end-of-partition0 encountered."); for (; t.ja < t.za; ++t.ja) { if (c = s, l = (u = t).rb[u.sb - 1], f = u.rb[u.sb + u.ja], o = u.ya[u.aa + u.ja], d = u.kc ? o.Ad : 0) l.la = f.la = 0, o.Za || (l.Na = f.Na = 0), o.Hc = 0, o.Gc = 0, o.ia = 0; else { var N, L; if (l = f, f = c, d = u.Pa.Xc, p = u.ya[u.aa + u.ja], g = u.pb[p.$b], h = p.ad, m = 0, v = u.rb[u.sb - 1], y = b = 0, i(h, m, 0, 384), p.Za) var x = 0, A = d[3]; else { w = a(16); var S = l.Na + v.Na; if (S = ri(f, d[1], S, g.Eb, 0, w, 0), l.Na = v.Na = (0 < S) + 0, 1 < S) nn(w, 0, h, m); else { var _ = w[0] + 3 >> 3; for (w = 0; 256 > w; w += 16) h[m + w] = _; } x = 1, A = d[0]; } var P = 15 & l.la, F = 15 & v.la; for (w = 0; 4 > w; ++w) { var I = 1 & F; for (_ = L = 0; 4 > _; ++_) P = P >> 1 | (I = (S = ri(f, A, S = I + (1 & P), g.Sc, x, h, m)) > x) << 7, L = L << 2 | (3 < S ? 3 : 1 < S ? 2 : 0 != h[m + 0]), m += 16; P >>= 4, F = F >> 1 | I << 7, b = (b << 8 | L) >>> 0; } for (A = P, x = F >> 4, N = 0; 4 > N; N += 2) { for (L = 0, P = l.la >> 4 + N, F = v.la >> 4 + N, w = 0; 2 > w; ++w) { for (I = 1 & F, _ = 0; 2 > _; ++_) S = I + (1 & P), P = P >> 1 | (I = 0 < (S = ri(f, d[2], S, g.Qc, 0, h, m))) << 3, L = L << 2 | (3 < S ? 3 : 1 < S ? 2 : 0 != h[m + 0]), m += 16; P >>= 2, F = F >> 1 | I << 5; } y |= L << 4 * N, A |= P << 4 << N, x |= (240 & F) << N; } l.la = A, v.la = x, p.Hc = b, p.Gc = y, p.ia = 43690 & y ? 0 : g.ia, d = !(b | y); } if (0 < u.L && (u.wa[u.Y + u.ja] = u.gd[o.$b][o.Za], u.wa[u.Y + u.ja].La |= !d), c.Ka) return Jt(t, 7, "Premature end-of-file encountered."); } if ($t(t), u = r, c = 1, o = (s = t).D, l = 0 < s.L && s.M >= s.zb && s.M <= s.Va, 0 == s.Aa) e: { if (o.M = s.M, o.uc = l, jr(s, o), c = 1, o = (L = s.D).Nb, l = (y = Ri[s.L]) * s.R, f = y / 2 * s.B, w = 16 * o * s.R, _ = 8 * o * s.B, d = s.sa, p = s.ta - l + w, g = s.qa, h = s.ra - f + _, m = s.Ha, v = s.Ia - f + _, F = 0 == (P = L.M), b = P >= s.Va - 1, 2 == s.Aa && jr(s, L), L.uc) for (I = (S = s).D.M, e(S.D.uc), L = S.yb; L < S.Hb; ++L) { x = L, A = I; var C = (j = (z = S).D).Nb; N = z.R; var j = j.wa[j.Y + x], O = z.sa, B = z.ta + 16 * C * N + 16 * x, M = j.dd, q = j.tc; if (0 != q) if (e(3 <= q), 1 == z.L) 0 < x && yn(O, B, N, q + 4), j.La && Nn(O, B, N, q), 0 < A && bn(O, B, N, q + 4), j.La && wn(O, B, N, q); else { var E = z.B, R = z.qa, D = z.ra + 8 * C * E + 8 * x, T = z.Ha, z = z.Ia + 8 * C * E + 8 * x; C = j.ld, 0 < x && (hn(O, B, N, q + 4, M, C), dn(R, D, T, z, E, q + 4, M, C)), j.La && (gn(O, B, N, q, M, C), vn(R, D, T, z, E, q, M, C)), 0 < A && (ln(O, B, N, q + 4, M, C), fn(R, D, T, z, E, q + 4, M, C)), j.La && (pn(O, B, N, q, M, C), mn(R, D, T, z, E, q, M, C)); } } if (s.ia && alert("todo:DitherRow"), null != u.put) { if (L = 16 * P, P = 16 * (P + 1), F ? (u.y = s.sa, u.O = s.ta + w, u.f = s.qa, u.N = s.ra + _, u.ea = s.Ha, u.W = s.Ia + _) : (L -= y, u.y = d, u.O = p, u.f = g, u.N = h, u.ea = m, u.W = v), b || (P -= y), P > u.o && (P = u.o), u.F = null, u.J = null, null != s.Fa && 0 < s.Fa.length && L < P && (u.J = lr(s, u, L, P - L), u.F = s.mb, null == u.F && 0 == u.F.length)) { c = Jt(s, 3, "Could not decode alpha data."); break e; } L < u.j && (y = u.j - L, L = u.j, e(!(1 & y)), u.O += s.R * y, u.N += s.B * (y >> 1), u.W += s.B * (y >> 1), null != u.F && (u.J += u.width * y)), L < P && (u.O += u.v, u.N += u.v >> 1, u.W += u.v >> 1, null != u.F && (u.J += u.v), u.ka = L - u.j, u.U = u.va - u.v, u.T = P - L, c = u.put(u)); } o + 1 != s.Ic || b || (n(s.sa, s.ta - l, d, p + 16 * s.R, l), n(s.qa, s.ra - f, g, h + 8 * s.B, f), n(s.Ha, s.Ia - f, m, v + 8 * s.B, f)); } if (!c) return Jt(t, 6, "Output aborted."); } return 1; }(t, r)), null != r.bc && r.bc(r), s &= 1; } return s ? (t.cb = 0, s) : 0; })(t, u) || (r = t.a); } } else r = t.a; } 0 == r && null != h.Oa && h.Oa.fd && (r = Mr(h.ba)); } h = r; } l = 0 != h ? null : 11 > l ? f.f.RGBA.eb : f.f.kb.y; } else l = null; return l; }; var zi = [ 3, 4, 3, 4, 4, 2, 2, 4, 4, 4, 2, 1, 1 ]; }; function c(t, e) { for (var r = "", n = 0; n < 4; n++) r += String.fromCharCode(t[e++]); return r; } function l(t, e) { return t[e + 0] | t[e + 1] << 8; } function h(t, e) { return (t[e + 0] | t[e + 1] << 8 | t[e + 2] << 16) >>> 0; } function f(t, e) { return (t[e + 0] | t[e + 1] << 8 | t[e + 2] << 16 | t[e + 3] << 24) >>> 0; } new u(); var d = [0], p = [0], g = [], m = new u(), v = t, b = function(t, e) { var r = {}, n = 0, i = !1, a = 0, o = 0; if (r.frames = [], !function(t, e) { /** @license * Copyright (c) 2017 Dominik Homberger Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. https://webpjs.appspot.com WebPRiffParser dominikhlbg@gmail.com */ for (var r = 0; r < 4; r++) if (t[e + r] != "RIFF".charCodeAt(r)) return !0; return !1; }(t, e)) { for (f(t, e += 4), e += 8; e < t.length;) { var s = c(t, e), u = f(t, e += 4); e += 4; var d = u + (1 & u); switch (s) { case "VP8 ": case "VP8L": void 0 === r.frames[n] && (r.frames[n] = {}), (m = r.frames[n]).src_off = i ? o : e - 8, m.src_size = a + u + 8, n++, i && (i = !1, a = 0, o = 0); break; case "VP8X": (m = r.header = {}).feature_flags = t[e]; var p = e + 4; m.canvas_width = 1 + h(t, p), p += 3, m.canvas_height = 1 + h(t, p), p += 3; break; case "ALPH": i = !0, a = d + 8, o = e - 8; break; case "ANIM": (m = r.header).bgcolor = f(t, e), p = e + 4, m.loop_count = l(t, p), p += 2; break; case "ANMF": var g, m; (m = r.frames[n] = {}).offset_x = 2 * h(t, e), e += 3, m.offset_y = 2 * h(t, e), e += 3, m.width = 1 + h(t, e), e += 3, m.height = 1 + h(t, e), e += 3, m.duration = h(t, e), e += 3, g = t[e++], m.dispose = 1 & g, m.blend = g >> 1 & 1; } "ANMF" != s && (e += d); } return r; } }(v, 0); b.response = v, b.rgbaoutput = !0, b.dataurl = !1; var y = b.header ? b.header : null, w = b.frames ? b.frames : null; if (y) { y.loop_counter = y.loop_count, d = [y.canvas_height], p = [y.canvas_width]; for (var N = 0; N < w.length && 0 != w[N].blend; N++); } var L = w[0], x = m.WebPDecodeRGBA(v, L.src_off, L.src_size, p, d); L.rgba = x, L.imgwidth = p[0], L.imgheight = d[0]; for (var A = 0; A < p[0] * d[0] * 4; A++) g[A] = x[A]; return this.width = p, this.height = d, this.data = g, this; } /** ==================================================================== * @license * jsPDF XMP metadata plugin * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ==================================================================== */ function ce() { var t, e = this.internal.__metadata__.metadata, r = unescape(encodeURIComponent(e)); t = this.internal.__metadata__.rawXml ? r : "" + r.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'") + "", this.internal.__metadata__.metadataObjectNumber = this.internal.newObject(), this.internal.write("<< /Type /Metadata /Subtype /XML /Length " + t.length + " >>"), this.internal.write("stream"), this.internal.write(t), this.internal.write("endstream"), this.internal.write("endobj"); } function le() { this.internal.__metadata__.metadataObjectNumber && this.internal.write("/Metadata " + this.internal.__metadata__.metadataObjectNumber + " 0 R"); } (function(e) { var r, n, i, a, s, u, c, l, f, d = function(t) { return t = t || {}, this.isStrokeTransparent = t.isStrokeTransparent || !1, this.strokeOpacity = t.strokeOpacity || 1, this.strokeStyle = t.strokeStyle || "#000000", this.fillStyle = t.fillStyle || "#000000", this.isFillTransparent = t.isFillTransparent || !1, this.fillOpacity = t.fillOpacity || 1, this.font = t.font || "10px sans-serif", this.textBaseline = t.textBaseline || "alphabetic", this.textAlign = t.textAlign || "left", this.lineWidth = t.lineWidth || 1, this.lineJoin = t.lineJoin || "miter", this.lineCap = t.lineCap || "butt", this.path = t.path || [], this.transform = void 0 !== t.transform ? t.transform.clone() : new l(), this.globalCompositeOperation = t.globalCompositeOperation || "normal", this.globalAlpha = t.globalAlpha || 1, this.clip_path = t.clip_path || [], this.currentPoint = t.currentPoint || new u(), this.miterLimit = t.miterLimit || 10, this.lastPoint = t.lastPoint || new u(), this.lineDashOffset = t.lineDashOffset || 0, this.lineDash = t.lineDash || [], this.margin = t.margin || [ 0, 0, 0, 0 ], this.prevPageLastElemOffset = t.prevPageLastElemOffset || 0, this.ignoreClearRect = "boolean" != typeof t.ignoreClearRect || t.ignoreClearRect, this; }; e.events.push(["initialized", function() { this.context2d = new p(this), r = this.internal.f2, n = this.internal.getCoordinateString, i = this.internal.getVerticalCoordinateString, a = this.internal.getHorizontalCoordinate, s = this.internal.getVerticalCoordinate, u = this.internal.Point, c = this.internal.Rectangle, l = this.internal.Matrix, f = new d(); }]); var p = function(t) { Object.defineProperty(this, "canvas", { get: function() { return { parentNode: !1, style: !1 }; } }); var e = t; Object.defineProperty(this, "pdf", { get: function() { return e; } }); var r = !1; Object.defineProperty(this, "pageWrapXEnabled", { get: function() { return r; }, set: function(t) { r = Boolean(t); } }); var n = !1; Object.defineProperty(this, "pageWrapYEnabled", { get: function() { return n; }, set: function(t) { n = Boolean(t); } }); var i = 0; Object.defineProperty(this, "posX", { get: function() { return i; }, set: function(t) { isNaN(t) || (i = t); } }); var a = 0; Object.defineProperty(this, "posY", { get: function() { return a; }, set: function(t) { isNaN(t) || (a = t); } }), Object.defineProperty(this, "margin", { get: function() { return f.margin; }, set: function(t) { var e; "number" == typeof t ? e = [ t, t, t, t ] : ((e = new Array(4))[0] = t[0], e[1] = t.length >= 2 ? t[1] : e[0], e[2] = t.length >= 3 ? t[2] : e[0], e[3] = t.length >= 4 ? t[3] : e[1]), f.margin = e; } }); var o = !1; Object.defineProperty(this, "autoPaging", { get: function() { return o; }, set: function(t) { o = t; } }); var s = 0; Object.defineProperty(this, "lastBreak", { get: function() { return s; }, set: function(t) { s = t; } }); var u = []; Object.defineProperty(this, "pageBreaks", { get: function() { return u; }, set: function(t) { u = t; } }), Object.defineProperty(this, "ctx", { get: function() { return f; }, set: function(t) { t instanceof d && (f = t); } }), Object.defineProperty(this, "path", { get: function() { return f.path; }, set: function(t) { f.path = t; } }); var c = []; Object.defineProperty(this, "ctxStack", { get: function() { return c; }, set: function(t) { c = t; } }), Object.defineProperty(this, "fillStyle", { get: function() { return this.ctx.fillStyle; }, set: function(t) { var e = g(t); this.ctx.fillStyle = e.style, this.ctx.isFillTransparent = 0 === e.a, this.ctx.fillOpacity = e.a, this.pdf.setFillColor(e.r, e.g, e.b, { a: e.a }), this.pdf.setTextColor(e.r, e.g, e.b, { a: e.a }); } }), Object.defineProperty(this, "strokeStyle", { get: function() { return this.ctx.strokeStyle; }, set: function(t) { var e = g(t); this.ctx.strokeStyle = e.style, this.ctx.isStrokeTransparent = 0 === e.a, this.ctx.strokeOpacity = e.a, 0 === e.a ? this.pdf.setDrawColor(255, 255, 255) : (e.a, this.pdf.setDrawColor(e.r, e.g, e.b)); } }), Object.defineProperty(this, "lineCap", { get: function() { return this.ctx.lineCap; }, set: function(t) { -1 !== [ "butt", "round", "square" ].indexOf(t) && (this.ctx.lineCap = t, this.pdf.setLineCap(t)); } }), Object.defineProperty(this, "lineWidth", { get: function() { return this.ctx.lineWidth; }, set: function(t) { isNaN(t) || (this.ctx.lineWidth = t, this.pdf.setLineWidth(t)); } }), Object.defineProperty(this, "lineJoin", { get: function() { return this.ctx.lineJoin; }, set: function(t) { -1 !== [ "bevel", "round", "miter" ].indexOf(t) && (this.ctx.lineJoin = t, this.pdf.setLineJoin(t)); } }), Object.defineProperty(this, "miterLimit", { get: function() { return this.ctx.miterLimit; }, set: function(t) { isNaN(t) || (this.ctx.miterLimit = t, this.pdf.setMiterLimit(t)); } }), Object.defineProperty(this, "textBaseline", { get: function() { return this.ctx.textBaseline; }, set: function(t) { this.ctx.textBaseline = t; } }), Object.defineProperty(this, "textAlign", { get: function() { return this.ctx.textAlign; }, set: function(t) { -1 !== [ "right", "end", "center", "left", "start" ].indexOf(t) && (this.ctx.textAlign = t); } }); var l = null, h = null; var p = null; Object.defineProperty(this, "fontFaces", { get: function() { return p; }, set: function(t) { l = null, h = null, p = t; } }), Object.defineProperty(this, "font", { get: function() { return this.ctx.font; }, set: function(t) { var e; if (this.ctx.font = t, null !== (e = /^\s*(?=(?:(?:[-a-z]+\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\1|\2|\3)\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\d]+(?:\%|in|[cem]m|ex|p[ctx]))(?:\s*\/\s*(normal|[.\d]+(?:\%|in|[cem]m|ex|p[ctx])))?\s*([-_,\"\'\sa-z0-9]+?)\s*$/i.exec(t))) { var r = e[1]; e[2]; var n = e[3], i = e[4]; e[5]; var a = e[6], o = /^([.\d]+)((?:%|in|[cem]m|ex|p[ctx]))$/i.exec(i)[2]; i = "px" === o ? Math.floor(parseFloat(i) * this.pdf.internal.scaleFactor) : "em" === o ? Math.floor(parseFloat(i) * this.pdf.getFontSize()) : Math.floor(parseFloat(i) * this.pdf.internal.scaleFactor), this.pdf.setFontSize(i); var s = function(t) { var e, r, n = [], i = t.trim(); if ("" === i) return Gt; if (i in qt) return [qt[i]]; for (; "" !== i;) { switch (r = null, e = (i = Rt(i)).charAt(0)) { case "\"": case "'": r = Dt(i.substring(1), e); break; default: r = Tt(i); } if (null === r) return Gt; if (n.push(r[0]), "" !== (i = Rt(r[1])) && "," !== i.charAt(0)) return Gt; i = i.replace(/^,/, ""); } return n; }(a); if (this.fontFaces) { var f = function(t, e, r) { for (var n = (r = r || {}).defaultFontFamily || "times", i = Object.assign({}, Mt, r.genericFontFamilies || {}), a = null, o = null, s = 0; s < e.length; ++s) if (i[(a = Ot(e[s])).family] && (a.family = i[a.family]), t.hasOwnProperty(a.family)) { o = t[a.family]; break; } if (!(o = o || t[n])) throw new Error("Could not find a font-family for the rule '" + Et(a) + "' and default family '" + n + "'."); if (o = function(t, e) { if (e[t]) return e[t]; var r = It[t], i = Bt(e, Ft, r, r <= It.normal ? -1 : 1); if (!i) throw new Error("Could not find a matching font-stretch value for " + t); return i; }(a.stretch, o), o = function(t, e) { if (e[t]) return e[t]; for (var r = kt[t], n = 0; n < r.length; ++n) if (e[r[n]]) return e[r[n]]; throw new Error("Could not find a matching font-style for " + t); }(a.style, o), !(o = function(t, e) { if (e[t]) return e[t]; if (400 === t && e[500]) return e[500]; if (500 === t && e[400]) return e[400]; var r = jt[t], n = Bt(e, Ct, r, t < 400 ? -1 : 1); if (!n) throw new Error("Could not find a matching font-weight for value " + t); return n; }(a.weight, o))) throw new Error("Failed to resolve a font for the rule '" + Et(a) + "'."); return o; }(function(t, e) { var r = t.getFontList(), n = JSON.stringify(r); if (null === l || h !== n) l = function(t) { for (var e = {}, r = 0; r < t.length; ++r) { var n = Ot(t[r]), i = n.family, a = n.stretch, o = n.style, s = n.weight; e[i] = e[i] || {}, e[i][a] = e[i][a] || {}, e[i][a][o] = e[i][a][o] || {}, e[i][a][o][s] = n; } return e; }(function(t) { var e = []; return Object.keys(t).forEach(function(r) { t[r].forEach(function(t) { var n = null; switch (t) { case "bold": n = { family: r, weight: "bold" }; break; case "italic": n = { family: r, style: "italic" }; break; case "bolditalic": n = { family: r, weight: "bold", style: "italic" }; break; case "": case "normal": n = { family: r }; } null !== n && (n.ref = { name: r, style: t }, e.push(n)); }); }), e; }(r).concat(e)), h = n; return l; }(this.pdf, this.fontFaces), s.map(function(t) { return { family: t, stretch: "normal", weight: n, style: r }; })); this.pdf.setFont(f.ref.name, f.ref.style); } else { var d = ""; ("bold" === n || parseInt(n, 10) >= 700 || "bold" === r) && (d = "bold"), "italic" === r && (d += "italic"), 0 === d.length && (d = "normal"); for (var p = "", g = { arial: "Helvetica", Arial: "Helvetica", verdana: "Helvetica", Verdana: "Helvetica", helvetica: "Helvetica", Helvetica: "Helvetica", "sans-serif": "Helvetica", fixed: "Courier", monospace: "Courier", terminal: "Courier", cursive: "Times", fantasy: "Times", serif: "Times" }, m = 0; m < s.length; m++) { if (void 0 !== this.pdf.internal.getFont(s[m], d, { noFallback: !0, disableWarning: !0 })) { p = s[m]; break; } if ("bolditalic" === d && void 0 !== this.pdf.internal.getFont(s[m], "bold", { noFallback: !0, disableWarning: !0 })) p = s[m], d = "bold"; else if (void 0 !== this.pdf.internal.getFont(s[m], "normal", { noFallback: !0, disableWarning: !0 })) { p = s[m], d = "normal"; break; } } if ("" === p) { for (var v = 0; v < s.length; v++) if (g[s[v]]) { p = g[s[v]]; break; } } p = "" === p ? "Times" : p, this.pdf.setFont(p, d); } } } }), Object.defineProperty(this, "globalCompositeOperation", { get: function() { return this.ctx.globalCompositeOperation; }, set: function(t) { this.ctx.globalCompositeOperation = t; } }), Object.defineProperty(this, "globalAlpha", { get: function() { return this.ctx.globalAlpha; }, set: function(t) { this.ctx.globalAlpha = t; } }), Object.defineProperty(this, "lineDashOffset", { get: function() { return this.ctx.lineDashOffset; }, set: function(t) { this.ctx.lineDashOffset = t, T.call(this); } }), Object.defineProperty(this, "lineDash", { get: function() { return this.ctx.lineDash; }, set: function(t) { this.ctx.lineDash = t, T.call(this); } }), Object.defineProperty(this, "ignoreClearRect", { get: function() { return this.ctx.ignoreClearRect; }, set: function(t) { this.ctx.ignoreClearRect = Boolean(t); } }); }; p.prototype.setLineDash = function(t) { this.lineDash = t; }, p.prototype.getLineDash = function() { return this.lineDash.length % 2 ? this.lineDash.concat(this.lineDash) : this.lineDash.slice(); }, p.prototype.fill = function() { x.call(this, "fill", !1); }, p.prototype.stroke = function() { x.call(this, "stroke", !1); }, p.prototype.beginPath = function() { this.path = [{ type: "begin" }]; }, p.prototype.moveTo = function(t, e) { if (isNaN(t) || isNaN(e)) throw o.error("jsPDF.context2d.moveTo: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.moveTo"); var r = this.ctx.transform.applyToPoint(new u(t, e)); this.path.push({ type: "mt", x: r.x, y: r.y }), this.ctx.lastPoint = new u(t, e); }, p.prototype.closePath = function() { var e = new u(0, 0), r = 0; for (r = this.path.length - 1; -1 !== r; r--) if ("begin" === this.path[r].type && "object" === _typeof(this.path[r + 1]) && "number" == typeof this.path[r + 1].x) { e = new u(this.path[r + 1].x, this.path[r + 1].y); break; } this.path.push({ type: "close" }), this.ctx.lastPoint = new u(e.x, e.y); }, p.prototype.lineTo = function(t, e) { if (isNaN(t) || isNaN(e)) throw o.error("jsPDF.context2d.lineTo: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.lineTo"); var r = this.ctx.transform.applyToPoint(new u(t, e)); this.path.push({ type: "lt", x: r.x, y: r.y }), this.ctx.lastPoint = new u(r.x, r.y); }, p.prototype.clip = function() { this.ctx.clip_path = JSON.parse(JSON.stringify(this.path)), x.call(this, null, !0); }, p.prototype.quadraticCurveTo = function(t, e, r, n) { if (isNaN(r) || isNaN(n) || isNaN(t) || isNaN(e)) throw o.error("jsPDF.context2d.quadraticCurveTo: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.quadraticCurveTo"); var i = this.ctx.transform.applyToPoint(new u(r, n)), a = this.ctx.transform.applyToPoint(new u(t, e)); this.path.push({ type: "qct", x1: a.x, y1: a.y, x: i.x, y: i.y }), this.ctx.lastPoint = new u(i.x, i.y); }, p.prototype.bezierCurveTo = function(t, e, r, n, i, a) { if (isNaN(i) || isNaN(a) || isNaN(t) || isNaN(e) || isNaN(r) || isNaN(n)) throw o.error("jsPDF.context2d.bezierCurveTo: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.bezierCurveTo"); var s = this.ctx.transform.applyToPoint(new u(i, a)), c = this.ctx.transform.applyToPoint(new u(t, e)), l = this.ctx.transform.applyToPoint(new u(r, n)); this.path.push({ type: "bct", x1: c.x, y1: c.y, x2: l.x, y2: l.y, x: s.x, y: s.y }), this.ctx.lastPoint = new u(s.x, s.y); }, p.prototype.arc = function(t, e, r, n, i, a) { if (isNaN(t) || isNaN(e) || isNaN(r) || isNaN(n) || isNaN(i)) throw o.error("jsPDF.context2d.arc: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.arc"); if (a = Boolean(a), !this.ctx.transform.isIdentity) { var s = this.ctx.transform.applyToPoint(new u(t, e)); t = s.x, e = s.y; var c = this.ctx.transform.applyToPoint(new u(0, r)), l = this.ctx.transform.applyToPoint(new u(0, 0)); r = Math.sqrt(Math.pow(c.x - l.x, 2) + Math.pow(c.y - l.y, 2)); } Math.abs(i - n) >= 2 * Math.PI && (n = 0, i = 2 * Math.PI), this.path.push({ type: "arc", x: t, y: e, radius: r, startAngle: n, endAngle: i, counterclockwise: a }); }, p.prototype.arcTo = function(t, e, r, n, i) { throw new Error("arcTo not implemented."); }, p.prototype.rect = function(t, e, r, n) { if (isNaN(t) || isNaN(e) || isNaN(r) || isNaN(n)) throw o.error("jsPDF.context2d.rect: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.rect"); this.moveTo(t, e), this.lineTo(t + r, e), this.lineTo(t + r, e + n), this.lineTo(t, e + n), this.lineTo(t, e), this.lineTo(t + r, e), this.lineTo(t, e); }, p.prototype.fillRect = function(t, e, r, n) { if (isNaN(t) || isNaN(e) || isNaN(r) || isNaN(n)) throw o.error("jsPDF.context2d.fillRect: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.fillRect"); if (!m.call(this)) { var i = {}; "butt" !== this.lineCap && (i.lineCap = this.lineCap, this.lineCap = "butt"), "miter" !== this.lineJoin && (i.lineJoin = this.lineJoin, this.lineJoin = "miter"), this.beginPath(), this.rect(t, e, r, n), this.fill(), i.hasOwnProperty("lineCap") && (this.lineCap = i.lineCap), i.hasOwnProperty("lineJoin") && (this.lineJoin = i.lineJoin); } }, p.prototype.strokeRect = function(t, e, r, n) { if (isNaN(t) || isNaN(e) || isNaN(r) || isNaN(n)) throw o.error("jsPDF.context2d.strokeRect: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.strokeRect"); v.call(this) || (this.beginPath(), this.rect(t, e, r, n), this.stroke()); }, p.prototype.clearRect = function(t, e, r, n) { if (isNaN(t) || isNaN(e) || isNaN(r) || isNaN(n)) throw o.error("jsPDF.context2d.clearRect: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.clearRect"); this.ignoreClearRect || (this.fillStyle = "#ffffff", this.fillRect(t, e, r, n)); }, p.prototype.save = function(t) { t = "boolean" != typeof t || t; for (var e = this.pdf.internal.getCurrentPageInfo().pageNumber, r = 0; r < this.pdf.internal.getNumberOfPages(); r++) this.pdf.setPage(r + 1), this.pdf.internal.out("q"); if (this.pdf.setPage(e), t) { this.ctx.fontSize = this.pdf.internal.getFontSize(); var n = new d(this.ctx); this.ctxStack.push(this.ctx), this.ctx = n; } }, p.prototype.restore = function(t) { t = "boolean" != typeof t || t; for (var e = this.pdf.internal.getCurrentPageInfo().pageNumber, r = 0; r < this.pdf.internal.getNumberOfPages(); r++) this.pdf.setPage(r + 1), this.pdf.internal.out("Q"); this.pdf.setPage(e), t && 0 !== this.ctxStack.length && (this.ctx = this.ctxStack.pop(), this.fillStyle = this.ctx.fillStyle, this.strokeStyle = this.ctx.strokeStyle, this.font = this.ctx.font, this.lineCap = this.ctx.lineCap, this.lineWidth = this.ctx.lineWidth, this.lineJoin = this.ctx.lineJoin, this.lineDash = this.ctx.lineDash, this.lineDashOffset = this.ctx.lineDashOffset); }, p.prototype.toDataURL = function() { throw new Error("toDataUrl not implemented."); }; var g = function(t) { var e, r, n, i; if (!0 === t.isCanvasGradient && (t = t.getColor()), !t) return { r: 0, g: 0, b: 0, a: 0, style: t }; if (/transparent|rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*0+\s*\)/.test(t)) e = 0, r = 0, n = 0, i = 0; else { var a = /rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/.exec(t); if (null !== a) e = parseInt(a[1]), r = parseInt(a[2]), n = parseInt(a[3]), i = 1; else if (null !== (a = /rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)/.exec(t))) e = parseInt(a[1]), r = parseInt(a[2]), n = parseInt(a[3]), i = parseFloat(a[4]); else { if (i = 1, "string" == typeof t && "#" !== t.charAt(0)) { var o = new h(t); t = o.ok ? o.toHex() : "#000000"; } 4 === t.length ? (e = t.substring(1, 2), e += e, r = t.substring(2, 3), r += r, n = t.substring(3, 4), n += n) : (e = t.substring(1, 3), r = t.substring(3, 5), n = t.substring(5, 7)), e = parseInt(e, 16), r = parseInt(r, 16), n = parseInt(n, 16); } } return { r: e, g: r, b: n, a: i, style: t }; }, m = function() { return this.ctx.isFillTransparent || 0 == this.globalAlpha; }, v = function() { return Boolean(this.ctx.isStrokeTransparent || 0 == this.globalAlpha); }; p.prototype.fillText = function(t, e, r, n) { if (isNaN(e) || isNaN(r) || "string" != typeof t) throw o.error("jsPDF.context2d.fillText: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.fillText"); if (n = isNaN(n) ? void 0 : n, !m.call(this)) { var i = E(this.ctx.transform.rotation), a = this.ctx.transform.scaleX; C.call(this, { text: t, x: e, y: r, scale: a, angle: i, align: this.textAlign, maxWidth: n }); } }, p.prototype.strokeText = function(t, e, r, n) { if (isNaN(e) || isNaN(r) || "string" != typeof t) throw o.error("jsPDF.context2d.strokeText: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.strokeText"); if (!v.call(this)) { n = isNaN(n) ? void 0 : n; var i = E(this.ctx.transform.rotation), a = this.ctx.transform.scaleX; C.call(this, { text: t, x: e, y: r, scale: a, renderingMode: "stroke", angle: i, align: this.textAlign, maxWidth: n }); } }, p.prototype.measureText = function(t) { if ("string" != typeof t) throw o.error("jsPDF.context2d.measureText: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.measureText"); var e = this.pdf, r = this.pdf.internal.scaleFactor, n = e.internal.getFontSize(), i = e.getStringUnitWidth(t) * n / e.internal.scaleFactor; return new function(t) { var e = (t = t || {}).width || 0; return Object.defineProperty(this, "width", { get: function() { return e; } }), this; }({ width: i *= Math.round(96 * r / 72 * 1e4) / 1e4 }); }, p.prototype.scale = function(t, e) { if (isNaN(t) || isNaN(e)) throw o.error("jsPDF.context2d.scale: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.scale"); var r = new l(t, 0, 0, e, 0, 0); this.ctx.transform = this.ctx.transform.multiply(r); }, p.prototype.rotate = function(t) { if (isNaN(t)) throw o.error("jsPDF.context2d.rotate: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.rotate"); var e = new l(Math.cos(t), Math.sin(t), -Math.sin(t), Math.cos(t), 0, 0); this.ctx.transform = this.ctx.transform.multiply(e); }, p.prototype.translate = function(t, e) { if (isNaN(t) || isNaN(e)) throw o.error("jsPDF.context2d.translate: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.translate"); var r = new l(1, 0, 0, 1, t, e); this.ctx.transform = this.ctx.transform.multiply(r); }, p.prototype.transform = function(t, e, r, n, i, a) { if (isNaN(t) || isNaN(e) || isNaN(r) || isNaN(n) || isNaN(i) || isNaN(a)) throw o.error("jsPDF.context2d.transform: Invalid arguments", arguments), /* @__PURE__ */ new Error("Invalid arguments passed to jsPDF.context2d.transform"); var s = new l(t, e, r, n, i, a); this.ctx.transform = this.ctx.transform.multiply(s); }, p.prototype.setTransform = function(t, e, r, n, i, a) { t = isNaN(t) ? 1 : t, e = isNaN(e) ? 0 : e, r = isNaN(r) ? 0 : r, n = isNaN(n) ? 1 : n, i = isNaN(i) ? 0 : i, a = isNaN(a) ? 0 : a, this.ctx.transform = new l(t, e, r, n, i, a); }; var b = function() { return this.margin[0] > 0 || this.margin[1] > 0 || this.margin[2] > 0 || this.margin[3] > 0; }; p.prototype.drawImage = function(t, e, r, n, i, a, o, s, u) { var h = this.pdf.getImageProperties(t), f = 1, d = 1, p = 1, g = 1; void 0 !== n && void 0 !== s && (p = s / n, g = u / i, f = h.width / n * s / n, d = h.height / i * u / i), void 0 === a && (a = e, o = r, e = 0, r = 0), void 0 !== n && void 0 === s && (s = n, u = i), void 0 === n && void 0 === s && (s = h.width, u = h.height); var m = this.ctx.transform.decompose(), v = E(m.rotate.shx), w = new l(), x = (w = (w = (w = w.multiply(m.translate)).multiply(m.skew)).multiply(m.scale)).applyToRectangle(new c(a - e * p, o - r * g, n * f, i * d)); if (this.autoPaging) { for (var S, _ = y.call(this, x), P = [], k = 0; k < _.length; k += 1) -1 === P.indexOf(_[k]) && P.push(_[k]); L(P); for (var F = P[0], I = P[P.length - 1], C = F; C < I + 1; C++) { this.pdf.setPage(C); var j = this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1], O = 1 === C ? this.posY + this.margin[0] : this.margin[0], B = this.pdf.internal.pageSize.height - this.posY - this.margin[0] - this.margin[2], M = this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2], q = 1 === C ? 0 : B + (C - 2) * M; if (0 !== this.ctx.clip_path.length) { var R = this.path; S = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = N(S, this.posX + this.margin[3], -q + O + this.ctx.prevPageLastElemOffset), A.call(this, "fill", !0), this.path = R; } var D = JSON.parse(JSON.stringify(x)); D = N([D], this.posX + this.margin[3], -q + O + this.ctx.prevPageLastElemOffset)[0]; var T = (C > F || C < I) && b.call(this); T && (this.pdf.saveGraphicsState(), this.pdf.rect(this.margin[3], this.margin[0], j, M, null).clip().discardPath()), this.pdf.addImage(t, "JPEG", D.x, D.y, D.w, D.h, null, null, v), T && this.pdf.restoreGraphicsState(); } } else this.pdf.addImage(t, "JPEG", x.x, x.y, x.w, x.h, null, null, v); }; var y = function(t, e, r) { var n = []; e = e || this.pdf.internal.pageSize.width, r = r || this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2]; var i = this.posY + this.ctx.prevPageLastElemOffset; switch (t.type) { default: case "mt": case "lt": n.push(Math.floor((t.y + i) / r) + 1); break; case "arc": n.push(Math.floor((t.y + i - t.radius) / r) + 1), n.push(Math.floor((t.y + i + t.radius) / r) + 1); break; case "qct": var a = R(this.ctx.lastPoint.x, this.ctx.lastPoint.y, t.x1, t.y1, t.x, t.y); n.push(Math.floor((a.y + i) / r) + 1), n.push(Math.floor((a.y + a.h + i) / r) + 1); break; case "bct": var o = D(this.ctx.lastPoint.x, this.ctx.lastPoint.y, t.x1, t.y1, t.x2, t.y2, t.x, t.y); n.push(Math.floor((o.y + i) / r) + 1), n.push(Math.floor((o.y + o.h + i) / r) + 1); break; case "rect": n.push(Math.floor((t.y + i) / r) + 1), n.push(Math.floor((t.y + t.h + i) / r) + 1); } for (var s = 0; s < n.length; s += 1) for (; this.pdf.internal.getNumberOfPages() < n[s];) w.call(this); return n; }, w = function() { var t = this.fillStyle, e = this.strokeStyle, r = this.font, n = this.lineCap, i = this.lineWidth, a = this.lineJoin; this.pdf.addPage(), this.fillStyle = t, this.strokeStyle = e, this.font = r, this.lineCap = n, this.lineWidth = i, this.lineJoin = a; }, N = function(t, e, r) { for (var n = 0; n < t.length; n++) switch (t[n].type) { case "bct": t[n].x2 += e, t[n].y2 += r; case "qct": t[n].x1 += e, t[n].y1 += r; default: t[n].x += e, t[n].y += r; } return t; }, L = function(t) { return t.sort(function(t, e) { return t - e; }); }, x = function(t, e) { var r = this.fillStyle, n = this.strokeStyle, i = this.lineCap, a = this.lineWidth, o = Math.abs(a * this.ctx.transform.scaleX), s = this.lineJoin; if (this.autoPaging) { for (var u, c, l = JSON.parse(JSON.stringify(this.path)), h = JSON.parse(JSON.stringify(this.path)), f = [], d = 0; d < h.length; d++) if (void 0 !== h[d].x) for (var p = y.call(this, h[d]), g = 0; g < p.length; g += 1) -1 === f.indexOf(p[g]) && f.push(p[g]); for (var m = 0; m < f.length; m++) for (; this.pdf.internal.getNumberOfPages() < f[m];) w.call(this); L(f); for (var v = f[0], x = f[f.length - 1], S = v; S < x + 1; S++) { this.pdf.setPage(S), this.fillStyle = r, this.strokeStyle = n, this.lineCap = i, this.lineWidth = o, this.lineJoin = s; var _ = this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1], P = 1 === S ? this.posY + this.margin[0] : this.margin[0], k = this.pdf.internal.pageSize.height - this.posY - this.margin[0] - this.margin[2], F = this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2], I = 1 === S ? 0 : k + (S - 2) * F; if (0 !== this.ctx.clip_path.length) { var C = this.path; u = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = N(u, this.posX + this.margin[3], -I + P + this.ctx.prevPageLastElemOffset), A.call(this, t, !0), this.path = C; } if (c = JSON.parse(JSON.stringify(l)), this.path = N(c, this.posX + this.margin[3], -I + P + this.ctx.prevPageLastElemOffset), !1 === e || 0 === S) { var j = (S > v || S < x) && b.call(this); j && (this.pdf.saveGraphicsState(), this.pdf.rect(this.margin[3], this.margin[0], _, F, null).clip().discardPath()), A.call(this, t, e), j && this.pdf.restoreGraphicsState(); } this.lineWidth = a; } this.path = l; } else this.lineWidth = o, A.call(this, t, e), this.lineWidth = a; }, A = function(t, e) { if (("stroke" !== t || e || !v.call(this)) && ("stroke" === t || e || !m.call(this))) { for (var r, n, i = [], a = this.path, o = 0; o < a.length; o++) { var s = a[o]; switch (s.type) { case "begin": i.push({ begin: !0 }); break; case "close": i.push({ close: !0 }); break; case "mt": i.push({ start: s, deltas: [], abs: [] }); break; case "lt": var u = i.length; if (a[o - 1] && !isNaN(a[o - 1].x) && (r = [s.x - a[o - 1].x, s.y - a[o - 1].y], u > 0)) { for (; u >= 0; u--) if (!0 !== i[u - 1].close && !0 !== i[u - 1].begin) { i[u - 1].deltas.push(r), i[u - 1].abs.push(s); break; } } break; case "bct": r = [ s.x1 - a[o - 1].x, s.y1 - a[o - 1].y, s.x2 - a[o - 1].x, s.y2 - a[o - 1].y, s.x - a[o - 1].x, s.y - a[o - 1].y ], i[i.length - 1].deltas.push(r); break; case "qct": var c = a[o - 1].x + 2 / 3 * (s.x1 - a[o - 1].x), l = a[o - 1].y + 2 / 3 * (s.y1 - a[o - 1].y), h = s.x + 2 / 3 * (s.x1 - s.x), f = s.y + 2 / 3 * (s.y1 - s.y), d = s.x, p = s.y; r = [ c - a[o - 1].x, l - a[o - 1].y, h - a[o - 1].x, f - a[o - 1].y, d - a[o - 1].x, p - a[o - 1].y ], i[i.length - 1].deltas.push(r); break; case "arc": i.push({ deltas: [], abs: [], arc: !0 }), Array.isArray(i[i.length - 1].abs) && i[i.length - 1].abs.push(s); } } n = e ? null : "stroke" === t ? "stroke" : "fill"; for (var g = !1, b = 0; b < i.length; b++) if (i[b].arc) for (var y = i[b].abs, w = 0; w < y.length; w++) { var N = y[w]; "arc" === N.type ? P.call(this, N.x, N.y, N.radius, N.startAngle, N.endAngle, N.counterclockwise, void 0, e, !g) : j.call(this, N.x, N.y), g = !0; } else if (!0 === i[b].close) this.pdf.internal.out("h"), g = !1; else if (!0 !== i[b].begin) { var L = i[b].start.x, x = i[b].start.y; O.call(this, i[b].deltas, L, x), g = !0; } n && k.call(this, n), e && F.call(this); } }, S = function(t) { var e = this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor, r = e * (this.pdf.internal.getLineHeightFactor() - 1); switch (this.ctx.textBaseline) { case "bottom": return t - r; case "top": return t + e - r; case "hanging": return t + e - 2 * r; case "middle": return t + e / 2 - r; default: return t; } }, _ = function(t) { return t + this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor * (this.pdf.internal.getLineHeightFactor() - 1); }; p.prototype.createLinearGradient = function() { var t = function() {}; return t.colorStops = [], t.addColorStop = function(t, e) { this.colorStops.push([t, e]); }, t.getColor = function() { return 0 === this.colorStops.length ? "#000000" : this.colorStops[0][1]; }, t.isCanvasGradient = !0, t; }, p.prototype.createPattern = function() { return this.createLinearGradient(); }, p.prototype.createRadialGradient = function() { return this.createLinearGradient(); }; var P = function(t, e, r, n, i, a, o, s, u) { for (var c = M.call(this, r, n, i, a), l = 0; l < c.length; l++) { var h = c[l]; 0 === l && (u ? I.call(this, h.x1 + t, h.y1 + e) : j.call(this, h.x1 + t, h.y1 + e)), B.call(this, t, e, h.x2, h.y2, h.x3, h.y3, h.x4, h.y4); } s ? F.call(this) : k.call(this, o); }, k = function(t) { switch (t) { case "stroke": this.pdf.internal.out("S"); break; case "fill": this.pdf.internal.out("f"); } }, F = function() { this.pdf.clip(), this.pdf.discardPath(); }, I = function(t, e) { this.pdf.internal.out(n(t) + " " + i(e) + " m"); }, C = function(t) { var e; switch (t.align) { case "right": case "end": e = "right"; break; case "center": e = "center"; break; default: e = "left"; } var r, n, i, a = this.pdf.getTextDimensions(t.text), o = S.call(this, t.y), s = _.call(this, o) - a.h, h = this.ctx.transform.applyToPoint(new u(t.x, o)); if (this.autoPaging) { var f = this.ctx.transform.decompose(), d = new l(); d = (d = (d = d.multiply(f.translate)).multiply(f.skew)).multiply(f.scale); for (var p = this.ctx.transform.applyToRectangle(new c(t.x, o, a.w, a.h)), g = d.applyToRectangle(new c(t.x, s, a.w, a.h)), m = y.call(this, g), v = [], w = 0; w < m.length; w += 1) -1 === v.indexOf(m[w]) && v.push(m[w]); L(v); for (var x = v[0], P = v[v.length - 1], k = x; k < P + 1; k++) { this.pdf.setPage(k); var F = 1 === k ? this.posY + this.margin[0] : this.margin[0], I = this.pdf.internal.pageSize.height - this.posY - this.margin[0] - this.margin[2], C = this.pdf.internal.pageSize.height - this.margin[2], j = C - this.margin[0], O = this.pdf.internal.pageSize.width - this.margin[1], B = O - this.margin[3], M = 1 === k ? 0 : I + (k - 2) * j; if (0 !== this.ctx.clip_path.length) { var q = this.path; r = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = N(r, this.posX + this.margin[3], -1 * M + F), A.call(this, "fill", !0), this.path = q; } var E = N([JSON.parse(JSON.stringify(g))], this.posX + this.margin[3], -M + F + this.ctx.prevPageLastElemOffset)[0]; t.scale >= .01 && (n = this.pdf.internal.getFontSize(), this.pdf.setFontSize(n * t.scale), i = this.lineWidth, this.lineWidth = i * t.scale); var R = "text" !== this.autoPaging; if (R || E.y + E.h <= C) { if (R || E.y >= F && E.x <= O) { var D = R ? t.text : this.pdf.splitTextToSize(t.text, t.maxWidth || O - E.x)[0], T = N([JSON.parse(JSON.stringify(p))], this.posX + this.margin[3], -M + F + this.ctx.prevPageLastElemOffset)[0], z = R && (k > x || k < P) && b.call(this); z && (this.pdf.saveGraphicsState(), this.pdf.rect(this.margin[3], this.margin[0], B, j, null).clip().discardPath()), this.pdf.text(D, T.x, T.y, { angle: t.angle, align: e, renderingMode: t.renderingMode }), z && this.pdf.restoreGraphicsState(); } } else E.y < C && (this.ctx.prevPageLastElemOffset += C - E.y); t.scale >= .01 && (this.pdf.setFontSize(n), this.lineWidth = i); } } else t.scale >= .01 && (n = this.pdf.internal.getFontSize(), this.pdf.setFontSize(n * t.scale), i = this.lineWidth, this.lineWidth = i * t.scale), this.pdf.text(t.text, h.x + this.posX, h.y + this.posY, { angle: t.angle, align: e, renderingMode: t.renderingMode, maxWidth: t.maxWidth }), t.scale >= .01 && (this.pdf.setFontSize(n), this.lineWidth = i); }, j = function(t, e, r, a) { r = r || 0, a = a || 0, this.pdf.internal.out(n(t + r) + " " + i(e + a) + " l"); }, O = function(t, e, r) { return this.pdf.lines(t, e, r, null, null); }, B = function(t, e, n, i, o, u, c, l) { this.pdf.internal.out([ r(a(n + t)), r(s(i + e)), r(a(o + t)), r(s(u + e)), r(a(c + t)), r(s(l + e)), "c" ].join(" ")); }, M = function(t, e, r, n) { for (var i = 2 * Math.PI, a = Math.PI / 2; e > r;) e -= i; var o = Math.abs(r - e); o < i && n && (o = i - o); for (var s = [], u = n ? -1 : 1, c = e; o > 1e-5;) { var l = c + u * Math.min(o, a); s.push(q.call(this, t, c, l)), o -= Math.abs(l - c), c = l; } return s; }, q = function(t, e, r) { var n = (r - e) / 2, i = t * Math.cos(n), a = t * Math.sin(n), o = i, s = -a, u = o * o + s * s, c = u + o * i + s * a, l = 4 / 3 * (Math.sqrt(2 * u * c) - c) / (o * a - s * i), h = o - l * s, f = s + l * o, d = h, p = -f, g = n + e, m = Math.cos(g), v = Math.sin(g); return { x1: t * Math.cos(e), y1: t * Math.sin(e), x2: h * m - f * v, y2: h * v + f * m, x3: d * m - p * v, y3: d * v + p * m, x4: t * Math.cos(r), y4: t * Math.sin(r) }; }, E = function(t) { return 180 * t / Math.PI; }, R = function(t, e, r, n, i, a) { var o = t + .5 * (r - t), s = e + .5 * (n - e), u = i + .5 * (r - i), l = a + .5 * (n - a), h = Math.min(t, i, o, u), f = Math.max(t, i, o, u), d = Math.min(e, a, s, l), p = Math.max(e, a, s, l); return new c(h, d, f - h, p - d); }, D = function(t, e, r, n, i, a, o, s) { var u, l, h, f, d, p, g, m, v, b, y, w, N, L, x = r - t, A = n - e, S = i - r, _ = a - n, P = o - i, k = s - a; for (l = 0; l < 41; l++) v = (g = (h = t + (u = l / 40) * x) + u * ((d = r + u * S) - h)) + u * (d + u * (i + u * P - d) - g), b = (m = (f = e + u * A) + u * ((p = n + u * _) - f)) + u * (p + u * (a + u * k - p) - m), 0 == l ? (y = v, w = b, N = v, L = b) : (y = Math.min(y, v), w = Math.min(w, b), N = Math.max(N, v), L = Math.max(L, b)); return new c(Math.round(y), Math.round(w), Math.round(N - y), Math.round(L - w)); }, T = function() { if (this.prevLineDash || this.ctx.lineDash.length || this.ctx.lineDashOffset) { var t, e, r = (t = this.ctx.lineDash, e = this.ctx.lineDashOffset, JSON.stringify({ lineDash: t, lineDashOffset: e })); this.prevLineDash !== r && (this.pdf.setLineDash(this.ctx.lineDash, this.ctx.lineDashOffset), this.prevLineDash = r); } }; })(E.API), function(t) { /** * @license * jsPDF filters PlugIn * Copyright (c) 2014 Aras Abbasi * * Licensed under the MIT License. * http://opensource.org/licenses/mit-license */ var r = function(t) { var e, r, n, i, a, o, s, u, c, l; for (/[^\x00-\xFF]/.test(t), r = [], n = 0, i = (t += e = "\0\0\0\0".slice(t.length % 4 || 4)).length; i > n; n += 4) 0 !== (a = (t.charCodeAt(n) << 24) + (t.charCodeAt(n + 1) << 16) + (t.charCodeAt(n + 2) << 8) + t.charCodeAt(n + 3)) ? (o = (a = ((a = ((a = ((a = (a - (l = a % 85)) / 85) - (c = a % 85)) / 85) - (u = a % 85)) / 85) - (s = a % 85)) / 85) % 85, r.push(o + 33, s + 33, u + 33, c + 33, l + 33)) : r.push(122); return function(t, e) { for (var r = e; r > 0; r--) t.pop(); }(r, e.length), String.fromCharCode.apply(String, r) + "~>"; }, n = function(t) { var e, r, n, i, a, o = String, s = "length", u = 255, c = "charCodeAt", l = "slice", h = "replace"; for (t[l](-2), t = t[l](0, -2)[h](/\s/g, "")[h]("z", "!!!!!"), n = [], i = 0, a = (t += e = "uuuuu"[l](t[s] % 5 || 5))[s]; a > i; i += 5) r = 52200625 * (t[c](i) - 33) + 614125 * (t[c](i + 1) - 33) + 7225 * (t[c](i + 2) - 33) + 85 * (t[c](i + 3) - 33) + (t[c](i + 4) - 33), n.push(u & r >> 24, u & r >> 16, u & r >> 8, u & r); return function(t, e) { for (var r = e; r > 0; r--) t.pop(); }(n, e[s]), o.fromCharCode.apply(o, n); }, i = function(t) { return t.split("").map(function(t) { return ("0" + t.charCodeAt().toString(16)).slice(-2); }).join("") + ">"; }, a = function(t) { var e = /* @__PURE__ */ new RegExp(/^([0-9A-Fa-f]{2})+$/); if (-1 !== (t = t.replace(/\s/g, "")).indexOf(">") && (t = t.substr(0, t.indexOf(">"))), t.length % 2 && (t += "0"), !1 === e.test(t)) return ""; for (var r = "", n = 0; n < t.length; n += 2) r += String.fromCharCode("0x" + (t[n] + t[n + 1])); return r; }, o = function(t) { for (var r = new Uint8Array(t.length), n = t.length; n--;) r[n] = t.charCodeAt(n); return (r = zlibSync(r)).reduce(function(t, e) { return t + String.fromCharCode(e); }, ""); }; t.processDataByFilters = function(t, e) { var s = 0, u = t || "", c = []; for ("string" == typeof (e = e || []) && (e = [e]), s = 0; s < e.length; s += 1) switch (e[s]) { case "ASCII85Decode": case "/ASCII85Decode": u = n(u), c.push("/ASCII85Encode"); break; case "ASCII85Encode": case "/ASCII85Encode": u = r(u), c.push("/ASCII85Decode"); break; case "ASCIIHexDecode": case "/ASCIIHexDecode": u = a(u), c.push("/ASCIIHexEncode"); break; case "ASCIIHexEncode": case "/ASCIIHexEncode": u = i(u), c.push("/ASCIIHexDecode"); break; case "FlateEncode": case "/FlateEncode": u = o(u), c.push("/FlateDecode"); break; default: throw new Error("The filter: \"" + e[s] + "\" is not implemented"); } return { data: u, reverseChain: c.reverse().join(" ") }; }; }(E.API), function(t) { /** * @license * jsPDF fileloading PlugIn * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com) * * Licensed under the MIT License. * http://opensource.org/licenses/mit-license */ t.loadFile = function(t, e, r) { return function(t, e, r) { e = !1 !== e, r = "function" == typeof r ? r : function() {}; var n = void 0; try { n = function(t, e, r) { var n = new XMLHttpRequest(), i = 0, a = function(t) { var e = t.length, r = [], n = String.fromCharCode; for (i = 0; i < e; i += 1) r.push(n(255 & t.charCodeAt(i))); return r.join(""); }; if (n.open("GET", t, !e), n.overrideMimeType("text/plain; charset=x-user-defined"), !1 === e && (n.onload = function() { 200 === n.status ? r(a(this.responseText)) : r(void 0); }), n.send(null), e && 200 === n.status) return a(n.responseText); }(t, e, r); } catch (i) {} return n; }(t, e, r); }, t.allowFsRead = void 0, t.loadImageFile = t.loadFile; }(E.API), function(e) { function r() { return (i.html2canvas ? Promise.resolve(i.html2canvas) : import("./html2canvas-DC04OtIc.js").then((m) => /* @__PURE__ */ __toESM(m.default))).catch(function(t) { return Promise.reject(/* @__PURE__ */ new Error("Could not load html2canvas: " + t)); }).then(function(t) { return t.default ? t.default : t; }); } function n() { return (i.DOMPurify ? Promise.resolve(i.DOMPurify) : import("./purify.es-erUxcz-o.js")).catch(function(t) { return Promise.reject(/* @__PURE__ */ new Error("Could not load dompurify: " + t)); }).then(function(t) { return t.default ? t.default : t; }); } var a = function(e) { var r = _typeof(e); return "undefined" === r ? "undefined" : "string" === r || e instanceof String ? "string" : "number" === r || e instanceof Number ? "number" : "function" === r || e instanceof Function ? "function" : e && e.constructor === Array ? "array" : e && 1 === e.nodeType ? "element" : "object" === r ? "object" : "unknown"; }, o = function(t, e) { var r = document.createElement(t); for (var n in e.className && (r.className = e.className), e.innerHTML && e.dompurify && (r.innerHTML = e.dompurify.sanitize(e.innerHTML)), e.style) r.style[n] = e.style[n]; return r; }, s = function t(e, r) { for (var n = 3 === e.nodeType ? document.createTextNode(e.nodeValue) : e.cloneNode(!1), i = e.firstChild; i; i = i.nextSibling) !0 !== r && 1 === i.nodeType && "SCRIPT" === i.nodeName || n.appendChild(t(i, r)); return 1 === e.nodeType && ("CANVAS" === e.nodeName ? (n.width = e.width, n.height = e.height, n.getContext("2d").drawImage(e, 0, 0)) : "TEXTAREA" !== e.nodeName && "SELECT" !== e.nodeName || (n.value = e.value), n.addEventListener("load", function() { n.scrollTop = e.scrollTop, n.scrollLeft = e.scrollLeft; }, !0)), n; }, u = function t(e) { var r = Object.assign(t.convert(Promise.resolve()), JSON.parse(JSON.stringify(t.template))), n = t.convert(Promise.resolve(), r); return (n = n.setProgress(1, t, 1, [t])).set(e); }; (u.prototype = Object.create(Promise.prototype)).constructor = u, u.convert = function(t, e) { return t.__proto__ = e || u.prototype, t; }, u.template = { prop: { src: null, container: null, overlay: null, canvas: null, img: null, pdf: null, pageSize: null, callback: function() {} }, progress: { val: 0, state: null, n: 0, stack: [] }, opt: { filename: "file.pdf", margin: [ 0, 0, 0, 0 ], enableLinks: !0, x: 0, y: 0, html2canvas: {}, jsPDF: {}, backgroundColor: "transparent" } }, u.prototype.from = function(t, e) { return this.then(function() { switch (e = e || function(t) { switch (a(t)) { case "string": return "string"; case "element": return "canvas" === t.nodeName.toLowerCase() ? "canvas" : "element"; default: return "unknown"; } }(t), e) { case "string": return this.then(n).then(function(e) { return this.set({ src: o("div", { innerHTML: t, dompurify: e }) }); }); case "element": return this.set({ src: t }); case "canvas": return this.set({ canvas: t }); case "img": return this.set({ img: t }); default: return this.error("Unknown source type."); } }); }, u.prototype.to = function(t) { switch (t) { case "container": return this.toContainer(); case "canvas": return this.toCanvas(); case "img": return this.toImg(); case "pdf": return this.toPdf(); default: return this.error("Invalid target."); } }, u.prototype.toContainer = function() { return this.thenList([function() { return this.prop.src || this.error("Cannot duplicate - no source HTML."); }, function() { return this.prop.pageSize || this.setPageSize(); }]).then(function() { var t = { position: "relative", display: "inline-block", width: ("number" != typeof this.opt.width || isNaN(this.opt.width) || "number" != typeof this.opt.windowWidth || isNaN(this.opt.windowWidth) ? Math.max(this.prop.src.clientWidth, this.prop.src.scrollWidth, this.prop.src.offsetWidth) : this.opt.windowWidth) + "px", left: 0, right: 0, top: 0, margin: "auto", backgroundColor: this.opt.backgroundColor }, e = s(this.prop.src, this.opt.html2canvas.javascriptEnabled); "BODY" === e.tagName && (t.height = Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight) + "px"), this.prop.overlay = o("div", { className: "html2pdf__overlay", style: { position: "fixed", overflow: "hidden", zIndex: 1e3, left: "-100000px", right: 0, bottom: 0, top: 0 } }), this.prop.container = o("div", { className: "html2pdf__container", style: t }), this.prop.container.appendChild(e), this.prop.container.firstChild.appendChild(o("div", { style: { clear: "both", border: "0 none transparent", margin: 0, padding: 0, height: 0 } })), this.prop.container.style.float = "none", this.prop.overlay.appendChild(this.prop.container), document.body.appendChild(this.prop.overlay), this.prop.container.firstChild.style.position = "relative", this.prop.container.height = Math.max(this.prop.container.firstChild.clientHeight, this.prop.container.firstChild.scrollHeight, this.prop.container.firstChild.offsetHeight) + "px"; }); }, u.prototype.toCanvas = function() { return this.thenList([function() { return document.body.contains(this.prop.container) || this.toContainer(); }]).then(r).then(function(t) { var e = Object.assign({}, this.opt.html2canvas); return delete e.onrendered, t(this.prop.container, e); }).then(function(t) { (this.opt.html2canvas.onrendered || function() {})(t), this.prop.canvas = t, document.body.removeChild(this.prop.overlay); }); }, u.prototype.toContext2d = function() { return this.thenList([function() { return document.body.contains(this.prop.container) || this.toContainer(); }]).then(r).then(function(t) { var e = this.opt.jsPDF, r = this.opt.fontFaces, n = "number" != typeof this.opt.width || isNaN(this.opt.width) || "number" != typeof this.opt.windowWidth || isNaN(this.opt.windowWidth) ? 1 : this.opt.width / this.opt.windowWidth, i = Object.assign({ async: !0, allowTaint: !0, scale: n, scrollX: this.opt.scrollX || 0, scrollY: this.opt.scrollY || 0, backgroundColor: "#ffffff", imageTimeout: 15e3, logging: !0, proxy: null, removeContainer: !0, foreignObjectRendering: !1, useCORS: !1 }, this.opt.html2canvas); if (delete i.onrendered, e.context2d.autoPaging = void 0 === this.opt.autoPaging || this.opt.autoPaging, e.context2d.posX = this.opt.x, e.context2d.posY = this.opt.y, e.context2d.margin = this.opt.margin, e.context2d.fontFaces = r, r) for (var a = 0; a < r.length; ++a) { var o = r[a], s = o.src.find(function(t) { return "truetype" === t.format; }); s && e.addFont(s.url, o.ref.name, o.ref.style); } return i.windowHeight = i.windowHeight || 0, i.windowHeight = 0 == i.windowHeight ? Math.max(this.prop.container.clientHeight, this.prop.container.scrollHeight, this.prop.container.offsetHeight) : i.windowHeight, e.context2d.save(!0), t(this.prop.container, i); }).then(function(t) { this.opt.jsPDF.context2d.restore(!0), (this.opt.html2canvas.onrendered || function() {})(t), this.prop.canvas = t, document.body.removeChild(this.prop.overlay); }); }, u.prototype.toImg = function() { return this.thenList([function() { return this.prop.canvas || this.toCanvas(); }]).then(function() { var t = this.prop.canvas.toDataURL("image/" + this.opt.image.type, this.opt.image.quality); this.prop.img = document.createElement("img"), this.prop.img.src = t; }); }, u.prototype.toPdf = function() { return this.thenList([function() { return this.toContext2d(); }]).then(function() { this.prop.pdf = this.prop.pdf || this.opt.jsPDF; }); }, u.prototype.output = function(t, e, r) { return "img" === (r = r || "pdf").toLowerCase() || "image" === r.toLowerCase() ? this.outputImg(t, e) : this.outputPdf(t, e); }, u.prototype.outputPdf = function(t, e) { return this.thenList([function() { return this.prop.pdf || this.toPdf(); }]).then(function() { return this.prop.pdf.output(t, e); }); }, u.prototype.outputImg = function(t) { return this.thenList([function() { return this.prop.img || this.toImg(); }]).then(function() { switch (t) { case void 0: case "img": return this.prop.img; case "datauristring": case "dataurlstring": return this.prop.img.src; case "datauri": case "dataurl": return document.location.href = this.prop.img.src; default: throw "Image output type \"" + t + "\" is not supported."; } }); }, u.prototype.save = function(t) { return this.thenList([function() { return this.prop.pdf || this.toPdf(); }]).set(t ? { filename: t } : null).then(function() { this.prop.pdf.save(this.opt.filename); }); }, u.prototype.doCallback = function() { return this.thenList([function() { return this.prop.pdf || this.toPdf(); }]).then(function() { this.prop.callback(this.prop.pdf); }); }, u.prototype.set = function(t) { if ("object" !== a(t)) return this; var e = Object.keys(t || {}).map(function(e) { if (e in u.template.prop) return function() { this.prop[e] = t[e]; }; switch (e) { case "margin": return this.setMargin.bind(this, t.margin); case "jsPDF": return function() { return this.opt.jsPDF = t.jsPDF, this.setPageSize(); }; case "pageSize": return this.setPageSize.bind(this, t.pageSize); default: return function() { this.opt[e] = t[e]; }; } }, this); return this.then(function() { return this.thenList(e); }); }, u.prototype.get = function(t, e) { return this.then(function() { var r = t in u.template.prop ? this.prop[t] : this.opt[t]; return e ? e(r) : r; }); }, u.prototype.setMargin = function(t) { return this.then(function() { switch (a(t)) { case "number": t = [ t, t, t, t ]; case "array": if (2 === t.length && (t = [ t[0], t[1], t[0], t[1] ]), 4 === t.length) break; default: return this.error("Invalid margin array."); } this.opt.margin = t; }).then(this.setPageSize); }, u.prototype.setPageSize = function(t) { function e(t, e) { return Math.floor(t * e / 72 * 96); } return this.then(function() { (t = t || E.getPageSize(this.opt.jsPDF)).hasOwnProperty("inner") || (t.inner = { width: t.width - this.opt.margin[1] - this.opt.margin[3], height: t.height - this.opt.margin[0] - this.opt.margin[2] }, t.inner.px = { width: e(t.inner.width, t.k), height: e(t.inner.height, t.k) }, t.inner.ratio = t.inner.height / t.inner.width), this.prop.pageSize = t; }); }, u.prototype.setProgress = function(t, e, r, n) { return null != t && (this.progress.val = t), null != e && (this.progress.state = e), null != r && (this.progress.n = r), null != n && (this.progress.stack = n), this.progress.ratio = this.progress.val / this.progress.state, this; }, u.prototype.updateProgress = function(t, e, r, n) { return this.setProgress(t ? this.progress.val + t : null, e || null, r ? this.progress.n + r : null, n ? this.progress.stack.concat(n) : null); }, u.prototype.then = function(t, e) { var r = this; return this.thenCore(t, e, function(t, e) { return r.updateProgress(null, null, 1, [t]), Promise.prototype.then.call(this, function(e) { return r.updateProgress(null, t), e; }).then(t, e).then(function(t) { return r.updateProgress(1), t; }); }); }, u.prototype.thenCore = function(t, e, r) { r = r || Promise.prototype.then; var n = this; t && (t = t.bind(n)), e && (e = e.bind(n)); var i = -1 !== Promise.toString().indexOf("[native code]") && "Promise" === Promise.name ? n : u.convert(Object.assign({}, n), Promise.prototype), a = r.call(i, t, e); return u.convert(a, n.__proto__); }, u.prototype.thenExternal = function(t, e) { return Promise.prototype.then.call(this, t, e); }, u.prototype.thenList = function(t) { var e = this; return t.forEach(function(t) { e = e.thenCore(t); }), e; }, u.prototype.catch = function(t) { t && (t = t.bind(this)); var e = Promise.prototype.catch.call(this, t); return u.convert(e, this); }, u.prototype.catchExternal = function(t) { return Promise.prototype.catch.call(this, t); }, u.prototype.error = function(t) { return this.then(function() { throw new Error(t); }); }, u.prototype.using = u.prototype.set, u.prototype.saveAs = u.prototype.save, u.prototype.export = u.prototype.output, u.prototype.run = u.prototype.then, E.getPageSize = function(e, r, n) { if ("object" === _typeof(e)) { var i = e; e = i.orientation, r = i.unit || r, n = i.format || n; } r = r || "mm", n = n || "a4", e = ("" + (e || "P")).toLowerCase(); var a, o = ("" + n).toLowerCase(), s = { a0: [2383.94, 3370.39], a1: [1683.78, 2383.94], a2: [1190.55, 1683.78], a3: [841.89, 1190.55], a4: [595.28, 841.89], a5: [419.53, 595.28], a6: [297.64, 419.53], a7: [209.76, 297.64], a8: [147.4, 209.76], a9: [104.88, 147.4], a10: [73.7, 104.88], b0: [2834.65, 4008.19], b1: [2004.09, 2834.65], b2: [1417.32, 2004.09], b3: [1000.63, 1417.32], b4: [708.66, 1000.63], b5: [498.9, 708.66], b6: [354.33, 498.9], b7: [249.45, 354.33], b8: [175.75, 249.45], b9: [124.72, 175.75], b10: [87.87, 124.72], c0: [2599.37, 3676.54], c1: [1836.85, 2599.37], c2: [1298.27, 1836.85], c3: [918.43, 1298.27], c4: [649.13, 918.43], c5: [459.21, 649.13], c6: [323.15, 459.21], c7: [229.61, 323.15], c8: [161.57, 229.61], c9: [113.39, 161.57], c10: [79.37, 113.39], dl: [311.81, 623.62], letter: [612, 792], "government-letter": [576, 756], legal: [612, 1008], "junior-legal": [576, 360], ledger: [1224, 792], tabloid: [792, 1224], "credit-card": [153, 243] }; switch (r) { case "pt": a = 1; break; case "mm": a = 72 / 25.4; break; case "cm": a = 72 / 2.54; break; case "in": a = 72; break; case "px": a = .75; break; case "pc": case "em": a = 12; break; case "ex": a = 6; break; default: throw "Invalid unit: " + r; } var u, c = 0, l = 0; if (s.hasOwnProperty(o)) c = s[o][1] / a, l = s[o][0] / a; else try { c = n[1], l = n[0]; } catch (h) { throw new Error("Invalid format: " + n); } if ("p" === e || "portrait" === e) e = "p", l > c && (u = l, l = c, c = u); else { if ("l" !== e && "landscape" !== e) throw "Invalid orientation: " + e; e = "l", c > l && (u = l, l = c, c = u); } return { width: l, height: c, unit: r, k: a, orientation: e }; }, e.html = function(t, e) { (e = e || {}).callback = e.callback || function() {}, e.html2canvas = e.html2canvas || {}, e.html2canvas.canvas = e.html2canvas.canvas || this.canvas, e.jsPDF = e.jsPDF || this, e.fontFaces = e.fontFaces ? e.fontFaces.map(Ot) : null; var r = new u(e); return e.worker ? r : r.from(t).doCallback(); }; }(E.API), E.API.addJS = function(t) { var e, r, n = function(t) { for (var e = "", r = 0; r < t.length; r++) { var n = t[r]; if ("(" === n || ")" === n) { for (var i = 0, a = r - 1; a >= 0 && "\\" === t[a]; a--) i++; e += i % 2 == 0 ? "\\" + n : n; } else e += n; } return e; }(t); return this.internal.events.subscribe("postPutResources", function() { e = this.internal.newObject(), this.internal.out("<<"), this.internal.out("/Names [(EmbeddedJS) " + (e + 1) + " 0 R]"), this.internal.out(">>"), this.internal.out("endobj"), r = this.internal.newObject(), this.internal.out("<<"), this.internal.out("/S /JavaScript"), this.internal.out("/JS (" + n + ")"), this.internal.out(">>"), this.internal.out("endobj"); }), this.internal.events.subscribe("putCatalog", function() { void 0 !== e && void 0 !== r && this.internal.out("/Names <>"); }), this; }, function(t) { /** * @license * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv * * Licensed under the MIT License. * http://opensource.org/licenses/mit-license */ var e; t.events.push(["postPutResources", function() { var t = this, r = /^(\d+) 0 obj$/; if (this.outline.root.children.length > 0) for (var n = t.outline.render().split(/\r\n/), i = 0; i < n.length; i++) { var a = n[i], o = r.exec(a); if (null != o) { var s = o[1]; t.internal.newObjectDeferredBegin(s, !1); } t.internal.write(a); } if (this.outline.createNamedDestinations) { var u = this.internal.pages.length, c = []; for (i = 0; i < u; i++) { var l = t.internal.newObject(); c.push(l); var h = t.internal.getPageInfo(i + 1); t.internal.write("<< /D[" + h.objId + " 0 R /XYZ null null null]>> endobj"); } var f = t.internal.newObject(); for (t.internal.write("<< /Names [ "), i = 0; i < c.length; i++) t.internal.write("(page_" + (i + 1) + ")" + c[i] + " 0 R"); t.internal.write(" ] >>", "endobj"), e = t.internal.newObject(), t.internal.write("<< /Dests " + f + " 0 R"), t.internal.write(">>", "endobj"); } }]), t.events.push(["putCatalog", function() { var t = this; t.outline.root.children.length > 0 && (t.internal.write("/Outlines", this.outline.makeRef(this.outline.root)), this.outline.createNamedDestinations && t.internal.write("/Names " + e + " 0 R")); }]), t.events.push(["initialized", function() { var t = this; t.outline = { createNamedDestinations: !1, root: { children: [] } }, t.outline.add = function(t, e, r) { var n = { title: e, options: r, children: [] }; return t ??= this.root, t.children.push(n), n; }, t.outline.render = function() { return this.ctx = {}, this.ctx.val = "", this.ctx.pdf = t, this.genIds_r(this.root), this.renderRoot(this.root), this.renderItems(this.root), this.ctx.val; }, t.outline.genIds_r = function(e) { e.id = t.internal.newObjectDeferred(); for (var r = 0; r < e.children.length; r++) this.genIds_r(e.children[r]); }, t.outline.renderRoot = function(t) { this.objStart(t), this.line("/Type /Outlines"), t.children.length > 0 && (this.line("/First " + this.makeRef(t.children[0])), this.line("/Last " + this.makeRef(t.children[t.children.length - 1]))), this.line("/Count " + this.count_r({ count: 0 }, t)), this.objEnd(); }, t.outline.renderItems = function(e) { for (var r = this.ctx.pdf.internal.getVerticalCoordinateString, n = 0; n < e.children.length; n++) { var i = e.children[n]; this.objStart(i), this.line("/Title " + this.makeString(i.title)), this.line("/Parent " + this.makeRef(e)), n > 0 && this.line("/Prev " + this.makeRef(e.children[n - 1])), n < e.children.length - 1 && this.line("/Next " + this.makeRef(e.children[n + 1])), i.children.length > 0 && (this.line("/First " + this.makeRef(i.children[0])), this.line("/Last " + this.makeRef(i.children[i.children.length - 1]))); var a = this.count = this.count_r({ count: 0 }, i); if (a > 0 && this.line("/Count " + a), i.options && i.options.pageNumber) { var o = t.internal.getPageInfo(i.options.pageNumber); this.line("/Dest [" + o.objId + " 0 R /XYZ 0 " + r(0) + " 0]"); } this.objEnd(); } for (var s = 0; s < e.children.length; s++) this.renderItems(e.children[s]); }, t.outline.line = function(t) { this.ctx.val += t + "\r\n"; }, t.outline.makeRef = function(t) { return t.id + " 0 R"; }, t.outline.makeString = function(e) { return "(" + t.internal.pdfEscape(e) + ")"; }, t.outline.objStart = function(t) { this.ctx.val += "\r\n" + t.id + " 0 obj\r\n<<\r\n"; }, t.outline.objEnd = function() { this.ctx.val += ">> \r\nendobj\r\n"; }, t.outline.count_r = function(t, e) { for (var r = 0; r < e.children.length; r++) t.count++, this.count_r(t, e.children[r]); return t.count; }; }]); }(E.API), function(t) { /** * @license * * Licensed under the MIT License. * http://opensource.org/licenses/mit-license */ var e = [ 192, 193, 194, 195, 196, 197, 198, 199 ]; t.processJPEG = function(t, r, n, i, a, o) { var s, u = this.decode.DCT_DECODE, c = null; if ("string" == typeof t || this.__addimage__.isArrayBuffer(t) || this.__addimage__.isArrayBufferView(t)) { switch (t = a || t, t = this.__addimage__.isArrayBuffer(t) ? new Uint8Array(t) : t, s = function(t) { for (var r, n = 256 * t.charCodeAt(4) + t.charCodeAt(5), i = t.length, a = { width: 0, height: 0, numcomponents: 1 }, o = 4; o < i; o += 2) { if (o += n, -1 !== e.indexOf(t.charCodeAt(o + 1))) { r = 256 * t.charCodeAt(o + 5) + t.charCodeAt(o + 6), a = { width: 256 * t.charCodeAt(o + 7) + t.charCodeAt(o + 8), height: r, numcomponents: t.charCodeAt(o + 9) }; break; } n = 256 * t.charCodeAt(o + 2) + t.charCodeAt(o + 3); } return a; }(t = this.__addimage__.isArrayBufferView(t) ? this.__addimage__.arrayBufferToBinaryString(t) : t), s.numcomponents) { case 1: o = this.color_spaces.DEVICE_GRAY; break; case 4: o = this.color_spaces.DEVICE_CMYK; break; case 3: o = this.color_spaces.DEVICE_RGB; } c = { data: t, width: s.width, height: s.height, colorSpace: o, bitsPerComponent: 8, filter: u, index: r, alias: n }; } return c; }; }(E.API), E.API.processPNG = function(t, i, a, o) { if (this.__addimage__.isArrayBuffer(t) && (t = new Uint8Array(t)), this.__addimage__.isArrayBufferView(t)) { var s, u = decodePng(t, { checkCrc: !0 }), c = u.width, l = u.height, h = u.channels, f = u.palette, d = u.depth; s = f && 1 === h ? function(t) { for (var e = t.width, n = t.height, i = t.data, a = t.palette, o = t.depth, s = !1, u = [], c = [], l = void 0, h = !1, f = 0, d = 0; d < a.length; d++) { var p = _slicedToArray(a[d], 4), g = p[0], m = p[1], v = p[2], b = p[3]; u.push(g, m, v), null != b && (0 === b ? (f++, c.length < 1 && c.push(d)) : b < 255 && (h = !0)); } if (h || f > 1) { s = !0, c = void 0; var y = e * n; l = new Uint8Array(y); for (var w = new DataView(i.buffer), N = 0; N < y; N++) { var x = _slicedToArray(a[ee(w, N, o)], 4)[3]; l[N] = x; } } else 0 === f && (c = void 0); return { colorSpace: "Indexed", colorsPerPixel: 1, sMaskBitsPerComponent: s ? 8 : void 0, colorBytes: i, alphaBytes: l, needSMask: s, palette: u, mask: c }; }(u) : 2 === h || 4 === h ? function(t) { for (var e = t.data, r = t.width, n = t.height, i = t.channels, a = t.depth, o = 2 === i ? "DeviceGray" : "DeviceRGB", s = i - 1, u = r * n, c = s, l = u * c, h = 1 * u, f = Math.ceil(l * a / 8), d = Math.ceil(h * a / 8), p = new Uint8Array(f), g = new Uint8Array(d), m = new DataView(e.buffer), v = new DataView(p.buffer), b = new DataView(g.buffer), y = !1, w = 0; w < u; w++) { for (var N = w * i, L = 0; L < c; L++) re(v, ee(m, N + L, a), w * c + L, a); var x = ee(m, N + c, a); x < (1 << a) - 1 && (y = !0), re(b, x, 1 * w, a); } return { colorSpace: o, colorsPerPixel: s, sMaskBitsPerComponent: y ? a : void 0, colorBytes: p, alphaBytes: g, needSMask: y }; }(u) : function(t) { var e = t.data, r = 1 === t.channels ? "DeviceGray" : "DeviceRGB"; return { colorSpace: r, colorsPerPixel: "DeviceGray" === r ? 1 : 3, colorBytes: e instanceof Uint16Array ? function(t) { for (var e = t.length, r = new Uint8Array(2 * e), n = new DataView(r.buffer, r.byteOffset, r.byteLength), i = 0; i < e; i++) n.setUint16(2 * i, t[i], !1); return r; }(e) : e, needSMask: !1 }; }(u); var p, g, m, v = s, b = v.colorSpace, y = v.colorsPerPixel, w = v.sMaskBitsPerComponent, N = v.colorBytes, L = v.alphaBytes, x = v.needSMask, A = v.palette, S = v.mask, _ = null; return o !== E.API.image_compression.NONE && "function" == typeof zlibSync ? (_ = function(t) { var e; switch (t) { case E.API.image_compression.FAST: e = 11; break; case E.API.image_compression.MEDIUM: e = 13; break; case E.API.image_compression.SLOW: e = 14; break; default: e = 12; } return e; }(o), p = this.decode.FLATE_DECODE, g = "/Predictor ".concat(_, " /Colors ").concat(y, " /BitsPerComponent ").concat(d, " /Columns ").concat(c), t = Yt(N, Math.ceil(c * y * d / 8), y, d, o), x && (m = Yt(L, Math.ceil(c * w / 8), 1, w, o))) : (p = void 0, g = void 0, t = N, x && (m = L)), (this.__addimage__.isArrayBuffer(t) || this.__addimage__.isArrayBufferView(t)) && (t = this.__addimage__.arrayBufferToBinaryString(t)), (m && this.__addimage__.isArrayBuffer(m) || this.__addimage__.isArrayBufferView(m)) && (m = this.__addimage__.arrayBufferToBinaryString(m)), { alias: a, data: t, index: i, filter: p, decodeParameters: g, transparency: S, palette: A, sMask: m, predictor: _, width: c, height: l, bitsPerComponent: d, sMaskBitsPerComponent: w, colorSpace: b }; } }, function(t) { t.processGIF89A = function(e, r, n, i) { var a = new ie(e), o = a.width, s = a.height, u = []; a.decodeAndBlitFrameRGBA(0, u); var c = { data: u, width: o, height: s }, l = new oe(100).encode(c, 100); return t.processJPEG.call(this, l, r, n, i); }, t.processGIF87A = t.processGIF89A; }(E.API), se.prototype.parseHeader = function() { if (this.fileSize = this.datav.getUint32(this.pos, !0), this.pos += 4, this.reserved = this.datav.getUint32(this.pos, !0), this.pos += 4, this.offset = this.datav.getUint32(this.pos, !0), this.pos += 4, this.headerSize = this.datav.getUint32(this.pos, !0), this.pos += 4, this.width = this.datav.getUint32(this.pos, !0), this.pos += 4, this.height = this.datav.getInt32(this.pos, !0), this.pos += 4, this.planes = this.datav.getUint16(this.pos, !0), this.pos += 2, this.bitPP = this.datav.getUint16(this.pos, !0), this.pos += 2, this.compress = this.datav.getUint32(this.pos, !0), this.pos += 4, this.rawSize = this.datav.getUint32(this.pos, !0), this.pos += 4, this.hr = this.datav.getUint32(this.pos, !0), this.pos += 4, this.vr = this.datav.getUint32(this.pos, !0), this.pos += 4, this.colors = this.datav.getUint32(this.pos, !0), this.pos += 4, this.importantColors = this.datav.getUint32(this.pos, !0), this.pos += 4, 16 === this.bitPP && this.is_with_alpha && (this.bitPP = 15), this.bitPP < 15) { var t = 0 === this.colors ? 1 << this.bitPP : this.colors; this.palette = new Array(t); for (var e = 0; e < t; e++) { var r = this.datav.getUint8(this.pos++, !0), n = this.datav.getUint8(this.pos++, !0), i = this.datav.getUint8(this.pos++, !0), a = this.datav.getUint8(this.pos++, !0); this.palette[e] = { red: i, green: n, blue: r, quad: a }; } } this.height < 0 && (this.height *= -1, this.bottom_up = !1); }, se.prototype.parseBGR = function() { this.pos = this.offset; var t = "bit" + this.bitPP, e = this.width * this.height * 4; if (e > 536870912) throw new Error("Image dimensions exceed 512MB, which is too large."); this.data = new Uint8Array(e); try { this[t](); } catch (r) { o.log("bit decode error:" + r); } }, se.prototype.bit1 = function() { var t, e = Math.ceil(this.width / 8), r = e % 4; for (t = this.height - 1; t >= 0; t--) { for (var n = this.bottom_up ? t : this.height - 1 - t, i = 0; i < e; i++) for (var a = this.datav.getUint8(this.pos++, !0), o = n * this.width * 4 + 8 * i * 4, s = 0; s < 8 && 8 * i + s < this.width; s++) { var u = this.palette[a >> 7 - s & 1]; this.data[o + 4 * s] = u.blue, this.data[o + 4 * s + 1] = u.green, this.data[o + 4 * s + 2] = u.red, this.data[o + 4 * s + 3] = 255; } 0 !== r && (this.pos += 4 - r); } }, se.prototype.bit4 = function() { for (var t = Math.ceil(this.width / 2), e = t % 4, r = this.height - 1; r >= 0; r--) { for (var n = this.bottom_up ? r : this.height - 1 - r, i = 0; i < t; i++) { var a = this.datav.getUint8(this.pos++, !0), o = n * this.width * 4 + 2 * i * 4, s = a >> 4, u = 15 & a, c = this.palette[s]; if (this.data[o] = c.blue, this.data[o + 1] = c.green, this.data[o + 2] = c.red, this.data[o + 3] = 255, 2 * i + 1 >= this.width) break; c = this.palette[u], this.data[o + 4] = c.blue, this.data[o + 4 + 1] = c.green, this.data[o + 4 + 2] = c.red, this.data[o + 4 + 3] = 255; } 0 !== e && (this.pos += 4 - e); } }, se.prototype.bit8 = function() { for (var t = this.width % 4, e = this.height - 1; e >= 0; e--) { for (var r = this.bottom_up ? e : this.height - 1 - e, n = 0; n < this.width; n++) { var i = this.datav.getUint8(this.pos++, !0), a = r * this.width * 4 + 4 * n; if (i < this.palette.length) { var o = this.palette[i]; this.data[a] = o.red, this.data[a + 1] = o.green, this.data[a + 2] = o.blue, this.data[a + 3] = 255; } else this.data[a] = 255, this.data[a + 1] = 255, this.data[a + 2] = 255, this.data[a + 3] = 255; } 0 !== t && (this.pos += 4 - t); } }, se.prototype.bit15 = function() { for (var t = this.width % 3, e = parseInt("11111", 2), r = this.height - 1; r >= 0; r--) { for (var n = this.bottom_up ? r : this.height - 1 - r, i = 0; i < this.width; i++) { var a = this.datav.getUint16(this.pos, !0); this.pos += 2; var o = (a & e) / e * 255 | 0, s = (a >> 5 & e) / e * 255 | 0, u = (a >> 10 & e) / e * 255 | 0, c = a >> 15 ? 255 : 0, l = n * this.width * 4 + 4 * i; this.data[l] = u, this.data[l + 1] = s, this.data[l + 2] = o, this.data[l + 3] = c; } this.pos += t; } }, se.prototype.bit16 = function() { for (var t = this.width % 3, e = parseInt("11111", 2), r = parseInt("111111", 2), n = this.height - 1; n >= 0; n--) { for (var i = this.bottom_up ? n : this.height - 1 - n, a = 0; a < this.width; a++) { var o = this.datav.getUint16(this.pos, !0); this.pos += 2; var s = (o & e) / e * 255 | 0, u = (o >> 5 & r) / r * 255 | 0, c = (o >> 11) / e * 255 | 0, l = i * this.width * 4 + 4 * a; this.data[l] = c, this.data[l + 1] = u, this.data[l + 2] = s, this.data[l + 3] = 255; } this.pos += t; } }, se.prototype.bit24 = function() { for (var t = this.height - 1; t >= 0; t--) { for (var e = this.bottom_up ? t : this.height - 1 - t, r = 0; r < this.width; r++) { var n = this.datav.getUint8(this.pos++, !0), i = this.datav.getUint8(this.pos++, !0), a = this.datav.getUint8(this.pos++, !0), o = e * this.width * 4 + 4 * r; this.data[o] = a, this.data[o + 1] = i, this.data[o + 2] = n, this.data[o + 3] = 255; } this.pos += this.width % 4; } }, se.prototype.bit32 = function() { for (var t = this.height - 1; t >= 0; t--) for (var e = this.bottom_up ? t : this.height - 1 - t, r = 0; r < this.width; r++) { var n = this.datav.getUint8(this.pos++, !0), i = this.datav.getUint8(this.pos++, !0), a = this.datav.getUint8(this.pos++, !0), o = this.datav.getUint8(this.pos++, !0), s = e * this.width * 4 + 4 * r; this.data[s] = a, this.data[s + 1] = i, this.data[s + 2] = n, this.data[s + 3] = o; } }, se.prototype.getData = function() { return this.data; }, function(t) { /** * @license * Copyright (c) 2018 Aras Abbasi * * Licensed under the MIT License. * http://opensource.org/licenses/mit-license */ t.processBMP = function(e, r, n, i) { var a = new se(e, !1), o = a.width, s = a.height, u = { data: a.getData(), width: o, height: s }, c = new oe(100).encode(u, 100); return t.processJPEG.call(this, c, r, n, i); }; }(E.API), ue.prototype.getData = function() { return this.data; }, function(t) { /** * @license * Copyright (c) 2019 Aras Abbasi * * Licensed under the MIT License. * http://opensource.org/licenses/mit-license */ t.processWEBP = function(e, r, n, i) { var a = new ue(e), o = a.width, s = a.height, u = { data: a.getData(), width: o, height: s }, c = new oe(100).encode(u, 100); return t.processJPEG.call(this, c, r, n, i); }; }(E.API), E.API.processRGBA = function(t, e, r) { for (var n = t.data, i = n.length, a = new Uint8Array(i / 4 * 3), o = new Uint8Array(i / 4), s = 0, u = 0, c = 0; c < i; c += 4) { var l = n[c], h = n[c + 1], f = n[c + 2], d = n[c + 3]; a[s++] = l, a[s++] = h, a[s++] = f, o[u++] = d; } var p = this.__addimage__.arrayBufferToBinaryString(a); return { alpha: this.__addimage__.arrayBufferToBinaryString(o), data: p, index: e, alias: r, colorSpace: "DeviceRGB", bitsPerComponent: 8, width: t.width, height: t.height }; }, E.API.setLanguage = function(t) { return void 0 === this.internal.languageSettings && (this.internal.languageSettings = {}, this.internal.languageSettings.isSubscribed = !1), void 0 !== { af: "Afrikaans", sq: "Albanian", ar: "Arabic (Standard)", "ar-DZ": "Arabic (Algeria)", "ar-BH": "Arabic (Bahrain)", "ar-EG": "Arabic (Egypt)", "ar-IQ": "Arabic (Iraq)", "ar-JO": "Arabic (Jordan)", "ar-KW": "Arabic (Kuwait)", "ar-LB": "Arabic (Lebanon)", "ar-LY": "Arabic (Libya)", "ar-MA": "Arabic (Morocco)", "ar-OM": "Arabic (Oman)", "ar-QA": "Arabic (Qatar)", "ar-SA": "Arabic (Saudi Arabia)", "ar-SY": "Arabic (Syria)", "ar-TN": "Arabic (Tunisia)", "ar-AE": "Arabic (U.A.E.)", "ar-YE": "Arabic (Yemen)", an: "Aragonese", hy: "Armenian", as: "Assamese", ast: "Asturian", az: "Azerbaijani", eu: "Basque", be: "Belarusian", bn: "Bengali", bs: "Bosnian", br: "Breton", bg: "Bulgarian", my: "Burmese", ca: "Catalan", ch: "Chamorro", ce: "Chechen", zh: "Chinese", "zh-HK": "Chinese (Hong Kong)", "zh-CN": "Chinese (PRC)", "zh-SG": "Chinese (Singapore)", "zh-TW": "Chinese (Taiwan)", cv: "Chuvash", co: "Corsican", cr: "Cree", hr: "Croatian", cs: "Czech", da: "Danish", nl: "Dutch (Standard)", "nl-BE": "Dutch (Belgian)", en: "English", "en-AU": "English (Australia)", "en-BZ": "English (Belize)", "en-CA": "English (Canada)", "en-IE": "English (Ireland)", "en-JM": "English (Jamaica)", "en-NZ": "English (New Zealand)", "en-PH": "English (Philippines)", "en-ZA": "English (South Africa)", "en-TT": "English (Trinidad & Tobago)", "en-GB": "English (United Kingdom)", "en-US": "English (United States)", "en-ZW": "English (Zimbabwe)", eo: "Esperanto", et: "Estonian", fo: "Faeroese", fj: "Fijian", fi: "Finnish", fr: "French (Standard)", "fr-BE": "French (Belgium)", "fr-CA": "French (Canada)", "fr-FR": "French (France)", "fr-LU": "French (Luxembourg)", "fr-MC": "French (Monaco)", "fr-CH": "French (Switzerland)", fy: "Frisian", fur: "Friulian", gd: "Gaelic (Scots)", "gd-IE": "Gaelic (Irish)", gl: "Galacian", ka: "Georgian", de: "German (Standard)", "de-AT": "German (Austria)", "de-DE": "German (Germany)", "de-LI": "German (Liechtenstein)", "de-LU": "German (Luxembourg)", "de-CH": "German (Switzerland)", el: "Greek", gu: "Gujurati", ht: "Haitian", he: "Hebrew", hi: "Hindi", hu: "Hungarian", is: "Icelandic", id: "Indonesian", iu: "Inuktitut", ga: "Irish", it: "Italian (Standard)", "it-CH": "Italian (Switzerland)", ja: "Japanese", kn: "Kannada", ks: "Kashmiri", kk: "Kazakh", km: "Khmer", ky: "Kirghiz", tlh: "Klingon", ko: "Korean", "ko-KP": "Korean (North Korea)", "ko-KR": "Korean (South Korea)", la: "Latin", lv: "Latvian", lt: "Lithuanian", lb: "Luxembourgish", mk: "North Macedonia", ms: "Malay", ml: "Malayalam", mt: "Maltese", mi: "Maori", mr: "Marathi", mo: "Moldavian", nv: "Navajo", ng: "Ndonga", ne: "Nepali", no: "Norwegian", nb: "Norwegian (Bokmal)", nn: "Norwegian (Nynorsk)", oc: "Occitan", or: "Oriya", om: "Oromo", fa: "Persian", "fa-IR": "Persian/Iran", pl: "Polish", pt: "Portuguese", "pt-BR": "Portuguese (Brazil)", pa: "Punjabi", "pa-IN": "Punjabi (India)", "pa-PK": "Punjabi (Pakistan)", qu: "Quechua", rm: "Rhaeto-Romanic", ro: "Romanian", "ro-MO": "Romanian (Moldavia)", ru: "Russian", "ru-MO": "Russian (Moldavia)", sz: "Sami (Lappish)", sg: "Sango", sa: "Sanskrit", sc: "Sardinian", sd: "Sindhi", si: "Singhalese", sr: "Serbian", sk: "Slovak", sl: "Slovenian", so: "Somani", sb: "Sorbian", es: "Spanish", "es-AR": "Spanish (Argentina)", "es-BO": "Spanish (Bolivia)", "es-CL": "Spanish (Chile)", "es-CO": "Spanish (Colombia)", "es-CR": "Spanish (Costa Rica)", "es-DO": "Spanish (Dominican Republic)", "es-EC": "Spanish (Ecuador)", "es-SV": "Spanish (El Salvador)", "es-GT": "Spanish (Guatemala)", "es-HN": "Spanish (Honduras)", "es-MX": "Spanish (Mexico)", "es-NI": "Spanish (Nicaragua)", "es-PA": "Spanish (Panama)", "es-PY": "Spanish (Paraguay)", "es-PE": "Spanish (Peru)", "es-PR": "Spanish (Puerto Rico)", "es-ES": "Spanish (Spain)", "es-UY": "Spanish (Uruguay)", "es-VE": "Spanish (Venezuela)", sx: "Sutu", sw: "Swahili", sv: "Swedish", "sv-FI": "Swedish (Finland)", "sv-SV": "Swedish (Sweden)", ta: "Tamil", tt: "Tatar", te: "Teluga", th: "Thai", tig: "Tigre", ts: "Tsonga", tn: "Tswana", tr: "Turkish", tk: "Turkmen", uk: "Ukrainian", hsb: "Upper Sorbian", ur: "Urdu", ve: "Venda", vi: "Vietnamese", vo: "Volapuk", wa: "Walloon", cy: "Welsh", xh: "Xhosa", ji: "Yiddish", zu: "Zulu" }[t] && (this.internal.languageSettings.languageCode = t, !1 === this.internal.languageSettings.isSubscribed && (this.internal.events.subscribe("putCatalog", function() { this.internal.write("/Lang (" + this.internal.languageSettings.languageCode + ")"); }), this.internal.languageSettings.isSubscribed = !0)), this; }, zt = E.API, Ut = zt.getCharWidthsArray = function(e, r) { var n, i, a = (r = r || {}).font || this.internal.getFont(), o = r.fontSize || this.internal.getFontSize(), s = r.charSpace || this.internal.getCharSpace(), u = r.widths ? r.widths : a.metadata.Unicode.widths, c = u.fof ? u.fof : 1, l = r.kerning ? r.kerning : a.metadata.Unicode.kerning, h = l.fof ? l.fof : 1, f = !1 !== r.doKerning, d = 0, p = e.length, g = 0, m = u[0] || c, v = []; for (n = 0; n < p; n++) i = e.charCodeAt(n), "function" == typeof a.metadata.widthOfString ? v.push((a.metadata.widthOfGlyph(a.metadata.characterToGlyph(i)) + s * (1e3 / o) || 0) / 1e3) : (d = f && "object" === _typeof(l[i]) && !isNaN(parseInt(l[i][g], 10)) ? l[i][g] / h : 0, v.push((u[i] || m) / c + d)), g = i; return v; }, Ht = zt.getStringUnitWidth = function(t, e) { var r = (e = e || {}).fontSize || this.internal.getFontSize(), n = e.font || this.internal.getFont(), i = e.charSpace || this.internal.getCharSpace(); return zt.processArabic && (t = zt.processArabic(t)), "function" == typeof n.metadata.widthOfString ? n.metadata.widthOfString(t, r, i) / r : Ut.apply(this, arguments).reduce(function(t, e) { return t + e; }, 0); }, Wt = function(t, e, r, n) { for (var i = [], a = 0, o = t.length, s = 0; a !== o && s + e[a] < r;) s += e[a], a++; i.push(t.slice(0, a)); var u = a; for (s = 0; a !== o;) s + e[a] > n && (i.push(t.slice(u, a)), s = 0, u = a), s += e[a], a++; return u !== a && i.push(t.slice(u, a)), i; }, Vt = function(t, e, r) { r || (r = {}); var n, i, a, o, s, u, c, l = [], h = [l], f = r.textIndent || 0, d = 0, p = 0, g = t.split(" "), m = Ut.apply(this, [" ", r])[0]; if (u = -1 === r.lineIndent ? g[0].length + 2 : r.lineIndent || 0) { var v = Array(u).join(" "), b = []; g.map(function(t) { (t = t.split(/\s*\n/)).length > 1 ? b = b.concat(t.map(function(t, e) { return (e && t.length ? "\n" : "") + t; })) : b.push(t[0]); }), g = b, u = Ht.apply(this, [v, r]); } for (a = 0, o = g.length; a < o; a++) { var y = 0; if (n = g[a], u && "\n" == n[0] && (n = n.substr(1), y = 1), f + d + (p = (i = Ut.apply(this, [n, r])).reduce(function(t, e) { return t + e; }, 0)) > e || y) { if (p > e) { for (s = Wt.apply(this, [ n, i, e - (f + d), e ]), l.push(s.shift()), l = [s.pop()]; s.length;) h.push([s.shift()]); p = i.slice(n.length - (l[0] ? l[0].length : 0)).reduce(function(t, e) { return t + e; }, 0); } else l = [n]; h.push(l), f = p + u, d = m; } else l.push(n), f += d + p, d = m; } return c = u ? function(t, e) { return (e ? v : "") + t.join(" "); } : function(t) { return t.join(" "); }, h.map(c); }, zt.splitTextToSize = function(t, e, r) { var n, i = (r = r || {}).fontSize || this.internal.getFontSize(), a = function(t) { if (t.widths && t.kerning) return { widths: t.widths, kerning: t.kerning }; var e = this.internal.getFont(t.fontName, t.fontStyle), r = "Unicode"; return e.metadata[r] ? { widths: e.metadata[r].widths || { 0: 1 }, kerning: e.metadata[r].kerning || {} } : { font: e.metadata, fontSize: this.internal.getFontSize(), charSpace: this.internal.getCharSpace() }; }.call(this, r); n = Array.isArray(t) ? t : String(t).split(/\r?\n/); var o = 1 * this.internal.scaleFactor * e / i; a.textIndent = r.textIndent ? 1 * r.textIndent * this.internal.scaleFactor / i : 0, a.lineIndent = r.lineIndent; var s, u, c = []; for (s = 0, u = n.length; s < u; s++) c = c.concat(Vt.apply(this, [ n[s], o, a ])); return c; }, function(e) { e.__fontmetrics__ = e.__fontmetrics__ || {}; for (var r = "0123456789abcdef", n = "klmnopqrstuvwxyz", i = {}, a = {}, o = 0; o < 16; o++) i[n[o]] = r[o], a[r[o]] = n[o]; var s = function(t) { return "0x" + parseInt(t, 10).toString(16); }, u = e.__fontmetrics__.compress = function(e) { var r, n, i, o, c = ["{"]; for (var l in e) { if (r = e[l], isNaN(parseInt(l, 10)) ? n = "'" + l + "'" : (l = parseInt(l, 10), n = (n = s(l).slice(2)).slice(0, -1) + a[n.slice(-1)]), "number" == typeof r) r < 0 ? (i = s(r).slice(3), o = "-") : (i = s(r).slice(2), o = ""), i = o + i.slice(0, -1) + a[i.slice(-1)]; else { if ("object" !== _typeof(r)) throw new Error("Don't know what to do with value type " + _typeof(r) + "."); i = u(r); } c.push(n + i); } return c.push("}"), c.join(""); }, c = e.__fontmetrics__.uncompress = function(t) { if ("string" != typeof t) throw new Error("Invalid argument passed to uncompress."); for (var e, r, n, a, o = {}, s = 1, u = o, c = [], l = "", h = "", f = t.length - 1, d = 1; d < f; d += 1) "'" == (a = t[d]) ? e ? (n = e.join(""), e = void 0) : e = [] : e ? e.push(a) : "{" == a ? (c.push([u, n]), u = {}, n = void 0) : "}" == a ? ((r = c.pop())[0][r[1]] = u, n = void 0, u = r[0]) : "-" == a ? s = -1 : void 0 === n ? i.hasOwnProperty(a) ? (l += i[a], n = parseInt(l, 16) * s, s = 1, l = "") : l += a : i.hasOwnProperty(a) ? (h += i[a], u[n] = parseInt(h, 16) * s, s = 1, n = void 0, h = "") : h += a; return o; }, l = { codePages: ["WinAnsiEncoding"], WinAnsiEncoding: c("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}") }, h = { Unicode: { Courier: l, "Courier-Bold": l, "Courier-BoldOblique": l, "Courier-Oblique": l, Helvetica: l, "Helvetica-Bold": l, "Helvetica-BoldOblique": l, "Helvetica-Oblique": l, "Times-Roman": l, "Times-Bold": l, "Times-BoldItalic": l, "Times-Italic": l } }, f = { Unicode: { "Courier-Oblique": c("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Times-BoldItalic": c("{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"), "Helvetica-Bold": c("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"), Courier: c("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Courier-BoldOblique": c("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Times-Bold": c("{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"), Symbol: c("{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}"), Helvetica: c("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"), "Helvetica-BoldOblique": c("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"), ZapfDingbats: c("{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}"), "Courier-Bold": c("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Times-Italic": c("{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}"), "Times-Roman": c("{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"), "Helvetica-Oblique": c("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}") } }; e.events.push(["addFont", function(t) { var e = t.font, r = f.Unicode[e.postScriptName]; r && (e.metadata.Unicode = {}, e.metadata.Unicode.widths = r.widths, e.metadata.Unicode.kerning = r.kerning); var n = h.Unicode[e.postScriptName]; n && (e.metadata.Unicode.encoding = n, e.encoding = n.codePages[0]); }]); }(E.API), function(t) { /** * @license * Licensed under the MIT License. * http://opensource.org/licenses/mit-license */ var e = function(t) { for (var e = t.length, r = new Uint8Array(e), n = 0; n < e; n++) r[n] = t.charCodeAt(n); return r; }; t.API.events.push(["addFont", function(r) { var n = void 0, i = r.font, a = r.instance; if (!i.isStandardFont) { if (void 0 === a) throw new Error("Font does not exist in vFS, import fonts or remove declaration doc.addFont('" + i.postScriptName + "')."); if ("string" != typeof (n = !1 === a.existsFileInVFS(i.postScriptName) ? a.loadFile(i.postScriptName) : a.getFileFromVFS(i.postScriptName))) throw new Error("Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('" + i.postScriptName + "')."); (function(r, n) { n = /^\x00\x01\x00\x00/.test(n) ? e(n) : e(f(n)), r.metadata = t.API.TTFFont.open(n), r.metadata.Unicode = r.metadata.Unicode || { encoding: {}, kerning: {}, widths: [] }, r.metadata.glyIdsUsed = [0]; })(i, n); } }]); }(E), E.API.addSvgAsImage = function(t, e, r, n, a, s, u, c) { if (isNaN(e) || isNaN(r)) throw o.error("jsPDF.addSvgAsImage: Invalid coordinates", arguments), /* @__PURE__ */ new Error("Invalid coordinates passed to jsPDF.addSvgAsImage"); if (isNaN(n) || isNaN(a)) throw o.error("jsPDF.addSvgAsImage: Invalid measurements", arguments), /* @__PURE__ */ new Error("Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage"); var l = document.createElement("canvas"); l.width = n, l.height = a; var h = l.getContext("2d"); h.fillStyle = "#fff", h.fillRect(0, 0, l.width, l.height); var f = { ignoreMouse: !0, ignoreAnimation: !0, ignoreDimensions: !0 }, d = this; return (i.canvg ? Promise.resolve(i.canvg) : import("./index.es-DasTJV1l.js")).catch(function(t) { return Promise.reject(/* @__PURE__ */ new Error("Could not load canvg: " + t)); }).then(function(t) { return t.default ? t.default : t; }).then(function(e) { return e.fromString(h, t, f); }, function() { return Promise.reject(/* @__PURE__ */ new Error("Could not load canvg.")); }).then(function(t) { return t.render(f); }).then(function() { d.addImage(l.toDataURL("image/jpeg", 1), e, r, n, a, u, c); }); }, E.API.putTotalPages = function(t) { var e, r = 0; parseInt(this.internal.getFont().id.substr(1), 10) < 15 ? (e = new RegExp(t, "g"), r = this.internal.getNumberOfPages()) : (e = new RegExp(this.pdfEscape16(t, this.internal.getFont()), "g"), r = this.pdfEscape16(this.internal.getNumberOfPages() + "", this.internal.getFont())); for (var n = 1; n <= this.internal.getNumberOfPages(); n++) for (var i = 0; i < this.internal.pages[n].length; i++) this.internal.pages[n][i] = this.internal.pages[n][i].replace(e, r); return this; }, E.API.viewerPreferences = function(e, r) { var n; e = e || {}, r = r || !1; var i, a, o, s = { HideToolbar: { defaultValue: !1, value: !1, type: "boolean", explicitSet: !1, valueSet: [!0, !1], pdfVersion: 1.3 }, HideMenubar: { defaultValue: !1, value: !1, type: "boolean", explicitSet: !1, valueSet: [!0, !1], pdfVersion: 1.3 }, HideWindowUI: { defaultValue: !1, value: !1, type: "boolean", explicitSet: !1, valueSet: [!0, !1], pdfVersion: 1.3 }, FitWindow: { defaultValue: !1, value: !1, type: "boolean", explicitSet: !1, valueSet: [!0, !1], pdfVersion: 1.3 }, CenterWindow: { defaultValue: !1, value: !1, type: "boolean", explicitSet: !1, valueSet: [!0, !1], pdfVersion: 1.3 }, DisplayDocTitle: { defaultValue: !1, value: !1, type: "boolean", explicitSet: !1, valueSet: [!0, !1], pdfVersion: 1.4 }, NonFullScreenPageMode: { defaultValue: "UseNone", value: "UseNone", type: "name", explicitSet: !1, valueSet: [ "UseNone", "UseOutlines", "UseThumbs", "UseOC" ], pdfVersion: 1.3 }, Direction: { defaultValue: "L2R", value: "L2R", type: "name", explicitSet: !1, valueSet: ["L2R", "R2L"], pdfVersion: 1.3 }, ViewArea: { defaultValue: "CropBox", value: "CropBox", type: "name", explicitSet: !1, valueSet: [ "MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox" ], pdfVersion: 1.4 }, ViewClip: { defaultValue: "CropBox", value: "CropBox", type: "name", explicitSet: !1, valueSet: [ "MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox" ], pdfVersion: 1.4 }, PrintArea: { defaultValue: "CropBox", value: "CropBox", type: "name", explicitSet: !1, valueSet: [ "MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox" ], pdfVersion: 1.4 }, PrintClip: { defaultValue: "CropBox", value: "CropBox", type: "name", explicitSet: !1, valueSet: [ "MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox" ], pdfVersion: 1.4 }, PrintScaling: { defaultValue: "AppDefault", value: "AppDefault", type: "name", explicitSet: !1, valueSet: ["AppDefault", "None"], pdfVersion: 1.6 }, Duplex: { defaultValue: "", value: "none", type: "name", explicitSet: !1, valueSet: [ "Simplex", "DuplexFlipShortEdge", "DuplexFlipLongEdge", "none" ], pdfVersion: 1.7 }, PickTrayByPDFSize: { defaultValue: !1, value: !1, type: "boolean", explicitSet: !1, valueSet: [!0, !1], pdfVersion: 1.7 }, PrintPageRange: { defaultValue: "", value: "", type: "array", explicitSet: !1, valueSet: null, pdfVersion: 1.7 }, NumCopies: { defaultValue: 1, value: 1, type: "integer", explicitSet: !1, valueSet: null, pdfVersion: 1.7 } }, u = Object.keys(s), c = [], l = 0, h = 0, f = 0; function d(t, e) { var r, n = !1; for (r = 0; r < t.length; r += 1) t[r] === e && (n = !0); return n; } if (void 0 === this.internal.viewerpreferences && (this.internal.viewerpreferences = {}, this.internal.viewerpreferences.configuration = JSON.parse(JSON.stringify(s)), this.internal.viewerpreferences.isSubscribed = !1), n = this.internal.viewerpreferences.configuration, "reset" === e || !0 === r) { var p = u.length; for (f = 0; f < p; f += 1) n[u[f]].value = n[u[f]].defaultValue, n[u[f]].explicitSet = !1; } if ("object" === _typeof(e)) { for (a in e) if (o = e[a], d(u, a) && void 0 !== o) { if ("boolean" === n[a].type && "boolean" == typeof o) n[a].value = o; else if ("name" === n[a].type && d(n[a].valueSet, o)) n[a].value = o; else if ("integer" === n[a].type && Number.isInteger(o)) n[a].value = o; else if ("array" === n[a].type) { for (l = 0; l < o.length; l += 1) if (i = !0, 1 === o[l].length && "number" == typeof o[l][0]) c.push(String(o[l] - 1)); else if (o[l].length > 1) { for (h = 0; h < o[l].length; h += 1) "number" != typeof o[l][h] && (i = !1); !0 === i && c.push([o[l][0] - 1, o[l][1] - 1].join(" ")); } n[a].value = "[" + c.join(" ") + "]"; } else n[a].value = n[a].defaultValue; n[a].explicitSet = !0; } } return !1 === this.internal.viewerpreferences.isSubscribed && (this.internal.events.subscribe("putCatalog", function() { var t, e = []; for (t in n) !0 === n[t].explicitSet && ("name" === n[t].type ? e.push("/" + t + " /" + n[t].value) : e.push("/" + t + " " + n[t].value)); 0 !== e.length && this.internal.write("/ViewerPreferences\n<<\n" + e.join("\n") + "\n>>"); }), this.internal.viewerpreferences.isSubscribed = !0), this.internal.viewerpreferences.configuration = n, this; }, E.API.addMetadata = function(t, e) { return void 0 === this.internal.__metadata__ && (this.internal.__metadata__ = { metadata: t, namespaceUri: null != e ? e : "http://jspdf.default.namespaceuri/", rawXml: "boolean" == typeof e && e }, this.internal.events.subscribe("putCatalog", le), this.internal.events.subscribe("postPutResources", ce)), this; }, function(t) { var e = t.API, r = e.pdfEscape16 = function(t, e) { for (var r, n = e.metadata.Unicode.widths, i = [ "", "0", "00", "000", "0000" ], a = [""], o = 0, s = t.length; o < s; ++o) { if (r = e.metadata.characterToGlyph(t.charCodeAt(o)), e.metadata.glyIdsUsed.push(r), e.metadata.toUnicode[r] = t.charCodeAt(o), -1 == n.indexOf(r) && (n.push(r), n.push([parseInt(e.metadata.widthOfGlyph(r), 10)])), "0" == r) return a.join(""); r = r.toString(16), a.push(i[4 - r.length], r); } return a.join(""); }, n = function(t) { var e, r, n, i, a, o, s; for (a = "/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n /Registry (Adobe)\n /Ordering (UCS)\n /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000>\nendcodespacerange", n = [], o = 0, s = (r = Object.keys(t).sort(function(t, e) { return t - e; })).length; o < s; o++) e = r[o], n.length >= 100 && (a += "\n" + n.length + " beginbfchar\n" + n.join("\n") + "\nendbfchar", n = []), void 0 !== t[e] && null !== t[e] && "function" == typeof t[e].toString && (i = ("0000" + t[e].toString(16)).slice(-4), e = ("0000" + (+e).toString(16)).slice(-4), n.push("<" + e + "><" + i + ">")); return n.length && (a += "\n" + n.length + " beginbfchar\n" + n.join("\n") + "\nendbfchar\n"), a + "endcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"; }; e.events.push(["putFont", function(e) { (function(e) { var r = e.font, i = e.out, a = e.newObject, o = e.putStream; if (r.metadata instanceof t.API.TTFFont && "Identity-H" === r.encoding) { for (var s = r.metadata.Unicode.widths, u = r.metadata.subset.encode(r.metadata.glyIdsUsed, 1), c = "", l = 0; l < u.length; l++) c += String.fromCharCode(u[l]); var h = a(); o({ data: c, addLength1: !0, objectId: h }), i("endobj"); var f = a(); o({ data: n(r.metadata.toUnicode), addLength1: !0, objectId: f }), i("endobj"); var d = a(); i("<<"), i("/Type /FontDescriptor"), i("/FontName /" + C(r.fontName)), i("/FontFile2 " + h + " 0 R"), i("/FontBBox " + t.API.PDFObject.convert(r.metadata.bbox)), i("/Flags " + r.metadata.flags), i("/StemV " + r.metadata.stemV), i("/ItalicAngle " + r.metadata.italicAngle), i("/Ascent " + r.metadata.ascender), i("/Descent " + r.metadata.decender), i("/CapHeight " + r.metadata.capHeight), i(">>"), i("endobj"); var p = a(); i("<<"), i("/Type /Font"), i("/BaseFont /" + C(r.fontName)), i("/FontDescriptor " + d + " 0 R"), i("/W " + t.API.PDFObject.convert(s)), i("/CIDToGIDMap /Identity"), i("/DW 1000"), i("/Subtype /CIDFontType2"), i("/CIDSystemInfo"), i("<<"), i("/Supplement 0"), i("/Registry (Adobe)"), i("/Ordering (" + r.encoding + ")"), i(">>"), i(">>"), i("endobj"), r.objectNumber = a(), i("<<"), i("/Type /Font"), i("/Subtype /Type0"), i("/ToUnicode " + f + " 0 R"), i("/BaseFont /" + C(r.fontName)), i("/Encoding /" + r.encoding), i("/DescendantFonts [" + p + " 0 R]"), i(">>"), i("endobj"), r.isAlreadyPutted = !0; } })(e); }]), e.events.push(["putFont", function(e) { (function(e) { var r = e.font, i = e.out, a = e.newObject, o = e.putStream; if (r.metadata instanceof t.API.TTFFont && "WinAnsiEncoding" === r.encoding) { for (var s = r.metadata.rawData, u = "", c = 0; c < s.length; c++) u += String.fromCharCode(s[c]); var l = a(); o({ data: u, addLength1: !0, objectId: l }), i("endobj"); var h = a(); o({ data: n(r.metadata.toUnicode), addLength1: !0, objectId: h }), i("endobj"); var f = a(); i("<<"), i("/Descent " + r.metadata.decender), i("/CapHeight " + r.metadata.capHeight), i("/StemV " + r.metadata.stemV), i("/Type /FontDescriptor"), i("/FontFile2 " + l + " 0 R"), i("/Flags 96"), i("/FontBBox " + t.API.PDFObject.convert(r.metadata.bbox)), i("/FontName /" + C(r.fontName)), i("/ItalicAngle " + r.metadata.italicAngle), i("/Ascent " + r.metadata.ascender), i(">>"), i("endobj"), r.objectNumber = a(); for (var d = 0; d < r.metadata.hmtx.widths.length; d++) r.metadata.hmtx.widths[d] = parseInt(r.metadata.hmtx.widths[d] * (1e3 / r.metadata.head.unitsPerEm)); i("<>"), i("endobj"), r.isAlreadyPutted = !0; } })(e); }]); var i = function(t) { var e, n = t.text || "", i = t.x, a = t.y, o = t.options || {}, s = t.mutex || {}, u = s.pdfEscape, c = s.activeFontKey, l = s.fonts, h = c, f = "", d = 0, p = "", g = l[h].encoding; if ("Identity-H" !== l[h].encoding) return { text: n, x: i, y: a, options: o, mutex: s }; for (p = n, h = c, Array.isArray(n) && (p = n[0]), d = 0; d < p.length; d += 1) l[h].metadata.hasOwnProperty("cmap") && (e = l[h].metadata.cmap.unicode.codeMap[p[d].charCodeAt(0)]), e || p[d].charCodeAt(0) < 256 && l[h].metadata.hasOwnProperty("Unicode") ? f += p[d] : f += ""; var m = ""; return parseInt(h.slice(1)) < 14 || "WinAnsiEncoding" === g ? m = u(f, h).split("").map(function(t) { return t.charCodeAt(0).toString(16); }).join("") : "Identity-H" === g && (m = r(f, l[h])), s.isHex = !0, { text: m, x: i, y: a, options: o, mutex: s }; }; e.events.push(["postProcessText", function(t) { var e = t.text || "", r = [], n = { text: e, x: t.x, y: t.y, options: t.options, mutex: t.mutex }; if (Array.isArray(e)) { var a = 0; for (a = 0; a < e.length; a += 1) Array.isArray(e[a]) && 3 === e[a].length ? r.push([ i(Object.assign({}, n, { text: e[a][0] })).text, e[a][1], e[a][2] ]) : r.push(i(Object.assign({}, n, { text: e[a] })).text); t.text = r; } else t.text = i(Object.assign({}, n, { text: e })).text; }]); }(E), function(t) { /** * @license * jsPDF virtual FileSystem functionality * * Licensed under the MIT License. * http://opensource.org/licenses/mit-license */ var e = function() { return void 0 === this.internal.vFS && (this.internal.vFS = {}), !0; }; t.existsFileInVFS = function(t) { return e.call(this), void 0 !== this.internal.vFS[t]; }, t.addFileToVFS = function(t, r) { return e.call(this), this.internal.vFS[t] = r, this; }, t.getFileFromVFS = function(t) { return e.call(this), void 0 !== this.internal.vFS[t] ? this.internal.vFS[t] : null; }; }(E.API), function(t) { /** * @license * Unicode Bidi Engine based on the work of Alex Shensis (@asthensis) * MIT License */ t.__bidiEngine__ = t.prototype.__bidiEngine__ = function(t) { var r, n, i, a, o, s, u, c = e, l = [ [ 0, 3, 0, 1, 0, 0, 0 ], [ 0, 3, 0, 1, 2, 2, 0 ], [ 0, 3, 0, 17, 2, 0, 1 ], [ 0, 3, 5, 5, 4, 1, 0 ], [ 0, 3, 21, 21, 4, 0, 1 ], [ 0, 3, 5, 5, 4, 2, 0 ] ], h = [ [ 2, 0, 1, 1, 0, 1, 0 ], [ 2, 0, 1, 1, 0, 2, 0 ], [ 2, 0, 2, 1, 3, 2, 0 ], [ 2, 0, 2, 33, 3, 1, 1 ] ], f = { L: 0, R: 1, EN: 2, AN: 3, N: 4, B: 5, S: 6 }, d = { 0: 0, 5: 1, 6: 2, 7: 3, 32: 4, 251: 5, 254: 6, 255: 7 }, p = [ "(", ")", "(", "<", ">", "<", "[", "]", "[", "{", "}", "{", "«", "»", "«", "‹", "›", "‹", "⁅", "⁆", "⁅", "⁽", "⁾", "⁽", "₍", "₎", "₍", "≤", "≥", "≤", "〈", "〉", "〈", "﹙", "﹚", "﹙", "﹛", "﹜", "﹛", "﹝", "﹞", "﹝", "﹤", "﹥", "﹤" ], g = /* @__PURE__ */ new RegExp(/^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/), m = !1, v = 0; this.__bidiEngine__ = {}; var b = function(t) { var e = t.charCodeAt(), r = e >> 8, n = d[r]; return void 0 !== n ? c[256 * n + (255 & e)] : 252 === r || 253 === r ? "AL" : g.test(r) ? "L" : 8 === r ? "R" : "N"; }, y = function(t) { for (var e, r = 0; r < t.length; r++) { if ("L" === (e = b(t.charAt(r)))) return !1; if ("R" === e) return !0; } return !1; }, w = function(t, e, o, s) { var u, c, l, h, f = e[s]; switch (f) { case "L": case "R": case "LRE": case "RLE": case "LRO": case "RLO": case "PDF": m = !1; break; case "N": case "AN": break; case "EN": m && (f = "AN"); break; case "AL": m = !0, f = "R"; break; case "WS": case "BN": f = "N"; break; case "CS": s < 1 || s + 1 >= e.length || "EN" !== (u = o[s - 1]) && "AN" !== u || "EN" !== (c = e[s + 1]) && "AN" !== c ? f = "N" : m && (c = "AN"), f = c === u ? c : "N"; break; case "ES": f = "EN" === (u = s > 0 ? o[s - 1] : "B") && s + 1 < e.length && "EN" === e[s + 1] ? "EN" : "N"; break; case "ET": if (s > 0 && "EN" === o[s - 1]) { f = "EN"; break; } if (m) { f = "N"; break; } for (l = s + 1, h = e.length; l < h && "ET" === e[l];) l++; f = l < h && "EN" === e[l] ? "EN" : "N"; break; case "NSM": if (i && !a) { for (h = e.length, l = s + 1; l < h && "NSM" === e[l];) l++; if (l < h) { var d = t[s], p = d >= 1425 && d <= 2303 || 64286 === d; if (u = e[l], p && ("R" === u || "AL" === u)) { f = "R"; break; } } } f = s < 1 || "B" === (u = e[s - 1]) ? "N" : o[s - 1]; break; case "B": m = !1, r = !0, f = v; break; case "S": n = !0, f = "N"; } return f; }, N = function(t, e, r) { var n = t.split(""); return r && L(n, r, { hiLevel: v }), n.reverse(), e && e.reverse(), n.join(""); }, L = function(t, e, i) { var a, o, s, u, c, d = -1, p = t.length, g = 0, y = [], N = v ? h : l, L = []; for (m = !1, r = !1, n = !1, o = 0; o < p; o++) L[o] = b(t[o]); for (s = 0; s < p; s++) { if (c = g, y[s] = w(t, L, y, s), a = 240 & (g = N[c][f[y[s]]]), g &= 15, e[s] = u = N[g][5], a > 0) if (16 === a) { for (o = d; o < s; o++) e[o] = 1; d = -1; } else d = -1; if (N[g][6]) -1 === d && (d = s); else if (d > -1) { for (o = d; o < s; o++) e[o] = u; d = -1; } "B" === L[s] && (e[s] = 0), i.hiLevel |= u; } n && function(t, e, r) { for (var n = 0; n < r; n++) if ("S" === t[n]) { e[n] = v; for (var i = n - 1; i >= 0 && "WS" === t[i]; i--) e[i] = v; } }(L, e, p); }, x = function(t, e, n, i, a) { if (!(a.hiLevel < t)) { if (1 === t && 1 === v && !r) return e.reverse(), void (n && n.reverse()); for (var o, s, u, c, l = e.length, h = 0; h < l;) { if (i[h] >= t) { for (u = h + 1; u < l && i[u] >= t;) u++; for (c = h, s = u - 1; c < s; c++, s--) o = e[c], e[c] = e[s], e[s] = o, n && (o = n[c], n[c] = n[s], n[s] = o); h = u; } h++; } } }, A = function(t, e, r) { var n = t.split(""), i = { hiLevel: v }; return r || (r = []), L(n, r, i), function(t, e, r) { if (0 !== r.hiLevel && u) for (var n, i = 0; i < t.length; i++) 1 === e[i] && (n = p.indexOf(t[i])) >= 0 && (t[i] = p[n + 1]); }(n, r, i), x(2, n, e, r, i), x(1, n, e, r, i), n.join(""); }; return this.__bidiEngine__.doBidiReorder = function(t, e, r) { if (function(t, e) { if (e) for (var r = 0; r < t.length; r++) e[r] = r; void 0 === a && (a = y(t)), void 0 === s && (s = y(t)); }(t, e), i || !o || s) if (i && o && a ^ s) v = a ? 1 : 0, t = N(t, e, r); else if (!i && o && s) v = a ? 1 : 0, t = A(t, e, r), t = N(t, e); else if (!i || a || o || s) { if (i && !o && a ^ s) t = N(t, e), a ? (v = 0, t = A(t, e, r)) : (v = 1, t = A(t, e, r), t = N(t, e)); else if (i && a && !o && s) v = 1, t = A(t, e, r), t = N(t, e); else if (!i && !o && a ^ s) { var n = u; a ? (v = 1, t = A(t, e, r), v = 0, u = !1, t = A(t, e, r), u = n) : (v = 0, t = A(t, e, r), t = N(t, e), v = 1, u = !1, t = A(t, e, r), u = n, t = N(t, e)); } } else v = 0, t = A(t, e, r); else v = a ? 1 : 0, t = A(t, e, r); return t; }, this.__bidiEngine__.setOptions = function(t) { t && (i = t.isInputVisual, o = t.isOutputVisual, a = t.isInputRtl, s = t.isOutputRtl, u = t.isSymmetricSwapping); }, this.__bidiEngine__.setOptions(t), this.__bidiEngine__; }; var e = [ "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "S", "B", "S", "WS", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "B", "B", "B", "S", "WS", "N", "N", "ET", "ET", "ET", "N", "N", "N", "N", "N", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "BN", "BN", "BN", "BN", "BN", "BN", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "CS", "N", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "L", "N", "N", "BN", "N", "N", "ET", "ET", "EN", "EN", "N", "L", "N", "N", "N", "EN", "L", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "N", "N", "N", "N", "N", "ET", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "R", "NSM", "R", "NSM", "NSM", "R", "NSM", "NSM", "R", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "AN", "AN", "AN", "AN", "AN", "AN", "N", "N", "AL", "ET", "ET", "AL", "CS", "AL", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "ET", "AN", "AN", "AL", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "NSM", "NSM", "N", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "R", "R", "N", "N", "N", "N", "R", "N", "N", "N", "N", "N", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "BN", "BN", "BN", "L", "R", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "WS", "B", "LRE", "RLE", "PDF", "LRO", "RLO", "CS", "ET", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "CS", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "WS", "BN", "BN", "BN", "BN", "BN", "N", "LRI", "RLI", "FSI", "PDI", "BN", "BN", "BN", "BN", "BN", "BN", "EN", "L", "N", "N", "EN", "EN", "EN", "EN", "EN", "EN", "ES", "ES", "N", "N", "N", "L", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "ES", "ES", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "R", "NSM", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "ES", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "N", "R", "R", "R", "R", "R", "N", "R", "N", "R", "R", "N", "R", "R", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "CS", "N", "CS", "N", "N", "CS", "N", "N", "N", "N", "N", "N", "N", "N", "N", "ET", "N", "N", "ES", "ES", "N", "N", "N", "N", "N", "ET", "ET", "N", "N", "N", "N", "N", "AL", "AL", "AL", "AL", "AL", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "N", "BN", "N", "N", "N", "ET", "ET", "ET", "N", "N", "N", "N", "N", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "N", "N", "N", "ET", "ET", "N", "N", "N", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N" ], r = new t.__bidiEngine__({ isInputVisual: !0 }); t.API.events.push(["postProcessText", function(t) { var e = t.text; t.x, t.y; var n = t.options || {}; t.mutex, n.lang; var i = []; if (n.isInputVisual = "boolean" != typeof n.isInputVisual || n.isInputVisual, r.setOptions(n), "[object Array]" === Object.prototype.toString.call(e)) { var a = 0; for (i = [], a = 0; a < e.length; a += 1) "[object Array]" === Object.prototype.toString.call(e[a]) ? i.push([ r.doBidiReorder(e[a][0]), e[a][1], e[a][2] ]) : i.push([r.doBidiReorder(e[a])]); t.text = i; } else t.text = r.doBidiReorder(e); r.setOptions({ isInputVisual: !0 }); }]); }(E), E.API.TTFFont = function() { function t(t) { var e; if (this.rawData = t, e = this.contents = new fe(t), this.contents.pos = 4, "ttcf" === e.readString(4)) throw new Error("TTCF not supported."); e.pos = 0, this.parse(), this.subset = new Ce(this), this.registerTTF(); } return t.open = function(e) { return new t(e); }, t.prototype.parse = function() { return this.directory = new de(this.contents), this.head = new me(this), this.name = new xe(this), this.cmap = new be(this), this.toUnicode = {}, this.hhea = new ye(this), this.maxp = new Ae(this), this.hmtx = new Se(this), this.post = new Ne(this), this.os2 = new we(this), this.loca = new Ie(this), this.glyf = new Pe(this), this.ascender = this.os2.exists && this.os2.ascender || this.hhea.ascender, this.decender = this.os2.exists && this.os2.decender || this.hhea.decender, this.lineGap = this.os2.exists && this.os2.lineGap || this.hhea.lineGap, this.bbox = [ this.head.xMin, this.head.yMin, this.head.xMax, this.head.yMax ]; }, t.prototype.registerTTF = function() { var t, e, r, n, i; if (this.scaleFactor = 1e3 / this.head.unitsPerEm, this.bbox = function() { var e, r, n, i; for (i = [], e = 0, r = (n = this.bbox).length; e < r; e++) t = n[e], i.push(Math.round(t * this.scaleFactor)); return i; }.call(this), this.stemV = 0, this.post.exists ? (r = 255 & (n = this.post.italic_angle), 32768 & (e = n >> 16) && (e = -(1 + (65535 ^ e))), this.italicAngle = +(e + "." + r)) : this.italicAngle = 0, this.ascender = Math.round(this.ascender * this.scaleFactor), this.decender = Math.round(this.decender * this.scaleFactor), this.lineGap = Math.round(this.lineGap * this.scaleFactor), this.capHeight = this.os2.exists && this.os2.capHeight || this.ascender, this.xHeight = this.os2.exists && this.os2.xHeight || 0, this.familyClass = (this.os2.exists && this.os2.familyClass || 0) >> 8, this.isSerif = 1 === (i = this.familyClass) || 2 === i || 3 === i || 4 === i || 5 === i || 7 === i, this.isScript = 10 === this.familyClass, this.flags = 0, this.post.isFixedPitch && (this.flags |= 1), this.isSerif && (this.flags |= 2), this.isScript && (this.flags |= 8), 0 !== this.italicAngle && (this.flags |= 64), this.flags |= 32, !this.cmap.unicode) throw new Error("No unicode cmap for font"); }, t.prototype.characterToGlyph = function(t) { var e; return (null != (e = this.cmap.unicode) ? e.codeMap[t] : void 0) || 0; }, t.prototype.widthOfGlyph = function(t) { var e; return e = 1e3 / this.head.unitsPerEm, this.hmtx.forGlyph(t).advance * e; }, t.prototype.widthOfString = function(t, e, r) { var n, i, a, o; for (a = 0, i = 0, o = (t = "" + t).length; 0 <= o ? i < o : i > o; i = 0 <= o ? ++i : --i) n = t.charCodeAt(i), a += this.widthOfGlyph(this.characterToGlyph(n)) + r * (1e3 / e) || 0; return a * (e / 1e3); }, t.prototype.lineHeight = function(t, e) { var r; return e ??= !1, r = e ? this.lineGap : 0, (this.ascender + r - this.decender) / 1e3 * t; }, t; }(); var he, fe = function() { function t(t) { this.data = null != t ? t : [], this.pos = 0, this.length = this.data.length; } return t.prototype.readByte = function() { return this.data[this.pos++]; }, t.prototype.writeByte = function(t) { return this.data[this.pos++] = t; }, t.prototype.readUInt32 = function() { return 16777216 * this.readByte() + (this.readByte() << 16) + (this.readByte() << 8) + this.readByte(); }, t.prototype.writeUInt32 = function(t) { return this.writeByte(t >>> 24 & 255), this.writeByte(t >> 16 & 255), this.writeByte(t >> 8 & 255), this.writeByte(255 & t); }, t.prototype.readInt32 = function() { var t; return (t = this.readUInt32()) >= 2147483648 ? t - 4294967296 : t; }, t.prototype.writeInt32 = function(t) { return t < 0 && (t += 4294967296), this.writeUInt32(t); }, t.prototype.readUInt16 = function() { return this.readByte() << 8 | this.readByte(); }, t.prototype.writeUInt16 = function(t) { return this.writeByte(t >> 8 & 255), this.writeByte(255 & t); }, t.prototype.readInt16 = function() { var t; return (t = this.readUInt16()) >= 32768 ? t - 65536 : t; }, t.prototype.writeInt16 = function(t) { return t < 0 && (t += 65536), this.writeUInt16(t); }, t.prototype.readString = function(t) { var e, r; for (r = [], e = 0; 0 <= t ? e < t : e > t; e = 0 <= t ? ++e : --e) r[e] = String.fromCharCode(this.readByte()); return r.join(""); }, t.prototype.writeString = function(t) { var e, r, n; for (n = [], e = 0, r = t.length; 0 <= r ? e < r : e > r; e = 0 <= r ? ++e : --e) n.push(this.writeByte(t.charCodeAt(e))); return n; }, t.prototype.readShort = function() { return this.readInt16(); }, t.prototype.writeShort = function(t) { return this.writeInt16(t); }, t.prototype.readLongLong = function() { var t, e, r, n, i, a, o, s; return t = this.readByte(), e = this.readByte(), r = this.readByte(), n = this.readByte(), i = this.readByte(), a = this.readByte(), o = this.readByte(), s = this.readByte(), 128 & t ? -1 * (72057594037927940 * (255 ^ t) + 281474976710656 * (255 ^ e) + 1099511627776 * (255 ^ r) + 4294967296 * (255 ^ n) + 16777216 * (255 ^ i) + 65536 * (255 ^ a) + 256 * (255 ^ o) + (255 ^ s) + 1) : 72057594037927940 * t + 281474976710656 * e + 1099511627776 * r + 4294967296 * n + 16777216 * i + 65536 * a + 256 * o + s; }, t.prototype.writeLongLong = function(t) { var e, r; return e = Math.floor(t / 4294967296), r = 4294967295 & t, this.writeByte(e >> 24 & 255), this.writeByte(e >> 16 & 255), this.writeByte(e >> 8 & 255), this.writeByte(255 & e), this.writeByte(r >> 24 & 255), this.writeByte(r >> 16 & 255), this.writeByte(r >> 8 & 255), this.writeByte(255 & r); }, t.prototype.readInt = function() { return this.readInt32(); }, t.prototype.writeInt = function(t) { return this.writeInt32(t); }, t.prototype.read = function(t) { var e, r; for (e = [], r = 0; 0 <= t ? r < t : r > t; r = 0 <= t ? ++r : --r) e.push(this.readByte()); return e; }, t.prototype.write = function(t) { var e, r, n, i; for (i = [], r = 0, n = t.length; r < n; r++) e = t[r], i.push(this.writeByte(e)); return i; }, t; }(), de = function() { var t; function e(t) { var e, r, n; for (this.scalarType = t.readInt(), this.tableCount = t.readShort(), this.searchRange = t.readShort(), this.entrySelector = t.readShort(), this.rangeShift = t.readShort(), this.tables = {}, r = 0, n = this.tableCount; 0 <= n ? r < n : r > n; r = 0 <= n ? ++r : --r) e = { tag: t.readString(4), checksum: t.readInt(), offset: t.readInt(), length: t.readInt() }, this.tables[e.tag] = e; } return e.prototype.encode = function(e) { var r, n, i, a, o, s, u, c, l, h, f, d, p; for (p in f = Object.keys(e).length, s = Math.log(2), l = 16 * Math.floor(Math.log(f) / s), a = Math.floor(l / s), c = 16 * f - l, (n = new fe()).writeInt(this.scalarType), n.writeShort(f), n.writeShort(l), n.writeShort(a), n.writeShort(c), i = 16 * f, u = n.pos + i, o = null, d = [], e) for (h = e[p], n.writeString(p), n.writeInt(t(h)), n.writeInt(u), n.writeInt(h.length), d = d.concat(h), "head" === p && (o = u), u += h.length; u % 4;) d.push(0), u++; return n.write(d), r = 2981146554 - t(n.data), n.pos = o + 8, n.writeUInt32(r), n.data; }, t = function(t) { var e, r, n, i; for (t = _e.call(t); t.length % 4;) t.push(0); for (n = new fe(t), r = 0, e = 0, i = t.length; e < i; e = e += 4) r += n.readUInt32(); return 4294967295 & r; }, e; }(), pe = {}.hasOwnProperty, ge = function(t, e) { for (var r in e) pe.call(e, r) && (t[r] = e[r]); function n() { this.constructor = t; } return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t; }; he = function() { function t(t) { var e; this.file = t, e = this.file.directory.tables[this.tag], this.exists = !!e, e && (this.offset = e.offset, this.length = e.length, this.parse(this.file.contents)); } return t.prototype.parse = function() {}, t.prototype.encode = function() {}, t.prototype.raw = function() { return this.exists ? (this.file.contents.pos = this.offset, this.file.contents.read(this.length)) : null; }, t; }(); var me = function() { function t() { return t.__super__.constructor.apply(this, arguments); } return ge(t, he), t.prototype.tag = "head", t.prototype.parse = function(t) { return t.pos = this.offset, this.version = t.readInt(), this.revision = t.readInt(), this.checkSumAdjustment = t.readInt(), this.magicNumber = t.readInt(), this.flags = t.readShort(), this.unitsPerEm = t.readShort(), this.created = t.readLongLong(), this.modified = t.readLongLong(), this.xMin = t.readShort(), this.yMin = t.readShort(), this.xMax = t.readShort(), this.yMax = t.readShort(), this.macStyle = t.readShort(), this.lowestRecPPEM = t.readShort(), this.fontDirectionHint = t.readShort(), this.indexToLocFormat = t.readShort(), this.glyphDataFormat = t.readShort(); }, t.prototype.encode = function(t) { var e; return (e = new fe()).writeInt(this.version), e.writeInt(this.revision), e.writeInt(this.checkSumAdjustment), e.writeInt(this.magicNumber), e.writeShort(this.flags), e.writeShort(this.unitsPerEm), e.writeLongLong(this.created), e.writeLongLong(this.modified), e.writeShort(this.xMin), e.writeShort(this.yMin), e.writeShort(this.xMax), e.writeShort(this.yMax), e.writeShort(this.macStyle), e.writeShort(this.lowestRecPPEM), e.writeShort(this.fontDirectionHint), e.writeShort(t), e.writeShort(this.glyphDataFormat), e.data; }, t; }(), ve = function() { function t(t, e) { var r, n, i, a, o, s, u, c, l, h, f, d, p, g, m, v, b; switch (this.platformID = t.readUInt16(), this.encodingID = t.readShort(), this.offset = e + t.readInt(), l = t.pos, t.pos = this.offset, this.format = t.readUInt16(), this.length = t.readUInt16(), this.language = t.readUInt16(), this.isUnicode = 3 === this.platformID && 1 === this.encodingID && 4 === this.format || 0 === this.platformID && 4 === this.format, this.codeMap = {}, this.format) { case 0: for (s = 0; s < 256; ++s) this.codeMap[s] = t.readByte(); break; case 4: for (f = t.readUInt16(), h = f / 2, t.pos += 6, i = function() { var e, r; for (r = [], s = e = 0; 0 <= h ? e < h : e > h; s = 0 <= h ? ++e : --e) r.push(t.readUInt16()); return r; }(), t.pos += 2, p = function() { var e, r; for (r = [], s = e = 0; 0 <= h ? e < h : e > h; s = 0 <= h ? ++e : --e) r.push(t.readUInt16()); return r; }(), u = function() { var e, r; for (r = [], s = e = 0; 0 <= h ? e < h : e > h; s = 0 <= h ? ++e : --e) r.push(t.readUInt16()); return r; }(), c = function() { var e, r; for (r = [], s = e = 0; 0 <= h ? e < h : e > h; s = 0 <= h ? ++e : --e) r.push(t.readUInt16()); return r; }(), n = (this.length - t.pos + this.offset) / 2, o = function() { var e, r; for (r = [], s = e = 0; 0 <= n ? e < n : e > n; s = 0 <= n ? ++e : --e) r.push(t.readUInt16()); return r; }(), s = m = 0, b = i.length; m < b; s = ++m) for (g = i[s], r = v = d = p[s]; d <= g ? v <= g : v >= g; r = d <= g ? ++v : --v) 0 === c[s] ? a = r + u[s] : 0 !== (a = o[c[s] / 2 + (r - d) - (h - s)] || 0) && (a += u[s]), this.codeMap[r] = 65535 & a; } t.pos = l; } return t.encode = function(t, e) { var r, n, i, a, o, s, u, c, l, h, f, d, p, g, m, v, b, y, w, N, L, x, A, S, _, P, k, F, I, C, j, O, B, M, q, E, R, D, T, z, U, H, W, V, G, Y; switch (F = new fe(), a = Object.keys(t).sort(function(t, e) { return t - e; }), e) { case "macroman": for (p = 0, g = function() { var t = []; for (d = 0; d < 256; ++d) t.push(0); return t; }(), v = { 0: 0 }, i = {}, I = 0, B = a.length; I < B; I++) v[W = t[n = a[I]]] ?? (v[W] = ++p), i[n] = { old: t[n], new: v[t[n]] }, g[n] = v[t[n]]; return F.writeUInt16(1), F.writeUInt16(0), F.writeUInt32(12), F.writeUInt16(0), F.writeUInt16(262), F.writeUInt16(0), F.write(g), { charMap: i, subtable: F.data, maxGlyphID: p + 1 }; case "unicode": for (P = [], l = [], b = 0, v = {}, r = {}, m = u = null, C = 0, M = a.length; C < M; C++) v[w = t[n = a[C]]] ?? (v[w] = ++b), r[n] = { old: w, new: v[w] }, o = v[w] - n, null != m && o === u || (m && l.push(m), P.push(n), u = o), m = n; for (m && l.push(m), l.push(65535), P.push(65535), S = 2 * (A = P.length), x = 2 * Math.pow(Math.log(A) / Math.LN2, 2), h = Math.log(x / 2) / Math.LN2, L = 2 * A - x, s = [], N = [], f = [], d = j = 0, q = P.length; j < q; d = ++j) { if (_ = P[d], c = l[d], 65535 === _) { s.push(0), N.push(0); break; } if (_ - (k = r[_].new) >= 32768) for (s.push(0), N.push(2 * (f.length + A - d)), n = O = _; _ <= c ? O <= c : O >= c; n = _ <= c ? ++O : --O) f.push(r[n].new); else s.push(k - _), N.push(0); } for (F.writeUInt16(3), F.writeUInt16(1), F.writeUInt32(12), F.writeUInt16(4), F.writeUInt16(16 + 8 * A + 2 * f.length), F.writeUInt16(0), F.writeUInt16(S), F.writeUInt16(x), F.writeUInt16(h), F.writeUInt16(L), U = 0, E = l.length; U < E; U++) n = l[U], F.writeUInt16(n); for (F.writeUInt16(0), H = 0, R = P.length; H < R; H++) n = P[H], F.writeUInt16(n); for (V = 0, D = s.length; V < D; V++) o = s[V], F.writeUInt16(o); for (G = 0, T = N.length; G < T; G++) y = N[G], F.writeUInt16(y); for (Y = 0, z = f.length; Y < z; Y++) p = f[Y], F.writeUInt16(p); return { charMap: r, subtable: F.data, maxGlyphID: b + 1 }; } }, t; }(), be = function() { function t() { return t.__super__.constructor.apply(this, arguments); } return ge(t, he), t.prototype.tag = "cmap", t.prototype.parse = function(t) { var e, r, n; for (t.pos = this.offset, this.version = t.readUInt16(), n = t.readUInt16(), this.tables = [], this.unicode = null, r = 0; 0 <= n ? r < n : r > n; r = 0 <= n ? ++r : --r) e = new ve(t, this.offset), this.tables.push(e), e.isUnicode && null == this.unicode && (this.unicode = e); return !0; }, t.encode = function(t, e) { var r, n; return e ??= "macroman", r = ve.encode(t, e), (n = new fe()).writeUInt16(0), n.writeUInt16(1), r.table = n.data.concat(r.subtable), r; }, t; }(), ye = function() { function t() { return t.__super__.constructor.apply(this, arguments); } return ge(t, he), t.prototype.tag = "hhea", t.prototype.parse = function(t) { return t.pos = this.offset, this.version = t.readInt(), this.ascender = t.readShort(), this.decender = t.readShort(), this.lineGap = t.readShort(), this.advanceWidthMax = t.readShort(), this.minLeftSideBearing = t.readShort(), this.minRightSideBearing = t.readShort(), this.xMaxExtent = t.readShort(), this.caretSlopeRise = t.readShort(), this.caretSlopeRun = t.readShort(), this.caretOffset = t.readShort(), t.pos += 8, this.metricDataFormat = t.readShort(), this.numberOfMetrics = t.readUInt16(); }, t; }(), we = function() { function t() { return t.__super__.constructor.apply(this, arguments); } return ge(t, he), t.prototype.tag = "OS/2", t.prototype.parse = function(t) { if (t.pos = this.offset, this.version = t.readUInt16(), this.averageCharWidth = t.readShort(), this.weightClass = t.readUInt16(), this.widthClass = t.readUInt16(), this.type = t.readShort(), this.ySubscriptXSize = t.readShort(), this.ySubscriptYSize = t.readShort(), this.ySubscriptXOffset = t.readShort(), this.ySubscriptYOffset = t.readShort(), this.ySuperscriptXSize = t.readShort(), this.ySuperscriptYSize = t.readShort(), this.ySuperscriptXOffset = t.readShort(), this.ySuperscriptYOffset = t.readShort(), this.yStrikeoutSize = t.readShort(), this.yStrikeoutPosition = t.readShort(), this.familyClass = t.readShort(), this.panose = function() { var e, r; for (r = [], e = 0; e < 10; ++e) r.push(t.readByte()); return r; }(), this.charRange = function() { var e, r; for (r = [], e = 0; e < 4; ++e) r.push(t.readInt()); return r; }(), this.vendorID = t.readString(4), this.selection = t.readShort(), this.firstCharIndex = t.readShort(), this.lastCharIndex = t.readShort(), this.version > 0 && (this.ascent = t.readShort(), this.descent = t.readShort(), this.lineGap = t.readShort(), this.winAscent = t.readShort(), this.winDescent = t.readShort(), this.codePageRange = function() { var e, r; for (r = [], e = 0; e < 2; e = ++e) r.push(t.readInt()); return r; }(), this.version > 1)) return this.xHeight = t.readShort(), this.capHeight = t.readShort(), this.defaultChar = t.readShort(), this.breakChar = t.readShort(), this.maxContext = t.readShort(); }, t; }(), Ne = function() { function t() { return t.__super__.constructor.apply(this, arguments); } return ge(t, he), t.prototype.tag = "post", t.prototype.parse = function(t) { var e, r, n; switch (t.pos = this.offset, this.format = t.readInt(), this.italicAngle = t.readInt(), this.underlinePosition = t.readShort(), this.underlineThickness = t.readShort(), this.isFixedPitch = t.readInt(), this.minMemType42 = t.readInt(), this.maxMemType42 = t.readInt(), this.minMemType1 = t.readInt(), this.maxMemType1 = t.readInt(), this.format) { case 65536: case 196608: break; case 131072: var i; for (r = t.readUInt16(), this.glyphNameIndex = [], i = 0; 0 <= r ? i < r : i > r; i = 0 <= r ? ++i : --i) this.glyphNameIndex.push(t.readUInt16()); for (this.names = [], n = []; t.pos < this.offset + this.length;) e = t.readByte(), n.push(this.names.push(t.readString(e))); return n; case 151552: return r = t.readUInt16(), this.offsets = t.read(r); case 262144: return this.map = function() { var e, r, n; for (n = [], i = e = 0, r = this.file.maxp.numGlyphs; 0 <= r ? e < r : e > r; i = 0 <= r ? ++e : --e) n.push(t.readUInt32()); return n; }.call(this); } }, t; }(), Le = function(t, e) { this.raw = t, this.length = t.length, this.platformID = e.platformID, this.encodingID = e.encodingID, this.languageID = e.languageID; }, xe = function() { function t() { return t.__super__.constructor.apply(this, arguments); } return ge(t, he), t.prototype.tag = "name", t.prototype.parse = function(t) { var e, r, n, i, a, o, s, u, c, l, h; for (t.pos = this.offset, t.readShort(), e = t.readShort(), o = t.readShort(), r = [], i = 0; 0 <= e ? i < e : i > e; i = 0 <= e ? ++i : --i) r.push({ platformID: t.readShort(), encodingID: t.readShort(), languageID: t.readShort(), nameID: t.readShort(), length: t.readShort(), offset: this.offset + o + t.readShort() }); for (s = {}, i = c = 0, l = r.length; c < l; i = ++c) n = r[i], t.pos = n.offset, u = t.readString(n.length), a = new Le(u, n), s[h = n.nameID] ?? (s[h] = []), s[n.nameID].push(a); this.strings = s, this.copyright = s[0], this.fontFamily = s[1], this.fontSubfamily = s[2], this.uniqueSubfamily = s[3], this.fontName = s[4], this.version = s[5]; try { this.postscriptName = s[6][0].raw.replace(/[\x00-\x19\x80-\xff]/g, ""); } catch (f) { this.postscriptName = s[4][0].raw.replace(/[\x00-\x19\x80-\xff]/g, ""); } return this.trademark = s[7], this.manufacturer = s[8], this.designer = s[9], this.description = s[10], this.vendorUrl = s[11], this.designerUrl = s[12], this.license = s[13], this.licenseUrl = s[14], this.preferredFamily = s[15], this.preferredSubfamily = s[17], this.compatibleFull = s[18], this.sampleText = s[19]; }, t; }(), Ae = function() { function t() { return t.__super__.constructor.apply(this, arguments); } return ge(t, he), t.prototype.tag = "maxp", t.prototype.parse = function(t) { return t.pos = this.offset, this.version = t.readInt(), this.numGlyphs = t.readUInt16(), this.maxPoints = t.readUInt16(), this.maxContours = t.readUInt16(), this.maxCompositePoints = t.readUInt16(), this.maxComponentContours = t.readUInt16(), this.maxZones = t.readUInt16(), this.maxTwilightPoints = t.readUInt16(), this.maxStorage = t.readUInt16(), this.maxFunctionDefs = t.readUInt16(), this.maxInstructionDefs = t.readUInt16(), this.maxStackElements = t.readUInt16(), this.maxSizeOfInstructions = t.readUInt16(), this.maxComponentElements = t.readUInt16(), this.maxComponentDepth = t.readUInt16(); }, t; }(), Se = function() { function t() { return t.__super__.constructor.apply(this, arguments); } return ge(t, he), t.prototype.tag = "hmtx", t.prototype.parse = function(t) { var e, r, n, i, a, o, s; for (t.pos = this.offset, this.metrics = [], e = 0, o = this.file.hhea.numberOfMetrics; 0 <= o ? e < o : e > o; e = 0 <= o ? ++e : --e) this.metrics.push({ advance: t.readUInt16(), lsb: t.readInt16() }); for (n = this.file.maxp.numGlyphs - this.file.hhea.numberOfMetrics, this.leftSideBearings = function() { var r, i; for (i = [], e = r = 0; 0 <= n ? r < n : r > n; e = 0 <= n ? ++r : --r) i.push(t.readInt16()); return i; }(), this.widths = function() { var t, e, r, n; for (n = [], t = 0, e = (r = this.metrics).length; t < e; t++) i = r[t], n.push(i.advance); return n; }.call(this), r = this.widths[this.widths.length - 1], s = [], e = a = 0; 0 <= n ? a < n : a > n; e = 0 <= n ? ++a : --a) s.push(this.widths.push(r)); return s; }, t.prototype.forGlyph = function(t) { return t in this.metrics ? this.metrics[t] : { advance: this.metrics[this.metrics.length - 1].advance, lsb: this.leftSideBearings[t - this.metrics.length] }; }, t; }(), _e = [].slice, Pe = function() { function t() { return t.__super__.constructor.apply(this, arguments); } return ge(t, he), t.prototype.tag = "glyf", t.prototype.parse = function() { return this.cache = {}; }, t.prototype.glyphFor = function(t) { var e, r, n, i, a, o, s, u, c, l; return t in this.cache ? this.cache[t] : (i = this.file.loca, e = this.file.contents, r = i.indexOf(t), 0 === (n = i.lengthOf(t)) ? this.cache[t] = null : (e.pos = this.offset + r, a = (o = new fe(e.read(n))).readShort(), u = o.readShort(), l = o.readShort(), s = o.readShort(), c = o.readShort(), this.cache[t] = -1 === a ? new Fe(o, u, l, s, c) : new ke(o, a, u, l, s, c), this.cache[t])); }, t.prototype.encode = function(t, e, r) { var n, i, a, o, s; for (a = [], i = [], o = 0, s = e.length; o < s; o++) n = t[e[o]], i.push(a.length), n && (a = a.concat(n.encode(r))); return i.push(a.length), { table: a, offsets: i }; }, t; }(), ke = function() { function t(t, e, r, n, i, a) { this.raw = t, this.numberOfContours = e, this.xMin = r, this.yMin = n, this.xMax = i, this.yMax = a, this.compound = !1; } return t.prototype.encode = function() { return this.raw.data; }, t; }(), Fe = function() { function t(t, e, r, n, i) { var a, o; for (this.raw = t, this.xMin = e, this.yMin = r, this.xMax = n, this.yMax = i, this.compound = !0, this.glyphIDs = [], this.glyphOffsets = [], a = this.raw; o = a.readShort(), this.glyphOffsets.push(a.pos), this.glyphIDs.push(a.readUInt16()), 32 & o;) a.pos += 1 & o ? 4 : 2, 128 & o ? a.pos += 8 : 64 & o ? a.pos += 4 : 8 & o && (a.pos += 2); } return t.prototype.encode = function() { var t, e, r; for (e = new fe(_e.call(this.raw.data)), t = 0, r = this.glyphIDs.length; t < r; ++t) e.pos = this.glyphOffsets[t]; return e.data; }, t; }(), Ie = function() { function t() { return t.__super__.constructor.apply(this, arguments); } return ge(t, he), t.prototype.tag = "loca", t.prototype.parse = function(t) { var e, r; return t.pos = this.offset, e = this.file.head.indexToLocFormat, this.offsets = 0 === e ? function() { var e, n; for (n = [], r = 0, e = this.length; r < e; r += 2) n.push(2 * t.readUInt16()); return n; }.call(this) : function() { var e, n; for (n = [], r = 0, e = this.length; r < e; r += 4) n.push(t.readUInt32()); return n; }.call(this); }, t.prototype.indexOf = function(t) { return this.offsets[t]; }, t.prototype.lengthOf = function(t) { return this.offsets[t + 1] - this.offsets[t]; }, t.prototype.encode = function(t, e) { for (var r = new Uint32Array(this.offsets.length), n = 0, i = 0, a = 0; a < r.length; ++a) if (r[a] = n, i < e.length && e[i] == a) { ++i, r[a] = n; var o = this.offsets[a], s = this.offsets[a + 1] - o; s > 0 && (n += s); } for (var u = new Array(4 * r.length), c = 0; c < r.length; ++c) u[4 * c + 3] = 255 & r[c], u[4 * c + 2] = (65280 & r[c]) >> 8, u[4 * c + 1] = (16711680 & r[c]) >> 16, u[4 * c] = (4278190080 & r[c]) >> 24; return u; }, t; }(), Ce = function() { function t(t) { this.font = t, this.subset = {}, this.unicodes = {}, this.next = 33; } return t.prototype.generateCmap = function() { var t, e, r, n, i; for (e in n = this.font.cmap.tables[0].codeMap, t = {}, i = this.subset) r = i[e], t[e] = n[r]; return t; }, t.prototype.glyphsFor = function(t) { var e, r, n, i, a, o, s; for (n = {}, a = 0, o = t.length; a < o; a++) n[i = t[a]] = this.font.glyf.glyphFor(i); for (i in e = [], n) null != (r = n[i]) && r.compound && e.push.apply(e, r.glyphIDs); if (e.length > 0) for (i in s = this.glyphsFor(e)) r = s[i], n[i] = r; return n; }, t.prototype.encode = function(t, e) { var r, n, i, a, o, s, u, c, l, h, f, d, p, g, m; for (n in r = be.encode(this.generateCmap(), "unicode"), a = this.glyphsFor(t), f = { 0: 0 }, m = r.charMap) f[(s = m[n]).old] = s.new; for (d in h = r.maxGlyphID, a) d in f || (f[d] = h++); return c = function(t) { var e, r; for (e in r = {}, t) r[t[e]] = e; return r; }(f), l = Object.keys(c).sort(function(t, e) { return t - e; }), p = function() { var t, e, r; for (r = [], t = 0, e = l.length; t < e; t++) o = l[t], r.push(c[o]); return r; }(), i = this.font.glyf.encode(a, p, f), u = this.font.loca.encode(i.offsets, p), g = { cmap: this.font.cmap.raw(), glyf: i.table, loca: u, hmtx: this.font.hmtx.raw(), hhea: this.font.hhea.raw(), maxp: this.font.maxp.raw(), post: this.font.post.raw(), name: this.font.name.raw(), head: this.font.head.encode(e) }, this.font.os2.exists && (g["OS/2"] = this.font.os2.raw()), this.font.directory.encode(g); }, t; }(); E.API.PDFObject = function() { var t; function e() {} return t = function(t, e) { return (Array(e + 1).join("0") + t).slice(-e); }, e.convert = function(r) { var n, i, a, o; if (Array.isArray(r)) return "[" + function() { var t, i, a; for (a = [], t = 0, i = r.length; t < i; t++) n = r[t], a.push(e.convert(n)); return a; }().join(" ") + "]"; if ("string" == typeof r) return "/" + r; if (null != r ? r.isString : void 0) return "(" + r + ")"; if (r instanceof Date) return "(D:" + t(r.getUTCFullYear(), 4) + t(r.getUTCMonth(), 2) + t(r.getUTCDate(), 2) + t(r.getUTCHours(), 2) + t(r.getUTCMinutes(), 2) + t(r.getUTCSeconds(), 2) + "Z)"; if ("[object Object]" === {}.toString.call(r)) { for (i in a = ["<<"], r) o = r[i], a.push("/" + i + " " + e.convert(o)); return a.push(">>"), a.join("\n"); } return "" + r; }, e; }(); //#endregion export { _t as AcroForm, At as AcroFormAppearance, vt as AcroFormButton, Nt as AcroFormCheckBox, dt as AcroFormChoiceField, gt as AcroFormComboBox, mt as AcroFormEditBox, pt as AcroFormListBox, xt as AcroFormPasswordField, bt as AcroFormPushButton, yt as AcroFormRadioButton, Lt as AcroFormTextField, O as GState, M as ShadingPattern, q as TilingPattern, E as default, E as jsPDF }; //# sourceMappingURL=jspdf.js.map