小程序进阶总结

版权声明: https://blog.csdn.net/qq_40999496/article/details/81583249

图片

首先,先说一下小程序的背景图片问题:在wxmlz中的style写:background-image:url("背景图片的路径");background-report:no-report;background-size:100%;其中url仅支持网络图片。所以我们如果要用本地图片还是用定位来写吧。

说完背景图现在来说一下小程序中上传图片(图片要转base64)。思路是这样的:因为小程序中的wx.arrayBufferToBase64();不支持本地文件转base64,所以我们先将图片用canvas将图片画出来,然后见canvas转成png格式的图片,最后将png格式的图片通过wx.arrayBufferToBase64();转成base64的格式上传。需要引入两个js:UPNG.js和pako.js。代码如下:

UPNG.js

!function () { var e = {}; "object" == typeof module ? module.exports = e : window.UPNG = e, function (e, r) { e.toRGBA8 = function (r) { var t = r.width, n = r.height; if (null == r.tabs.acTL) return [e.toRGBA8.decodeImage(r.data, t, n, r).buffer]; var a = []; null == r.frames[0].data && (r.frames[0].data = r.data); for (var i, f = new Uint8Array(t * n * 4), o = 0; o < r.frames.length; o++) { var s = r.frames[o], l = s.rect.x, c = s.rect.y, u = s.rect.width, d = s.rect.height, h = e.toRGBA8.decodeImage(s.data, u, d, r); if (0 == o ? i = h : 0 == s.blend ? e._copyTile(h, u, d, i, t, n, l, c, 0) : 1 == s.blend && e._copyTile(h, u, d, i, t, n, l, c, 1), a.push(i.buffer), i = i.slice(0), 0 == s.dispose); else if (1 == s.dispose) e._copyTile(f, u, d, i, t, n, l, c, 0); else if (2 == s.dispose) { for (var v = o - 1; 2 == r.frames[v].dispose;)v--; i = new Uint8Array(a[v]).slice(0) } } return a }, e.toRGBA8.decodeImage = function (r, t, n, a) { var i = t * n, f = e.decode._getBPP(a), o = Math.ceil(t * f / 8), s = new Uint8Array(4 * i), l = new Uint32Array(s.buffer), c = a.ctype, u = a.depth, d = e._bin.readUshort; if (6 == c) { var h = i << 2; if (8 == u) for (var v = 0; v < h; v++)s[v] = r[v]; if (16 == u) for (v = 0; v < h; v++)s[v] = r[v << 1] } else if (2 == c) { var p = a.tabs.tRNS, b = -1, g = -1, y = -1; if (p && (b = p[0], g = p[1], y = p[2]), 8 == u) for (v = 0; v < i; v++) { var m = 3 * v; s[M = v << 2] = r[m], s[M + 1] = r[m + 1], s[M + 2] = r[m + 2], s[M + 3] = 255, -1 != b && r[m] == b && r[m + 1] == g && r[m + 2] == y && (s[M + 3] = 0) } if (16 == u) for (v = 0; v < i; v++) { m = 6 * v; s[M = v << 2] = r[m], s[M + 1] = r[m + 2], s[M + 2] = r[m + 4], s[M + 3] = 255, -1 != b && d(r, m) == b && d(r, m + 2) == g && d(r, m + 4) == y && (s[M + 3] = 0) } } else if (3 == c) { var w = a.tabs.PLTE, A = a.tabs.tRNS, U = A ? A.length : 0; if (1 == u) for (var _ = 0; _ < n; _++) { var I = _ * o, q = _ * t; for (v = 0; v < t; v++) { var M = q + v << 2, T = 3 * (R = r[I + (v >> 3)] >> 7 - ((7 & v) << 0) & 1); s[M] = w[T], s[M + 1] = w[T + 1], s[M + 2] = w[T + 2], s[M + 3] = R < U ? A[R] : 255 } } if (2 == u) for (_ = 0; _ < n; _++)for (I = _ * o, q = _ * t, v = 0; v < t; v++) { M = q + v << 2, T = 3 * (R = r[I + (v >> 2)] >> 6 - ((3 & v) << 1) & 3); s[M] = w[T], s[M + 1] = w[T + 1], s[M + 2] = w[T + 2], s[M + 3] = R < U ? A[R] : 255 } if (4 == u) for (_ = 0; _ < n; _++)for (I = _ * o, q = _ * t, v = 0; v < t; v++) { M = q + v << 2, T = 3 * (R = r[I + (v >> 1)] >> 4 - ((1 & v) << 2) & 15); s[M] = w[T], s[M + 1] = w[T + 1], s[M + 2] = w[T + 2], s[M + 3] = R < U ? A[R] : 255 } if (8 == u) for (v = 0; v < i; v++) { var R; M = v << 2, T = 3 * (R = r[v]); s[M] = w[T], s[M + 1] = w[T + 1], s[M + 2] = w[T + 2], s[M + 3] = R < U ? A[R] : 255 } } else if (4 == c) { if (8 == u) for (v = 0; v < i; v++) { M = v << 2; var N = r[z = v << 1]; s[M] = N, s[M + 1] = N, s[M + 2] = N, s[M + 3] = r[z + 1] } if (16 == u) for (v = 0; v < i; v++) { var z; M = v << 2, N = r[z = v << 2]; s[M] = N, s[M + 1] = N, s[M + 2] = N, s[M + 3] = r[z + 2] } } else if (0 == c) { b = a.tabs.tRNS ? a.tabs.tRNS : -1; if (1 == u) for (v = 0; v < i; v++) { var P = (N = 255 * (r[v >> 3] >> 7 - (7 & v) & 1)) == 255 * b ? 0 : 255; l[v] = P << 24 | N << 16 | N << 8 | N } if (2 == u) for (v = 0; v < i; v++) { P = (N = 85 * (r[v >> 2] >> 6 - ((3 & v) << 1) & 3)) == 85 * b ? 0 : 255; l[v] = P << 24 | N << 16 | N << 8 | N } if (4 == u) for (v = 0; v < i; v++) { P = (N = 17 * (r[v >> 1] >> 4 - ((1 & v) << 2) & 15)) == 17 * b ? 0 : 255; l[v] = P << 24 | N << 16 | N << 8 | N } if (8 == u) for (v = 0; v < i; v++) { P = (N = r[v]) == b ? 0 : 255; l[v] = P << 24 | N << 16 | N << 8 | N } if (16 == u) for (v = 0; v < i; v++) { N = r[v << 1], P = d(r, v << 1) == b ? 0 : 255; l[v] = P << 24 | N << 16 | N << 8 | N } } return s }, e.decode = function (r) { for (var t, n = new Uint8Array(r), a = 8, i = e._bin, f = i.readUshort, o = i.readUint, s = { tabs: {}, frames: [] }, l = new Uint8Array(n.length), c = 0, u = 0, d = [137, 80, 78, 71, 13, 10, 26, 10], h = 0; h < 8; h++)if (n[h] != d[h]) throw "The input is not a PNG file!"; for (; a < n.length;) { var v = i.readUint(n, a); a += 4; var p = i.readASCII(n, a, 4); if (a += 4, "IHDR" == p) e.decode._IHDR(n, a, s); else if ("IDAT" == p) { for (h = 0; h < v; h++)l[c + h] = n[a + h]; c += v } else if ("acTL" == p) s.tabs[p] = { num_frames: o(n, a), num_plays: o(n, a + 4) }, t = new Uint8Array(n.length); else if ("fcTL" == p) { if (0 != u) { (I = s.frames[s.frames.length - 1]).data = e.decode._decompress(s, t.slice(0, u), I.rect.width, I.rect.height), u = 0 } var b = { x: o(n, a + 12), y: o(n, a + 16), width: o(n, a + 4), height: o(n, a + 8) }, g = f(n, a + 22); g = f(n, a + 20) / (0 == g ? 100 : g); var y = { rect: b, delay: Math.round(1e3 * g), dispose: n[a + 24], blend: n[a + 25] }; s.frames.push(y) } else if ("fdAT" == p) { for (h = 0; h < v - 4; h++)t[u + h] = n[a + h + 4]; u += v - 4 } else if ("pHYs" == p) s.tabs[p] = [i.readUint(n, a), i.readUint(n, a + 4), n[a + 8]]; else if ("cHRM" == p) { s.tabs[p] = []; for (h = 0; h < 8; h++)s.tabs[p].push(i.readUint(n, a + 4 * h)) } else if ("tEXt" == p) { null == s.tabs[p] && (s.tabs[p] = {}); var m = i.nextZero(n, a), w = i.readASCII(n, a, m - a), A = i.readASCII(n, m + 1, a + v - m - 1); s.tabs[p][w] = A } else if ("iTXt" == p) { null == s.tabs[p] && (s.tabs[p] = {}); m = 0; var U = a; m = i.nextZero(n, U); w = i.readASCII(n, U, m - U), n[U = m + 1], n[U + 1]; U += 2, m = i.nextZero(n, U); i.readASCII(n, U, m - U); U = m + 1, m = i.nextZero(n, U); i.readUTF8(n, U, m - U); U = m + 1; A = i.readUTF8(n, U, v - (U - a)); s.tabs[p][w] = A } else if ("PLTE" == p) s.tabs[p] = i.readBytes(n, a, v); else if ("hIST" == p) { var _ = s.tabs.PLTE.length / 3; s.tabs[p] = []; for (h = 0; h < _; h++)s.tabs[p].push(f(n, a + 2 * h)) } else if ("tRNS" == p) 3 == s.ctype ? s.tabs[p] = i.readBytes(n, a, v) : 0 == s.ctype ? s.tabs[p] = f(n, a) : 2 == s.ctype && (s.tabs[p] = [f(n, a), f(n, a + 2), f(n, a + 4)]); else if ("gAMA" == p) s.tabs[p] = i.readUint(n, a) / 1e5; else if ("sRGB" == p) s.tabs[p] = n[a]; else if ("bKGD" == p) 0 == s.ctype || 4 == s.ctype ? s.tabs[p] = [f(n, a)] : 2 == s.ctype || 6 == s.ctype ? s.tabs[p] = [f(n, a), f(n, a + 2), f(n, a + 4)] : 3 == s.ctype && (s.tabs[p] = n[a]); else if ("IEND" == p) { if (0 != u) { var I; (I = s.frames[s.frames.length - 1]).data = e.decode._decompress(s, t.slice(0, u), I.rect.width, I.rect.height), u = 0 } s.data = e.decode._decompress(s, l, s.width, s.height); break } a += v; i.readUint(n, a); a += 4 } return delete s.compress, delete s.interlace, delete s.filter, s }, e.decode._decompress = function (r, t, n, a) { return 0 == r.compress && (t = e.decode._inflate(t)), 0 == r.interlace ? t = e.decode._filterZero(t, r, 0, n, a) : 1 == r.interlace && (t = e.decode._readInterlace(t, r)), t }, e.decode._inflate = function (e) { return r.inflate(e) }, e.decode._readInterlace = function (r, t) { for (var n = t.width, a = t.height, i = e.decode._getBPP(t), f = i >> 3, o = Math.ceil(n * i / 8), s = new Uint8Array(a * o), l = 0, c = [0, 0, 4, 0, 2, 0, 1], u = [0, 4, 0, 2, 0, 1, 0], d = [8, 8, 8, 4, 4, 2, 2], h = [8, 8, 4, 4, 2, 2, 1], v = 0; v < 7;) { for (var p = d[v], b = h[v], g = 0, y = 0, m = c[v]; m < a;)m += p, y++; for (var w = u[v]; w < n;)w += b, g++; var A = Math.ceil(g * i / 8); e.decode._filterZero(r, t, l, g, y); for (var U = 0, _ = c[v]; _ < a;) { for (var I = u[v], q = l + U * A << 3; I < n;) { if (1 == i) { M = (M = r[q >> 3]) >> 7 - (7 & q) & 1, s[_ * o + (I >> 3)] |= M << 7 - ((3 & I) << 0) } if (2 == i) { M = (M = r[q >> 3]) >> 6 - (7 & q) & 3, s[_ * o + (I >> 2)] |= M << 6 - ((3 & I) << 1) } if (4 == i) { var M; M = (M = r[q >> 3]) >> 4 - (7 & q) & 15, s[_ * o + (I >> 1)] |= M << 4 - ((1 & I) << 2) } if (i >= 8) for (var T = _ * o + I * f, R = 0; R < f; R++)s[T + R] = r[(q >> 3) + R]; q += i, I += b } U++ , _ += p } g * y != 0 && (l += y * (1 + A)), v += 1 } return s }, e.decode._getBPP = function (e) { return [1, null, 3, 1, 2, null, 4][e.ctype] * e.depth }, e.decode._filterZero = function (r, t, n, a, i) { var f = e.decode._getBPP(t), o = Math.ceil(a * f / 8), s = e.decode._paeth; f = Math.ceil(f / 8); for (var l = 0; l < i; l++) { var c = n + l * o, u = c + l + 1, d = r[u - 1]; if (0 == d) for (var h = 0; h < o; h++)r[c + h] = r[u + h]; else if (1 == d) { for (h = 0; h < f; h++)r[c + h] = r[u + h]; for (h = f; h < o; h++)r[c + h] = r[u + h] + r[c + h - f] & 255 } else if (0 == l) { for (h = 0; h < f; h++)r[c + h] = r[u + h]; if (2 == d) for (h = f; h < o; h++)r[c + h] = 255 & r[u + h]; if (3 == d) for (h = f; h < o; h++)r[c + h] = r[u + h] + (r[c + h - f] >> 1) & 255; if (4 == d) for (h = f; h < o; h++)r[c + h] = r[u + h] + s(r[c + h - f], 0, 0) & 255 } else { if (2 == d) for (h = 0; h < o; h++)r[c + h] = r[u + h] + r[c + h - o] & 255; if (3 == d) { for (h = 0; h < f; h++)r[c + h] = r[u + h] + (r[c + h - o] >> 1) & 255; for (h = f; h < o; h++)r[c + h] = r[u + h] + (r[c + h - o] + r[c + h - f] >> 1) & 255 } if (4 == d) { for (h = 0; h < f; h++)r[c + h] = r[u + h] + s(0, r[c + h - o], 0) & 255; for (h = f; h < o; h++)r[c + h] = r[u + h] + s(r[c + h - f], r[c + h - o], r[c + h - f - o]) & 255 } } } return r }, e.decode._paeth = function (e, r, t) { var n = e + r - t, a = Math.abs(n - e), i = Math.abs(n - r), f = Math.abs(n - t); return a <= i && a <= f ? e : i <= f ? r : t }, e.decode._IHDR = function (r, t, n) { var a = e._bin; n.width = a.readUint(r, t), t += 4, n.height = a.readUint(r, t), t += 4, n.depth = r[t], t++ , n.ctype = r[t], t++ , n.compress = r[t], t++ , n.filter = r[t], t++ , n.interlace = r[t], t++ }, e._bin = { nextZero: function (e, r) { for (; 0 != e[r];)r++; return r }, readUshort: function (e, r) { return e[r] << 8 | e[r + 1] }, writeUshort: function (e, r, t) { e[r] = t >> 8 & 255, e[r + 1] = 255 & t }, readUint: function (e, r) { return 16777216 * e[r] + (e[r + 1] << 16 | e[r + 2] << 8 | e[r + 3]) }, writeUint: function (e, r, t) { e[r] = t >> 24 & 255, e[r + 1] = t >> 16 & 255, e[r + 2] = t >> 8 & 255, e[r + 3] = 255 & t }, readASCII: function (e, r, t) { for (var n = "", a = 0; a < t; a++)n += String.fromCharCode(e[r + a]); return n }, writeASCII: function (e, r, t) { for (var n = 0; n < t.length; n++)e[r + n] = t.charCodeAt(n) }, readBytes: function (e, r, t) { for (var n = [], a = 0; a < t; a++)n.push(e[r + a]); return n }, pad: function (e) { return e.length < 2 ? "0" + e : e }, readUTF8: function (r, t, n) { for (var a, i = "", f = 0; f < n; f++)i += "%" + e._bin.pad(r[t + f].toString(16)); try { a = decodeURIComponent(i) } catch (a) { return e._bin.readASCII(r, t, n) } return a } }, e._copyTile = function (e, r, t, n, a, i, f, o, s) { for (var l = Math.min(r, a), c = Math.min(t, i), u = 0, d = 0, h = 0; h < c; h++)for (var v = 0; v < l; v++)if (f >= 0 && o >= 0 ? (u = h * r + v << 2, d = (o + h) * a + f + v << 2) : (u = (-o + h) * r - f + v << 2, d = h * a + v << 2), 0 == s) n[d] = e[u], n[d + 1] = e[u + 1], n[d + 2] = e[u + 2], n[d + 3] = e[u + 3]; else if (1 == s) { var p = e[u + 3] * (1 / 255), b = e[u] * p, g = e[u + 1] * p, y = e[u + 2] * p, m = n[d + 3] * (1 / 255), w = n[d] * m, A = n[d + 1] * m, U = n[d + 2] * m, _ = 1 - p, I = p + m * _, q = 0 == I ? 0 : 1 / I; n[d + 3] = 255 * I, n[d + 0] = (b + w * _) * q, n[d + 1] = (g + A * _) * q, n[d + 2] = (y + U * _) * q } else if (2 == s) { p = e[u + 3], b = e[u], g = e[u + 1], y = e[u + 2], m = n[d + 3], w = n[d], A = n[d + 1], U = n[d + 2]; p == m && b == w && g == A && y == U ? (n[d] = 0, n[d + 1] = 0, n[d + 2] = 0, n[d + 3] = 0) : (n[d] = b, n[d + 1] = g, n[d + 2] = y, n[d + 3] = p) } else if (3 == s) { p = e[u + 3], b = e[u], g = e[u + 1], y = e[u + 2], m = n[d + 3], w = n[d], A = n[d + 1], U = n[d + 2]; if (p == m && b == w && g == A && y == U) continue; if (p < 220 && m > 20) return !1 } return !0 }, e.encode = function (r, t, n, a, i, f) { null == a && (a = 0), null == f && (f = !1); for (var o = new Uint8Array(r[0].byteLength * r.length + 100), s = [137, 80, 78, 71, 13, 10, 26, 10], l = 0; l < 8; l++)o[l] = s[l]; var c = 8, u = e._bin, d = e.crc.crc, h = u.writeUint, v = u.writeUshort, p = u.writeASCII, b = e.encode.compressPNG(r, t, n, a, f); h(o, c, 13), p(o, c += 4, "IHDR"), h(o, c += 4, t), h(o, c += 4, n), o[c += 4] = b.depth, o[++c] = b.ctype, o[++c] = 0, o[++c] = 0, o[++c] = 0, h(o, ++c, d(o, c - 17, 17)), h(o, c += 4, 1), p(o, c += 4, "sRGB"), o[c += 4] = 1, h(o, ++c, d(o, c - 5, 5)), c += 4; var g = r.length > 1; if (g && (h(o, c, 8), p(o, c += 4, "acTL"), h(o, c += 4, r.length), h(o, c += 4, 0), h(o, c += 4, d(o, c - 12, 12)), c += 4), 3 == b.ctype) { h(o, c, 3 * (M = b.plte.length)), p(o, c += 4, "PLTE"), c += 4; for (l = 0; l < M; l++) { var y = 3 * l, m = b.plte[l], w = 255 & m, A = m >> 8 & 255, U = m >> 16 & 255; o[c + y + 0] = w, o[c + y + 1] = A, o[c + y + 2] = U } if (c += 3 * M, h(o, c, d(o, c - 3 * M - 4, 3 * M + 4)), c += 4, b.gotAlpha) { h(o, c, M), p(o, c += 4, "tRNS"), c += 4; for (l = 0; l < M; l++)o[c + l] = b.plte[l] >> 24 & 255; h(o, c += M, d(o, c - M - 4, M + 4)), c += 4 } } for (var _ = 0, I = 0; I < b.frames.length; I++) { var q = b.frames[I]; g && (h(o, c, 26), p(o, c += 4, "fcTL"), h(o, c += 4, _++), h(o, c += 4, q.rect.width), h(o, c += 4, q.rect.height), h(o, c += 4, q.rect.x), h(o, c += 4, q.rect.y), v(o, c += 4, i[I]), v(o, c += 2, 1e3), o[c += 2] = q.dispose, o[++c] = q.blend, h(o, ++c, d(o, c - 30, 30)), c += 4); var M, T = q.cimg; h(o, c, (M = T.length) + (0 == I ? 0 : 4)); var R = c += 4; p(o, c, 0 == I ? "IDAT" : "fdAT"), c += 4, 0 != I && (h(o, c, _++), c += 4); for (l = 0; l < M; l++)o[c + l] = T[l]; h(o, c += M, d(o, R, c - R)), c += 4 } return h(o, c, 0), c += 4, p(o, c, "IEND"), c += 4, h(o, c, d(o, c - 4, 4)), c += 4, o.buffer.slice(0, c) }, e.encode.compressPNG = function (r, t, n, a, i) { for (var f = e.encode.compress(r, t, n, a, !1, i), o = 0; o < r.length; o++) { var s = f.frames[o], l = (s.rect.width, s.rect.height), c = s.bpl, u = s.bpp, d = new Uint8Array(l * c + l); s.cimg = e.encode._filterZero(s.img, l, u, c, d) } return f }, e.encode.compress = function (r, t, n, a, i, f) { null == f && (f = !1); for (var o = 6, s = 8, l = 4, c = 255, u = 0; u < r.length; u++)for (var d = new Uint8Array(r[u]), h = d.length, v = 0; v < h; v += 4)c &= d[v + 3]; var p = 255 != c, b = {}, g = []; if (0 != r.length && (b[0] = 0, g.push(0), 0 != a && a--), 0 != a) { var y = e.quantize(r, a, i); r = y.bufs; for (v = 0; v < y.plte.length; v++) { null == b[w = y.plte[v].est.rgba] && (b[w] = g.length, g.push(w)) } } else for (u = 0; u < r.length; u++) { var m = new Uint32Array(r[u]); for (h = m.length, v = 0; v < h; v++) { var w = m[v]; if ((v < t || w != m[v - 1] && w != m[v - t]) && null == b[w] && (b[w] = g.length, g.push(w), g.length >= 300)) break } } var A = !!p && i, U = g.length; U <= 256 && 0 == f && (s = U <= 2 ? 1 : U <= 4 ? 2 : U <= 16 ? 4 : 8, i && (s = 8), p = !0); var _ = []; for (u = 0; u < r.length; u++) { var I = new Uint8Array(r[u]), q = new Uint32Array(I.buffer), M = 0, T = 0, R = t, N = n, z = 0; if (0 != u && !A) { for (var P = i || 1 == u || 2 == _[_.length - 2].dispose ? 1 : 2, S = 0, L = 1e9, C = 0; C < P; C++) { for (var D = new Uint8Array(r[u - 1 - C]), B = new Uint32Array(r[u - 1 - C]), x = t, G = n, Z = -1, k = -1, E = 0; E < n; E++)for (var H = 0; H < t; H++) { q[v = E * t + H] != B[v] && (H < x && (x = H), H > Z && (Z = H), E < G && (G = E), E > k && (k = E)) } var F = -1 == Z ? 1 : (Z - x + 1) * (k - G + 1); F < L && (L = F, S = C, -1 == Z ? (M = T = 0, R = N = 1) : (M = x, T = G, R = Z - x + 1, N = k - G + 1)) } D = new Uint8Array(r[u - 1 - S]); 1 == S && (_[_.length - 1].dispose = 2); var V = new Uint8Array(R * N * 4); new Uint32Array(V.buffer); e._copyTile(D, t, n, V, R, N, -M, -T, 0), e._copyTile(I, t, n, V, R, N, -M, -T, 3) ? (e._copyTile(I, t, n, V, R, N, -M, -T, 2), z = 1) : (e._copyTile(I, t, n, V, R, N, -M, -T, 0), z = 0), I = V, q = new Uint32Array(I.buffer) } var X = 4 * R; if (U <= 256 && 0 == f) { X = Math.ceil(s * R / 8); for (V = new Uint8Array(X * N), E = 0; E < N; E++) { v = E * X; var j = E * R; if (8 == s) for (H = 0; H < R; H++)V[v + H] = b[q[j + H]]; else if (4 == s) for (H = 0; H < R; H++)V[v + (H >> 1)] |= b[q[j + H]] << 4 - 4 * (1 & H); else if (2 == s) for (H = 0; H < R; H++)V[v + (H >> 2)] |= b[q[j + H]] << 6 - 2 * (3 & H); else if (1 == s) for (H = 0; H < R; H++)V[v + (H >> 3)] |= b[q[j + H]] << 7 - 1 * (7 & H) } I = V, o = 3, l = 1 } else if (0 == p && 1 == r.length) { V = new Uint8Array(R * N * 3); var K = R * N; for (v = 0; v < K; v++) { var Y = 3 * v, J = 4 * v; V[Y] = I[J], V[Y + 1] = I[J + 1], V[Y + 2] = I[J + 2] } I = V, o = 2, l = 3, X = 3 * R } _.push({ rect: { x: M, y: T, width: R, height: N }, img: I, bpl: X, bpp: l, blend: z, dispose: A ? 1 : 0 }) } return { ctype: o, depth: s, plte: g, gotAlpha: p, frames: _ } }, e.encode._filterZero = function (t, n, a, i, f) { for (var o = [], s = 0; s < 5; s++)if (!(n * i > 5e5) || 2 != s && 3 != s && 4 != s) { for (var l = 0; l < n; l++)e.encode._filterLine(f, t, l, i, a, s); if (o.push(r.deflate(f)), 1 == a) break } for (var c, u = 1e9, d = 0; d < o.length; d++)o[d].length < u && (c = d, u = o[d].length); return o[c] }, e.encode._filterLine = function (r, t, n, a, i, f) { var o = n * a, s = o + n, l = e.decode._paeth; if (r[s] = f, s++ , 0 == f) for (var c = 0; c < a; c++)r[s + c] = t[o + c]; else if (1 == f) { for (c = 0; c < i; c++)r[s + c] = t[o + c]; for (c = i; c < a; c++)r[s + c] = t[o + c] - t[o + c - i] + 256 & 255 } else if (0 == n) { for (c = 0; c < i; c++)r[s + c] = t[o + c]; if (2 == f) for (c = i; c < a; c++)r[s + c] = t[o + c]; if (3 == f) for (c = i; c < a; c++)r[s + c] = t[o + c] - (t[o + c - i] >> 1) + 256 & 255; if (4 == f) for (c = i; c < a; c++)r[s + c] = t[o + c] - l(t[o + c - i], 0, 0) + 256 & 255 } else { if (2 == f) for (c = 0; c < a; c++)r[s + c] = t[o + c] + 256 - t[o + c - a] & 255; if (3 == f) { for (c = 0; c < i; c++)r[s + c] = t[o + c] + 256 - (t[o + c - a] >> 1) & 255; for (c = i; c < a; c++)r[s + c] = t[o + c] + 256 - (t[o + c - a] + t[o + c - i] >> 1) & 255 } if (4 == f) { for (c = 0; c < i; c++)r[s + c] = t[o + c] + 256 - l(0, t[o + c - a], 0) & 255; for (c = i; c < a; c++)r[s + c] = t[o + c] + 256 - l(t[o + c - i], t[o + c - a], t[o + c - i - a]) & 255 } } }, e.crc = { table: function () { for (var e = new Uint32Array(256), r = 0; r < 256; r++) { for (var t = r, n = 0; n < 8; n++)1 & t ? t = 3988292384 ^ t >>> 1 : t >>>= 1; e[r] = t } return e }(), update: function (r, t, n, a) { for (var i = 0; i < a; i++)r = e.crc.table[255 & (r ^ t[n + i])] ^ r >>> 8; return r }, crc: function (r, t, n) { return 4294967295 ^ e.crc.update(4294967295, r, t, n) } }, e.quantize = function (r, t, n) { for (var a = [], i = 0, f = 0; f < r.length; f++)a.push(e.encode.alphaMul(new Uint8Array(r[f]), n)), i += r[f].byteLength; var o = new Uint8Array(i), s = new Uint32Array(o.buffer), l = 0; for (f = 0; f < a.length; f++) { for (var c = a[f], u = c.length, d = 0; d < u; d++)o[l + d] = c[d]; l += u } var h = { i0: 0, i1: o.length, bst: null, est: null, tdst: 0, left: null, right: null }; h.bst = e.quantize.stats(o, h.i0, h.i1), h.est = e.quantize.estats(h.bst); for (var v = [h]; v.length < t;) { var p = 0, b = 0; for (f = 0; f < v.length; f++)v[f].est.L > p && (p = v[f].est.L, b = f); if (p < .001) break; var g = v[b], y = e.quantize.splitPixels(o, s, g.i0, g.i1, g.est.e, g.est.eMq255), m = { i0: g.i0, i1: y, bst: null, est: null, tdst: 0, left: null, right: null }; m.bst = e.quantize.stats(o, m.i0, m.i1), m.est = e.quantize.estats(m.bst); var w = { i0: y, i1: g.i1, bst: null, est: null, tdst: 0, left: null, right: null }; w.bst = { R: [], m: [], N: g.bst.N - m.bst.N }; for (f = 0; f < 16; f++)w.bst.R[f] = g.bst.R[f] - m.bst.R[f]; for (f = 0; f < 4; f++)w.bst.m[f] = g.bst.m[f] - m.bst.m[f]; w.est = e.quantize.estats(w.bst), g.left = m, g.right = w, v[b] = m, v.push(w) } v.sort(function (e, r) { return r.bst.N - e.bst.N }); for (var A = 0; A < a.length; A++) { var U = e.quantize.planeDst, _ = new Uint8Array(a[A].buffer), I = new Uint32Array(a[A].buffer), q = _.length; for (f = 0; f < q; f += 4) { for (var M = _[f] * (1 / 255), T = _[f + 1] * (1 / 255), R = _[f + 2] * (1 / 255), N = _[f + 3] * (1 / 255), z = h; z.left;)z = U(z.est, M, T, R, N) <= 0 ? z.left : z.right; I[f >> 2] = z.est.rgba } a[A] = I.buffer } return { bufs: a, plte: v } }, e.quantize.getNearest = function (r, t, n, a, i) { if (null == r.left) return r.tdst = e.quantize.dist(r.est.q, t, n, a, i), r; var f = e.quantize.planeDst(r.est, t, n, a, i), o = r.left, s = r.right; f > 0 && (o = r.right, s = r.left); var l = e.quantize.getNearest(o, t, n, a, i); if (l.tdst <= f * f) return l; var c = e.quantize.getNearest(s, t, n, a, i); return c.tdst < l.tdst ? c : l }, e.quantize.planeDst = function (e, r, t, n, a) { var i = e.e; return i[0] * r + i[1] * t + i[2] * n + i[3] * a - e.eMq }, e.quantize.dist = function (e, r, t, n, a) { var i = r - e[0], f = t - e[1], o = n - e[2], s = a - e[3]; return i * i + f * f + o * o + s * s }, e.quantize.splitPixels = function (r, t, n, a, i, f) { var o = e.quantize.vecDot; a -= 4; for (; n < a;) { for (; o(r, n, i) <= f;)n += 4; for (; o(r, a, i) > f;)a -= 4; if (n >= a) break; var s = t[n >> 2]; t[n >> 2] = t[a >> 2], t[a >> 2] = s, n += 4, a -= 4 } for (; o(r, n, i) > f;)n -= 4; return n + 4 }, e.quantize.vecDot = function (e, r, t) { return e[r] * t[0] + e[r + 1] * t[1] + e[r + 2] * t[2] + e[r + 3] * t[3] }, e.quantize.stats = function (e, r, t) { for (var n = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], a = [0, 0, 0, 0], i = t - r >> 2, f = r; f < t; f += 4) { var o = e[f] * (1 / 255), s = e[f + 1] * (1 / 255), l = e[f + 2] * (1 / 255), c = e[f + 3] * (1 / 255); a[0] += o, a[1] += s, a[2] += l, a[3] += c, n[0] += o * o, n[1] += o * s, n[2] += o * l, n[3] += o * c, n[5] += s * s, n[6] += s * l, n[7] += s * c, n[10] += l * l, n[11] += l * c, n[15] += c * c } return n[4] = n[1], n[8] = n[2], n[12] = n[3], n[9] = n[6], n[13] = n[7], n[14] = n[11], { R: n, m: a, N: i } }, e.quantize.estats = function (r) { var t = r.R, n = r.m, a = r.N, i = n[0], f = n[1], o = n[2], s = n[3], l = 0 == a ? 0 : 1 / a, c = [t[0] - i * i * l, t[1] - i * f * l, t[2] - i * o * l, t[3] - i * s * l, t[4] - f * i * l, t[5] - f * f * l, t[6] - f * o * l, t[7] - f * s * l, t[8] - o * i * l, t[9] - o * f * l, t[10] - o * o * l, t[11] - o * s * l, t[12] - s * i * l, t[13] - s * f * l, t[14] - s * o * l, t[15] - s * s * l], u = c, d = e.M4, h = [.5, .5, .5, .5], v = 0, p = 0; if (0 != a) for (var b = 0; b < 10 && (h = d.multVec(u, h), p = Math.sqrt(d.dot(h, h)), h = d.sml(1 / p, h), !(Math.abs(p - v) < 1e-9)); b++)v = p; var g = [i * l, f * l, o * l, s * l], y = d.dot(d.sml(255, g), h), m = g[3] < .001 ? 0 : 1 / g[3]; return { Cov: c, q: g, e: h, L: v, eMq255: y, eMq: d.dot(h, g), rgba: (Math.round(255 * g[3]) << 24 | Math.round(255 * g[2] * m) << 16 | Math.round(255 * g[1] * m) << 8 | Math.round(255 * g[0] * m) << 0) >>> 0 } }, e.M4 = { multVec: function (e, r) { return [e[0] * r[0] + e[1] * r[1] + e[2] * r[2] + e[3] * r[3], e[4] * r[0] + e[5] * r[1] + e[6] * r[2] + e[7] * r[3], e[8] * r[0] + e[9] * r[1] + e[10] * r[2] + e[11] * r[3], e[12] * r[0] + e[13] * r[1] + e[14] * r[2] + e[15] * r[3]] }, dot: function (e, r) { return e[0] * r[0] + e[1] * r[1] + e[2] * r[2] + e[3] * r[3] }, sml: function (e, r) { return [e * r[0], e * r[1], e * r[2], e * r[3]] } }, e.encode.alphaMul = function (e, r) { for (var t = new Uint8Array(e.length), n = e.length >> 2, a = 0; a < n; a++) { var i = a << 2, f = e[i + 3]; r && (f = f < 128 ? 0 : 255); var o = f * (1 / 255); t[i + 0] = e[i + 0] * o, t[i + 1] = e[i + 1] * o, t[i + 2] = e[i + 2] * o, t[i + 3] = f } return t } }(e, "function" == typeof require ? require("pako") : window.pako) }();

