首页 > 代码库 > JSZip
JSZip
/*!
JSZip - A Javascript class for generating and reading zip files
<http://stuartk.com/jszip>
(c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com>
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.
JSZip uses the library zlib.js released under the following license :
zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License
*/
!function(a) {
"object" == typeof exports ? module.exports = a() : "function" == typeof define && define.amd ? define(a) : "undefined" != typeof window ? window.JSZip = a() : "undefined" != typeof global ? global.JSZip = a() : "undefined" != typeof self && (self.JSZip = a())
}(function() {
return function a(b, c, d) {
function e(g, h) {
if (!c[g]) {
if (!b[g]) {
var i = "function" == typeof require && require;
if (!h && i)
return i(g, !0);
if (f)
return f(g, !0);
throw new Error("Cannot find module ‘" + g + "‘")
}
var j = c[g] = {
exports: {}
};
b[g][0].call(j.exports, function(a) {
var c = b[g][1][a];
return e(c ? c : a)
}, j, j.exports, a, b, c, d)
}
return c[g].exports
}
for (var f = "function" == typeof require && require, g = 0; g < d.length; g++)
e(d[g]);
return e
}({
1: [function(a, b, c) {
"use strict";
var d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
c.encode = function(a) {
for (var b, c, e, f, g, h, i, j = "", k = 0; k < a.length; )
b = a.charCodeAt(k++),
c = a.charCodeAt(k++),
e = a.charCodeAt(k++),
f = b >> 2,
g = (3 & b) << 4 | c >> 4,
h = (15 & c) << 2 | e >> 6,
i = 63 & e,
isNaN(c) ? h = i = 64 : isNaN(e) && (i = 64),
j = j + d.charAt(f) + d.charAt(g) + d.charAt(h) + d.charAt(i);
return j
}
,
c.decode = function(a) {
var b, c, e, f, g, h, i, j = "", k = 0;
for (a = a.replace(/[^A-Za-z0-9\+\/\=]/g, ""); k < a.length; )
f = d.indexOf(a.charAt(k++)),
g = d.indexOf(a.charAt(k++)),
h = d.indexOf(a.charAt(k++)),
i = d.indexOf(a.charAt(k++)),
b = f << 2 | g >> 4,
c = (15 & g) << 4 | h >> 2,
e = (3 & h) << 6 | i,
j += String.fromCharCode(b),
64 != h && (j += String.fromCharCode(c)),
64 != i && (j += String.fromCharCode(e));
return j
}
}
, {}],
2: [function(a, b) {
"use strict";
function c() {
this.compressedSize = 0,
this.uncompressedSize = 0,
this.crc32 = 0,
this.compressionMethod = null,
this.compressedContent = null
}
c.prototype = {
getContent: function() {
return null
},
getCompressedContent: function() {
return null
}
},
b.exports = c
}
, {}],
3: [function(a, b, c) {
"use strict";
c.STORE = {
magic: "\x00\x00",
compress: function(a) {
return a
},
uncompress: function(a) {
return a
},
compressInputType: null,
uncompressInputType: null
},
c.DEFLATE = a("./flate")
}
, {
"./flate": 6
}],
4: [function(a, b) {
"use strict";
function c() {
this.data = http://www.mamicode.com/null,
this.length = 0,
this.index = 0
}
var d = a("./utils");
c.prototype = {
checkOffset: function(a) {
this.checkIndex(this.index + a)
},
checkIndex: function(a) {
if (this.length < a || 0 > a)
throw new Error("End of data reached (data length = " + this.length + ", asked index = " + a + "). Corrupted zip ?")
},
setIndex: function(a) {
this.checkIndex(a),
this.index = a
},
skip: function(a) {
this.setIndex(this.index + a)
},
byteAt: function() {},
readInt: function(a) {
var b, c = 0;
for (this.checkOffset(a),
b = this.index + a - 1; b >= this.index; b--)
c = (c << 8) + this.byteAt(b);
return this.index += a,
c
},
readString: function(a) {
return d.transformTo("string", this.readData(a))
},
readData: function() {},
lastIndexOfSignature: function() {},
readDate: function() {
var a = this.readInt(4);
return new Date((a >> 25 & 127) + 1980,(a >> 21 & 15) - 1,a >> 16 & 31,a >> 11 & 31,a >> 5 & 63,(31 & a) << 1)
}
},
b.exports = c
}
, {
"./utils": 14
}],
5: [function(a, b, c) {
"use strict";
c.base64 = !1,
c.binary = !1,
c.dir = !1,
c.date = null,
c.compression = null
}
, {}],
6: [function(a, b, c) {
"use strict";
var d = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array
, e = a("zlibjs/bin/rawdeflate.min").Zlib
, f = a("zlibjs/bin/rawinflate.min").Zlib;
c.uncompressInputType = d ? "uint8array" : "array",
c.compressInputType = d ? "uint8array" : "array",
c.magic = "\b\x00",
c.compress = function(a) {
var b = new e.RawDeflate(a);
return b.compress()
}
,
c.uncompress = function(a) {
var b = new f.RawInflate(a);
return b.decompress()
}
}
, {
"zlibjs/bin/rawdeflate.min": 19,
"zlibjs/bin/rawinflate.min": 20
}],
7: [function(a, b) {
"use strict";
function c(a, b) {
return this instanceof c ? (this.files = {},
this.root = "",
a && this.load(a, b),
void (this.clone = function() {
var a = new c;
for (var b in this)
"function" != typeof this[b] && (a[b] = this[b]);
return a
}
)) : new c(a,b)
}
c.prototype = a("./object"),
c.prototype.load = a("./load"),
c.support = a("./support"),
c.defaults = a("./defaults"),
c.utils = a("./utils"),
c.base64 = a("./base64"),
c.compressions = a("./compressions"),
b.exports = c
}
, {
"./base64": 1,
"./compressions": 3,
"./defaults": 5,
"./load": 8,
"./object": 9,
"./support": 12,
"./utils": 14
}],
8: [function(a, b) {
"use strict";
var c = a("./base64")
, d = a("./zipEntries");
b.exports = function(a, b) {
var e, f, g, h;
for (b = b || {},
b.base64 && (a = c.decode(a)),
f = new d(a,b),
e = f.files,
g = 0; g < e.length; g++)
h = e[g],
this.file(h.fileName, h.decompressed, {
binary: !0,
optimizedBinaryString: !0,
date: h.date,
dir: h.dir
});
return this
}
}
, {
"./base64": 1,
"./zipEntries": 15
}],
9: [function(a, b) {
"use strict";
var c, d, e = a("./support"), f = a("./utils"), g = a("./signature"), h = a("./defaults"), i = a("./base64"), j = a("./compressions"), k = a("./compressedObject"), l = a("./nodeBuffer");
e.uint8array && "function" == typeof TextEncoder && "function" == typeof TextDecoder && (c = new TextEncoder("utf-8"),
d = new TextDecoder("utf-8"));
var m = function(a) {
if (a._data instanceof k && (a._data = http://www.mamicode.com/a._data.getContent(),
a.options.binary = !0,
a.options.base64 = !1,
"uint8array" === f.getTypeOf(a._data))) {
var b = a._data;
a._data = http://www.mamicode.com/new Uint8Array(b.length),
0 !== b.length && a._data.set(b, 0)
}
return a._data
}
, n = function(a) {
var b = m(a)
, d = f.getTypeOf(b);
if ("string" === d) {
if (!a.options.binary) {
if (c)
return c.encode(b);
if (e.nodebuffer)
return l(b, "utf-8")
}
return a.asBinary()
}
return b
}
, o = function(a) {
var b = m(this);
return null === b || "undefined" == typeof b ? "" : (this.options.base64 && (b = i.decode(b)),
b = a && this.options.binary ? A.utf8decode(b) : f.transformTo("string", b),
a || this.options.binary || (b = A.utf8encode(b)),
b)
}
, p = function(a, b, c) {
this.name = a,
this._data = http://www.mamicode.com/b,
this.options = c
};
p.prototype = {
asText: function() {
return o.call(this, !0)
},
asBinary: function() {
return o.call(this, !1)
},
asNodeBuffer: function() {
var a = n(this);
return f.transformTo("nodebuffer", a)
},
asUint8Array: function() {
var a = n(this);
return f.transformTo("uint8array", a)
},
asArrayBuffer: function() {
return this.asUint8Array().buffer
}
};
var q = function(a, b) {
var c, d = "";
for (c = 0; b > c; c++)
d += String.fromCharCode(255 & a),
a >>>= 8;
return d
}
, r = function() {
var a, b, c = {};
for (a = 0; a < arguments.length; a++)
for (b in arguments[a])
arguments[a].hasOwnProperty(b) && "undefined" == typeof c[b] && (c[b] = arguments[a][b]);
return c
}
, s = function(a) {
return a = a || {},
a.base64 !== !0 || null !== a.binary && void 0 !== a.binary || (a.binary = !0),
a = r(a, h),
a.date = a.date || new Date,
null !== a.compression && (a.compression = a.compression.toUpperCase()),
a
}
, t = function(a, b, c) {
var d = u(a)
, e = f.getTypeOf(b);
if (d && v.call(this, d),
c = s(c),
c.dir || null === b || "undefined" == typeof b)
c.base64 = !1,
c.binary = !1,
b = null;
else if ("string" === e)
c.binary && !c.base64 && c.optimizedBinaryString !== !0 && (b = f.string2binary(b));
else {
if (c.base64 = !1,
c.binary = !0,
!(e || b instanceof k))
throw new Error("The data of ‘" + a + "‘ is in an unsupported format !");
"arraybuffer" === e && (b = f.transformTo("uint8array", b))
}
var g = new p(a,b,c);
return this.files[a] = g,
g
}
, u = function(a) {
"/" == a.slice(-1) && (a = a.substring(0, a.length - 1));
var b = a.lastIndexOf("/");
return b > 0 ? a.substring(0, b) : ""
}
, v = function(a) {
return "/" != a.slice(-1) && (a += "/"),
this.files[a] || t.call(this, a, null, {
dir: !0
}),
this.files[a]
}
, w = function(a, b) {
var c, d = new k;
return a._data instanceof k ? (d.uncompressedSize = a._data.uncompressedSize,
d.crc32 = a._data.crc32,
0 === d.uncompressedSize || a.options.dir ? (b = j.STORE,
d.compressedContent = "",
d.crc32 = 0) : a._data.compressionMethod === b.magic ? d.compressedContent = a._data.getCompressedContent() : (c = a._data.getContent(),
d.compressedContent = b.compress(f.transformTo(b.compressInputType, c)))) : (c = n(a),
(!c || 0 === c.length || a.options.dir) && (b = j.STORE,
c = ""),
d.uncompressedSize = c.length,
d.crc32 = this.crc32(c),
d.compressedContent = b.compress(f.transformTo(b.compressInputType, c))),
d.compressedSize = d.compressedContent.length,
d.compressionMethod = b.magic,
d
}
, x = function(a, b, c, d) {
var e, f, h = (c.compressedContent,
this.utf8encode(b.name)), i = h !== b.name, j = b.options, k = "", l = "";
e = j.date.getHours(),
e <<= 6,
e |= j.date.getMinutes(),
e <<= 5,
e |= j.date.getSeconds() / 2,
f = j.date.getFullYear() - 1980,
f <<= 4,
f |= j.date.getMonth() + 1,
f <<= 5,
f |= j.date.getDate(),
i && (l = q(1, 1) + q(this.crc32(h), 4) + h,
k += "up" + q(l.length, 2) + l);
var m = "";
m += "\n\x00",
m += i ? "\x00\b" : "\x00\x00",
m += c.compressionMethod,
m += q(e, 2),
m += q(f, 2),
m += q(c.crc32, 4),
m += q(c.compressedSize, 4),
m += q(c.uncompressedSize, 4),
m += q(h.length, 2),
m += q(k.length, 2);
var n = g.LOCAL_FILE_HEADER + m + h + k
, o = g.CENTRAL_FILE_HEADER + "\x00" + m + "\x00\x00\x00\x00\x00\x00" + (b.options.dir === !0 ? "\x00\x00\x00" : "\x00\x00\x00\x00") + q(d, 4) + h + k;
return {
fileRecord: n,
dirRecord: o,
compressedObject: c
}
}
, y = function() {
this.data = http://www.mamicode.com/[]
};
y.prototype = {
append: function(a) {
a = f.transformTo("string", a),
this.data.push(a)
},
finalize: function() {
return this.data.join("")
}
};
var z = function(a) {
this.data = http://www.mamicode.com/new Uint8Array(a),
this.index = 0
};
z.prototype = {
append: function(a) {
0 !== a.length && (a = f.transformTo("uint8array", a),
this.data.set(a, this.index),
this.index += a.length)
},
finalize: function() {
return this.data
}
};
var A = {
load: function() {
throw new Error("Load method is not defined. Is the file jszip-load.js included ?")
},
filter: function(a) {
var b, c, d, e, f = [];
for (b in this.files)
this.files.hasOwnProperty(b) && (d = this.files[b],
e = new p(d.name,d._data,r(d.options)),
c = b.slice(this.root.length, b.length),
b.slice(0, this.root.length) === this.root && a(c, e) && f.push(e));
return f
},
file: function(a, b, c) {
if (1 === arguments.length) {
if (f.isRegExp(a)) {
var d = a;
return this.filter(function(a, b) {
return !b.options.dir && d.test(a)
})
}
return this.filter(function(b, c) {
return !c.options.dir && b === a
})[0] || null
}
return a = this.root + a,
t.call(this, a, b, c),
this
},
folder: function(a) {
if (!a)
return this;
if (f.isRegExp(a))
return this.filter(function(b, c) {
return c.options.dir && a.test(b)
});
var b = this.root + a
, c = v.call(this, b)
, d = this.clone();
return d.root = c.name,
d
},
remove: function(a) {
a = this.root + a;
var b = this.files[a];
if (b || ("/" != a.slice(-1) && (a += "/"),
b = this.files[a]),
b)
if (b.options.dir)
for (var c = this.filter(function(b, c) {
return c.name.slice(0, a.length) === a
}), d = 0; d < c.length; d++)
delete this.files[c[d].name];
else
delete this.files[a];
return this
},
generate: function(a) {
a = r(a || {}, {
base64: !0,
compression: "STORE",
type: "base64"
}),
f.checkSupport(a.type);
var b, c, d = [], e = 0, h = 0;
for (var k in this.files)
if (this.files.hasOwnProperty(k)) {
var l = this.files[k]
, m = l.options.compression || a.compression.toUpperCase()
, n = j[m];
if (!n)
throw new Error(m + " is not a valid compression method !");
var o = w.call(this, l, n)
, p = x.call(this, k, l, o, e);
e += p.fileRecord.length + o.compressedSize,
h += p.dirRecord.length,
d.push(p)
}
var s = "";
s = g.CENTRAL_DIRECTORY_END + "\x00\x00\x00\x00" + q(d.length, 2) + q(d.length, 2) + q(h, 4) + q(e, 4) + "\x00\x00";
var t = a.type.toLowerCase();
for (b = "uint8array" === t || "arraybuffer" === t || "blob" === t || "nodebuffer" === t ? new z(e + h + s.length) : new y(e + h + s.length),
c = 0; c < d.length; c++)
b.append(d[c].fileRecord),
b.append(d[c].compressedObject.compressedContent);
for (c = 0; c < d.length; c++)
b.append(d[c].dirRecord);
b.append(s);
var u = b.finalize();
switch (a.type.toLowerCase()) {
case "uint8array":
case "arraybuffer":
case "nodebuffer":
return f.transformTo(a.type.toLowerCase(), u);
case "blob":
return f.arrayBuffer2Blob(f.transformTo("arraybuffer", u));
case "base64":
return a.base64 ? i.encode(u) : u;
default:
return u
}
},
crc32: function(a, b) {
if ("undefined" == typeof a || !a.length)
return 0;
var c = "string" !== f.getTypeOf(a)
, d = [0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685, 2657392035, 249268274, 2044508324, 3772115230, 2547177864, 162941995, 2125561021, 3887607047, 2428444049, 498536548, 1789927666, 4089016648, 2227061214, 450548861, 1843258603, 4107580753, 2211677639, 325883990, 1684777152, 4251122042, 2321926636, 335633487, 1661365465, 4195302755, 2366115317, 997073096, 1281953886, 3579855332, 2724688242, 1006888145, 1258607687, 3524101629, 2768942443, 901097722, 1119000684, 3686517206, 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980, 1373503546, 3369554304, 3218104598, 565507253, 1454621731, 3485111705, 3099436303, 671266974, 1594198024, 3322730930, 2970347812, 795835527, 1483230225, 3244367275, 3060149565, 1994146192, 31158534, 2563907772, 4023717930, 1907459465, 112637215, 2680153253, 3904427059, 2013776290, 251722036, 2517215374, 3775830040, 2137656763, 141376813, 2439277719, 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925, 453092731, 2181625025, 4111451223, 1706088902, 314042704, 2344532202, 4240017532, 1658658271, 366619977, 2362670323, 4224994405, 1303535960, 984961486, 2747007092, 3569037538, 1256170817, 1037604311, 2765210733, 3554079995, 1131014506, 879679996, 2909243462, 3663771856, 1141124467, 855842277, 2852801631, 3708648649, 1342533948, 654459306, 3188396048, 3373015174, 1466479909, 544179635, 3110523913, 3462522015, 1591671054, 702138776, 2966460450, 3352799412, 1504918807, 783551873, 3082640443, 3233442989, 3988292384, 2596254646, 62317068, 1957810842, 3939845945, 2647816111, 81470997, 1943803523, 3814918930, 2489596804, 225274430, 2053790376, 3826175755, 2466906013, 167816743, 2097651377, 4027552580, 2265490386, 503444072, 1762050814, 4150417245, 2154129355, 426522225, 1852507879, 4275313526, 2312317920, 282753626, 1742555852, 4189708143, 2394877945, 397917763, 1622183637, 3604390888, 2714866558, 953729732, 1340076626, 3518719985, 2797360999, 1068828381, 1219638859, 3624741850, 2936675148, 906185462, 1090812512, 3747672003, 2825379669, 829329135, 1181335161, 3412177804, 3160834842, 628085408, 1382605366, 3423369109, 3138078467, 570562233, 1426400815, 3317316542, 2998733608, 733239954, 1555261956, 3268935591, 3050360625, 752459403, 1541320221, 2607071920, 3965973030, 1969922972, 40735498, 2617837225, 3943577151, 1913087877, 83908371, 2512341634, 3803740692, 2075208622, 213261112, 2463272603, 3855990285, 2094854071, 198958881, 2262029012, 4057260610, 1759359992, 534414190, 2176718541, 4139329115, 1873836001, 414664567, 2282248934, 4279200368, 1711684554, 285281116, 2405801727, 4167216745, 1634467795, 376229701, 2685067896, 3608007406, 1308918612, 956543938, 2808555105, 3495958263, 1231636301, 1047427035, 2932959818, 3654703836, 1088359270, 936918e3, 2847714899, 3736837829, 1202900863, 817233897, 3183342108, 3401237130, 1404277552, 615818150, 3134207493, 3453421203, 1423857449, 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471, 3272380065, 1510334235, 755167117];
"undefined" == typeof b && (b = 0);
var e = 0
, g = 0
, h = 0;
b = -1 ^ b;
for (var i = 0, j = a.length; j > i; i++)
h = c ? a[i] : a.charCodeAt(i),
g = 255 & (b ^ h),
e = d[g],
b = b >>> 8 ^ e;
return -1 ^ b
},
utf8encode: function(a) {
if (c) {
var b = c.encode(a);
return f.transformTo("string", b)
}
if (e.nodebuffer)
return f.transformTo("string", l(a, "utf-8"));
for (var d = [], g = 0, h = 0; h < a.length; h++) {
var i = a.charCodeAt(h);
128 > i ? d[g++] = String.fromCharCode(i) : i > 127 && 2048 > i ? (d[g++] = String.fromCharCode(i >> 6 | 192),
d[g++] = String.fromCharCode(63 & i | 128)) : (d[g++] = String.fromCharCode(i >> 12 | 224),
d[g++] = String.fromCharCode(i >> 6 & 63 | 128),
d[g++] = String.fromCharCode(63 & i | 128))
}
return d.join("")
},
utf8decode: function(a) {
var b = []
, c = 0
, g = f.getTypeOf(a)
, h = "string" !== g
, i = 0
, j = 0
, k = 0
, l = 0;
if (d)
return d.decode(f.transformTo("uint8array", a));
if (e.nodebuffer)
return f.transformTo("nodebuffer", a).toString("utf-8");
for (; i < a.length; )
j = h ? a[i] : a.charCodeAt(i),
128 > j ? (b[c++] = String.fromCharCode(j),
i++) : j > 191 && 224 > j ? (k = h ? a[i + 1] : a.charCodeAt(i + 1),
b[c++] = String.fromCharCode((31 & j) << 6 | 63 & k),
i += 2) : (k = h ? a[i + 1] : a.charCodeAt(i + 1),
l = h ? a[i + 2] : a.charCodeAt(i + 2),
b[c++] = String.fromCharCode((15 & j) << 12 | (63 & k) << 6 | 63 & l),
i += 3);
return b.join("")
}
};
b.exports = A
}
, {
"./base64": 1,
"./compressedObject": 2,
"./compressions": 3,
"./defaults": 5,
"./nodeBuffer": 17,
"./signature": 10,
"./support": 12,
"./utils": 14
}],
10: [function(a, b, c) {
"use strict";
c.LOCAL_FILE_HEADER = "PK",
c.CENTRAL_FILE_HEADER = "PK",
c.CENTRAL_DIRECTORY_END = "PK",
c.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK",
c.ZIP64_CENTRAL_DIRECTORY_END = "PK",
c.DATA_DESCRIPTOR = "PK\b"
}
, {}],
11: [function(a, b) {
"use strict";
function c(a, b) {
this.data = http://www.mamicode.com/a,
b || (this.data = http://www.mamicode.com/e.string2binary(this.data)),
this.length = this.data.length,
this.index = 0
}
var d = a("./dataReader")
, e = a("./utils");
c.prototype = new d,
c.prototype.byteAt = function(a) {
return this.data.charCodeAt(a)
}
,
c.prototype.lastIndexOfSignature = function(a) {
return this.data.lastIndexOf(a)
}
,
c.prototype.readData = http://www.mamicode.com/function(a) {
this.checkOffset(a);
var b = this.data.slice(this.index, this.index + a);
return this.index += a,
b
}
,
b.exports = c
}
, {
"./dataReader": 4,
"./utils": 14
}],
12: [function(a, b, c) {
var d = a("__browserify_process");
if (c.base64 = !0,
c.array = !0,
c.string = !0,
c.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array,
c.nodebuffer = !d.browser,
c.uint8array = "undefined" != typeof Uint8Array,
"undefined" == typeof ArrayBuffer)
c.blob = !1;
else {
var e = new ArrayBuffer(0);
try {
c.blob = 0 === new Blob([e],{
type: "application/zip"
}).size
} catch (f) {
try {
var g = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder
, h = new g;
h.append(e),
c.blob = 0 === h.getBlob("application/zip").size
} catch (f) {
c.blob = !1
}
}
}
}
, {
__browserify_process: 18
}],
13: [function(a, b) {
"use strict";
function c(a) {
a && (this.data = http://www.mamicode.com/a,
this.length = this.data.length,
this.index = 0)
}
var d = a("./dataReader");
c.prototype = new d,
c.prototype.byteAt = function(a) {
return this.data[a]
}
,
c.prototype.lastIndexOfSignature = function(a) {
for (var b = a.charCodeAt(0), c = a.charCodeAt(1), d = a.charCodeAt(2), e = a.charCodeAt(3), f = this.length - 4; f >= 0; --f)
if (this.data[f] === b && this.data[f + 1] === c && this.data[f + 2] === d && this.data[f + 3] === e)
return f;
return -1
}
,
c.prototype.readData = http://www.mamicode.com/function(a) {
this.checkOffset(a);
var b = this.data.subarray(this.index, this.index + a);
return this.index += a,
b
}
,
b.exports = c
}
, {
"./dataReader": 4
}],
14: [function(a, b, c) {
"use strict";
function d(a) {
return a
}
function e(a, b) {
for (var c = 0; c < a.length; ++c)
b[c] = 255 & a.charCodeAt(c);
return b
}
function f(a) {
var b = 65536
, d = []
, e = a.length
, f = c.getTypeOf(a)
, g = 0
, h = !0;
try {
switch (f) {
case "uint8array":
String.fromCharCode.apply(null, new Uint8Array(0));
break;
case "nodebuffer":
String.fromCharCode.apply(null, j(0))
}
} catch (i) {
h = !1
}
if (!h) {
for (var k = "", l = 0; l < a.length; l++)
k += String.fromCharCode(a[l]);
return k
}
for (; e > g && b > 1; )
try {
d.push("array" === f || "nodebuffer" === f ? String.fromCharCode.apply(null, a.slice(g, Math.min(g + b, e))) : String.fromCharCode.apply(null, a.subarray(g, Math.min(g + b, e)))),
g += b
} catch (i) {
b = Math.floor(b / 2)
}
return d.join("")
}
function g(a, b) {
for (var c = 0; c < a.length; c++)
b[c] = a[c];
return b
}
var h = a("./support")
, i = a("./compressions")
, j = a("./nodeBuffer");
c.string2binary = function(a) {
for (var b = "", c = 0; c < a.length; c++)
b += String.fromCharCode(255 & a.charCodeAt(c));
return b
}
,
c.string2Uint8Array = function(a) {
return c.transformTo("uint8array", a)
}
,
c.uint8Array2String = function(a) {
return c.transformTo("string", a)
}
,
c.string2Blob = function(a) {
var b = c.transformTo("arraybuffer", a);
return c.arrayBuffer2Blob(b)
}
,
c.arrayBuffer2Blob = function(a) {
c.checkSupport("blob");
try {
return new Blob([a],{
type: "application/zip"
})
} catch (b) {
try {
var d = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder
, e = new d;
return e.append(a),
e.getBlob("application/zip")
} catch (b) {
throw new Error("Bug : can‘t construct the Blob.")
}
}
}
;
var k = {};
k.string = {
string: d,
array: function(a) {
return e(a, new Array(a.length))
},
arraybuffer: function(a) {
return k.string.uint8array(a).buffer
},
uint8array: function(a) {
return e(a, new Uint8Array(a.length))
},
nodebuffer: function(a) {
return e(a, j(a.length))
}
},
k.array = {
string: f,
array: d,
arraybuffer: function(a) {
return new Uint8Array(a).buffer
},
uint8array: function(a) {
return new Uint8Array(a)
},
nodebuffer: function(a) {
return j(a)
}
},
k.arraybuffer = {
string: function(a) {
return f(new Uint8Array(a))
},
array: function(a) {
return g(new Uint8Array(a), new Array(a.byteLength))
},
arraybuffer: d,
uint8array: function(a) {
return new Uint8Array(a)
},
nodebuffer: function(a) {
return j(new Uint8Array(a))
}
},
k.uint8array = {
string: f,
array: function(a) {
return g(a, new Array(a.length))
},
arraybuffer: function(a) {
return a.buffer
},
uint8array: d,
nodebuffer: function(a) {
return j(a)
}
},
k.nodebuffer = {
string: f,
array: function(a) {
return g(a, new Array(a.length))
},
arraybuffer: function(a) {
return k.nodebuffer.uint8array(a).buffer
},
uint8array: function(a) {
return g(a, new Uint8Array(a.length))
},
nodebuffer: d
},
c.transformTo = function(a, b) {
if (b || (b = ""),
!a)
return b;
c.checkSupport(a);
var d = c.getTypeOf(b)
, e = k[d][a](b);
return e
}
,
c.getTypeOf = function(a) {
return "string" == typeof a ? "string" : "[object Array]" === Object.prototype.toString.call(a) ? "array" : h.nodebuffer && j.test(a) ? "nodebuffer" : h.uint8array && a instanceof Uint8Array ? "uint8array" : h.arraybuffer && a instanceof ArrayBuffer ? "arraybuffer" : void 0
}
,
c.checkSupport = function(a) {
var b = h[a.toLowerCase()];
if (!b)
throw new Error(a + " is not supported by this browser")
}
,
c.MAX_VALUE_16BITS = 65535,
c.MAX_VALUE_32BITS = -1,
c.pretty = function(a) {
var b, c, d = "";
for (c = 0; c < (a || "").length; c++)
b = a.charCodeAt(c),
d += "\\x" + (16 > b ? "0" : "") + b.toString(16).toUpperCase();
return d
}
,
c.findCompression = function(a) {
for (var b in i)
if (i.hasOwnProperty(b) && i[b].magic === a)
return i[b];
return null
}
,
c.isRegExp = function(a) {
return "[object RegExp]" === Object.prototype.toString.call(a)
}
}
, {
"./compressions": 3,
"./nodeBuffer": 17,
"./support": 12
}],
15: [function(a, b) {
"use strict";
function c(a, b) {
this.files = [],
this.loadOptions = b,
a && this.load(a)
}
var d = a("./stringReader")
, e = a("./nodeBufferReader")
, f = a("./uint8ArrayReader")
, g = a("./utils")
, h = a("./signature")
, i = a("./zipEntry")
, j = a("./support");
c.prototype = {
checkSignature: function(a) {
var b = this.reader.readString(4);
if (b !== a)
throw new Error("Corrupted zip or bug : unexpected signature (" + g.pretty(b) + ", expected " + g.pretty(a) + ")")
},
readBlockEndOfCentral: function() {
this.diskNumber = this.reader.readInt(2),
this.diskWithCentralDirStart = this.reader.readInt(2),
this.centralDirRecordsOnThisDisk = this.reader.readInt(2),
this.centralDirRecords = this.reader.readInt(2),
this.centralDirSize = this.reader.readInt(4),
this.centralDirOffset = this.reader.readInt(4),
this.zipCommentLength = this.reader.readInt(2),
this.zipComment = this.reader.readString(this.zipCommentLength)
},
readBlockZip64EndOfCentral: function() {
this.zip64EndOfCentralSize = this.reader.readInt(8),
this.versionMadeBy = this.reader.readString(2),
this.versionNeeded = this.reader.readInt(2),
this.diskNumber = this.reader.readInt(4),
this.diskWithCentralDirStart = this.reader.readInt(4),
this.centralDirRecordsOnThisDisk = this.reader.readInt(8),
this.centralDirRecords = this.reader.readInt(8),
this.centralDirSize = this.reader.readInt(8),
this.centralDirOffset = this.reader.readInt(8),
this.zip64ExtensibleData = http://www.mamicode.com/{};
for (var a, b, c, d = this.zip64EndOfCentralSize - 44, e = 0; d > e; )
a = this.reader.readInt(2),
b = this.reader.readInt(4),
c = this.reader.readString(b),
this.zip64ExtensibleData[a] = {
id: a,
length: b,
value: c
}
},
readBlockZip64EndOfCentralLocator: function() {
if (this.diskWithZip64CentralDirStart = this.reader.readInt(4),
this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8),
this.disksCount = this.reader.readInt(4),
this.disksCount > 1)
throw new Error("Multi-volumes zip are not supported")
},
readLocalFiles: function() {
var a, b;
for (a = 0; a < this.files.length; a++)
b = this.files[a],
this.reader.setIndex(b.localHeaderOffset),
this.checkSignature(h.LOCAL_FILE_HEADER),
b.readLocalPart(this.reader),
b.handleUTF8()
},
readCentralDir: function() {
var a;
for (this.reader.setIndex(this.centralDirOffset); this.reader.readString(4) === h.CENTRAL_FILE_HEADER; )
a = new i({
zip64: this.zip64
},this.loadOptions),
a.readCentralPart(this.reader),
this.files.push(a)
},
readEndOfCentral: function() {
var a = this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);
if (-1 === a)
throw new Error("Corrupted zip : can‘t find end of central directory");
if (this.reader.setIndex(a),
this.checkSignature(h.CENTRAL_DIRECTORY_END),
this.readBlockEndOfCentral(),
this.diskNumber === g.MAX_VALUE_16BITS || this.diskWithCentralDirStart === g.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === g.MAX_VALUE_16BITS || this.centralDirRecords === g.MAX_VALUE_16BITS || this.centralDirSize === g.MAX_VALUE_32BITS || this.centralDirOffset === g.MAX_VALUE_32BITS) {
if (this.zip64 = !0,
a = this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),
-1 === a)
throw new Error("Corrupted zip : can‘t find the ZIP64 end of central directory locator");
this.reader.setIndex(a),
this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),
this.readBlockZip64EndOfCentralLocator(),
this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),
this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),
this.readBlockZip64EndOfCentral()
}
},
prepareReader: function(a) {
var b = g.getTypeOf(a);
this.reader = "string" !== b || j.uint8array ? "nodebuffer" === b ? new e(a) : new f(g.transformTo("uint8array", a)) : new d(a,this.loadOptions.optimizedBinaryString)
},
load: function(a) {
this.prepareReader(a),
this.readEndOfCentral(),
this.readCentralDir(),
this.readLocalFiles()
}
},
b.exports = c
}
, {
"./nodeBufferReader": 17,
"./signature": 10,
"./stringReader": 11,
"./support": 12,
"./uint8ArrayReader": 13,
"./utils": 14,
"./zipEntry": 16
}],
16: [function(a, b) {
"use strict";
function c(a, b) {
this.options = a,
this.loadOptions = b
}
var d = a("./stringReader")
, e = a("./utils")
, f = a("./compressedObject")
, g = a("./object");
c.prototype = {
isEncrypted: function() {
return 1 === (1 & this.bitFlag)
},
useUTF8: function() {
return 2048 === (2048 & this.bitFlag)
},
prepareCompressedContent: function(a, b, c) {
return function() {
var d = a.index;
a.setIndex(b);
var e = a.readData(c);
return a.setIndex(d),
e
}
},
prepareContent: function(a, b, c, d, f) {
return function() {
var a = e.transformTo(d.uncompressInputType, this.getCompressedContent())
, b = d.uncompress(a);
if (b.length !== f)
throw new Error("Bug : uncompressed data size mismatch");
return b
}
},
readLocalPart: function(a) {
var b, c;
if (a.skip(22),
this.fileNameLength = a.readInt(2),
c = a.readInt(2),
this.fileName = a.readString(this.fileNameLength),
a.skip(c),
-1 == this.compressedSize || -1 == this.uncompressedSize)
throw new Error("Bug or corrupted zip : didn‘t get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)");
if (b = e.findCompression(this.compressionMethod),
null === b)
throw new Error("Corrupted zip : compression " + e.pretty(this.compressionMethod) + " unknown (inner file : " + this.fileName + ")");
if (this.decompressed = new f,
this.decompressed.compressedSize = this.compressedSize,
this.decompressed.uncompressedSize = this.uncompressedSize,
this.decompressed.crc32 = this.crc32,
this.decompressed.compressionMethod = this.compressionMethod,
this.decompressed.getCompressedContent = this.prepareCompressedContent(a, a.index, this.compressedSize, b),
this.decompressed.getContent = this.prepareContent(a, a.index, this.compressedSize, b, this.uncompressedSize),
this.loadOptions.checkCRC32 && (this.decompressed = e.transformTo("string", this.decompressed.getContent()),
g.crc32(this.decompressed) !== this.crc32))
throw new Error("Corrupted zip : CRC32 mismatch")
},
readCentralPart: function(a) {
if (this.versionMadeBy = a.readString(2),
this.versionNeeded = a.readInt(2),
this.bitFlag = a.readInt(2),
this.compressionMethod = a.readString(2),
this.date = a.readDate(),
this.crc32 = a.readInt(4),
this.compressedSize = a.readInt(4),
this.uncompressedSize = a.readInt(4),
this.fileNameLength = a.readInt(2),
this.extraFieldsLength = a.readInt(2),
this.fileCommentLength = a.readInt(2),
this.diskNumberStart = a.readInt(2),
this.internalFileAttributes = a.readInt(2),
this.externalFileAttributes = a.readInt(4),
this.localHeaderOffset = a.readInt(4),
this.isEncrypted())
throw new Error("Encrypted zip are not supported");
this.fileName = a.readString(this.fileNameLength),
this.readExtraFields(a),
this.parseZIP64ExtraField(a),
this.fileComment = a.readString(this.fileCommentLength),
this.dir = 16 & this.externalFileAttributes ? !0 : !1
},
parseZIP64ExtraField: function() {
if (this.extraFields[1]) {
var a = new d(this.extraFields[1].value);
this.uncompressedSize === e.MAX_VALUE_32BITS && (this.uncompressedSize = a.readInt(8)),
this.compressedSize === e.MAX_VALUE_32BITS && (this.compressedSize = a.readInt(8)),
this.localHeaderOffset === e.MAX_VALUE_32BITS && (this.localHeaderOffset = a.readInt(8)),
this.diskNumberStart === e.MAX_VALUE_32BITS && (this.diskNumberStart = a.readInt(4))
}
},
readExtraFields: function(a) {
var b, c, d, e = a.index;
for (this.extraFields = this.extraFields || {}; a.index < e + this.extraFieldsLength; )
b = a.readInt(2),
c = a.readInt(2),
d = a.readString(c),
this.extraFields[b] = {
id: b,
length: c,
value: d
}
},
handleUTF8: function() {
if (this.useUTF8())
this.fileName = g.utf8decode(this.fileName),
this.fileComment = g.utf8decode(this.fileComment);
else {
var a = this.findExtraFieldUnicodePath();
null !== a && (this.fileName = a)
}
},
findExtraFieldUnicodePath: function() {
var a = this.extraFields[28789];
if (a) {
var b = new d(a.value);
return 1 !== b.readInt(1) ? null : g.crc32(this.fileName) !== b.readInt(4) ? null : g.utf8decode(b.readString(a.length - 5))
}
return null
}
},
b.exports = c
}
, {
"./compressedObject": 2,
"./object": 9,
"./stringReader": 11,
"./utils": 14
}],
17: [function() {}
, {}],
18: [function(a, b) {
var c = b.exports = {};
c.nextTick = function() {
var a = "undefined" != typeof window && window.setImmediate
, b = "undefined" != typeof window && window.postMessage && window.addEventListener;
if (a)
return function(a) {
return window.setImmediate(a)
}
;
if (b) {
var c = [];
return window.addEventListener("message", function(a) {
var b = a.source;
if ((b === window || null === b) && "process-tick" === a.data && (a.stopPropagation(),
c.length > 0)) {
var d = c.shift();
d()
}
}, !0),
function(a) {
c.push(a),
window.postMessage("process-tick", "*")
}
}
return function(a) {
setTimeout(a, 0)
}
}(),
c.title = "browser",
c.browser = !0,
c.env = {},
c.argv = [],
c.binding = function() {
throw new Error("process.binding is not supported")
}
,
c.cwd = function() {
return "/"
}
,
c.chdir = function() {
throw new Error("process.chdir is not supported")
}
}
, {}],
19: [function() {
/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */
(function() {
"use strict";
function a(a, b) {
var c = a.split(".")
, d = n;
!(c[0]in d) && d.execScript && d.execScript("var " + c[0]);
for (var e; c.length && (e = c.shift()); )
c.length || b === l ? d = d[e] ? d[e] : d[e] = {} : d[e] = b
}
function b(a, b) {
if (this.index = "number" == typeof b ? b : 0,
this.d = 0,
this.buffer = a instanceof (o ? Uint8Array : Array) ? a : new (o ? Uint8Array : Array)(32768),
2 * this.buffer.length <= this.index)
throw Error("invalid index");
this.buffer.length <= this.index && c(this)
}
function c(a) {
var b, c = a.buffer, d = c.length, e = new (o ? Uint8Array : Array)(d << 1);
if (o)
e.set(c);
else
for (b = 0; d > b; ++b)
e[b] = c[b];
return a.buffer = e
}
function d(a) {
this.buffer = new (o ? Uint16Array : Array)(2 * a),
this.length = 0
}
function e(a, b) {
this.e = w,
this.f = 0,
this.input = o && a instanceof Array ? new Uint8Array(a) : a,
this.c = 0,
b && (b.lazy && (this.f = b.lazy),
"number" == typeof b.compressionType && (this.e = b.compressionType),
b.outputBuffer && (this.b = o && b.outputBuffer instanceof Array ? new Uint8Array(b.outputBuffer) : b.outputBuffer),
"number" == typeof b.outputIndex && (this.c = b.outputIndex)),
this.b || (this.b = new (o ? Uint8Array : Array)(32768))
}
function f(a, b) {
this.length = a,
this.g = b
}
function g(a, b) {
function c(a, b) {
var c, d = a.g, e = [], f = 0;
c = z[a.length],
e[f++] = 65535 & c,
e[f++] = c >> 16 & 255,
e[f++] = c >> 24;
var g;
switch (m) {
case 1 === d:
g = [0, d - 1, 0];
break;
case 2 === d:
g = [1, d - 2, 0];
break;
case 3 === d:
g = [2, d - 3, 0];
break;
case 4 === d:
g = [3, d - 4, 0];
break;
case 6 >= d:
g = [4, d - 5, 1];
break;
case 8 >= d:
g = [5, d - 7, 1];
break;
case 12 >= d:
g = [6, d - 9, 2];
break;
case 16 >= d:
g = [7, d - 13, 2];
break;
case 24 >= d:
g = [8, d - 17, 3];
break;
case 32 >= d:
g = [9, d - 25, 3];
break;
case 48 >= d:
g = [10, d - 33, 4];
break;
case 64 >= d:
g = [11, d - 49, 4];
break;
case 96 >= d:
g = [12, d - 65, 5];
break;
case 128 >= d:
g = [13, d - 97, 5];
break;
case 192 >= d:
g = [14, d - 129, 6];
break;
case 256 >= d:
g = [15, d - 193, 6];
break;
case 384 >= d:
g = [16, d - 257, 7];
break;
case 512 >= d:
g = [17, d - 385, 7];
break;
case 768 >= d:
g = [18, d - 513, 8];
break;
case 1024 >= d:
g = [19, d - 769, 8];
break;
case 1536 >= d:
g = [20, d - 1025, 9];
break;
case 2048 >= d:
g = [21, d - 1537, 9];
break;
case 3072 >= d:
g = [22, d - 2049, 10];
break;
case 4096 >= d:
g = [23, d - 3073, 10];
break;
case 6144 >= d:
g = [24, d - 4097, 11];
break;
case 8192 >= d:
g = [25, d - 6145, 11];
break;
case 12288 >= d:
g = [26, d - 8193, 12];
break;
case 16384 >= d:
g = [27, d - 12289, 12];
break;
case 24576 >= d:
g = [28, d - 16385, 13];
break;
case 32768 >= d:
g = [29, d - 24577, 13];
break;
default:
throw "invalid distance"
}
c = g,
e[f++] = c[0],
e[f++] = c[1],
e[f++] = c[2];
var h, i;
for (h = 0,
i = e.length; i > h; ++h)
r[s++] = e[h];
u[e[0]]++,
v[e[3]]++,
t = a.length + b - 1,
n = null
}
var d, e, f, g, i, j, k, n, p, q = {}, r = o ? new Uint16Array(2 * b.length) : [], s = 0, t = 0, u = new (o ? Uint32Array : Array)(286), v = new (o ? Uint32Array : Array)(30), w = a.f;
if (!o) {
for (f = 0; 285 >= f; )
u[f++] = 0;
for (f = 0; 29 >= f; )
v[f++] = 0
}
for (u[256] = 1,
d = 0,
e = b.length; e > d; ++d) {
for (f = i = 0,
g = 3; g > f && d + f !== e; ++f)
i = i << 8 | b[d + f];
if (q[i] === l && (q[i] = []),
j = q[i],
!(0 < t--)) {
for (; 0 < j.length && 32768 < d - j[0]; )
j.shift();
if (d + 3 >= e) {
for (n && c(n, -1),
f = 0,
g = e - d; g > f; ++f)
p = b[d + f],
r[s++] = p,
++u[p];
break
}
0 < j.length ? (k = h(b, d, j),
n ? n.length < k.length ? (p = b[d - 1],
r[s++] = p,
++u[p],
c(k, 0)) : c(n, -1) : k.length < w ? n = k : c(k, 0)) : n ? c(n, -1) : (p = b[d],
r[s++] = p,
++u[p])
}
j.push(d)
}
return r[s++] = 256,
u[256]++,
a.j = u,
a.i = v,
o ? r.subarray(0, s) : r
}
function h(a, b, c) {
var d, e, g, h, i, j, k = 0, l = a.length;
h = 0,
j = c.length;
a: for (; j > h; h++) {
if (d = c[j - h - 1],
g = 3,
k > 3) {
for (i = k; i > 3; i--)
if (a[d + i - 1] !== a[b + i - 1])
continue a;
g = k
}
for (; 258 > g && l > b + g && a[d + g] === a[b + g]; )
++g;
if (g > k && (e = d,
k = g),
258 === g)
break
}
return new f(k,b - e)
}
function i(a, b) {
var c, e, f, g, h, i = a.length, k = new d(572), l = new (o ? Uint8Array : Array)(i);
if (!o)
for (g = 0; i > g; g++)
l[g] = 0;
for (g = 0; i > g; ++g)
0 < a[g] && k.push(g, a[g]);
if (c = Array(k.length / 2),
e = new (o ? Uint32Array : Array)(k.length / 2),
1 === c.length)
return l[k.pop().index] = 1,
l;
for (g = 0,
h = k.length / 2; h > g; ++g)
c[g] = k.pop(),
e[g] = c[g].value;
for (f = j(e, e.length, b),
g = 0,
h = c.length; h > g; ++g)
l[c[g].index] = f[g];
return l
}
function j(a, b, c) {
function d(a) {
var c = n[a][p[a]];
c === b ? (d(a + 1),
d(a + 1)) : --l[c],
++p[a]
}
var e, f, g, h, i, j = new (o ? Uint16Array : Array)(c), k = new (o ? Uint8Array : Array)(c), l = new (o ? Uint8Array : Array)(b), m = Array(c), n = Array(c), p = Array(c), q = (1 << c) - b, r = 1 << c - 1;
for (j[c - 1] = b,
f = 0; c > f; ++f)
r > q ? k[f] = 0 : (k[f] = 1,
q -= r),
q <<= 1,
j[c - 2 - f] = (j[c - 1 - f] / 2 | 0) + b;
for (j[0] = k[0],
m[0] = Array(j[0]),
n[0] = Array(j[0]),
f = 1; c > f; ++f)
j[f] > 2 * j[f - 1] + k[f] && (j[f] = 2 * j[f - 1] + k[f]),
m[f] = Array(j[f]),
n[f] = Array(j[f]);
for (e = 0; b > e; ++e)
l[e] = c;
for (g = 0; g < j[c - 1]; ++g)
m[c - 1][g] = a[g],
n[c - 1][g] = g;
for (e = 0; c > e; ++e)
p[e] = 0;
for (1 === k[c - 1] && (--l[0],
++p[c - 1]),
f = c - 2; f >= 0; --f) {
for (h = e = 0,
i = p[f + 1],
g = 0; g < j[f]; g++)
h = m[f + 1][i] + m[f + 1][i + 1],
h > a[e] ? (m[f][g] = h,
n[f][g] = b,
i += 2) : (m[f][g] = a[e],
n[f][g] = e,
++e);
p[f] = 0,
1 === k[f] && d(f)
}
return l
}
function k(a) {
var b, c, d, e, f = new (o ? Uint16Array : Array)(a.length), g = [], h = [], i = 0;
for (b = 0,
c = a.length; c > b; b++)
g[a[b]] = (0 | g[a[b]]) + 1;
for (b = 1,
c = 16; c >= b; b++)
h[b] = i,
i += 0 | g[b],
i <<= 1;
for (b = 0,
c = a.length; c > b; b++)
for (i = h[a[b]],
h[a[b]] += 1,
d = f[b] = 0,
e = a[b]; e > d; d++)
f[b] = f[b] << 1 | 1 & i,
i >>>= 1;
return f
}
var l = void 0
, m = !0
, n = this
, o = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array && "undefined" != typeof DataView;
b.prototype.a = function(a, b, d) {
var e, f = this.buffer, g = this.index, h = this.d, i = f[g];
if (d && b > 1 && (a = b > 8 ? (u[255 & a] << 24 | u[a >>> 8 & 255] << 16 | u[a >>> 16 & 255] << 8 | u[a >>> 24 & 255]) >> 32 - b : u[a] >> 8 - b),
8 > b + h)
i = i << b | a,
h += b;
else
for (e = 0; b > e; ++e)
i = i << 1 | a >> b - e - 1 & 1,
8 === ++h && (h = 0,
f[g++] = u[i],
i = 0,
g === f.length && (f = c(this)));
f[g] = i,
this.buffer = f,
this.d = h,
this.index = g
}
,
b.prototype.finish = function() {
var a, b = this.buffer, c = this.index;
return 0 < this.d && (b[c] <<= 8 - this.d,
b[c] = u[b[c]],
c++),
o ? a = b.subarray(0, c) : (b.length = c,
a = b),
a
}
;
var p, q = new (o ? Uint8Array : Array)(256);
for (p = 0; 256 > p; ++p) {
for (var r = p, s = r, t = 7, r = r >>> 1; r; r >>>= 1)
s <<= 1,
s |= 1 & r,
--t;
q[p] = (s << t & 255) >>> 0
}
var u = q;
d.prototype.getParent = function(a) {
return 2 * ((a - 2) / 4 | 0)
}
,
d.prototype.push = function(a, b) {
var c, d, e, f = this.buffer;
for (c = this.length,
f[this.length++] = b,
f[this.length++] = a; c > 0 && (d = this.getParent(c),
f[c] > f[d]); )
e = f[c],
f[c] = f[d],
f[d] = e,
e = f[c + 1],
f[c + 1] = f[d + 1],
f[d + 1] = e,
c = d;
return this.length
}
,
d.prototype.pop = function() {
var a, b, c, d, e, f = this.buffer;
for (b = f[0],
a = f[1],
this.length -= 2,
f[0] = f[this.length],
f[1] = f[this.length + 1],
e = 0; d = 2 * e + 2,
!(d >= this.length) && (d + 2 < this.length && f[d + 2] > f[d] && (d += 2),
f[d] > f[e]); )
c = f[e],
f[e] = f[d],
f[d] = c,
c = f[e + 1],
f[e + 1] = f[d + 1],
f[d + 1] = c,
e = d;
return {
index: a,
value: b,
length: this.length
}
}
;
var v, w = 2, x = [];
for (v = 0; 288 > v; v++)
switch (m) {
case 143 >= v:
x.push([v + 48, 8]);
break;
case 255 >= v:
x.push([v - 144 + 400, 9]);
break;
case 279 >= v:
x.push([v - 256 + 0, 7]);
break;
case 287 >= v:
x.push([v - 280 + 192, 8]);
break;
default:
throw "invalid literal: " + v
}
e.prototype.h = function() {
var a, c, d, e, f = this.input;
switch (this.e) {
case 0:
for (d = 0,
e = f.length; e > d; ) {
c = o ? f.subarray(d, d + 65535) : f.slice(d, d + 65535),
d += c.length;
var h = c
, j = d === e
, n = l
, p = l
, q = l
, r = l
, s = l
, t = this.b
, u = this.c;
if (o) {
for (t = new Uint8Array(this.b.buffer); t.length <= u + h.length + 5; )
t = new Uint8Array(t.length << 1);
t.set(this.b)
}
if (n = j ? 1 : 0,
t[u++] = 0 | n,
p = h.length,
q = ~p + 65536 & 65535,
t[u++] = 255 & p,
t[u++] = p >>> 8 & 255,
t[u++] = 255 & q,
t[u++] = q >>> 8 & 255,
o)
t.set(h, u),
u += h.length,
t = t.subarray(0, u);
else {
for (r = 0,
s = h.length; s > r; ++r)
t[u++] = h[r];
t.length = u
}
this.c = u,
this.b = t
}
break;
case 1:
var v = new b(o ? new Uint8Array(this.b.buffer) : this.b,this.c);
v.a(1, 1, m),
v.a(1, 2, m);
var y, z, A, B = g(this, f);
for (y = 0,
z = B.length; z > y; y++)
if (A = B[y],
b.prototype.a.apply(v, x[A]),
A > 256)
v.a(B[++y], B[++y], m),
v.a(B[++y], 5),
v.a(B[++y], B[++y], m);
else if (256 === A)
break;
this.b = v.finish(),
this.c = this.b.length;
break;
case w:
var C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R = new b(o ? new Uint8Array(this.b.buffer) : this.b,this.c), S = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], T = Array(19);
for (C = w,
R.a(1, 1, m),
R.a(C, 2, m),
D = g(this, f),
H = i(this.j, 15),
I = k(H),
J = i(this.i, 7),
K = k(J),
E = 286; E > 257 && 0 === H[E - 1]; E--)
;
for (F = 30; F > 1 && 0 === J[F - 1]; F--)
;
var U, V, W, X, Y, Z, $ = E, _ = F, ab = new (o ? Uint32Array : Array)($ + _), bb = new (o ? Uint32Array : Array)(316), cb = new (o ? Uint8Array : Array)(19);
for (U = V = 0; $ > U; U++)
ab[V++] = H[U];
for (U = 0; _ > U; U++)
ab[V++] = J[U];
if (!o)
for (U = 0,
X = cb.length; X > U; ++U)
cb[U] = 0;
for (U = Y = 0,
X = ab.length; X > U; U += V) {
for (V = 1; X > U + V && ab[U + V] === ab[U]; ++V)
;
if (W = V,
0 === ab[U])
if (3 > W)
for (; 0 < W--; )
bb[Y++] = 0,
cb[0]++;
else
for (; W > 0; )
Z = 138 > W ? W : 138,
Z > W - 3 && W > Z && (Z = W - 3),
10 >= Z ? (bb[Y++] = 17,
bb[Y++] = Z - 3,
cb[17]++) : (bb[Y++] = 18,
bb[Y++] = Z - 11,
cb[18]++),
W -= Z;
else if (bb[Y++] = ab[U],
cb[ab[U]]++,
W--,
3 > W)
for (; 0 < W--; )
bb[Y++] = ab[U],
cb[ab[U]]++;
else
for (; W > 0; )
Z = 6 > W ? W : 6,
Z > W - 3 && W > Z && (Z = W - 3),
bb[Y++] = 16,
bb[Y++] = Z - 3,
cb[16]++,
W -= Z
}
for (a = o ? bb.subarray(0, Y) : bb.slice(0, Y),
L = i(cb, 7),
P = 0; 19 > P; P++)
T[P] = L[S[P]];
for (G = 19; G > 4 && 0 === T[G - 1]; G--)
;
for (M = k(L),
R.a(E - 257, 5, m),
R.a(F - 1, 5, m),
R.a(G - 4, 4, m),
P = 0; G > P; P++)
R.a(T[P], 3, m);
for (P = 0,
Q = a.length; Q > P; P++)
if (N = a[P],
R.a(M[N], L[N], m),
N >= 16) {
switch (P++,
N) {
case 16:
O = 2;
break;
case 17:
O = 3;
break;
case 18:
O = 7;
break;
default:
throw "invalid code: " + N
}
R.a(a[P], O, m)
}
var db, eb, fb, gb, hb, ib, jb, kb, lb = [I, H], mb = [K, J];
for (hb = lb[0],
ib = lb[1],
jb = mb[0],
kb = mb[1],
db = 0,
eb = D.length; eb > db; ++db)
if (fb = D[db],
R.a(hb[fb], ib[fb], m),
fb > 256)
R.a(D[++db], D[++db], m),
gb = D[++db],
R.a(jb[gb], kb[gb], m),
R.a(D[++db], D[++db], m);
else if (256 === fb)
break;
this.b = R.finish(),
this.c = this.b.length;
break;
default:
throw "invalid compression type"
}
return this.b
}
;
var y = function() {
function a(a) {
switch (m) {
case 3 === a:
return [257, a - 3, 0];
case 4 === a:
return [258, a - 4, 0];
case 5 === a:
return [259, a - 5, 0];
case 6 === a:
return [260, a - 6, 0];
case 7 === a:
return [261, a - 7, 0];
case 8 === a:
return [262, a - 8, 0];
case 9 === a:
return [263, a - 9, 0];
case 10 === a:
return [264, a - 10, 0];
case 12 >= a:
return [265, a - 11, 1];
case 14 >= a:
return [266, a - 13, 1];
case 16 >= a:
return [267, a - 15, 1];
case 18 >= a:
return [268, a - 17, 1];
case 22 >= a:
return [269, a - 19, 2];
case 26 >= a:
return [270, a - 23, 2];
case 30 >= a:
return [271, a - 27, 2];
case 34 >= a:
return [272, a - 31, 2];
case 42 >= a:
return [273, a - 35, 3];
case 50 >= a:
return [274, a - 43, 3];
case 58 >= a:
return [275, a - 51, 3];
case 66 >= a:
return [276, a - 59, 3];
case 82 >= a:
return [277, a - 67, 4];
case 98 >= a:
return [278, a - 83, 4];
case 114 >= a:
return [279, a - 99, 4];
case 130 >= a:
return [280, a - 115, 4];
case 162 >= a:
return [281, a - 131, 5];
case 194 >= a:
return [282, a - 163, 5];
case 226 >= a:
return [283, a - 195, 5];
case 257 >= a:
return [284, a - 227, 5];
case 258 === a:
return [285, a - 258, 0];
default:
throw "invalid length: " + a
}
}
var b, c, d = [];
for (b = 3; 258 >= b; b++)
c = a(b),
d[b] = c[2] << 24 | c[1] << 16 | c[0];
return d
}()
, z = o ? new Uint32Array(y) : y;
a("Zlib.RawDeflate", e),
a("Zlib.RawDeflate.prototype.compress", e.prototype.h);
var A, B, C, D, E = {
NONE: 0,
FIXED: 1,
DYNAMIC: w
};
if (Object.keys)
A = Object.keys(E);
else
for (B in A = [],
C = 0,
E)
A[C++] = B;
for (C = 0,
D = A.length; D > C; ++C)
B = A[C],
a("Zlib.RawDeflate.CompressionType." + B, E[B])
}
).call(this)
}
, {}],
20: [function() {
/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */
(function() {
"use strict";
function a(a, b) {
var c = a.split(".")
, d = g;
!(c[0]in d) && d.execScript && d.execScript("var " + c[0]);
for (var e; c.length && (e = c.shift()); )
c.length || void 0 === b ? d = d[e] ? d[e] : d[e] = {} : d[e] = b
}
function b(a) {
var b, c, d, e, f, g, i, j, k, l, m = a.length, n = 0, o = Number.POSITIVE_INFINITY;
for (j = 0; m > j; ++j)
a[j] > n && (n = a[j]),
a[j] < o && (o = a[j]);
for (b = 1 << n,
c = new (h ? Uint32Array : Array)(b),
d = 1,
e = 0,
f = 2; n >= d; ) {
for (j = 0; m > j; ++j)
if (a[j] === d) {
for (g = 0,
i = e,
k = 0; d > k; ++k)
g = g << 1 | 1 & i,
i >>= 1;
for (l = d << 16 | j,
k = g; b > k; k += f)
c[k] = l;
++e
}
++d,
e <<= 1,
f <<= 1
}
return [c, n, o]
}
function c(a, b) {
switch (this.g = [],
this.h = 32768,
this.c = this.f = this.d = this.k = 0,
this.input = h ? new Uint8Array(a) : a,
this.l = !1,
this.i = j,
this.q = !1,
(b || !(b = {})) && (b.index && (this.d = b.index),
b.bufferSize && (this.h = b.bufferSize),
b.bufferType && (this.i = b.bufferType),
b.resize && (this.q = b.resize)),
this.i) {
case i:
this.a = 32768,
this.b = new (h ? Uint8Array : Array)(32768 + this.h + 258);
break;
case j:
this.a = 0,
this.b = new (h ? Uint8Array : Array)(this.h),
this.e = this.v,
this.m = this.s,
this.j = this.t;
break;
default:
throw Error("invalid inflate mode")
}
}
function d(a, b) {
for (var c, d = a.f, e = a.c, f = a.input, g = a.d, h = f.length; b > e; ) {
if (g >= h)
throw Error("input buffer is broken");
d |= f[g++] << e,
e += 8
}
return c = d & (1 << b) - 1,
a.f = d >>> b,
a.c = e - b,
a.d = g,
c
}
function e(a, b) {
for (var c, d, e = a.f, f = a.c, g = a.input, h = a.d, i = g.length, j = b[0], k = b[1]; k > f && !(h >= i); )
e |= g[h++] << f,
f += 8;
return c = j[e & (1 << k) - 1],
d = c >>> 16,
a.f = e >> d,
a.c = f - d,
a.d = h,
65535 & c
}
function f(a) {
function c(a, b, c) {
var f, g, h, i = this.p;
for (h = 0; a > h; )
switch (f = e(this, b)) {
case 16:
for (g = 3 + d(this, 2); g--; )
c[h++] = i;
break;
case 17:
for (g = 3 + d(this, 3); g--; )
c[h++] = 0;
i = 0;
break;
case 18:
for (g = 11 + d(this, 7); g--; )
c[h++] = 0;
i = 0;
break;
default:
i = c[h++] = f
}
return this.p = i,
c
}
var f, g, i, j, k = d(a, 5) + 257, l = d(a, 5) + 1, m = d(a, 4) + 4, o = new (h ? Uint8Array : Array)(n.length);
for (j = 0; m > j; ++j)
o[n[j]] = d(a, 3);
if (!h)
for (j = m,
m = o.length; m > j; ++j)
o[n[j]] = 0;
f = b(o),
g = new (h ? Uint8Array : Array)(k),
i = new (h ? Uint8Array : Array)(l),
a.p = 0,
a.j(b(c.call(a, k, f, g)), b(c.call(a, l, f, i)))
}
var g = this
, h = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array && "undefined" != typeof DataView
, i = 0
, j = 1;
c.prototype.u = function() {
for (; !this.l; ) {
var a = d(this, 3);
switch (1 & a && (this.l = !0),
a >>>= 1) {
case 0:
var b = this.input
, c = this.d
, e = this.b
, g = this.a
, k = b.length
, l = void 0
, m = void 0
, n = e.length
, o = void 0;
if (this.c = this.f = 0,
c + 1 >= k)
throw Error("invalid uncompressed block header: LEN");
if (l = b[c++] | b[c++] << 8,
c + 1 >= k)
throw Error("invalid uncompressed block header: NLEN");
if (m = b[c++] | b[c++] << 8,
l === ~m)
throw Error("invalid uncompressed block header: length verify");
if (c + l > b.length)
throw Error("input buffer is broken");
switch (this.i) {
case i:
for (; g + l > e.length; ) {
if (o = n - g,
l -= o,
h)
e.set(b.subarray(c, c + o), g),
g += o,
c += o;
else
for (; o--; )
e[g++] = b[c++];
this.a = g,
e = this.e(),
g = this.a
}
break;
case j:
for (; g + l > e.length; )
e = this.e({
o: 2
});
break;
default:
throw Error("invalid inflate mode")
}
if (h)
e.set(b.subarray(c, c + l), g),
g += l,
c += l;
else
for (; l--; )
e[g++] = b[c++];
this.d = c,
this.a = g,
this.b = e;
break;
case 1:
this.j(z, B);
break;
case 2:
f(this);
break;
default:
throw Error("unknown BTYPE: " + a)
}
}
return this.m()
}
;
var k, l, m = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], n = h ? new Uint16Array(m) : m, o = [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, 258, 258], p = h ? new Uint16Array(o) : o, q = [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], r = h ? new Uint8Array(q) : q, 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], t = h ? new Uint16Array(s) : s, u = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], v = h ? new Uint8Array(u) : u, w = new (h ? Uint8Array : Array)(288);
for (k = 0,
l = w.length; l > k; ++k)
w[k] = 143 >= k ? 8 : 255 >= k ? 9 : 279 >= k ? 7 : 8;
var x, y, z = b(w), A = new (h ? Uint8Array : Array)(30);
for (x = 0,
y = A.length; y > x; ++x)
A[x] = 5;
var B = b(A);
c.prototype.j = function(a, b) {
var c = this.b
, f = this.a;
this.n = a;
for (var g, h, i, j, k = c.length - 258; 256 !== (g = e(this, a)); )
if (256 > g)
f >= k && (this.a = f,
c = this.e(),
f = this.a),
c[f++] = g;
else
for (h = g - 257,
j = p[h],
0 < r[h] && (j += d(this, r[h])),
g = e(this, b),
i = t[g],
0 < v[g] && (i += d(this, v[g])),
f >= k && (this.a = f,
c = this.e(),
f = this.a); j--; )
c[f] = c[f++ - i];
for (; 8 <= this.c; )
this.c -= 8,
this.d--;
this.a = f
}
,
c.prototype.t = function(a, b) {
var c = this.b
, f = this.a;
this.n = a;
for (var g, h, i, j, k = c.length; 256 !== (g = e(this, a)); )
if (256 > g)
f >= k && (c = this.e(),
k = c.length),
c[f++] = g;
else
for (h = g - 257,
j = p[h],
0 < r[h] && (j += d(this, r[h])),
g = e(this, b),
i = t[g],
0 < v[g] && (i += d(this, v[g])),
f + j > k && (c = this.e(),
k = c.length); j--; )
c[f] = c[f++ - i];
for (; 8 <= this.c; )
this.c -= 8,
this.d--;
this.a = f
}
,
c.prototype.e = function() {
var a, b, c = new (h ? Uint8Array : Array)(this.a - 32768), d = this.a - 32768, e = this.b;
if (h)
c.set(e.subarray(32768, c.length));
else
for (a = 0,
b = c.length; b > a; ++a)
c[a] = e[a + 32768];
if (this.g.push(c),
this.k += c.length,
h)
e.set(e.subarray(d, d + 32768));
else
for (a = 0; 32768 > a; ++a)
e[a] = e[d + a];
return this.a = 32768,
e
}
,
c.prototype.v = function(a) {
var b, c, d, e, f = this.input.length / this.d + 1 | 0, g = this.input, i = this.b;
return a && ("number" == typeof a.o && (f = a.o),
"number" == typeof a.r && (f += a.r)),
2 > f ? (c = (g.length - this.d) / this.n[2],
e = 258 * (c / 2) | 0,
d = e < i.length ? i.length + e : i.length << 1) : d = i.length * f,
h ? (b = new Uint8Array(d),
b.set(i)) : b = i,
this.b = b
}
,
c.prototype.m = function() {
var a, b, c, d, e, f = 0, g = this.b, i = this.g, j = new (h ? Uint8Array : Array)(this.k + (this.a - 32768));
if (0 === i.length)
return h ? this.b.subarray(32768, this.a) : this.b.slice(32768, this.a);
for (b = 0,
c = i.length; c > b; ++b)
for (a = i[b],
d = 0,
e = a.length; e > d; ++d)
j[f++] = a[d];
for (b = 32768,
c = this.a; c > b; ++b)
j[f++] = g[b];
return this.g = [],
this.buffer = j
}
,
c.prototype.s = function() {
var a, b = this.a;
return h ? this.q ? (a = new Uint8Array(b),
a.set(this.b.subarray(0, b))) : a = this.b.subarray(0, b) : (this.b.length > b && (this.b.length = b),
a = this.b),
this.buffer = a
}
,
a("Zlib.RawInflate", c),
a("Zlib.RawInflate.prototype.decompress", c.prototype.u);
var C, D, E, F, G = {
ADAPTIVE: j,
BLOCK: i
};
if (Object.keys)
C = Object.keys(G);
else
for (D in C = [],
E = 0,
G)
C[E++] = D;
for (E = 0,
F = C.length; F > E; ++E)
D = C[E],
a("Zlib.RawInflate.BufferType." + D, G[D])
}
).call(this)
}
, {}]
}, {}, [7])(7)
})
JSZip