上传文件至 lib
This commit is contained in:
+69
File diff suppressed because one or more lines are too long
+607
@@ -0,0 +1,607 @@
|
|||||||
|
/*!
|
||||||
|
* Jinja Templating for JavaScript v0.1.8
|
||||||
|
* https://github.com/sstur/jinja-js
|
||||||
|
*
|
||||||
|
* This is a slimmed-down Jinja2 implementation [http://jinja.pocoo.org/]
|
||||||
|
*
|
||||||
|
* In the interest of simplicity, it deviates from Jinja2 as follows:
|
||||||
|
* - Line statements, cycle, super, macro tags and block nesting are not implemented
|
||||||
|
* - auto escapes html by default (the filter is "html" not "e")
|
||||||
|
* - Only "html" and "safe" filters are built in
|
||||||
|
* - Filters are not valid in expressions; `foo|length > 1` is not valid
|
||||||
|
* - Expression Tests (`if num is odd`) not implemented (`is` translates to `==` and `isnot` to `!=`)
|
||||||
|
*
|
||||||
|
* Notes:
|
||||||
|
* - if property is not found, but method '_get' exists, it will be called with the property name (and cached)
|
||||||
|
* - `{% for n in obj %}` iterates the object's keys; get the value with `{% for n in obj %}{{ obj[n] }}{% endfor %}`
|
||||||
|
* - subscript notation `a[0]` takes literals or simple variables but not `a[item.key]`
|
||||||
|
* - `.2` is not a valid number literal; use `0.2`
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/*global require, exports, module, define */
|
||||||
|
|
||||||
|
(function(global, factory) {
|
||||||
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||||
|
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
||||||
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jinja = {}));
|
||||||
|
})(this, (function(jinja) {
|
||||||
|
"use strict";
|
||||||
|
var STRINGS = /'(\\.|[^'])*'|"(\\.|[^"'"])*"/g;
|
||||||
|
var IDENTS_AND_NUMS = /([$_a-z][$\w]*)|([+-]?\d+(\.\d+)?)/g;
|
||||||
|
var NUMBER = /^[+-]?\d+(\.\d+)?$/;
|
||||||
|
//non-primitive literals (array and object literals)
|
||||||
|
var NON_PRIMITIVES = /\[[@#~](,[@#~])*\]|\[\]|\{([@i]:[@#~])(,[@i]:[@#~])*\}|\{\}/g;
|
||||||
|
//bare identifiers such as variables and in object literals: {foo: 'value'}
|
||||||
|
var IDENTIFIERS = /[$_a-z][$\w]*/ig;
|
||||||
|
var VARIABLES = /i(\.i|\[[@#i]\])*/g;
|
||||||
|
var ACCESSOR = /(\.i|\[[@#i]\])/g;
|
||||||
|
var OPERATORS = /(===?|!==?|>=?|<=?|&&|\|\||[+\-\*\/%])/g;
|
||||||
|
//extended (english) operators
|
||||||
|
var EOPS = /(^|[^$\w])(and|or|not|is|isnot)([^$\w]|$)/g;
|
||||||
|
var LEADING_SPACE = /^\s+/;
|
||||||
|
var TRAILING_SPACE = /\s+$/;
|
||||||
|
|
||||||
|
var START_TOKEN = /\{\{\{|\{\{|\{%|\{#/;
|
||||||
|
var TAGS = {
|
||||||
|
'{{{': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}\}/,
|
||||||
|
'{{': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}/,
|
||||||
|
'{%': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?%\}/,
|
||||||
|
'{#': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?#\}/
|
||||||
|
};
|
||||||
|
|
||||||
|
var delimeters = {
|
||||||
|
'{%': 'directive',
|
||||||
|
'{{': 'output',
|
||||||
|
'{#': 'comment'
|
||||||
|
};
|
||||||
|
|
||||||
|
var operators = {
|
||||||
|
and: '&&',
|
||||||
|
or: '||',
|
||||||
|
not: '!',
|
||||||
|
is: '==',
|
||||||
|
isnot: '!='
|
||||||
|
};
|
||||||
|
|
||||||
|
var constants = {
|
||||||
|
'true': true,
|
||||||
|
'false': false,
|
||||||
|
'null': null
|
||||||
|
};
|
||||||
|
|
||||||
|
function Parser() {
|
||||||
|
this.nest = [];
|
||||||
|
this.compiled = [];
|
||||||
|
this.childBlocks = 0;
|
||||||
|
this.parentBlocks = 0;
|
||||||
|
this.isSilent = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Parser.prototype.push = function(line) {
|
||||||
|
if (!this.isSilent) {
|
||||||
|
this.compiled.push(line);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Parser.prototype.parse = function(src) {
|
||||||
|
this.tokenize(src);
|
||||||
|
return this.compiled;
|
||||||
|
};
|
||||||
|
|
||||||
|
Parser.prototype.tokenize = function(src) {
|
||||||
|
var lastEnd = 0,
|
||||||
|
parser = this,
|
||||||
|
trimLeading = false;
|
||||||
|
matchAll(src, START_TOKEN, function(open, index, src) {
|
||||||
|
//here we match the rest of the src against a regex for this tag
|
||||||
|
var match = src.slice(index + open.length).match(TAGS[open]);
|
||||||
|
match = (match ? match[0] : '');
|
||||||
|
//here we sub out strings so we don't get false matches
|
||||||
|
var simplified = match.replace(STRINGS, '@');
|
||||||
|
//if we don't have a close tag or there is a nested open tag
|
||||||
|
if (!match || ~simplified.indexOf(open)) {
|
||||||
|
return index + 1;
|
||||||
|
}
|
||||||
|
var inner = match.slice(0, 0 - open.length);
|
||||||
|
//check for white-space collapse syntax
|
||||||
|
if (inner.charAt(0) === '-') var wsCollapseLeft = true;
|
||||||
|
if (inner.slice(-1) === '-') var wsCollapseRight = true;
|
||||||
|
inner = inner.replace(/^-|-$/g, '').trim();
|
||||||
|
//if we're in raw mode and we are not looking at an "endraw" tag, move along
|
||||||
|
if (parser.rawMode && (open + inner) !== '{%endraw') {
|
||||||
|
return index + 1;
|
||||||
|
}
|
||||||
|
var text = src.slice(lastEnd, index);
|
||||||
|
lastEnd = index + open.length + match.length;
|
||||||
|
if (trimLeading) text = trimLeft(text);
|
||||||
|
if (wsCollapseLeft) text = trimRight(text);
|
||||||
|
if (wsCollapseRight) trimLeading = true;
|
||||||
|
if (open === '{{{') {
|
||||||
|
//liquid-style: make {{{x}}} => {{x|safe}}
|
||||||
|
open = '{{';
|
||||||
|
inner += '|safe';
|
||||||
|
}
|
||||||
|
parser.textHandler(text);
|
||||||
|
parser.tokenHandler(open, inner);
|
||||||
|
});
|
||||||
|
var text = src.slice(lastEnd);
|
||||||
|
if (trimLeading) text = trimLeft(text);
|
||||||
|
this.textHandler(text);
|
||||||
|
};
|
||||||
|
|
||||||
|
Parser.prototype.textHandler = function(text) {
|
||||||
|
this.push('write(' + JSON.stringify(text) + ');');
|
||||||
|
};
|
||||||
|
|
||||||
|
Parser.prototype.tokenHandler = function(open, inner) {
|
||||||
|
var type = delimeters[open];
|
||||||
|
if (type === 'directive') {
|
||||||
|
this.compileTag(inner);
|
||||||
|
} else if (type === 'output') {
|
||||||
|
var extracted = this.extractEnt(inner, STRINGS, '@');
|
||||||
|
//replace || operators with ~
|
||||||
|
extracted.src = extracted.src.replace(/\|\|/g, '~').split('|');
|
||||||
|
//put back || operators
|
||||||
|
extracted.src = extracted.src.map(function(part) {
|
||||||
|
return part.split('~').join('||');
|
||||||
|
});
|
||||||
|
var parts = this.injectEnt(extracted, '@');
|
||||||
|
if (parts.length > 1) {
|
||||||
|
var filters = parts.slice(1).map(this.parseFilter.bind(this));
|
||||||
|
this.push('filter(' + this.parseExpr(parts[0]) + ',' + filters.join(',') + ');');
|
||||||
|
} else {
|
||||||
|
this.push('filter(' + this.parseExpr(parts[0]) + ');');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Parser.prototype.compileTag = function(str) {
|
||||||
|
var directive = str.split(' ')[0];
|
||||||
|
var handler = tagHandlers[directive];
|
||||||
|
if (!handler) {
|
||||||
|
throw new Error('Invalid tag: ' + str);
|
||||||
|
}
|
||||||
|
handler.call(this, str.slice(directive.length).trim());
|
||||||
|
};
|
||||||
|
|
||||||
|
Parser.prototype.parseFilter = function(src) {
|
||||||
|
src = src.trim();
|
||||||
|
var match = src.match(/[:(]/);
|
||||||
|
var i = match ? match.index : -1;
|
||||||
|
if (i < 0) return JSON.stringify([src]);
|
||||||
|
var name = src.slice(0, i);
|
||||||
|
var args = src.charAt(i) === ':' ? src.slice(i + 1) : src.slice(i + 1, -1);
|
||||||
|
args = this.parseExpr(args, {
|
||||||
|
terms: true
|
||||||
|
});
|
||||||
|
return '[' + JSON.stringify(name) + ',' + args + ']';
|
||||||
|
};
|
||||||
|
|
||||||
|
Parser.prototype.extractEnt = function(src, regex, placeholder) {
|
||||||
|
var subs = [],
|
||||||
|
isFunc = typeof placeholder == 'function';
|
||||||
|
src = src.replace(regex, function(str) {
|
||||||
|
var replacement = isFunc ? placeholder(str) : placeholder;
|
||||||
|
if (replacement) {
|
||||||
|
subs.push(str);
|
||||||
|
return replacement;
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
});
|
||||||
|
return {
|
||||||
|
src: src,
|
||||||
|
subs: subs
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
Parser.prototype.injectEnt = function(extracted, placeholder) {
|
||||||
|
var src = extracted.src,
|
||||||
|
subs = extracted.subs,
|
||||||
|
isArr = Array.isArray(src);
|
||||||
|
var arr = (isArr) ? src : [src];
|
||||||
|
var re = new RegExp('[' + placeholder + ']', 'g'),
|
||||||
|
i = 0;
|
||||||
|
arr.forEach(function(src, index) {
|
||||||
|
arr[index] = src.replace(re, function() {
|
||||||
|
return subs[i++];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return isArr ? arr : arr[0];
|
||||||
|
};
|
||||||
|
|
||||||
|
//replace complex literals without mistaking subscript notation with array literals
|
||||||
|
Parser.prototype.replaceComplex = function(s) {
|
||||||
|
var parsed = this.extractEnt(s, /i(\.i|\[[@#i]\])+/g, 'v');
|
||||||
|
parsed.src = parsed.src.replace(NON_PRIMITIVES, '~');
|
||||||
|
return this.injectEnt(parsed, 'v');
|
||||||
|
};
|
||||||
|
|
||||||
|
//parse expression containing literals (including objects/arrays) and variables (including dot and subscript notation)
|
||||||
|
//valid expressions: `a + 1 > b.c or c == null`, `a and b[1] != c`, `(a < b) or (c < d and e)`, 'a || [1]`
|
||||||
|
Parser.prototype.parseExpr = function(src, opts) {
|
||||||
|
opts = opts || {};
|
||||||
|
//extract string literals -> @
|
||||||
|
var parsed1 = this.extractEnt(src, STRINGS, '@');
|
||||||
|
//note: this will catch {not: 1} and a.is; could we replace temporarily and then check adjacent chars?
|
||||||
|
parsed1.src = parsed1.src.replace(EOPS, function(s, before, op, after) {
|
||||||
|
return (op in operators) ? before + operators[op] + after : s;
|
||||||
|
});
|
||||||
|
//sub out non-string literals (numbers/true/false/null) -> #
|
||||||
|
// the distinction is necessary because @ can be object identifiers, # cannot
|
||||||
|
var parsed2 = this.extractEnt(parsed1.src, IDENTS_AND_NUMS, function(s) {
|
||||||
|
return (s in constants || NUMBER.test(s)) ? '#' : null;
|
||||||
|
});
|
||||||
|
//sub out object/variable identifiers -> i
|
||||||
|
var parsed3 = this.extractEnt(parsed2.src, IDENTIFIERS, 'i');
|
||||||
|
//remove white-space
|
||||||
|
parsed3.src = parsed3.src.replace(/\s+/g, '');
|
||||||
|
|
||||||
|
//the rest of this is simply to boil the expression down and check validity
|
||||||
|
var simplified = parsed3.src;
|
||||||
|
//sub out complex literals (objects/arrays) -> ~
|
||||||
|
// the distinction is necessary because @ and # can be subscripts but ~ cannot
|
||||||
|
while (simplified !== (simplified = this.replaceComplex(simplified)));
|
||||||
|
//now @ represents strings, # represents other primitives and ~ represents non-primitives
|
||||||
|
//replace complex variables (those with dot/subscript accessors) -> v
|
||||||
|
while (simplified !== (simplified = simplified.replace(/i(\.i|\[[@#i]\])+/, 'v')));
|
||||||
|
//empty subscript or complex variables in subscript, are not permitted
|
||||||
|
simplified = simplified.replace(/[iv]\[v?\]/g, 'x');
|
||||||
|
//sub in "i" for @ and # and ~ and v (now "i" represents all literals, variables and identifiers)
|
||||||
|
simplified = simplified.replace(/[@#~v]/g, 'i');
|
||||||
|
//sub out operators
|
||||||
|
simplified = simplified.replace(OPERATORS, '%');
|
||||||
|
//allow 'not' unary operator
|
||||||
|
simplified = simplified.replace(/!+[i]/g, 'i');
|
||||||
|
var terms = opts.terms ? simplified.split(',') : [simplified];
|
||||||
|
terms.forEach(function(term) {
|
||||||
|
//simplify logical grouping
|
||||||
|
while (term !== (term = term.replace(/\(i(%i)*\)/g, 'i')));
|
||||||
|
if (!term.match(/^i(%i)*/)) {
|
||||||
|
throw new Error('Invalid expression: ' + src + " " + term);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
parsed3.src = parsed3.src.replace(VARIABLES, this.parseVar.bind(this));
|
||||||
|
parsed2.src = this.injectEnt(parsed3, 'i');
|
||||||
|
parsed1.src = this.injectEnt(parsed2, '#');
|
||||||
|
return this.injectEnt(parsed1, '@');
|
||||||
|
};
|
||||||
|
|
||||||
|
Parser.prototype.parseVar = function(src) {
|
||||||
|
var args = Array.prototype.slice.call(arguments);
|
||||||
|
var str = args.pop(),
|
||||||
|
index = args.pop();
|
||||||
|
//quote bare object identifiers (might be a reserved word like {while: 1})
|
||||||
|
if (src === 'i' && str.charAt(index + 1) === ':') {
|
||||||
|
return '"i"';
|
||||||
|
}
|
||||||
|
var parts = ['"i"'];
|
||||||
|
src.replace(ACCESSOR, function(part) {
|
||||||
|
if (part === '.i') {
|
||||||
|
parts.push('"i"');
|
||||||
|
} else if (part === '[i]') {
|
||||||
|
parts.push('get("i")');
|
||||||
|
} else {
|
||||||
|
parts.push(part.slice(1, -1));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return 'get(' + parts.join(',') + ')';
|
||||||
|
};
|
||||||
|
|
||||||
|
//escapes a name to be used as a javascript identifier
|
||||||
|
Parser.prototype.escName = function(str) {
|
||||||
|
return str.replace(/\W/g, function(s) {
|
||||||
|
return '$' + s.charCodeAt(0).toString(16);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
Parser.prototype.parseQuoted = function(str) {
|
||||||
|
if (str.charAt(0) === "'") {
|
||||||
|
str = str.slice(1, -1).replace(/\\.|"/, function(s) {
|
||||||
|
if (s === "\\'") return "'";
|
||||||
|
return s.charAt(0) === '\\' ? s : ('\\' + s);
|
||||||
|
});
|
||||||
|
str = '"' + str + '"';
|
||||||
|
}
|
||||||
|
//todo: try/catch or deal with invalid characters (linebreaks, control characters)
|
||||||
|
return JSON.parse(str);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//the context 'this' inside tagHandlers is the parser instance
|
||||||
|
var tagHandlers = {
|
||||||
|
'if': function(expr) {
|
||||||
|
this.push('if (' + this.parseExpr(expr) + ') {');
|
||||||
|
this.nest.unshift('if');
|
||||||
|
},
|
||||||
|
'else': function() {
|
||||||
|
if (this.nest[0] === 'for') {
|
||||||
|
this.push('}, function() {');
|
||||||
|
} else {
|
||||||
|
this.push('} else {');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'elseif': function(expr) {
|
||||||
|
this.push('} else if (' + this.parseExpr(expr) + ') {');
|
||||||
|
},
|
||||||
|
'endif': function() {
|
||||||
|
this.nest.shift();
|
||||||
|
this.push('}');
|
||||||
|
},
|
||||||
|
'for': function(str) {
|
||||||
|
var i = str.indexOf(' in ');
|
||||||
|
var name = str.slice(0, i).trim();
|
||||||
|
var expr = str.slice(i + 4).trim();
|
||||||
|
this.push('each(' + this.parseExpr(expr) + ',' + JSON.stringify(name) + ',function() {');
|
||||||
|
this.nest.unshift('for');
|
||||||
|
},
|
||||||
|
'endfor': function() {
|
||||||
|
this.nest.shift();
|
||||||
|
this.push('});');
|
||||||
|
},
|
||||||
|
'raw': function() {
|
||||||
|
this.rawMode = true;
|
||||||
|
},
|
||||||
|
'endraw': function() {
|
||||||
|
this.rawMode = false;
|
||||||
|
},
|
||||||
|
'set': function(stmt) {
|
||||||
|
var i = stmt.indexOf('=');
|
||||||
|
var name = stmt.slice(0, i).trim();
|
||||||
|
var expr = stmt.slice(i + 1).trim();
|
||||||
|
this.push('set(' + JSON.stringify(name) + ',' + this.parseExpr(expr) + ');');
|
||||||
|
},
|
||||||
|
'block': function(name) {
|
||||||
|
if (this.isParent) {
|
||||||
|
++this.parentBlocks;
|
||||||
|
var blockName = 'block_' + (this.escName(name) || this.parentBlocks);
|
||||||
|
this.push('block(typeof ' + blockName + ' == "function" ? ' + blockName + ' : function() {');
|
||||||
|
} else if (this.hasParent) {
|
||||||
|
this.isSilent = false;
|
||||||
|
++this.childBlocks;
|
||||||
|
blockName = 'block_' + (this.escName(name) || this.childBlocks);
|
||||||
|
this.push('function ' + blockName + '() {');
|
||||||
|
}
|
||||||
|
this.nest.unshift('block');
|
||||||
|
},
|
||||||
|
'endblock': function() {
|
||||||
|
this.nest.shift();
|
||||||
|
if (this.isParent) {
|
||||||
|
this.push('});');
|
||||||
|
} else if (this.hasParent) {
|
||||||
|
this.push('}');
|
||||||
|
this.isSilent = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'extends': function(name) {
|
||||||
|
name = this.parseQuoted(name);
|
||||||
|
var parentSrc = this.readTemplateFile(name);
|
||||||
|
this.isParent = true;
|
||||||
|
this.tokenize(parentSrc);
|
||||||
|
this.isParent = false;
|
||||||
|
this.hasParent = true;
|
||||||
|
//silence output until we enter a child block
|
||||||
|
this.isSilent = true;
|
||||||
|
},
|
||||||
|
'include': function(name) {
|
||||||
|
name = this.parseQuoted(name);
|
||||||
|
var incSrc = this.readTemplateFile(name);
|
||||||
|
this.isInclude = true;
|
||||||
|
this.tokenize(incSrc);
|
||||||
|
this.isInclude = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//liquid style
|
||||||
|
tagHandlers.assign = tagHandlers.set;
|
||||||
|
//python/django style
|
||||||
|
tagHandlers.elif = tagHandlers.elseif;
|
||||||
|
|
||||||
|
var getRuntime = function runtime(data, opts) {
|
||||||
|
var defaults = {
|
||||||
|
autoEscape: 'toJson'
|
||||||
|
};
|
||||||
|
var _toString = Object.prototype.toString;
|
||||||
|
var _hasOwnProperty = Object.prototype.hasOwnProperty;
|
||||||
|
var getKeys = Object.keys || function(obj) {
|
||||||
|
var keys = [];
|
||||||
|
for (var n in obj)
|
||||||
|
if (_hasOwnProperty.call(obj, n)) keys.push(n);
|
||||||
|
return keys;
|
||||||
|
};
|
||||||
|
var isArray = Array.isArray || function(obj) {
|
||||||
|
return _toString.call(obj) === '[object Array]';
|
||||||
|
};
|
||||||
|
var create = Object.create || function(obj) {
|
||||||
|
function F() {}
|
||||||
|
|
||||||
|
F.prototype = obj;
|
||||||
|
return new F();
|
||||||
|
};
|
||||||
|
var toString = function(val) {
|
||||||
|
if (val == null) return '';
|
||||||
|
return (typeof val.toString == 'function') ? val.toString() : _toString.call(val);
|
||||||
|
};
|
||||||
|
var extend = function(dest, src) {
|
||||||
|
var keys = getKeys(src);
|
||||||
|
for (var i = 0, len = keys.length; i < len; i++) {
|
||||||
|
var key = keys[i];
|
||||||
|
dest[key] = src[key];
|
||||||
|
}
|
||||||
|
return dest;
|
||||||
|
};
|
||||||
|
//get a value, lexically, starting in current context; a.b -> get("a","b")
|
||||||
|
var get = function() {
|
||||||
|
var val, n = arguments[0],
|
||||||
|
c = stack.length;
|
||||||
|
while (c--) {
|
||||||
|
val = stack[c][n];
|
||||||
|
if (typeof val != 'undefined') break;
|
||||||
|
}
|
||||||
|
for (var i = 1, len = arguments.length; i < len; i++) {
|
||||||
|
if (val == null) continue;
|
||||||
|
n = arguments[i];
|
||||||
|
val = (_hasOwnProperty.call(val, n)) ? val[n] : (typeof val._get == 'function' ? (val[n] = val._get(n)) : null);
|
||||||
|
}
|
||||||
|
return (val == null) ? '' : val;
|
||||||
|
};
|
||||||
|
var set = function(n, val) {
|
||||||
|
stack[stack.length - 1][n] = val;
|
||||||
|
};
|
||||||
|
var push = function(ctx) {
|
||||||
|
stack.push(ctx || {});
|
||||||
|
};
|
||||||
|
var pop = function() {
|
||||||
|
stack.pop();
|
||||||
|
};
|
||||||
|
var write = function(str) {
|
||||||
|
output.push(str);
|
||||||
|
};
|
||||||
|
var filter = function(val) {
|
||||||
|
for (var i = 1, len = arguments.length; i < len; i++) {
|
||||||
|
var arr = arguments[i],
|
||||||
|
name = arr[0],
|
||||||
|
filter = filters[name];
|
||||||
|
if (filter) {
|
||||||
|
arr[0] = val;
|
||||||
|
//now arr looks like [val, arg1, arg2]
|
||||||
|
val = filter.apply(data, arr);
|
||||||
|
} else {
|
||||||
|
throw new Error('Invalid filter: ' + name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (opts.autoEscape && name !== opts.autoEscape && name !== 'safe') {
|
||||||
|
//auto escape if not explicitly safe or already escaped
|
||||||
|
val = filters[opts.autoEscape].call(data, val);
|
||||||
|
}
|
||||||
|
output.push(val);
|
||||||
|
};
|
||||||
|
var each = function(obj, loopvar, fn1, fn2) {
|
||||||
|
if (obj == null) return;
|
||||||
|
var arr = isArray(obj) ? obj : getKeys(obj),
|
||||||
|
len = arr.length;
|
||||||
|
var ctx = {
|
||||||
|
loop: {
|
||||||
|
length: len,
|
||||||
|
first: arr[0],
|
||||||
|
last: arr[len - 1]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
push(ctx);
|
||||||
|
for (var i = 0; i < len; i++) {
|
||||||
|
extend(ctx.loop, {
|
||||||
|
index: i + 1,
|
||||||
|
index0: i
|
||||||
|
});
|
||||||
|
fn1(ctx[loopvar] = arr[i]);
|
||||||
|
}
|
||||||
|
if (len === 0 && fn2) fn2();
|
||||||
|
pop();
|
||||||
|
};
|
||||||
|
var block = function(fn) {
|
||||||
|
push();
|
||||||
|
fn();
|
||||||
|
pop();
|
||||||
|
};
|
||||||
|
var render = function() {
|
||||||
|
return output.join('');
|
||||||
|
};
|
||||||
|
data = data || {};
|
||||||
|
opts = extend(defaults, opts || {});
|
||||||
|
var filters = extend({
|
||||||
|
html: function(val) {
|
||||||
|
return toString(val)
|
||||||
|
.split('&').join('&')
|
||||||
|
.split('<').join('<')
|
||||||
|
.split('>').join('>')
|
||||||
|
.split('"').join('"');
|
||||||
|
},
|
||||||
|
safe: function(val) {
|
||||||
|
return val;
|
||||||
|
},
|
||||||
|
toJson: function(val) {
|
||||||
|
if (typeof val === 'object') {
|
||||||
|
return JSON.stringify(val);
|
||||||
|
}
|
||||||
|
return toString(val);
|
||||||
|
}
|
||||||
|
}, opts.filters || {});
|
||||||
|
var stack = [create(data || {})],
|
||||||
|
output = [];
|
||||||
|
return {
|
||||||
|
get: get,
|
||||||
|
set: set,
|
||||||
|
push: push,
|
||||||
|
pop: pop,
|
||||||
|
write: write,
|
||||||
|
filter: filter,
|
||||||
|
each: each,
|
||||||
|
block: block,
|
||||||
|
render: render
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
var runtime;
|
||||||
|
|
||||||
|
jinja.compile = function(markup, opts) {
|
||||||
|
opts = opts || {};
|
||||||
|
var parser = new Parser();
|
||||||
|
parser.readTemplateFile = this.readTemplateFile;
|
||||||
|
var code = [];
|
||||||
|
code.push('function render($) {');
|
||||||
|
code.push('var get = $.get, set = $.set, push = $.push, pop = $.pop, write = $.write, filter = $.filter, each = $.each, block = $.block;');
|
||||||
|
code.push.apply(code, parser.parse(markup));
|
||||||
|
code.push('return $.render();');
|
||||||
|
code.push('}');
|
||||||
|
code = code.join('\n');
|
||||||
|
if (opts.runtime === false) {
|
||||||
|
var fn = new Function('data', 'options', 'return (' + code + ')(runtime(data, options))');
|
||||||
|
} else {
|
||||||
|
runtime = runtime || (runtime = getRuntime.toString());
|
||||||
|
fn = new Function('data', 'options', 'return (' + code + ')((' + runtime + ')(data, options))');
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
render: fn
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
jinja.render = function(markup, data, opts) {
|
||||||
|
var tmpl = jinja.compile(markup);
|
||||||
|
return tmpl.render(data, opts);
|
||||||
|
};
|
||||||
|
|
||||||
|
jinja.templateFiles = [];
|
||||||
|
|
||||||
|
jinja.readTemplateFile = function(name) {
|
||||||
|
var templateFiles = this.templateFiles || [];
|
||||||
|
var templateFile = templateFiles[name];
|
||||||
|
if (templateFile == null) {
|
||||||
|
throw new Error('Template file not found: ' + name);
|
||||||
|
}
|
||||||
|
return templateFile;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Helpers
|
||||||
|
*/
|
||||||
|
|
||||||
|
function trimLeft(str) {
|
||||||
|
return str.replace(LEADING_SPACE, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
function trimRight(str) {
|
||||||
|
return str.replace(TRAILING_SPACE, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
function matchAll(str, reg, fn) {
|
||||||
|
//copy as global
|
||||||
|
reg = new RegExp(reg.source, 'g' + (reg.ignoreCase ? 'i' : '') + (reg.multiline ? 'm' : ''));
|
||||||
|
var match;
|
||||||
|
while ((match = reg.exec(str))) {
|
||||||
|
var result = fn(match[0], match.index, str);
|
||||||
|
if (typeof result == 'number') {
|
||||||
|
reg.lastIndex = result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}));
|
||||||
+1809
@@ -0,0 +1,1809 @@
|
|||||||
|
(function(global, factory) {
|
||||||
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||||
|
typeof define === 'function' && define.amd ? define(factory) :
|
||||||
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.JSON5 = factory());
|
||||||
|
}(this, (function() {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
function createCommonjsModule(fn, module) {
|
||||||
|
return module = {
|
||||||
|
exports: {}
|
||||||
|
}, fn(module, module.exports), module.exports;
|
||||||
|
}
|
||||||
|
|
||||||
|
var _global = createCommonjsModule(function(module) {
|
||||||
|
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
|
||||||
|
var global = module.exports = typeof window != 'undefined' && window.Math == Math ?
|
||||||
|
window : typeof self != 'undefined' && self.Math == Math ? self
|
||||||
|
// eslint-disable-next-line no-new-func
|
||||||
|
:
|
||||||
|
Function('return this')();
|
||||||
|
if (typeof __g == 'number') {
|
||||||
|
__g = global;
|
||||||
|
} // eslint-disable-line no-undef
|
||||||
|
});
|
||||||
|
|
||||||
|
var _core = createCommonjsModule(function(module) {
|
||||||
|
var core = module.exports = {
|
||||||
|
version: '2.6.5'
|
||||||
|
};
|
||||||
|
if (typeof __e == 'number') {
|
||||||
|
__e = core;
|
||||||
|
} // eslint-disable-line no-undef
|
||||||
|
});
|
||||||
|
var _core_1 = _core.version;
|
||||||
|
|
||||||
|
var _isObject = function(it) {
|
||||||
|
return typeof it === 'object' ? it !== null : typeof it === 'function';
|
||||||
|
};
|
||||||
|
|
||||||
|
var _anObject = function(it) {
|
||||||
|
if (!_isObject(it)) {
|
||||||
|
throw TypeError(it + ' is not an object!');
|
||||||
|
}
|
||||||
|
return it;
|
||||||
|
};
|
||||||
|
|
||||||
|
var _fails = function(exec) {
|
||||||
|
try {
|
||||||
|
return !!exec();
|
||||||
|
} catch (e) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Thank's IE8 for his funny defineProperty
|
||||||
|
var _descriptors = !_fails(function() {
|
||||||
|
return Object.defineProperty({}, 'a', {
|
||||||
|
get: function() {
|
||||||
|
return 7;
|
||||||
|
}
|
||||||
|
}).a != 7;
|
||||||
|
});
|
||||||
|
|
||||||
|
var document = _global.document;
|
||||||
|
// typeof document.createElement is 'object' in old IE
|
||||||
|
var is = _isObject(document) && _isObject(document.createElement);
|
||||||
|
var _domCreate = function(it) {
|
||||||
|
return is ? document.createElement(it) : {};
|
||||||
|
};
|
||||||
|
|
||||||
|
var _ie8DomDefine = !_descriptors && !_fails(function() {
|
||||||
|
return Object.defineProperty(_domCreate('div'), 'a', {
|
||||||
|
get: function() {
|
||||||
|
return 7;
|
||||||
|
}
|
||||||
|
}).a != 7;
|
||||||
|
});
|
||||||
|
|
||||||
|
// 7.1.1 ToPrimitive(input [, PreferredType])
|
||||||
|
|
||||||
|
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
|
||||||
|
// and the second argument - flag - preferred type is a string
|
||||||
|
var _toPrimitive = function(it, S) {
|
||||||
|
if (!_isObject(it)) {
|
||||||
|
return it;
|
||||||
|
}
|
||||||
|
var fn, val;
|
||||||
|
if (S && typeof(fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
if (typeof(fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
if (!S && typeof(fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
throw TypeError("Can't convert object to primitive value");
|
||||||
|
};
|
||||||
|
|
||||||
|
var dP = Object.defineProperty;
|
||||||
|
|
||||||
|
var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {
|
||||||
|
_anObject(O);
|
||||||
|
P = _toPrimitive(P, true);
|
||||||
|
_anObject(Attributes);
|
||||||
|
if (_ie8DomDefine) {
|
||||||
|
try {
|
||||||
|
return dP(O, P, Attributes);
|
||||||
|
} catch (e) {
|
||||||
|
/* empty */ }
|
||||||
|
}
|
||||||
|
if ('get' in Attributes || 'set' in Attributes) {
|
||||||
|
throw TypeError('Accessors not supported!');
|
||||||
|
}
|
||||||
|
if ('value' in Attributes) {
|
||||||
|
O[P] = Attributes.value;
|
||||||
|
}
|
||||||
|
return O;
|
||||||
|
};
|
||||||
|
|
||||||
|
var _objectDp = {
|
||||||
|
f: f
|
||||||
|
};
|
||||||
|
|
||||||
|
var _propertyDesc = function(bitmap, value) {
|
||||||
|
return {
|
||||||
|
enumerable: !(bitmap & 1),
|
||||||
|
configurable: !(bitmap & 2),
|
||||||
|
writable: !(bitmap & 4),
|
||||||
|
value: value
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
var _hide = _descriptors ? function(object, key, value) {
|
||||||
|
return _objectDp.f(object, key, _propertyDesc(1, value));
|
||||||
|
} : function(object, key, value) {
|
||||||
|
object[key] = value;
|
||||||
|
return object;
|
||||||
|
};
|
||||||
|
|
||||||
|
var hasOwnProperty = {}.hasOwnProperty;
|
||||||
|
var _has = function(it, key) {
|
||||||
|
return hasOwnProperty.call(it, key);
|
||||||
|
};
|
||||||
|
|
||||||
|
var id = 0;
|
||||||
|
var px = Math.random();
|
||||||
|
var _uid = function(key) {
|
||||||
|
return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
|
||||||
|
};
|
||||||
|
|
||||||
|
var _library = false;
|
||||||
|
|
||||||
|
var _shared = createCommonjsModule(function(module) {
|
||||||
|
var SHARED = '__core-js_shared__';
|
||||||
|
var store = _global[SHARED] || (_global[SHARED] = {});
|
||||||
|
|
||||||
|
(module.exports = function(key, value) {
|
||||||
|
return store[key] || (store[key] = value !== undefined ? value : {});
|
||||||
|
})('versions', []).push({
|
||||||
|
version: _core.version,
|
||||||
|
mode: _library ? 'pure' : 'global',
|
||||||
|
copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var _functionToString = _shared('native-function-to-string', Function.toString);
|
||||||
|
|
||||||
|
var _redefine = createCommonjsModule(function(module) {
|
||||||
|
var SRC = _uid('src');
|
||||||
|
|
||||||
|
var TO_STRING = 'toString';
|
||||||
|
var TPL = ('' + _functionToString).split(TO_STRING);
|
||||||
|
|
||||||
|
_core.inspectSource = function(it) {
|
||||||
|
return _functionToString.call(it);
|
||||||
|
};
|
||||||
|
|
||||||
|
(module.exports = function(O, key, val, safe) {
|
||||||
|
var isFunction = typeof val == 'function';
|
||||||
|
if (isFunction) {
|
||||||
|
_has(val, 'name') || _hide(val, 'name', key);
|
||||||
|
}
|
||||||
|
if (O[key] === val) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (isFunction) {
|
||||||
|
_has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
|
||||||
|
}
|
||||||
|
if (O === _global) {
|
||||||
|
O[key] = val;
|
||||||
|
} else if (!safe) {
|
||||||
|
delete O[key];
|
||||||
|
_hide(O, key, val);
|
||||||
|
} else if (O[key]) {
|
||||||
|
O[key] = val;
|
||||||
|
} else {
|
||||||
|
_hide(O, key, val);
|
||||||
|
}
|
||||||
|
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
|
||||||
|
})(Function.prototype, TO_STRING, function toString() {
|
||||||
|
return typeof this == 'function' && this[SRC] || _functionToString.call(this);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var _aFunction = function(it) {
|
||||||
|
if (typeof it != 'function') {
|
||||||
|
throw TypeError(it + ' is not a function!');
|
||||||
|
}
|
||||||
|
return it;
|
||||||
|
};
|
||||||
|
|
||||||
|
// optional / simple context binding
|
||||||
|
|
||||||
|
var _ctx = function(fn, that, length) {
|
||||||
|
_aFunction(fn);
|
||||||
|
if (that === undefined) {
|
||||||
|
return fn;
|
||||||
|
}
|
||||||
|
switch (length) {
|
||||||
|
case 1:
|
||||||
|
return function(a) {
|
||||||
|
return fn.call(that, a);
|
||||||
|
};
|
||||||
|
case 2:
|
||||||
|
return function(a, b) {
|
||||||
|
return fn.call(that, a, b);
|
||||||
|
};
|
||||||
|
case 3:
|
||||||
|
return function(a, b, c) {
|
||||||
|
return fn.call(that, a, b, c);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return function( /* ...args */ ) {
|
||||||
|
return fn.apply(that, arguments);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
var PROTOTYPE = 'prototype';
|
||||||
|
|
||||||
|
var $export = function(type, name, source) {
|
||||||
|
var IS_FORCED = type & $export.F;
|
||||||
|
var IS_GLOBAL = type & $export.G;
|
||||||
|
var IS_STATIC = type & $export.S;
|
||||||
|
var IS_PROTO = type & $export.P;
|
||||||
|
var IS_BIND = type & $export.B;
|
||||||
|
var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE];
|
||||||
|
var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});
|
||||||
|
var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
|
||||||
|
var key, own, out, exp;
|
||||||
|
if (IS_GLOBAL) {
|
||||||
|
source = name;
|
||||||
|
}
|
||||||
|
for (key in source) {
|
||||||
|
// contains in native
|
||||||
|
own = !IS_FORCED && target && target[key] !== undefined;
|
||||||
|
// export native or passed
|
||||||
|
out = (own ? target : source)[key];
|
||||||
|
// bind timers to global for call from export context
|
||||||
|
exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;
|
||||||
|
// extend global
|
||||||
|
if (target) {
|
||||||
|
_redefine(target, key, out, type & $export.U);
|
||||||
|
}
|
||||||
|
// export
|
||||||
|
if (exports[key] != out) {
|
||||||
|
_hide(exports, key, exp);
|
||||||
|
}
|
||||||
|
if (IS_PROTO && expProto[key] != out) {
|
||||||
|
expProto[key] = out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
_global.core = _core;
|
||||||
|
// type bitmap
|
||||||
|
$export.F = 1; // forced
|
||||||
|
$export.G = 2; // global
|
||||||
|
$export.S = 4; // static
|
||||||
|
$export.P = 8; // proto
|
||||||
|
$export.B = 16; // bind
|
||||||
|
$export.W = 32; // wrap
|
||||||
|
$export.U = 64; // safe
|
||||||
|
$export.R = 128; // real proto method for `library`
|
||||||
|
var _export = $export;
|
||||||
|
|
||||||
|
// 7.1.4 ToInteger
|
||||||
|
var ceil = Math.ceil;
|
||||||
|
var floor = Math.floor;
|
||||||
|
var _toInteger = function(it) {
|
||||||
|
return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 7.2.1 RequireObjectCoercible(argument)
|
||||||
|
var _defined = function(it) {
|
||||||
|
if (it == undefined) {
|
||||||
|
throw TypeError("Can't call method on " + it);
|
||||||
|
}
|
||||||
|
return it;
|
||||||
|
};
|
||||||
|
|
||||||
|
// true -> String#at
|
||||||
|
// false -> String#codePointAt
|
||||||
|
var _stringAt = function(TO_STRING) {
|
||||||
|
return function(that, pos) {
|
||||||
|
var s = String(_defined(that));
|
||||||
|
var i = _toInteger(pos);
|
||||||
|
var l = s.length;
|
||||||
|
var a, b;
|
||||||
|
if (i < 0 || i >= l) {
|
||||||
|
return TO_STRING ? '' : undefined;
|
||||||
|
}
|
||||||
|
a = s.charCodeAt(i);
|
||||||
|
return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ?
|
||||||
|
TO_STRING ? s.charAt(i) : a :
|
||||||
|
TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
var $at = _stringAt(false);
|
||||||
|
_export(_export.P, 'String', {
|
||||||
|
// 21.1.3.3 String.prototype.codePointAt(pos)
|
||||||
|
codePointAt: function codePointAt(pos) {
|
||||||
|
return $at(this, pos);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var codePointAt = _core.String.codePointAt;
|
||||||
|
|
||||||
|
var max = Math.max;
|
||||||
|
var min = Math.min;
|
||||||
|
var _toAbsoluteIndex = function(index, length) {
|
||||||
|
index = _toInteger(index);
|
||||||
|
return index < 0 ? max(index + length, 0) : min(index, length);
|
||||||
|
};
|
||||||
|
|
||||||
|
var fromCharCode = String.fromCharCode;
|
||||||
|
var $fromCodePoint = String.fromCodePoint;
|
||||||
|
|
||||||
|
// length should be 1, old FF problem
|
||||||
|
_export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
|
||||||
|
// 21.1.2.2 String.fromCodePoint(...codePoints)
|
||||||
|
fromCodePoint: function fromCodePoint(x) {
|
||||||
|
var arguments$1 = arguments;
|
||||||
|
// eslint-disable-line no-unused-vars
|
||||||
|
var res = [];
|
||||||
|
var aLen = arguments.length;
|
||||||
|
var i = 0;
|
||||||
|
var code;
|
||||||
|
while (aLen > i) {
|
||||||
|
code = +arguments$1[i++];
|
||||||
|
if (_toAbsoluteIndex(code, 0x10ffff) !== code) {
|
||||||
|
throw RangeError(code + ' is not a valid code point');
|
||||||
|
}
|
||||||
|
res.push(code < 0x10000 ?
|
||||||
|
fromCharCode(code) :
|
||||||
|
fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return res.join('');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var fromCodePoint = _core.String.fromCodePoint;
|
||||||
|
|
||||||
|
// This is a generated file. Do not edit.
|
||||||
|
var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/;
|
||||||
|
var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/;
|
||||||
|
var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/;
|
||||||
|
|
||||||
|
var unicode = {
|
||||||
|
Space_Separator: Space_Separator,
|
||||||
|
ID_Start: ID_Start,
|
||||||
|
ID_Continue: ID_Continue
|
||||||
|
};
|
||||||
|
|
||||||
|
var util = {
|
||||||
|
isSpaceSeparator: function isSpaceSeparator(c) {
|
||||||
|
return typeof c === 'string' && unicode.Space_Separator.test(c)
|
||||||
|
},
|
||||||
|
|
||||||
|
isIdStartChar: function isIdStartChar(c) {
|
||||||
|
return typeof c === 'string' && (
|
||||||
|
(c >= 'a' && c <= 'z') ||
|
||||||
|
(c >= 'A' && c <= 'Z') ||
|
||||||
|
(c === '$') || (c === '_') ||
|
||||||
|
unicode.ID_Start.test(c)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
|
||||||
|
isIdContinueChar: function isIdContinueChar(c) {
|
||||||
|
return typeof c === 'string' && (
|
||||||
|
(c >= 'a' && c <= 'z') ||
|
||||||
|
(c >= 'A' && c <= 'Z') ||
|
||||||
|
(c >= '0' && c <= '9') ||
|
||||||
|
(c === '$') || (c === '_') ||
|
||||||
|
(c === '\u200C') || (c === '\u200D') ||
|
||||||
|
unicode.ID_Continue.test(c)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
|
||||||
|
isDigit: function isDigit(c) {
|
||||||
|
return typeof c === 'string' && /[0-9]/.test(c)
|
||||||
|
},
|
||||||
|
|
||||||
|
isHexDigit: function isHexDigit(c) {
|
||||||
|
return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
var source;
|
||||||
|
var parseState;
|
||||||
|
var stack;
|
||||||
|
var pos;
|
||||||
|
var line;
|
||||||
|
var column;
|
||||||
|
var token;
|
||||||
|
var key;
|
||||||
|
var root;
|
||||||
|
|
||||||
|
var parse = function parse(text, reviver) {
|
||||||
|
source = String(text);
|
||||||
|
parseState = 'start';
|
||||||
|
stack = [];
|
||||||
|
pos = 0;
|
||||||
|
line = 1;
|
||||||
|
column = 0;
|
||||||
|
token = undefined;
|
||||||
|
key = undefined;
|
||||||
|
root = undefined;
|
||||||
|
|
||||||
|
do {
|
||||||
|
token = lex();
|
||||||
|
|
||||||
|
// This code is unreachable.
|
||||||
|
// if (!parseStates[parseState]) {
|
||||||
|
// throw invalidParseState()
|
||||||
|
// }
|
||||||
|
|
||||||
|
parseStates[parseState]();
|
||||||
|
} while (token.type !== 'eof')
|
||||||
|
|
||||||
|
if (typeof reviver === 'function') {
|
||||||
|
return internalize({
|
||||||
|
'': root
|
||||||
|
}, '', reviver)
|
||||||
|
}
|
||||||
|
|
||||||
|
return root
|
||||||
|
};
|
||||||
|
|
||||||
|
function internalize(holder, name, reviver) {
|
||||||
|
var value = holder[name];
|
||||||
|
if (value != null && typeof value === 'object') {
|
||||||
|
if (Array.isArray(value)) {
|
||||||
|
for (var i = 0; i < value.length; i++) {
|
||||||
|
var key = String(i);
|
||||||
|
var replacement = internalize(value, key, reviver);
|
||||||
|
if (replacement === undefined) {
|
||||||
|
delete value[key];
|
||||||
|
} else {
|
||||||
|
Object.defineProperty(value, key, {
|
||||||
|
value: replacement,
|
||||||
|
writable: true,
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (var key$1 in value) {
|
||||||
|
var replacement$1 = internalize(value, key$1, reviver);
|
||||||
|
if (replacement$1 === undefined) {
|
||||||
|
delete value[key$1];
|
||||||
|
} else {
|
||||||
|
Object.defineProperty(value, key$1, {
|
||||||
|
value: replacement$1,
|
||||||
|
writable: true,
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return reviver.call(holder, name, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
var lexState;
|
||||||
|
var buffer;
|
||||||
|
var doubleQuote;
|
||||||
|
var sign;
|
||||||
|
var c;
|
||||||
|
|
||||||
|
function lex() {
|
||||||
|
lexState = 'default';
|
||||||
|
buffer = '';
|
||||||
|
doubleQuote = false;
|
||||||
|
sign = 1;
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
c = peek();
|
||||||
|
|
||||||
|
// This code is unreachable.
|
||||||
|
// if (!lexStates[lexState]) {
|
||||||
|
// throw invalidLexState(lexState)
|
||||||
|
// }
|
||||||
|
|
||||||
|
var token = lexStates[lexState]();
|
||||||
|
if (token) {
|
||||||
|
return token
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function peek() {
|
||||||
|
if (source[pos]) {
|
||||||
|
return String.fromCodePoint(source.codePointAt(pos))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function read() {
|
||||||
|
var c = peek();
|
||||||
|
|
||||||
|
if (c === '\n') {
|
||||||
|
line++;
|
||||||
|
column = 0;
|
||||||
|
} else if (c) {
|
||||||
|
column += c.length;
|
||||||
|
} else {
|
||||||
|
column++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c) {
|
||||||
|
pos += c.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
var lexStates = {
|
||||||
|
default: function default$1() {
|
||||||
|
switch (c) {
|
||||||
|
case '\t':
|
||||||
|
case '\v':
|
||||||
|
case '\f':
|
||||||
|
case ' ':
|
||||||
|
case '\u00A0':
|
||||||
|
case '\uFEFF':
|
||||||
|
case '\n':
|
||||||
|
case '\r':
|
||||||
|
case '\u2028':
|
||||||
|
case '\u2029':
|
||||||
|
read();
|
||||||
|
return
|
||||||
|
|
||||||
|
case '/':
|
||||||
|
read();
|
||||||
|
lexState = 'comment';
|
||||||
|
return
|
||||||
|
|
||||||
|
case undefined:
|
||||||
|
read();
|
||||||
|
return newToken('eof')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (util.isSpaceSeparator(c)) {
|
||||||
|
read();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// This code is unreachable.
|
||||||
|
// if (!lexStates[parseState]) {
|
||||||
|
// throw invalidLexState(parseState)
|
||||||
|
// }
|
||||||
|
|
||||||
|
return lexStates[parseState]()
|
||||||
|
},
|
||||||
|
|
||||||
|
comment: function comment() {
|
||||||
|
switch (c) {
|
||||||
|
case '*':
|
||||||
|
read();
|
||||||
|
lexState = 'multiLineComment';
|
||||||
|
return
|
||||||
|
|
||||||
|
case '/':
|
||||||
|
read();
|
||||||
|
lexState = 'singleLineComment';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
throw invalidChar(read())
|
||||||
|
},
|
||||||
|
|
||||||
|
multiLineComment: function multiLineComment() {
|
||||||
|
switch (c) {
|
||||||
|
case '*':
|
||||||
|
read();
|
||||||
|
lexState = 'multiLineCommentAsterisk';
|
||||||
|
return
|
||||||
|
|
||||||
|
case undefined:
|
||||||
|
throw invalidChar(read())
|
||||||
|
}
|
||||||
|
|
||||||
|
read();
|
||||||
|
},
|
||||||
|
|
||||||
|
multiLineCommentAsterisk: function multiLineCommentAsterisk() {
|
||||||
|
switch (c) {
|
||||||
|
case '*':
|
||||||
|
read();
|
||||||
|
return
|
||||||
|
|
||||||
|
case '/':
|
||||||
|
read();
|
||||||
|
lexState = 'default';
|
||||||
|
return
|
||||||
|
|
||||||
|
case undefined:
|
||||||
|
throw invalidChar(read())
|
||||||
|
}
|
||||||
|
|
||||||
|
read();
|
||||||
|
lexState = 'multiLineComment';
|
||||||
|
},
|
||||||
|
|
||||||
|
singleLineComment: function singleLineComment() {
|
||||||
|
switch (c) {
|
||||||
|
case '\n':
|
||||||
|
case '\r':
|
||||||
|
case '\u2028':
|
||||||
|
case '\u2029':
|
||||||
|
read();
|
||||||
|
lexState = 'default';
|
||||||
|
return
|
||||||
|
|
||||||
|
case undefined:
|
||||||
|
read();
|
||||||
|
return newToken('eof')
|
||||||
|
}
|
||||||
|
|
||||||
|
read();
|
||||||
|
},
|
||||||
|
|
||||||
|
value: function value() {
|
||||||
|
switch (c) {
|
||||||
|
case '{':
|
||||||
|
case '[':
|
||||||
|
return newToken('punctuator', read())
|
||||||
|
|
||||||
|
case 'n':
|
||||||
|
read();
|
||||||
|
literal('ull');
|
||||||
|
return newToken('null', null)
|
||||||
|
|
||||||
|
case 't':
|
||||||
|
read();
|
||||||
|
literal('rue');
|
||||||
|
return newToken('boolean', true)
|
||||||
|
|
||||||
|
case 'f':
|
||||||
|
read();
|
||||||
|
literal('alse');
|
||||||
|
return newToken('boolean', false)
|
||||||
|
|
||||||
|
case '-':
|
||||||
|
case '+':
|
||||||
|
if (read() === '-') {
|
||||||
|
sign = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
lexState = 'sign';
|
||||||
|
return
|
||||||
|
|
||||||
|
case '.':
|
||||||
|
buffer = read();
|
||||||
|
lexState = 'decimalPointLeading';
|
||||||
|
return
|
||||||
|
|
||||||
|
case '0':
|
||||||
|
buffer = read();
|
||||||
|
lexState = 'zero';
|
||||||
|
return
|
||||||
|
|
||||||
|
case '1':
|
||||||
|
case '2':
|
||||||
|
case '3':
|
||||||
|
case '4':
|
||||||
|
case '5':
|
||||||
|
case '6':
|
||||||
|
case '7':
|
||||||
|
case '8':
|
||||||
|
case '9':
|
||||||
|
buffer = read();
|
||||||
|
lexState = 'decimalInteger';
|
||||||
|
return
|
||||||
|
|
||||||
|
case 'I':
|
||||||
|
read();
|
||||||
|
literal('nfinity');
|
||||||
|
return newToken('numeric', Infinity)
|
||||||
|
|
||||||
|
case 'N':
|
||||||
|
read();
|
||||||
|
literal('aN');
|
||||||
|
return newToken('numeric', NaN)
|
||||||
|
|
||||||
|
case '"':
|
||||||
|
case "'":
|
||||||
|
doubleQuote = (read() === '"');
|
||||||
|
buffer = '';
|
||||||
|
lexState = 'string';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
throw invalidChar(read())
|
||||||
|
},
|
||||||
|
|
||||||
|
identifierNameStartEscape: function identifierNameStartEscape() {
|
||||||
|
if (c !== 'u') {
|
||||||
|
throw invalidChar(read())
|
||||||
|
}
|
||||||
|
|
||||||
|
read();
|
||||||
|
var u = unicodeEscape();
|
||||||
|
switch (u) {
|
||||||
|
case '$':
|
||||||
|
case '_':
|
||||||
|
break
|
||||||
|
|
||||||
|
default:
|
||||||
|
if (!util.isIdStartChar(u)) {
|
||||||
|
throw invalidIdentifier()
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer += u;
|
||||||
|
lexState = 'identifierName';
|
||||||
|
},
|
||||||
|
|
||||||
|
identifierName: function identifierName() {
|
||||||
|
switch (c) {
|
||||||
|
case '$':
|
||||||
|
case '_':
|
||||||
|
case '\u200C':
|
||||||
|
case '\u200D':
|
||||||
|
buffer += read();
|
||||||
|
return
|
||||||
|
|
||||||
|
case '\\':
|
||||||
|
read();
|
||||||
|
lexState = 'identifierNameEscape';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (util.isIdContinueChar(c)) {
|
||||||
|
buffer += read();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return newToken('identifier', buffer)
|
||||||
|
},
|
||||||
|
|
||||||
|
identifierNameEscape: function identifierNameEscape() {
|
||||||
|
if (c !== 'u') {
|
||||||
|
throw invalidChar(read())
|
||||||
|
}
|
||||||
|
|
||||||
|
read();
|
||||||
|
var u = unicodeEscape();
|
||||||
|
switch (u) {
|
||||||
|
case '$':
|
||||||
|
case '_':
|
||||||
|
case '\u200C':
|
||||||
|
case '\u200D':
|
||||||
|
break
|
||||||
|
|
||||||
|
default:
|
||||||
|
if (!util.isIdContinueChar(u)) {
|
||||||
|
throw invalidIdentifier()
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer += u;
|
||||||
|
lexState = 'identifierName';
|
||||||
|
},
|
||||||
|
|
||||||
|
sign: function sign$1() {
|
||||||
|
switch (c) {
|
||||||
|
case '.':
|
||||||
|
buffer = read();
|
||||||
|
lexState = 'decimalPointLeading';
|
||||||
|
return
|
||||||
|
|
||||||
|
case '0':
|
||||||
|
buffer = read();
|
||||||
|
lexState = 'zero';
|
||||||
|
return
|
||||||
|
|
||||||
|
case '1':
|
||||||
|
case '2':
|
||||||
|
case '3':
|
||||||
|
case '4':
|
||||||
|
case '5':
|
||||||
|
case '6':
|
||||||
|
case '7':
|
||||||
|
case '8':
|
||||||
|
case '9':
|
||||||
|
buffer = read();
|
||||||
|
lexState = 'decimalInteger';
|
||||||
|
return
|
||||||
|
|
||||||
|
case 'I':
|
||||||
|
read();
|
||||||
|
literal('nfinity');
|
||||||
|
return newToken('numeric', sign * Infinity)
|
||||||
|
|
||||||
|
case 'N':
|
||||||
|
read();
|
||||||
|
literal('aN');
|
||||||
|
return newToken('numeric', NaN)
|
||||||
|
}
|
||||||
|
|
||||||
|
throw invalidChar(read())
|
||||||
|
},
|
||||||
|
|
||||||
|
zero: function zero() {
|
||||||
|
switch (c) {
|
||||||
|
case '.':
|
||||||
|
buffer += read();
|
||||||
|
lexState = 'decimalPoint';
|
||||||
|
return
|
||||||
|
|
||||||
|
case 'e':
|
||||||
|
case 'E':
|
||||||
|
buffer += read();
|
||||||
|
lexState = 'decimalExponent';
|
||||||
|
return
|
||||||
|
|
||||||
|
case 'x':
|
||||||
|
case 'X':
|
||||||
|
buffer += read();
|
||||||
|
lexState = 'hexadecimal';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return newToken('numeric', sign * 0)
|
||||||
|
},
|
||||||
|
|
||||||
|
decimalInteger: function decimalInteger() {
|
||||||
|
switch (c) {
|
||||||
|
case '.':
|
||||||
|
buffer += read();
|
||||||
|
lexState = 'decimalPoint';
|
||||||
|
return
|
||||||
|
|
||||||
|
case 'e':
|
||||||
|
case 'E':
|
||||||
|
buffer += read();
|
||||||
|
lexState = 'decimalExponent';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (util.isDigit(c)) {
|
||||||
|
buffer += read();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return newToken('numeric', sign * Number(buffer))
|
||||||
|
},
|
||||||
|
|
||||||
|
decimalPointLeading: function decimalPointLeading() {
|
||||||
|
if (util.isDigit(c)) {
|
||||||
|
buffer += read();
|
||||||
|
lexState = 'decimalFraction';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
throw invalidChar(read())
|
||||||
|
},
|
||||||
|
|
||||||
|
decimalPoint: function decimalPoint() {
|
||||||
|
switch (c) {
|
||||||
|
case 'e':
|
||||||
|
case 'E':
|
||||||
|
buffer += read();
|
||||||
|
lexState = 'decimalExponent';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (util.isDigit(c)) {
|
||||||
|
buffer += read();
|
||||||
|
lexState = 'decimalFraction';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return newToken('numeric', sign * Number(buffer))
|
||||||
|
},
|
||||||
|
|
||||||
|
decimalFraction: function decimalFraction() {
|
||||||
|
switch (c) {
|
||||||
|
case 'e':
|
||||||
|
case 'E':
|
||||||
|
buffer += read();
|
||||||
|
lexState = 'decimalExponent';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (util.isDigit(c)) {
|
||||||
|
buffer += read();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return newToken('numeric', sign * Number(buffer))
|
||||||
|
},
|
||||||
|
|
||||||
|
decimalExponent: function decimalExponent() {
|
||||||
|
switch (c) {
|
||||||
|
case '+':
|
||||||
|
case '-':
|
||||||
|
buffer += read();
|
||||||
|
lexState = 'decimalExponentSign';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (util.isDigit(c)) {
|
||||||
|
buffer += read();
|
||||||
|
lexState = 'decimalExponentInteger';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
throw invalidChar(read())
|
||||||
|
},
|
||||||
|
|
||||||
|
decimalExponentSign: function decimalExponentSign() {
|
||||||
|
if (util.isDigit(c)) {
|
||||||
|
buffer += read();
|
||||||
|
lexState = 'decimalExponentInteger';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
throw invalidChar(read())
|
||||||
|
},
|
||||||
|
|
||||||
|
decimalExponentInteger: function decimalExponentInteger() {
|
||||||
|
if (util.isDigit(c)) {
|
||||||
|
buffer += read();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return newToken('numeric', sign * Number(buffer))
|
||||||
|
},
|
||||||
|
|
||||||
|
hexadecimal: function hexadecimal() {
|
||||||
|
if (util.isHexDigit(c)) {
|
||||||
|
buffer += read();
|
||||||
|
lexState = 'hexadecimalInteger';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
throw invalidChar(read())
|
||||||
|
},
|
||||||
|
|
||||||
|
hexadecimalInteger: function hexadecimalInteger() {
|
||||||
|
if (util.isHexDigit(c)) {
|
||||||
|
buffer += read();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return newToken('numeric', sign * Number(buffer))
|
||||||
|
},
|
||||||
|
|
||||||
|
string: function string() {
|
||||||
|
switch (c) {
|
||||||
|
case '\\':
|
||||||
|
read();
|
||||||
|
buffer += escape();
|
||||||
|
return
|
||||||
|
|
||||||
|
case '"':
|
||||||
|
if (doubleQuote) {
|
||||||
|
read();
|
||||||
|
return newToken('string', buffer)
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer += read();
|
||||||
|
return
|
||||||
|
|
||||||
|
case "'":
|
||||||
|
if (!doubleQuote) {
|
||||||
|
read();
|
||||||
|
return newToken('string', buffer)
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer += read();
|
||||||
|
return
|
||||||
|
|
||||||
|
case '\n':
|
||||||
|
case '\r':
|
||||||
|
throw invalidChar(read())
|
||||||
|
|
||||||
|
case '\u2028':
|
||||||
|
case '\u2029':
|
||||||
|
separatorChar(c);
|
||||||
|
break
|
||||||
|
|
||||||
|
case undefined:
|
||||||
|
throw invalidChar(read())
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer += read();
|
||||||
|
},
|
||||||
|
|
||||||
|
start: function start() {
|
||||||
|
switch (c) {
|
||||||
|
case '{':
|
||||||
|
case '[':
|
||||||
|
return newToken('punctuator', read())
|
||||||
|
|
||||||
|
// This code is unreachable since the default lexState handles eof.
|
||||||
|
// case undefined:
|
||||||
|
// return newToken('eof')
|
||||||
|
}
|
||||||
|
|
||||||
|
lexState = 'value';
|
||||||
|
},
|
||||||
|
|
||||||
|
beforePropertyName: function beforePropertyName() {
|
||||||
|
switch (c) {
|
||||||
|
case '$':
|
||||||
|
case '_':
|
||||||
|
buffer = read();
|
||||||
|
lexState = 'identifierName';
|
||||||
|
return
|
||||||
|
|
||||||
|
case '\\':
|
||||||
|
read();
|
||||||
|
lexState = 'identifierNameStartEscape';
|
||||||
|
return
|
||||||
|
|
||||||
|
case '}':
|
||||||
|
return newToken('punctuator', read())
|
||||||
|
|
||||||
|
case '"':
|
||||||
|
case "'":
|
||||||
|
doubleQuote = (read() === '"');
|
||||||
|
lexState = 'string';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (util.isIdStartChar(c)) {
|
||||||
|
buffer += read();
|
||||||
|
lexState = 'identifierName';
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
throw invalidChar(read())
|
||||||
|
},
|
||||||
|
|
||||||
|
afterPropertyName: function afterPropertyName() {
|
||||||
|
if (c === ':') {
|
||||||
|
return newToken('punctuator', read())
|
||||||
|
}
|
||||||
|
|
||||||
|
throw invalidChar(read())
|
||||||
|
},
|
||||||
|
|
||||||
|
beforePropertyValue: function beforePropertyValue() {
|
||||||
|
lexState = 'value';
|
||||||
|
},
|
||||||
|
|
||||||
|
afterPropertyValue: function afterPropertyValue() {
|
||||||
|
switch (c) {
|
||||||
|
case ',':
|
||||||
|
case '}':
|
||||||
|
return newToken('punctuator', read())
|
||||||
|
}
|
||||||
|
|
||||||
|
throw invalidChar(read())
|
||||||
|
},
|
||||||
|
|
||||||
|
beforeArrayValue: function beforeArrayValue() {
|
||||||
|
if (c === ']') {
|
||||||
|
return newToken('punctuator', read())
|
||||||
|
}
|
||||||
|
|
||||||
|
lexState = 'value';
|
||||||
|
},
|
||||||
|
|
||||||
|
afterArrayValue: function afterArrayValue() {
|
||||||
|
switch (c) {
|
||||||
|
case ',':
|
||||||
|
case ']':
|
||||||
|
return newToken('punctuator', read())
|
||||||
|
}
|
||||||
|
|
||||||
|
throw invalidChar(read())
|
||||||
|
},
|
||||||
|
|
||||||
|
end: function end() {
|
||||||
|
// This code is unreachable since it's handled by the default lexState.
|
||||||
|
// if (c === undefined) {
|
||||||
|
// read()
|
||||||
|
// return newToken('eof')
|
||||||
|
// }
|
||||||
|
|
||||||
|
throw invalidChar(read())
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
function newToken(type, value) {
|
||||||
|
return {
|
||||||
|
type: type,
|
||||||
|
value: value,
|
||||||
|
line: line,
|
||||||
|
column: column,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function literal(s) {
|
||||||
|
for (var i = 0, list = s; i < list.length; i += 1) {
|
||||||
|
var c = list[i];
|
||||||
|
|
||||||
|
var p = peek();
|
||||||
|
|
||||||
|
if (p !== c) {
|
||||||
|
throw invalidChar(read())
|
||||||
|
}
|
||||||
|
|
||||||
|
read();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function escape() {
|
||||||
|
var c = peek();
|
||||||
|
switch (c) {
|
||||||
|
case 'b':
|
||||||
|
read();
|
||||||
|
return '\b'
|
||||||
|
|
||||||
|
case 'f':
|
||||||
|
read();
|
||||||
|
return '\f'
|
||||||
|
|
||||||
|
case 'n':
|
||||||
|
read();
|
||||||
|
return '\n'
|
||||||
|
|
||||||
|
case 'r':
|
||||||
|
read();
|
||||||
|
return '\r'
|
||||||
|
|
||||||
|
case 't':
|
||||||
|
read();
|
||||||
|
return '\t'
|
||||||
|
|
||||||
|
case 'v':
|
||||||
|
read();
|
||||||
|
return '\v'
|
||||||
|
|
||||||
|
case '0':
|
||||||
|
read();
|
||||||
|
if (util.isDigit(peek())) {
|
||||||
|
throw invalidChar(read())
|
||||||
|
}
|
||||||
|
|
||||||
|
return '\0'
|
||||||
|
|
||||||
|
case 'x':
|
||||||
|
read();
|
||||||
|
return hexEscape()
|
||||||
|
|
||||||
|
case 'u':
|
||||||
|
read();
|
||||||
|
return unicodeEscape()
|
||||||
|
|
||||||
|
case '\n':
|
||||||
|
case '\u2028':
|
||||||
|
case '\u2029':
|
||||||
|
read();
|
||||||
|
return ''
|
||||||
|
|
||||||
|
case '\r':
|
||||||
|
read();
|
||||||
|
if (peek() === '\n') {
|
||||||
|
read();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ''
|
||||||
|
|
||||||
|
case '1':
|
||||||
|
case '2':
|
||||||
|
case '3':
|
||||||
|
case '4':
|
||||||
|
case '5':
|
||||||
|
case '6':
|
||||||
|
case '7':
|
||||||
|
case '8':
|
||||||
|
case '9':
|
||||||
|
throw invalidChar(read())
|
||||||
|
|
||||||
|
case undefined:
|
||||||
|
throw invalidChar(read())
|
||||||
|
}
|
||||||
|
|
||||||
|
return read()
|
||||||
|
}
|
||||||
|
|
||||||
|
function hexEscape() {
|
||||||
|
var buffer = '';
|
||||||
|
var c = peek();
|
||||||
|
|
||||||
|
if (!util.isHexDigit(c)) {
|
||||||
|
throw invalidChar(read())
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer += read();
|
||||||
|
|
||||||
|
c = peek();
|
||||||
|
if (!util.isHexDigit(c)) {
|
||||||
|
throw invalidChar(read())
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer += read();
|
||||||
|
|
||||||
|
return String.fromCodePoint(parseInt(buffer, 16))
|
||||||
|
}
|
||||||
|
|
||||||
|
function unicodeEscape() {
|
||||||
|
var buffer = '';
|
||||||
|
var count = 4;
|
||||||
|
|
||||||
|
while (count-- > 0) {
|
||||||
|
var c = peek();
|
||||||
|
if (!util.isHexDigit(c)) {
|
||||||
|
throw invalidChar(read())
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer += read();
|
||||||
|
}
|
||||||
|
|
||||||
|
return String.fromCodePoint(parseInt(buffer, 16))
|
||||||
|
}
|
||||||
|
|
||||||
|
var parseStates = {
|
||||||
|
start: function start() {
|
||||||
|
if (token.type === 'eof') {
|
||||||
|
throw invalidEOF()
|
||||||
|
}
|
||||||
|
|
||||||
|
push();
|
||||||
|
},
|
||||||
|
|
||||||
|
beforePropertyName: function beforePropertyName() {
|
||||||
|
switch (token.type) {
|
||||||
|
case 'identifier':
|
||||||
|
case 'string':
|
||||||
|
key = token.value;
|
||||||
|
parseState = 'afterPropertyName';
|
||||||
|
return
|
||||||
|
|
||||||
|
case 'punctuator':
|
||||||
|
// This code is unreachable since it's handled by the lexState.
|
||||||
|
// if (token.value !== '}') {
|
||||||
|
// throw invalidToken()
|
||||||
|
// }
|
||||||
|
|
||||||
|
pop();
|
||||||
|
return
|
||||||
|
|
||||||
|
case 'eof':
|
||||||
|
throw invalidEOF()
|
||||||
|
}
|
||||||
|
|
||||||
|
// This code is unreachable since it's handled by the lexState.
|
||||||
|
// throw invalidToken()
|
||||||
|
},
|
||||||
|
|
||||||
|
afterPropertyName: function afterPropertyName() {
|
||||||
|
// This code is unreachable since it's handled by the lexState.
|
||||||
|
// if (token.type !== 'punctuator' || token.value !== ':') {
|
||||||
|
// throw invalidToken()
|
||||||
|
// }
|
||||||
|
|
||||||
|
if (token.type === 'eof') {
|
||||||
|
throw invalidEOF()
|
||||||
|
}
|
||||||
|
|
||||||
|
parseState = 'beforePropertyValue';
|
||||||
|
},
|
||||||
|
|
||||||
|
beforePropertyValue: function beforePropertyValue() {
|
||||||
|
if (token.type === 'eof') {
|
||||||
|
throw invalidEOF()
|
||||||
|
}
|
||||||
|
|
||||||
|
push();
|
||||||
|
},
|
||||||
|
|
||||||
|
beforeArrayValue: function beforeArrayValue() {
|
||||||
|
if (token.type === 'eof') {
|
||||||
|
throw invalidEOF()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (token.type === 'punctuator' && token.value === ']') {
|
||||||
|
pop();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
push();
|
||||||
|
},
|
||||||
|
|
||||||
|
afterPropertyValue: function afterPropertyValue() {
|
||||||
|
// This code is unreachable since it's handled by the lexState.
|
||||||
|
// if (token.type !== 'punctuator') {
|
||||||
|
// throw invalidToken()
|
||||||
|
// }
|
||||||
|
|
||||||
|
if (token.type === 'eof') {
|
||||||
|
throw invalidEOF()
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (token.value) {
|
||||||
|
case ',':
|
||||||
|
parseState = 'beforePropertyName';
|
||||||
|
return
|
||||||
|
|
||||||
|
case '}':
|
||||||
|
pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
// This code is unreachable since it's handled by the lexState.
|
||||||
|
// throw invalidToken()
|
||||||
|
},
|
||||||
|
|
||||||
|
afterArrayValue: function afterArrayValue() {
|
||||||
|
// This code is unreachable since it's handled by the lexState.
|
||||||
|
// if (token.type !== 'punctuator') {
|
||||||
|
// throw invalidToken()
|
||||||
|
// }
|
||||||
|
|
||||||
|
if (token.type === 'eof') {
|
||||||
|
throw invalidEOF()
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (token.value) {
|
||||||
|
case ',':
|
||||||
|
parseState = 'beforeArrayValue';
|
||||||
|
return
|
||||||
|
|
||||||
|
case ']':
|
||||||
|
pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
// This code is unreachable since it's handled by the lexState.
|
||||||
|
// throw invalidToken()
|
||||||
|
},
|
||||||
|
|
||||||
|
end: function end() {
|
||||||
|
// This code is unreachable since it's handled by the lexState.
|
||||||
|
// if (token.type !== 'eof') {
|
||||||
|
// throw invalidToken()
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
function push() {
|
||||||
|
var value;
|
||||||
|
|
||||||
|
switch (token.type) {
|
||||||
|
case 'punctuator':
|
||||||
|
switch (token.value) {
|
||||||
|
case '{':
|
||||||
|
value = {};
|
||||||
|
break
|
||||||
|
|
||||||
|
case '[':
|
||||||
|
value = [];
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
|
||||||
|
case 'null':
|
||||||
|
case 'boolean':
|
||||||
|
case 'numeric':
|
||||||
|
case 'string':
|
||||||
|
value = token.value;
|
||||||
|
break
|
||||||
|
|
||||||
|
// This code is unreachable.
|
||||||
|
// default:
|
||||||
|
// throw invalidToken()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (root === undefined) {
|
||||||
|
root = value;
|
||||||
|
} else {
|
||||||
|
var parent = stack[stack.length - 1];
|
||||||
|
if (Array.isArray(parent)) {
|
||||||
|
parent.push(value);
|
||||||
|
} else {
|
||||||
|
Object.defineProperty(parent, key, {
|
||||||
|
value: value,
|
||||||
|
writable: true,
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value !== null && typeof value === 'object') {
|
||||||
|
stack.push(value);
|
||||||
|
|
||||||
|
if (Array.isArray(value)) {
|
||||||
|
parseState = 'beforeArrayValue';
|
||||||
|
} else {
|
||||||
|
parseState = 'beforePropertyName';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var current = stack[stack.length - 1];
|
||||||
|
if (current == null) {
|
||||||
|
parseState = 'end';
|
||||||
|
} else if (Array.isArray(current)) {
|
||||||
|
parseState = 'afterArrayValue';
|
||||||
|
} else {
|
||||||
|
parseState = 'afterPropertyValue';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function pop() {
|
||||||
|
stack.pop();
|
||||||
|
|
||||||
|
var current = stack[stack.length - 1];
|
||||||
|
if (current == null) {
|
||||||
|
parseState = 'end';
|
||||||
|
} else if (Array.isArray(current)) {
|
||||||
|
parseState = 'afterArrayValue';
|
||||||
|
} else {
|
||||||
|
parseState = 'afterPropertyValue';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This code is unreachable.
|
||||||
|
// function invalidParseState () {
|
||||||
|
// return new Error(`JSON5: invalid parse state '${parseState}'`)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// This code is unreachable.
|
||||||
|
// function invalidLexState (state) {
|
||||||
|
// return new Error(`JSON5: invalid lex state '${state}'`)
|
||||||
|
// }
|
||||||
|
|
||||||
|
function invalidChar(c) {
|
||||||
|
if (c === undefined) {
|
||||||
|
return syntaxError(("JSON5: invalid end of input at " + line + ":" + column))
|
||||||
|
}
|
||||||
|
|
||||||
|
return syntaxError(("JSON5: invalid character '" + (formatChar(c)) + "' at " + line + ":" + column))
|
||||||
|
}
|
||||||
|
|
||||||
|
function invalidEOF() {
|
||||||
|
return syntaxError(("JSON5: invalid end of input at " + line + ":" + column))
|
||||||
|
}
|
||||||
|
|
||||||
|
// This code is unreachable.
|
||||||
|
// function invalidToken () {
|
||||||
|
// if (token.type === 'eof') {
|
||||||
|
// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// const c = String.fromCodePoint(token.value.codePointAt(0))
|
||||||
|
// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)
|
||||||
|
// }
|
||||||
|
|
||||||
|
function invalidIdentifier() {
|
||||||
|
column -= 5;
|
||||||
|
return syntaxError(("JSON5: invalid identifier character at " + line + ":" + column))
|
||||||
|
}
|
||||||
|
|
||||||
|
function separatorChar(c) {
|
||||||
|
console.warn(("JSON5: '" + (formatChar(c)) + "' in strings is not valid ECMAScript; consider escaping"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatChar(c) {
|
||||||
|
var replacements = {
|
||||||
|
"'": "\\'",
|
||||||
|
'"': '\\"',
|
||||||
|
'\\': '\\\\',
|
||||||
|
'\b': '\\b',
|
||||||
|
'\f': '\\f',
|
||||||
|
'\n': '\\n',
|
||||||
|
'\r': '\\r',
|
||||||
|
'\t': '\\t',
|
||||||
|
'\v': '\\v',
|
||||||
|
'\0': '\\0',
|
||||||
|
'\u2028': '\\u2028',
|
||||||
|
'\u2029': '\\u2029',
|
||||||
|
};
|
||||||
|
|
||||||
|
if (replacements[c]) {
|
||||||
|
return replacements[c]
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c < ' ') {
|
||||||
|
var hexString = c.charCodeAt(0).toString(16);
|
||||||
|
return '\\x' + ('00' + hexString).substring(hexString.length)
|
||||||
|
}
|
||||||
|
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
function syntaxError(message) {
|
||||||
|
var err = new SyntaxError(message);
|
||||||
|
err.lineNumber = line;
|
||||||
|
err.columnNumber = column;
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var stringify = function stringify(value, replacer, space) {
|
||||||
|
var stack = [];
|
||||||
|
var indent = '';
|
||||||
|
var propertyList;
|
||||||
|
var replacerFunc;
|
||||||
|
var gap = '';
|
||||||
|
var quote;
|
||||||
|
|
||||||
|
if (
|
||||||
|
replacer != null &&
|
||||||
|
typeof replacer === 'object' &&
|
||||||
|
!Array.isArray(replacer)
|
||||||
|
) {
|
||||||
|
space = replacer.space;
|
||||||
|
quote = replacer.quote;
|
||||||
|
replacer = replacer.replacer;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof replacer === 'function') {
|
||||||
|
replacerFunc = replacer;
|
||||||
|
} else if (Array.isArray(replacer)) {
|
||||||
|
propertyList = [];
|
||||||
|
for (var i = 0, list = replacer; i < list.length; i += 1) {
|
||||||
|
var v = list[i];
|
||||||
|
|
||||||
|
var item = (void 0);
|
||||||
|
|
||||||
|
if (typeof v === 'string') {
|
||||||
|
item = v;
|
||||||
|
} else if (
|
||||||
|
typeof v === 'number' ||
|
||||||
|
v instanceof String ||
|
||||||
|
v instanceof Number
|
||||||
|
) {
|
||||||
|
item = String(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item !== undefined && propertyList.indexOf(item) < 0) {
|
||||||
|
propertyList.push(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (space instanceof Number) {
|
||||||
|
space = Number(space);
|
||||||
|
} else if (space instanceof String) {
|
||||||
|
space = String(space);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof space === 'number') {
|
||||||
|
if (space > 0) {
|
||||||
|
space = Math.min(10, Math.floor(space));
|
||||||
|
gap = ' '.substr(0, space);
|
||||||
|
}
|
||||||
|
} else if (typeof space === 'string') {
|
||||||
|
gap = space.substr(0, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
return serializeProperty('', {
|
||||||
|
'': value
|
||||||
|
})
|
||||||
|
|
||||||
|
function serializeProperty(key, holder) {
|
||||||
|
var value = holder[key];
|
||||||
|
if (value != null) {
|
||||||
|
if (typeof value.toJSON5 === 'function') {
|
||||||
|
value = value.toJSON5(key);
|
||||||
|
} else if (typeof value.toJSON === 'function') {
|
||||||
|
value = value.toJSON(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (replacerFunc) {
|
||||||
|
value = replacerFunc.call(holder, key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value instanceof Number) {
|
||||||
|
value = Number(value);
|
||||||
|
} else if (value instanceof String) {
|
||||||
|
value = String(value);
|
||||||
|
} else if (value instanceof Boolean) {
|
||||||
|
value = value.valueOf();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (value) {
|
||||||
|
case null:
|
||||||
|
return 'null'
|
||||||
|
case true:
|
||||||
|
return 'true'
|
||||||
|
case false:
|
||||||
|
return 'false'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof value === 'string') {
|
||||||
|
return quoteString(value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof value === 'number') {
|
||||||
|
return String(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof value === 'object') {
|
||||||
|
return Array.isArray(value) ? serializeArray(value) : serializeObject(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
|
||||||
|
function quoteString(value) {
|
||||||
|
var quotes = {
|
||||||
|
"'": 0.1,
|
||||||
|
'"': 0.2,
|
||||||
|
};
|
||||||
|
|
||||||
|
var replacements = {
|
||||||
|
"'": "\\'",
|
||||||
|
'"': '\\"',
|
||||||
|
'\\': '\\\\',
|
||||||
|
'\b': '\\b',
|
||||||
|
'\f': '\\f',
|
||||||
|
'\n': '\\n',
|
||||||
|
'\r': '\\r',
|
||||||
|
'\t': '\\t',
|
||||||
|
'\v': '\\v',
|
||||||
|
'\0': '\\0',
|
||||||
|
'\u2028': '\\u2028',
|
||||||
|
'\u2029': '\\u2029',
|
||||||
|
};
|
||||||
|
|
||||||
|
var product = '';
|
||||||
|
|
||||||
|
for (var i = 0; i < value.length; i++) {
|
||||||
|
var c = value[i];
|
||||||
|
switch (c) {
|
||||||
|
case "'":
|
||||||
|
case '"':
|
||||||
|
quotes[c]++;
|
||||||
|
product += c;
|
||||||
|
continue
|
||||||
|
|
||||||
|
case '\0':
|
||||||
|
if (util.isDigit(value[i + 1])) {
|
||||||
|
product += '\\x00';
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (replacements[c]) {
|
||||||
|
product += replacements[c];
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c < ' ') {
|
||||||
|
var hexString = c.charCodeAt(0).toString(16);
|
||||||
|
product += '\\x' + ('00' + hexString).substring(hexString.length);
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
product += c;
|
||||||
|
}
|
||||||
|
|
||||||
|
var quoteChar = quote || Object.keys(quotes).reduce(function(a, b) {
|
||||||
|
return (quotes[a] < quotes[b]) ? a : b;
|
||||||
|
});
|
||||||
|
|
||||||
|
product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);
|
||||||
|
|
||||||
|
return quoteChar + product + quoteChar
|
||||||
|
}
|
||||||
|
|
||||||
|
function serializeObject(value) {
|
||||||
|
if (stack.indexOf(value) >= 0) {
|
||||||
|
throw TypeError('Converting circular structure to JSON5')
|
||||||
|
}
|
||||||
|
|
||||||
|
stack.push(value);
|
||||||
|
|
||||||
|
var stepback = indent;
|
||||||
|
indent = indent + gap;
|
||||||
|
|
||||||
|
var keys = propertyList || Object.keys(value);
|
||||||
|
var partial = [];
|
||||||
|
for (var i = 0, list = keys; i < list.length; i += 1) {
|
||||||
|
var key = list[i];
|
||||||
|
|
||||||
|
var propertyString = serializeProperty(key, value);
|
||||||
|
if (propertyString !== undefined) {
|
||||||
|
var member = serializeKey(key) + ':';
|
||||||
|
if (gap !== '') {
|
||||||
|
member += ' ';
|
||||||
|
}
|
||||||
|
member += propertyString;
|
||||||
|
partial.push(member);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var final;
|
||||||
|
if (partial.length === 0) {
|
||||||
|
final = '{}';
|
||||||
|
} else {
|
||||||
|
var properties;
|
||||||
|
if (gap === '') {
|
||||||
|
properties = partial.join(',');
|
||||||
|
final = '{' + properties + '}';
|
||||||
|
} else {
|
||||||
|
var separator = ',\n' + indent;
|
||||||
|
properties = partial.join(separator);
|
||||||
|
final = '{\n' + indent + properties + ',\n' + stepback + '}';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stack.pop();
|
||||||
|
indent = stepback;
|
||||||
|
return final
|
||||||
|
}
|
||||||
|
|
||||||
|
function serializeKey(key) {
|
||||||
|
if (key.length === 0) {
|
||||||
|
return quoteString(key, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
var firstChar = String.fromCodePoint(key.codePointAt(0));
|
||||||
|
if (!util.isIdStartChar(firstChar)) {
|
||||||
|
return quoteString(key, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = firstChar.length; i < key.length; i++) {
|
||||||
|
if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {
|
||||||
|
return quoteString(key, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return key
|
||||||
|
}
|
||||||
|
|
||||||
|
function serializeArray(value) {
|
||||||
|
if (stack.indexOf(value) >= 0) {
|
||||||
|
throw TypeError('Converting circular structure to JSON5')
|
||||||
|
}
|
||||||
|
|
||||||
|
stack.push(value);
|
||||||
|
|
||||||
|
var stepback = indent;
|
||||||
|
indent = indent + gap;
|
||||||
|
|
||||||
|
var partial = [];
|
||||||
|
for (var i = 0; i < value.length; i++) {
|
||||||
|
var propertyString = serializeProperty(String(i), value);
|
||||||
|
partial.push((propertyString !== undefined) ? propertyString : 'null');
|
||||||
|
}
|
||||||
|
|
||||||
|
var final;
|
||||||
|
if (partial.length === 0) {
|
||||||
|
final = '[]';
|
||||||
|
} else {
|
||||||
|
if (gap === '') {
|
||||||
|
var properties = partial.join(',');
|
||||||
|
final = '[' + properties + ']';
|
||||||
|
} else {
|
||||||
|
var separator = ',\n' + indent;
|
||||||
|
var properties$1 = partial.join(separator);
|
||||||
|
final = '[\n' + indent + properties$1 + ',\n' + stepback + ']';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stack.pop();
|
||||||
|
indent = stepback;
|
||||||
|
return final
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var JSON5 = {
|
||||||
|
parse: parse,
|
||||||
|
stringify: stringify,
|
||||||
|
};
|
||||||
|
|
||||||
|
var lib = JSON5;
|
||||||
|
|
||||||
|
var es5 = lib;
|
||||||
|
|
||||||
|
return es5;
|
||||||
|
|
||||||
|
})));
|
||||||
Vendored
+1439
@@ -0,0 +1,1439 @@
|
|||||||
|
/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ ! function(t, e) {
|
||||||
|
"object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e((t = "undefined" != typeof globalThis ? globalThis : t || self).pako = {})
|
||||||
|
}(this, (function(t) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
function e(t) {
|
||||||
|
let e = t.length;
|
||||||
|
for (; --e >= 0;) t[e] = 0
|
||||||
|
}
|
||||||
|
const a = 256,
|
||||||
|
i = 286,
|
||||||
|
n = 30,
|
||||||
|
s = 15,
|
||||||
|
r = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]),
|
||||||
|
o = new Uint8Array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]),
|
||||||
|
l = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]),
|
||||||
|
h = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]),
|
||||||
|
d = new Array(576);
|
||||||
|
e(d);
|
||||||
|
const _ = new Array(60);
|
||||||
|
e(_);
|
||||||
|
const f = new Array(512);
|
||||||
|
e(f);
|
||||||
|
const c = new Array(256);
|
||||||
|
e(c);
|
||||||
|
const u = new Array(29);
|
||||||
|
e(u);
|
||||||
|
const w = new Array(n);
|
||||||
|
|
||||||
|
function m(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
|
||||||
|
}
|
||||||
|
let b, g, p;
|
||||||
|
|
||||||
|
function k(t, e) {
|
||||||
|
this.dyn_tree = t, this.max_code = 0, this.stat_desc = e
|
||||||
|
}
|
||||||
|
e(w);
|
||||||
|
const v = t => t < 256 ? f[t] : f[256 + (t >>> 7)],
|
||||||
|
y = (t, e) => {
|
||||||
|
t.pending_buf[t.pending++] = 255 & e, t.pending_buf[t.pending++] = e >>> 8 & 255
|
||||||
|
},
|
||||||
|
x = (t, e, a) => {
|
||||||
|
t.bi_valid > 16 - a ? (t.bi_buf |= e << t.bi_valid & 65535, y(t, t.bi_buf), t.bi_buf = e >> 16 - t.bi_valid, t.bi_valid += a - 16) : (t.bi_buf |= e << t.bi_valid & 65535, t.bi_valid += a)
|
||||||
|
},
|
||||||
|
z = (t, e, a) => {
|
||||||
|
x(t, a[2 * e], a[2 * e + 1])
|
||||||
|
},
|
||||||
|
A = (t, e) => {
|
||||||
|
let a = 0;
|
||||||
|
do {
|
||||||
|
a |= 1 & t, t >>>= 1, a <<= 1
|
||||||
|
} while (--e > 0);
|
||||||
|
return a >>> 1
|
||||||
|
},
|
||||||
|
E = (t, e, a) => {
|
||||||
|
const i = new Array(16);
|
||||||
|
let n, r, o = 0;
|
||||||
|
for (n = 1; n <= s; n++) o = o + a[n - 1] << 1, i[n] = o;
|
||||||
|
for (r = 0; r <= e; r++) {
|
||||||
|
let e = t[2 * r + 1];
|
||||||
|
0 !== e && (t[2 * r] = A(i[e]++, e))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
R = t => {
|
||||||
|
let e;
|
||||||
|
for (e = 0; e < i; e++) t.dyn_ltree[2 * e] = 0;
|
||||||
|
for (e = 0; e < n; e++) t.dyn_dtree[2 * e] = 0;
|
||||||
|
for (e = 0; e < 19; e++) t.bl_tree[2 * e] = 0;
|
||||||
|
t.dyn_ltree[512] = 1, t.opt_len = t.static_len = 0, t.sym_next = t.matches = 0
|
||||||
|
},
|
||||||
|
Z = t => {
|
||||||
|
t.bi_valid > 8 ? y(t, t.bi_buf) : t.bi_valid > 0 && (t.pending_buf[t.pending++] = t.bi_buf), t.bi_buf = 0, t.bi_valid = 0
|
||||||
|
},
|
||||||
|
U = (t, e, a, i) => {
|
||||||
|
const n = 2 * e,
|
||||||
|
s = 2 * a;
|
||||||
|
return t[n] < t[s] || t[n] === t[s] && i[e] <= i[a]
|
||||||
|
},
|
||||||
|
S = (t, e, a) => {
|
||||||
|
const i = t.heap[a];
|
||||||
|
let n = a << 1;
|
||||||
|
for (; n <= t.heap_len && (n < t.heap_len && U(e, t.heap[n + 1], t.heap[n], t.depth) && n++, !U(e, i, t.heap[n], t.depth));) t.heap[a] = t.heap[n], a = n, n <<= 1;
|
||||||
|
t.heap[a] = i
|
||||||
|
},
|
||||||
|
D = (t, e, i) => {
|
||||||
|
let n, s, l, h, d = 0;
|
||||||
|
if (0 !== t.sym_next)
|
||||||
|
do {
|
||||||
|
n = 255 & t.pending_buf[t.sym_buf + d++], n += (255 & t.pending_buf[t.sym_buf + d++]) << 8, s = t.pending_buf[t.sym_buf + d++], 0 === n ? z(t, s, e) : (l = c[s], z(t, l + a + 1, e), h = r[l], 0 !== h && (s -= u[l], x(t, s, h)), n--, l = v(n), z(t, l, i), h = o[l], 0 !== h && (n -= w[l], x(t, n, h)))
|
||||||
|
} while (d < t.sym_next);
|
||||||
|
z(t, 256, e)
|
||||||
|
},
|
||||||
|
T = (t, e) => {
|
||||||
|
const a = e.dyn_tree,
|
||||||
|
i = e.stat_desc.static_tree,
|
||||||
|
n = e.stat_desc.has_stree,
|
||||||
|
r = e.stat_desc.elems;
|
||||||
|
let o, l, h, d = -1;
|
||||||
|
for (t.heap_len = 0, t.heap_max = 573, o = 0; o < r; o++) 0 !== a[2 * o] ? (t.heap[++t.heap_len] = d = o, t.depth[o] = 0) : a[2 * o + 1] = 0;
|
||||||
|
for (; t.heap_len < 2;) h = t.heap[++t.heap_len] = d < 2 ? ++d : 0, a[2 * h] = 1, t.depth[h] = 0, t.opt_len--, n && (t.static_len -= i[2 * h + 1]);
|
||||||
|
for (e.max_code = d, o = t.heap_len >> 1; o >= 1; o--) S(t, a, o);
|
||||||
|
h = r;
|
||||||
|
do {
|
||||||
|
o = t.heap[1], t.heap[1] = t.heap[t.heap_len--], S(t, a, 1), l = t.heap[1], t.heap[--t.heap_max] = o, t.heap[--t.heap_max] = l, a[2 * h] = a[2 * o] + a[2 * l], t.depth[h] = (t.depth[o] >= t.depth[l] ? t.depth[o] : t.depth[l]) + 1, a[2 * o + 1] = a[2 * l + 1] = h, t.heap[1] = h++, S(t, a, 1)
|
||||||
|
} while (t.heap_len >= 2);
|
||||||
|
t.heap[--t.heap_max] = t.heap[1], ((t, e) => {
|
||||||
|
const a = e.dyn_tree,
|
||||||
|
i = e.max_code,
|
||||||
|
n = e.stat_desc.static_tree,
|
||||||
|
r = e.stat_desc.has_stree,
|
||||||
|
o = e.stat_desc.extra_bits,
|
||||||
|
l = e.stat_desc.extra_base,
|
||||||
|
h = e.stat_desc.max_length;
|
||||||
|
let d, _, f, c, u, w, m = 0;
|
||||||
|
for (c = 0; c <= s; c++) t.bl_count[c] = 0;
|
||||||
|
for (a[2 * t.heap[t.heap_max] + 1] = 0, d = t.heap_max + 1; d < 573; d++) _ = t.heap[d], c = a[2 * a[2 * _ + 1] + 1] + 1, c > h && (c = h, m++), a[2 * _ + 1] = c, _ > i || (t.bl_count[c]++, u = 0, _ >= l && (u = o[_ - l]), w = a[2 * _], t.opt_len += w * (c + u), r && (t.static_len += w * (n[2 * _ + 1] + u)));
|
||||||
|
if (0 !== m) {
|
||||||
|
do {
|
||||||
|
for (c = h - 1; 0 === t.bl_count[c];) c--;
|
||||||
|
t.bl_count[c]--, t.bl_count[c + 1] += 2, t.bl_count[h]--, m -= 2
|
||||||
|
} while (m > 0);
|
||||||
|
for (c = h; 0 !== c; c--)
|
||||||
|
for (_ = t.bl_count[c]; 0 !== _;) f = t.heap[--d], f > i || (a[2 * f + 1] !== c && (t.opt_len += (c - a[2 * f + 1]) * a[2 * f], a[2 * f + 1] = c), _--)
|
||||||
|
}
|
||||||
|
})(t, e), E(a, d, t.bl_count)
|
||||||
|
},
|
||||||
|
O = (t, e, a) => {
|
||||||
|
let i, n, s = -1,
|
||||||
|
r = e[1],
|
||||||
|
o = 0,
|
||||||
|
l = 7,
|
||||||
|
h = 4;
|
||||||
|
for (0 === r && (l = 138, h = 3), e[2 * (a + 1) + 1] = 65535, i = 0; i <= a; i++) n = r, r = e[2 * (i + 1) + 1], ++o < l && n === r || (o < h ? t.bl_tree[2 * n] += o : 0 !== n ? (n !== s && t.bl_tree[2 * n]++, t.bl_tree[32]++) : o <= 10 ? t.bl_tree[34]++ : t.bl_tree[36]++, o = 0, s = n, 0 === r ? (l = 138, h = 3) : n === r ? (l = 6, h = 3) : (l = 7, h = 4))
|
||||||
|
},
|
||||||
|
I = (t, e, a) => {
|
||||||
|
let i, n, s = -1,
|
||||||
|
r = e[1],
|
||||||
|
o = 0,
|
||||||
|
l = 7,
|
||||||
|
h = 4;
|
||||||
|
for (0 === r && (l = 138, h = 3), i = 0; i <= a; i++)
|
||||||
|
if (n = r, r = e[2 * (i + 1) + 1], !(++o < l && n === r)) {
|
||||||
|
if (o < h)
|
||||||
|
do {
|
||||||
|
z(t, n, t.bl_tree)
|
||||||
|
} while (0 != --o);
|
||||||
|
else 0 !== n ? (n !== s && (z(t, n, t.bl_tree), o--), z(t, 16, t.bl_tree), x(t, o - 3, 2)) : o <= 10 ? (z(t, 17, t.bl_tree), x(t, o - 3, 3)) : (z(t, 18, t.bl_tree), x(t, o - 11, 7));
|
||||||
|
o = 0, s = n, 0 === r ? (l = 138, h = 3) : n === r ? (l = 6, h = 3) : (l = 7, h = 4)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let F = !1;
|
||||||
|
const L = (t, e, a, i) => {
|
||||||
|
x(t, 0 + (i ? 1 : 0), 3), Z(t), y(t, a), y(t, ~a), a && t.pending_buf.set(t.window.subarray(e, e + a), t.pending), t.pending += a
|
||||||
|
};
|
||||||
|
var N = (t, e, i, n) => {
|
||||||
|
let s, r, o = 0;
|
||||||
|
t.level > 0 ? (2 === t.strm.data_type && (t.strm.data_type = (t => {
|
||||||
|
let e, i = 4093624447;
|
||||||
|
for (e = 0; e <= 31; e++, i >>>= 1)
|
||||||
|
if (1 & i && 0 !== t.dyn_ltree[2 * e]) return 0;
|
||||||
|
if (0 !== t.dyn_ltree[18] || 0 !== t.dyn_ltree[20] || 0 !== t.dyn_ltree[26]) return 1;
|
||||||
|
for (e = 32; e < a; e++)
|
||||||
|
if (0 !== t.dyn_ltree[2 * e]) return 1;
|
||||||
|
return 0
|
||||||
|
})(t)), T(t, t.l_desc), T(t, t.d_desc), o = (t => {
|
||||||
|
let e;
|
||||||
|
for (O(t, t.dyn_ltree, t.l_desc.max_code), O(t, t.dyn_dtree, t.d_desc.max_code), T(t, t.bl_desc), e = 18; e >= 3 && 0 === t.bl_tree[2 * h[e] + 1]; e--);
|
||||||
|
return t.opt_len += 3 * (e + 1) + 5 + 5 + 4, e
|
||||||
|
})(t), s = t.opt_len + 3 + 7 >>> 3, r = t.static_len + 3 + 7 >>> 3, r <= s && (s = r)) : s = r = i + 5, i + 4 <= s && -1 !== e ? L(t, e, i, n) : 4 === t.strategy || r === s ? (x(t, 2 + (n ? 1 : 0), 3), D(t, d, _)) : (x(t, 4 + (n ? 1 : 0), 3), ((t, e, a, i) => {
|
||||||
|
let n;
|
||||||
|
for (x(t, e - 257, 5), x(t, a - 1, 5), x(t, i - 4, 4), n = 0; n < i; n++) x(t, t.bl_tree[2 * h[n] + 1], 3);
|
||||||
|
I(t, t.dyn_ltree, e - 1), I(t, t.dyn_dtree, a - 1)
|
||||||
|
})(t, t.l_desc.max_code + 1, t.d_desc.max_code + 1, o + 1), D(t, t.dyn_ltree, t.dyn_dtree)), R(t), n && Z(t)
|
||||||
|
},
|
||||||
|
B = {
|
||||||
|
_tr_init: t => {
|
||||||
|
F || ((() => {
|
||||||
|
let t, e, a, h, k;
|
||||||
|
const v = new Array(16);
|
||||||
|
for (a = 0, h = 0; h < 28; h++)
|
||||||
|
for (u[h] = a, t = 0; t < 1 << r[h]; t++) c[a++] = h;
|
||||||
|
for (c[a - 1] = h, k = 0, h = 0; h < 16; h++)
|
||||||
|
for (w[h] = k, t = 0; t < 1 << o[h]; t++) f[k++] = h;
|
||||||
|
for (k >>= 7; h < n; h++)
|
||||||
|
for (w[h] = k << 7, t = 0; t < 1 << o[h] - 7; t++) f[256 + k++] = h;
|
||||||
|
for (e = 0; e <= s; e++) v[e] = 0;
|
||||||
|
for (t = 0; t <= 143;) d[2 * t + 1] = 8, t++, v[8]++;
|
||||||
|
for (; t <= 255;) d[2 * t + 1] = 9, t++, v[9]++;
|
||||||
|
for (; t <= 279;) d[2 * t + 1] = 7, t++, v[7]++;
|
||||||
|
for (; t <= 287;) d[2 * t + 1] = 8, t++, v[8]++;
|
||||||
|
for (E(d, 287, v), t = 0; t < n; t++) _[2 * t + 1] = 5, _[2 * t] = A(t, 5);
|
||||||
|
b = new m(d, r, 257, i, s), g = new m(_, o, 0, n, s), p = new m(new Array(0), l, 0, 19, 7)
|
||||||
|
})(), F = !0), t.l_desc = new k(t.dyn_ltree, b), t.d_desc = new k(t.dyn_dtree, g), t.bl_desc = new k(t.bl_tree, p), t.bi_buf = 0, t.bi_valid = 0, R(t)
|
||||||
|
},
|
||||||
|
_tr_stored_block: L,
|
||||||
|
_tr_flush_block: N,
|
||||||
|
_tr_tally: (t, e, i) => (t.pending_buf[t.sym_buf + t.sym_next++] = e, t.pending_buf[t.sym_buf + t.sym_next++] = e >> 8, t.pending_buf[t.sym_buf + t.sym_next++] = i, 0 === e ? t.dyn_ltree[2 * i]++ : (t.matches++, e--, t.dyn_ltree[2 * (c[i] + a + 1)]++, t.dyn_dtree[2 * v(e)]++), t.sym_next === t.sym_end),
|
||||||
|
_tr_align: t => {
|
||||||
|
x(t, 2, 3), z(t, 256, d), (t => {
|
||||||
|
16 === t.bi_valid ? (y(t, t.bi_buf), t.bi_buf = 0, t.bi_valid = 0) : t.bi_valid >= 8 && (t.pending_buf[t.pending++] = 255 & t.bi_buf, t.bi_buf >>= 8, t.bi_valid -= 8)
|
||||||
|
})(t)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var C = (t, e, a, i) => {
|
||||||
|
let n = 65535 & t | 0,
|
||||||
|
s = t >>> 16 & 65535 | 0,
|
||||||
|
r = 0;
|
||||||
|
for (; 0 !== a;) {
|
||||||
|
r = a > 2e3 ? 2e3 : a, a -= r;
|
||||||
|
do {
|
||||||
|
n = n + e[i++] | 0, s = s + n | 0
|
||||||
|
} while (--r);
|
||||||
|
n %= 65521, s %= 65521
|
||||||
|
}
|
||||||
|
return n | s << 16 | 0
|
||||||
|
};
|
||||||
|
const M = new Uint32Array((() => {
|
||||||
|
let t, e = [];
|
||||||
|
for (var 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
|
||||||
|
})());
|
||||||
|
var H = (t, e, a, i) => {
|
||||||
|
const n = M,
|
||||||
|
s = i + a;
|
||||||
|
t ^= -1;
|
||||||
|
for (let a = i; a < s; a++) t = t >>> 8 ^ n[255 & (t ^ e[a])];
|
||||||
|
return -1 ^ t
|
||||||
|
},
|
||||||
|
j = {
|
||||||
|
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"
|
||||||
|
},
|
||||||
|
K = {
|
||||||
|
Z_NO_FLUSH: 0,
|
||||||
|
Z_PARTIAL_FLUSH: 1,
|
||||||
|
Z_SYNC_FLUSH: 2,
|
||||||
|
Z_FULL_FLUSH: 3,
|
||||||
|
Z_FINISH: 4,
|
||||||
|
Z_BLOCK: 5,
|
||||||
|
Z_TREES: 6,
|
||||||
|
Z_OK: 0,
|
||||||
|
Z_STREAM_END: 1,
|
||||||
|
Z_NEED_DICT: 2,
|
||||||
|
Z_ERRNO: -1,
|
||||||
|
Z_STREAM_ERROR: -2,
|
||||||
|
Z_DATA_ERROR: -3,
|
||||||
|
Z_MEM_ERROR: -4,
|
||||||
|
Z_BUF_ERROR: -5,
|
||||||
|
Z_NO_COMPRESSION: 0,
|
||||||
|
Z_BEST_SPEED: 1,
|
||||||
|
Z_BEST_COMPRESSION: 9,
|
||||||
|
Z_DEFAULT_COMPRESSION: -1,
|
||||||
|
Z_FILTERED: 1,
|
||||||
|
Z_HUFFMAN_ONLY: 2,
|
||||||
|
Z_RLE: 3,
|
||||||
|
Z_FIXED: 4,
|
||||||
|
Z_DEFAULT_STRATEGY: 0,
|
||||||
|
Z_BINARY: 0,
|
||||||
|
Z_TEXT: 1,
|
||||||
|
Z_UNKNOWN: 2,
|
||||||
|
Z_DEFLATED: 8
|
||||||
|
};
|
||||||
|
const {
|
||||||
|
_tr_init: P,
|
||||||
|
_tr_stored_block: Y,
|
||||||
|
_tr_flush_block: G,
|
||||||
|
_tr_tally: X,
|
||||||
|
_tr_align: W
|
||||||
|
} = B, {
|
||||||
|
Z_NO_FLUSH: q,
|
||||||
|
Z_PARTIAL_FLUSH: J,
|
||||||
|
Z_FULL_FLUSH: Q,
|
||||||
|
Z_FINISH: V,
|
||||||
|
Z_BLOCK: $,
|
||||||
|
Z_OK: tt,
|
||||||
|
Z_STREAM_END: et,
|
||||||
|
Z_STREAM_ERROR: at,
|
||||||
|
Z_DATA_ERROR: it,
|
||||||
|
Z_BUF_ERROR: nt,
|
||||||
|
Z_DEFAULT_COMPRESSION: st,
|
||||||
|
Z_FILTERED: rt,
|
||||||
|
Z_HUFFMAN_ONLY: ot,
|
||||||
|
Z_RLE: lt,
|
||||||
|
Z_FIXED: ht,
|
||||||
|
Z_DEFAULT_STRATEGY: dt,
|
||||||
|
Z_UNKNOWN: _t,
|
||||||
|
Z_DEFLATED: ft
|
||||||
|
} = K, ct = 258, ut = 262, wt = 42, mt = 113, bt = 666, gt = (t, e) => (t.msg = j[e], e), pt = t => 2 * t - (t > 4 ? 9 : 0), kt = t => {
|
||||||
|
let e = t.length;
|
||||||
|
for (; --e >= 0;) t[e] = 0
|
||||||
|
}, vt = t => {
|
||||||
|
let e, a, i, n = t.w_size;
|
||||||
|
e = t.hash_size, i = e;
|
||||||
|
do {
|
||||||
|
a = t.head[--i], t.head[i] = a >= n ? a - n : 0
|
||||||
|
} while (--e);
|
||||||
|
e = n, i = e;
|
||||||
|
do {
|
||||||
|
a = t.prev[--i], t.prev[i] = a >= n ? a - n : 0
|
||||||
|
} while (--e)
|
||||||
|
};
|
||||||
|
let yt = (t, e, a) => (e << t.hash_shift ^ a) & t.hash_mask;
|
||||||
|
const xt = t => {
|
||||||
|
const e = t.state;
|
||||||
|
let a = e.pending;
|
||||||
|
a > t.avail_out && (a = t.avail_out), 0 !== a && (t.output.set(e.pending_buf.subarray(e.pending_out, 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))
|
||||||
|
},
|
||||||
|
zt = (t, e) => {
|
||||||
|
G(t, t.block_start >= 0 ? t.block_start : -1, t.strstart - t.block_start, e), t.block_start = t.strstart, xt(t.strm)
|
||||||
|
},
|
||||||
|
At = (t, e) => {
|
||||||
|
t.pending_buf[t.pending++] = e
|
||||||
|
},
|
||||||
|
Et = (t, e) => {
|
||||||
|
t.pending_buf[t.pending++] = e >>> 8 & 255, t.pending_buf[t.pending++] = 255 & e
|
||||||
|
},
|
||||||
|
Rt = (t, e, a, i) => {
|
||||||
|
let n = t.avail_in;
|
||||||
|
return n > i && (n = i), 0 === n ? 0 : (t.avail_in -= n, e.set(t.input.subarray(t.next_in, t.next_in + n), a), 1 === t.state.wrap ? t.adler = C(t.adler, e, n, a) : 2 === t.state.wrap && (t.adler = H(t.adler, e, n, a)), t.next_in += n, t.total_in += n, n)
|
||||||
|
},
|
||||||
|
Zt = (t, e) => {
|
||||||
|
let a, i, n = t.max_chain_length,
|
||||||
|
s = t.strstart,
|
||||||
|
r = t.prev_length,
|
||||||
|
o = t.nice_match;
|
||||||
|
const l = t.strstart > t.w_size - ut ? t.strstart - (t.w_size - ut) : 0,
|
||||||
|
h = t.window,
|
||||||
|
d = t.w_mask,
|
||||||
|
_ = t.prev,
|
||||||
|
f = t.strstart + ct;
|
||||||
|
let c = h[s + r - 1],
|
||||||
|
u = h[s + r];
|
||||||
|
t.prev_length >= t.good_match && (n >>= 2), o > t.lookahead && (o = t.lookahead);
|
||||||
|
do {
|
||||||
|
if (a = e, h[a + r] === u && h[a + r - 1] === c && h[a] === h[s] && h[++a] === h[s + 1]) {
|
||||||
|
s += 2, a++;
|
||||||
|
do {} while (h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && s < f);
|
||||||
|
if (i = ct - (f - s), s = f - ct, i > r) {
|
||||||
|
if (t.match_start = e, r = i, i >= o) break;
|
||||||
|
c = h[s + r - 1], u = h[s + r]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while ((e = _[e & d]) > l && 0 != --n);
|
||||||
|
return r <= t.lookahead ? r : t.lookahead
|
||||||
|
},
|
||||||
|
Ut = t => {
|
||||||
|
const e = t.w_size;
|
||||||
|
let a, i, n;
|
||||||
|
do {
|
||||||
|
if (i = t.window_size - t.lookahead - t.strstart, t.strstart >= e + (e - ut) && (t.window.set(t.window.subarray(e, e + e - i), 0), t.match_start -= e, t.strstart -= e, t.block_start -= e, t.insert > t.strstart && (t.insert = t.strstart), vt(t), i += e), 0 === t.strm.avail_in) break;
|
||||||
|
if (a = Rt(t.strm, t.window, t.strstart + t.lookahead, i), t.lookahead += a, t.lookahead + t.insert >= 3)
|
||||||
|
for (n = t.strstart - t.insert, t.ins_h = t.window[n], t.ins_h = yt(t, t.ins_h, t.window[n + 1]); t.insert && (t.ins_h = yt(t, t.ins_h, t.window[n + 3 - 1]), t.prev[n & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = n, n++, t.insert--, !(t.lookahead + t.insert < 3)););
|
||||||
|
} while (t.lookahead < ut && 0 !== t.strm.avail_in)
|
||||||
|
},
|
||||||
|
St = (t, e) => {
|
||||||
|
let a, i, n, s = t.pending_buf_size - 5 > t.w_size ? t.w_size : t.pending_buf_size - 5,
|
||||||
|
r = 0,
|
||||||
|
o = t.strm.avail_in;
|
||||||
|
do {
|
||||||
|
if (a = 65535, n = t.bi_valid + 42 >> 3, t.strm.avail_out < n) break;
|
||||||
|
if (n = t.strm.avail_out - n, i = t.strstart - t.block_start, a > i + t.strm.avail_in && (a = i + t.strm.avail_in), a > n && (a = n), a < s && (0 === a && e !== V || e === q || a !== i + t.strm.avail_in)) break;
|
||||||
|
r = e === V && a === i + t.strm.avail_in ? 1 : 0, Y(t, 0, 0, r), t.pending_buf[t.pending - 4] = a, t.pending_buf[t.pending - 3] = a >> 8, t.pending_buf[t.pending - 2] = ~a, t.pending_buf[t.pending - 1] = ~a >> 8, xt(t.strm), i && (i > a && (i = a), t.strm.output.set(t.window.subarray(t.block_start, t.block_start + i), t.strm.next_out), t.strm.next_out += i, t.strm.avail_out -= i, t.strm.total_out += i, t.block_start += i, a -= i), a && (Rt(t.strm, t.strm.output, t.strm.next_out, a), t.strm.next_out += a, t.strm.avail_out -= a, t.strm.total_out += a)
|
||||||
|
} while (0 === r);
|
||||||
|
return o -= t.strm.avail_in, o && (o >= t.w_size ? (t.matches = 2, t.window.set(t.strm.input.subarray(t.strm.next_in - t.w_size, t.strm.next_in), 0), t.strstart = t.w_size, t.insert = t.strstart) : (t.window_size - t.strstart <= o && (t.strstart -= t.w_size, t.window.set(t.window.subarray(t.w_size, t.w_size + t.strstart), 0), t.matches < 2 && t.matches++, t.insert > t.strstart && (t.insert = t.strstart)), t.window.set(t.strm.input.subarray(t.strm.next_in - o, t.strm.next_in), t.strstart), t.strstart += o, t.insert += o > t.w_size - t.insert ? t.w_size - t.insert : o), t.block_start = t.strstart), t.high_water < t.strstart && (t.high_water = t.strstart), r ? 4 : e !== q && e !== V && 0 === t.strm.avail_in && t.strstart === t.block_start ? 2 : (n = t.window_size - t.strstart, t.strm.avail_in > n && t.block_start >= t.w_size && (t.block_start -= t.w_size, t.strstart -= t.w_size, t.window.set(t.window.subarray(t.w_size, t.w_size + t.strstart), 0), t.matches < 2 && t.matches++, n += t.w_size, t.insert > t.strstart && (t.insert = t.strstart)), n > t.strm.avail_in && (n = t.strm.avail_in), n && (Rt(t.strm, t.window, t.strstart, n), t.strstart += n, t.insert += n > t.w_size - t.insert ? t.w_size - t.insert : n), t.high_water < t.strstart && (t.high_water = t.strstart), n = t.bi_valid + 42 >> 3, n = t.pending_buf_size - n > 65535 ? 65535 : t.pending_buf_size - n, s = n > t.w_size ? t.w_size : n, i = t.strstart - t.block_start, (i >= s || (i || e === V) && e !== q && 0 === t.strm.avail_in && i <= n) && (a = i > n ? n : i, r = e === V && 0 === t.strm.avail_in && a === i ? 1 : 0, Y(t, t.block_start, a, r), t.block_start += a, xt(t.strm)), r ? 3 : 1)
|
||||||
|
},
|
||||||
|
Dt = (t, e) => {
|
||||||
|
let a, i;
|
||||||
|
for (;;) {
|
||||||
|
if (t.lookahead < ut) {
|
||||||
|
if (Ut(t), t.lookahead < ut && e === q) return 1;
|
||||||
|
if (0 === t.lookahead) break
|
||||||
|
}
|
||||||
|
if (a = 0, t.lookahead >= 3 && (t.ins_h = yt(t, t.ins_h, t.window[t.strstart + 3 - 1]), 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 - ut && (t.match_length = Zt(t, a)), t.match_length >= 3)
|
||||||
|
if (i = X(t, t.strstart - t.match_start, t.match_length - 3), t.lookahead -= t.match_length, t.match_length <= t.max_lazy_match && t.lookahead >= 3) {
|
||||||
|
t.match_length--;
|
||||||
|
do {
|
||||||
|
t.strstart++, t.ins_h = yt(t, t.ins_h, t.window[t.strstart + 3 - 1]), 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 = yt(t, t.ins_h, t.window[t.strstart + 1]);
|
||||||
|
else i = X(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++;
|
||||||
|
if (i && (zt(t, !1), 0 === t.strm.avail_out)) return 1
|
||||||
|
}
|
||||||
|
return t.insert = t.strstart < 2 ? t.strstart : 2, e === V ? (zt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.sym_next && (zt(t, !1), 0 === t.strm.avail_out) ? 1 : 2
|
||||||
|
},
|
||||||
|
Tt = (t, e) => {
|
||||||
|
let a, i, n;
|
||||||
|
for (;;) {
|
||||||
|
if (t.lookahead < ut) {
|
||||||
|
if (Ut(t), t.lookahead < ut && e === q) return 1;
|
||||||
|
if (0 === t.lookahead) break
|
||||||
|
}
|
||||||
|
if (a = 0, t.lookahead >= 3 && (t.ins_h = yt(t, t.ins_h, t.window[t.strstart + 3 - 1]), 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 = 2, 0 !== a && t.prev_length < t.max_lazy_match && t.strstart - a <= t.w_size - ut && (t.match_length = Zt(t, a), t.match_length <= 5 && (t.strategy === rt || 3 === t.match_length && t.strstart - t.match_start > 4096) && (t.match_length = 2)), t.prev_length >= 3 && t.match_length <= t.prev_length) {
|
||||||
|
n = t.strstart + t.lookahead - 3, i = X(t, t.strstart - 1 - t.prev_match, t.prev_length - 3), t.lookahead -= t.prev_length - 1, t.prev_length -= 2;
|
||||||
|
do {
|
||||||
|
++t.strstart <= n && (t.ins_h = yt(t, t.ins_h, t.window[t.strstart + 3 - 1]), 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 = 2, t.strstart++, i && (zt(t, !1), 0 === t.strm.avail_out)) return 1
|
||||||
|
} else if (t.match_available) {
|
||||||
|
if (i = X(t, 0, t.window[t.strstart - 1]), i && zt(t, !1), t.strstart++, t.lookahead--, 0 === t.strm.avail_out) return 1
|
||||||
|
} else t.match_available = 1, t.strstart++, t.lookahead--
|
||||||
|
}
|
||||||
|
return t.match_available && (i = X(t, 0, t.window[t.strstart - 1]), t.match_available = 0), t.insert = t.strstart < 2 ? t.strstart : 2, e === V ? (zt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.sym_next && (zt(t, !1), 0 === t.strm.avail_out) ? 1 : 2
|
||||||
|
};
|
||||||
|
|
||||||
|
function Ot(t, e, a, i, n) {
|
||||||
|
this.good_length = t, this.max_lazy = e, this.nice_length = a, this.max_chain = i, this.func = n
|
||||||
|
}
|
||||||
|
const It = [new Ot(0, 0, 0, 0, St), new Ot(4, 4, 8, 4, Dt), new Ot(4, 5, 16, 8, Dt), new Ot(4, 6, 32, 32, Dt), new Ot(4, 4, 16, 16, Tt), new Ot(8, 16, 32, 32, Tt), new Ot(8, 16, 128, 128, Tt), new Ot(8, 32, 128, 256, Tt), new Ot(32, 128, 258, 1024, Tt), new Ot(32, 258, 258, 4096, Tt)];
|
||||||
|
|
||||||
|
function Ft() {
|
||||||
|
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 = ft, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new Uint16Array(1146), this.dyn_dtree = new Uint16Array(122), this.bl_tree = new Uint16Array(78), kt(this.dyn_ltree), kt(this.dyn_dtree), kt(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new Uint16Array(16), this.heap = new Uint16Array(573), kt(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new Uint16Array(573), kt(this.depth), this.sym_buf = 0, this.lit_bufsize = 0, this.sym_next = 0, this.sym_end = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0
|
||||||
|
}
|
||||||
|
const Lt = t => {
|
||||||
|
if (!t) return 1;
|
||||||
|
const e = t.state;
|
||||||
|
return !e || e.strm !== t || e.status !== wt && 57 !== e.status && 69 !== e.status && 73 !== e.status && 91 !== e.status && 103 !== e.status && e.status !== mt && e.status !== bt ? 1 : 0
|
||||||
|
},
|
||||||
|
Nt = t => {
|
||||||
|
if (Lt(t)) return gt(t, at);
|
||||||
|
t.total_in = t.total_out = 0, t.data_type = _t;
|
||||||
|
const e = t.state;
|
||||||
|
return e.pending = 0, e.pending_out = 0, e.wrap < 0 && (e.wrap = -e.wrap), e.status = 2 === e.wrap ? 57 : e.wrap ? wt : mt, t.adler = 2 === e.wrap ? 0 : 1, e.last_flush = -2, P(e), tt
|
||||||
|
},
|
||||||
|
Bt = t => {
|
||||||
|
const e = Nt(t);
|
||||||
|
var a;
|
||||||
|
return e === tt && ((a = t.state).window_size = 2 * a.w_size, kt(a.head), a.max_lazy_match = It[a.level].max_lazy, a.good_match = It[a.level].good_length, a.nice_match = It[a.level].nice_length, a.max_chain_length = It[a.level].max_chain, a.strstart = 0, a.block_start = 0, a.lookahead = 0, a.insert = 0, a.match_length = a.prev_length = 2, a.match_available = 0, a.ins_h = 0), e
|
||||||
|
},
|
||||||
|
Ct = (t, e, a, i, n, s) => {
|
||||||
|
if (!t) return at;
|
||||||
|
let r = 1;
|
||||||
|
if (e === st && (e = 6), i < 0 ? (r = 0, i = -i) : i > 15 && (r = 2, i -= 16), n < 1 || n > 9 || a !== ft || i < 8 || i > 15 || e < 0 || e > 9 || s < 0 || s > ht || 8 === i && 1 !== r) return gt(t, at);
|
||||||
|
8 === i && (i = 9);
|
||||||
|
const o = new Ft;
|
||||||
|
return t.state = o, o.strm = t, o.status = wt, o.wrap = r, o.gzhead = null, o.w_bits = i, o.w_size = 1 << o.w_bits, o.w_mask = o.w_size - 1, o.hash_bits = n + 7, o.hash_size = 1 << o.hash_bits, o.hash_mask = o.hash_size - 1, o.hash_shift = ~~((o.hash_bits + 3 - 1) / 3), o.window = new Uint8Array(2 * o.w_size), o.head = new Uint16Array(o.hash_size), o.prev = new Uint16Array(o.w_size), o.lit_bufsize = 1 << n + 6, o.pending_buf_size = 4 * o.lit_bufsize, o.pending_buf = new Uint8Array(o.pending_buf_size), o.sym_buf = o.lit_bufsize, o.sym_end = 3 * (o.lit_bufsize - 1), o.level = e, o.strategy = s, o.method = a, Bt(t)
|
||||||
|
};
|
||||||
|
var Mt = {
|
||||||
|
deflateInit: (t, e) => Ct(t, e, ft, 15, 8, dt),
|
||||||
|
deflateInit2: Ct,
|
||||||
|
deflateReset: Bt,
|
||||||
|
deflateResetKeep: Nt,
|
||||||
|
deflateSetHeader: (t, e) => Lt(t) || 2 !== t.state.wrap ? at : (t.state.gzhead = e, tt),
|
||||||
|
deflate: (t, e) => {
|
||||||
|
if (Lt(t) || e > $ || e < 0) return t ? gt(t, at) : at;
|
||||||
|
const a = t.state;
|
||||||
|
if (!t.output || 0 !== t.avail_in && !t.input || a.status === bt && e !== V) return gt(t, 0 === t.avail_out ? nt : at);
|
||||||
|
const i = a.last_flush;
|
||||||
|
if (a.last_flush = e, 0 !== a.pending) {
|
||||||
|
if (xt(t), 0 === t.avail_out) return a.last_flush = -1, tt
|
||||||
|
} else if (0 === t.avail_in && pt(e) <= pt(i) && e !== V) return gt(t, nt);
|
||||||
|
if (a.status === bt && 0 !== t.avail_in) return gt(t, nt);
|
||||||
|
if (a.status === wt && 0 === a.wrap && (a.status = mt), a.status === wt) {
|
||||||
|
let e = ft + (a.w_bits - 8 << 4) << 8,
|
||||||
|
i = -1;
|
||||||
|
if (i = a.strategy >= ot || a.level < 2 ? 0 : a.level < 6 ? 1 : 6 === a.level ? 2 : 3, e |= i << 6, 0 !== a.strstart && (e |= 32), e += 31 - e % 31, Et(a, e), 0 !== a.strstart && (Et(a, t.adler >>> 16), Et(a, 65535 & t.adler)), t.adler = 1, a.status = mt, xt(t), 0 !== a.pending) return a.last_flush = -1, tt
|
||||||
|
}
|
||||||
|
if (57 === a.status)
|
||||||
|
if (t.adler = 0, At(a, 31), At(a, 139), At(a, 8), a.gzhead) At(a, (a.gzhead.text ? 1 : 0) + (a.gzhead.hcrc ? 2 : 0) + (a.gzhead.extra ? 4 : 0) + (a.gzhead.name ? 8 : 0) + (a.gzhead.comment ? 16 : 0)), At(a, 255 & a.gzhead.time), At(a, a.gzhead.time >> 8 & 255), At(a, a.gzhead.time >> 16 & 255), At(a, a.gzhead.time >> 24 & 255), At(a, 9 === a.level ? 2 : a.strategy >= ot || a.level < 2 ? 4 : 0), At(a, 255 & a.gzhead.os), a.gzhead.extra && a.gzhead.extra.length && (At(a, 255 & a.gzhead.extra.length), At(a, a.gzhead.extra.length >> 8 & 255)), a.gzhead.hcrc && (t.adler = H(t.adler, a.pending_buf, a.pending, 0)), a.gzindex = 0, a.status = 69;
|
||||||
|
else if (At(a, 0), At(a, 0), At(a, 0), At(a, 0), At(a, 0), At(a, 9 === a.level ? 2 : a.strategy >= ot || a.level < 2 ? 4 : 0), At(a, 3), a.status = mt, xt(t), 0 !== a.pending) return a.last_flush = -1, tt;
|
||||||
|
if (69 === a.status) {
|
||||||
|
if (a.gzhead.extra) {
|
||||||
|
let e = a.pending,
|
||||||
|
i = (65535 & a.gzhead.extra.length) - a.gzindex;
|
||||||
|
for (; a.pending + i > a.pending_buf_size;) {
|
||||||
|
let n = a.pending_buf_size - a.pending;
|
||||||
|
if (a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex, a.gzindex + n), a.pending), a.pending = a.pending_buf_size, a.gzhead.hcrc && a.pending > e && (t.adler = H(t.adler, a.pending_buf, a.pending - e, e)), a.gzindex += n, xt(t), 0 !== a.pending) return a.last_flush = -1, tt;
|
||||||
|
e = 0, i -= n
|
||||||
|
}
|
||||||
|
let n = new Uint8Array(a.gzhead.extra);
|
||||||
|
a.pending_buf.set(n.subarray(a.gzindex, a.gzindex + i), a.pending), a.pending += i, a.gzhead.hcrc && a.pending > e && (t.adler = H(t.adler, a.pending_buf, a.pending - e, e)), a.gzindex = 0
|
||||||
|
}
|
||||||
|
a.status = 73
|
||||||
|
}
|
||||||
|
if (73 === a.status) {
|
||||||
|
if (a.gzhead.name) {
|
||||||
|
let e, i = a.pending;
|
||||||
|
do {
|
||||||
|
if (a.pending === a.pending_buf_size) {
|
||||||
|
if (a.gzhead.hcrc && a.pending > i && (t.adler = H(t.adler, a.pending_buf, a.pending - i, i)), xt(t), 0 !== a.pending) return a.last_flush = -1, tt;
|
||||||
|
i = 0
|
||||||
|
}
|
||||||
|
e = a.gzindex < a.gzhead.name.length ? 255 & a.gzhead.name.charCodeAt(a.gzindex++) : 0, At(a, e)
|
||||||
|
} while (0 !== e);
|
||||||
|
a.gzhead.hcrc && a.pending > i && (t.adler = H(t.adler, a.pending_buf, a.pending - i, i)), a.gzindex = 0
|
||||||
|
}
|
||||||
|
a.status = 91
|
||||||
|
}
|
||||||
|
if (91 === a.status) {
|
||||||
|
if (a.gzhead.comment) {
|
||||||
|
let e, i = a.pending;
|
||||||
|
do {
|
||||||
|
if (a.pending === a.pending_buf_size) {
|
||||||
|
if (a.gzhead.hcrc && a.pending > i && (t.adler = H(t.adler, a.pending_buf, a.pending - i, i)), xt(t), 0 !== a.pending) return a.last_flush = -1, tt;
|
||||||
|
i = 0
|
||||||
|
}
|
||||||
|
e = a.gzindex < a.gzhead.comment.length ? 255 & a.gzhead.comment.charCodeAt(a.gzindex++) : 0, At(a, e)
|
||||||
|
} while (0 !== e);
|
||||||
|
a.gzhead.hcrc && a.pending > i && (t.adler = H(t.adler, a.pending_buf, a.pending - i, i))
|
||||||
|
}
|
||||||
|
a.status = 103
|
||||||
|
}
|
||||||
|
if (103 === a.status) {
|
||||||
|
if (a.gzhead.hcrc) {
|
||||||
|
if (a.pending + 2 > a.pending_buf_size && (xt(t), 0 !== a.pending)) return a.last_flush = -1, tt;
|
||||||
|
At(a, 255 & t.adler), At(a, t.adler >> 8 & 255), t.adler = 0
|
||||||
|
}
|
||||||
|
if (a.status = mt, xt(t), 0 !== a.pending) return a.last_flush = -1, tt
|
||||||
|
}
|
||||||
|
if (0 !== t.avail_in || 0 !== a.lookahead || e !== q && a.status !== bt) {
|
||||||
|
let i = 0 === a.level ? St(a, e) : a.strategy === ot ? ((t, e) => {
|
||||||
|
let a;
|
||||||
|
for (;;) {
|
||||||
|
if (0 === t.lookahead && (Ut(t), 0 === t.lookahead)) {
|
||||||
|
if (e === q) return 1;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (t.match_length = 0, a = X(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++, a && (zt(t, !1), 0 === t.strm.avail_out)) return 1
|
||||||
|
}
|
||||||
|
return t.insert = 0, e === V ? (zt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.sym_next && (zt(t, !1), 0 === t.strm.avail_out) ? 1 : 2
|
||||||
|
})(a, e) : a.strategy === lt ? ((t, e) => {
|
||||||
|
let a, i, n, s;
|
||||||
|
const r = t.window;
|
||||||
|
for (;;) {
|
||||||
|
if (t.lookahead <= ct) {
|
||||||
|
if (Ut(t), t.lookahead <= ct && e === q) return 1;
|
||||||
|
if (0 === t.lookahead) break
|
||||||
|
}
|
||||||
|
if (t.match_length = 0, t.lookahead >= 3 && t.strstart > 0 && (n = t.strstart - 1, i = r[n], i === r[++n] && i === r[++n] && i === r[++n])) {
|
||||||
|
s = t.strstart + ct;
|
||||||
|
do {} while (i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && n < s);
|
||||||
|
t.match_length = ct - (s - n), t.match_length > t.lookahead && (t.match_length = t.lookahead)
|
||||||
|
}
|
||||||
|
if (t.match_length >= 3 ? (a = X(t, 1, t.match_length - 3), t.lookahead -= t.match_length, t.strstart += t.match_length, t.match_length = 0) : (a = X(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++), a && (zt(t, !1), 0 === t.strm.avail_out)) return 1
|
||||||
|
}
|
||||||
|
return t.insert = 0, e === V ? (zt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.sym_next && (zt(t, !1), 0 === t.strm.avail_out) ? 1 : 2
|
||||||
|
})(a, e) : It[a.level].func(a, e);
|
||||||
|
if (3 !== i && 4 !== i || (a.status = bt), 1 === i || 3 === i) return 0 === t.avail_out && (a.last_flush = -1), tt;
|
||||||
|
if (2 === i && (e === J ? W(a) : e !== $ && (Y(a, 0, 0, !1), e === Q && (kt(a.head), 0 === a.lookahead && (a.strstart = 0, a.block_start = 0, a.insert = 0))), xt(t), 0 === t.avail_out)) return a.last_flush = -1, tt
|
||||||
|
}
|
||||||
|
return e !== V ? tt : a.wrap <= 0 ? et : (2 === a.wrap ? (At(a, 255 & t.adler), At(a, t.adler >> 8 & 255), At(a, t.adler >> 16 & 255), At(a, t.adler >> 24 & 255), At(a, 255 & t.total_in), At(a, t.total_in >> 8 & 255), At(a, t.total_in >> 16 & 255), At(a, t.total_in >> 24 & 255)) : (Et(a, t.adler >>> 16), Et(a, 65535 & t.adler)), xt(t), a.wrap > 0 && (a.wrap = -a.wrap), 0 !== a.pending ? tt : et)
|
||||||
|
},
|
||||||
|
deflateEnd: t => {
|
||||||
|
if (Lt(t)) return at;
|
||||||
|
const e = t.state.status;
|
||||||
|
return t.state = null, e === mt ? gt(t, it) : tt
|
||||||
|
},
|
||||||
|
deflateSetDictionary: (t, e) => {
|
||||||
|
let a = e.length;
|
||||||
|
if (Lt(t)) return at;
|
||||||
|
const i = t.state,
|
||||||
|
n = i.wrap;
|
||||||
|
if (2 === n || 1 === n && i.status !== wt || i.lookahead) return at;
|
||||||
|
if (1 === n && (t.adler = C(t.adler, e, a, 0)), i.wrap = 0, a >= i.w_size) {
|
||||||
|
0 === n && (kt(i.head), i.strstart = 0, i.block_start = 0, i.insert = 0);
|
||||||
|
let t = new Uint8Array(i.w_size);
|
||||||
|
t.set(e.subarray(a - i.w_size, a), 0), e = t, a = i.w_size
|
||||||
|
}
|
||||||
|
const s = t.avail_in,
|
||||||
|
r = t.next_in,
|
||||||
|
o = t.input;
|
||||||
|
for (t.avail_in = a, t.next_in = 0, t.input = e, Ut(i); i.lookahead >= 3;) {
|
||||||
|
let t = i.strstart,
|
||||||
|
e = i.lookahead - 2;
|
||||||
|
do {
|
||||||
|
i.ins_h = yt(i, i.ins_h, i.window[t + 3 - 1]), i.prev[t & i.w_mask] = i.head[i.ins_h], i.head[i.ins_h] = t, t++
|
||||||
|
} while (--e);
|
||||||
|
i.strstart = t, i.lookahead = 2, Ut(i)
|
||||||
|
}
|
||||||
|
return i.strstart += i.lookahead, i.block_start = i.strstart, i.insert = i.lookahead, i.lookahead = 0, i.match_length = i.prev_length = 2, i.match_available = 0, t.next_in = r, t.input = o, t.avail_in = s, i.wrap = n, tt
|
||||||
|
},
|
||||||
|
deflateInfo: "pako deflate (from Nodeca project)"
|
||||||
|
};
|
||||||
|
const Ht = (t, e) => Object.prototype.hasOwnProperty.call(t, e);
|
||||||
|
var jt = function(t) {
|
||||||
|
const e = Array.prototype.slice.call(arguments, 1);
|
||||||
|
for (; e.length;) {
|
||||||
|
const a = e.shift();
|
||||||
|
if (a) {
|
||||||
|
if ("object" != typeof a) throw new TypeError(a + "must be non-object");
|
||||||
|
for (const e in a) Ht(a, e) && (t[e] = a[e])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return t
|
||||||
|
},
|
||||||
|
Kt = t => {
|
||||||
|
let e = 0;
|
||||||
|
for (let a = 0, i = t.length; a < i; a++) e += t[a].length;
|
||||||
|
const a = new Uint8Array(e);
|
||||||
|
for (let e = 0, i = 0, n = t.length; e < n; e++) {
|
||||||
|
let n = t[e];
|
||||||
|
a.set(n, i), i += n.length
|
||||||
|
}
|
||||||
|
return a
|
||||||
|
};
|
||||||
|
let Pt = !0;
|
||||||
|
try {
|
||||||
|
String.fromCharCode.apply(null, new Uint8Array(1))
|
||||||
|
} catch (t) {
|
||||||
|
Pt = !1
|
||||||
|
}
|
||||||
|
const Yt = new Uint8Array(256);
|
||||||
|
for (let t = 0; t < 256; t++) Yt[t] = t >= 252 ? 6 : t >= 248 ? 5 : t >= 240 ? 4 : t >= 224 ? 3 : t >= 192 ? 2 : 1;
|
||||||
|
Yt[254] = Yt[254] = 1;
|
||||||
|
var Gt = t => {
|
||||||
|
if ("function" == typeof TextEncoder && TextEncoder.prototype.encode) return (new TextEncoder).encode(t);
|
||||||
|
let e, a, i, n, s, r = t.length,
|
||||||
|
o = 0;
|
||||||
|
for (n = 0; n < r; n++) a = t.charCodeAt(n), 55296 == (64512 & a) && n + 1 < r && (i = t.charCodeAt(n + 1), 56320 == (64512 & i) && (a = 65536 + (a - 55296 << 10) + (i - 56320), n++)), o += a < 128 ? 1 : a < 2048 ? 2 : a < 65536 ? 3 : 4;
|
||||||
|
for (e = new Uint8Array(o), s = 0, n = 0; s < o; n++) a = t.charCodeAt(n), 55296 == (64512 & a) && n + 1 < r && (i = t.charCodeAt(n + 1), 56320 == (64512 & i) && (a = 65536 + (a - 55296 << 10) + (i - 56320), n++)), 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
|
||||||
|
},
|
||||||
|
Xt = (t, e) => {
|
||||||
|
const a = e || t.length;
|
||||||
|
if ("function" == typeof TextDecoder && TextDecoder.prototype.decode) return (new TextDecoder).decode(t.subarray(0, e));
|
||||||
|
let i, n;
|
||||||
|
const s = new Array(2 * a);
|
||||||
|
for (n = 0, i = 0; i < a;) {
|
||||||
|
let e = t[i++];
|
||||||
|
if (e < 128) {
|
||||||
|
s[n++] = e;
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
let r = Yt[e];
|
||||||
|
if (r > 4) s[n++] = 65533, i += r - 1;
|
||||||
|
else {
|
||||||
|
for (e &= 2 === r ? 31 : 3 === r ? 15 : 7; r > 1 && i < a;) e = e << 6 | 63 & t[i++], r--;
|
||||||
|
r > 1 ? s[n++] = 65533 : e < 65536 ? s[n++] = e : (e -= 65536, s[n++] = 55296 | e >> 10 & 1023, s[n++] = 56320 | 1023 & e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ((t, e) => {
|
||||||
|
if (e < 65534 && t.subarray && Pt) return String.fromCharCode.apply(null, t.length === e ? t : t.subarray(0, e));
|
||||||
|
let a = "";
|
||||||
|
for (let i = 0; i < e; i++) a += String.fromCharCode(t[i]);
|
||||||
|
return a
|
||||||
|
})(s, n)
|
||||||
|
},
|
||||||
|
Wt = (t, e) => {
|
||||||
|
(e = e || t.length) > t.length && (e = t.length);
|
||||||
|
let a = e - 1;
|
||||||
|
for (; a >= 0 && 128 == (192 & t[a]);) a--;
|
||||||
|
return a < 0 || 0 === a ? e : a + Yt[t[a]] > e ? a : e
|
||||||
|
};
|
||||||
|
var qt = 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
|
||||||
|
};
|
||||||
|
const Jt = Object.prototype.toString,
|
||||||
|
{
|
||||||
|
Z_NO_FLUSH: Qt,
|
||||||
|
Z_SYNC_FLUSH: Vt,
|
||||||
|
Z_FULL_FLUSH: $t,
|
||||||
|
Z_FINISH: te,
|
||||||
|
Z_OK: ee,
|
||||||
|
Z_STREAM_END: ae,
|
||||||
|
Z_DEFAULT_COMPRESSION: ie,
|
||||||
|
Z_DEFAULT_STRATEGY: ne,
|
||||||
|
Z_DEFLATED: se
|
||||||
|
} = K;
|
||||||
|
|
||||||
|
function re(t) {
|
||||||
|
this.options = jt({
|
||||||
|
level: ie,
|
||||||
|
method: se,
|
||||||
|
chunkSize: 16384,
|
||||||
|
windowBits: 15,
|
||||||
|
memLevel: 8,
|
||||||
|
strategy: ne
|
||||||
|
}, t || {});
|
||||||
|
let 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 qt, this.strm.avail_out = 0;
|
||||||
|
let a = Mt.deflateInit2(this.strm, e.level, e.method, e.windowBits, e.memLevel, e.strategy);
|
||||||
|
if (a !== ee) throw new Error(j[a]);
|
||||||
|
if (e.header && Mt.deflateSetHeader(this.strm, e.header), e.dictionary) {
|
||||||
|
let t;
|
||||||
|
if (t = "string" == typeof e.dictionary ? Gt(e.dictionary) : "[object ArrayBuffer]" === Jt.call(e.dictionary) ? new Uint8Array(e.dictionary) : e.dictionary, a = Mt.deflateSetDictionary(this.strm, t), a !== ee) throw new Error(j[a]);
|
||||||
|
this._dict_set = !0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function oe(t, e) {
|
||||||
|
const a = new re(e);
|
||||||
|
if (a.push(t, !0), a.err) throw a.msg || j[a.err];
|
||||||
|
return a.result
|
||||||
|
}
|
||||||
|
re.prototype.push = function(t, e) {
|
||||||
|
const a = this.strm,
|
||||||
|
i = this.options.chunkSize;
|
||||||
|
let n, s;
|
||||||
|
if (this.ended) return !1;
|
||||||
|
for (s = e === ~~e ? e : !0 === e ? te : Qt, "string" == typeof t ? a.input = Gt(t) : "[object ArrayBuffer]" === Jt.call(t) ? a.input = new Uint8Array(t) : a.input = t, a.next_in = 0, a.avail_in = a.input.length;;)
|
||||||
|
if (0 === a.avail_out && (a.output = new Uint8Array(i), a.next_out = 0, a.avail_out = i), (s === Vt || s === $t) && a.avail_out <= 6) this.onData(a.output.subarray(0, a.next_out)), a.avail_out = 0;
|
||||||
|
else {
|
||||||
|
if (n = Mt.deflate(a, s), n === ae) return a.next_out > 0 && this.onData(a.output.subarray(0, a.next_out)), n = Mt.deflateEnd(this.strm), this.onEnd(n), this.ended = !0, n === ee;
|
||||||
|
if (0 !== a.avail_out) {
|
||||||
|
if (s > 0 && a.next_out > 0) this.onData(a.output.subarray(0, a.next_out)), a.avail_out = 0;
|
||||||
|
else if (0 === a.avail_in) break
|
||||||
|
} else this.onData(a.output)
|
||||||
|
} return !0
|
||||||
|
}, re.prototype.onData = function(t) {
|
||||||
|
this.chunks.push(t)
|
||||||
|
}, re.prototype.onEnd = function(t) {
|
||||||
|
t === ee && (this.result = Kt(this.chunks)), this.chunks = [], this.err = t, this.msg = this.strm.msg
|
||||||
|
};
|
||||||
|
var le = {
|
||||||
|
Deflate: re,
|
||||||
|
deflate: oe,
|
||||||
|
deflateRaw: function(t, e) {
|
||||||
|
return (e = e || {}).raw = !0, oe(t, e)
|
||||||
|
},
|
||||||
|
gzip: function(t, e) {
|
||||||
|
return (e = e || {}).gzip = !0, oe(t, e)
|
||||||
|
},
|
||||||
|
constants: K
|
||||||
|
};
|
||||||
|
const he = 16209;
|
||||||
|
var de = function(t, e) {
|
||||||
|
let a, i, n, s, r, o, l, h, d, _, f, c, u, w, m, b, g, p, k, v, y, x, z, A;
|
||||||
|
const E = t.state;
|
||||||
|
a = t.next_in, z = t.input, i = a + (t.avail_in - 5), n = t.next_out, A = t.output, s = n - (e - t.avail_out), r = n + (t.avail_out - 257), o = E.dmax, l = E.wsize, h = E.whave, d = E.wnext, _ = E.window, f = E.hold, c = E.bits, u = E.lencode, w = E.distcode, m = (1 << E.lenbits) - 1, b = (1 << E.distbits) - 1;
|
||||||
|
t: do {
|
||||||
|
c < 15 && (f += z[a++] << c, c += 8, f += z[a++] << c, c += 8), g = u[f & m];
|
||||||
|
e: for (;;) {
|
||||||
|
if (p = g >>> 24, f >>>= p, c -= p, p = g >>> 16 & 255, 0 === p) A[n++] = 65535 & g;
|
||||||
|
else {
|
||||||
|
if (!(16 & p)) {
|
||||||
|
if (0 == (64 & p)) {
|
||||||
|
g = u[(65535 & g) + (f & (1 << p) - 1)];
|
||||||
|
continue e
|
||||||
|
}
|
||||||
|
if (32 & p) {
|
||||||
|
E.mode = 16191;
|
||||||
|
break t
|
||||||
|
}
|
||||||
|
t.msg = "invalid literal/length code", E.mode = he;
|
||||||
|
break t
|
||||||
|
}
|
||||||
|
k = 65535 & g, p &= 15, p && (c < p && (f += z[a++] << c, c += 8), k += f & (1 << p) - 1, f >>>= p, c -= p), c < 15 && (f += z[a++] << c, c += 8, f += z[a++] << c, c += 8), g = w[f & b];
|
||||||
|
a: for (;;) {
|
||||||
|
if (p = g >>> 24, f >>>= p, c -= p, p = g >>> 16 & 255, !(16 & p)) {
|
||||||
|
if (0 == (64 & p)) {
|
||||||
|
g = w[(65535 & g) + (f & (1 << p) - 1)];
|
||||||
|
continue a
|
||||||
|
}
|
||||||
|
t.msg = "invalid distance code", E.mode = he;
|
||||||
|
break t
|
||||||
|
}
|
||||||
|
if (v = 65535 & g, p &= 15, c < p && (f += z[a++] << c, c += 8, c < p && (f += z[a++] << c, c += 8)), v += f & (1 << p) - 1, v > o) {
|
||||||
|
t.msg = "invalid distance too far back", E.mode = he;
|
||||||
|
break t
|
||||||
|
}
|
||||||
|
if (f >>>= p, c -= p, p = n - s, v > p) {
|
||||||
|
if (p = v - p, p > h && E.sane) {
|
||||||
|
t.msg = "invalid distance too far back", E.mode = he;
|
||||||
|
break t
|
||||||
|
}
|
||||||
|
if (y = 0, x = _, 0 === d) {
|
||||||
|
if (y += l - p, p < k) {
|
||||||
|
k -= p;
|
||||||
|
do {
|
||||||
|
A[n++] = _[y++]
|
||||||
|
} while (--p);
|
||||||
|
y = n - v, x = A
|
||||||
|
}
|
||||||
|
} else if (d < p) {
|
||||||
|
if (y += l + d - p, p -= d, p < k) {
|
||||||
|
k -= p;
|
||||||
|
do {
|
||||||
|
A[n++] = _[y++]
|
||||||
|
} while (--p);
|
||||||
|
if (y = 0, d < k) {
|
||||||
|
p = d, k -= p;
|
||||||
|
do {
|
||||||
|
A[n++] = _[y++]
|
||||||
|
} while (--p);
|
||||||
|
y = n - v, x = A
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (y += d - p, p < k) {
|
||||||
|
k -= p;
|
||||||
|
do {
|
||||||
|
A[n++] = _[y++]
|
||||||
|
} while (--p);
|
||||||
|
y = n - v, x = A
|
||||||
|
}
|
||||||
|
for (; k > 2;) A[n++] = x[y++], A[n++] = x[y++], A[n++] = x[y++], k -= 3;
|
||||||
|
k && (A[n++] = x[y++], k > 1 && (A[n++] = x[y++]))
|
||||||
|
} else {
|
||||||
|
y = n - v;
|
||||||
|
do {
|
||||||
|
A[n++] = A[y++], A[n++] = A[y++], A[n++] = A[y++], k -= 3
|
||||||
|
} while (k > 2);
|
||||||
|
k && (A[n++] = A[y++], k > 1 && (A[n++] = A[y++]))
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
} while (a < i && n < r);
|
||||||
|
k = c >> 3, a -= k, c -= k << 3, f &= (1 << c) - 1, t.next_in = a, t.next_out = n, t.avail_in = a < i ? i - a + 5 : 5 - (a - i), t.avail_out = n < r ? r - n + 257 : 257 - (n - r), E.hold = f, E.bits = c
|
||||||
|
};
|
||||||
|
const _e = 15,
|
||||||
|
fe = new Uint16Array([3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0]),
|
||||||
|
ce = new Uint8Array([16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78]),
|
||||||
|
ue = new Uint16Array([1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0]),
|
||||||
|
we = new Uint8Array([16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]);
|
||||||
|
var me = (t, e, a, i, n, s, r, o) => {
|
||||||
|
const l = o.bits;
|
||||||
|
let h, d, _, f, c, u, w = 0,
|
||||||
|
m = 0,
|
||||||
|
b = 0,
|
||||||
|
g = 0,
|
||||||
|
p = 0,
|
||||||
|
k = 0,
|
||||||
|
v = 0,
|
||||||
|
y = 0,
|
||||||
|
x = 0,
|
||||||
|
z = 0,
|
||||||
|
A = null;
|
||||||
|
const E = new Uint16Array(16),
|
||||||
|
R = new Uint16Array(16);
|
||||||
|
let Z, U, S, D = null;
|
||||||
|
for (w = 0; w <= _e; w++) E[w] = 0;
|
||||||
|
for (m = 0; m < i; m++) E[e[a + m]]++;
|
||||||
|
for (p = l, g = _e; g >= 1 && 0 === E[g]; g--);
|
||||||
|
if (p > g && (p = g), 0 === g) return n[s++] = 20971520, n[s++] = 20971520, o.bits = 1, 0;
|
||||||
|
for (b = 1; b < g && 0 === E[b]; b++);
|
||||||
|
for (p < b && (p = b), y = 1, w = 1; w <= _e; w++)
|
||||||
|
if (y <<= 1, y -= E[w], y < 0) return -1;
|
||||||
|
if (y > 0 && (0 === t || 1 !== g)) return -1;
|
||||||
|
for (R[1] = 0, w = 1; w < _e; w++) R[w + 1] = R[w] + E[w];
|
||||||
|
for (m = 0; m < i; m++) 0 !== e[a + m] && (r[R[e[a + m]]++] = m);
|
||||||
|
if (0 === t ? (A = D = r, u = 20) : 1 === t ? (A = fe, D = ce, u = 257) : (A = ue, D = we, u = 0), z = 0, m = 0, w = b, c = s, k = p, v = 0, _ = -1, x = 1 << p, f = x - 1, 1 === t && x > 852 || 2 === t && x > 592) return 1;
|
||||||
|
for (;;) {
|
||||||
|
Z = w - v, r[m] + 1 < u ? (U = 0, S = r[m]) : r[m] >= u ? (U = D[r[m] - u], S = A[r[m] - u]) : (U = 96, S = 0), h = 1 << w - v, d = 1 << k, b = d;
|
||||||
|
do {
|
||||||
|
d -= h, n[c + (z >> v) + d] = Z << 24 | U << 16 | S | 0
|
||||||
|
} while (0 !== d);
|
||||||
|
for (h = 1 << w - 1; z & h;) h >>= 1;
|
||||||
|
if (0 !== h ? (z &= h - 1, z += h) : z = 0, m++, 0 == --E[w]) {
|
||||||
|
if (w === g) break;
|
||||||
|
w = e[a + r[m]]
|
||||||
|
}
|
||||||
|
if (w > p && (z & f) !== _) {
|
||||||
|
for (0 === v && (v = p), c += b, k = w - v, y = 1 << k; k + v < g && (y -= E[k + v], !(y <= 0));) k++, y <<= 1;
|
||||||
|
if (x += 1 << k, 1 === t && x > 852 || 2 === t && x > 592) return 1;
|
||||||
|
_ = z & f, n[_] = p << 24 | k << 16 | c - s | 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0 !== z && (n[c + z] = w - v << 24 | 64 << 16 | 0), o.bits = p, 0
|
||||||
|
};
|
||||||
|
const {
|
||||||
|
Z_FINISH: be,
|
||||||
|
Z_BLOCK: ge,
|
||||||
|
Z_TREES: pe,
|
||||||
|
Z_OK: ke,
|
||||||
|
Z_STREAM_END: ve,
|
||||||
|
Z_NEED_DICT: ye,
|
||||||
|
Z_STREAM_ERROR: xe,
|
||||||
|
Z_DATA_ERROR: ze,
|
||||||
|
Z_MEM_ERROR: Ae,
|
||||||
|
Z_BUF_ERROR: Ee,
|
||||||
|
Z_DEFLATED: Re
|
||||||
|
} = K, Ze = 16180, Ue = 16190, Se = 16191, De = 16192, Te = 16194, Oe = 16199, Ie = 16200, Fe = 16206, Le = 16209, Ne = t => (t >>> 24 & 255) + (t >>> 8 & 65280) + ((65280 & t) << 8) + ((255 & t) << 24);
|
||||||
|
|
||||||
|
function Be() {
|
||||||
|
this.strm = null, 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 Uint16Array(320), this.work = new Uint16Array(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0
|
||||||
|
}
|
||||||
|
const Ce = t => {
|
||||||
|
if (!t) return 1;
|
||||||
|
const e = t.state;
|
||||||
|
return !e || e.strm !== t || e.mode < Ze || e.mode > 16211 ? 1 : 0
|
||||||
|
},
|
||||||
|
Me = t => {
|
||||||
|
if (Ce(t)) return xe;
|
||||||
|
const e = t.state;
|
||||||
|
return t.total_in = t.total_out = e.total = 0, t.msg = "", e.wrap && (t.adler = 1 & e.wrap), e.mode = Ze, e.last = 0, e.havedict = 0, e.flags = -1, e.dmax = 32768, e.head = null, e.hold = 0, e.bits = 0, e.lencode = e.lendyn = new Int32Array(852), e.distcode = e.distdyn = new Int32Array(592), e.sane = 1, e.back = -1, ke
|
||||||
|
},
|
||||||
|
He = t => {
|
||||||
|
if (Ce(t)) return xe;
|
||||||
|
const e = t.state;
|
||||||
|
return e.wsize = 0, e.whave = 0, e.wnext = 0, Me(t)
|
||||||
|
},
|
||||||
|
je = (t, e) => {
|
||||||
|
let a;
|
||||||
|
if (Ce(t)) return xe;
|
||||||
|
const i = t.state;
|
||||||
|
return e < 0 ? (a = 0, e = -e) : (a = 5 + (e >> 4), e < 48 && (e &= 15)), e && (e < 8 || e > 15) ? xe : (null !== i.window && i.wbits !== e && (i.window = null), i.wrap = a, i.wbits = e, He(t))
|
||||||
|
},
|
||||||
|
Ke = (t, e) => {
|
||||||
|
if (!t) return xe;
|
||||||
|
const a = new Be;
|
||||||
|
t.state = a, a.strm = t, a.window = null, a.mode = Ze;
|
||||||
|
const i = je(t, e);
|
||||||
|
return i !== ke && (t.state = null), i
|
||||||
|
};
|
||||||
|
let Pe, Ye, Ge = !0;
|
||||||
|
const Xe = t => {
|
||||||
|
if (Ge) {
|
||||||
|
Pe = new Int32Array(512), Ye = new Int32Array(32);
|
||||||
|
let e = 0;
|
||||||
|
for (; 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 (me(1, t.lens, 0, 288, Pe, 0, t.work, {
|
||||||
|
bits: 9
|
||||||
|
}), e = 0; e < 32;) t.lens[e++] = 5;
|
||||||
|
me(2, t.lens, 0, 32, Ye, 0, t.work, {
|
||||||
|
bits: 5
|
||||||
|
}), Ge = !1
|
||||||
|
}
|
||||||
|
t.lencode = Pe, t.lenbits = 9, t.distcode = Ye, t.distbits = 5
|
||||||
|
},
|
||||||
|
We = (t, e, a, i) => {
|
||||||
|
let n;
|
||||||
|
const s = t.state;
|
||||||
|
return null === s.window && (s.wsize = 1 << s.wbits, s.wnext = 0, s.whave = 0, s.window = new Uint8Array(s.wsize)), i >= s.wsize ? (s.window.set(e.subarray(a - s.wsize, a), 0), s.wnext = 0, s.whave = s.wsize) : (n = s.wsize - s.wnext, n > i && (n = i), s.window.set(e.subarray(a - i, a - i + n), s.wnext), (i -= n) ? (s.window.set(e.subarray(a - i, a), 0), s.wnext = i, s.whave = s.wsize) : (s.wnext += n, s.wnext === s.wsize && (s.wnext = 0), s.whave < s.wsize && (s.whave += n))), 0
|
||||||
|
};
|
||||||
|
var qe = {
|
||||||
|
inflateReset: He,
|
||||||
|
inflateReset2: je,
|
||||||
|
inflateResetKeep: Me,
|
||||||
|
inflateInit: t => Ke(t, 15),
|
||||||
|
inflateInit2: Ke,
|
||||||
|
inflate: (t, e) => {
|
||||||
|
let a, i, n, s, r, o, l, h, d, _, f, c, u, w, m, b, g, p, k, v, y, x, z = 0;
|
||||||
|
const A = new Uint8Array(4);
|
||||||
|
let E, R;
|
||||||
|
const Z = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
|
||||||
|
if (Ce(t) || !t.output || !t.input && 0 !== t.avail_in) return xe;
|
||||||
|
a = t.state, a.mode === Se && (a.mode = De), r = t.next_out, n = t.output, l = t.avail_out, s = t.next_in, i = t.input, o = t.avail_in, h = a.hold, d = a.bits, _ = o, f = l, x = ke;
|
||||||
|
t: for (;;) switch (a.mode) {
|
||||||
|
case Ze:
|
||||||
|
if (0 === a.wrap) {
|
||||||
|
a.mode = De;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
for (; d < 16;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
if (2 & a.wrap && 35615 === h) {
|
||||||
|
0 === a.wbits && (a.wbits = 15), a.check = 0, A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = H(a.check, A, 2, 0), h = 0, d = 0, a.mode = 16181;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (a.head && (a.head.done = !1), !(1 & a.wrap) || (((255 & h) << 8) + (h >> 8)) % 31) {
|
||||||
|
t.msg = "incorrect header check", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if ((15 & h) !== Re) {
|
||||||
|
t.msg = "unknown compression method", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (h >>>= 4, d -= 4, y = 8 + (15 & h), 0 === a.wbits && (a.wbits = y), y > 15 || y > a.wbits) {
|
||||||
|
t.msg = "invalid window size", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
a.dmax = 1 << a.wbits, a.flags = 0, t.adler = a.check = 1, a.mode = 512 & h ? 16189 : Se, h = 0, d = 0;
|
||||||
|
break;
|
||||||
|
case 16181:
|
||||||
|
for (; d < 16;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
if (a.flags = h, (255 & a.flags) !== Re) {
|
||||||
|
t.msg = "unknown compression method", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (57344 & a.flags) {
|
||||||
|
t.msg = "unknown header flags set", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
a.head && (a.head.text = h >> 8 & 1), 512 & a.flags && 4 & a.wrap && (A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = H(a.check, A, 2, 0)), h = 0, d = 0, a.mode = 16182;
|
||||||
|
case 16182:
|
||||||
|
for (; d < 32;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
a.head && (a.head.time = h), 512 & a.flags && 4 & a.wrap && (A[0] = 255 & h, A[1] = h >>> 8 & 255, A[2] = h >>> 16 & 255, A[3] = h >>> 24 & 255, a.check = H(a.check, A, 4, 0)), h = 0, d = 0, a.mode = 16183;
|
||||||
|
case 16183:
|
||||||
|
for (; d < 16;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
a.head && (a.head.xflags = 255 & h, a.head.os = h >> 8), 512 & a.flags && 4 & a.wrap && (A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = H(a.check, A, 2, 0)), h = 0, d = 0, a.mode = 16184;
|
||||||
|
case 16184:
|
||||||
|
if (1024 & a.flags) {
|
||||||
|
for (; d < 16;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
a.length = h, a.head && (a.head.extra_len = h), 512 & a.flags && 4 & a.wrap && (A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = H(a.check, A, 2, 0)), h = 0, d = 0
|
||||||
|
} else a.head && (a.head.extra = null);
|
||||||
|
a.mode = 16185;
|
||||||
|
case 16185:
|
||||||
|
if (1024 & a.flags && (c = a.length, c > o && (c = o), c && (a.head && (y = a.head.extra_len - a.length, a.head.extra || (a.head.extra = new Uint8Array(a.head.extra_len)), a.head.extra.set(i.subarray(s, s + c), y)), 512 & a.flags && 4 & a.wrap && (a.check = H(a.check, i, c, s)), o -= c, s += c, a.length -= c), a.length)) break t;
|
||||||
|
a.length = 0, a.mode = 16186;
|
||||||
|
case 16186:
|
||||||
|
if (2048 & a.flags) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
c = 0;
|
||||||
|
do {
|
||||||
|
y = i[s + c++], a.head && y && a.length < 65536 && (a.head.name += String.fromCharCode(y))
|
||||||
|
} while (y && c < o);
|
||||||
|
if (512 & a.flags && 4 & a.wrap && (a.check = H(a.check, i, c, s)), o -= c, s += c, y) break t
|
||||||
|
} else a.head && (a.head.name = null);
|
||||||
|
a.length = 0, a.mode = 16187;
|
||||||
|
case 16187:
|
||||||
|
if (4096 & a.flags) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
c = 0;
|
||||||
|
do {
|
||||||
|
y = i[s + c++], a.head && y && a.length < 65536 && (a.head.comment += String.fromCharCode(y))
|
||||||
|
} while (y && c < o);
|
||||||
|
if (512 & a.flags && 4 & a.wrap && (a.check = H(a.check, i, c, s)), o -= c, s += c, y) break t
|
||||||
|
} else a.head && (a.head.comment = null);
|
||||||
|
a.mode = 16188;
|
||||||
|
case 16188:
|
||||||
|
if (512 & a.flags) {
|
||||||
|
for (; d < 16;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
if (4 & a.wrap && h !== (65535 & a.check)) {
|
||||||
|
t.msg = "header crc mismatch", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
h = 0, d = 0
|
||||||
|
}
|
||||||
|
a.head && (a.head.hcrc = a.flags >> 9 & 1, a.head.done = !0), t.adler = a.check = 0, a.mode = Se;
|
||||||
|
break;
|
||||||
|
case 16189:
|
||||||
|
for (; d < 32;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
t.adler = a.check = Ne(h), h = 0, d = 0, a.mode = Ue;
|
||||||
|
case Ue:
|
||||||
|
if (0 === a.havedict) return t.next_out = r, t.avail_out = l, t.next_in = s, t.avail_in = o, a.hold = h, a.bits = d, ye;
|
||||||
|
t.adler = a.check = 1, a.mode = Se;
|
||||||
|
case Se:
|
||||||
|
if (e === ge || e === pe) break t;
|
||||||
|
case De:
|
||||||
|
if (a.last) {
|
||||||
|
h >>>= 7 & d, d -= 7 & d, a.mode = Fe;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
for (; d < 3;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
switch (a.last = 1 & h, h >>>= 1, d -= 1, 3 & h) {
|
||||||
|
case 0:
|
||||||
|
a.mode = 16193;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (Xe(a), a.mode = Oe, e === pe) {
|
||||||
|
h >>>= 2, d -= 2;
|
||||||
|
break t
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
a.mode = 16196;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
t.msg = "invalid block type", a.mode = Le
|
||||||
|
}
|
||||||
|
h >>>= 2, d -= 2;
|
||||||
|
break;
|
||||||
|
case 16193:
|
||||||
|
for (h >>>= 7 & d, d -= 7 & d; d < 32;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
if ((65535 & h) != (h >>> 16 ^ 65535)) {
|
||||||
|
t.msg = "invalid stored block lengths", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (a.length = 65535 & h, h = 0, d = 0, a.mode = Te, e === pe) break t;
|
||||||
|
case Te:
|
||||||
|
a.mode = 16195;
|
||||||
|
case 16195:
|
||||||
|
if (c = a.length, c) {
|
||||||
|
if (c > o && (c = o), c > l && (c = l), 0 === c) break t;
|
||||||
|
n.set(i.subarray(s, s + c), r), o -= c, s += c, l -= c, r += c, a.length -= c;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
a.mode = Se;
|
||||||
|
break;
|
||||||
|
case 16196:
|
||||||
|
for (; d < 14;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
if (a.nlen = 257 + (31 & h), h >>>= 5, d -= 5, a.ndist = 1 + (31 & h), h >>>= 5, d -= 5, a.ncode = 4 + (15 & h), h >>>= 4, d -= 4, a.nlen > 286 || a.ndist > 30) {
|
||||||
|
t.msg = "too many length or distance symbols", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
a.have = 0, a.mode = 16197;
|
||||||
|
case 16197:
|
||||||
|
for (; a.have < a.ncode;) {
|
||||||
|
for (; d < 3;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
a.lens[Z[a.have++]] = 7 & h, h >>>= 3, d -= 3
|
||||||
|
}
|
||||||
|
for (; a.have < 19;) a.lens[Z[a.have++]] = 0;
|
||||||
|
if (a.lencode = a.lendyn, a.lenbits = 7, E = {
|
||||||
|
bits: a.lenbits
|
||||||
|
}, x = me(0, a.lens, 0, 19, a.lencode, 0, a.work, E), a.lenbits = E.bits, x) {
|
||||||
|
t.msg = "invalid code lengths set", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
a.have = 0, a.mode = 16198;
|
||||||
|
case 16198:
|
||||||
|
for (; a.have < a.nlen + a.ndist;) {
|
||||||
|
for (; z = a.lencode[h & (1 << a.lenbits) - 1], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(m <= d);) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
if (g < 16) h >>>= m, d -= m, a.lens[a.have++] = g;
|
||||||
|
else {
|
||||||
|
if (16 === g) {
|
||||||
|
for (R = m + 2; d < R;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
if (h >>>= m, d -= m, 0 === a.have) {
|
||||||
|
t.msg = "invalid bit length repeat", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
y = a.lens[a.have - 1], c = 3 + (3 & h), h >>>= 2, d -= 2
|
||||||
|
} else if (17 === g) {
|
||||||
|
for (R = m + 3; d < R;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
h >>>= m, d -= m, y = 0, c = 3 + (7 & h), h >>>= 3, d -= 3
|
||||||
|
} else {
|
||||||
|
for (R = m + 7; d < R;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
h >>>= m, d -= m, y = 0, c = 11 + (127 & h), h >>>= 7, d -= 7
|
||||||
|
}
|
||||||
|
if (a.have + c > a.nlen + a.ndist) {
|
||||||
|
t.msg = "invalid bit length repeat", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
for (; c--;) a.lens[a.have++] = y
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (a.mode === Le) break;
|
||||||
|
if (0 === a.lens[256]) {
|
||||||
|
t.msg = "invalid code -- missing end-of-block", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (a.lenbits = 9, E = {
|
||||||
|
bits: a.lenbits
|
||||||
|
}, x = me(1, a.lens, 0, a.nlen, a.lencode, 0, a.work, E), a.lenbits = E.bits, x) {
|
||||||
|
t.msg = "invalid literal/lengths set", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (a.distbits = 6, a.distcode = a.distdyn, E = {
|
||||||
|
bits: a.distbits
|
||||||
|
}, x = me(2, a.lens, a.nlen, a.ndist, a.distcode, 0, a.work, E), a.distbits = E.bits, x) {
|
||||||
|
t.msg = "invalid distances set", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (a.mode = Oe, e === pe) break t;
|
||||||
|
case Oe:
|
||||||
|
a.mode = Ie;
|
||||||
|
case Ie:
|
||||||
|
if (o >= 6 && l >= 258) {
|
||||||
|
t.next_out = r, t.avail_out = l, t.next_in = s, t.avail_in = o, a.hold = h, a.bits = d, de(t, f), r = t.next_out, n = t.output, l = t.avail_out, s = t.next_in, i = t.input, o = t.avail_in, h = a.hold, d = a.bits, a.mode === Se && (a.back = -1);
|
||||||
|
break
|
||||||
|
}
|
||||||
|
for (a.back = 0; z = a.lencode[h & (1 << a.lenbits) - 1], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(m <= d);) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
if (b && 0 == (240 & b)) {
|
||||||
|
for (p = m, k = b, v = g; z = a.lencode[v + ((h & (1 << p + k) - 1) >> p)], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(p + m <= d);) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
h >>>= p, d -= p, a.back += p
|
||||||
|
}
|
||||||
|
if (h >>>= m, d -= m, a.back += m, a.length = g, 0 === b) {
|
||||||
|
a.mode = 16205;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (32 & b) {
|
||||||
|
a.back = -1, a.mode = Se;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (64 & b) {
|
||||||
|
t.msg = "invalid literal/length code", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
a.extra = 15 & b, a.mode = 16201;
|
||||||
|
case 16201:
|
||||||
|
if (a.extra) {
|
||||||
|
for (R = a.extra; d < R;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
a.length += h & (1 << a.extra) - 1, h >>>= a.extra, d -= a.extra, a.back += a.extra
|
||||||
|
}
|
||||||
|
a.was = a.length, a.mode = 16202;
|
||||||
|
case 16202:
|
||||||
|
for (; z = a.distcode[h & (1 << a.distbits) - 1], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(m <= d);) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
if (0 == (240 & b)) {
|
||||||
|
for (p = m, k = b, v = g; z = a.distcode[v + ((h & (1 << p + k) - 1) >> p)], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(p + m <= d);) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
h >>>= p, d -= p, a.back += p
|
||||||
|
}
|
||||||
|
if (h >>>= m, d -= m, a.back += m, 64 & b) {
|
||||||
|
t.msg = "invalid distance code", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
a.offset = g, a.extra = 15 & b, a.mode = 16203;
|
||||||
|
case 16203:
|
||||||
|
if (a.extra) {
|
||||||
|
for (R = a.extra; d < R;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
a.offset += h & (1 << a.extra) - 1, h >>>= a.extra, d -= a.extra, a.back += a.extra
|
||||||
|
}
|
||||||
|
if (a.offset > a.dmax) {
|
||||||
|
t.msg = "invalid distance too far back", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
a.mode = 16204;
|
||||||
|
case 16204:
|
||||||
|
if (0 === l) break t;
|
||||||
|
if (c = f - l, a.offset > c) {
|
||||||
|
if (c = a.offset - c, c > a.whave && a.sane) {
|
||||||
|
t.msg = "invalid distance too far back", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
c > a.wnext ? (c -= a.wnext, u = a.wsize - c) : u = a.wnext - c, c > a.length && (c = a.length), w = a.window
|
||||||
|
} else w = n, u = r - a.offset, c = a.length;
|
||||||
|
c > l && (c = l), l -= c, a.length -= c;
|
||||||
|
do {
|
||||||
|
n[r++] = w[u++]
|
||||||
|
} while (--c);
|
||||||
|
0 === a.length && (a.mode = Ie);
|
||||||
|
break;
|
||||||
|
case 16205:
|
||||||
|
if (0 === l) break t;
|
||||||
|
n[r++] = a.length, l--, a.mode = Ie;
|
||||||
|
break;
|
||||||
|
case Fe:
|
||||||
|
if (a.wrap) {
|
||||||
|
for (; d < 32;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h |= i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
if (f -= l, t.total_out += f, a.total += f, 4 & a.wrap && f && (t.adler = a.check = a.flags ? H(a.check, n, f, r - f) : C(a.check, n, f, r - f)), f = l, 4 & a.wrap && (a.flags ? h : Ne(h)) !== a.check) {
|
||||||
|
t.msg = "incorrect data check", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
h = 0, d = 0
|
||||||
|
}
|
||||||
|
a.mode = 16207;
|
||||||
|
case 16207:
|
||||||
|
if (a.wrap && a.flags) {
|
||||||
|
for (; d < 32;) {
|
||||||
|
if (0 === o) break t;
|
||||||
|
o--, h += i[s++] << d, d += 8
|
||||||
|
}
|
||||||
|
if (4 & a.wrap && h !== (4294967295 & a.total)) {
|
||||||
|
t.msg = "incorrect length check", a.mode = Le;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
h = 0, d = 0
|
||||||
|
}
|
||||||
|
a.mode = 16208;
|
||||||
|
case 16208:
|
||||||
|
x = ve;
|
||||||
|
break t;
|
||||||
|
case Le:
|
||||||
|
x = ze;
|
||||||
|
break t;
|
||||||
|
case 16210:
|
||||||
|
return Ae;
|
||||||
|
default:
|
||||||
|
return xe
|
||||||
|
}
|
||||||
|
return t.next_out = r, t.avail_out = l, t.next_in = s, t.avail_in = o, a.hold = h, a.bits = d, (a.wsize || f !== t.avail_out && a.mode < Le && (a.mode < Fe || e !== be)) && We(t, t.output, t.next_out, f - t.avail_out), _ -= t.avail_in, f -= t.avail_out, t.total_in += _, t.total_out += f, a.total += f, 4 & a.wrap && f && (t.adler = a.check = a.flags ? H(a.check, n, f, t.next_out - f) : C(a.check, n, f, t.next_out - f)), t.data_type = a.bits + (a.last ? 64 : 0) + (a.mode === Se ? 128 : 0) + (a.mode === Oe || a.mode === Te ? 256 : 0), (0 === _ && 0 === f || e === be) && x === ke && (x = Ee), x
|
||||||
|
},
|
||||||
|
inflateEnd: t => {
|
||||||
|
if (Ce(t)) return xe;
|
||||||
|
let e = t.state;
|
||||||
|
return e.window && (e.window = null), t.state = null, ke
|
||||||
|
},
|
||||||
|
inflateGetHeader: (t, e) => {
|
||||||
|
if (Ce(t)) return xe;
|
||||||
|
const a = t.state;
|
||||||
|
return 0 == (2 & a.wrap) ? xe : (a.head = e, e.done = !1, ke)
|
||||||
|
},
|
||||||
|
inflateSetDictionary: (t, e) => {
|
||||||
|
const a = e.length;
|
||||||
|
let i, n, s;
|
||||||
|
return Ce(t) ? xe : (i = t.state, 0 !== i.wrap && i.mode !== Ue ? xe : i.mode === Ue && (n = 1, n = C(n, e, a, 0), n !== i.check) ? ze : (s = We(t, e, a, a), s ? (i.mode = 16210, Ae) : (i.havedict = 1, ke)))
|
||||||
|
},
|
||||||
|
inflateInfo: "pako inflate (from Nodeca project)"
|
||||||
|
};
|
||||||
|
var Je = 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
|
||||||
|
};
|
||||||
|
const Qe = Object.prototype.toString,
|
||||||
|
{
|
||||||
|
Z_NO_FLUSH: Ve,
|
||||||
|
Z_FINISH: $e,
|
||||||
|
Z_OK: ta,
|
||||||
|
Z_STREAM_END: ea,
|
||||||
|
Z_NEED_DICT: aa,
|
||||||
|
Z_STREAM_ERROR: ia,
|
||||||
|
Z_DATA_ERROR: na,
|
||||||
|
Z_MEM_ERROR: sa
|
||||||
|
} = K;
|
||||||
|
|
||||||
|
function ra(t) {
|
||||||
|
this.options = jt({
|
||||||
|
chunkSize: 65536,
|
||||||
|
windowBits: 15,
|
||||||
|
to: ""
|
||||||
|
}, t || {});
|
||||||
|
const 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 qt, this.strm.avail_out = 0;
|
||||||
|
let a = qe.inflateInit2(this.strm, e.windowBits);
|
||||||
|
if (a !== ta) throw new Error(j[a]);
|
||||||
|
if (this.header = new Je, qe.inflateGetHeader(this.strm, this.header), e.dictionary && ("string" == typeof e.dictionary ? e.dictionary = Gt(e.dictionary) : "[object ArrayBuffer]" === Qe.call(e.dictionary) && (e.dictionary = new Uint8Array(e.dictionary)), e.raw && (a = qe.inflateSetDictionary(this.strm, e.dictionary), a !== ta))) throw new Error(j[a])
|
||||||
|
}
|
||||||
|
|
||||||
|
function oa(t, e) {
|
||||||
|
const a = new ra(e);
|
||||||
|
if (a.push(t), a.err) throw a.msg || j[a.err];
|
||||||
|
return a.result
|
||||||
|
}
|
||||||
|
ra.prototype.push = function(t, e) {
|
||||||
|
const a = this.strm,
|
||||||
|
i = this.options.chunkSize,
|
||||||
|
n = this.options.dictionary;
|
||||||
|
let s, r, o;
|
||||||
|
if (this.ended) return !1;
|
||||||
|
for (r = e === ~~e ? e : !0 === e ? $e : Ve, "[object ArrayBuffer]" === Qe.call(t) ? a.input = new Uint8Array(t) : a.input = t, a.next_in = 0, a.avail_in = a.input.length;;) {
|
||||||
|
for (0 === a.avail_out && (a.output = new Uint8Array(i), a.next_out = 0, a.avail_out = i), s = qe.inflate(a, r), s === aa && n && (s = qe.inflateSetDictionary(a, n), s === ta ? s = qe.inflate(a, r) : s === na && (s = aa)); a.avail_in > 0 && s === ea && a.state.wrap > 0 && 0 !== t[a.next_in];) qe.inflateReset(a), s = qe.inflate(a, r);
|
||||||
|
switch (s) {
|
||||||
|
case ia:
|
||||||
|
case na:
|
||||||
|
case aa:
|
||||||
|
case sa:
|
||||||
|
return this.onEnd(s), this.ended = !0, !1
|
||||||
|
}
|
||||||
|
if (o = a.avail_out, a.next_out && (0 === a.avail_out || s === ea))
|
||||||
|
if ("string" === this.options.to) {
|
||||||
|
let t = Wt(a.output, a.next_out),
|
||||||
|
e = a.next_out - t,
|
||||||
|
n = Xt(a.output, t);
|
||||||
|
a.next_out = e, a.avail_out = i - e, e && a.output.set(a.output.subarray(t, t + e), 0), this.onData(n)
|
||||||
|
} else this.onData(a.output.length === a.next_out ? a.output : a.output.subarray(0, a.next_out));
|
||||||
|
if (s !== ta || 0 !== o) {
|
||||||
|
if (s === ea) return s = qe.inflateEnd(this.strm), this.onEnd(s), this.ended = !0, !0;
|
||||||
|
if (0 === a.avail_in) break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return !0
|
||||||
|
}, ra.prototype.onData = function(t) {
|
||||||
|
this.chunks.push(t)
|
||||||
|
}, ra.prototype.onEnd = function(t) {
|
||||||
|
t === ta && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = Kt(this.chunks)), this.chunks = [], this.err = t, this.msg = this.strm.msg
|
||||||
|
};
|
||||||
|
var la = {
|
||||||
|
Inflate: ra,
|
||||||
|
inflate: oa,
|
||||||
|
inflateRaw: function(t, e) {
|
||||||
|
return (e = e || {}).raw = !0, oa(t, e)
|
||||||
|
},
|
||||||
|
ungzip: oa,
|
||||||
|
constants: K
|
||||||
|
};
|
||||||
|
const {
|
||||||
|
Deflate: ha,
|
||||||
|
deflate: da,
|
||||||
|
deflateRaw: _a,
|
||||||
|
gzip: fa
|
||||||
|
} = le, {
|
||||||
|
Inflate: ca,
|
||||||
|
inflate: ua,
|
||||||
|
inflateRaw: wa,
|
||||||
|
ungzip: ma
|
||||||
|
} = la;
|
||||||
|
var ba = ha,
|
||||||
|
ga = da,
|
||||||
|
pa = _a,
|
||||||
|
ka = fa,
|
||||||
|
va = ca,
|
||||||
|
ya = ua,
|
||||||
|
xa = wa,
|
||||||
|
za = ma,
|
||||||
|
Aa = K,
|
||||||
|
Ea = {
|
||||||
|
Deflate: ba,
|
||||||
|
deflate: ga,
|
||||||
|
deflateRaw: pa,
|
||||||
|
gzip: ka,
|
||||||
|
Inflate: va,
|
||||||
|
inflate: ya,
|
||||||
|
inflateRaw: xa,
|
||||||
|
ungzip: za,
|
||||||
|
constants: Aa
|
||||||
|
};
|
||||||
|
t.Deflate = ba, t.Inflate = va, t.constants = Aa, t.default = Ea, t.deflate = ga, t.deflateRaw = pa, t.gzip = ka, t.inflate = ya, t.inflateRaw = xa, t.ungzip = za, Object.defineProperty(t, "__esModule", {
|
||||||
|
value: !0
|
||||||
|
})
|
||||||
|
}));
|
||||||
Reference in New Issue
Block a user