pako.js

!function (t) { if ("object" == typeof exports && "undefined" != typeof module) module.exports = t(); else if ("function" == typeof define && define.amd) define([], t); else { ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).pako = t() } }(function () { return function t(e, a, i) { function n(s, o) { if (!a[s]) { if (!e[s]) { var l = "function" == typeof require && require; if (!o && l) return l(s, !0); if (r) return r(s, !0); var h = new Error("Cannot find module '" + s + "'"); throw h.code = "MODULE_NOT_FOUND", h } var d = a[s] = { exports: {} }; e[s][0].call(d.exports, function (t) { var a = e[s][1][t]; return n(a || t) }, d, d.exports, t, e, a, i) } return a[s].exports } for (var r = "function" == typeof require && require, s = 0; s < i.length; s++)n(i[s]); return n }({ 1: [function (t, e, a) { "use strict"; function i(t) { if (!(this instanceof i)) return new i(t); this.options = s.assign({ level: _, method: c, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: u, to: "" }, t || {}); var e = this.options; e.raw && e.windowBits > 0 ? e.windowBits = -e.windowBits : e.gzip && e.windowBits > 0 && e.windowBits < 16 && (e.windowBits += 16), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new h, this.strm.avail_out = 0; var a = r.deflateInit2(this.strm, e.level, e.method, e.windowBits, e.memLevel, e.strategy); if (a !== f) throw new Error(l[a]); if (e.header && r.deflateSetHeader(this.strm, e.header), e.dictionary) { var n; if (n = "string" == typeof e.dictionary ? o.string2buf(e.dictionary) : "[object ArrayBuffer]" === d.call(e.dictionary) ? new Uint8Array(e.dictionary) : e.dictionary, (a = r.deflateSetDictionary(this.strm, n)) !== f) throw new Error(l[a]); this._dict_set = !0 } } function n(t, e) { var a = new i(e); if (a.push(t, !0), a.err) throw a.msg || l[a.err]; return a.result } var r = t("./zlib/deflate"), s = t("./utils/common"), o = t("./utils/strings"), l = t("./zlib/messages"), h = t("./zlib/zstream"), d = Object.prototype.toString, f = 0, _ = -1, u = 0, c = 8; i.prototype.push = function (t, e) { var a, i, n = this.strm, l = this.options.chunkSize; if (this.ended) return !1; i = e === ~~e ? e : !0 === e ? 4 : 0, "string" == typeof t ? n.input = o.string2buf(t) : "[object ArrayBuffer]" === d.call(t) ? n.input = new Uint8Array(t) : n.input = t, n.next_in = 0, n.avail_in = n.input.length; do { if (0 === n.avail_out && (n.output = new s.Buf8(l), n.next_out = 0, n.avail_out = l), 1 !== (a = r.deflate(n, i)) && a !== f) return this.onEnd(a), this.ended = !0, !1; 0 !== n.avail_out && (0 !== n.avail_in || 4 !== i && 2 !== i) || ("string" === this.options.to ? this.onData(o.buf2binstring(s.shrinkBuf(n.output, n.next_out))) : this.onData(s.shrinkBuf(n.output, n.next_out))) } while ((n.avail_in > 0 || 0 === n.avail_out) && 1 !== a); return 4 === i ? (a = r.deflateEnd(this.strm), this.onEnd(a), this.ended = !0, a === f) : 2 !== i || (this.onEnd(f), n.avail_out = 0, !0) }, i.prototype.onData = function (t) { this.chunks.push(t) }, i.prototype.onEnd = function (t) { t === f && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = s.flattenChunks(this.chunks)), this.chunks = [], this.err = t, this.msg = this.strm.msg }, a.Deflate = i, a.deflate = n, a.deflateRaw = function (t, e) { return e = e || {}, e.raw = !0, n(t, e) }, a.gzip = function (t, e) { return e = e || {}, e.gzip = !0, n(t, e) } }, { "./utils/common": 3, "./utils/strings": 4, "./zlib/deflate": 8, "./zlib/messages": 13, "./zlib/zstream": 15 }], 2: [function (t, e, a) { "use strict"; function i(t) { if (!(this instanceof i)) return new i(t); this.options = s.assign({ chunkSize: 16384, windowBits: 0, to: "" }, t || {}); var e = this.options; e.raw && e.windowBits >= 0 && e.windowBits < 16 && (e.windowBits = -e.windowBits, 0 === e.windowBits && (e.windowBits = -15)), !(e.windowBits >= 0 && e.windowBits < 16) || t && t.windowBits || (e.windowBits += 32), e.windowBits > 15 && e.windowBits < 48 && 0 == (15 & e.windowBits) && (e.windowBits |= 15), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new d, this.strm.avail_out = 0; var a = r.inflateInit2(this.strm, e.windowBits); if (a !== l.Z_OK) throw new Error(h[a]); this.header = new f, r.inflateGetHeader(this.strm, this.header) } function n(t, e) { var a = new i(e); if (a.push(t, !0), a.err) throw a.msg || h[a.err]; return a.result } var r = t("./zlib/inflate"), s = t("./utils/common"), o = t("./utils/strings"), l = t("./zlib/constants"), h = t("./zlib/messages"), d = t("./zlib/zstream"), f = t("./zlib/gzheader"), _ = Object.prototype.toString; i.prototype.push = function (t, e) { var a, i, n, h, d, f, u = this.strm, c = this.options.chunkSize, b = this.options.dictionary, g = !1; if (this.ended) return !1; i = e === ~~e ? e : !0 === e ? l.Z_FINISH : l.Z_NO_FLUSH, "string" == typeof t ? u.input = o.binstring2buf(t) : "[object ArrayBuffer]" === _.call(t) ? u.input = new Uint8Array(t) : u.input = t, u.next_in = 0, u.avail_in = u.input.length; do { if (0 === u.avail_out && (u.output = new s.Buf8(c), u.next_out = 0, u.avail_out = c), (a = r.inflate(u, l.Z_NO_FLUSH)) === l.Z_NEED_DICT && b && (f = "string" == typeof b ? o.string2buf(b) : "[object ArrayBuffer]" === _.call(b) ? new Uint8Array(b) : b, a = r.inflateSetDictionary(this.strm, f)), a === l.Z_BUF_ERROR && !0 === g && (a = l.Z_OK, g = !1), a !== l.Z_STREAM_END && a !== l.Z_OK) return this.onEnd(a), this.ended = !0, !1; u.next_out && (0 !== u.avail_out && a !== l.Z_STREAM_END && (0 !== u.avail_in || i !== l.Z_FINISH && i !== l.Z_SYNC_FLUSH) || ("string" === this.options.to ? (n = o.utf8border(u.output, u.next_out), h = u.next_out - n, d = o.buf2string(u.output, n), u.next_out = h, u.avail_out = c - h, h && s.arraySet(u.output, u.output, n, h, 0), this.onData(d)) : this.onData(s.shrinkBuf(u.output, u.next_out)))), 0 === u.avail_in && 0 === u.avail_out && (g = !0) } while ((u.avail_in > 0 || 0 === u.avail_out) && a !== l.Z_STREAM_END); return a === l.Z_STREAM_END && (i = l.Z_FINISH), i === l.Z_FINISH ? (a = r.inflateEnd(this.strm), this.onEnd(a), this.ended = !0, a === l.Z_OK) : i !== l.Z_SYNC_FLUSH || (this.onEnd(l.Z_OK), u.avail_out = 0, !0) }, i.prototype.onData = function (t) { this.chunks.push(t) }, i.prototype.onEnd = function (t) { t === l.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = s.flattenChunks(this.chunks)), this.chunks = [], this.err = t, this.msg = this.strm.msg }, a.Inflate = i, a.inflate = n, a.inflateRaw = function (t, e) { return e = e || {}, e.raw = !0, n(t, e) }, a.ungzip = n }, { "./utils/common": 3, "./utils/strings": 4, "./zlib/constants": 6, "./zlib/gzheader": 9, "./zlib/inflate": 11, "./zlib/messages": 13, "./zlib/zstream": 15 }], 3: [function (t, e, a) { "use strict"; function i(t, e) { return Object.prototype.hasOwnProperty.call(t, e) } var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; a.assign = function (t) { for (var e = Array.prototype.slice.call(arguments, 1); e.length;) { var a = e.shift(); if (a) { if ("object" != typeof a) throw new TypeError(a + "must be non-object"); for (var n in a) i(a, n) && (t[n] = a[n]) } } return t }, a.shrinkBuf = function (t, e) { return t.length === e ? t : t.subarray ? t.subarray(0, e) : (t.length = e, t) }; var r = { arraySet: function (t, e, a, i, n) { if (e.subarray && t.subarray) t.set(e.subarray(a, a + i), n); else for (var r = 0; r < i; r++)t[n + r] = e[a + r] }, flattenChunks: function (t) { var e, a, i, n, r, s; for (i = 0, e = 0, a = t.length; e < a; e++)i += t[e].length; for (s = new Uint8Array(i), n = 0, e = 0, a = t.length; e < a; e++)r = t[e], s.set(r, n), n += r.length; return s } }, s = { arraySet: function (t, e, a, i, n) { for (var r = 0; r < i; r++)t[n + r] = e[a + r] }, flattenChunks: function (t) { return [].concat.apply([], t) } }; a.setTyped = function (t) { t ? (a.Buf8 = Uint8Array, a.Buf16 = Uint16Array, a.Buf32 = Int32Array, a.assign(a, r)) : (a.Buf8 = Array, a.Buf16 = Array, a.Buf32 = Array, a.assign(a, s)) }, a.setTyped(n) }, {}], 4: [function (t, e, a) { "use strict"; function i(t, e) { if (e < 65537 && (t.subarray && s || !t.subarray && r)) return String.fromCharCode.apply(null, n.shrinkBuf(t, e)); for (var a = "", i = 0; i < e; i++)a += String.fromCharCode(t[i]); return a } var n = t("./common"), r = !0, s = !0; try { String.fromCharCode.apply(null, [0]) } catch (t) { r = !1 } try { String.fromCharCode.apply(null, new Uint8Array(1)) } catch (t) { s = !1 } for (var o = new n.Buf8(256), l = 0; l < 256; l++)o[l] = l >= 252 ? 6 : l >= 248 ? 5 : l >= 240 ? 4 : l >= 224 ? 3 : l >= 192 ? 2 : 1; o[254] = o[254] = 1, a.string2buf = function (t) { var e, a, i, r, s, o = t.length, l = 0; for (r = 0; r < o; r++)55296 == (64512 & (a = t.charCodeAt(r))) && r + 1 < o && 56320 == (64512 & (i = t.charCodeAt(r + 1))) && (a = 65536 + (a - 55296 << 10) + (i - 56320), r++), l += a < 128 ? 1 : a < 2048 ? 2 : a < 65536 ? 3 : 4; for (e = new n.Buf8(l), s = 0, r = 0; s < l; r++)55296 == (64512 & (a = t.charCodeAt(r))) && r + 1 < o && 56320 == (64512 & (i = t.charCodeAt(r + 1))) && (a = 65536 + (a - 55296 << 10) + (i - 56320), r++), a < 128 ? e[s++] = a : a < 2048 ? (e[s++] = 192 | a >>> 6, e[s++] = 128 | 63 & a) : a < 65536 ? (e[s++] = 224 | a >>> 12, e[s++] = 128 | a >>> 6 & 63, e[s++] = 128 | 63 & a) : (e[s++] = 240 | a >>> 18, e[s++] = 128 | a >>> 12 & 63, e[s++] = 128 | a >>> 6 & 63, e[s++] = 128 | 63 & a); return e }, a.buf2binstring = function (t) { return i(t, t.length) }, a.binstring2buf = function (t) { for (var e = new n.Buf8(t.length), a = 0, i = e.length; a < i; a++)e[a] = t.charCodeAt(a); return e }, a.buf2string = function (t, e) { var a, n, r, s, l = e || t.length, h = new Array(2 * l); for (n = 0, a = 0; a < l;)if ((r = t[a++]) < 128) h[n++] = r; else if ((s = o[r]) > 4) h[n++] = 65533, a += s - 1; else { for (r &= 2 === s ? 31 : 3 === s ? 15 : 7; s > 1 && a < l;)r = r << 6 | 63 & t[a++], s--; s > 1 ? h[n++] = 65533 : r < 65536 ? h[n++] = r : (r -= 65536, h[n++] = 55296 | r >> 10 & 1023, h[n++] = 56320 | 1023 & r) } return i(h, n) }, a.utf8border = function (t, e) { var a; for ((e = e || t.length) > t.length && (e = t.length), a = e - 1; a >= 0 && 128 == (192 & t[a]);)a--; return a < 0 ? e : 0 === a ? e : a + o[t[a]] > e ? a : e } }, { "./common": 3 }], 5: [function (t, e, a) { "use strict"; e.exports = function (t, e, a, i) { for (var n = 65535 & t | 0, r = t >>> 16 & 65535 | 0, s = 0; 0 !== a;) { a -= s = a > 2e3 ? 2e3 : a; do { r = r + (n = n + e[i++] | 0) | 0 } while (--s); n %= 65521, r %= 65521 } return n | r << 16 | 0 } }, {}], 6: [function (t, e, a) { "use strict"; e.exports = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 } }, {}], 7: [function (t, e, a) { "use strict"; var i = function () { for (var t, e = [], a = 0; a < 256; a++) { t = a; for (var i = 0; i < 8; i++)t = 1 & t ? 3988292384 ^ t >>> 1 : t >>> 1; e[a] = t } return e }(); e.exports = function (t, e, a, n) { var r = i, s = n + a; t ^= -1; for (var o = n; o < s; o++)t = t >>> 8 ^ r[255 & (t ^ e[o])]; return -1 ^ t } }, {}], 8: [function (t, e, a) { "use strict"; function i(t, e) { return t.msg = A[e], e } function n(t) { return (t << 1) - (t > 4 ? 9 : 0) } function r(t) { for (var e = t.length; --e >= 0;)t[e] = 0 } function s(t) { var e = t.state, a = e.pending; a > t.avail_out && (a = t.avail_out), 0 !== a && (z.arraySet(t.output, e.pending_buf, e.pending_out, a, t.next_out), t.next_out += a, e.pending_out += a, t.total_out += a, t.avail_out -= a, e.pending -= a, 0 === e.pending && (e.pending_out = 0)) } function o(t, e) { B._tr_flush_block(t, t.block_start >= 0 ? t.block_start : -1, t.strstart - t.block_start, e), t.block_start = t.strstart, s(t.strm) } function l(t, e) { t.pending_buf[t.pending++] = e } function h(t, e) { t.pending_buf[t.pending++] = e >>> 8 & 255, t.pending_buf[t.pending++] = 255 & e } function d(t, e, a, i) { var n = t.avail_in; return n > i && (n = i), 0 === n ? 0 : (t.avail_in -= n, z.arraySet(e, t.input, t.next_in, n, a), 1 === t.state.wrap ? t.adler = S(t.adler, e, n, a) : 2 === t.state.wrap && (t.adler = E(t.adler, e, n, a)), t.next_in += n, t.total_in += n, n) } function f(t, e) { var a, i, n = t.max_chain_length, r = t.strstart, s = t.prev_length, o = t.nice_match, l = t.strstart > t.w_size - it ? t.strstart - (t.w_size - it) : 0, h = t.window, d = t.w_mask, f = t.prev, _ = t.strstart + at, u = h[r + s - 1], c = h[r + s]; t.prev_length >= t.good_match && (n >>= 2), o > t.lookahead && (o = t.lookahead); do { if (a = e, h[a + s] === c && h[a + s - 1] === u && h[a] === h[r] && h[++a] === h[r + 1]) { r += 2, a++; do { } while (h[++r] === h[++a] && h[++r] === h[++a] && h[++r] === h[++a] && h[++r] === h[++a] && h[++r] === h[++a] && h[++r] === h[++a] && h[++r] === h[++a] && h[++r] === h[++a] && r < _); if (i = at - (_ - r), r = _ - at, i > s) { if (t.match_start = e, s = i, i >= o) break; u = h[r + s - 1], c = h[r + s] } } } while ((e = f[e & d]) > l && 0 != --n); return s <= t.lookahead ? s : t.lookahead } function _(t) { var e, a, i, n, r, s = t.w_size; do { if (n = t.window_size - t.lookahead - t.strstart, t.strstart >= s + (s - it)) { z.arraySet(t.window, t.window, s, s, 0), t.match_start -= s, t.strstart -= s, t.block_start -= s, e = a = t.hash_size; do { i = t.head[--e], t.head[e] = i >= s ? i - s : 0 } while (--a); e = a = s; do { i = t.prev[--e], t.prev[e] = i >= s ? i - s : 0 } while (--a); n += s } if (0 === t.strm.avail_in) break; if (a = d(t.strm, t.window, t.strstart + t.lookahead, n), t.lookahead += a, t.lookahead + t.insert >= et) for (r = t.strstart - t.insert, t.ins_h = t.window[r], t.ins_h = (t.ins_h << t.hash_shift ^ t.window[r + 1]) & t.hash_mask; t.insert && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[r + et - 1]) & t.hash_mask, t.prev[r & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = r, r++ , t.insert-- , !(t.lookahead + t.insert < et));); } while (t.lookahead < it && 0 !== t.strm.avail_in) } function u(t, e) { for (var a, i; ;) { if (t.lookahead < it) { if (_(t), t.lookahead < it && e === Z) return _t; if (0 === t.lookahead) break } if (a = 0, t.lookahead >= et && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + et - 1]) & t.hash_mask, a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), 0 !== a && t.strstart - a <= t.w_size - it && (t.match_length = f(t, a)), t.match_length >= et) if (i = B._tr_tally(t, t.strstart - t.match_start, t.match_length - et), t.lookahead -= t.match_length, t.match_length <= t.max_lazy_match && t.lookahead >= et) { t.match_length--; do { t.strstart++ , t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + et - 1]) & t.hash_mask, a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart } while (0 != --t.match_length); t.strstart++ } else t.strstart += t.match_length, t.match_length = 0, t.ins_h = t.window[t.strstart], t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + 1]) & t.hash_mask; else i = B._tr_tally(t, 0, t.window[t.strstart]), t.lookahead-- , t.strstart++; if (i && (o(t, !1), 0 === t.strm.avail_out)) return _t } return t.insert = t.strstart < et - 1 ? t.strstart : et - 1, e === N ? (o(t, !0), 0 === t.strm.avail_out ? ct : bt) : t.last_lit && (o(t, !1), 0 === t.strm.avail_out) ? _t : ut } function c(t, e) { for (var a, i, n; ;) { if (t.lookahead < it) { if (_(t), t.lookahead < it && e === Z) return _t; if (0 === t.lookahead) break } if (a = 0, t.lookahead >= et && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + et - 1]) & t.hash_mask, a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), t.prev_length = t.match_length, t.prev_match = t.match_start, t.match_length = et - 1, 0 !== a && t.prev_length < t.max_lazy_match && t.strstart - a <= t.w_size - it && (t.match_length = f(t, a), t.match_length <= 5 && (t.strategy === H || t.match_length === et && t.strstart - t.match_start > 4096) && (t.match_length = et - 1)), t.prev_length >= et && t.match_length <= t.prev_length) { n = t.strstart + t.lookahead - et, i = B._tr_tally(t, t.strstart - 1 - t.prev_match, t.prev_length - et), t.lookahead -= t.prev_length - 1, t.prev_length -= 2; do { ++t.strstart <= n && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + et - 1]) & t.hash_mask, a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart) } while (0 != --t.prev_length); if (t.match_available = 0, t.match_length = et - 1, t.strstart++ , i && (o(t, !1), 0 === t.strm.avail_out)) return _t } else if (t.match_available) { if ((i = B._tr_tally(t, 0, t.window[t.strstart - 1])) && o(t, !1), t.strstart++ , t.lookahead-- , 0 === t.strm.avail_out) return _t } else t.match_available = 1, t.strstart++ , t.lookahead-- } return t.match_available && (i = B._tr_tally(t, 0, t.window[t.strstart - 1]), t.match_available = 0), t.insert = t.strstart < et - 1 ? t.strstart : et - 1, e === N ? (o(t, !0), 0 === t.strm.avail_out ? ct : bt) : t.last_lit && (o(t, !1), 0 === t.strm.avail_out) ? _t : ut } function b(t, e) { for (var a, i, n, r, s = t.window; ;) { if (t.lookahead <= at) { if (_(t), t.lookahead <= at && e === Z) return _t; if (0 === t.lookahead) break } if (t.match_length = 0, t.lookahead >= et && t.strstart > 0 && (n = t.strstart - 1, (i = s[n]) === s[++n] && i === s[++n] && i === s[++n])) { r = t.strstart + at; do { } while (i === s[++n] && i === s[++n] && i === s[++n] && i === s[++n] && i === s[++n] && i === s[++n] && i === s[++n] && i === s[++n] && n < r); t.match_length = at - (r - n), t.match_length > t.lookahead && (t.match_length = t.lookahead) } if (t.match_length >= et ? (a = B._tr_tally(t, 1, t.match_length - et), t.lookahead -= t.match_length, t.strstart += t.match_length, t.match_length = 0) : (a = B._tr_tally(t, 0, t.window[t.strstart]), t.lookahead-- , t.strstart++), a && (o(t, !1), 0 === t.strm.avail_out)) return _t } return t.insert = 0, e === N ? (o(t, !0), 0 === t.strm.avail_out ? ct : bt) : t.last_lit && (o(t, !1), 0 === t.strm.avail_out) ? _t : ut } function g(t, e) { for (var a; ;) { if (0 === t.lookahead && (_(t), 0 === t.lookahead)) { if (e === Z) return _t; break } if (t.match_length = 0, a = B._tr_tally(t, 0, t.window[t.strstart]), t.lookahead-- , t.strstart++ , a && (o(t, !1), 0 === t.strm.avail_out)) return _t } return t.insert = 0, e === N ? (o(t, !0), 0 === t.strm.avail_out ? ct : bt) : t.last_lit && (o(t, !1), 0 === t.strm.avail_out) ? _t : ut } function m(t, e, a, i, n) { this.good_length = t, this.max_lazy = e, this.nice_length = a, this.max_chain = i, this.func = n } function w(t) { t.window_size = 2 * t.w_size, r(t.head), t.max_lazy_match = x[t.level].max_lazy, t.good_match = x[t.level].good_length, t.nice_match = x[t.level].nice_length, t.max_chain_length = x[t.level].max_chain, t.strstart = 0, t.block_start = 0, t.lookahead = 0, t.insert = 0, t.match_length = t.prev_length = et - 1, t.match_available = 0, t.ins_h = 0 } function p() { 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 = q, 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 z.Buf16(2 * $), this.dyn_dtree = new z.Buf16(2 * (2 * Q + 1)), this.bl_tree = new z.Buf16(2 * (2 * V + 1)), r(this.dyn_ltree), r(this.dyn_dtree), r(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new z.Buf16(tt + 1), this.heap = new z.Buf16(2 * J + 1), r(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new z.Buf16(2 * J + 1), r(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0 } function v(t) { var e; return t && t.state ? (t.total_in = t.total_out = 0, t.data_type = Y, e = t.state, e.pending = 0, e.pending_out = 0, e.wrap < 0 && (e.wrap = -e.wrap), e.status = e.wrap ? rt : dt, t.adler = 2 === e.wrap ? 0 : 1, e.last_flush = Z, B._tr_init(e), D) : i(t, U) } function k(t) { var e = v(t); return e === D && w(t.state), e } function y(t, e, a, n, r, s) { if (!t) return U; var o = 1; if (e === L && (e = 6), n < 0 ? (o = 0, n = -n) : n > 15 && (o = 2, n -= 16), r < 1 || r > G || a !== q || n < 8 || n > 15 || e < 0 || e > 9 || s < 0 || s > M) return i(t, U); 8 === n && (n = 9); var l = new p; return t.state = l, l.strm = t, l.wrap = o, l.gzhead = null, l.w_bits = n, l.w_size = 1 << l.w_bits, l.w_mask = l.w_size - 1, l.hash_bits = r + 7, l.hash_size = 1 << l.hash_bits, l.hash_mask = l.hash_size - 1, l.hash_shift = ~~((l.hash_bits + et - 1) / et), l.window = new z.Buf8(2 * l.w_size), l.head = new z.Buf16(l.hash_size), l.prev = new z.Buf16(l.w_size), l.lit_bufsize = 1 << r + 6, l.pending_buf_size = 4 * l.lit_bufsize, l.pending_buf = new z.Buf8(l.pending_buf_size), l.d_buf = 1 * l.lit_bufsize, l.l_buf = 3 * l.lit_bufsize, l.level = e, l.strategy = s, l.method = a, k(t) } var x, z = t("../utils/common"), B = t("./trees"), S = t("./adler32"), E = t("./crc32"), A = t("./messages"), Z = 0, R = 1, C = 3, N = 4, O = 5, D = 0, I = 1, U = -2, T = -3, F = -5, L = -1, H = 1, j = 2, K = 3, M = 4, P = 0, Y = 2, q = 8, G = 9, X = 15, W = 8, J = 286, Q = 30, V = 19, $ = 2 * J + 1, tt = 15, et = 3, at = 258, it = at + et + 1, nt = 32, rt = 42, st = 69, ot = 73, lt = 91, ht = 103, dt = 113, ft = 666, _t = 1, ut = 2, ct = 3, bt = 4, gt = 3; x = [new m(0, 0, 0, 0, function (t, e) { var a = 65535; for (a > t.pending_buf_size - 5 && (a = t.pending_buf_size - 5); ;) { if (t.lookahead <= 1) { if (_(t), 0 === t.lookahead && e === Z) return _t; if (0 === t.lookahead) break } t.strstart += t.lookahead, t.lookahead = 0; var i = t.block_start + a; if ((0 === t.strstart || t.strstart >= i) && (t.lookahead = t.strstart - i, t.strstart = i, o(t, !1), 0 === t.strm.avail_out)) return _t; if (t.strstart - t.block_start >= t.w_size - it && (o(t, !1), 0 === t.strm.avail_out)) return _t } return t.insert = 0, e === N ? (o(t, !0), 0 === t.strm.avail_out ? ct : bt) : (t.strstart > t.block_start && (o(t, !1), t.strm.avail_out), _t) }), new m(4, 4, 8, 4, u), new m(4, 5, 16, 8, u), new m(4, 6, 32, 32, u), new m(4, 4, 16, 16, c), new m(8, 16, 32, 32, c), new m(8, 16, 128, 128, c), new m(8, 32, 128, 256, c), new m(32, 128, 258, 1024, c), new m(32, 258, 258, 4096, c)], a.deflateInit = function (t, e) { return y(t, e, q, X, W, P) }, a.deflateInit2 = y, a.deflateReset = k, a.deflateResetKeep = v, a.deflateSetHeader = function (t, e) { return t && t.state ? 2 !== t.state.wrap ? U : (t.state.gzhead = e, D) : U }, a.deflate = function (t, e) { var a, o, d, f; if (!t || !t.state || e > O || e < 0) return t ? i(t, U) : U; if (o = t.state, !t.output || !t.input && 0 !== t.avail_in || o.status === ft && e !== N) return i(t, 0 === t.avail_out ? F : U); if (o.strm = t, a = o.last_flush, o.last_flush = e, o.status === rt) if (2 === o.wrap) t.adler = 0, l(o, 31), l(o, 139), l(o, 8), o.gzhead ? (l(o, (o.gzhead.text ? 1 : 0) + (o.gzhead.hcrc ? 2 : 0) + (o.gzhead.extra ? 4 : 0) + (o.gzhead.name ? 8 : 0) + (o.gzhead.comment ? 16 : 0)), l(o, 255 & o.gzhead.time), l(o, o.gzhead.time >> 8 & 255), l(o, o.gzhead.time >> 16 & 255), l(o, o.gzhead.time >> 24 & 255), l(o, 9 === o.level ? 2 : o.strategy >= j || o.level < 2 ? 4 : 0), l(o, 255 & o.gzhead.os), o.gzhead.extra && o.gzhead.extra.length && (l(o, 255 & o.gzhead.extra.length), l(o, o.gzhead.extra.length >> 8 & 255)), o.gzhead.hcrc && (t.adler = E(t.adler, o.pending_buf, o.pending, 0)), o.gzindex = 0, o.status = st) : (l(o, 0), l(o, 0), l(o, 0), l(o, 0), l(o, 0), l(o, 9 === o.level ? 2 : o.strategy >= j || o.level < 2 ? 4 : 0), l(o, gt), o.status = dt); else { var _ = q + (o.w_bits - 8 << 4) << 8; _ |= (o.strategy >= j || o.level < 2 ? 0 : o.level < 6 ? 1 : 6 === o.level ? 2 : 3) << 6, 0 !== o.strstart && (_ |= nt), _ += 31 - _ % 31, o.status = dt, h(o, _), 0 !== o.strstart && (h(o, t.adler >>> 16), h(o, 65535 & t.adler)), t.adler = 1 } if (o.status === st) if (o.gzhead.extra) { for (d = o.pending; o.gzindex < (65535 & o.gzhead.extra.length) && (o.pending !== o.pending_buf_size || (o.gzhead.hcrc && o.pending > d && (t.adler = E(t.adler, o.pending_buf, o.pending - d, d)), s(t), d = o.pending, o.pending !== o.pending_buf_size));)l(o, 255 & o.gzhead.extra[o.gzindex]), o.gzindex++; o.gzhead.hcrc && o.pending > d && (t.adler = E(t.adler, o.pending_buf, o.pending - d, d)), o.gzindex === o.gzhead.extra.length && (o.gzindex = 0, o.status = ot) } else o.status = ot; if (o.status === ot) if (o.gzhead.name) { d = o.pending; do { if (o.pending === o.pending_buf_size && (o.gzhead.hcrc && o.pending > d && (t.adler = E(t.adler, o.pending_buf, o.pending - d, d)), s(t), d = o.pending, o.pending === o.pending_buf_size)) { f = 1; break } f = o.gzindex < o.gzhead.name.length ? 255 & o.gzhead.name.charCodeAt(o.gzindex++) : 0, l(o, f) } while (0 !== f); o.gzhead.hcrc && o.pending > d && (t.adler = E(t.adler, o.pending_buf, o.pending - d, d)), 0 === f && (o.gzindex = 0, o.status = lt) } else o.status = lt; if (o.status === lt) if (o.gzhead.comment) { d = o.pending; do { if (o.pending === o.pending_buf_size && (o.gzhead.hcrc && o.pending > d && (t.adler = E(t.adler, o.pending_buf, o.pending - d, d)), s(t), d = o.pending, o.pending === o.pending_buf_size)) { f = 1; break } f = o.gzindex < o.gzhead.comment.length ? 255 & o.gzhead.comment.charCodeAt(o.gzindex++) : 0, l(o, f) } while (0 !== f); o.gzhead.hcrc && o.pending > d && (t.adler = E(t.adler, o.pending_buf, o.pending - d, d)), 0 === f && (o.status = ht) } else o.status = ht; if (o.status === ht && (o.gzhead.hcrc ? (o.pending + 2 > o.pending_buf_size && s(t), o.pending + 2 <= o.pending_buf_size && (l(o, 255 & t.adler), l(o, t.adler >> 8 & 255), t.adler = 0, o.status = dt)) : o.status = dt), 0 !== o.pending) { if (s(t), 0 === t.avail_out) return o.last_flush = -1, D } else if (0 === t.avail_in && n(e) <= n(a) && e !== N) return i(t, F); if (o.status === ft && 0 !== t.avail_in) return i(t, F); if (0 !== t.avail_in || 0 !== o.lookahead || e !== Z && o.status !== ft) { var u = o.strategy === j ? g(o, e) : o.strategy === K ? b(o, e) : x[o.level].func(o, e); if (u !== ct && u !== bt || (o.status = ft), u === _t || u === ct) return 0 === t.avail_out && (o.last_flush = -1), D; if (u === ut && (e === R ? B._tr_align(o) : e !== O && (B._tr_stored_block(o, 0, 0, !1), e === C && (r(o.head), 0 === o.lookahead && (o.strstart = 0, o.block_start = 0, o.insert = 0))), s(t), 0 === t.avail_out)) return o.last_flush = -1, D } return e !== N ? D : o.wrap <= 0 ? I : (2 === o.wrap ? (l(o, 255 & t.adler), l(o, t.adler >> 8 & 255), l(o, t.adler >> 16 & 255), l(o, t.adler >> 24 & 255), l(o, 255 & t.total_in), l(o, t.total_in >> 8 & 255), l(o, t.total_in >> 16 & 255), l(o, t.total_in >> 24 & 255)) : (h(o, t.adler >>> 16), h(o, 65535 & t.adler)), s(t), o.wrap > 0 && (o.wrap = -o.wrap), 0 !== o.pending ? D : I) }, a.deflateEnd = function (t) { var e; return t && t.state ? (e = t.state.status) !== rt && e !== st && e !== ot && e !== lt && e !== ht && e !== dt && e !== ft ? i(t, U) : (t.state = null, e === dt ? i(t, T) : D) : U }, a.deflateSetDictionary = function (t, e) { var a, i, n, s, o, l, h, d, f = e.length; if (!t || !t.state) return U; if (a = t.state, 2 === (s = a.wrap) || 1 === s && a.status !== rt || a.lookahead) return U; for (1 === s && (t.adler = S(t.adler, e, f, 0)), a.wrap = 0, f >= a.w_size && (0 === s && (r(a.head), a.strstart = 0, a.block_start = 0, a.insert = 0), d = new z.Buf8(a.w_size), z.arraySet(d, e, f - a.w_size, a.w_size, 0), e = d, f = a.w_size), o = t.avail_in, l = t.next_in, h = t.input, t.avail_in = f, t.next_in = 0, t.input = e, _(a); a.lookahead >= et;) { i = a.strstart, n = a.lookahead - (et - 1); do { a.ins_h = (a.ins_h << a.hash_shift ^ a.window[i + et - 1]) & a.hash_mask, a.prev[i & a.w_mask] = a.head[a.ins_h], a.head[a.ins_h] = i, i++ } while (--n); a.strstart = i, a.lookahead = et - 1, _(a) } return a.strstart += a.lookahead, a.block_start = a.strstart, a.insert = a.lookahead, a.lookahead = 0, a.match_length = a.prev_length = et - 1, a.match_available = 0, t.next_in = l, t.input = h, t.avail_in = o, a.wrap = s, D }, a.deflateInfo = "pako deflate (from Nodeca project)" }, { "../utils/common": 3, "./adler32": 5, "./crc32": 7, "./messages": 13, "./trees": 14 }], 9: [function (t, e, a) { "use strict"; e.exports = function () { this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = !1 } }, {}], 10: [function (t, e, a) { "use strict"; e.exports = function (t, e) { var a, i, n, r, s, o, l, h, d, f, _, u, c, b, g, m, w, p, v, k, y, x, z, B, S; a = t.state, i = t.next_in, B = t.input, n = i + (t.avail_in - 5), r = t.next_out, S = t.output, s = r - (e - t.avail_out), o = r + (t.avail_out - 257), l = a.dmax, h = a.wsize, d = a.whave, f = a.wnext, _ = a.window, u = a.hold, c = a.bits, b = a.lencode, g = a.distcode, m = (1 << a.lenbits) - 1, w = (1 << a.distbits) - 1; t: do { c < 15 && (u += B[i++] << c, c += 8, u += B[i++] << c, c += 8), p = b[u & m]; e: for (; ;) { if (v = p >>> 24, u >>>= v, c -= v, 0 === (v = p >>> 16 & 255)) S[r++] = 65535 & p; else { if (!(16 & v)) { if (0 == (64 & v)) { p = b[(65535 & p) + (u & (1 << v) - 1)]; continue e } if (32 & v) { a.mode = 12; break t } t.msg = "invalid literal/length code", a.mode = 30; break t } k = 65535 & p, (v &= 15) && (c < v && (u += B[i++] << c, c += 8), k += u & (1 << v) - 1, u >>>= v, c -= v), c < 15 && (u += B[i++] << c, c += 8, u += B[i++] << c, c += 8), p = g[u & w]; a: for (; ;) { if (v = p >>> 24, u >>>= v, c -= v, !(16 & (v = p >>> 16 & 255))) { if (0 == (64 & v)) { p = g[(65535 & p) + (u & (1 << v) - 1)]; continue a } t.msg = "invalid distance code", a.mode = 30; break t } if (y = 65535 & p, v &= 15, c < v && (u += B[i++] << c, (c += 8) < v && (u += B[i++] << c, c += 8)), (y += u & (1 << v) - 1) > l) { t.msg = "invalid distance too far back", a.mode = 30; break t } if (u >>>= v, c -= v, v = r - s, y > v) { if ((v = y - v) > d && a.sane) { t.msg = "invalid distance too far back", a.mode = 30; break t } if (x = 0, z = _, 0 === f) { if (x += h - v, v < k) { k -= v; do { S[r++] = _[x++] } while (--v); x = r - y, z = S } } else if (f < v) { if (x += h + f - v, (v -= f) < k) { k -= v; do { S[r++] = _[x++] } while (--v); if (x = 0, f < k) { k -= v = f; do { S[r++] = _[x++] } while (--v); x = r - y, z = S } } } else if (x += f - v, v < k) { k -= v; do { S[r++] = _[x++] } while (--v); x = r - y, z = S } for (; k > 2;)S[r++] = z[x++], S[r++] = z[x++], S[r++] = z[x++], k -= 3; k && (S[r++] = z[x++], k > 1 && (S[r++] = z[x++])) } else { x = r - y; do { S[r++] = S[x++], S[r++] = S[x++], S[r++] = S[x++], k -= 3 } while (k > 2); k && (S[r++] = S[x++], k > 1 && (S[r++] = S[x++])) } break } } break } } while (i < n && r < o); i -= k = c >> 3, u &= (1 << (c -= k << 3)) - 1, t.next_in = i, t.next_out = r, t.avail_in = i < n ? n - i + 5 : 5 - (i - n), t.avail_out = r < o ? o - r + 257 : 257 - (r - o), a.hold = u, a.bits = c } }, {}], 11: [function (t, e, a) { "use strict"; function i(t) { return (t >>> 24 & 255) + (t >>> 8 & 65280) + ((65280 & t) << 8) + ((255 & t) << 24) } function n() { this.mode = 0, this.last = !1, this.wrap = 0, this.havedict = !1, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new u.Buf16(320), this.work = new u.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0 } function r(t) { var e; return t && t.state ? (e = t.state, t.total_in = t.total_out = e.total = 0, t.msg = "", e.wrap && (t.adler = 1 & e.wrap), e.mode = N, e.last = 0, e.havedict = 0, e.dmax = 32768, e.head = null, e.hold = 0, e.bits = 0, e.lencode = e.lendyn = new u.Buf32(dt), e.distcode = e.distdyn = new u.Buf32(ft), e.sane = 1, e.back = -1, z) : E } function s(t) { var e; return t && t.state ? (e = t.state, e.wsize = 0, e.whave = 0, e.wnext = 0, r(t)) : E } function o(t, e) { var a, i; return t && t.state ? (i = t.state, e < 0 ? (a = 0, e = -e) : (a = 1 + (e >> 4), e < 48 && (e &= 15)), e && (e < 8 || e > 15) ? E : (null !== i.window && i.wbits !== e && (i.window = null), i.wrap = a, i.wbits = e, s(t))) : E } function l(t, e) { var a, i; return t ? (i = new n, t.state = i, i.window = null, (a = o(t, e)) !== z && (t.state = null), a) : E } function h(t) { if (ut) { var e; for (f = new u.Buf32(512), _ = new u.Buf32(32), e = 0; e < 144;)t.lens[e++] = 8; for (; e < 256;)t.lens[e++] = 9; for (; e < 280;)t.lens[e++] = 7; for (; e < 288;)t.lens[e++] = 8; for (m(p, t.lens, 0, 288, f, 0, t.work, { bits: 9 }), e = 0; e < 32;)t.lens[e++] = 5; m(v, t.lens, 0, 32, _, 0, t.work, { bits: 5 }), ut = !1 } t.lencode = f, t.lenbits = 9, t.distcode = _, t.distbits = 5 } function d(t, e, a, i) { var n, r = t.state; return null === r.window && (r.wsize = 1 << r.wbits, r.wnext = 0, r.whave = 0, r.window = new u.Buf8(r.wsize)), i >= r.wsize ? (u.arraySet(r.window, e, a - r.wsize, r.wsize, 0), r.wnext = 0, r.whave = r.wsize) : ((n = r.wsize - r.wnext) > i && (n = i), u.arraySet(r.window, e, a - i, n, r.wnext), (i -= n) ? (u.arraySet(r.window, e, a - i, i, 0), r.wnext = i, r.whave = r.wsize) : (r.wnext += n, r.wnext === r.wsize && (r.wnext = 0), r.whave < r.wsize && (r.whave += n))), 0 } var f, _, u = t("../utils/common"), c = t("./adler32"), b = t("./crc32"), g = t("./inffast"), m = t("./inftrees"), w = 0, p = 1, v = 2, k = 4, y = 5, x = 6, z = 0, B = 1, S = 2, E = -2, A = -3, Z = -4, R = -5, C = 8, N = 1, O = 2, D = 3, I = 4, U = 5, T = 6, F = 7, L = 8, H = 9, j = 10, K = 11, M = 12, P = 13, Y = 14, q = 15, G = 16, X = 17, W = 18, J = 19, Q = 20, V = 21, $ = 22, tt = 23, et = 24, at = 25, it = 26, nt = 27, rt = 28, st = 29, ot = 30, lt = 31, ht = 32, dt = 852, ft = 592, _t = 15, ut = !0; a.inflateReset = s, a.inflateReset2 = o, a.inflateResetKeep = r, a.inflateInit = function (t) { return l(t, _t) }, a.inflateInit2 = l, a.inflate = function (t, e) { var a, n, r, s, o, l, f, _, dt, ft, _t, ut, ct, bt, gt, mt, wt, pt, vt, kt, yt, xt, zt, Bt, St = 0, Et = new u.Buf8(4), At = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; if (!t || !t.state || !t.output || !t.input && 0 !== t.avail_in) return E; (a = t.state).mode === M && (a.mode = P), o = t.next_out, r = t.output, f = t.avail_out, s = t.next_in, n = t.input, l = t.avail_in, _ = a.hold, dt = a.bits, ft = l, _t = f, xt = z; t: for (; ;)switch (a.mode) { case N: if (0 === a.wrap) { a.mode = P; break } for (; dt < 16;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } if (2 & a.wrap && 35615 === _) { a.check = 0, Et[0] = 255 & _, Et[1] = _ >>> 8 & 255, a.check = b(a.check, Et, 2, 0), _ = 0, dt = 0, a.mode = O; break } if (a.flags = 0, a.head && (a.head.done = !1), !(1 & a.wrap) || (((255 & _) << 8) + (_ >> 8)) % 31) { t.msg = "incorrect header check", a.mode = ot; break } if ((15 & _) !== C) { t.msg = "unknown compression method", a.mode = ot; break } if (_ >>>= 4, dt -= 4, yt = 8 + (15 & _), 0 === a.wbits) a.wbits = yt; else if (yt > a.wbits) { t.msg = "invalid window size", a.mode = ot; break } a.dmax = 1 << yt, t.adler = a.check = 1, a.mode = 512 & _ ? j : M, _ = 0, dt = 0; break; case O: for (; dt < 16;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } if (a.flags = _, (255 & a.flags) !== C) { t.msg = "unknown compression method", a.mode = ot; break } if (57344 & a.flags) { t.msg = "unknown header flags set", a.mode = ot; break } a.head && (a.head.text = _ >> 8 & 1), 512 & a.flags && (Et[0] = 255 & _, Et[1] = _ >>> 8 & 255, a.check = b(a.check, Et, 2, 0)), _ = 0, dt = 0, a.mode = D; case D: for (; dt < 32;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } a.head && (a.head.time = _), 512 & a.flags && (Et[0] = 255 & _, Et[1] = _ >>> 8 & 255, Et[2] = _ >>> 16 & 255, Et[3] = _ >>> 24 & 255, a.check = b(a.check, Et, 4, 0)), _ = 0, dt = 0, a.mode = I; case I: for (; dt < 16;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } a.head && (a.head.xflags = 255 & _, a.head.os = _ >> 8), 512 & a.flags && (Et[0] = 255 & _, Et[1] = _ >>> 8 & 255, a.check = b(a.check, Et, 2, 0)), _ = 0, dt = 0, a.mode = U; case U: if (1024 & a.flags) { for (; dt < 16;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } a.length = _, a.head && (a.head.extra_len = _), 512 & a.flags && (Et[0] = 255 & _, Et[1] = _ >>> 8 & 255, a.check = b(a.check, Et, 2, 0)), _ = 0, dt = 0 } else a.head && (a.head.extra = null); a.mode = T; case T: if (1024 & a.flags && ((ut = a.length) > l && (ut = l), ut && (a.head && (yt = a.head.extra_len - a.length, a.head.extra || (a.head.extra = new Array(a.head.extra_len)), u.arraySet(a.head.extra, n, s, ut, yt)), 512 & a.flags && (a.check = b(a.check, n, ut, s)), l -= ut, s += ut, a.length -= ut), a.length)) break t; a.length = 0, a.mode = F; case F: if (2048 & a.flags) { if (0 === l) break t; ut = 0; do { yt = n[s + ut++], a.head && yt && a.length < 65536 && (a.head.name += String.fromCharCode(yt)) } while (yt && ut < l); if (512 & a.flags && (a.check = b(a.check, n, ut, s)), l -= ut, s += ut, yt) break t } else a.head && (a.head.name = null); a.length = 0, a.mode = L; case L: if (4096 & a.flags) { if (0 === l) break t; ut = 0; do { yt = n[s + ut++], a.head && yt && a.length < 65536 && (a.head.comment += String.fromCharCode(yt)) } while (yt && ut < l); if (512 & a.flags && (a.check = b(a.check, n, ut, s)), l -= ut, s += ut, yt) break t } else a.head && (a.head.comment = null); a.mode = H; case H: if (512 & a.flags) { for (; dt < 16;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } if (_ !== (65535 & a.check)) { t.msg = "header crc mismatch", a.mode = ot; break } _ = 0, dt = 0 } a.head && (a.head.hcrc = a.flags >> 9 & 1, a.head.done = !0), t.adler = a.check = 0, a.mode = M; break; case j: for (; dt < 32;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } t.adler = a.check = i(_), _ = 0, dt = 0, a.mode = K; case K: if (0 === a.havedict) return t.next_out = o, t.avail_out = f, t.next_in = s, t.avail_in = l, a.hold = _, a.bits = dt, S; t.adler = a.check = 1, a.mode = M; case M: if (e === y || e === x) break t; case P: if (a.last) { _ >>>= 7 & dt, dt -= 7 & dt, a.mode = nt; break } for (; dt < 3;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } switch (a.last = 1 & _, _ >>>= 1, dt -= 1, 3 & _) { case 0: a.mode = Y; break; case 1: if (h(a), a.mode = Q, e === x) { _ >>>= 2, dt -= 2; break t } break; case 2: a.mode = X; break; case 3: t.msg = "invalid block type", a.mode = ot }_ >>>= 2, dt -= 2; break; case Y: for (_ >>>= 7 & dt, dt -= 7 & dt; dt < 32;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } if ((65535 & _) != (_ >>> 16 ^ 65535)) { t.msg = "invalid stored block lengths", a.mode = ot; break } if (a.length = 65535 & _, _ = 0, dt = 0, a.mode = q, e === x) break t; case q: a.mode = G; case G: if (ut = a.length) { if (ut > l && (ut = l), ut > f && (ut = f), 0 === ut) break t; u.arraySet(r, n, s, ut, o), l -= ut, s += ut, f -= ut, o += ut, a.length -= ut; break } a.mode = M; break; case X: for (; dt < 14;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } if (a.nlen = 257 + (31 & _), _ >>>= 5, dt -= 5, a.ndist = 1 + (31 & _), _ >>>= 5, dt -= 5, a.ncode = 4 + (15 & _), _ >>>= 4, dt -= 4, a.nlen > 286 || a.ndist > 30) { t.msg = "too many length or distance symbols", a.mode = ot; break } a.have = 0, a.mode = W; case W: for (; a.have < a.ncode;) { for (; dt < 3;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } a.lens[At[a.have++]] = 7 & _, _ >>>= 3, dt -= 3 } for (; a.have < 19;)a.lens[At[a.have++]] = 0; if (a.lencode = a.lendyn, a.lenbits = 7, zt = { bits: a.lenbits }, xt = m(w, a.lens, 0, 19, a.lencode, 0, a.work, zt), a.lenbits = zt.bits, xt) { t.msg = "invalid code lengths set", a.mode = ot; break } a.have = 0, a.mode = J; case J: for (; a.have < a.nlen + a.ndist;) { for (; St = a.lencode[_ & (1 << a.lenbits) - 1], gt = St >>> 24, mt = St >>> 16 & 255, wt = 65535 & St, !(gt <= dt);) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } if (wt < 16) _ >>>= gt, dt -= gt, a.lens[a.have++] = wt; else { if (16 === wt) { for (Bt = gt + 2; dt < Bt;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } if (_ >>>= gt, dt -= gt, 0 === a.have) { t.msg = "invalid bit length repeat", a.mode = ot; break } yt = a.lens[a.have - 1], ut = 3 + (3 & _), _ >>>= 2, dt -= 2 } else if (17 === wt) { for (Bt = gt + 3; dt < Bt;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } dt -= gt, yt = 0, ut = 3 + (7 & (_ >>>= gt)), _ >>>= 3, dt -= 3 } else { for (Bt = gt + 7; dt < Bt;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } dt -= gt, yt = 0, ut = 11 + (127 & (_ >>>= gt)), _ >>>= 7, dt -= 7 } if (a.have + ut > a.nlen + a.ndist) { t.msg = "invalid bit length repeat", a.mode = ot; break } for (; ut--;)a.lens[a.have++] = yt } } if (a.mode === ot) break; if (0 === a.lens[256]) { t.msg = "invalid code -- missing end-of-block", a.mode = ot; break } if (a.lenbits = 9, zt = { bits: a.lenbits }, xt = m(p, a.lens, 0, a.nlen, a.lencode, 0, a.work, zt), a.lenbits = zt.bits, xt) { t.msg = "invalid literal/lengths set", a.mode = ot; break } if (a.distbits = 6, a.distcode = a.distdyn, zt = { bits: a.distbits }, xt = m(v, a.lens, a.nlen, a.ndist, a.distcode, 0, a.work, zt), a.distbits = zt.bits, xt) { t.msg = "invalid distances set", a.mode = ot; break } if (a.mode = Q, e === x) break t; case Q: a.mode = V; case V: if (l >= 6 && f >= 258) { t.next_out = o, t.avail_out = f, t.next_in = s, t.avail_in = l, a.hold = _, a.bits = dt, g(t, _t), o = t.next_out, r = t.output, f = t.avail_out, s = t.next_in, n = t.input, l = t.avail_in, _ = a.hold, dt = a.bits, a.mode === M && (a.back = -1); break } for (a.back = 0; St = a.lencode[_ & (1 << a.lenbits) - 1], gt = St >>> 24, mt = St >>> 16 & 255, wt = 65535 & St, !(gt <= dt);) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } if (mt && 0 == (240 & mt)) { for (pt = gt, vt = mt, kt = wt; St = a.lencode[kt + ((_ & (1 << pt + vt) - 1) >> pt)], gt = St >>> 24, mt = St >>> 16 & 255, wt = 65535 & St, !(pt + gt <= dt);) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } _ >>>= pt, dt -= pt, a.back += pt } if (_ >>>= gt, dt -= gt, a.back += gt, a.length = wt, 0 === mt) { a.mode = it; break } if (32 & mt) { a.back = -1, a.mode = M; break } if (64 & mt) { t.msg = "invalid literal/length code", a.mode = ot; break } a.extra = 15 & mt, a.mode = $; case $: if (a.extra) { for (Bt = a.extra; dt < Bt;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } a.length += _ & (1 << a.extra) - 1, _ >>>= a.extra, dt -= a.extra, a.back += a.extra } a.was = a.length, a.mode = tt; case tt: for (; St = a.distcode[_ & (1 << a.distbits) - 1], gt = St >>> 24, mt = St >>> 16 & 255, wt = 65535 & St, !(gt <= dt);) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } if (0 == (240 & mt)) { for (pt = gt, vt = mt, kt = wt; St = a.distcode[kt + ((_ & (1 << pt + vt) - 1) >> pt)], gt = St >>> 24, mt = St >>> 16 & 255, wt = 65535 & St, !(pt + gt <= dt);) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } _ >>>= pt, dt -= pt, a.back += pt } if (_ >>>= gt, dt -= gt, a.back += gt, 64 & mt) { t.msg = "invalid distance code", a.mode = ot; break } a.offset = wt, a.extra = 15 & mt, a.mode = et; case et: if (a.extra) { for (Bt = a.extra; dt < Bt;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } a.offset += _ & (1 << a.extra) - 1, _ >>>= a.extra, dt -= a.extra, a.back += a.extra } if (a.offset > a.dmax) { t.msg = "invalid distance too far back", a.mode = ot; break } a.mode = at; case at: if (0 === f) break t; if (ut = _t - f, a.offset > ut) { if ((ut = a.offset - ut) > a.whave && a.sane) { t.msg = "invalid distance too far back", a.mode = ot; break } ut > a.wnext ? (ut -= a.wnext, ct = a.wsize - ut) : ct = a.wnext - ut, ut > a.length && (ut = a.length), bt = a.window } else bt = r, ct = o - a.offset, ut = a.length; ut > f && (ut = f), f -= ut, a.length -= ut; do { r[o++] = bt[ct++] } while (--ut); 0 === a.length && (a.mode = V); break; case it: if (0 === f) break t; r[o++] = a.length, f-- , a.mode = V; break; case nt: if (a.wrap) { for (; dt < 32;) { if (0 === l) break t; l-- , _ |= n[s++] << dt, dt += 8 } if (_t -= f, t.total_out += _t, a.total += _t, _t && (t.adler = a.check = a.flags ? b(a.check, r, _t, o - _t) : c(a.check, r, _t, o - _t)), _t = f, (a.flags ? _ : i(_)) !== a.check) { t.msg = "incorrect data check", a.mode = ot; break } _ = 0, dt = 0 } a.mode = rt; case rt: if (a.wrap && a.flags) { for (; dt < 32;) { if (0 === l) break t; l-- , _ += n[s++] << dt, dt += 8 } if (_ !== (4294967295 & a.total)) { t.msg = "incorrect length check", a.mode = ot; break } _ = 0, dt = 0 } a.mode = st; case st: xt = B; break t; case ot: xt = A; break t; case lt: return Z; case ht: default: return E }return t.next_out = o, t.avail_out = f, t.next_in = s, t.avail_in = l, a.hold = _, a.bits = dt, (a.wsize || _t !== t.avail_out && a.mode < ot && (a.mode < nt || e !== k)) && d(t, t.output, t.next_out, _t - t.avail_out) ? (a.mode = lt, Z) : (ft -= t.avail_in, _t -= t.avail_out, t.total_in += ft, t.total_out += _t, a.total += _t, a.wrap && _t && (t.adler = a.check = a.flags ? b(a.check, r, _t, t.next_out - _t) : c(a.check, r, _t, t.next_out - _t)), t.data_type = a.bits + (a.last ? 64 : 0) + (a.mode === M ? 128 : 0) + (a.mode === Q || a.mode === q ? 256 : 0), (0 === ft && 0 === _t || e === k) && xt === z && (xt = R), xt) }, a.inflateEnd = function (t) { if (!t || !t.state) return E; var e = t.state; return e.window && (e.window = null), t.state = null, z }, a.inflateGetHeader = function (t, e) { var a; return t && t.state ? 0 == (2 & (a = t.state).wrap) ? E : (a.head = e, e.done = !1, z) : E }, a.inflateSetDictionary = function (t, e) { var a, i, n = e.length; return t && t.state ? 0 !== (a = t.state).wrap && a.mode !== K ? E : a.mode === K && (i = 1, (i = c(i, e, n, 0)) !== a.check) ? A : d(t, e, n, n) ? (a.mode = lt, Z) : (a.havedict = 1, z) : E }, a.inflateInfo = "pako inflate (from Nodeca project)" }, { "../utils/common": 3, "./adler32": 5, "./crc32": 7, "./inffast": 10, "./inftrees": 12 }], 12: [function (t, e, a) { "use strict"; var i = t("../utils/common"), n = [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], r = [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], s = [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], o = [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]; e.exports = function (t, e, a, l, h, d, f, _) { var u, c, b, g, m, w, p, v, k, y = _.bits, x = 0, z = 0, B = 0, S = 0, E = 0, A = 0, Z = 0, R = 0, C = 0, N = 0, O = null, D = 0, I = new i.Buf16(16), U = new i.Buf16(16), T = null, F = 0; for (x = 0; x <= 15; x++)I[x] = 0; for (z = 0; z < l; z++)I[e[a + z]]++; for (E = y, S = 15; S >= 1 && 0 === I[S]; S--); if (E > S && (E = S), 0 === S) return h[d++] = 20971520, h[d++] = 20971520, _.bits = 1, 0; for (B = 1; B < S && 0 === I[B]; B++); for (E < B && (E = B), R = 1, x = 1; x <= 15; x++)if (R <<= 1, (R -= I[x]) < 0) return -1; if (R > 0 && (0 === t || 1 !== S)) return -1; for (U[1] = 0, x = 1; x < 15; x++)U[x + 1] = U[x] + I[x]; for (z = 0; z < l; z++)0 !== e[a + z] && (f[U[e[a + z]]++] = z); if (0 === t ? (O = T = f, w = 19) : 1 === t ? (O = n, D -= 257, T = r, F -= 257, w = 256) : (O = s, T = o, w = -1), N = 0, z = 0, x = B, m = d, A = E, Z = 0, b = -1, C = 1 << E, g = C - 1, 1 === t && C > 852 || 2 === t && C > 592) return 1; for (; ;) { p = x - Z, f[z] < w ? (v = 0, k = f[z]) : f[z] > w ? (v = T[F + f[z]], k = O[D + f[z]]) : (v = 96, k = 0), u = 1 << x - Z, B = c = 1 << A; do { h[m + (N >> Z) + (c -= u)] = p << 24 | v << 16 | k | 0 } while (0 !== c); for (u = 1 << x - 1; N & u;)u >>= 1; if (0 !== u ? (N &= u - 1, N += u) : N = 0, z++ , 0 == --I[x]) { if (x === S) break; x = e[a + f[z]] } if (x > E && (N & g) !== b) { for (0 === Z && (Z = E), m += B, R = 1 << (A = x - Z); A + Z < S && !((R -= I[A + Z]) <= 0);)A++ , R <<= 1; if (C += 1 << A, 1 === t && C > 852 || 2 === t && C > 592) return 1; h[b = N & g] = E << 24 | A << 16 | m - d | 0 } } return 0 !== N && (h[m + N] = x - Z << 24 | 64 << 16 | 0), _.bits = E, 0 } }, { "../utils/common": 3 }], 13: [function (t, e, a) { "use strict"; e.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" } }, {}], 14: [function (t, e, a) { "use strict"; function i(t) { for (var e = t.length; --e >= 0;)t[e] = 0 } function n(t, e, a, i, n) { this.static_tree = t, this.extra_bits = e, this.extra_base = a, this.elems = i, this.max_length = n, this.has_stree = t && t.length } function r(t, e) { this.dyn_tree = t, this.max_code = 0, this.stat_desc = e } function s(t) { return t < 256 ? et[t] : et[256 + (t >>> 7)] } function o(t, e) { t.pending_buf[t.pending++] = 255 & e, t.pending_buf[t.pending++] = e >>> 8 & 255 } function l(t, e, a) { t.bi_valid > M - a ? (t.bi_buf |= e << t.bi_valid & 65535, o(t, t.bi_buf), t.bi_buf = e >> M - t.bi_valid, t.bi_valid += a - M) : (t.bi_buf |= e << t.bi_valid & 65535, t.bi_valid += a) } function h(t, e, a) { l(t, a[2 * e], a[2 * e + 1]) } function d(t, e) { var a = 0; do { a |= 1 & t, t >>>= 1, a <<= 1 } while (--e > 0); return a >>> 1 } function f(t) { 16 === t.bi_valid ? (o(t, t.bi_buf), t.bi_buf = 0, t.bi_valid = 0) : t.bi_valid >= 8 && (t.pending_buf[t.pending++] = 255 & t.bi_buf, t.bi_buf >>= 8, t.bi_valid -= 8) } function _(t, e) { var a, i, n, r, s, o, l = e.dyn_tree, h = e.max_code, d = e.stat_desc.static_tree, f = e.stat_desc.has_stree, _ = e.stat_desc.extra_bits, u = e.stat_desc.extra_base, c = e.stat_desc.max_length, b = 0; for (r = 0; r <= K; r++)t.bl_count[r] = 0; for (l[2 * t.heap[t.heap_max] + 1] = 0, a = t.heap_max + 1; a < j; a++)(r = l[2 * l[2 * (i = t.heap[a]) + 1] + 1] + 1) > c && (r = c, b++), l[2 * i + 1] = r, i > h || (t.bl_count[r]++ , s = 0, i >= u && (s = _[i - u]), o = l[2 * i], t.opt_len += o * (r + s), f && (t.static_len += o * (d[2 * i + 1] + s))); if (0 !== b) { do { for (r = c - 1; 0 === t.bl_count[r];)r--; t.bl_count[r]-- , t.bl_count[r + 1] += 2, t.bl_count[c]-- , b -= 2 } while (b > 0); for (r = c; 0 !== r; r--)for (i = t.bl_count[r]; 0 !== i;)(n = t.heap[--a]) > h || (l[2 * n + 1] !== r && (t.opt_len += (r - l[2 * n + 1]) * l[2 * n], l[2 * n + 1] = r), i--) } } function u(t, e, a) { var i, n, r = new Array(K + 1), s = 0; for (i = 1; i <= K; i++)r[i] = s = s + a[i - 1] << 1; for (n = 0; n <= e; n++) { var o = t[2 * n + 1]; 0 !== o && (t[2 * n] = d(r[o]++, o)) } } function c() { var t, e, a, i, r, s = new Array(K + 1); for (a = 0, i = 0; i < U - 1; i++)for (it[i] = a, t = 0; t < 1 << W[i]; t++)at[a++] = i; for (at[a - 1] = i, r = 0, i = 0; i < 16; i++)for (nt[i] = r, t = 0; t < 1 << J[i]; t++)et[r++] = i; for (r >>= 7; i < L; i++)for (nt[i] = r << 7, t = 0; t < 1 << J[i] - 7; t++)et[256 + r++] = i; for (e = 0; e <= K; e++)s[e] = 0; for (t = 0; t <= 143;)$[2 * t + 1] = 8, t++ , s[8]++; for (; t <= 255;)$[2 * t + 1] = 9, t++ , s[9]++; for (; t <= 279;)$[2 * t + 1] = 7, t++ , s[7]++; for (; t <= 287;)$[2 * t + 1] = 8, t++ , s[8]++; for (u($, F + 1, s), t = 0; t < L; t++)tt[2 * t + 1] = 5, tt[2 * t] = d(t, 5); rt = new n($, W, T + 1, F, K), st = new n(tt, J, 0, L, K), ot = new n(new Array(0), Q, 0, H, P) } function b(t) { var e; for (e = 0; e < F; e++)t.dyn_ltree[2 * e] = 0; for (e = 0; e < L; e++)t.dyn_dtree[2 * e] = 0; for (e = 0; e < H; e++)t.bl_tree[2 * e] = 0; t.dyn_ltree[2 * Y] = 1, t.opt_len = t.static_len = 0, t.last_lit = t.matches = 0 } function g(t) { t.bi_valid > 8 ? o(t, t.bi_buf) : t.bi_valid > 0 && (t.pending_buf[t.pending++] = t.bi_buf), t.bi_buf = 0, t.bi_valid = 0 } function m(t, e, a, i) { g(t), i && (o(t, a), o(t, ~a)), A.arraySet(t.pending_buf, t.window, e, a, t.pending), t.pending += a } function w(t, e, a, i) { var n = 2 * e, r = 2 * a; return t[n] < t[r] || t[n] === t[r] && i[e] <= i[a] } function p(t, e, a) { for (var i = t.heap[a], n = a << 1; n <= t.heap_len && (n < t.heap_len && w(e, t.heap[n + 1], t.heap[n], t.depth) && n++ , !w(e, i, t.heap[n], t.depth));)t.heap[a] = t.heap[n], a = n, n <<= 1; t.heap[a] = i } function v(t, e, a) { var i, n, r, o, d = 0; if (0 !== t.last_lit) do { i = t.pending_buf[t.d_buf + 2 * d] << 8 | t.pending_buf[t.d_buf + 2 * d + 1], n = t.pending_buf[t.l_buf + d], d++ , 0 === i ? h(t, n, e) : (h(t, (r = at[n]) + T + 1, e), 0 !== (o = W[r]) && l(t, n -= it[r], o), h(t, r = s(--i), a), 0 !== (o = J[r]) && l(t, i -= nt[r], o)) } while (d < t.last_lit); h(t, Y, e) } function k(t, e) { var a, i, n, r = e.dyn_tree, s = e.stat_desc.static_tree, o = e.stat_desc.has_stree, l = e.stat_desc.elems, h = -1; for (t.heap_len = 0, t.heap_max = j, a = 0; a < l; a++)0 !== r[2 * a] ? (t.heap[++t.heap_len] = h = a, t.depth[a] = 0) : r[2 * a + 1] = 0; for (; t.heap_len < 2;)r[2 * (n = t.heap[++t.heap_len] = h < 2 ? ++h : 0)] = 1, t.depth[n] = 0, t.opt_len-- , o && (t.static_len -= s[2 * n + 1]); for (e.max_code = h, a = t.heap_len >> 1; a >= 1; a--)p(t, r, a); n = l; do { a = t.heap[1], t.heap[1] = t.heap[t.heap_len--], p(t, r, 1), i = t.heap[1], t.heap[--t.heap_max] = a, t.heap[--t.heap_max] = i, r[2 * n] = r[2 * a] + r[2 * i], t.depth[n] = (t.depth[a] >= t.depth[i] ? t.depth[a] : t.depth[i]) + 1, r[2 * a + 1] = r[2 * i + 1] = n, t.heap[1] = n++ , p(t, r, 1) } while (t.heap_len >= 2); t.heap[--t.heap_max] = t.heap[1], _(t, e), u(r, h, t.bl_count) } function y(t, e, a) { var i, n, r = -1, s = e[1], o = 0, l = 7, h = 4; for (0 === s && (l = 138, h = 3), e[2 * (a + 1) + 1] = 65535, i = 0; i <= a; i++)n = s, s = e[2 * (i + 1) + 1], ++o < l && n === s || (o < h ? t.bl_tree[2 * n] += o : 0 !== n ? (n !== r && t.bl_tree[2 * n]++ , t.bl_tree[2 * q]++) : o <= 10 ? t.bl_tree[2 * G]++ : t.bl_tree[2 * X]++ , o = 0, r = n, 0 === s ? (l = 138, h = 3) : n === s ? (l = 6, h = 3) : (l = 7, h = 4)) } function x(t, e, a) { var i, n, r = -1, s = e[1], o = 0, d = 7, f = 4; for (0 === s && (d = 138, f = 3), i = 0; i <= a; i++)if (n = s, s = e[2 * (i + 1) + 1], !(++o < d && n === s)) { if (o < f) do { h(t, n, t.bl_tree) } while (0 != --o); else 0 !== n ? (n !== r && (h(t, n, t.bl_tree), o--), h(t, q, t.bl_tree), l(t, o - 3, 2)) : o <= 10 ? (h(t, G, t.bl_tree), l(t, o - 3, 3)) : (h(t, X, t.bl_tree), l(t, o - 11, 7)); o = 0, r = n, 0 === s ? (d = 138, f = 3) : n === s ? (d = 6, f = 3) : (d = 7, f = 4) } } function z(t) { var e; for (y(t, t.dyn_ltree, t.l_desc.max_code), y(t, t.dyn_dtree, t.d_desc.max_code), k(t, t.bl_desc), e = H - 1; e >= 3 && 0 === t.bl_tree[2 * V[e] + 1]; e--); return t.opt_len += 3 * (e + 1) + 5 + 5 + 4, e } function B(t, e, a, i) { var n; for (l(t, e - 257, 5), l(t, a - 1, 5), l(t, i - 4, 4), n = 0; n < i; n++)l(t, t.bl_tree[2 * V[n] + 1], 3); x(t, t.dyn_ltree, e - 1), x(t, t.dyn_dtree, a - 1) } function S(t) { var e, a = 4093624447; for (e = 0; e <= 31; e++ , a >>>= 1)if (1 & a && 0 !== t.dyn_ltree[2 * e]) return R; if (0 !== t.dyn_ltree[18] || 0 !== t.dyn_ltree[20] || 0 !== t.dyn_ltree[26]) return C; for (e = 32; e < T; e++)if (0 !== t.dyn_ltree[2 * e]) return C; return R } function E(t, e, a, i) { l(t, (O << 1) + (i ? 1 : 0), 3), m(t, e, a, !0) } var A = t("../utils/common"), Z = 4, R = 0, C = 1, N = 2, O = 0, D = 1, I = 2, U = 29, T = 256, F = T + 1 + U, L = 30, H = 19, j = 2 * F + 1, K = 15, M = 16, P = 7, Y = 256, q = 16, G = 17, X = 18, W = [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], J = [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], Q = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], V = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], $ = new Array(2 * (F + 2)); i($); var tt = new Array(2 * L); i(tt); var et = new Array(512); i(et); var at = new Array(256); i(at); var it = new Array(U); i(it); var nt = new Array(L); i(nt); var rt, st, ot, lt = !1; a._tr_init = function (t) { lt || (c(), lt = !0), t.l_desc = new r(t.dyn_ltree, rt), t.d_desc = new r(t.dyn_dtree, st), t.bl_desc = new r(t.bl_tree, ot), t.bi_buf = 0, t.bi_valid = 0, b(t) }, a._tr_stored_block = E, a._tr_flush_block = function (t, e, a, i) { var n, r, s = 0; t.level > 0 ? (t.strm.data_type === N && (t.strm.data_type = S(t)), k(t, t.l_desc), k(t, t.d_desc), s = z(t), n = t.opt_len + 3 + 7 >>> 3, (r = t.static_len + 3 + 7 >>> 3) <= n && (n = r)) : n = r = a + 5, a + 4 <= n && -1 !== e ? E(t, e, a, i) : t.strategy === Z || r === n ? (l(t, (D << 1) + (i ? 1 : 0), 3), v(t, $, tt)) : (l(t, (I << 1) + (i ? 1 : 0), 3), B(t, t.l_desc.max_code + 1, t.d_desc.max_code + 1, s + 1), v(t, t.dyn_ltree, t.dyn_dtree)), b(t), i && g(t) }, a._tr_tally = function (t, e, a) { return t.pending_buf[t.d_buf + 2 * t.last_lit] = e >>> 8 & 255, t.pending_buf[t.d_buf + 2 * t.last_lit + 1] = 255 & e, t.pending_buf[t.l_buf + t.last_lit] = 255 & a, t.last_lit++ , 0 === e ? t.dyn_ltree[2 * a]++ : (t.matches++ , e-- , t.dyn_ltree[2 * (at[a] + T + 1)]++ , t.dyn_dtree[2 * s(e)]++), t.last_lit === t.lit_bufsize - 1 }, a._tr_align = function (t) { l(t, D << 1, 3), h(t, Y, $), f(t) } }, { "../utils/common": 3 }], 15: [function (t, e, a) { "use strict"; e.exports = function () { this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0 } }, {}], "/": [function (t, e, a) { "use strict"; var i = {}; (0, t("./lib/utils/common").assign)(i, t("./lib/deflate"), t("./lib/inflate"), t("./lib/zlib/constants")), e.exports = i }, { "./lib/deflate": 1, "./lib/inflate": 2, "./lib/utils/common": 3, "./lib/zlib/constants": 6 }] }, {}, [])("/") });

wxml:

<view bindtap='uploadImgTap'>添加附件</view>

<canvas canvas-id='myCanvas' style="width: 160px; height: 120px; margin: 0 auto;"></canvas>

<image src='{{b64}}' style="width: 100px; height: 100px;"></image>

js:

uploadImgTap: function() {

var that = this;

扫描二维码关注公众号,回复: 3493746 查看本文章

var imgBox = [];

const ctx = wx.createCanvasContext('myCanvas');

const platform = wx.getSystemInfoSync().platform;

const imgWidth = 160,

imgHeight = 120;

wx.chooseImage({

success: res => {

//生成的图片临时路径画成canvas

ctx.drawImage(res.tempFilePaths[0], 0, 0, imgWidth, imgHeight);

ctx.draw(false, () => {

wx.canvasGetImageData({

canvasId: 'myCanvas',

x: 0,

y: 0,

width: imgWidth,

height: imgHeight,

success: res => {

if (platform === 'ios') {

// 兼容处理:ios获取的图片上下颠倒

res = this.reverseImgData(res)

}

// 3. png编码

let pngData = upng.encode([res.data.buffer], res.width, res.height);

// 4. base64编码

let base64 = wx.arrayBufferToBase64(pngData);

var b64 = 'data:image/jpeg;base64,' + base64

imgBox.push(b64);

that.setData({

imgPath: imgBox

})

console.log("图片的base64:" + this.data.imgPath);

},

fail(res) {

console.log(res);

},

})

})

}

})

},

//ios图片处理

reverseImgData(res) {

var w = res.width

var h = res.height

let con = 0

for (var i = 0; i < h / 2; i++) {

for (var j = 0; j < w * 4; j++) {

con = res.data[i * w * 4 + j]

res.data[i * w * 4 + j] = res.data[(h - i - 1) * w * 4 + j]

res.data[(h - i - 1) * w * 4 + j] = con

}

}

return res

},

下标

小程序中目前是没有办法像dom一样直接取下标的。小程序中取下标一般都是通过id来获取下标的。代码如下:

wxml:

<view catchtap='myComplainDetailTap' data-postId="{{item.F_Id}}">详情</view>

js:

var app = getApp();

myComplainDetailTap: function(e) {

app.appData.complainData = this.data.dataArr;

var postId = e.currentTarget.dataset.postid;

wx.navigateTo({

url: '../myComplainDetail/myComplainDetail?id=' + postId,

})

},

detailJs:

onLoad:function(options){

var arrar = [];

var that = this;

var postData = options.id;

for (var i = 0; i < app.appData.complainData.length; i++) {

if (app.appData.complainData[i].F_Id === postData) {

arrar.push(app.appData.complainData[i]);

that.setData({

dataArr: arrar

})

}

}

}

data 数据说明:

最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String 。转换规则如下:

  • 对于 GET 方法的数据,会将数据转换成 query string(encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...)
  • 对于 POST 方法且 header['content-type'] 为 application/json 的数据,会对数据进行 JSON 序列化
  • 对于 POST 方法且 header['content-type'] 为 application/x-www-form-urlencoded 的数据,会将数据转换成 query string (encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...)

POST请求

wx.request({

url:' ',

data:{}   //参数

method: ' POST',

header: {

'content-type': 'application/json' // 默认值

},

success:function(res){

console.log(res.data);

}

})

GET请求

wx.request({

url:' ',

data:{}   //参数

method: ' GET',

header: {

'content-type': 'application/json' // 默认值

},

success:function(res){

console.log(res.data);

}

})

小程序中的正则

wxml:

<input placeholder='请输入手机号码' maxlength="11" bindinput='phoneInput'></input>

js:

phoneInput: function(e) {

this.setData({

phone: e.detail.value

});

},

registerSuccessTap: function() {

var phone = this.data.phone;

var phonereg = /^1[345789]\d{9}$/;

if (phone === ' ') {

wx.showToast({

title: '请输入手机号',

icon: 'none',

duration: 1000,

mask: true

});

} else if (!phonereg.test(phone)) {

wx.showToast({

title: '请输入正确的手机号',

icon: 'none',

duration: 1000,

mask: true

})else{

wx.request({

url:' ',

data:{

F_Mobile: phone,

}   //参数

method: ' POST',

header: {

'content-type': 'application/json' // 默认值

},

success:function(res){

console.log(res.data);

}

})

}

}

}

猜你喜欢

转载自blog.csdn.net/qq_40999496/article/details/81583249
今日推荐