`):
- *
- * ```javascript
- * var hljs = require('highlight.js') // https://highlightjs.org/
- *
- * // Actual default values
- * var md = require('markdown-it')({
- * highlight: function (str, lang) {
- * if (lang && hljs.getLanguage(lang)) {
- * try {
- * return '' +
- * hljs.highlight(lang, str, true).value +
- * '
';
- * } catch (__) {}
- * }
- *
- * return '' + md.utils.escapeHtml(str) + '
';
- * }
- * });
- * ```
- *
- **/function MarkdownIt(presetName,options){if(!(this instanceof MarkdownIt)){return new MarkdownIt(presetName,options);}if(!options){if(!utils.isString(presetName)){options=presetName||{};presetName='default';}}/**
- * MarkdownIt#inline -> ParserInline
- *
- * Instance of [[ParserInline]]. You may need it to add new rules when
- * writing plugins. For simple rules control use [[MarkdownIt.disable]] and
- * [[MarkdownIt.enable]].
- **/this.inline=new parser_inline();/**
- * MarkdownIt#block -> ParserBlock
- *
- * Instance of [[ParserBlock]]. You may need it to add new rules when
- * writing plugins. For simple rules control use [[MarkdownIt.disable]] and
- * [[MarkdownIt.enable]].
- **/this.block=new parser_block();/**
- * MarkdownIt#core -> Core
- *
- * Instance of [[Core]] chain executor. You may need it to add new rules when
- * writing plugins. For simple rules control use [[MarkdownIt.disable]] and
- * [[MarkdownIt.enable]].
- **/this.core=new parser_core();/**
- * MarkdownIt#renderer -> Renderer
- *
- * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering
- * rules for new token types, generated by plugins.
- *
- * ##### Example
- *
- * ```javascript
- * var md = require('markdown-it')();
- *
- * function myToken(tokens, idx, options, env, self) {
- * //...
- * return result;
- * };
- *
- * md.renderer.rules['my_token'] = myToken
- * ```
- *
- * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js).
- **/this.renderer=new renderer();/**
- * MarkdownIt#linkify -> LinkifyIt
- *
- * [linkify-it](https://github.com/markdown-it/linkify-it) instance.
- * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.js)
- * rule.
- **/this.linkify=new linkifyIt();/**
- * MarkdownIt#validateLink(url) -> Boolean
- *
- * Link validation function. CommonMark allows too much in links. By default
- * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas
- * except some embedded image types.
- *
- * You can change this behaviour:
- *
- * ```javascript
- * var md = require('markdown-it')();
- * // enable everything
- * md.validateLink = function () { return true; }
- * ```
- **/this.validateLink=validateLink;/**
- * MarkdownIt#normalizeLink(url) -> String
- *
- * Function used to encode link url to a machine-readable format,
- * which includes url-encoding, punycode, etc.
- **/this.normalizeLink=normalizeLink;/**
- * MarkdownIt#normalizeLinkText(url) -> String
- *
- * Function used to decode link url to a human-readable format`
- **/this.normalizeLinkText=normalizeLinkText;// Expose utils & helpers for easy acces from plugins
-/**
- * MarkdownIt#utils -> utils
- *
- * Assorted utility functions, useful to write plugins. See details
- * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.js).
- **/this.utils=utils;/**
- * MarkdownIt#helpers -> helpers
- *
- * Link components parser functions, useful to write plugins. See details
- * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).
- **/this.helpers=utils.assign({},helpers);this.options={};this.configure(presetName);if(options){this.set(options);}}/** chainable
- * MarkdownIt.set(options)
- *
- * Set parser options (in the same format as in constructor). Probably, you
- * will never need it, but you can change options after constructor call.
- *
- * ##### Example
- *
- * ```javascript
- * var md = require('markdown-it')()
- * .set({ html: true, breaks: true })
- * .set({ typographer, true });
- * ```
- *
- * __Note:__ To achieve the best possible performance, don't modify a
- * `markdown-it` instance options on the fly. If you need multiple configurations
- * it's best to create multiple instances and initialize each with separate
- * config.
- **/MarkdownIt.prototype.set=function(options){utils.assign(this.options,options);return this;};/** chainable, internal
- * MarkdownIt.configure(presets)
- *
- * Batch load of all options and compenent settings. This is internal method,
- * and you probably will not need it. But if you will - see available presets
- * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)
- *
- * We strongly recommend to use presets instead of direct config loads. That
- * will give better compatibility with next versions.
- **/MarkdownIt.prototype.configure=function(presets){var self=this,presetName;if(utils.isString(presets)){presetName=presets;presets=config$1[presetName];if(!presets){throw new Error('Wrong `markdown-it` preset "'+presetName+'", check name');}}if(!presets){throw new Error('Wrong `markdown-it` preset, can\'t be empty');}if(presets.options){self.set(presets.options);}if(presets.components){Object.keys(presets.components).forEach(function(name){if(presets.components[name].rules){self[name].ruler.enableOnly(presets.components[name].rules);}if(presets.components[name].rules2){self[name].ruler2.enableOnly(presets.components[name].rules2);}});}return this;};/** chainable
- * MarkdownIt.enable(list, ignoreInvalid)
- * - list (String|Array): rule name or list of rule names to enable
- * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.
- *
- * Enable list or rules. It will automatically find appropriate components,
- * containing rules with given names. If rule not found, and `ignoreInvalid`
- * not set - throws exception.
- *
- * ##### Example
- *
- * ```javascript
- * var md = require('markdown-it')()
- * .enable(['sub', 'sup'])
- * .disable('smartquotes');
- * ```
- **/MarkdownIt.prototype.enable=function(list,ignoreInvalid){var result=[];if(!Array.isArray(list)){list=[list];}['core','block','inline'].forEach(function(chain){result=result.concat(this[chain].ruler.enable(list,true));},this);result=result.concat(this.inline.ruler2.enable(list,true));var missed=list.filter(function(name){return result.indexOf(name)<0;});if(missed.length&&!ignoreInvalid){throw new Error('MarkdownIt. Failed to enable unknown rule(s): '+missed);}return this;};/** chainable
- * MarkdownIt.disable(list, ignoreInvalid)
- * - list (String|Array): rule name or list of rule names to disable.
- * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.
- *
- * The same as [[MarkdownIt.enable]], but turn specified rules off.
- **/MarkdownIt.prototype.disable=function(list,ignoreInvalid){var result=[];if(!Array.isArray(list)){list=[list];}['core','block','inline'].forEach(function(chain){result=result.concat(this[chain].ruler.disable(list,true));},this);result=result.concat(this.inline.ruler2.disable(list,true));var missed=list.filter(function(name){return result.indexOf(name)<0;});if(missed.length&&!ignoreInvalid){throw new Error('MarkdownIt. Failed to disable unknown rule(s): '+missed);}return this;};/** chainable
- * MarkdownIt.use(plugin, params)
- *
- * Load specified plugin with given params into current parser instance.
- * It's just a sugar to call `plugin(md, params)` with curring.
- *
- * ##### Example
- *
- * ```javascript
- * var iterator = require('markdown-it-for-inline');
- * var md = require('markdown-it')()
- * .use(iterator, 'foo_replace', 'text', function (tokens, idx) {
- * tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');
- * });
- * ```
- **/MarkdownIt.prototype.use=function(plugin/*, params, ... */){var args=[this].concat(Array.prototype.slice.call(arguments,1));plugin.apply(plugin,args);return this;};/** internal
- * MarkdownIt.parse(src, env) -> Array
- * - src (String): source string
- * - env (Object): environment sandbox
- *
- * Parse input string and return list of block tokens (special token type
- * "inline" will contain list of inline tokens). You should not call this
- * method directly, until you write custom renderer (for example, to produce
- * AST).
- *
- * `env` is used to pass data between "distributed" rules and return additional
- * metadata like reference info, needed for the renderer. It also can be used to
- * inject data in specific cases. Usually, you will be ok to pass `{}`,
- * and then pass updated object to renderer.
- **/MarkdownIt.prototype.parse=function(src,env){if(typeof src!=='string'){throw new Error('Input data should be a String');}var state=new this.core.State(src,this,env);this.core.process(state);return state.tokens;};/**
- * MarkdownIt.render(src [, env]) -> String
- * - src (String): source string
- * - env (Object): environment sandbox
- *
- * Render markdown string into html. It does all magic for you :).
- *
- * `env` can be used to inject additional metadata (`{}` by default).
- * But you will not need it with high probability. See also comment
- * in [[MarkdownIt.parse]].
- **/MarkdownIt.prototype.render=function(src,env){env=env||{};return this.renderer.render(this.parse(src,env),this.options,env);};/** internal
- * MarkdownIt.parseInline(src, env) -> Array
- * - src (String): source string
- * - env (Object): environment sandbox
- *
- * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the
- * block tokens list with the single `inline` element, containing parsed inline
- * tokens in `children` property. Also updates `env` object.
- **/MarkdownIt.prototype.parseInline=function(src,env){var state=new this.core.State(src,this,env);state.inlineMode=true;this.core.process(state);return state.tokens;};/**
- * MarkdownIt.renderInline(src [, env]) -> String
- * - src (String): source string
- * - env (Object): environment sandbox
- *
- * Similar to [[MarkdownIt.render]] but for single paragraph content. Result
- * will NOT be wrapped into `` tags.
- **/MarkdownIt.prototype.renderInline=function(src,env){env=env||{};return this.renderer.render(this.parseInline(src,env),this.options,env);};var lib$3=MarkdownIt;var markdownIt$1=lib$3;var markdownIt=new markdownIt$1();function renderMd(md){if(typeof md!=='string'){return md;}var html=markdownIt.render(md||'');return React__default['default'].createElement("div",{dangerouslySetInnerHTML:{__html:purify.sanitize(html)}});}var __assign$4=function(){__assign$4=Object.assign||function(t){for(var s,i=1,n=arguments.length;i value) dictionary for an object
- *
- * @param obj
- * @param {function} descend
- * @returns {}
- */api.dict=function dict(obj,descend){var results={};api.walk(obj,function(value,pointer){results[pointer]=value;},descend);return results;};/**
- * Iterates over an object
- * Iterator: function (value, pointer) {}
- *
- * @param obj
- * @param {function} iterator
- * @param {function} descend
- */api.walk=function walk(obj,iterator,descend){var refTokens=[];descend=descend||function(value){var type=Object.prototype.toString.call(value);return type==='[object Object]'||type==='[object Array]';};(function next(cur){each(cur,function(value,key){refTokens.push(String(key));if(descend(value)){next(value);}else {iterator(value,api.compile(refTokens));}refTokens.pop();});})(obj);};/**
- * Tests if an object has a value for a json pointer
- *
- * @param obj
- * @param pointer
- * @returns {boolean}
- */api.has=function has(obj,pointer){try{api.get(obj,pointer);}catch(e){return false;}return true;};/**
- * Escapes a reference token
- *
- * @param str
- * @returns {string}
- */api.escape=function escape(str){return str.toString().replace(/~/g,'~0').replace(/\//g,'~1');};/**
- * Unescapes a reference token
- *
- * @param str
- * @returns {string}
- */api.unescape=function unescape(str){return str.replace(/~1/g,'/').replace(/~0/g,'~');};/**
- * Converts a json pointer into a array of reference tokens
- *
- * @param pointer
- * @returns {Array}
- */api.parse=function parse(pointer){if(pointer===''){return [];}if(pointer.charAt(0)!=='/'){throw new Error('Invalid JSON pointer: '+pointer);}return pointer.substring(1).split(/\//).map(api.unescape);};/**
- * Builds a json pointer from a array of reference tokens
- *
- * @param refTokens
- * @returns {string}
- */api.compile=function compile(refTokens){if(refTokens.length===0){return '';}return '/'+refTokens.map(api.escape).join('/');};},{"foreach":1}],3:[function(require,module,exports){Object.defineProperty(exports,"__esModule",{value:true});exports.allOfSample=allOfSample;var _traverse2=require("./traverse");var _utils=require("./utils");function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly)symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;});keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i1&&arguments[1]!==undefined?arguments[1]:{};var spec=arguments.length>2?arguments[2]:undefined;var arrayLength=schema.minItems||1;if(Array.isArray(schema.items)){arrayLength=Math.max(arrayLength,schema.items.length);}var itemSchemaGetter=function itemSchemaGetter(itemNumber){if(Array.isArray(schema.items)){return schema.items[itemNumber]||{};}return schema.items||{};};var res=[];if(!schema.items)return res;for(var i=0;i=schema.maximum||!schema.exclusiveMaximum&&res>schema.maximum){res=(schema.maximum+schema.minimum)/2;}return res;}if(schema.minimum){if(schema.exclusiveMinimum){return Math.floor(schema.minimum)+1;}else {return schema.minimum;}}if(schema.maximum){if(schema.exclusiveMaximum){return schema.maximum>0?0:Math.floor(schema.maximum)-1;}else {return schema.maximum>0?0:schema.maximum;}}return 0;}},{}],10:[function(require,module,exports){Object.defineProperty(exports,"__esModule",{value:true});exports.sampleObject=sampleObject;var _traverse=require("../traverse");function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj;};}else {_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};}return _typeof(obj);}function sampleObject(schema){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var spec=arguments.length>2?arguments[2]:undefined;var res={};if(schema&&_typeof(schema.properties)==='object'){var requiredKeys=Array.isArray(schema.required)?schema.required:[];var requiredKeyDict=requiredKeys.reduce(function(dict,key){dict[key]=true;return dict;},{});Object.keys(schema.properties).forEach(function(propertyName){// skip before traverse that could be costly
-if(options.skipNonRequired&&!requiredKeyDict.hasOwnProperty(propertyName)){return;}var sample=(0, _traverse.traverse)(schema.properties[propertyName],options,spec,{propertyName:propertyName});if(options.skipReadOnly&&sample.readOnly){return;}if(options.skipWriteOnly&&sample.writeOnly){return;}res[propertyName]=sample.value;});}if(schema&&_typeof(schema.additionalProperties)==='object'){res.property1=(0, _traverse.traverse)(schema.additionalProperties,options,spec).value;res.property2=(0, _traverse.traverse)(schema.additionalProperties,options,spec).value;}return res;}},{"../traverse":12}],11:[function(require,module,exports){Object.defineProperty(exports,"__esModule",{value:true});exports.sampleString=sampleString;var _utils=require("../utils");var passwordSymbols='qwerty!@#$%^123456';function emailSample(){return 'user@example.com';}function passwordSample(min,max){var res='pa$$word';if(min>res.length){res+='_';res+=(0, _utils.ensureMinLength)(passwordSymbols,min-res.length).substring(0,min-res.length);}return res;}function commonDateTimeSample(min,max,omitTime){var res=(0, _utils.toRFCDateTime)(new Date('2019-08-24T14:15:22.123Z'),omitTime,false);if(res.lengthmax){console.warn("Using maxLength = ".concat(max," is incorrect with format \"date-time\""));}return res;}function dateTimeSample(min,max){return commonDateTimeSample(min,max);}function dateSample(min,max){return commonDateTimeSample(min,max,true);}function defaultSample(min,max){var res=(0, _utils.ensureMinLength)('string',min);if(max&&res.length>max){res=res.substring(0,max);}return res;}function ipv4Sample(){return '192.168.0.1';}function ipv6Sample(){return '2001:0db8:85a3:0000:0000:8a2e:0370:7334';}function hostnameSample(){return 'example.com';}function uriSample(){return 'http://example.com';}function uuidSample(_min,_max,propertyName){return (0, _utils.uuid)(propertyName||'id');}var stringFormats={'email':emailSample,'password':passwordSample,'date-time':dateTimeSample,'date':dateSample,'ipv4':ipv4Sample,'ipv6':ipv6Sample,'hostname':hostnameSample,'uri':uriSample,'uuid':uuidSample,'default':defaultSample};function sampleString(schema,options,spec,context){var format=schema.format||'default';var sampler=stringFormats[format]||defaultSample;var propertyName=context&&context.propertyName;return sampler(schema.minLength|0,schema.maxLength,propertyName);}},{"../utils":13}],12:[function(require,module,exports){Object.defineProperty(exports,"__esModule",{value:true});exports.clearCache=clearCache;exports.traverse=traverse;var _openapiSampler=require("./openapi-sampler");var _allOf=require("./allOf");var _infer=require("./infer");var _jsonPointer=_interopRequireDefault(require("json-pointer"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly)symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;});keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;isample.length){return sample.repeat(Math.trunc(min/sample.length)+1).substring(0,min);}return sample;}function mergeDeep(){var isObject=function isObject(obj){return obj&&_typeof(obj)==='object';};for(var _len=arguments.length,objects=new Array(_len),_key=0;_key<_len;_key++){objects[_key]=arguments[_key];}return objects.reduce(function(prev,obj){Object.keys(obj).forEach(function(key){var pVal=prev[key];var oVal=obj[key];if(isObject(pVal)&&isObject(oVal)){prev[key]=mergeDeep(pVal,oVal);}else {prev[key]=oVal;}});return prev;},Array.isArray(objects[objects.length-1])?[]:{});}// deterministic UUID sampler
-function uuid(str){var hash=hashCode(str);var random=jsf32(hash,hash,hash,hash);var uuid='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(c){var r=random()*16%16|0;return (c=='x'?r:r&0x3|0x8).toString(16);});return uuid;}function hashCode(str){var hash=0;if(str.length==0)return hash;for(var i=0;i>>5)|0;a=b^(c<<17|c>>>15);b=c+d|0;c=d+t|0;d=a+t|0;return (d>>>0)/4294967296;};}},{}]},{},[5])(5);});});var generateExampleSchema=function(schema){try{return openapiSampler.sample(schema);}catch(e){return;}};function inContainer(item){switch(item){case ITEM_LABELS.CHANNEL:return CONTAINER_LABELS.CHANNELS;case ITEM_LABELS.SERVER:return CONTAINER_LABELS.SERVERS;case ITEM_LABELS.MESSAGE:return CONTAINER_LABELS.MESSAGES;case ITEM_LABELS.SCHEMA:return CONTAINER_LABELS.SCHEMAS;default:return '';}}var StateHelpers=function(){function StateHelpers(){var _this=this;this.calculateNumberOfElements=function(_a){var spec=_a.spec,showConfig=_a.showConfig;var showConfigKeys=Object.keys(showConfig);var fn=function(obj){var numberOfElements=0;Object.entries(obj).map(function(_a){var key=_a[0],value=_a[1];var condition=Boolean(key!=='info'&&showConfigKeys.includes(key)&&showConfig[key]);if(condition){numberOfElements+=1;if(Array.isArray(value)){numberOfElements+=value.length;}if(typeof value==='object'){if(_this.isServers(value)){numberOfElements+=_this.calculateServers(value);}else {numberOfElements+=Object.keys(value).length;}}}});return numberOfElements;};return fn(spec)+fn(spec.components||{});};this.calculateInitialExpandedElements=function(_a){var spec=_a.spec,showConfig=_a.showConfig,expandConfig=_a.expandConfig;var showConfigKeys=Object.keys(showConfig);var collapseConfigKeys=Object.keys(showConfig);var fn=function(obj){var numberOfElements=0;Object.entries(obj).map(function(_a){var key=_a[0],value=_a[1];var condition=Boolean(key!=='info'&&showConfigKeys.includes(key)&&showConfig[key]&&collapseConfigKeys.includes(key)&&expandConfig[key]);if(condition){var field=expandConfig[key];if(field.root){numberOfElements+=1;}if(!field.elements){return;}if(Array.isArray(value)){numberOfElements+=value.length;}if(typeof value==='object'){if(_this.isServers(value)){numberOfElements+=_this.calculateServers(value);}else {numberOfElements+=Object.keys(value).length;}}}});return numberOfElements;};return fn(spec)+fn(spec.components||{});};}StateHelpers.prototype.calculateServers=function(servers){if(!servers||!Object.keys(servers).length){return 0;}var elements=0;Object.entries(servers).map(function(_a){_a[0];var server=_a[1];elements+=Number(Boolean(server.description&&server.security&&server.variables));});return elements;};StateHelpers.prototype.isServers=function(v){if(!v||!Object.keys(v).length){return false;}return !!v[Object.keys(v)[0]].protocol;};return StateHelpers;}();var stateHelpers=new StateHelpers();var global$1=typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{};// shim for using process in browser
-// based off https://github.com/defunctzombie/node-process/blob/master/browser.js
-function defaultSetTimout(){throw new Error('setTimeout has not been defined');}function defaultClearTimeout(){throw new Error('clearTimeout has not been defined');}var cachedSetTimeout=defaultSetTimout;var cachedClearTimeout=defaultClearTimeout;if(typeof global$1.setTimeout==='function'){cachedSetTimeout=setTimeout;}if(typeof global$1.clearTimeout==='function'){cachedClearTimeout=clearTimeout;}function runTimeout(fun){if(cachedSetTimeout===setTimeout){//normal enviroments in sane situations
-return setTimeout(fun,0);}// if setTimeout wasn't available but was latter defined
-if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout){cachedSetTimeout=setTimeout;return setTimeout(fun,0);}try{// when when somebody has screwed with setTimeout but no I.E. maddness
-return cachedSetTimeout(fun,0);}catch(e){try{// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
-return cachedSetTimeout.call(null,fun,0);}catch(e){// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
-return cachedSetTimeout.call(this,fun,0);}}}function runClearTimeout(marker){if(cachedClearTimeout===clearTimeout){//normal enviroments in sane situations
-return clearTimeout(marker);}// if clearTimeout wasn't available but was latter defined
-if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout){cachedClearTimeout=clearTimeout;return clearTimeout(marker);}try{// when when somebody has screwed with setTimeout but no I.E. maddness
-return cachedClearTimeout(marker);}catch(e){try{// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
-return cachedClearTimeout.call(null,marker);}catch(e){// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
-// Some versions of I.E. have different rules for clearTimeout vs setTimeout
-return cachedClearTimeout.call(this,marker);}}}var queue=[];var draining=false;var currentQueue;var queueIndex=-1;function cleanUpNextTick(){if(!draining||!currentQueue){return;}draining=false;if(currentQueue.length){queue=currentQueue.concat(queue);}else {queueIndex=-1;}if(queue.length){drainQueue();}}function drainQueue(){if(draining){return;}var timeout=runTimeout(cleanUpNextTick);draining=true;var len=queue.length;while(len){currentQueue=queue;queue=[];while(++queueIndex1){for(var i=1;i 0
-var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==='.'){parts.splice(i,1);}else if(last==='..'){parts.splice(i,1);up++;}else if(up){parts.splice(i,1);up--;}}// if the path is allowed to go above the root, restore leading ..s
-if(allowAboveRoot){for(;up--;up){parts.unshift('..');}}return parts;}// Split a filename into [root, dir, basename, ext], unix version
-// 'root' is just a slash, or nothing.
-var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var splitPath=function(filename){return splitPathRe.exec(filename).slice(1);};// path.resolve([from ...], to)
-// posix version
-function resolve$1(){var resolvedPath='',resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:'/';// Skip empty and invalid entries
-if(typeof path!=='string'){throw new TypeError('Arguments to path.resolve must be strings');}else if(!path){continue;}resolvedPath=path+'/'+resolvedPath;resolvedAbsolute=path.charAt(0)==='/';}// At this point the path should be resolved to a full absolute path, but
-// handle relative paths to be safe (might happen when process.cwd() fails)
-// Normalize the path
-resolvedPath=normalizeArray(filter$1(resolvedPath.split('/'),function(p){return !!p;}),!resolvedAbsolute).join('/');return (resolvedAbsolute?'/':'')+resolvedPath||'.';}// path.normalize(path)
-// posix version
-function normalize(path){var isPathAbsolute=isAbsolute(path),trailingSlash=substr(path,-1)==='/';// Normalize the path
-path=normalizeArray(filter$1(path.split('/'),function(p){return !!p;}),!isPathAbsolute).join('/');if(!path&&!isPathAbsolute){path='.';}if(path&&trailingSlash){path+='/';}return (isPathAbsolute?'/':'')+path;}// posix version
-function isAbsolute(path){return path.charAt(0)==='/';}// posix version
-function join(){var paths=Array.prototype.slice.call(arguments,0);return normalize(filter$1(paths,function(p,index){if(typeof p!=='string'){throw new TypeError('Arguments to path.join must be strings');}return p;}).join('/'));}// path.relative(from, to)
-// posix version
-function relative(from,to){from=resolve$1(from).substr(1);to=resolve$1(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=='')break;}if(start>end)return [];return arr.slice(start,end-start+1);}var fromParts=trim(from.split('/'));var toParts=trim(to.split('/'));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i1){sets[0]=sets[0].slice(0,-1);var xl=sets.length-1;for(var x=1;x= 0x80 (not a basic code point)','invalid-input':'Invalid input'};/** Convenience shortcuts */var baseMinusTMin=base-tMin;var floor=Math.floor;var stringFromCharCode=String.fromCharCode;/*--------------------------------------------------------------------------*/ /**
- * A generic error utility function.
- * @private
- * @param {String} type The error type.
- * @returns {Error} Throws a `RangeError` with the applicable error message.
- */function error$1(type){throw new RangeError(errors[type]);}/**
- * A generic `Array#map` utility function.
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} callback The function that gets called for every array
- * item.
- * @returns {Array} A new array of values returned by the callback function.
- */function map(array,fn){var result=[];var length=array.length;while(length--){result[length]=fn(array[length]);}return result;}/**
- * A simple `Array#map`-like wrapper to work with domain name strings or email
- * addresses.
- * @private
- * @param {String} domain The domain name or email address.
- * @param {Function} callback The function that gets called for every
- * character.
- * @returns {Array} A new string of characters returned by the callback
- * function.
- */function mapDomain(string,fn){var parts=string.split('@');var result='';if(parts.length>1){// In email addresses, only the domain name should be punycoded. Leave
-// the local part (i.e. everything up to `@`) intact.
-result=parts[0]+'@';string=parts[1];}// Avoid `split(regex)` for IE8 compatibility. See #17.
-string=string.replace(regexSeparators,'\x2E');var labels=string.split('.');var encoded=map(labels,fn).join('.');return result+encoded;}/**
- * Creates an array containing the numeric code points of each Unicode
- * character in the string. While JavaScript uses UCS-2 internally,
- * this function will convert a pair of surrogate halves (each of which
- * UCS-2 exposes as separate characters) into a single code point,
- * matching UTF-16.
- * @see `punycode.ucs2.encode`
- * @see
- * @memberOf punycode.ucs2
- * @name decode
- * @param {String} string The Unicode input string (UCS-2).
- * @returns {Array} The new array of code points.
- */function ucs2decode(string){var output=[];var counter=0;var length=string.length;while(counter=0xD800&&value<=0xDBFF&&counter>1;delta+=floor(delta/numPoints);for(;/* no initialization */delta>baseMinusTMin*tMax>>1;k+=base){delta=floor(delta/baseMinusTMin);}return floor(k+(baseMinusTMin+1)*delta/(delta+skew));};/**
- * Converts a Punycode string of ASCII-only symbols to a string of Unicode
- * symbols.
- * @memberOf punycode
- * @param {String} input The Punycode string of ASCII-only symbols.
- * @returns {String} The resulting string of Unicode symbols.
- */var decode=function decode(input){// Don't use UCS-2.
-var output=[];var inputLength=input.length;var i=0;var n=initialN;var bias=initialBias;// Handle the basic code points: let `basic` be the number of input code
-// points before the last delimiter, or `0` if there is none, then copy
-// the first basic code points to the output.
-var basic=input.lastIndexOf(delimiter);if(basic<0){basic=0;}for(var j=0;j=0x80){error$1('not-basic');}output.push(input.charCodeAt(j));}// Main decoding loop: start just after the last delimiter if any basic code
-// points were copied; start at the beginning otherwise.
-for(var index=basic>0?basic+1:0;index=inputLength){error$1('invalid-input');}var digit=basicToDigit(input.charCodeAt(index++));if(digit>=base||digit>floor((maxInt-i)/w)){error$1('overflow');}i+=digit*w;var t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(digitfloor(maxInt/baseMinusT)){error$1('overflow');}w*=baseMinusT;}var out=output.length+1;bias=adapt(i-oldi,out,oldi==0);// `i` was supposed to wrap around from `out` to `0`,
-// incrementing `n` each time, so we'll fix that now:
-if(floor(i/out)>maxInt-n){error$1('overflow');}n+=floor(i/out);i%=out;// Insert `n` at position `i` of the output.
-output.splice(i++,0,n);}return String.fromCodePoint.apply(String,output);};/**
- * Converts a string of Unicode symbols (e.g. a domain name label) to a
- * Punycode string of ASCII-only symbols.
- * @memberOf punycode
- * @param {String} input The string of Unicode symbols.
- * @returns {String} The resulting Punycode string of ASCII-only symbols.
- */var encode=function encode(input){var output=[];// Convert the input in UCS-2 to an array of Unicode code points.
-input=ucs2decode(input);// Cache the length.
-var inputLength=input.length;// Initialize the state.
-var n=initialN;var delta=0;var bias=initialBias;// Handle the basic code points.
-var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=input[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _currentValue2=_step.value;if(_currentValue2<0x80){output.push(stringFromCharCode(_currentValue2));}}}catch(err){_didIteratorError=true;_iteratorError=err;}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return();}}finally{if(_didIteratorError){throw _iteratorError;}}}var basicLength=output.length;var handledCPCount=basicLength;// `handledCPCount` is the number of code points that have been handled;
-// `basicLength` is the number of basic code points.
-// Finish the basic string with a delimiter unless it's empty.
-if(basicLength){output.push(delimiter);}// Main encoding loop:
-while(handledCPCount=n&¤tValue state to ,
-// but guard against overflow.
-}catch(err){_didIteratorError2=true;_iteratorError2=err;}finally{try{if(!_iteratorNormalCompletion2&&_iterator2.return){_iterator2.return();}}finally{if(_didIteratorError2){throw _iteratorError2;}}}var handledCPCountPlusOne=handledCPCount+1;if(m-n>floor((maxInt-delta)/handledCPCountPlusOne)){error$1('overflow');}delta+=(m-n)*handledCPCountPlusOne;n=m;var _iteratorNormalCompletion3=true;var _didIteratorError3=false;var _iteratorError3=undefined;try{for(var _iterator3=input[Symbol.iterator](),_step3;!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=true){var _currentValue=_step3.value;if(_currentValuemaxInt){error$1('overflow');}if(_currentValue==n){// Represent delta as a generalized variable-length integer.
-var q=delta;for(var k=base;;/* no condition */k+=base){var t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(q
- * @memberOf punycode
- * @type Object
- */'ucs2':{'decode':ucs2decode,'encode':ucs2encode},'decode':decode,'encode':encode,'toASCII':toASCII,'toUnicode':toUnicode};/**
- * URI.js
- *
- * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.
- * @author Gary Court
- * @see http://github.com/garycourt/uri-js
- */ /**
- * Copyright 2011 Gary Court. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of Gary Court.
- */var SCHEMES={};function pctEncChar(chr){var c=chr.charCodeAt(0);var e=void 0;if(c<16)e="%0"+c.toString(16).toUpperCase();else if(c<128)e="%"+c.toString(16).toUpperCase();else if(c<2048)e="%"+(c>>6|192).toString(16).toUpperCase()+"%"+(c&63|128).toString(16).toUpperCase();else e="%"+(c>>12|224).toString(16).toUpperCase()+"%"+(c>>6&63|128).toString(16).toUpperCase()+"%"+(c&63|128).toString(16).toUpperCase();return e;}function pctDecChars(str){var newStr="";var i=0;var il=str.length;while(i=194&&c<224){if(il-i>=6){var c2=parseInt(str.substr(i+4,2),16);newStr+=String.fromCharCode((c&31)<<6|c2&63);}else {newStr+=str.substr(i,6);}i+=6;}else if(c>=224){if(il-i>=9){var _c=parseInt(str.substr(i+4,2),16);var c3=parseInt(str.substr(i+7,2),16);newStr+=String.fromCharCode((c&15)<<12|(_c&63)<<6|c3&63);}else {newStr+=str.substr(i,9);}i+=9;}else {newStr+=str.substr(i,3);i+=3;}}return newStr;}function _normalizeComponentEncoding(components,protocol){function decodeUnreserved(str){var decStr=pctDecChars(str);return !decStr.match(protocol.UNRESERVED)?str:decStr;}if(components.scheme)components.scheme=String(components.scheme).replace(protocol.PCT_ENCODED,decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME,"");if(components.userinfo!==undefined)components.userinfo=String(components.userinfo).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(protocol.NOT_USERINFO,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.host!==undefined)components.host=String(components.host).replace(protocol.PCT_ENCODED,decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.path!==undefined)components.path=String(components.path).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(components.scheme?protocol.NOT_PATH:protocol.NOT_PATH_NOSCHEME,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.query!==undefined)components.query=String(components.query).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(protocol.NOT_QUERY,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);if(components.fragment!==undefined)components.fragment=String(components.fragment).replace(protocol.PCT_ENCODED,decodeUnreserved).replace(protocol.NOT_FRAGMENT,pctEncChar).replace(protocol.PCT_ENCODED,toUpperCase);return components;}function _stripLeadingZeros(str){return str.replace(/^0*(.*)/,"$1")||"0";}function _normalizeIPv4(host,protocol){var matches=host.match(protocol.IPV4ADDRESS)||[];var _matches=slicedToArray(matches,2),address=_matches[1];if(address){return address.split(".").map(_stripLeadingZeros).join(".");}else {return host;}}function _normalizeIPv6(host,protocol){var matches=host.match(protocol.IPV6ADDRESS)||[];var _matches2=slicedToArray(matches,3),address=_matches2[1],zone=_matches2[2];if(address){var _address$toLowerCase$=address.toLowerCase().split('::').reverse(),_address$toLowerCase$2=slicedToArray(_address$toLowerCase$,2),last=_address$toLowerCase$2[0],first=_address$toLowerCase$2[1];var firstFields=first?first.split(":").map(_stripLeadingZeros):[];var lastFields=last.split(":").map(_stripLeadingZeros);var isLastFieldIPv4Address=protocol.IPV4ADDRESS.test(lastFields[lastFields.length-1]);var fieldCount=isLastFieldIPv4Address?7:8;var lastFieldsStart=lastFields.length-fieldCount;var fields=Array(fieldCount);for(var x=0;x1){var newFirst=fields.slice(0,longestZeroFields.index);var newLast=fields.slice(longestZeroFields.index+longestZeroFields.length);newHost=newFirst.join(":")+"::"+newLast.join(":");}else {newHost=fields.join(":");}if(zone){newHost+="%"+zone;}return newHost;}else {return host;}}var URI_PARSE=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i;var NO_MATCH_IS_UNDEFINED="".match(/(){0}/)[1]===undefined;function parse(uriString){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var components={};var protocol=options.iri!==false?IRI_PROTOCOL:URI_PROTOCOL;if(options.reference==="suffix")uriString=(options.scheme?options.scheme+":":"")+"//"+uriString;var matches=uriString.match(URI_PARSE);if(matches){if(NO_MATCH_IS_UNDEFINED){//store each component
-components.scheme=matches[1];components.userinfo=matches[3];components.host=matches[4];components.port=parseInt(matches[5],10);components.path=matches[6]||"";components.query=matches[7];components.fragment=matches[8];//fix port number
-if(isNaN(components.port)){components.port=matches[5];}}else {//IE FIX for improper RegExp matching
-//store each component
-components.scheme=matches[1]||undefined;components.userinfo=uriString.indexOf("@")!==-1?matches[3]:undefined;components.host=uriString.indexOf("//")!==-1?matches[4]:undefined;components.port=parseInt(matches[5],10);components.path=matches[6]||"";components.query=uriString.indexOf("?")!==-1?matches[7]:undefined;components.fragment=uriString.indexOf("#")!==-1?matches[8]:undefined;//fix port number
-if(isNaN(components.port)){components.port=uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?matches[4]:undefined;}}if(components.host){//normalize IP hosts
-components.host=_normalizeIPv6(_normalizeIPv4(components.host,protocol),protocol);}//determine reference type
-if(components.scheme===undefined&&components.userinfo===undefined&&components.host===undefined&&components.port===undefined&&!components.path&&components.query===undefined){components.reference="same-document";}else if(components.scheme===undefined){components.reference="relative";}else if(components.fragment===undefined){components.reference="absolute";}else {components.reference="uri";}//check for reference errors
-if(options.reference&&options.reference!=="suffix"&&options.reference!==components.reference){components.error=components.error||"URI is not a "+options.reference+" reference.";}//find scheme handler
-var schemeHandler=SCHEMES[(options.scheme||components.scheme||"").toLowerCase()];//check if scheme can't handle IRIs
-if(!options.unicodeSupport&&(!schemeHandler||!schemeHandler.unicodeSupport)){//if host component is a domain name
-if(components.host&&(options.domainHost||schemeHandler&&schemeHandler.domainHost)){//convert Unicode IDN -> ASCII IDN
-try{components.host=punycode.toASCII(components.host.replace(protocol.PCT_ENCODED,pctDecChars).toLowerCase());}catch(e){components.error=components.error||"Host's domain name can not be converted to ASCII via punycode: "+e;}}//convert IRI -> URI
-_normalizeComponentEncoding(components,URI_PROTOCOL);}else {//normalize encodings
-_normalizeComponentEncoding(components,protocol);}//perform scheme specific parsing
-if(schemeHandler&&schemeHandler.parse){schemeHandler.parse(components,options);}}else {components.error=components.error||"URI can not be parsed.";}return components;}function _recomposeAuthority(components,options){var protocol=options.iri!==false?IRI_PROTOCOL:URI_PROTOCOL;var uriTokens=[];if(components.userinfo!==undefined){uriTokens.push(components.userinfo);uriTokens.push("@");}if(components.host!==undefined){//normalize IP hosts, add brackets and escape zone separator for IPv6
-uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host),protocol),protocol).replace(protocol.IPV6ADDRESS,function(_,$1,$2){return "["+$1+($2?"%25"+$2:"")+"]";}));}if(typeof components.port==="number"){uriTokens.push(":");uriTokens.push(components.port.toString(10));}return uriTokens.length?uriTokens.join(""):undefined;}var RDS1=/^\.\.?\//;var RDS2=/^\/\.(\/|$)/;var RDS3=/^\/\.\.(\/|$)/;var RDS5=/^\/?(?:.|\n)*?(?=\/|$)/;function removeDotSegments(input){var output=[];while(input.length){if(input.match(RDS1)){input=input.replace(RDS1,"");}else if(input.match(RDS2)){input=input.replace(RDS2,"/");}else if(input.match(RDS3)){input=input.replace(RDS3,"/");output.pop();}else if(input==="."||input===".."){input="";}else {var im=input.match(RDS5);if(im){var s=im[0];input=input.slice(s.length);output.push(s);}else {throw new Error("Unexpected dot segment condition");}}}return output.join("");}function serialize(components){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var protocol=options.iri?IRI_PROTOCOL:URI_PROTOCOL;var uriTokens=[];//find scheme handler
-var schemeHandler=SCHEMES[(options.scheme||components.scheme||"").toLowerCase()];//perform scheme specific serialization
-if(schemeHandler&&schemeHandler.serialize)schemeHandler.serialize(components,options);if(components.host){//if host component is an IPv6 address
-if(protocol.IPV6ADDRESS.test(components.host));//TODO: normalize IPv6 address as per RFC 5952
-//if host component is a domain name
-else if(options.domainHost||schemeHandler&&schemeHandler.domainHost){//convert IDN via punycode
-try{components.host=!options.iri?punycode.toASCII(components.host.replace(protocol.PCT_ENCODED,pctDecChars).toLowerCase()):punycode.toUnicode(components.host);}catch(e){components.error=components.error||"Host's domain name can not be converted to "+(!options.iri?"ASCII":"Unicode")+" via punycode: "+e;}}}//normalize encoding
-_normalizeComponentEncoding(components,protocol);if(options.reference!=="suffix"&&components.scheme){uriTokens.push(components.scheme);uriTokens.push(":");}var authority=_recomposeAuthority(components,options);if(authority!==undefined){if(options.reference!=="suffix"){uriTokens.push("//");}uriTokens.push(authority);if(components.path&&components.path.charAt(0)!=="/"){uriTokens.push("/");}}if(components.path!==undefined){var s=components.path;if(!options.absolutePath&&(!schemeHandler||!schemeHandler.absolutePath)){s=removeDotSegments(s);}if(authority===undefined){s=s.replace(/^\/\//,"/%2F");//don't allow the path to start with "//"
-}uriTokens.push(s);}if(components.query!==undefined){uriTokens.push("?");uriTokens.push(components.query);}if(components.fragment!==undefined){uriTokens.push("#");uriTokens.push(components.fragment);}return uriTokens.join("");//merge tokens into a string
-}function resolveComponents(base,relative){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var skipNormalization=arguments[3];var target={};if(!skipNormalization){base=parse(serialize(base,options),options);//normalize base components
-relative=parse(serialize(relative,options),options);//normalize relative components
-}options=options||{};if(!options.tolerant&&relative.scheme){target.scheme=relative.scheme;//target.authority = relative.authority;
-target.userinfo=relative.userinfo;target.host=relative.host;target.port=relative.port;target.path=removeDotSegments(relative.path||"");target.query=relative.query;}else {if(relative.userinfo!==undefined||relative.host!==undefined||relative.port!==undefined){//target.authority = relative.authority;
-target.userinfo=relative.userinfo;target.host=relative.host;target.port=relative.port;target.path=removeDotSegments(relative.path||"");target.query=relative.query;}else {if(!relative.path){target.path=base.path;if(relative.query!==undefined){target.query=relative.query;}else {target.query=base.query;}}else {if(relative.path.charAt(0)==="/"){target.path=removeDotSegments(relative.path);}else {if((base.userinfo!==undefined||base.host!==undefined||base.port!==undefined)&&!base.path){target.path="/"+relative.path;}else if(!base.path){target.path=relative.path;}else {target.path=base.path.slice(0,base.path.lastIndexOf("/")+1)+relative.path;}target.path=removeDotSegments(target.path);}target.query=relative.query;}//target.authority = base.authority;
-target.userinfo=base.userinfo;target.host=base.host;target.port=base.port;}target.scheme=base.scheme;}target.fragment=relative.fragment;return target;}function resolve(baseURI,relativeURI,options){var schemelessOptions=assign({scheme:'null'},options);return serialize(resolveComponents(parse(baseURI,schemelessOptions),parse(relativeURI,schemelessOptions),schemelessOptions,true),schemelessOptions);}function normalize(uri,options){if(typeof uri==="string"){uri=serialize(parse(uri,options),options);}else if(typeOf(uri)==="object"){uri=parse(serialize(uri,options),options);}return uri;}function equal(uriA,uriB,options){if(typeof uriA==="string"){uriA=serialize(parse(uriA,options),options);}else if(typeOf(uriA)==="object"){uriA=serialize(uriA,options);}if(typeof uriB==="string"){uriB=serialize(parse(uriB,options),options);}else if(typeOf(uriB)==="object"){uriB=serialize(uriB,options);}return uriA===uriB;}function escapeComponent(str,options){return str&&str.toString().replace(!options||!options.iri?URI_PROTOCOL.ESCAPE:IRI_PROTOCOL.ESCAPE,pctEncChar);}function unescapeComponent(str,options){return str&&str.toString().replace(!options||!options.iri?URI_PROTOCOL.PCT_ENCODED:IRI_PROTOCOL.PCT_ENCODED,pctDecChars);}var handler={scheme:"http",domainHost:true,parse:function parse(components,options){//report missing host
-if(!components.host){components.error=components.error||"HTTP URIs must have a host.";}return components;},serialize:function serialize(components,options){//normalize the default port
-if(components.port===(String(components.scheme).toLowerCase()!=="https"?80:443)||components.port===""){components.port=undefined;}//normalize the empty path
-if(!components.path){components.path="/";}//NOTE: We do not parse query strings for HTTP URIs
-//as WWW Form Url Encoded query strings are part of the HTML4+ spec,
-//and not the HTTP spec.
-return components;}};var handler$1={scheme:"https",domainHost:handler.domainHost,parse:handler.parse,serialize:handler.serialize};var O={};//RFC 3986
-var UNRESERVED$$="[A-Za-z0-9\\-\\.\\_\\~"+"\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF"+"]";var HEXDIG$$="[0-9A-Fa-f]";//case-insensitive
-var PCT_ENCODED$=subexp(subexp("%[EFef]"+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$)+"|"+subexp("%[89A-Fa-f]"+HEXDIG$$+"%"+HEXDIG$$+HEXDIG$$)+"|"+subexp("%"+HEXDIG$$+HEXDIG$$));//expanded
-//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =
-//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]";
-//const WSP$$ = "[\\x20\\x09]";
-//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127)
-//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext
-//const VCHAR$$ = "[\\x21-\\x7E]";
-//const WSP$$ = "[\\x20\\x09]";
-//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext
-//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+");
-//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$);
-//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"');
-var ATEXT$$="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]";var QTEXT$$="[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]";var VCHAR$$=merge(QTEXT$$,"[\\\"\\\\]");var SOME_DELIMS$$="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]";var UNRESERVED=new RegExp(UNRESERVED$$,"g");var PCT_ENCODED=new RegExp(PCT_ENCODED$,"g");var NOT_LOCAL_PART=new RegExp(merge("[^]",ATEXT$$,"[\\.]",'[\\"]',VCHAR$$),"g");var NOT_HFNAME=new RegExp(merge("[^]",UNRESERVED$$,SOME_DELIMS$$),"g");var NOT_HFVALUE=NOT_HFNAME;function decodeUnreserved(str){var decStr=pctDecChars(str);return !decStr.match(UNRESERVED)?str:decStr;}var handler$2={scheme:"mailto",parse:function parse$$1(components,options){var mailtoComponents=components;var to=mailtoComponents.to=mailtoComponents.path?mailtoComponents.path.split(","):[];mailtoComponents.path=undefined;if(mailtoComponents.query){var unknownHeaders=false;var headers={};var hfields=mailtoComponents.query.split("&");for(var x=0,xl=hfields.length;x ASCII IDN
-try{addr[1]=punycode.toASCII(unescapeComponent(addr[1],options).toLowerCase());}catch(e){mailtoComponents.error=mailtoComponents.error||"Email address's domain name can not be converted to ASCII via punycode: "+e;}}else {addr[1]=unescapeComponent(addr[1],options).toLowerCase();}to[_x2]=addr.join("@");}return mailtoComponents;},serialize:function serialize$$1(mailtoComponents,options){var components=mailtoComponents;var to=toArray(mailtoComponents.to);if(to){for(var x=0,xl=to.length;x=0xD800&&value<=0xDBFF&&pos=lvl)throw new Error('Cannot access property/index '+up+' levels up, current level is '+lvl);return paths[lvl-up];}if(up>lvl)throw new Error('Cannot access data '+up+' levels up, current level is '+lvl);data='data'+(lvl-up||'');if(!jsonPointer)return data;}var expr=data;var segments=jsonPointer.split('/');for(var i=0;i=0)return {index:index,compiling:true};index=this._compilations.length;this._compilations[index]={schema:schema,root:root,baseId:baseId};return {index:index,compiling:false};}/**
- * Removes the schema from the currently compiled list
- * @this Ajv
- * @param {Object} schema schema to compile
- * @param {Object} root root object
- * @param {String} baseId base schema ID
- */function endCompiling(schema,root,baseId){/* jshint validthis: true */var i=compIndex.call(this,schema,root,baseId);if(i>=0)this._compilations.splice(i,1);}/**
- * Index of schema compilation in the currently compiled list
- * @this Ajv
- * @param {Object} schema schema to compile
- * @param {Object} root root object
- * @param {String} baseId base schema ID
- * @return {Integer} compilation index
- */function compIndex(schema,root,baseId){/* jshint validthis: true */for(var i=0;i%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i;// For the source: https://gist.github.com/dperini/729294
-// For test cases: https://mathiasbynens.be/demo/url-regex
-// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.
-// var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu;
-var URL=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i;var UUID=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;var JSON_POINTER=/^(?:\/(?:[^~/]|~0|~1)*)*$/;var JSON_POINTER_URI_FRAGMENT=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;var RELATIVE_JSON_POINTER=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;var formats_1=formats;function formats(mode){mode=mode=='full'?'full':'fast';return util.copy(formats[mode]);}formats.fast={// date: http://tools.ietf.org/html/rfc3339#section-5.6
-date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,// date-time: http://tools.ietf.org/html/rfc3339#section-5.6
-time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,'date-time':/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,// uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js
-uri:/^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,'uri-reference':/^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,'uri-template':URITEMPLATE,url:URL,// email (sources from jsen validator):
-// http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363
-// http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')
-email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:HOSTNAME,// optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html
-ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,// optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses
-ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:regex,// uuid: http://tools.ietf.org/html/rfc4122
-uuid:UUID,// JSON-pointer: https://tools.ietf.org/html/rfc6901
-// uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A
-'json-pointer':JSON_POINTER,'json-pointer-uri-fragment':JSON_POINTER_URI_FRAGMENT,// relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00
-'relative-json-pointer':RELATIVE_JSON_POINTER};formats.full={date:date,time:time,'date-time':date_time,uri:uri,'uri-reference':URIREF,'uri-template':URITEMPLATE,url:URL,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:HOSTNAME,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:regex,uuid:UUID,'json-pointer':JSON_POINTER,'json-pointer-uri-fragment':JSON_POINTER_URI_FRAGMENT,'relative-json-pointer':RELATIVE_JSON_POINTER};function isLeapYear(year){// https://tools.ietf.org/html/rfc3339#appendix-C
-return year%4===0&&(year%100!==0||year%400===0);}function date(str){// full-date from http://tools.ietf.org/html/rfc3339#section-5.6
-var matches=str.match(DATE);if(!matches)return false;var year=+matches[1];var month=+matches[2];var day=+matches[3];return month>=1&&month<=12&&day>=1&&day<=(month==2&&isLeapYear(year)?29:DAYS[month]);}function time(str,full){var matches=str.match(TIME$1);if(!matches)return false;var hour=matches[1];var minute=matches[2];var second=matches[3];var timeZone=matches[5];return (hour<=23&&minute<=59&&second<=59||hour==23&&minute==59&&second==60)&&(!full||timeZone);}var DATE_TIME_SEPARATOR=/t|\s/i;function date_time(str){// http://tools.ietf.org/html/rfc3339#section-5.6
-var dateTime=str.split(DATE_TIME_SEPARATOR);return dateTime.length==2&&date(dateTime[0])&&time(dateTime[1],true);}var NOT_URI_FRAGMENT=/\/|:/;function uri(str){// http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "."
-return NOT_URI_FRAGMENT.test(str)&&URI.test(str);}var Z_ANCHOR=/[^\\]\\Z/;function regex(str){if(Z_ANCHOR.test(str))return false;try{new RegExp(str);return true;}catch(e){return false;}}var ref$1=function generate_ref(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $data='data'+($dataLvl||'');var $valid='valid'+$lvl;var $async,$refCode;if($schema=='#'||$schema=='#/'){if(it.isRoot){$async=it.async;$refCode='validate';}else {$async=it.root.schema.$async===true;$refCode='root.refVal[0]';}}else {var $refVal=it.resolveRef(it.baseId,$schema,it.isRoot);if($refVal===undefined){var $message=it.MissingRefError.message(it.baseId,$schema);if(it.opts.missingRefs=='fail'){it.logger.error($message);var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+'$ref'+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { ref: \''+it.util.escapeQuotes($schema)+'\' } ';if(it.opts.messages!==false){out+=' , message: \'can\\\'t resolve reference '+it.util.escapeQuotes($schema)+'\' ';}if(it.opts.verbose){out+=' , schema: '+it.util.toQuotedString($schema)+' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}if($breakOnError){out+=' if (false) { ';}}else if(it.opts.missingRefs=='ignore'){it.logger.warn($message);if($breakOnError){out+=' if (true) { ';}}else {throw new it.MissingRefError(it.baseId,$schema,$message);}}else if($refVal.inline){var $it=it.util.copy(it);$it.level++;var $nextValid='valid'+$it.level;$it.schema=$refVal.schema;$it.schemaPath='';$it.errSchemaPath=$schema;var $code=it.validate($it).replace(/validate\.schema/g,$refVal.code);out+=' '+$code+' ';if($breakOnError){out+=' if ('+$nextValid+') { ';}}else {$async=$refVal.$async===true||it.async&&$refVal.$async!==false;$refCode=$refVal.code;}}if($refCode){var $$outStack=$$outStack||[];$$outStack.push(out);out='';if(it.opts.passContext){out+=' '+$refCode+'.call(this, ';}else {out+=' '+$refCode+'( ';}out+=' '+$data+', (dataPath || \'\')';if(it.errorPath!='""'){out+=' + '+it.errorPath;}var $parentData=$dataLvl?'data'+($dataLvl-1||''):'parentData',$parentDataProperty=$dataLvl?it.dataPathArr[$dataLvl]:'parentDataProperty';out+=' , '+$parentData+' , '+$parentDataProperty+', rootData) ';var __callValidate=out;out=$$outStack.pop();if($async){if(!it.async)throw new Error('async schema referenced by sync schema');if($breakOnError){out+=' var '+$valid+'; ';}out+=' try { await '+__callValidate+'; ';if($breakOnError){out+=' '+$valid+' = true; ';}out+=' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ';if($breakOnError){out+=' '+$valid+' = false; ';}out+=' } ';if($breakOnError){out+=' if ('+$valid+') { ';}}else {out+=' if (!'+__callValidate+') { if (vErrors === null) vErrors = '+$refCode+'.errors; else vErrors = vErrors.concat('+$refCode+'.errors); errors = vErrors.length; } ';if($breakOnError){out+=' else { ';}}}return out;};var allOf=function generate_allOf(it,$keyword,$ruleType){var out=' ';var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $it=it.util.copy(it);var $closingBraces='';$it.level++;var $nextValid='valid'+$it.level;var $currentBaseId=$it.baseId,$allSchemasEmpty=true;var arr1=$schema;if(arr1){var $sch,$i=-1,l1=arr1.length-1;while($i0:it.util.schemaHasRules($sch,it.RULES.all)){$allSchemasEmpty=false;$it.schema=$sch;$it.schemaPath=$schemaPath+'['+$i+']';$it.errSchemaPath=$errSchemaPath+'/'+$i;out+=' '+it.validate($it)+' ';$it.baseId=$currentBaseId;if($breakOnError){out+=' if ('+$nextValid+') { ';$closingBraces+='}';}}}}if($breakOnError){if($allSchemasEmpty){out+=' if (true) { ';}else {out+=' '+$closingBraces.slice(0,-1)+' ';}}return out;};var anyOf=function generate_anyOf(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $data='data'+($dataLvl||'');var $valid='valid'+$lvl;var $errs='errs__'+$lvl;var $it=it.util.copy(it);var $closingBraces='';$it.level++;var $nextValid='valid'+$it.level;var $noEmptySchema=$schema.every(function($sch){return it.opts.strictKeywords?typeof $sch=='object'&&Object.keys($sch).length>0:it.util.schemaHasRules($sch,it.RULES.all);});if($noEmptySchema){var $currentBaseId=$it.baseId;out+=' var '+$errs+' = errors; var '+$valid+' = false; ';var $wasComposite=it.compositeRule;it.compositeRule=$it.compositeRule=true;var arr1=$schema;if(arr1){var $sch,$i=-1,l1=arr1.length-1;while($i0:it.util.schemaHasRules($schema,it.RULES.all);out+='var '+$errs+' = errors;var '+$valid+';';if($nonEmptySchema){var $wasComposite=it.compositeRule;it.compositeRule=$it.compositeRule=true;$it.schema=$schema;$it.schemaPath=$schemaPath;$it.errSchemaPath=$errSchemaPath;out+=' var '+$nextValid+' = false; for (var '+$idx+' = 0; '+$idx+' < '+$data+'.length; '+$idx+'++) { ';$it.errorPath=it.util.getPathExpr(it.errorPath,$idx,it.opts.jsonPointers,true);var $passData=$data+'['+$idx+']';$it.dataPathArr[$dataNxt]=$idx;var $code=it.validate($it);$it.baseId=$currentBaseId;if(it.util.varOccurences($code,$nextData)<2){out+=' '+it.util.varReplace($code,$nextData,$passData)+' ';}else {out+=' var '+$nextData+' = '+$passData+'; '+$code+' ';}out+=' if ('+$nextValid+') break; } ';it.compositeRule=$it.compositeRule=$wasComposite;out+=' '+$closingBraces+' if (!'+$nextValid+') {';}else {out+=' if ('+$data+'.length == 0) {';}var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+'contains'+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: {} ';if(it.opts.messages!==false){out+=' , message: \'should contain a valid item\' ';}if(it.opts.verbose){out+=' , schema: validate.schema'+$schemaPath+' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}out+=' } else { ';if($nonEmptySchema){out+=' errors = '+$errs+'; if (vErrors !== null) { if ('+$errs+') vErrors.length = '+$errs+'; else vErrors = null; } ';}if(it.opts.allErrors){out+=' } ';}return out;};var dependencies$1=function generate_dependencies(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $data='data'+($dataLvl||'');var $errs='errs__'+$lvl;var $it=it.util.copy(it);var $closingBraces='';$it.level++;var $nextValid='valid'+$it.level;var $schemaDeps={},$propertyDeps={},$ownProperties=it.opts.ownProperties;for($property in $schema){if($property=='__proto__')continue;var $sch=$schema[$property];var $deps=Array.isArray($sch)?$propertyDeps:$schemaDeps;$deps[$property]=$sch;}out+='var '+$errs+' = errors;';var $currentErrorPath=it.errorPath;out+='var missing'+$lvl+';';for(var $property in $propertyDeps){$deps=$propertyDeps[$property];if($deps.length){out+=' if ( '+$data+it.util.getProperty($property)+' !== undefined ';if($ownProperties){out+=' && Object.prototype.hasOwnProperty.call('+$data+', \''+it.util.escapeQuotes($property)+'\') ';}if($breakOnError){out+=' && ( ';var arr1=$deps;if(arr1){var $propertyKey,$i=-1,l1=arr1.length-1;while($i0:it.util.schemaHasRules($sch,it.RULES.all)){out+=' '+$nextValid+' = true; if ( '+$data+it.util.getProperty($property)+' !== undefined ';if($ownProperties){out+=' && Object.prototype.hasOwnProperty.call('+$data+', \''+it.util.escapeQuotes($property)+'\') ';}out+=') { ';$it.schema=$sch;$it.schemaPath=$schemaPath+it.util.getProperty($property);$it.errSchemaPath=$errSchemaPath+'/'+it.util.escapeFragment($property);out+=' '+it.validate($it)+' ';$it.baseId=$currentBaseId;out+=' } ';if($breakOnError){out+=' if ('+$nextValid+') { ';$closingBraces+='}';}}}if($breakOnError){out+=' '+$closingBraces+' if ('+$errs+' == errors) {';}return out;};var _enum=function generate_enum(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $data='data'+($dataLvl||'');var $valid='valid'+$lvl;var $isData=it.opts.$data&&$schema&&$schema.$data;if($isData){out+=' var schema'+$lvl+' = '+it.util.getData($schema.$data,$dataLvl,it.dataPathArr)+'; ';}var $i='i'+$lvl,$vSchema='schema'+$lvl;if(!$isData){out+=' var '+$vSchema+' = validate.schema'+$schemaPath+';';}out+='var '+$valid+';';if($isData){out+=' if (schema'+$lvl+' === undefined) '+$valid+' = true; else if (!Array.isArray(schema'+$lvl+')) '+$valid+' = false; else {';}out+=''+$valid+' = false;for (var '+$i+'=0; '+$i+'<'+$vSchema+'.length; '+$i+'++) if (equal('+$data+', '+$vSchema+'['+$i+'])) { '+$valid+' = true; break; }';if($isData){out+=' } ';}out+=' if (!'+$valid+') { ';var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+'enum'+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { allowedValues: schema'+$lvl+' } ';if(it.opts.messages!==false){out+=' , message: \'should be equal to one of the allowed values\' ';}if(it.opts.verbose){out+=' , schema: validate.schema'+$schemaPath+' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}out+=' }';if($breakOnError){out+=' else { ';}return out;};var format$3=function generate_format(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $data='data'+($dataLvl||'');if(it.opts.format===false){if($breakOnError){out+=' if (true) { ';}return out;}var $isData=it.opts.$data&&$schema&&$schema.$data,$schemaValue;if($isData){out+=' var schema'+$lvl+' = '+it.util.getData($schema.$data,$dataLvl,it.dataPathArr)+'; ';$schemaValue='schema'+$lvl;}else {$schemaValue=$schema;}var $unknownFormats=it.opts.unknownFormats,$allowUnknown=Array.isArray($unknownFormats);if($isData){var $format='format'+$lvl,$isObject='isObject'+$lvl,$formatType='formatType'+$lvl;out+=' var '+$format+' = formats['+$schemaValue+']; var '+$isObject+' = typeof '+$format+' == \'object\' && !('+$format+' instanceof RegExp) && '+$format+'.validate; var '+$formatType+' = '+$isObject+' && '+$format+'.type || \'string\'; if ('+$isObject+') { ';if(it.async){out+=' var async'+$lvl+' = '+$format+'.async; ';}out+=' '+$format+' = '+$format+'.validate; } if ( ';if($isData){out+=' ('+$schemaValue+' !== undefined && typeof '+$schemaValue+' != \'string\') || ';}out+=' (';if($unknownFormats!='ignore'){out+=' ('+$schemaValue+' && !'+$format+' ';if($allowUnknown){out+=' && self._opts.unknownFormats.indexOf('+$schemaValue+') == -1 ';}out+=') || ';}out+=' ('+$format+' && '+$formatType+' == \''+$ruleType+'\' && !(typeof '+$format+' == \'function\' ? ';if(it.async){out+=' (async'+$lvl+' ? await '+$format+'('+$data+') : '+$format+'('+$data+')) ';}else {out+=' '+$format+'('+$data+') ';}out+=' : '+$format+'.test('+$data+'))))) {';}else {var $format=it.formats[$schema];if(!$format){if($unknownFormats=='ignore'){it.logger.warn('unknown format "'+$schema+'" ignored in schema at path "'+it.errSchemaPath+'"');if($breakOnError){out+=' if (true) { ';}return out;}else if($allowUnknown&&$unknownFormats.indexOf($schema)>=0){if($breakOnError){out+=' if (true) { ';}return out;}else {throw new Error('unknown format "'+$schema+'" is used in schema at path "'+it.errSchemaPath+'"');}}var $isObject=typeof $format=='object'&&!($format instanceof RegExp)&&$format.validate;var $formatType=$isObject&&$format.type||'string';if($isObject){var $async=$format.async===true;$format=$format.validate;}if($formatType!=$ruleType){if($breakOnError){out+=' if (true) { ';}return out;}if($async){if(!it.async)throw new Error('async format in sync schema');var $formatRef='formats'+it.util.getProperty($schema)+'.validate';out+=' if (!(await '+$formatRef+'('+$data+'))) { ';}else {out+=' if (! ';var $formatRef='formats'+it.util.getProperty($schema);if($isObject)$formatRef+='.validate';if(typeof $format=='function'){out+=' '+$formatRef+'('+$data+') ';}else {out+=' '+$formatRef+'.test('+$data+') ';}out+=') { ';}}var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+'format'+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { format: ';if($isData){out+=''+$schemaValue;}else {out+=''+it.util.toQuotedString($schema);}out+=' } ';if(it.opts.messages!==false){out+=' , message: \'should match format "';if($isData){out+='\' + '+$schemaValue+' + \'';}else {out+=''+it.util.escapeQuotes($schema);}out+='"\' ';}if(it.opts.verbose){out+=' , schema: ';if($isData){out+='validate.schema'+$schemaPath;}else {out+=''+it.util.toQuotedString($schema);}out+=' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}out+=' } ';if($breakOnError){out+=' else { ';}return out;};var _if=function generate_if(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $data='data'+($dataLvl||'');var $valid='valid'+$lvl;var $errs='errs__'+$lvl;var $it=it.util.copy(it);$it.level++;var $nextValid='valid'+$it.level;var $thenSch=it.schema['then'],$elseSch=it.schema['else'],$thenPresent=$thenSch!==undefined&&(it.opts.strictKeywords?typeof $thenSch=='object'&&Object.keys($thenSch).length>0:it.util.schemaHasRules($thenSch,it.RULES.all)),$elsePresent=$elseSch!==undefined&&(it.opts.strictKeywords?typeof $elseSch=='object'&&Object.keys($elseSch).length>0:it.util.schemaHasRules($elseSch,it.RULES.all)),$currentBaseId=$it.baseId;if($thenPresent||$elsePresent){var $ifClause;$it.createErrors=false;$it.schema=$schema;$it.schemaPath=$schemaPath;$it.errSchemaPath=$errSchemaPath;out+=' var '+$errs+' = errors; var '+$valid+' = true; ';var $wasComposite=it.compositeRule;it.compositeRule=$it.compositeRule=true;out+=' '+it.validate($it)+' ';$it.baseId=$currentBaseId;$it.createErrors=true;out+=' errors = '+$errs+'; if (vErrors !== null) { if ('+$errs+') vErrors.length = '+$errs+'; else vErrors = null; } ';it.compositeRule=$it.compositeRule=$wasComposite;if($thenPresent){out+=' if ('+$nextValid+') { ';$it.schema=it.schema['then'];$it.schemaPath=it.schemaPath+'.then';$it.errSchemaPath=it.errSchemaPath+'/then';out+=' '+it.validate($it)+' ';$it.baseId=$currentBaseId;out+=' '+$valid+' = '+$nextValid+'; ';if($thenPresent&&$elsePresent){$ifClause='ifClause'+$lvl;out+=' var '+$ifClause+' = \'then\'; ';}else {$ifClause='\'then\'';}out+=' } ';if($elsePresent){out+=' else { ';}}else {out+=' if (!'+$nextValid+') { ';}if($elsePresent){$it.schema=it.schema['else'];$it.schemaPath=it.schemaPath+'.else';$it.errSchemaPath=it.errSchemaPath+'/else';out+=' '+it.validate($it)+' ';$it.baseId=$currentBaseId;out+=' '+$valid+' = '+$nextValid+'; ';if($thenPresent&&$elsePresent){$ifClause='ifClause'+$lvl;out+=' var '+$ifClause+' = \'else\'; ';}else {$ifClause='\'else\'';}out+=' } ';}out+=' if (!'+$valid+') { var err = ';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+'if'+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { failingKeyword: '+$ifClause+' } ';if(it.opts.messages!==false){out+=' , message: \'should match "\' + '+$ifClause+' + \'" schema\' ';}if(it.opts.verbose){out+=' , schema: validate.schema'+$schemaPath+' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}out+='; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(vErrors); ';}else {out+=' validate.errors = vErrors; return false; ';}}out+=' } ';if($breakOnError){out+=' else { ';}}else {if($breakOnError){out+=' if (true) { ';}}return out;};var items=function generate_items(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $data='data'+($dataLvl||'');var $valid='valid'+$lvl;var $errs='errs__'+$lvl;var $it=it.util.copy(it);var $closingBraces='';$it.level++;var $nextValid='valid'+$it.level;var $idx='i'+$lvl,$dataNxt=$it.dataLevel=it.dataLevel+1,$nextData='data'+$dataNxt,$currentBaseId=it.baseId;out+='var '+$errs+' = errors;var '+$valid+';';if(Array.isArray($schema)){var $additionalItems=it.schema.additionalItems;if($additionalItems===false){out+=' '+$valid+' = '+$data+'.length <= '+$schema.length+'; ';var $currErrSchemaPath=$errSchemaPath;$errSchemaPath=it.errSchemaPath+'/additionalItems';out+=' if (!'+$valid+') { ';var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+'additionalItems'+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { limit: '+$schema.length+' } ';if(it.opts.messages!==false){out+=' , message: \'should NOT have more than '+$schema.length+' items\' ';}if(it.opts.verbose){out+=' , schema: false , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}out+=' } ';$errSchemaPath=$currErrSchemaPath;if($breakOnError){$closingBraces+='}';out+=' else { ';}}var arr1=$schema;if(arr1){var $sch,$i=-1,l1=arr1.length-1;while($i0:it.util.schemaHasRules($sch,it.RULES.all)){out+=' '+$nextValid+' = true; if ('+$data+'.length > '+$i+') { ';var $passData=$data+'['+$i+']';$it.schema=$sch;$it.schemaPath=$schemaPath+'['+$i+']';$it.errSchemaPath=$errSchemaPath+'/'+$i;$it.errorPath=it.util.getPathExpr(it.errorPath,$i,it.opts.jsonPointers,true);$it.dataPathArr[$dataNxt]=$i;var $code=it.validate($it);$it.baseId=$currentBaseId;if(it.util.varOccurences($code,$nextData)<2){out+=' '+it.util.varReplace($code,$nextData,$passData)+' ';}else {out+=' var '+$nextData+' = '+$passData+'; '+$code+' ';}out+=' } ';if($breakOnError){out+=' if ('+$nextValid+') { ';$closingBraces+='}';}}}}if(typeof $additionalItems=='object'&&(it.opts.strictKeywords?typeof $additionalItems=='object'&&Object.keys($additionalItems).length>0:it.util.schemaHasRules($additionalItems,it.RULES.all))){$it.schema=$additionalItems;$it.schemaPath=it.schemaPath+'.additionalItems';$it.errSchemaPath=it.errSchemaPath+'/additionalItems';out+=' '+$nextValid+' = true; if ('+$data+'.length > '+$schema.length+') { for (var '+$idx+' = '+$schema.length+'; '+$idx+' < '+$data+'.length; '+$idx+'++) { ';$it.errorPath=it.util.getPathExpr(it.errorPath,$idx,it.opts.jsonPointers,true);var $passData=$data+'['+$idx+']';$it.dataPathArr[$dataNxt]=$idx;var $code=it.validate($it);$it.baseId=$currentBaseId;if(it.util.varOccurences($code,$nextData)<2){out+=' '+it.util.varReplace($code,$nextData,$passData)+' ';}else {out+=' var '+$nextData+' = '+$passData+'; '+$code+' ';}if($breakOnError){out+=' if (!'+$nextValid+') break; ';}out+=' } } ';if($breakOnError){out+=' if ('+$nextValid+') { ';$closingBraces+='}';}}}else if(it.opts.strictKeywords?typeof $schema=='object'&&Object.keys($schema).length>0:it.util.schemaHasRules($schema,it.RULES.all)){$it.schema=$schema;$it.schemaPath=$schemaPath;$it.errSchemaPath=$errSchemaPath;out+=' for (var '+$idx+' = '+0+'; '+$idx+' < '+$data+'.length; '+$idx+'++) { ';$it.errorPath=it.util.getPathExpr(it.errorPath,$idx,it.opts.jsonPointers,true);var $passData=$data+'['+$idx+']';$it.dataPathArr[$dataNxt]=$idx;var $code=it.validate($it);$it.baseId=$currentBaseId;if(it.util.varOccurences($code,$nextData)<2){out+=' '+it.util.varReplace($code,$nextData,$passData)+' ';}else {out+=' var '+$nextData+' = '+$passData+'; '+$code+' ';}if($breakOnError){out+=' if (!'+$nextValid+') break; ';}out+=' }';}if($breakOnError){out+=' '+$closingBraces+' if ('+$errs+' == errors) {';}return out;};var _limit=function generate__limit(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $errorKeyword;var $data='data'+($dataLvl||'');var $isData=it.opts.$data&&$schema&&$schema.$data,$schemaValue;if($isData){out+=' var schema'+$lvl+' = '+it.util.getData($schema.$data,$dataLvl,it.dataPathArr)+'; ';$schemaValue='schema'+$lvl;}else {$schemaValue=$schema;}var $isMax=$keyword=='maximum',$exclusiveKeyword=$isMax?'exclusiveMaximum':'exclusiveMinimum',$schemaExcl=it.schema[$exclusiveKeyword],$isDataExcl=it.opts.$data&&$schemaExcl&&$schemaExcl.$data,$op=$isMax?'<':'>',$notOp=$isMax?'>':'<',$errorKeyword=undefined;if(!($isData||typeof $schema=='number'||$schema===undefined)){throw new Error($keyword+' must be number');}if(!($isDataExcl||$schemaExcl===undefined||typeof $schemaExcl=='number'||typeof $schemaExcl=='boolean')){throw new Error($exclusiveKeyword+' must be number or boolean');}if($isDataExcl){var $schemaValueExcl=it.util.getData($schemaExcl.$data,$dataLvl,it.dataPathArr),$exclusive='exclusive'+$lvl,$exclType='exclType'+$lvl,$exclIsNumber='exclIsNumber'+$lvl,$opExpr='op'+$lvl,$opStr='\' + '+$opExpr+' + \'';out+=' var schemaExcl'+$lvl+' = '+$schemaValueExcl+'; ';$schemaValueExcl='schemaExcl'+$lvl;out+=' var '+$exclusive+'; var '+$exclType+' = typeof '+$schemaValueExcl+'; if ('+$exclType+' != \'boolean\' && '+$exclType+' != \'undefined\' && '+$exclType+' != \'number\') { ';var $errorKeyword=$exclusiveKeyword;var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+($errorKeyword||'_exclusiveLimit')+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: {} ';if(it.opts.messages!==false){out+=' , message: \''+$exclusiveKeyword+' should be boolean\' ';}if(it.opts.verbose){out+=' , schema: validate.schema'+$schemaPath+' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}out+=' } else if ( ';if($isData){out+=' ('+$schemaValue+' !== undefined && typeof '+$schemaValue+' != \'number\') || ';}out+=' '+$exclType+' == \'number\' ? ( ('+$exclusive+' = '+$schemaValue+' === undefined || '+$schemaValueExcl+' '+$op+'= '+$schemaValue+') ? '+$data+' '+$notOp+'= '+$schemaValueExcl+' : '+$data+' '+$notOp+' '+$schemaValue+' ) : ( ('+$exclusive+' = '+$schemaValueExcl+' === true) ? '+$data+' '+$notOp+'= '+$schemaValue+' : '+$data+' '+$notOp+' '+$schemaValue+' ) || '+$data+' !== '+$data+') { var op'+$lvl+' = '+$exclusive+' ? \''+$op+'\' : \''+$op+'=\'; ';if($schema===undefined){$errorKeyword=$exclusiveKeyword;$errSchemaPath=it.errSchemaPath+'/'+$exclusiveKeyword;$schemaValue=$schemaValueExcl;$isData=$isDataExcl;}}else {var $exclIsNumber=typeof $schemaExcl=='number',$opStr=$op;if($exclIsNumber&&$isData){var $opExpr='\''+$opStr+'\'';out+=' if ( ';if($isData){out+=' ('+$schemaValue+' !== undefined && typeof '+$schemaValue+' != \'number\') || ';}out+=' ( '+$schemaValue+' === undefined || '+$schemaExcl+' '+$op+'= '+$schemaValue+' ? '+$data+' '+$notOp+'= '+$schemaExcl+' : '+$data+' '+$notOp+' '+$schemaValue+' ) || '+$data+' !== '+$data+') { ';}else {if($exclIsNumber&&$schema===undefined){$exclusive=true;$errorKeyword=$exclusiveKeyword;$errSchemaPath=it.errSchemaPath+'/'+$exclusiveKeyword;$schemaValue=$schemaExcl;$notOp+='=';}else {if($exclIsNumber)$schemaValue=Math[$isMax?'min':'max']($schemaExcl,$schema);if($schemaExcl===($exclIsNumber?$schemaValue:true)){$exclusive=true;$errorKeyword=$exclusiveKeyword;$errSchemaPath=it.errSchemaPath+'/'+$exclusiveKeyword;$notOp+='=';}else {$exclusive=false;$opStr+='=';}}var $opExpr='\''+$opStr+'\'';out+=' if ( ';if($isData){out+=' ('+$schemaValue+' !== undefined && typeof '+$schemaValue+' != \'number\') || ';}out+=' '+$data+' '+$notOp+' '+$schemaValue+' || '+$data+' !== '+$data+') { ';}}$errorKeyword=$errorKeyword||$keyword;var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+($errorKeyword||'_limit')+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { comparison: '+$opExpr+', limit: '+$schemaValue+', exclusive: '+$exclusive+' } ';if(it.opts.messages!==false){out+=' , message: \'should be '+$opStr+' ';if($isData){out+='\' + '+$schemaValue;}else {out+=''+$schemaValue+'\'';}}if(it.opts.verbose){out+=' , schema: ';if($isData){out+='validate.schema'+$schemaPath;}else {out+=''+$schema;}out+=' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}out+=' } ';if($breakOnError){out+=' else { ';}return out;};var _limitItems=function generate__limitItems(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $errorKeyword;var $data='data'+($dataLvl||'');var $isData=it.opts.$data&&$schema&&$schema.$data,$schemaValue;if($isData){out+=' var schema'+$lvl+' = '+it.util.getData($schema.$data,$dataLvl,it.dataPathArr)+'; ';$schemaValue='schema'+$lvl;}else {$schemaValue=$schema;}if(!($isData||typeof $schema=='number')){throw new Error($keyword+' must be number');}var $op=$keyword=='maxItems'?'>':'<';out+='if ( ';if($isData){out+=' ('+$schemaValue+' !== undefined && typeof '+$schemaValue+' != \'number\') || ';}out+=' '+$data+'.length '+$op+' '+$schemaValue+') { ';var $errorKeyword=$keyword;var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+($errorKeyword||'_limitItems')+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { limit: '+$schemaValue+' } ';if(it.opts.messages!==false){out+=' , message: \'should NOT have ';if($keyword=='maxItems'){out+='more';}else {out+='fewer';}out+=' than ';if($isData){out+='\' + '+$schemaValue+' + \'';}else {out+=''+$schema;}out+=' items\' ';}if(it.opts.verbose){out+=' , schema: ';if($isData){out+='validate.schema'+$schemaPath;}else {out+=''+$schema;}out+=' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}out+='} ';if($breakOnError){out+=' else { ';}return out;};var _limitLength=function generate__limitLength(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $errorKeyword;var $data='data'+($dataLvl||'');var $isData=it.opts.$data&&$schema&&$schema.$data,$schemaValue;if($isData){out+=' var schema'+$lvl+' = '+it.util.getData($schema.$data,$dataLvl,it.dataPathArr)+'; ';$schemaValue='schema'+$lvl;}else {$schemaValue=$schema;}if(!($isData||typeof $schema=='number')){throw new Error($keyword+' must be number');}var $op=$keyword=='maxLength'?'>':'<';out+='if ( ';if($isData){out+=' ('+$schemaValue+' !== undefined && typeof '+$schemaValue+' != \'number\') || ';}if(it.opts.unicode===false){out+=' '+$data+'.length ';}else {out+=' ucs2length('+$data+') ';}out+=' '+$op+' '+$schemaValue+') { ';var $errorKeyword=$keyword;var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+($errorKeyword||'_limitLength')+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { limit: '+$schemaValue+' } ';if(it.opts.messages!==false){out+=' , message: \'should NOT be ';if($keyword=='maxLength'){out+='longer';}else {out+='shorter';}out+=' than ';if($isData){out+='\' + '+$schemaValue+' + \'';}else {out+=''+$schema;}out+=' characters\' ';}if(it.opts.verbose){out+=' , schema: ';if($isData){out+='validate.schema'+$schemaPath;}else {out+=''+$schema;}out+=' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}out+='} ';if($breakOnError){out+=' else { ';}return out;};var _limitProperties=function generate__limitProperties(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $errorKeyword;var $data='data'+($dataLvl||'');var $isData=it.opts.$data&&$schema&&$schema.$data,$schemaValue;if($isData){out+=' var schema'+$lvl+' = '+it.util.getData($schema.$data,$dataLvl,it.dataPathArr)+'; ';$schemaValue='schema'+$lvl;}else {$schemaValue=$schema;}if(!($isData||typeof $schema=='number')){throw new Error($keyword+' must be number');}var $op=$keyword=='maxProperties'?'>':'<';out+='if ( ';if($isData){out+=' ('+$schemaValue+' !== undefined && typeof '+$schemaValue+' != \'number\') || ';}out+=' Object.keys('+$data+').length '+$op+' '+$schemaValue+') { ';var $errorKeyword=$keyword;var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+($errorKeyword||'_limitProperties')+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { limit: '+$schemaValue+' } ';if(it.opts.messages!==false){out+=' , message: \'should NOT have ';if($keyword=='maxProperties'){out+='more';}else {out+='fewer';}out+=' than ';if($isData){out+='\' + '+$schemaValue+' + \'';}else {out+=''+$schema;}out+=' properties\' ';}if(it.opts.verbose){out+=' , schema: ';if($isData){out+='validate.schema'+$schemaPath;}else {out+=''+$schema;}out+=' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}out+='} ';if($breakOnError){out+=' else { ';}return out;};var multipleOf=function generate_multipleOf(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $data='data'+($dataLvl||'');var $isData=it.opts.$data&&$schema&&$schema.$data,$schemaValue;if($isData){out+=' var schema'+$lvl+' = '+it.util.getData($schema.$data,$dataLvl,it.dataPathArr)+'; ';$schemaValue='schema'+$lvl;}else {$schemaValue=$schema;}if(!($isData||typeof $schema=='number')){throw new Error($keyword+' must be number');}out+='var division'+$lvl+';if (';if($isData){out+=' '+$schemaValue+' !== undefined && ( typeof '+$schemaValue+' != \'number\' || ';}out+=' (division'+$lvl+' = '+$data+' / '+$schemaValue+', ';if(it.opts.multipleOfPrecision){out+=' Math.abs(Math.round(division'+$lvl+') - division'+$lvl+') > 1e-'+it.opts.multipleOfPrecision+' ';}else {out+=' division'+$lvl+' !== parseInt(division'+$lvl+') ';}out+=' ) ';if($isData){out+=' ) ';}out+=' ) { ';var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+'multipleOf'+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { multipleOf: '+$schemaValue+' } ';if(it.opts.messages!==false){out+=' , message: \'should be multiple of ';if($isData){out+='\' + '+$schemaValue;}else {out+=''+$schemaValue+'\'';}}if(it.opts.verbose){out+=' , schema: ';if($isData){out+='validate.schema'+$schemaPath;}else {out+=''+$schema;}out+=' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}out+='} ';if($breakOnError){out+=' else { ';}return out;};var not=function generate_not(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $data='data'+($dataLvl||'');var $errs='errs__'+$lvl;var $it=it.util.copy(it);$it.level++;var $nextValid='valid'+$it.level;if(it.opts.strictKeywords?typeof $schema=='object'&&Object.keys($schema).length>0:it.util.schemaHasRules($schema,it.RULES.all)){$it.schema=$schema;$it.schemaPath=$schemaPath;$it.errSchemaPath=$errSchemaPath;out+=' var '+$errs+' = errors; ';var $wasComposite=it.compositeRule;it.compositeRule=$it.compositeRule=true;$it.createErrors=false;var $allErrorsOption;if($it.opts.allErrors){$allErrorsOption=$it.opts.allErrors;$it.opts.allErrors=false;}out+=' '+it.validate($it)+' ';$it.createErrors=true;if($allErrorsOption)$it.opts.allErrors=$allErrorsOption;it.compositeRule=$it.compositeRule=$wasComposite;out+=' if ('+$nextValid+') { ';var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+'not'+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: {} ';if(it.opts.messages!==false){out+=' , message: \'should NOT be valid\' ';}if(it.opts.verbose){out+=' , schema: validate.schema'+$schemaPath+' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}out+=' } else { errors = '+$errs+'; if (vErrors !== null) { if ('+$errs+') vErrors.length = '+$errs+'; else vErrors = null; } ';if(it.opts.allErrors){out+=' } ';}}else {out+=' var err = ';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+'not'+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: {} ';if(it.opts.messages!==false){out+=' , message: \'should NOT be valid\' ';}if(it.opts.verbose){out+=' , schema: validate.schema'+$schemaPath+' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}out+='; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';if($breakOnError){out+=' if (false) { ';}}return out;};var oneOf$1=function generate_oneOf(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $data='data'+($dataLvl||'');var $valid='valid'+$lvl;var $errs='errs__'+$lvl;var $it=it.util.copy(it);var $closingBraces='';$it.level++;var $nextValid='valid'+$it.level;var $currentBaseId=$it.baseId,$prevValid='prevValid'+$lvl,$passingSchemas='passingSchemas'+$lvl;out+='var '+$errs+' = errors , '+$prevValid+' = false , '+$valid+' = false , '+$passingSchemas+' = null; ';var $wasComposite=it.compositeRule;it.compositeRule=$it.compositeRule=true;var arr1=$schema;if(arr1){var $sch,$i=-1,l1=arr1.length-1;while($i0:it.util.schemaHasRules($sch,it.RULES.all)){$it.schema=$sch;$it.schemaPath=$schemaPath+'['+$i+']';$it.errSchemaPath=$errSchemaPath+'/'+$i;out+=' '+it.validate($it)+' ';$it.baseId=$currentBaseId;}else {out+=' var '+$nextValid+' = true; ';}if($i){out+=' if ('+$nextValid+' && '+$prevValid+') { '+$valid+' = false; '+$passingSchemas+' = ['+$passingSchemas+', '+$i+']; } else { ';$closingBraces+='}';}out+=' if ('+$nextValid+') { '+$valid+' = '+$prevValid+' = true; '+$passingSchemas+' = '+$i+'; }';}}it.compositeRule=$it.compositeRule=$wasComposite;out+=''+$closingBraces+'if (!'+$valid+') { var err = ';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+'oneOf'+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { passingSchemas: '+$passingSchemas+' } ';if(it.opts.messages!==false){out+=' , message: \'should match exactly one schema in oneOf\' ';}if(it.opts.verbose){out+=' , schema: validate.schema'+$schemaPath+' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}out+='; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(vErrors); ';}else {out+=' validate.errors = vErrors; return false; ';}}out+='} else { errors = '+$errs+'; if (vErrors !== null) { if ('+$errs+') vErrors.length = '+$errs+'; else vErrors = null; }';if(it.opts.allErrors){out+=' } ';}return out;};var pattern=function generate_pattern(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $data='data'+($dataLvl||'');var $isData=it.opts.$data&&$schema&&$schema.$data,$schemaValue;if($isData){out+=' var schema'+$lvl+' = '+it.util.getData($schema.$data,$dataLvl,it.dataPathArr)+'; ';$schemaValue='schema'+$lvl;}else {$schemaValue=$schema;}var $regexp=$isData?'(new RegExp('+$schemaValue+'))':it.usePattern($schema);out+='if ( ';if($isData){out+=' ('+$schemaValue+' !== undefined && typeof '+$schemaValue+' != \'string\') || ';}out+=' !'+$regexp+'.test('+$data+') ) { ';var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+'pattern'+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { pattern: ';if($isData){out+=''+$schemaValue;}else {out+=''+it.util.toQuotedString($schema);}out+=' } ';if(it.opts.messages!==false){out+=' , message: \'should match pattern "';if($isData){out+='\' + '+$schemaValue+' + \'';}else {out+=''+it.util.escapeQuotes($schema);}out+='"\' ';}if(it.opts.verbose){out+=' , schema: ';if($isData){out+='validate.schema'+$schemaPath;}else {out+=''+it.util.toQuotedString($schema);}out+=' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}out+='} ';if($breakOnError){out+=' else { ';}return out;};var properties$9=function generate_properties(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $data='data'+($dataLvl||'');var $errs='errs__'+$lvl;var $it=it.util.copy(it);var $closingBraces='';$it.level++;var $nextValid='valid'+$it.level;var $key='key'+$lvl,$idx='idx'+$lvl,$dataNxt=$it.dataLevel=it.dataLevel+1,$nextData='data'+$dataNxt,$dataProperties='dataProperties'+$lvl;var $schemaKeys=Object.keys($schema||{}).filter(notProto),$pProperties=it.schema.patternProperties||{},$pPropertyKeys=Object.keys($pProperties).filter(notProto),$aProperties=it.schema.additionalProperties,$someProperties=$schemaKeys.length||$pPropertyKeys.length,$noAdditional=$aProperties===false,$additionalIsSchema=typeof $aProperties=='object'&&Object.keys($aProperties).length,$removeAdditional=it.opts.removeAdditional,$checkAdditional=$noAdditional||$additionalIsSchema||$removeAdditional,$ownProperties=it.opts.ownProperties,$currentBaseId=it.baseId;var $required=it.schema.required;if($required&&!(it.opts.$data&&$required.$data)&&$required.length8){out+=' || validate.schema'+$schemaPath+'.hasOwnProperty('+$key+') ';}else {var arr1=$schemaKeys;if(arr1){var $propertyKey,i1=-1,l1=arr1.length-1;while(i10:it.util.schemaHasRules($sch,it.RULES.all)){var $prop=it.util.getProperty($propertyKey),$passData=$data+$prop,$hasDefault=$useDefaults&&$sch.default!==undefined;$it.schema=$sch;$it.schemaPath=$schemaPath+$prop;$it.errSchemaPath=$errSchemaPath+'/'+it.util.escapeFragment($propertyKey);$it.errorPath=it.util.getPath(it.errorPath,$propertyKey,it.opts.jsonPointers);$it.dataPathArr[$dataNxt]=it.util.toQuotedString($propertyKey);var $code=it.validate($it);$it.baseId=$currentBaseId;if(it.util.varOccurences($code,$nextData)<2){$code=it.util.varReplace($code,$nextData,$passData);var $useData=$passData;}else {var $useData=$nextData;out+=' var '+$nextData+' = '+$passData+'; ';}if($hasDefault){out+=' '+$code+' ';}else {if($requiredHash&&$requiredHash[$propertyKey]){out+=' if ( '+$useData+' === undefined ';if($ownProperties){out+=' || ! Object.prototype.hasOwnProperty.call('+$data+', \''+it.util.escapeQuotes($propertyKey)+'\') ';}out+=') { '+$nextValid+' = false; ';var $currentErrorPath=it.errorPath,$currErrSchemaPath=$errSchemaPath,$missingProperty=it.util.escapeQuotes($propertyKey);if(it.opts._errorDataPathProperty){it.errorPath=it.util.getPath($currentErrorPath,$propertyKey,it.opts.jsonPointers);}$errSchemaPath=it.errSchemaPath+'/required';var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+'required'+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { missingProperty: \''+$missingProperty+'\' } ';if(it.opts.messages!==false){out+=' , message: \'';if(it.opts._errorDataPathProperty){out+='is a required property';}else {out+='should have required property \\\''+$missingProperty+'\\\'';}out+='\' ';}if(it.opts.verbose){out+=' , schema: validate.schema'+$schemaPath+' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}$errSchemaPath=$currErrSchemaPath;it.errorPath=$currentErrorPath;out+=' } else { ';}else {if($breakOnError){out+=' if ( '+$useData+' === undefined ';if($ownProperties){out+=' || ! Object.prototype.hasOwnProperty.call('+$data+', \''+it.util.escapeQuotes($propertyKey)+'\') ';}out+=') { '+$nextValid+' = true; } else { ';}else {out+=' if ('+$useData+' !== undefined ';if($ownProperties){out+=' && Object.prototype.hasOwnProperty.call('+$data+', \''+it.util.escapeQuotes($propertyKey)+'\') ';}out+=' ) { ';}}out+=' '+$code+' } ';}}if($breakOnError){out+=' if ('+$nextValid+') { ';$closingBraces+='}';}}}}if($pPropertyKeys.length){var arr4=$pPropertyKeys;if(arr4){var $pProperty,i4=-1,l4=arr4.length-1;while(i40:it.util.schemaHasRules($sch,it.RULES.all)){$it.schema=$sch;$it.schemaPath=it.schemaPath+'.patternProperties'+it.util.getProperty($pProperty);$it.errSchemaPath=it.errSchemaPath+'/patternProperties/'+it.util.escapeFragment($pProperty);if($ownProperties){out+=' '+$dataProperties+' = '+$dataProperties+' || Object.keys('+$data+'); for (var '+$idx+'=0; '+$idx+'<'+$dataProperties+'.length; '+$idx+'++) { var '+$key+' = '+$dataProperties+'['+$idx+']; ';}else {out+=' for (var '+$key+' in '+$data+') { ';}out+=' if ('+it.usePattern($pProperty)+'.test('+$key+')) { ';$it.errorPath=it.util.getPathExpr(it.errorPath,$key,it.opts.jsonPointers);var $passData=$data+'['+$key+']';$it.dataPathArr[$dataNxt]=$key;var $code=it.validate($it);$it.baseId=$currentBaseId;if(it.util.varOccurences($code,$nextData)<2){out+=' '+it.util.varReplace($code,$nextData,$passData)+' ';}else {out+=' var '+$nextData+' = '+$passData+'; '+$code+' ';}if($breakOnError){out+=' if (!'+$nextValid+') break; ';}out+=' } ';if($breakOnError){out+=' else '+$nextValid+' = true; ';}out+=' } ';if($breakOnError){out+=' if ('+$nextValid+') { ';$closingBraces+='}';}}}}}if($breakOnError){out+=' '+$closingBraces+' if ('+$errs+' == errors) {';}return out;};var propertyNames=function generate_propertyNames(it,$keyword,$ruleType){var out=' ';var $lvl=it.level;var $dataLvl=it.dataLevel;var $schema=it.schema[$keyword];var $schemaPath=it.schemaPath+it.util.getProperty($keyword);var $errSchemaPath=it.errSchemaPath+'/'+$keyword;var $breakOnError=!it.opts.allErrors;var $data='data'+($dataLvl||'');var $errs='errs__'+$lvl;var $it=it.util.copy(it);var $closingBraces='';$it.level++;var $nextValid='valid'+$it.level;out+='var '+$errs+' = errors;';if(it.opts.strictKeywords?typeof $schema=='object'&&Object.keys($schema).length>0:it.util.schemaHasRules($schema,it.RULES.all)){$it.schema=$schema;$it.schemaPath=$schemaPath;$it.errSchemaPath=$errSchemaPath;var $key='key'+$lvl,$idx='idx'+$lvl,$i='i'+$lvl,$invalidName='\' + '+$key+' + \'',$dataNxt=$it.dataLevel=it.dataLevel+1,$nextData='data'+$dataNxt,$dataProperties='dataProperties'+$lvl,$ownProperties=it.opts.ownProperties,$currentBaseId=it.baseId;if($ownProperties){out+=' var '+$dataProperties+' = undefined; ';}if($ownProperties){out+=' '+$dataProperties+' = '+$dataProperties+' || Object.keys('+$data+'); for (var '+$idx+'=0; '+$idx+'<'+$dataProperties+'.length; '+$idx+'++) { var '+$key+' = '+$dataProperties+'['+$idx+']; ';}else {out+=' for (var '+$key+' in '+$data+') { ';}out+=' var startErrs'+$lvl+' = errors; ';var $passData=$key;var $wasComposite=it.compositeRule;it.compositeRule=$it.compositeRule=true;var $code=it.validate($it);$it.baseId=$currentBaseId;if(it.util.varOccurences($code,$nextData)<2){out+=' '+it.util.varReplace($code,$nextData,$passData)+' ';}else {out+=' var '+$nextData+' = '+$passData+'; '+$code+' ';}it.compositeRule=$it.compositeRule=$wasComposite;out+=' if (!'+$nextValid+') { for (var '+$i+'=startErrs'+$lvl+'; '+$i+'0:it.util.schemaHasRules($propertySch,it.RULES.all)))){$required[$required.length]=$property;}}}}else {var $required=$schema;}}if($isData||$required.length){var $currentErrorPath=it.errorPath,$loopRequired=$isData||$required.length>=it.opts.loopRequired,$ownProperties=it.opts.ownProperties;if($breakOnError){out+=' var missing'+$lvl+'; ';if($loopRequired){if(!$isData){out+=' var '+$vSchema+' = validate.schema'+$schemaPath+'; ';}var $i='i'+$lvl,$propertyPath='schema'+$lvl+'['+$i+']',$missingProperty='\' + '+$propertyPath+' + \'';if(it.opts._errorDataPathProperty){it.errorPath=it.util.getPathExpr($currentErrorPath,$propertyPath,it.opts.jsonPointers);}out+=' var '+$valid+' = true; ';if($isData){out+=' if (schema'+$lvl+' === undefined) '+$valid+' = true; else if (!Array.isArray(schema'+$lvl+')) '+$valid+' = false; else {';}out+=' for (var '+$i+' = 0; '+$i+' < '+$vSchema+'.length; '+$i+'++) { '+$valid+' = '+$data+'['+$vSchema+'['+$i+']] !== undefined ';if($ownProperties){out+=' && Object.prototype.hasOwnProperty.call('+$data+', '+$vSchema+'['+$i+']) ';}out+='; if (!'+$valid+') break; } ';if($isData){out+=' } ';}out+=' if (!'+$valid+') { ';var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+'required'+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { missingProperty: \''+$missingProperty+'\' } ';if(it.opts.messages!==false){out+=' , message: \'';if(it.opts._errorDataPathProperty){out+='is a required property';}else {out+='should have required property \\\''+$missingProperty+'\\\'';}out+='\' ';}if(it.opts.verbose){out+=' , schema: validate.schema'+$schemaPath+' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}out+=' } else { ';}else {out+=' if ( ';var arr2=$required;if(arr2){var $propertyKey,$i=-1,l2=arr2.length-1;while($i 1) { ';var $itemType=it.schema.items&&it.schema.items.type,$typeIsArray=Array.isArray($itemType);if(!$itemType||$itemType=='object'||$itemType=='array'||$typeIsArray&&($itemType.indexOf('object')>=0||$itemType.indexOf('array')>=0)){out+=' outer: for (;i--;) { for (j = i; j--;) { if (equal('+$data+'[i], '+$data+'[j])) { '+$valid+' = false; break outer; } } } ';}else {out+=' var itemIndices = {}, item; for (;i--;) { var item = '+$data+'[i]; ';var $method='checkDataType'+($typeIsArray?'s':'');out+=' if ('+it.util[$method]($itemType,'item',it.opts.strictNumbers,true)+') continue; ';if($typeIsArray){out+=' if (typeof item == \'string\') item = \'"\' + item; ';}out+=' if (typeof itemIndices[item] == \'number\') { '+$valid+' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';}out+=' } ';if($isData){out+=' } ';}out+=' if (!'+$valid+') { ';var $$outStack=$$outStack||[];$$outStack.push(out);out='';/* istanbul ignore else */if(it.createErrors!==false){out+=' { keyword: \''+'uniqueItems'+'\' , dataPath: (dataPath || \'\') + '+it.errorPath+' , schemaPath: '+it.util.toQuotedString($errSchemaPath)+' , params: { i: i, j: j } ';if(it.opts.messages!==false){out+=' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' ';}if(it.opts.verbose){out+=' , schema: ';if($isData){out+='validate.schema'+$schemaPath;}else {out+=''+$schema;}out+=' , parentSchema: validate.schema'+it.schemaPath+' , data: '+$data+' ';}out+=' } ';}else {out+=' {} ';}var __err=out;out=$$outStack.pop();if(!it.compositeRule&&$breakOnError){/* istanbul ignore if */if(it.async){out+=' throw new ValidationError(['+__err+']); ';}else {out+=' validate.errors = ['+__err+']; return false; ';}}else {out+=' var err = '+__err+'; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';}out+=' } ';if($breakOnError){out+=' else { ';}}else {if($breakOnError){out+=' if (true) { ';}}return out;};//all requires must be explicit because browserify won't work with dynamic requires
-var dotjs={'$ref':ref$1,allOf:allOf,anyOf:anyOf,'$comment':comment,const:_const,contains:contains,dependencies:dependencies$1,'enum':_enum,format:format$3,'if':_if,items:items,maximum:_limit,minimum:_limit,maxItems:_limitItems,minItems:_limitItems,maxLength:_limitLength,minLength:_limitLength,maxProperties:_limitProperties,minProperties:_limitProperties,multipleOf:multipleOf,not:not,oneOf:oneOf$1,pattern:pattern,properties:properties$9,propertyNames:propertyNames,required:required$7,uniqueItems:uniqueItems,validate:validate$1};var toHash=util.toHash;var rules=function rules(){var RULES=[{type:'number',rules:[{'maximum':['exclusiveMaximum']},{'minimum':['exclusiveMinimum']},'multipleOf','format']},{type:'string',rules:['maxLength','minLength','pattern','format']},{type:'array',rules:['maxItems','minItems','items','contains','uniqueItems']},{type:'object',rules:['maxProperties','minProperties','required','dependencies','propertyNames',{'properties':['additionalProperties','patternProperties']}]},{rules:['$ref','const','enum','not','anyOf','oneOf','allOf','if']}];var ALL=['type','$comment'];var KEYWORDS=['$schema','$id','id','$data','$async','title','description','default','definitions','examples','readOnly','writeOnly','contentMediaType','contentEncoding','additionalItems','then','else'];var TYPES=['number','integer','string','array','object','boolean','null'];RULES.all=toHash(ALL);RULES.types=toHash(TYPES);RULES.forEach(function(group){group.rules=group.rules.map(function(keyword){var implKeywords;if(typeof keyword=='object'){var key=Object.keys(keyword)[0];implKeywords=keyword[key];keyword=key;implKeywords.forEach(function(k){ALL.push(k);RULES.all[k]=true;});}ALL.push(keyword);var rule=RULES.all[keyword]={keyword:keyword,code:dotjs[keyword],implements:implKeywords};return rule;});RULES.all.$comment={keyword:'$comment',code:dotjs.$comment};if(group.type)RULES.types[group.type]=group;});RULES.keywords=toHash(ALL.concat(KEYWORDS));RULES.custom={};return RULES;};var KEYWORDS=['multipleOf','maximum','exclusiveMaximum','minimum','exclusiveMinimum','maxLength','minLength','pattern','additionalItems','maxItems','minItems','uniqueItems','maxProperties','minProperties','required','additionalProperties','enum','format','const'];var data=function(metaSchema,keywordsJsonPointers){for(var i=0;i} errors optional array of validation errors, if not passed errors from the instance are used.
- * @param {Object} options optional options with properties `separator` and `dataVar`.
- * @return {String} human readable string with all errors descriptions
- */function errorsText(errors,options){errors=errors||this.errors;if(!errors)return 'No errors';options=options||{};var separator=options.separator===undefined?', ':options.separator;var dataVar=options.dataVar===undefined?'data':options.dataVar;var text='';for(var i=0;i0&&existing.length>m){existing.warned=true;var w=new Error('Possible EventEmitter memory leak detected. '+existing.length+' '+type+' listeners added. '+'Use emitter.setMaxListeners() to increase limit');w.name='MaxListenersExceededWarning';w.emitter=target;w.type=type;w.count=existing.length;emitWarning(w);}}}return target;}function emitWarning(e){typeof console.warn==='function'?console.warn(e):console.log(e);}EventEmitter.prototype.addListener=function addListener(type,listener){return _addListener(this,type,listener,false);};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.prependListener=function prependListener(type,listener){return _addListener(this,type,listener,true);};function _onceWrap(target,type,listener){var fired=false;function g(){target.removeListener(type,g);if(!fired){fired=true;listener.apply(target,arguments);}}g.listener=listener;return g;}EventEmitter.prototype.once=function once(type,listener){if(typeof listener!=='function')throw new TypeError('"listener" argument must be a function');this.on(type,_onceWrap(this,type,listener));return this;};EventEmitter.prototype.prependOnceListener=function prependOnceListener(type,listener){if(typeof listener!=='function')throw new TypeError('"listener" argument must be a function');this.prependListener(type,_onceWrap(this,type,listener));return this;};// emits a 'removeListener' event iff the listener was removed
-EventEmitter.prototype.removeListener=function removeListener(type,listener){var list,events,position,i,originalListener;if(typeof listener!=='function')throw new TypeError('"listener" argument must be a function');events=this._events;if(!events)return this;list=events[type];if(!list)return this;if(list===listener||list.listener&&list.listener===listener){if(--this._eventsCount===0)this._events=new EventHandlers();else {delete events[type];if(events.removeListener)this.emit('removeListener',type,list.listener||listener);}}else if(typeof list!=='function'){position=-1;for(i=list.length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){originalListener=list[i].listener;position=i;break;}}if(position<0)return this;if(list.length===1){list[0]=undefined;if(--this._eventsCount===0){this._events=new EventHandlers();return this;}else {delete events[type];}}else {spliceOne(list,position);}if(events.removeListener)this.emit('removeListener',type,originalListener||listener);}return this;};EventEmitter.prototype.removeAllListeners=function removeAllListeners(type){var listeners,events;events=this._events;if(!events)return this;// not listening for removeListener, no need to emit
-if(!events.removeListener){if(arguments.length===0){this._events=new EventHandlers();this._eventsCount=0;}else if(events[type]){if(--this._eventsCount===0)this._events=new EventHandlers();else delete events[type];}return this;}// emit removeListener for all listeners on all events
-if(arguments.length===0){var keys=Object.keys(events);for(var i=0,key;i0?Reflect.ownKeys(this._events):[];};// About 1.5x faster than the two-arg version of Array#splice().
-function spliceOne(list,index){for(var i=index,k=i+1,n=list.length;k0){throw new Error('Invalid string. Length must be a multiple of 4');}// the number of equal signs (place holders)
-// if there are two placeholders, than the two characters before it
-// represent one byte
-// if there is only one, then the three characters before it represent 2 bytes
-// this is just a cheap hack to not do indexOf twice
-placeHolders=b64[len-2]==='='?2:b64[len-1]==='='?1:0;// base64 is 4/3 + up to two characters of the original data
-arr=new Arr(len*3/4-placeHolders);// if there are placeholders, only get up to the last complete 4 chars
-l=placeHolders>0?len-4:len;var L=0;for(i=0,j=0;i>16&0xFF;arr[L++]=tmp>>8&0xFF;arr[L++]=tmp&0xFF;}if(placeHolders===2){tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4;arr[L++]=tmp&0xFF;}else if(placeHolders===1){tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2;arr[L++]=tmp>>8&0xFF;arr[L++]=tmp&0xFF;}return arr;}function tripletToBase64(num){return lookup[num>>18&0x3F]+lookup[num>>12&0x3F]+lookup[num>>6&0x3F]+lookup[num&0x3F];}function encodeChunk(uint8,start,end){var tmp;var output=[];for(var i=start;ilen2?len2:i+maxChunkLength));}// pad the end with zeros, but make sure to not forget the extra bytes
-if(extraBytes===1){tmp=uint8[len-1];output+=lookup[tmp>>2];output+=lookup[tmp<<4&0x3F];output+='==';}else if(extraBytes===2){tmp=(uint8[len-2]<<8)+uint8[len-1];output+=lookup[tmp>>10];output+=lookup[tmp>>4&0x3F];output+=lookup[tmp<<2&0x3F];output+='=';}parts.push(output);return parts.join('');}function read(buffer,offset,isLE,mLen,nBytes){var e,m;var eLen=nBytes*8-mLen-1;var eMax=(1<>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias;}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity;}else {m=m+Math.pow(2,mLen);e=e-eBias;}return (s?-1:1)*m*Math.pow(2,e-mLen);}function write(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax;}else {e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2;}if(e+eBias>=1){value+=rt/c;}else {value+=rt*Math.pow(2,1-eBias);}if(value*c>=2){e++;c/=2;}if(e+eBias>=eMax){m=0;e=eMax;}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias;}else {m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0;}}for(;mLen>=8;buffer[offset+i]=m&0xff,i+=d,m/=256,mLen-=8){}e=e<0;buffer[offset+i]=e&0xff,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128;}var toString={}.toString;var isArray$2=Array.isArray||function(arr){return toString.call(arr)=='[object Array]';};/*!
- * The buffer module from node.js, for the browser.
- *
- * @author Feross Aboukhadijeh
- * @license MIT
- */var INSPECT_MAX_BYTES=50;/**
- * If `Buffer.TYPED_ARRAY_SUPPORT`:
- * === true Use Uint8Array implementation (fastest)
- * === false Use Object implementation (most compatible, even IE6)
- *
- * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
- * Opera 11.6+, iOS 4.2+.
- *
- * Due to various browser bugs, sometimes the Object implementation will be used even
- * when the browser supports typed arrays.
- *
- * Note:
- *
- * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
- * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
- *
- * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
- *
- * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
- * incorrect length in some situations.
-
- * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
- * get the Object implementation, which is slower but behaves correctly.
- */Buffer$1.TYPED_ARRAY_SUPPORT=global$1.TYPED_ARRAY_SUPPORT!==undefined?global$1.TYPED_ARRAY_SUPPORT:true;/*
- * Export kMaxLength after typed array support is determined.
- */var _kMaxLength=kMaxLength();function kMaxLength(){return Buffer$1.TYPED_ARRAY_SUPPORT?0x7fffffff:0x3fffffff;}function createBuffer(that,length){if(kMaxLength()=kMaxLength()){throw new RangeError('Attempt to allocate Buffer larger than maximum '+'size: 0x'+kMaxLength().toString(16)+' bytes');}return length|0;}function SlowBuffer(length){if(+length!=length){// eslint-disable-line eqeqeq
-length=0;}return Buffer$1.alloc(+length);}Buffer$1.isBuffer=isBuffer;function internalIsBuffer(b){return !!(b!=null&&b._isBuffer);}Buffer$1.compare=function compare(a,b){if(!internalIsBuffer(a)||!internalIsBuffer(b)){throw new TypeError('Arguments must be Buffers');}if(a===b)return 0;var x=a.length;var y=b.length;for(var i=0,len=Math.min(x,y);i>>1;case'base64':return base64ToBytes(string).length;default:if(loweredCase)return utf8ToBytes(string).length;// assume utf8
-encoding=(''+encoding).toLowerCase();loweredCase=true;}}}Buffer$1.byteLength=byteLength;function slowToString(encoding,start,end){var loweredCase=false;// No need to verify that "this.length <= MAX_UINT32" since it's a read-only
-// property of a typed array.
-// This behaves neither like String nor Uint8Array in that we set start/end
-// to their upper/lower bounds if the value passed is out of range.
-// undefined is handled specially as per ECMA-262 6th Edition,
-// Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
-if(start===undefined||start<0){start=0;}// Return early if start > this.length. Done here to prevent potential uint32
-// coercion fail below.
-if(start>this.length){return '';}if(end===undefined||end>this.length){end=this.length;}if(end<=0){return '';}// Force coersion to uint32. This will also coerce falsey/NaN values to 0.
-end>>>=0;start>>>=0;if(end<=start){return '';}if(!encoding)encoding='utf8';while(true){switch(encoding){case'hex':return hexSlice(this,start,end);case'utf8':case'utf-8':return utf8Slice(this,start,end);case'ascii':return asciiSlice(this,start,end);case'latin1':case'binary':return latin1Slice(this,start,end);case'base64':return base64Slice(this,start,end);case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return utf16leSlice(this,start,end);default:if(loweredCase)throw new TypeError('Unknown encoding: '+encoding);encoding=(encoding+'').toLowerCase();loweredCase=true;}}}// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
-// Buffer instances.
-Buffer$1.prototype._isBuffer=true;function swap(b,n,m){var i=b[n];b[n]=b[m];b[m]=i;}Buffer$1.prototype.swap16=function swap16(){var len=this.length;if(len%2!==0){throw new RangeError('Buffer size must be a multiple of 16-bits');}for(var i=0;i0){str=this.toString('hex',0,max).match(/.{2}/g).join(' ');if(this.length>max)str+=' ... ';}return '';};Buffer$1.prototype.compare=function compare(target,start,end,thisStart,thisEnd){if(!internalIsBuffer(target)){throw new TypeError('Argument must be a Buffer');}if(start===undefined){start=0;}if(end===undefined){end=target?target.length:0;}if(thisStart===undefined){thisStart=0;}if(thisEnd===undefined){thisEnd=this.length;}if(start<0||end>target.length||thisStart<0||thisEnd>this.length){throw new RangeError('out of range index');}if(thisStart>=thisEnd&&start>=end){return 0;}if(thisStart>=thisEnd){return -1;}if(start>=end){return 1;}start>>>=0;end>>>=0;thisStart>>>=0;thisEnd>>>=0;if(this===target)return 0;var x=thisEnd-thisStart;var y=end-start;var len=Math.min(x,y);var thisCopy=this.slice(thisStart,thisEnd);var targetCopy=target.slice(start,end);for(var i=0;i= `byteOffset`,
-// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
-//
-// Arguments:
-// - buffer - a Buffer to search
-// - val - a string, Buffer, or number
-// - byteOffset - an index into `buffer`; will be clamped to an int32
-// - encoding - an optional encoding, relevant is val is a string
-// - dir - true for indexOf, false for lastIndexOf
-function bidirectionalIndexOf(buffer,val,byteOffset,encoding,dir){// Empty buffer means no match
-if(buffer.length===0)return -1;// Normalize byteOffset
-if(typeof byteOffset==='string'){encoding=byteOffset;byteOffset=0;}else if(byteOffset>0x7fffffff){byteOffset=0x7fffffff;}else if(byteOffset<-0x80000000){byteOffset=-0x80000000;}byteOffset=+byteOffset;// Coerce to Number.
-if(isNaN(byteOffset)){// byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
-byteOffset=dir?0:buffer.length-1;}// Normalize byteOffset: negative offsets start from the end of the buffer
-if(byteOffset<0)byteOffset=buffer.length+byteOffset;if(byteOffset>=buffer.length){if(dir)return -1;else byteOffset=buffer.length-1;}else if(byteOffset<0){if(dir)byteOffset=0;else return -1;}// Normalize val
-if(typeof val==='string'){val=Buffer$1.from(val,encoding);}// Finally, search either indexOf (if dir is true) or lastIndexOf
-if(internalIsBuffer(val)){// Special case: looking for empty string/buffer always fails
-if(val.length===0){return -1;}return arrayIndexOf(buffer,val,byteOffset,encoding,dir);}else if(typeof val==='number'){val=val&0xFF;// Search for a byte value [0-255]
-if(Buffer$1.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf==='function'){if(dir){return Uint8Array.prototype.indexOf.call(buffer,val,byteOffset);}else {return Uint8Array.prototype.lastIndexOf.call(buffer,val,byteOffset);}}return arrayIndexOf(buffer,[val],byteOffset,encoding,dir);}throw new TypeError('val must be string, number or Buffer');}function arrayIndexOf(arr,val,byteOffset,encoding,dir){var indexSize=1;var arrLength=arr.length;var valLength=val.length;if(encoding!==undefined){encoding=String(encoding).toLowerCase();if(encoding==='ucs2'||encoding==='ucs-2'||encoding==='utf16le'||encoding==='utf-16le'){if(arr.length<2||val.length<2){return -1;}indexSize=2;arrLength/=2;valLength/=2;byteOffset/=2;}}function read(buf,i){if(indexSize===1){return buf[i];}else {return buf.readUInt16BE(i*indexSize);}}var i;if(dir){var foundIndex=-1;for(i=byteOffset;iarrLength)byteOffset=arrLength-valLength;for(i=byteOffset;i>=0;i--){var found=true;for(var j=0;jremaining){length=remaining;}}// must be an even number of digits
-var strLen=string.length;if(strLen%2!==0)throw new TypeError('Invalid hex string');if(length>strLen/2){length=strLen/2;}for(var i=0;iremaining)length=remaining;if(string.length>0&&(length<0||offset<0)||offset>this.length){throw new RangeError('Attempt to write outside buffer bounds');}if(!encoding)encoding='utf8';var loweredCase=false;for(;;){switch(encoding){case'hex':return hexWrite(this,string,offset,length);case'utf8':case'utf-8':return utf8Write(this,string,offset,length);case'ascii':return asciiWrite(this,string,offset,length);case'latin1':case'binary':return latin1Write(this,string,offset,length);case'base64':// Warning: maxLength not taken into account in base64Write
-return base64Write(this,string,offset,length);case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return ucs2Write(this,string,offset,length);default:if(loweredCase)throw new TypeError('Unknown encoding: '+encoding);encoding=(''+encoding).toLowerCase();loweredCase=true;}}};Buffer$1.prototype.toJSON=function toJSON(){return {type:'Buffer',data:Array.prototype.slice.call(this._arr||this,0)};};function base64Slice(buf,start,end){if(start===0&&end===buf.length){return fromByteArray(buf);}else {return fromByteArray(buf.slice(start,end));}}function utf8Slice(buf,start,end){end=Math.min(buf.length,end);var res=[];var i=start;while(i0xEF?4:firstByte>0xDF?3:firstByte>0xBF?2:1;if(i+bytesPerSequence<=end){var secondByte,thirdByte,fourthByte,tempCodePoint;switch(bytesPerSequence){case 1:if(firstByte<0x80){codePoint=firstByte;}break;case 2:secondByte=buf[i+1];if((secondByte&0xC0)===0x80){tempCodePoint=(firstByte&0x1F)<<0x6|secondByte&0x3F;if(tempCodePoint>0x7F){codePoint=tempCodePoint;}}break;case 3:secondByte=buf[i+1];thirdByte=buf[i+2];if((secondByte&0xC0)===0x80&&(thirdByte&0xC0)===0x80){tempCodePoint=(firstByte&0xF)<<0xC|(secondByte&0x3F)<<0x6|thirdByte&0x3F;if(tempCodePoint>0x7FF&&(tempCodePoint<0xD800||tempCodePoint>0xDFFF)){codePoint=tempCodePoint;}}break;case 4:secondByte=buf[i+1];thirdByte=buf[i+2];fourthByte=buf[i+3];if((secondByte&0xC0)===0x80&&(thirdByte&0xC0)===0x80&&(fourthByte&0xC0)===0x80){tempCodePoint=(firstByte&0xF)<<0x12|(secondByte&0x3F)<<0xC|(thirdByte&0x3F)<<0x6|fourthByte&0x3F;if(tempCodePoint>0xFFFF&&tempCodePoint<0x110000){codePoint=tempCodePoint;}}}}if(codePoint===null){// we did not generate a valid codePoint so insert a
-// replacement char (U+FFFD) and advance only 1 byte
-codePoint=0xFFFD;bytesPerSequence=1;}else if(codePoint>0xFFFF){// encode to utf16 (surrogate pair dance)
-codePoint-=0x10000;res.push(codePoint>>>10&0x3FF|0xD800);codePoint=0xDC00|codePoint&0x3FF;}res.push(codePoint);i+=bytesPerSequence;}return decodeCodePointsArray(res);}// Based on http://stackoverflow.com/a/22747272/680742, the browser with
-// the lowest limit is Chrome, with 0x10000 args.
-// We go 1 magnitude less, for safety
-var MAX_ARGUMENTS_LENGTH=0x1000;function decodeCodePointsArray(codePoints){var len=codePoints.length;if(len<=MAX_ARGUMENTS_LENGTH){return String.fromCharCode.apply(String,codePoints);// avoid extra slice()
-}// Decode in chunks to avoid "call stack size exceeded".
-var res='';var i=0;while(ilen)end=len;var out='';for(var i=start;ilen){start=len;}if(end<0){end+=len;if(end<0)end=0;}else if(end>len){end=len;}if(endlength)throw new RangeError('Trying to access beyond buffer length');}Buffer$1.prototype.readUIntLE=function readUIntLE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i0&&(mul*=0x100)){val+=this[offset+--byteLength]*mul;}return val;};Buffer$1.prototype.readUInt8=function readUInt8(offset,noAssert){if(!noAssert)checkOffset(offset,1,this.length);return this[offset];};Buffer$1.prototype.readUInt16LE=function readUInt16LE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);return this[offset]|this[offset+1]<<8;};Buffer$1.prototype.readUInt16BE=function readUInt16BE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);return this[offset]<<8|this[offset+1];};Buffer$1.prototype.readUInt32LE=function readUInt32LE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return (this[offset]|this[offset+1]<<8|this[offset+2]<<16)+this[offset+3]*0x1000000;};Buffer$1.prototype.readUInt32BE=function readUInt32BE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]*0x1000000+(this[offset+1]<<16|this[offset+2]<<8|this[offset+3]);};Buffer$1.prototype.readIntLE=function readIntLE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i=mul)val-=Math.pow(2,8*byteLength);return val;};Buffer$1.prototype.readIntBE=function readIntBE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var i=byteLength;var mul=1;var val=this[offset+--i];while(i>0&&(mul*=0x100)){val+=this[offset+--i]*mul;}mul*=0x80;if(val>=mul)val-=Math.pow(2,8*byteLength);return val;};Buffer$1.prototype.readInt8=function readInt8(offset,noAssert){if(!noAssert)checkOffset(offset,1,this.length);if(!(this[offset]&0x80))return this[offset];return (0xff-this[offset]+1)*-1;};Buffer$1.prototype.readInt16LE=function readInt16LE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset]|this[offset+1]<<8;return val&0x8000?val|0xFFFF0000:val;};Buffer$1.prototype.readInt16BE=function readInt16BE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset+1]|this[offset]<<8;return val&0x8000?val|0xFFFF0000:val;};Buffer$1.prototype.readInt32LE=function readInt32LE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]|this[offset+1]<<8|this[offset+2]<<16|this[offset+3]<<24;};Buffer$1.prototype.readInt32BE=function readInt32BE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]<<24|this[offset+1]<<16|this[offset+2]<<8|this[offset+3];};Buffer$1.prototype.readFloatLE=function readFloatLE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return read(this,offset,true,23,4);};Buffer$1.prototype.readFloatBE=function readFloatBE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return read(this,offset,false,23,4);};Buffer$1.prototype.readDoubleLE=function readDoubleLE(offset,noAssert){if(!noAssert)checkOffset(offset,8,this.length);return read(this,offset,true,52,8);};Buffer$1.prototype.readDoubleBE=function readDoubleBE(offset,noAssert){if(!noAssert)checkOffset(offset,8,this.length);return read(this,offset,false,52,8);};function checkInt(buf,value,offset,ext,max,min){if(!internalIsBuffer(buf))throw new TypeError('"buffer" argument must be a Buffer instance');if(value>max||valuebuf.length)throw new RangeError('Index out of range');}Buffer$1.prototype.writeUIntLE=function writeUIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;byteLength=byteLength|0;if(!noAssert){var maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0);}var mul=1;var i=0;this[offset]=value&0xFF;while(++i=0&&(mul*=0x100)){this[offset+i]=value/mul&0xFF;}return offset+byteLength;};Buffer$1.prototype.writeUInt8=function writeUInt8(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,1,0xff,0);if(!Buffer$1.TYPED_ARRAY_SUPPORT)value=Math.floor(value);this[offset]=value&0xff;return offset+1;};function objectWriteUInt16(buf,value,offset,littleEndian){if(value<0)value=0xffff+value+1;for(var i=0,j=Math.min(buf.length-offset,2);i>>(littleEndian?i:1-i)*8;}}Buffer$1.prototype.writeUInt16LE=function writeUInt16LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,0xffff,0);if(Buffer$1.TYPED_ARRAY_SUPPORT){this[offset]=value&0xff;this[offset+1]=value>>>8;}else {objectWriteUInt16(this,value,offset,true);}return offset+2;};Buffer$1.prototype.writeUInt16BE=function writeUInt16BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,0xffff,0);if(Buffer$1.TYPED_ARRAY_SUPPORT){this[offset]=value>>>8;this[offset+1]=value&0xff;}else {objectWriteUInt16(this,value,offset,false);}return offset+2;};function objectWriteUInt32(buf,value,offset,littleEndian){if(value<0)value=0xffffffff+value+1;for(var i=0,j=Math.min(buf.length-offset,4);i>>(littleEndian?i:3-i)*8&0xff;}}Buffer$1.prototype.writeUInt32LE=function writeUInt32LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,0xffffffff,0);if(Buffer$1.TYPED_ARRAY_SUPPORT){this[offset+3]=value>>>24;this[offset+2]=value>>>16;this[offset+1]=value>>>8;this[offset]=value&0xff;}else {objectWriteUInt32(this,value,offset,true);}return offset+4;};Buffer$1.prototype.writeUInt32BE=function writeUInt32BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,0xffffffff,0);if(Buffer$1.TYPED_ARRAY_SUPPORT){this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&0xff;}else {objectWriteUInt32(this,value,offset,false);}return offset+4;};Buffer$1.prototype.writeIntLE=function writeIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit);}var i=0;var mul=1;var sub=0;this[offset]=value&0xFF;while(++i>0)-sub&0xFF;}return offset+byteLength;};Buffer$1.prototype.writeIntBE=function writeIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit);}var i=byteLength-1;var mul=1;var sub=0;this[offset+i]=value&0xFF;while(--i>=0&&(mul*=0x100)){if(value<0&&sub===0&&this[offset+i+1]!==0){sub=1;}this[offset+i]=(value/mul>>0)-sub&0xFF;}return offset+byteLength;};Buffer$1.prototype.writeInt8=function writeInt8(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,1,0x7f,-0x80);if(!Buffer$1.TYPED_ARRAY_SUPPORT)value=Math.floor(value);if(value<0)value=0xff+value+1;this[offset]=value&0xff;return offset+1;};Buffer$1.prototype.writeInt16LE=function writeInt16LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,0x7fff,-0x8000);if(Buffer$1.TYPED_ARRAY_SUPPORT){this[offset]=value&0xff;this[offset+1]=value>>>8;}else {objectWriteUInt16(this,value,offset,true);}return offset+2;};Buffer$1.prototype.writeInt16BE=function writeInt16BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,0x7fff,-0x8000);if(Buffer$1.TYPED_ARRAY_SUPPORT){this[offset]=value>>>8;this[offset+1]=value&0xff;}else {objectWriteUInt16(this,value,offset,false);}return offset+2;};Buffer$1.prototype.writeInt32LE=function writeInt32LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,0x7fffffff,-0x80000000);if(Buffer$1.TYPED_ARRAY_SUPPORT){this[offset]=value&0xff;this[offset+1]=value>>>8;this[offset+2]=value>>>16;this[offset+3]=value>>>24;}else {objectWriteUInt32(this,value,offset,true);}return offset+4;};Buffer$1.prototype.writeInt32BE=function writeInt32BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,0x7fffffff,-0x80000000);if(value<0)value=0xffffffff+value+1;if(Buffer$1.TYPED_ARRAY_SUPPORT){this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&0xff;}else {objectWriteUInt32(this,value,offset,false);}return offset+4;};function checkIEEE754(buf,value,offset,ext,max,min){if(offset+ext>buf.length)throw new RangeError('Index out of range');if(offset<0)throw new RangeError('Index out of range');}function writeFloat(buf,value,offset,littleEndian,noAssert){if(!noAssert){checkIEEE754(buf,value,offset,4);}write(buf,value,offset,littleEndian,23,4);return offset+4;}Buffer$1.prototype.writeFloatLE=function writeFloatLE(value,offset,noAssert){return writeFloat(this,value,offset,true,noAssert);};Buffer$1.prototype.writeFloatBE=function writeFloatBE(value,offset,noAssert){return writeFloat(this,value,offset,false,noAssert);};function writeDouble(buf,value,offset,littleEndian,noAssert){if(!noAssert){checkIEEE754(buf,value,offset,8);}write(buf,value,offset,littleEndian,52,8);return offset+8;}Buffer$1.prototype.writeDoubleLE=function writeDoubleLE(value,offset,noAssert){return writeDouble(this,value,offset,true,noAssert);};Buffer$1.prototype.writeDoubleBE=function writeDoubleBE(value,offset,noAssert){return writeDouble(this,value,offset,false,noAssert);};// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
-Buffer$1.prototype.copy=function copy(target,targetStart,start,end){if(!start)start=0;if(!end&&end!==0)end=this.length;if(targetStart>=target.length)targetStart=target.length;if(!targetStart)targetStart=0;if(end>0&&end=this.length)throw new RangeError('sourceStart out of bounds');if(end<0)throw new RangeError('sourceEnd out of bounds');// Are we oob?
-if(end>this.length)end=this.length;if(target.length-targetStart=0;--i){target[i+targetStart]=this[i+start];}}else if(len<1000||!Buffer$1.TYPED_ARRAY_SUPPORT){// ascending copy from start
-for(i=0;i>>0;end=end===undefined?this.length:end>>>0;if(!val)val=0;var i;if(typeof val==='number'){for(i=start;i0xD7FF&&codePoint<0xE000){// last char was a lead
-if(!leadSurrogate){// no lead yet
-if(codePoint>0xDBFF){// unexpected trail
-if((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD);continue;}else if(i+1===length){// unpaired lead
-if((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD);continue;}// valid lead
-leadSurrogate=codePoint;continue;}// 2 leads in a row
-if(codePoint<0xDC00){if((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD);leadSurrogate=codePoint;continue;}// valid surrogate pair
-codePoint=(leadSurrogate-0xD800<<10|codePoint-0xDC00)+0x10000;}else if(leadSurrogate){// valid bmp char, but last char was a lead
-if((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD);}leadSurrogate=null;// encode utf8
-if(codePoint<0x80){if((units-=1)<0)break;bytes.push(codePoint);}else if(codePoint<0x800){if((units-=2)<0)break;bytes.push(codePoint>>0x6|0xC0,codePoint&0x3F|0x80);}else if(codePoint<0x10000){if((units-=3)<0)break;bytes.push(codePoint>>0xC|0xE0,codePoint>>0x6&0x3F|0x80,codePoint&0x3F|0x80);}else if(codePoint<0x110000){if((units-=4)<0)break;bytes.push(codePoint>>0x12|0xF0,codePoint>>0xC&0x3F|0x80,codePoint>>0x6&0x3F|0x80,codePoint&0x3F|0x80);}else {throw new Error('Invalid code point');}}return bytes;}function asciiToBytes(str){var byteArray=[];for(var i=0;i>8;lo=c%256;byteArray.push(lo);byteArray.push(hi);}return byteArray;}function base64ToBytes(str){return toByteArray(base64clean(str));}function blitBuffer(src,dst,offset,length){for(var i=0;i=dst.length||i>=src.length)break;dst[i+offset]=src[i];}return i;}function isnan(val){return val!==val;// eslint-disable-line no-self-compare
-}// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence
-// The _isBuffer check is for Safari 5-7 support, because it's missing
-// Object.prototype.constructor. Remove this eventually
-function isBuffer(obj){return obj!=null&&(!!obj._isBuffer||isFastBuffer(obj)||isSlowBuffer(obj));}function isFastBuffer(obj){return !!obj.constructor&&typeof obj.constructor.isBuffer==='function'&&obj.constructor.isBuffer(obj);}// For Node v0.10 support. Remove this eventually.
-function isSlowBuffer(obj){return typeof obj.readFloatLE==='function'&&typeof obj.slice==='function'&&isFastBuffer(obj.slice(0,0));}var bufferEs6=/*#__PURE__*/Object.freeze({__proto__:null,Buffer:Buffer$1,INSPECT_MAX_BYTES:INSPECT_MAX_BYTES,SlowBuffer:SlowBuffer,isBuffer:isBuffer,kMaxLength:_kMaxLength});var inherits;if(typeof Object.create==='function'){inherits=function inherits(ctor,superCtor){// implementation from standard node.js 'util' module
-ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}});};}else {inherits=function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor();ctor.prototype.constructor=ctor;};}var inherits$1=inherits;var formatRegExp=/%[sdj%]/g;function format$2(f){if(!isString(f)){var objects=[];for(var i=0;i=len)return x;switch(x){case'%s':return String(args[i++]);case'%d':return Number(args[i++]);case'%j':try{return JSON.stringify(args[i++]);}catch(_){return '[Circular]';}default:return x;}});for(var x=args[i];i=3)ctx.depth=arguments[2];if(arguments.length>=4)ctx.colors=arguments[3];if(isBoolean$2(opts)){// legacy...
-ctx.showHidden=opts;}else if(opts){// got an "options" object
-_extend(ctx,opts);}// set default options
-if(isUndefined$3(ctx.showHidden))ctx.showHidden=false;if(isUndefined$3(ctx.depth))ctx.depth=2;if(isUndefined$3(ctx.colors))ctx.colors=false;if(isUndefined$3(ctx.customInspect))ctx.customInspect=true;if(ctx.colors)ctx.stylize=stylizeWithColor;return formatValue(ctx,obj,ctx.depth);}// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
-inspect$1.colors={'bold':[1,22],'italic':[3,23],'underline':[4,24],'inverse':[7,27],'white':[37,39],'grey':[90,39],'black':[30,39],'blue':[34,39],'cyan':[36,39],'green':[32,39],'magenta':[35,39],'red':[31,39],'yellow':[33,39]};// Don't use 'blue' not visible on cmd.exe
-inspect$1.styles={'special':'cyan','number':'yellow','boolean':'yellow','undefined':'grey','null':'bold','string':'green','date':'magenta',// "name": intentionally not styling
-'regexp':'red'};function stylizeWithColor(str,styleType){var style=inspect$1.styles[styleType];if(style){return '\u001b['+inspect$1.colors[style][0]+'m'+str+'\u001b['+inspect$1.colors[style][1]+'m';}else {return str;}}function stylizeNoColor(str,styleType){return str;}function arrayToHash(array){var hash={};array.forEach(function(val,idx){hash[val]=true;});return hash;}function formatValue(ctx,value,recurseTimes){// Provide a hook for user-specified inspect functions.
-// Check that value is an object with an inspect function on it
-if(ctx.customInspect&&value&&isFunction$2(value.inspect)&&// Filter out the util module, it's inspect function is special
-value.inspect!==inspect$1&&// Also filter out any prototype objects using the circular check.
-!(value.constructor&&value.constructor.prototype===value)){var ret=value.inspect(recurseTimes,ctx);if(!isString(ret)){ret=formatValue(ctx,ret,recurseTimes);}return ret;}// Primitive types cannot have properties
-var primitive=formatPrimitive(ctx,value);if(primitive){return primitive;}// Look up the keys of the object.
-var keys=Object.keys(value);var visibleKeys=arrayToHash(keys);if(ctx.showHidden){keys=Object.getOwnPropertyNames(value);}// IE doesn't make error fields non-enumerable
-// http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
-if(isError(value)&&(keys.indexOf('message')>=0||keys.indexOf('description')>=0)){return formatError$1(value);}// Some type of object without properties can be shortcutted.
-if(keys.length===0){if(isFunction$2(value)){var name=value.name?': '+value.name:'';return ctx.stylize('[Function'+name+']','special');}if(isRegExp$2(value)){return ctx.stylize(RegExp.prototype.toString.call(value),'regexp');}if(isDate(value)){return ctx.stylize(Date.prototype.toString.call(value),'date');}if(isError(value)){return formatError$1(value);}}var base='',array=false,braces=['{','}'];// Make Array say that they are Array
-if(isArray$1(value)){array=true;braces=['[',']'];}// Make functions say that they are functions
-if(isFunction$2(value)){var n=value.name?': '+value.name:'';base=' [Function'+n+']';}// Make RegExps say that they are RegExps
-if(isRegExp$2(value)){base=' '+RegExp.prototype.toString.call(value);}// Make dates with properties first say the date
-if(isDate(value)){base=' '+Date.prototype.toUTCString.call(value);}// Make error with message first say the error
-if(isError(value)){base=' '+formatError$1(value);}if(keys.length===0&&(!array||value.length==0)){return braces[0]+base+braces[1];}if(recurseTimes<0){if(isRegExp$2(value)){return ctx.stylize(RegExp.prototype.toString.call(value),'regexp');}else {return ctx.stylize('[Object]','special');}}ctx.seen.push(value);var output;if(array){output=formatArray(ctx,value,recurseTimes,visibleKeys,keys);}else {output=keys.map(function(key){return formatProperty(ctx,value,recurseTimes,visibleKeys,key,array);});}ctx.seen.pop();return reduceToSingleString(output,base,braces);}function formatPrimitive(ctx,value){if(isUndefined$3(value))return ctx.stylize('undefined','undefined');if(isString(value)){var simple='\''+JSON.stringify(value).replace(/^"|"$/g,'').replace(/'/g,"\\'").replace(/\\"/g,'"')+'\'';return ctx.stylize(simple,'string');}if(isNumber(value))return ctx.stylize(''+value,'number');if(isBoolean$2(value))return ctx.stylize(''+value,'boolean');// For some reason typeof null is "object", so special case here.
-if(isNull$3(value))return ctx.stylize('null','null');}function formatError$1(value){return '['+Error.prototype.toString.call(value)+']';}function formatArray(ctx,value,recurseTimes,visibleKeys,keys){var output=[];for(var i=0,l=value.length;i-1){if(array){str=str.split('\n').map(function(line){return ' '+line;}).join('\n').substr(2);}else {str='\n'+str.split('\n').map(function(line){return ' '+line;}).join('\n');}}}else {str=ctx.stylize('[Circular]','special');}}if(isUndefined$3(name)){if(array&&key.match(/^\d+$/)){return str;}name=JSON.stringify(''+key);if(name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)){name=name.substr(1,name.length-2);name=ctx.stylize(name,'name');}else {name=name.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'");name=ctx.stylize(name,'string');}}return name+': '+str;}function reduceToSingleString(output,base,braces){var length=output.reduce(function(prev,cur){if(cur.indexOf('\n')>=0);return prev+cur.replace(/\u001b\[\d\d?m/g,'').length+1;},0);if(length>60){return braces[0]+(base===''?'':base+'\n ')+' '+output.join(',\n ')+' '+braces[1];}return braces[0]+base+' '+output.join(', ')+' '+braces[1];}// NOTE: These type checking functions intentionally don't use `instanceof`
-// because it is fragile and can be easily faked with `Object.create()`.
-function isArray$1(ar){return Array.isArray(ar);}function isBoolean$2(arg){return typeof arg==='boolean';}function isNull$3(arg){return arg===null;}function isNullOrUndefined(arg){return arg==null;}function isNumber(arg){return typeof arg==='number';}function isString(arg){return typeof arg==='string';}function isUndefined$3(arg){return arg===void 0;}function isRegExp$2(re){return isObject$5(re)&&objectToString(re)==='[object RegExp]';}function isObject$5(arg){return typeof arg==='object'&&arg!==null;}function isDate(d){return isObject$5(d)&&objectToString(d)==='[object Date]';}function isError(e){return isObject$5(e)&&(objectToString(e)==='[object Error]'||e instanceof Error);}function isFunction$2(arg){return typeof arg==='function';}function objectToString(o){return Object.prototype.toString.call(o);}function _extend(origin,add){// Don't do anything if add isn't an object
-if(!add||!isObject$5(add))return origin;var keys=Object.keys(add);var i=keys.length;while(i--){origin[keys[i]]=add[keys[i]];}return origin;}function hasOwnProperty$1(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop);}function BufferList(){this.head=null;this.tail=null;this.length=0;}BufferList.prototype.push=function(v){var entry={data:v,next:null};if(this.length>0)this.tail.next=entry;else this.head=entry;this.tail=entry;++this.length;};BufferList.prototype.unshift=function(v){var entry={data:v,next:this.head};if(this.length===0)this.tail=entry;this.head=entry;++this.length;};BufferList.prototype.shift=function(){if(this.length===0)return;var ret=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return ret;};BufferList.prototype.clear=function(){this.head=this.tail=null;this.length=0;};BufferList.prototype.join=function(s){if(this.length===0)return '';var p=this.head;var ret=''+p.data;while(p=p.next){ret+=s+p.data;}return ret;};BufferList.prototype.concat=function(n){if(this.length===0)return Buffer$1.alloc(0);if(this.length===1)return this.head.data;var ret=Buffer$1.allocUnsafe(n>>>0);var p=this.head;var i=0;while(p){p.data.copy(ret,i);i+=p.data.length;p=p.next;}return ret;};// Copyright Joyent, Inc. and other Node contributors.
-var isBufferEncoding=Buffer$1.isEncoding||function(encoding){switch(encoding&&encoding.toLowerCase()){case'hex':case'utf8':case'utf-8':case'ascii':case'binary':case'base64':case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':case'raw':return true;default:return false;}};function assertEncoding(encoding){if(encoding&&!isBufferEncoding(encoding)){throw new Error('Unknown encoding: '+encoding);}}// StringDecoder provides an interface for efficiently splitting a series of
-// buffers into a series of JS strings without breaking apart multi-byte
-// characters. CESU-8 is handled as part of the UTF-8 encoding.
-//
-// @TODO Handling all encodings inside a single object makes it very difficult
-// to reason about this code, so it should be split up in the future.
-// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
-// points as used by CESU-8.
-function StringDecoder(encoding){this.encoding=(encoding||'utf8').toLowerCase().replace(/[-_]/,'');assertEncoding(encoding);switch(this.encoding){case'utf8':// CESU-8 represents each of Surrogate Pair by 3-bytes
-this.surrogateSize=3;break;case'ucs2':case'utf16le':// UTF-16 represents each of Surrogate Pair by 2-bytes
-this.surrogateSize=2;this.detectIncompleteChar=utf16DetectIncompleteChar;break;case'base64':// Base-64 stores 3 bytes in 4 chars, and pads the remainder.
-this.surrogateSize=3;this.detectIncompleteChar=base64DetectIncompleteChar;break;default:this.write=passThroughWrite;return;}// Enough space to store all bytes of a single character. UTF-8 needs 4
-// bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
-this.charBuffer=new Buffer$1(6);// Number of bytes received for the current incomplete multi-byte character.
-this.charReceived=0;// Number of bytes expected for the current incomplete multi-byte character.
-this.charLength=0;}// write decodes the given buffer and returns it as JS string that is
-// guaranteed to not contain any partial multi-byte characters. Any partial
-// character found at the end of the buffer is buffered up, and will be
-// returned when calling write again with the remaining bytes.
-//
-// Note: Converting a Buffer containing an orphan surrogate to a String
-// currently works, but converting a String to a Buffer (via `new Buffer`, or
-// Buffer#write) will replace incomplete surrogates with the unicode
-// replacement character. See https://codereview.chromium.org/121173009/ .
-StringDecoder.prototype.write=function(buffer){var charStr='';// if our last write ended with an incomplete multibyte character
-while(this.charLength){// determine how many remaining bytes this buffer has to offer for this char
-var available=buffer.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:buffer.length;// add the new bytes to the char buffer
-buffer.copy(this.charBuffer,this.charReceived,0,available);this.charReceived+=available;if(this.charReceived=0xD800&&charCode<=0xDBFF){this.charLength+=this.surrogateSize;charStr='';continue;}this.charReceived=this.charLength=0;// if there are no more bytes in this buffer, just emit our char
-if(buffer.length===0){return charStr;}break;}// determine and set charLength / charReceived
-this.detectIncompleteChar(buffer);var end=buffer.length;if(this.charLength){// buffer the incomplete character bytes we got
-buffer.copy(this.charBuffer,0,buffer.length-this.charReceived,end);end-=this.charReceived;}charStr+=buffer.toString(this.encoding,0,end);var end=charStr.length-1;var charCode=charStr.charCodeAt(end);// CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
-if(charCode>=0xD800&&charCode<=0xDBFF){var size=this.surrogateSize;this.charLength+=size;this.charReceived+=size;this.charBuffer.copy(this.charBuffer,size,0,size);buffer.copy(this.charBuffer,0,0,size);return charStr.substring(0,end);}// or just emit the charStr
-return charStr;};// detectIncompleteChar determines if there is an incomplete UTF-8 character at
-// the end of the given buffer. If so, it sets this.charLength to the byte
-// length that character, and sets this.charReceived to the number of bytes
-// that are available for this character.
-StringDecoder.prototype.detectIncompleteChar=function(buffer){// determine how many bytes we have to check at the end of this buffer
-var i=buffer.length>=3?3:buffer.length;// Figure out if one of the last i bytes of our buffer announces an
-// incomplete char.
-for(;i>0;i--){var c=buffer[buffer.length-i];// See http://en.wikipedia.org/wiki/UTF-8#Description
-// 110XXXXX
-if(i==1&&c>>5==0x06){this.charLength=2;break;}// 1110XXXX
-if(i<=2&&c>>4==0x0E){this.charLength=3;break;}// 11110XXX
-if(i<=3&&c>>3==0x1E){this.charLength=4;break;}}this.charReceived=i;};StringDecoder.prototype.end=function(buffer){var res='';if(buffer&&buffer.length)res=this.write(buffer);if(this.charReceived){var cr=this.charReceived;var buf=this.charBuffer;var enc=this.encoding;res+=buf.slice(0,cr).toString(enc);}return res;};function passThroughWrite(buffer){return buffer.toString(this.encoding);}function utf16DetectIncompleteChar(buffer){this.charReceived=buffer.length%2;this.charLength=this.charReceived?2:0;}function base64DetectIncompleteChar(buffer){this.charReceived=buffer.length%3;this.charLength=this.charReceived?3:0;}Readable$1.ReadableState=ReadableState;var debug=debuglog('stream');inherits$1(Readable$1,EventEmitter);function prependListener(emitter,event,fn){// Sadly this is not cacheable as some libraries bundle their own
-// event emitter implementation with them.
-if(typeof emitter.prependListener==='function'){return emitter.prependListener(event,fn);}else {// This is a hack to make sure that our error handler is attached before any
-// userland ones. NEVER DO THIS. This is here only because this code needs
-// to continue to work with older versions of Node.js that do not include
-// the prependListener() method. The goal is to eventually remove this hack.
-if(!emitter._events||!emitter._events[event])emitter.on(event,fn);else if(Array.isArray(emitter._events[event]))emitter._events[event].unshift(fn);else emitter._events[event]=[fn,emitter._events[event]];}}function listenerCount(emitter,type){return emitter.listeners(type).length;}function ReadableState(options,stream){options=options||{};// object stream flag. Used to make read(n) ignore n and to
-// make all the buffer merging and length checks go away
-this.objectMode=!!options.objectMode;if(stream instanceof Duplex)this.objectMode=this.objectMode||!!options.readableObjectMode;// the point at which it stops calling _read() to fill the buffer
-// Note: 0 is a valid value, means "don't call _read preemptively ever"
-var hwm=options.highWaterMark;var defaultHwm=this.objectMode?16:16*1024;this.highWaterMark=hwm||hwm===0?hwm:defaultHwm;// cast to ints.
-this.highWaterMark=~~this.highWaterMark;// A linked list is used to store data chunks instead of an array because the
-// linked list can remove elements from the beginning faster than
-// array.shift()
-this.buffer=new BufferList();this.length=0;this.pipes=null;this.pipesCount=0;this.flowing=null;this.ended=false;this.endEmitted=false;this.reading=false;// a flag to be able to tell if the onwrite cb is called immediately,
-// or on a later tick. We set this to true at first, because any
-// actions that shouldn't happen until "later" should generally also
-// not happen before the first write call.
-this.sync=true;// whenever we return null, then we set a flag to say
-// that we're awaiting a 'readable' event emission.
-this.needReadable=false;this.emittedReadable=false;this.readableListening=false;this.resumeScheduled=false;// Crypto is kind of old and crusty. Historically, its default string
-// encoding is 'binary' so we have to make this configurable.
-// Everything else in the universe uses 'utf8', though.
-this.defaultEncoding=options.defaultEncoding||'utf8';// when piping, we only care about 'readable' events that happen
-// after read()ing all the bytes and not getting any pushback.
-this.ranOut=false;// the number of writers that are awaiting a drain event in .pipe()s
-this.awaitDrain=0;// if true, a maybeReadMore has been scheduled
-this.readingMore=false;this.decoder=null;this.encoding=null;if(options.encoding){this.decoder=new StringDecoder(options.encoding);this.encoding=options.encoding;}}function Readable$1(options){if(!(this instanceof Readable$1))return new Readable$1(options);this._readableState=new ReadableState(options,this);// legacy
-this.readable=true;if(options&&typeof options.read==='function')this._read=options.read;EventEmitter.call(this);}// Manually shove something into the read() buffer.
-// This returns true if the highWaterMark has not been hit yet,
-// similar to how Writable.write() returns true if you should
-// write() some more.
-Readable$1.prototype.push=function(chunk,encoding){var state=this._readableState;if(!state.objectMode&&typeof chunk==='string'){encoding=encoding||state.defaultEncoding;if(encoding!==state.encoding){chunk=Buffer$1.from(chunk,encoding);encoding='';}}return readableAddChunk(this,state,chunk,encoding,false);};// Unshift should *always* be something directly out of read()
-Readable$1.prototype.unshift=function(chunk){var state=this._readableState;return readableAddChunk(this,state,chunk,'',true);};Readable$1.prototype.isPaused=function(){return this._readableState.flowing===false;};function readableAddChunk(stream,state,chunk,encoding,addToFront){var er=chunkInvalid(state,chunk);if(er){stream.emit('error',er);}else if(chunk===null){state.reading=false;onEofChunk(stream,state);}else if(state.objectMode||chunk&&chunk.length>0){if(state.ended&&!addToFront){var e=new Error('stream.push() after EOF');stream.emit('error',e);}else if(state.endEmitted&&addToFront){var _e=new Error('stream.unshift() after end event');stream.emit('error',_e);}else {var skipAdd;if(state.decoder&&!addToFront&&!encoding){chunk=state.decoder.write(chunk);skipAdd=!state.objectMode&&chunk.length===0;}if(!addToFront)state.reading=false;// Don't add to the buffer if we've decoded to an empty string chunk and
-// we're not in object mode
-if(!skipAdd){// if we want the data now, just emit it.
-if(state.flowing&&state.length===0&&!state.sync){stream.emit('data',chunk);stream.read(0);}else {// update the buffer info.
-state.length+=state.objectMode?1:chunk.length;if(addToFront)state.buffer.unshift(chunk);else state.buffer.push(chunk);if(state.needReadable)emitReadable(stream);}}maybeReadMore(stream,state);}}else if(!addToFront){state.reading=false;}return needMoreData(state);}// if it's past the high water mark, we can push in some more.
-// Also, if we have no data yet, we can stand some
-// more bytes. This is to work around cases where hwm=0,
-// such as the repl. Also, if the push() triggered a
-// readable event, and the user called read(largeNumber) such that
-// needReadable was set, then we ought to push more, so that another
-// 'readable' event will be triggered.
-function needMoreData(state){return !state.ended&&(state.needReadable||state.length 8MB
-var MAX_HWM=0x800000;function computeNewHighWaterMark(n){if(n>=MAX_HWM){n=MAX_HWM;}else {// Get the next highest power of 2 to prevent increasing hwm excessively in
-// tiny amounts
-n--;n|=n>>>1;n|=n>>>2;n|=n>>>4;n|=n>>>8;n|=n>>>16;n++;}return n;}// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function howMuchToRead(n,state){if(n<=0||state.length===0&&state.ended)return 0;if(state.objectMode)return 1;if(n!==n){// Only flow one buffer at a time
-if(state.flowing&&state.length)return state.buffer.head.data.length;else return state.length;}// If we're asking for more than the current hwm, then raise the hwm.
-if(n>state.highWaterMark)state.highWaterMark=computeNewHighWaterMark(n);if(n<=state.length)return n;// Don't have enough
-if(!state.ended){state.needReadable=true;return 0;}return state.length;}// you can override either this method, or the async _read(n) below.
-Readable$1.prototype.read=function(n){debug('read',n);n=parseInt(n,10);var state=this._readableState;var nOrig=n;if(n!==0)state.emittedReadable=false;// if we're doing read(0) to trigger a readable event, but we
-// already have a bunch of data in the buffer, then just trigger
-// the 'readable' event and move on.
-if(n===0&&state.needReadable&&(state.length>=state.highWaterMark||state.ended)){debug('read: emitReadable',state.length,state.ended);if(state.length===0&&state.ended)endReadable(this);else emitReadable(this);return null;}n=howMuchToRead(n,state);// if we've ended, and we're now clear, then finish it up.
-if(n===0&&state.ended){if(state.length===0)endReadable(this);return null;}// All the actual chunk generation logic needs to be
-// *below* the call to _read. The reason is that in certain
-// synthetic stream cases, such as passthrough streams, _read
-// may be a completely synchronous operation which may change
-// the state of the read buffer, providing enough data when
-// before there was *not* enough.
-//
-// So, the steps are:
-// 1. Figure out what the state of things will be after we do
-// a read from the buffer.
-//
-// 2. If that resulting state will trigger a _read, then call _read.
-// Note that this may be asynchronous, or synchronous. Yes, it is
-// deeply ugly to write APIs this way, but that still doesn't mean
-// that the Readable class should behave improperly, as streams are
-// designed to be sync/async agnostic.
-// Take note if the _read call is sync or async (ie, if the read call
-// has returned yet), so that we know whether or not it's safe to emit
-// 'readable' etc.
-//
-// 3. Actually pull the requested chunks out of the buffer and return.
-// if we need a readable event, then we need to do some reading.
-var doRead=state.needReadable;debug('need readable',doRead);// if we currently have less than the highWaterMark, then also read some
-if(state.length===0||state.length-n0)ret=fromList(n,state);else ret=null;if(ret===null){state.needReadable=true;n=0;}else {state.length-=n;}if(state.length===0){// If we have nothing in the buffer, then we want to know
-// as soon as we *do* get something into the buffer.
-if(!state.ended)state.needReadable=true;// If we tried to read() past the EOF, then emit end on the next tick.
-if(nOrig!==n&&state.ended)endReadable(this);}if(ret!==null)this.emit('data',ret);return ret;};function chunkInvalid(state,chunk){var er=null;if(!Buffer$1.isBuffer(chunk)&&typeof chunk!=='string'&&chunk!==null&&chunk!==undefined&&!state.objectMode){er=new TypeError('Invalid non-string/buffer chunk');}return er;}function onEofChunk(stream,state){if(state.ended)return;if(state.decoder){var chunk=state.decoder.end();if(chunk&&chunk.length){state.buffer.push(chunk);state.length+=state.objectMode?1:chunk.length;}}state.ended=true;// emit 'readable' now to make sure it gets picked up.
-emitReadable(stream);}// Don't emit readable right away in sync mode, because this can trigger
-// another read() call => stack overflow. This way, it might trigger
-// a nextTick recursion warning, but that's not so bad.
-function emitReadable(stream){var state=stream._readableState;state.needReadable=false;if(!state.emittedReadable){debug('emitReadable',state.flowing);state.emittedReadable=true;if(state.sync)nextTick(emitReadable_,stream);else emitReadable_(stream);}}function emitReadable_(stream){debug('emit readable');stream.emit('readable');flow(stream);}// at this point, the user has presumably seen the 'readable' event,
-// and called read() to consume some data. that may have triggered
-// in turn another _read(n) call, in which case reading = true if
-// it's in progress.
-// However, if we're not ended, or reading, and the length < hwm,
-// then go ahead and try to read some more preemptively.
-function maybeReadMore(stream,state){if(!state.readingMore){state.readingMore=true;nextTick(maybeReadMore_,stream,state);}}function maybeReadMore_(stream,state){var len=state.length;while(!state.reading&&!state.flowing&&!state.ended&&state.length Introduce a guard on increasing awaitDrain.
-var increasedAwaitDrain=false;src.on('data',ondata);function ondata(chunk){debug('ondata');increasedAwaitDrain=false;var ret=dest.write(chunk);if(false===ret&&!increasedAwaitDrain){// If the user unpiped during `dest.write()`, it is possible
-// to get stuck in a permanently paused state if that write
-// also returned false.
-// => Check whether `dest` is still a piping destination.
-if((state.pipesCount===1&&state.pipes===dest||state.pipesCount>1&&indexOf(state.pipes,dest)!==-1)&&!cleanedUp){debug('false write response, pause',src._readableState.awaitDrain);src._readableState.awaitDrain++;increasedAwaitDrain=true;}src.pause();}}// if the dest has an error, then stop piping into it.
-// however, don't suppress the throwing behavior for this.
-function onerror(er){debug('onerror',er);unpipe();dest.removeListener('error',onerror);if(listenerCount(dest,'error')===0)dest.emit('error',er);}// Make sure our error handler is attached before userland ones.
-prependListener(dest,'error',onerror);// Both close and finish should trigger unpipe, but only once.
-function onclose(){dest.removeListener('finish',onfinish);unpipe();}dest.once('close',onclose);function onfinish(){debug('onfinish');dest.removeListener('close',onclose);unpipe();}dest.once('finish',onfinish);function unpipe(){debug('unpipe');src.unpipe(dest);}// tell the dest that it's being piped to
-dest.emit('pipe',src);// start the flow if it hasn't been started already.
-if(!state.flowing){debug('pipe resume');src.resume();}return dest;};function pipeOnDrain(src){return function(){var state=src._readableState;debug('pipeOnDrain',state.awaitDrain);if(state.awaitDrain)state.awaitDrain--;if(state.awaitDrain===0&&src.listeners('data').length){state.flowing=true;flow(src);}};}Readable$1.prototype.unpipe=function(dest){var state=this._readableState;// if we're not piping anywhere, then do nothing.
-if(state.pipesCount===0)return this;// just one destination. most common case.
-if(state.pipesCount===1){// passed in one, but it's not the right one.
-if(dest&&dest!==state.pipes)return this;if(!dest)dest=state.pipes;// got a match.
-state.pipes=null;state.pipesCount=0;state.flowing=false;if(dest)dest.emit('unpipe',this);return this;}// slow case. multiple pipe destinations.
-if(!dest){// remove all.
-var dests=state.pipes;var len=state.pipesCount;state.pipes=null;state.pipesCount=0;state.flowing=false;for(var _i=0;_i=state.length){// read it all, truncate the list
-if(state.decoder)ret=state.buffer.join('');else if(state.buffer.length===1)ret=state.buffer.head.data;else ret=state.buffer.concat(state.length);state.buffer.clear();}else {// read part of list
-ret=fromListPartial(n,state.buffer,state.decoder);}return ret;}// Extracts only enough buffered data to satisfy the amount requested.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function fromListPartial(n,list,hasStrings){var ret;if(nstr.length?str.length:n;if(nb===str.length)ret+=str;else ret+=str.slice(0,n);n-=nb;if(n===0){if(nb===str.length){++c;if(p.next)list.head=p.next;else list.head=list.tail=null;}else {list.head=p;p.data=str.slice(nb);}break;}++c;}list.length-=c;return ret;}// Copies a specified amount of bytes from the list of buffered data chunks.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function copyFromBuffer(n,list){var ret=Buffer$1.allocUnsafe(n);var p=list.head;var c=1;p.data.copy(ret);n-=p.data.length;while(p=p.next){var buf=p.data;var nb=n>buf.length?buf.length:n;buf.copy(ret,ret.length-n,0,nb);n-=nb;if(n===0){if(nb===buf.length){++c;if(p.next)list.head=p.next;else list.head=list.tail=null;}else {list.head=p;p.data=buf.slice(nb);}break;}++c;}list.length-=c;return ret;}function endReadable(stream){var state=stream._readableState;// If we get here before consuming all the bytes, then that is a
-// bug in node. Should never happen.
-if(state.length>0)throw new Error('"endReadable()" called on non-empty stream');if(!state.endEmitted){state.ended=true;nextTick(endReadableNT,state,stream);}}function endReadableNT(state,stream){// Check that we didn't get one last unshift.
-if(!state.endEmitted&&state.length===0){state.endEmitted=true;stream.readable=false;stream.emit('end');}}function forEach(xs,f){for(var i=0,l=xs.length;i-1))throw new TypeError('Unknown encoding: '+encoding);this._writableState.defaultEncoding=encoding;return this;};function decodeChunk(state,chunk,encoding){if(!state.objectMode&&state.decodeStrings!==false&&typeof chunk==='string'){chunk=Buffer$1.from(chunk,encoding);}return chunk;}// if we're already writing something, then just put this
-// in the queue, and wait our turn. Otherwise, call _write
-// If we return false, then we need a drain event, so set that flag.
-function writeOrBuffer(stream,state,chunk,encoding,cb){chunk=decodeChunk(state,chunk,encoding);if(Buffer$1.isBuffer(chunk))encoding='buffer';var len=state.objectMode?1:chunk.length;state.length+=len;var ret=state.length*/nextTick(afterWrite,stream,state,finished,cb);/**/}else {afterWrite(stream,state,finished,cb);}}}function afterWrite(stream,state,finished,cb){if(!finished)onwriteDrain(stream,state);state.pendingcb--;cb();finishMaybe(stream,state);}// Must force callback to be called on nextTick, so that we don't
-// emit 'drain' before the write() consumer gets the 'false' return
-// value, and has a chance to attach a 'drain' listener.
-function onwriteDrain(stream,state){if(state.length===0&&state.needDrain){state.needDrain=false;stream.emit('drain');}}// if there's something in the buffer waiting, then process it
-function clearBuffer(stream,state){state.bufferProcessing=true;var entry=state.bufferedRequest;if(stream._writev&&entry&&entry.next){// Fast case, write everything using _writev()
-var l=state.bufferedRequestCount;var buffer=new Array(l);var holder=state.corkedRequestsFree;holder.entry=entry;var count=0;while(entry){buffer[count]=entry;entry=entry.next;count+=1;}doWrite(stream,state,true,state.length,buffer,'',holder.finish);// doWrite is almost always async, defer these to save a bit of time
-// as the hot path ends with doWrite
-state.pendingcb++;state.lastBufferedRequest=null;if(holder.next){state.corkedRequestsFree=holder.next;holder.next=null;}else {state.corkedRequestsFree=new CorkedRequest(state);}}else {// Slow case, write chunks one-by-one
-while(entry){var chunk=entry.chunk;var encoding=entry.encoding;var cb=entry.callback;var len=state.objectMode?1:chunk.length;doWrite(stream,state,false,len,chunk,encoding,cb);entry=entry.next;// if we didn't call the onwrite immediately, then
-// it means that we need to wait until it does.
-// also, that means that the chunk and cb are currently
-// being processed, so move the buffer counter past them.
-if(state.writing){break;}}if(entry===null)state.lastBufferedRequest=null;}state.bufferedRequestCount=0;state.bufferedRequest=entry;state.bufferProcessing=false;}Writable.prototype._write=function(chunk,encoding,cb){cb(new Error('not implemented'));};Writable.prototype._writev=null;Writable.prototype.end=function(chunk,encoding,cb){var state=this._writableState;if(typeof chunk==='function'){cb=chunk;chunk=null;encoding=null;}else if(typeof encoding==='function'){cb=encoding;encoding=null;}if(chunk!==null&&chunk!==undefined)this.write(chunk,encoding);// .end() fully uncorks
-if(state.corked){state.corked=1;this.uncork();}// ignore unnecessary end() calls.
-if(!state.ending&&!state.finished)endWritable(this,state,cb);};function needFinish(state){return state.ending&&state.length===0&&state.bufferedRequest===null&&!state.finished&&!state.writing;}function prefinish(stream,state){if(!state.prefinished){state.prefinished=true;stream.emit('prefinish');}}function finishMaybe(stream,state){var need=needFinish(state);if(need){if(state.pendingcb===0){prefinish(stream,state);state.finished=true;stream.emit('finish');}else {prefinish(stream,state);}}return need;}function endWritable(stream,state,cb){state.ending=true;finishMaybe(stream,state);if(cb){if(state.finished)nextTick(cb);else stream.once('finish',cb);}state.ended=true;stream.writable=false;}// It seems a linked list but it is not
-// there will be only 2 of these for each stream
-function CorkedRequest(state){var _this=this;this.next=null;this.entry=null;this.finish=function(err){var entry=_this.entry;_this.entry=null;while(entry){var cb=entry.callback;state.pendingcb--;cb(err);entry=entry.next;}if(state.corkedRequestsFree){state.corkedRequestsFree.next=_this;}else {state.corkedRequestsFree=_this;}};}inherits$1(Duplex,Readable$1);var keys=Object.keys(Writable.prototype);for(var v=0;v of ):
-// for (var - ,_i,_it = [Symbol.iterator]();
- = (_i = _it.next()).value,!_i.done;)
-for(var header,_i,_it=response.headers[Symbol.iterator]();header=(_i=_it.next()).value,!_i.done;){self.headers[header[0].toLowerCase()]=header[1];self.rawHeaders.push(header[0],header[1]);}// TODO: this doesn't respect backpressure. Once WritableStream is available, this can be fixed
-var reader=response.body.getReader();read=function(){reader.read().then(function(result){if(self._destroyed)return;if(result.done){self.push(null);return;}self.push(new Buffer$1(result.value));read();});};read();}else {self._xhr=xhr;self._pos=0;self.url=xhr.responseURL;self.statusCode=xhr.status;self.statusMessage=xhr.statusText;var headers=xhr.getAllResponseHeaders().split(/\r?\n/);headers.forEach(function(header){var matches=header.match(/^([^:]+):\s*(.*)/);if(matches){var key=matches[1].toLowerCase();if(key==='set-cookie'){if(self.headers[key]===undefined){self.headers[key]=[];}self.headers[key].push(matches[2]);}else if(self.headers[key]!==undefined){self.headers[key]+=', '+matches[2];}else {self.headers[key]=matches[2];}self.rawHeaders.push(matches[1],matches[2]);}});self._charset='x-user-defined';if(!overrideMimeType){var mimeType=self.rawHeaders['mime-type'];if(mimeType){var charsetMatch=mimeType.match(/;\s*charset=([^;])(;|$)/);if(charsetMatch){self._charset=charsetMatch[1].toLowerCase();}}if(!self._charset)self._charset='utf-8';// best guess
-}}}inherits$1(IncomingMessage,Readable$1);IncomingMessage.prototype._read=function(){};IncomingMessage.prototype._onXHRProgress=function(){var self=this;var xhr=self._xhr;var response=null;switch(self._mode){case'text:vbarray':// For IE9
-if(xhr.readyState!==rStates.DONE)break;try{// This fails in IE8
-response=new global$1.VBArray(xhr.responseBody).toArray();}catch(e){// pass
-}if(response!==null){self.push(new Buffer$1(response));break;}// Falls through in IE8
-case'text':try{// This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4
-response=xhr.responseText;}catch(e){self._mode='text:vbarray';break;}if(response.length>self._pos){var newData=response.substr(self._pos);if(self._charset==='x-user-defined'){var buffer=new Buffer$1(newData.length);for(var i=0;iself._pos){self.push(new Buffer$1(new Uint8Array(reader.result.slice(self._pos))));self._pos=reader.result.byteLength;}};reader.onload=function(){self.push(null);};// reader.onerror = ??? // TODO: this
-reader.readAsArrayBuffer(response);break;}// The ms-stream case handles end separately in reader.onload()
-if(self._xhr.readyState===rStates.DONE&&self._mode!=='ms-stream'){self.push(null);}};// from https://github.com/jhiesey/to-arraybuffer/blob/6502d9850e70ba7935a7df4ad86b358fc216f9f0/index.js
-function toArrayBuffer(buf){// If the buffer is backed by a Uint8Array, a faster version will work
-if(buf instanceof Uint8Array){// If the buffer isn't a subarray, return the underlying ArrayBuffer
-if(buf.byteOffset===0&&buf.byteLength===buf.buffer.byteLength){return buf.buffer;}else if(typeof buf.buffer.slice==='function'){// Otherwise we need to get a proper copy
-return buf.buffer.slice(buf.byteOffset,buf.byteOffset+buf.byteLength);}}if(isBuffer(buf)){// This is the slow version that will work with any Buffer
-// implementation (even in old browsers)
-var arrayCopy=new Uint8Array(buf.length);var len=buf.length;for(var i=0;i0&&len>maxKeys){len=maxKeys;}for(var i=0;i=0){kstr=x.substr(0,idx);vstr=x.substr(idx+1);}else {kstr=x;vstr='';}k=decodeURIComponent(kstr);v=decodeURIComponent(vstr);if(!hasOwnProperty(obj,k)){obj[k]=v;}else if(isArray(obj[k])){obj[k].push(v);}else {obj[k]=[obj[k],v];}}return obj;}// Copyright Joyent, Inc. and other Node contributors.
-var Url={parse:urlParse,resolve:urlResolve,resolveObject:urlResolveObject,format:urlFormat,Url:Url$1};function Url$1(){this.protocol=null;this.slashes=null;this.auth=null;this.host=null;this.port=null;this.hostname=null;this.hash=null;this.search=null;this.query=null;this.pathname=null;this.path=null;this.href=null;}// Reference: RFC 3986, RFC 1808, RFC 2396
-// define these here so at least they only have to be
-// compiled once on the first module load.
-var protocolPattern=/^([a-z0-9.+-]+:)/i,portPattern=/:[0-9]*$/,// Special case for a simple path URL
-simplePathPattern=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,// RFC 2396: characters reserved for delimiting URLs.
-// We actually just auto-escape these.
-delims=['<','>','"','`',' ','\r','\n','\t'],// RFC 2396: characters not allowed for various reasons.
-unwise=['{','}','|','\\','^','`'].concat(delims),// Allowed by RFCs, but cause of XSS attacks. Always escape these.
-autoEscape=['\''].concat(unwise),// Characters that are never ever allowed in a hostname.
-// Note that any invalid chars are also handled, but these
-// are the ones that are *expected* to be seen, so we fast-path
-// them.
-nonHostChars=['%','/','?',';','#'].concat(autoEscape),hostEndingChars=['/','?','#'],hostnameMaxLen=255,hostnamePartPattern=/^[+a-z0-9A-Z_-]{0,63}$/,hostnamePartStart=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,// protocols that can allow "unsafe" and "unwise" chars.
-unsafeProtocol={'javascript':true,'javascript:':true},// protocols that never have a hostname.
-hostlessProtocol={'javascript':true,'javascript:':true},// protocols that always contain a // bit.
-slashedProtocol={'http':true,'https':true,'ftp':true,'gopher':true,'file':true,'http:':true,'https:':true,'ftp:':true,'gopher:':true,'file:':true};function urlParse(url,parseQueryString,slashesDenoteHost){if(url&&isObject$5(url)&&url instanceof Url$1)return url;var u=new Url$1();u.parse(url,parseQueryString,slashesDenoteHost);return u;}Url$1.prototype.parse=function(url,parseQueryString,slashesDenoteHost){return parse$6(this,url,parseQueryString,slashesDenoteHost);};function parse$6(self,url,parseQueryString,slashesDenoteHost){if(!isString(url)){throw new TypeError('Parameter \'url\' must be a string, not '+typeof url);}// Copy chrome, IE, opera backslash-handling behavior.
-// Back slashes before the query string get converted to forward slashes
-// See: https://code.google.com/p/chromium/issues/detail?id=25916
-var queryIndex=url.indexOf('?'),splitter=queryIndex!==-1&&queryIndex user:a@b host:c
-// http://a@b?@c => user:a host:c path:/?@c
-// v0.12 TODO(isaacs): This is not quite how Chrome does things.
-// Review our test case against browsers more comprehensively.
-// find the first instance of any hostEndingChars
-var hostEnd=-1;for(i=0;i host:b auth:a path:/c@d
-atSign=rest.lastIndexOf('@',hostEnd);}// Now we have a portion which is definitely the auth.
-// Pull that off.
-if(atSign!==-1){auth=rest.slice(0,atSign);rest=rest.slice(atSign+1);self.auth=decodeURIComponent(auth);}// the host is the remaining to the left of the first non-host char
-hostEnd=-1;for(i=0;i127){// we replace non-ASCII char with a temporary placeholder
-// we need this to make sure size of hostname is not
-// broken by replacing non-ASCII by nothing
-newpart+='x';}else {newpart+=part[j];}}// we test again with ASCII char only
-if(!newpart.match(hostnamePartPattern)){var validParts=hostparts.slice(0,i);var notHost=hostparts.slice(i+1);var bit=part.match(hostnamePartStart);if(bit){validParts.push(bit[1]);notHost.unshift(bit[2]);}if(notHost.length){rest='/'+notHost.join('.')+rest;}self.hostname=validParts.join('.');break;}}}}if(self.hostname.length>hostnameMaxLen){self.hostname='';}else {// hostnames are always lower case.
-self.hostname=self.hostname.toLowerCase();}if(!ipv6Hostname){// IDNA Support: Returns a punycoded representation of "domain".
-// It only converts parts of the domain name that
-// have non-ASCII characters, i.e. it doesn't matter if
-// you call it with a domain that already is ASCII-only.
-self.hostname=toASCII(self.hostname);}p=self.port?':'+self.port:'';var h=self.hostname||'';self.host=h+p;self.href+=self.host;// strip [ and ] from the hostname
-// the host field still retains them, though
-if(ipv6Hostname){self.hostname=self.hostname.substr(1,self.hostname.length-2);if(rest[0]!=='/'){rest='/'+rest;}}}// now rest is set to the post-host stuff.
-// chop off any delim chars.
-if(!unsafeProtocol[lowerProto]){// First, make 100% sure that any "autoEscape" chars get
-// escaped, even if encodeURIComponent doesn't think they
-// need to be.
-for(i=0,l=autoEscape.length;i0?result.host.split('@'):false;if(authInHost){result.auth=authInHost.shift();result.host=result.hostname=authInHost.shift();}}result.search=relative.search;result.query=relative.query;//to support http.request
-if(!isNull$3(result.pathname)||!isNull$3(result.search)){result.path=(result.pathname?result.pathname:'')+(result.search?result.search:'');}result.href=result.format();return result;}if(!srcPath.length){// no path at all. easy.
-// we've already handled the other stuff above.
-result.pathname=null;//to support http.request
-if(result.search){result.path='/'+result.search;}else {result.path=null;}result.href=result.format();return result;}// if a url ENDs in . or .., then it must get a trailing slash.
-// however, if it ends in anything else non-slashy,
-// then it must NOT get a trailing slash.
-var last=srcPath.slice(-1)[0];var hasTrailingSlash=(result.host||relative.host||srcPath.length>1)&&(last==='.'||last==='..')||last==='';// strip single dots, resolve double dots to parent dir
-// if the path tries to go above the root, `up` ends up > 0
-var up=0;for(var i=srcPath.length;i>=0;i--){last=srcPath[i];if(last==='.'){srcPath.splice(i,1);}else if(last==='..'){srcPath.splice(i,1);up++;}else if(up){srcPath.splice(i,1);up--;}}// if the path is allowed to go above the root, restore leading ..s
-if(!mustEndAbs&&!removeAllDots){for(;up--;up){srcPath.unshift('..');}}if(mustEndAbs&&srcPath[0]!==''&&(!srcPath[0]||srcPath[0].charAt(0)!=='/')){srcPath.unshift('');}if(hasTrailingSlash&&srcPath.join('/').substr(-1)!=='/'){srcPath.push('');}var isAbsolute=srcPath[0]===''||srcPath[0]&&srcPath[0].charAt(0)==='/';// put the host back
-if(psychotic){result.hostname=result.host=isAbsolute?'':srcPath.length?srcPath.shift():'';//occationaly the auth can get stuck only in host
-//this especially happens in cases like
-//url.resolveObject('mailto:local1@domain1', 'local2@domain2')
-authInHost=result.host&&result.host.indexOf('@')>0?result.host.split('@'):false;if(authInHost){result.auth=authInHost.shift();result.host=result.hostname=authInHost.shift();}}mustEndAbs=mustEndAbs||result.host&&srcPath.length;if(mustEndAbs&&!isAbsolute){srcPath.unshift('');}if(!srcPath.length){result.pathname=null;result.path=null;}else {result.pathname=srcPath.join('/');}//to support request.http
-if(!isNull$3(result.pathname)||!isNull$3(result.search)){result.path=(result.pathname?result.pathname:'')+(result.search?result.search:'');}result.auth=relative.auth||result.auth;result.slashes=result.slashes||relative.slashes;result.href=result.format();return result;};Url$1.prototype.parseHost=function(){return parseHost(this);};function parseHost(self){var host=self.host;var port=portPattern.exec(host);if(port){port=port[0];if(port!==':'){self.port=port.substr(1);}host=host.substr(0,host.length-port.length);}if(host)self.hostname=host;}var url=/*#__PURE__*/Object.freeze({__proto__:null,parse:urlParse,resolve:urlResolve,resolveObject:urlResolveObject,format:urlFormat,'default':Url,Url:Url$1});function request(opts,cb){if(typeof opts==='string')opts=urlParse(opts);// Normally, the page is loaded from http or https, so not specifying a protocol
-// will result in a (valid) protocol-relative url. However, this won't work if
-// the protocol is something else, like 'file:'
-var defaultProtocol=global$1.location.protocol.search(/^https?:$/)===-1?'http:':'';var protocol=opts.protocol||defaultProtocol;var host=opts.hostname||opts.host;var port=opts.port;var path=opts.path||'/';// Necessary for IPv6 addresses
-if(host&&host.indexOf(':')!==-1)host='['+host+']';// This may be a relative url. The browser should always be able to interpret it correctly.
-opts.url=(host?protocol+'//'+host:'')+(port?':'+port:'')+path;opts.method=(opts.method||'GET').toUpperCase();opts.headers=opts.headers||{};// Also valid opts.auth, opts.mode
-var req=new ClientRequest(opts);if(cb)req.on('response',cb);return req;}function get$1(opts,cb){var req=request(opts,cb);req.end();return req;}function Agent(){}Agent.defaultMaxSockets=4;var METHODS=['CHECKOUT','CONNECT','COPY','DELETE','GET','HEAD','LOCK','M-SEARCH','MERGE','MKACTIVITY','MKCOL','MOVE','NOTIFY','OPTIONS','PATCH','POST','PROPFIND','PROPPATCH','PURGE','PUT','REPORT','SEARCH','SUBSCRIBE','TRACE','UNLOCK','UNSUBSCRIBE'];var STATUS_CODES$1={100:'Continue',101:'Switching Protocols',102:'Processing',// RFC 2518, obsoleted by RFC 4918
-200:'OK',201:'Created',202:'Accepted',203:'Non-Authoritative Information',204:'No Content',205:'Reset Content',206:'Partial Content',207:'Multi-Status',// RFC 4918
-300:'Multiple Choices',301:'Moved Permanently',302:'Moved Temporarily',303:'See Other',304:'Not Modified',305:'Use Proxy',307:'Temporary Redirect',400:'Bad Request',401:'Unauthorized',402:'Payment Required',403:'Forbidden',404:'Not Found',405:'Method Not Allowed',406:'Not Acceptable',407:'Proxy Authentication Required',408:'Request Time-out',409:'Conflict',410:'Gone',411:'Length Required',412:'Precondition Failed',413:'Request Entity Too Large',414:'Request-URI Too Large',415:'Unsupported Media Type',416:'Requested Range Not Satisfiable',417:'Expectation Failed',418:'I\'m a teapot',// RFC 2324
-422:'Unprocessable Entity',// RFC 4918
-423:'Locked',// RFC 4918
-424:'Failed Dependency',// RFC 4918
-425:'Unordered Collection',// RFC 4918
-426:'Upgrade Required',// RFC 2817
-428:'Precondition Required',// RFC 6585
-429:'Too Many Requests',// RFC 6585
-431:'Request Header Fields Too Large',// RFC 6585
-500:'Internal Server Error',501:'Not Implemented',502:'Bad Gateway',503:'Service Unavailable',504:'Gateway Time-out',505:'HTTP Version Not Supported',506:'Variant Also Negotiates',// RFC 2295
-507:'Insufficient Storage',// RFC 4918
-509:'Bandwidth Limit Exceeded',510:'Not Extended',// RFC 2774
-511:'Network Authentication Required'// RFC 6585
-};var http$1={request,get:get$1,Agent,METHODS,STATUS_CODES:STATUS_CODES$1};var http$2=/*#__PURE__*/Object.freeze({__proto__:null,request:request,get:get$1,Agent:Agent,METHODS:METHODS,STATUS_CODES:STATUS_CODES$1,'default':http$1});var msg={2:'need dictionary',/* Z_NEED_DICT 2 */1:'stream end',/* Z_STREAM_END 1 */0:'',/* Z_OK 0 */'-1':'file error',/* Z_ERRNO (-1) */'-2':'stream error',/* Z_STREAM_ERROR (-2) */'-3':'data error',/* Z_DATA_ERROR (-3) */'-4':'insufficient memory',/* Z_MEM_ERROR (-4) */'-5':'buffer error',/* Z_BUF_ERROR (-5) */'-6':'incompatible version'/* Z_VERSION_ERROR (-6) */};function ZStream(){/* next input byte */this.input=null;// JS specific, because we have no pointers
-this.next_in=0;/* number of bytes available at input */this.avail_in=0;/* total number of input bytes read so far */this.total_in=0;/* next output byte should be put there */this.output=null;// JS specific, because we have no pointers
-this.next_out=0;/* remaining free space at output */this.avail_out=0;/* total number of bytes output so far */this.total_out=0;/* last error message, NULL if no error */this.msg=''/*Z_NULL*/;/* not visible by applications */this.state=null;/* best guess about the data type: binary or text */this.data_type=2/*Z_UNKNOWN*/;/* adler32 value of the uncompressed data */this.adler=0;}function arraySet(dest,src,src_offs,len,dest_offs){if(src.subarray&&dest.subarray){dest.set(src.subarray(src_offs,src_offs+len),dest_offs);return;}// Fallback to ordinary array
-for(var i=0;i=0){buf[len]=0;}}// From zutil.h
-var STORED_BLOCK=0;var STATIC_TREES=1;var DYN_TREES=2;/* The three kinds of block type */var MIN_MATCH$1=3;var MAX_MATCH$1=258;/* The minimum and maximum match lengths */ // From deflate.h
-/* ===========================================================================
- * Internal compression state.
- */var LENGTH_CODES$1=29;/* number of length codes, not counting the special END_BLOCK code */var LITERALS$1=256;/* number of literal bytes 0..255 */var L_CODES$1=LITERALS$1+1+LENGTH_CODES$1;/* number of Literal or Length codes, including the END_BLOCK code */var D_CODES$1=30;/* number of distance codes */var BL_CODES$1=19;/* number of codes used to transfer the bit lengths */var HEAP_SIZE$1=2*L_CODES$1+1;/* maximum heap size */var MAX_BITS$1=15;/* All codes must not exceed MAX_BITS bits */var Buf_size=16;/* size of bit buffer in bi_buf */ /* ===========================================================================
- * Constants
- */var MAX_BL_BITS=7;/* Bit length codes must not exceed MAX_BL_BITS bits */var END_BLOCK=256;/* end of block literal code */var REP_3_6=16;/* repeat previous bit length 3-6 times (2 bits of repeat count) */var REPZ_3_10=17;/* repeat a zero length 3-10 times (3 bits of repeat count) */var REPZ_11_138=18;/* repeat a zero length 11-138 times (7 bits of repeat count) */ /* eslint-disable comma-spacing,array-bracket-spacing */var extra_lbits=/* extra bits for each length code */[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];var extra_dbits=/* extra bits for each distance code */[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];var extra_blbits=/* extra bits for each bit length code */[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];var bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];/* eslint-enable comma-spacing,array-bracket-spacing */ /* The lengths of the bit length codes are sent in order of decreasing
- * probability, to avoid transmitting the lengths for unused bit length codes.
- */ /* ===========================================================================
- * Local data. These are initialized only once.
- */ // We pre-fill arrays with 0 to avoid uninitialized gaps
-var DIST_CODE_LEN=512;/* see definition of array dist_code below */ // !!!! Use flat array insdead of structure, Freq = i*2, Len = i*2+1
-var static_ltree=new Array((L_CODES$1+2)*2);zero$1(static_ltree);/* The static literal tree. Since the bit lengths are imposed, there is no
- * need for the L_CODES extra codes used during heap construction. However
- * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
- * below).
- */var static_dtree=new Array(D_CODES$1*2);zero$1(static_dtree);/* The static distance tree. (Actually a trivial tree since all codes use
- * 5 bits.)
- */var _dist_code=new Array(DIST_CODE_LEN);zero$1(_dist_code);/* Distance codes. The first 256 values correspond to the distances
- * 3 .. 258, the last 256 values correspond to the top 8 bits of
- * the 15 bit distances.
- */var _length_code=new Array(MAX_MATCH$1-MIN_MATCH$1+1);zero$1(_length_code);/* length code for each normalized match length (0 == MIN_MATCH) */var base_length=new Array(LENGTH_CODES$1);zero$1(base_length);/* First normalized length for each code (0 = MIN_MATCH) */var base_dist=new Array(D_CODES$1);zero$1(base_dist);/* First normalized distance for each code (0 = distance of 1) */function StaticTreeDesc(static_tree,extra_bits,extra_base,elems,max_length){this.static_tree=static_tree;/* static tree or NULL */this.extra_bits=extra_bits;/* extra bits for each code or NULL */this.extra_base=extra_base;/* base index for extra_bits */this.elems=elems;/* max number of elements in the tree */this.max_length=max_length;/* max bit length for the codes */ // show if `static_tree` has data or dummy - needed for monomorphic objects
-this.has_stree=static_tree&&static_tree.length;}var static_l_desc;var static_d_desc;var static_bl_desc;function TreeDesc(dyn_tree,stat_desc){this.dyn_tree=dyn_tree;/* the dynamic tree */this.max_code=0;/* largest code with non zero frequency */this.stat_desc=stat_desc;/* the corresponding static tree */}function d_code(dist){return dist<256?_dist_code[dist]:_dist_code[256+(dist>>>7)];}/* ===========================================================================
- * Output a short LSB first on the stream.
- * IN assertion: there is enough room in pendingBuf.
- */function put_short(s,w){// put_byte(s, (uch)((w) & 0xff));
-// put_byte(s, (uch)((ush)(w) >> 8));
-s.pending_buf[s.pending++]=w&0xff;s.pending_buf[s.pending++]=w>>>8&0xff;}/* ===========================================================================
- * Send a value on a given number of bits.
- * IN assertion: length <= 16 and value fits in length bits.
- */function send_bits(s,value,length){if(s.bi_valid>Buf_size-length){s.bi_buf|=value<>Buf_size-s.bi_valid;s.bi_valid+=length-Buf_size;}else {s.bi_buf|=value<>>=1;res<<=1;}while(--len>0);return res>>>1;}/* ===========================================================================
- * Flush the bit buffer, keeping at most 7 bits in it.
- */function bi_flush(s){if(s.bi_valid===16){put_short(s,s.bi_buf);s.bi_buf=0;s.bi_valid=0;}else if(s.bi_valid>=8){s.pending_buf[s.pending++]=s.bi_buf&0xff;s.bi_buf>>=8;s.bi_valid-=8;}}/* ===========================================================================
- * Compute the optimal bit lengths for a tree and update the total bit length
- * for the current block.
- * IN assertion: the fields freq and dad are set, heap[heap_max] and
- * above are the tree nodes sorted by increasing frequency.
- * OUT assertions: the field len is set to the optimal bit length, the
- * array bl_count contains the frequencies for each bit length.
- * The length opt_len is updated; static_len is also updated if stree is
- * not null.
- */function gen_bitlen(s,desc){// deflate_state *s;
-// tree_desc *desc; /* the tree descriptor */
-var tree=desc.dyn_tree;var max_code=desc.max_code;var stree=desc.stat_desc.static_tree;var has_stree=desc.stat_desc.has_stree;var extra=desc.stat_desc.extra_bits;var base=desc.stat_desc.extra_base;var max_length=desc.stat_desc.max_length;var h;/* heap index */var n,m;/* iterate over the tree elements */var bits;/* bit length */var xbits;/* extra bits */var f;/* frequency */var overflow=0;/* number of elements with bit length too large */for(bits=0;bits<=MAX_BITS$1;bits++){s.bl_count[bits]=0;}/* In a first pass, compute the optimal bit lengths (which may
- * overflow in the case of the bit length tree).
- */tree[s.heap[s.heap_max]*2+1]/*.Len*/=0;/* root of the heap */for(h=s.heap_max+1;hmax_length){bits=max_length;overflow++;}tree[n*2+1]/*.Len*/=bits;/* We overwrite tree[n].Dad which is no longer needed */if(n>max_code){continue;}/* not a leaf node */s.bl_count[bits]++;xbits=0;if(n>=base){xbits=extra[n-base];}f=tree[n*2]/*.Freq*/;s.opt_len+=f*(bits+xbits);if(has_stree){s.static_len+=f*(stree[n*2+1]/*.Len*/+xbits);}}if(overflow===0){return;}// Trace((stderr,"\nbit length overflow\n"));
-/* This happens for example on obj2 and pic of the Calgary corpus */ /* Find the first bit length which could increase: */do{bits=max_length-1;while(s.bl_count[bits]===0){bits--;}s.bl_count[bits]--;/* move one leaf down the tree */s.bl_count[bits+1]+=2;/* move one overflow item as its brother */s.bl_count[max_length]--;/* The brother of the overflow item also moves one step up,
- * but this does not affect bl_count[max_length]
- */overflow-=2;}while(overflow>0);/* Now recompute all bit lengths, scanning in increasing frequency.
- * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
- * lengths instead of fixing only the wrong ones. This idea is taken
- * from 'ar' written by Haruhiko Okumura.)
- */for(bits=max_length;bits!==0;bits--){n=s.bl_count[bits];while(n!==0){m=s.heap[--h];if(m>max_code){continue;}if(tree[m*2+1]/*.Len*/!==bits){// Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
-s.opt_len+=(bits-tree[m*2+1]/*.Len*/)*tree[m*2]/*.Freq*/;tree[m*2+1]/*.Len*/=bits;}n--;}}}/* ===========================================================================
- * Generate the codes for a given tree and bit counts (which need not be
- * optimal).
- * IN assertion: the array bl_count contains the bit length statistics for
- * the given tree and the field len is set for all tree elements.
- * OUT assertion: the field code is set for all tree elements of non
- * zero code length.
- */function gen_codes(tree,max_code,bl_count){// ct_data *tree; /* the tree to decorate */
-// int max_code; /* largest code with non zero frequency */
-// ushf *bl_count; /* number of codes at each bit length */
-var next_code=new Array(MAX_BITS$1+1);/* next code value for each bit length */var code=0;/* running code value */var bits;/* bit index */var n;/* code index */ /* The distribution counts are first used to generate the code values
- * without bit reversal.
- */for(bits=1;bits<=MAX_BITS$1;bits++){next_code[bits]=code=code+bl_count[bits-1]<<1;}/* Check that the bit counts in bl_count are consistent. The last code
- * must be all ones.
- */ //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */length=0;for(code=0;code dist code (0..29) */dist=0;for(code=0;code<16;code++){base_dist[code]=dist;for(n=0;n<1<>=7;/* from now on, all distances are divided by 128 */for(;code8){put_short(s,s.bi_buf);}else if(s.bi_valid>0){//put_byte(s, (Byte)s->bi_buf);
-s.pending_buf[s.pending++]=s.bi_buf;}s.bi_buf=0;s.bi_valid=0;}/* ===========================================================================
- * Copy a stored block, storing first the length and its
- * one's complement if requested.
- */function copy_block(s,buf,len,header){//DeflateState *s;
-//charf *buf; /* the input data */
-//unsigned len; /* its length */
-//int header; /* true if block header must be written */
-bi_windup(s);/* align on byte boundary */if(header){put_short(s,len);put_short(s,~len);}// while (len--) {
-// put_byte(s, *buf++);
-// }
-arraySet(s.pending_buf,s.window,buf,len,s.pending);s.pending+=len;}/* ===========================================================================
- * Compares to subtrees, using the tree depth as tie breaker when
- * the subtrees have equal frequency. This minimizes the worst case length.
- */function smaller(tree,n,m,depth){var _n2=n*2;var _m2=m*2;return tree[_n2]/*.Freq*/pending) < s->lit_bufsize + 2*lx,
-// "pendingBuf overflow");
-}while(lx>1/*int /2*/;n>=1;n--){pqdownheap(s,tree,n);}/* Construct the Huffman tree by repeatedly combining the least two
- * frequent nodes.
- */node=elems;/* next internal node of the tree */do{//pqremove(s, tree, n); /* n = node of least frequency */
-/*** pqremove ***/n=s.heap[1/*SMALLEST*/];s.heap[1/*SMALLEST*/]=s.heap[s.heap_len--];pqdownheap(s,tree,1/*SMALLEST*/);/***/m=s.heap[1/*SMALLEST*/];/* m = node of next least frequency */s.heap[--s.heap_max]=n;/* keep the nodes sorted by frequency */s.heap[--s.heap_max]=m;/* Create a new node father of n and m */tree[node*2]/*.Freq*/=tree[n*2]/*.Freq*/+tree[m*2]/*.Freq*/;s.depth[node]=(s.depth[n]>=s.depth[m]?s.depth[n]:s.depth[m])+1;tree[n*2+1]/*.Dad*/=tree[m*2+1]/*.Dad*/=node;/* and insert the new node in the heap */s.heap[1/*SMALLEST*/]=node++;pqdownheap(s,tree,1/*SMALLEST*/);}while(s.heap_len>=2);s.heap[--s.heap_max]=s.heap[1/*SMALLEST*/];/* At this point, the fields freq and dad are set. We can now
- * generate the bit lengths.
- */gen_bitlen(s,desc);/* The field len is now set, we can generate the bit codes */gen_codes(tree,max_code,s.bl_count);}/* ===========================================================================
- * Scan a literal or distance tree to determine the frequencies of the codes
- * in the bit length tree.
- */function scan_tree(s,tree,max_code)// deflate_state *s;
-// ct_data *tree; /* the tree to be scanned */
-// int max_code; /* and its largest code of non zero frequency */
-{var n;/* iterates over all tree elements */var prevlen=-1;/* last emitted length */var curlen;/* length of current code */var nextlen=tree[0*2+1]/*.Len*/;/* length of next code */var count=0;/* repeat count of the current code */var max_count=7;/* max repeat count */var min_count=4;/* min repeat count */if(nextlen===0){max_count=138;min_count=3;}tree[(max_code+1)*2+1]/*.Len*/=0xffff;/* guard */for(n=0;n<=max_code;n++){curlen=nextlen;nextlen=tree[(n+1)*2+1]/*.Len*/;if(++count= 3 && count <= 6, " 3_6?");
-send_code(s,REP_3_6,s.bl_tree);send_bits(s,count-3,2);}else if(count<=10){send_code(s,REPZ_3_10,s.bl_tree);send_bits(s,count-3,3);}else {send_code(s,REPZ_11_138,s.bl_tree);send_bits(s,count-11,7);}count=0;prevlen=curlen;if(nextlen===0){max_count=138;min_count=3;}else if(curlen===nextlen){max_count=6;min_count=3;}else {max_count=7;min_count=4;}}}/* ===========================================================================
- * Construct the Huffman tree for the bit lengths and return the index in
- * bl_order of the last bit length code to send.
- */function build_bl_tree(s){var max_blindex;/* index of last bit length code of non zero freq */ /* Determine the bit length frequencies for literal and distance trees */scan_tree(s,s.dyn_ltree,s.l_desc.max_code);scan_tree(s,s.dyn_dtree,s.d_desc.max_code);/* Build the bit length tree: */build_tree(s,s.bl_desc);/* opt_len now includes the length of the tree representations, except
- * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
- */ /* Determine the number of bit length codes to send. The pkzip format
- * requires that at least 4 bit length codes be sent. (appnote.txt says
- * 3 but the actual value used is 4.)
- */for(max_blindex=BL_CODES$1-1;max_blindex>=3;max_blindex--){if(s.bl_tree[bl_order[max_blindex]*2+1]/*.Len*/!==0){break;}}/* Update opt_len to include the bit length tree and counts */s.opt_len+=3*(max_blindex+1)+5+5+4;//Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
-// s->opt_len, s->static_len));
-return max_blindex;}/* ===========================================================================
- * Send the header for a block using dynamic Huffman trees: the counts, the
- * lengths of the bit length codes, the literal tree and the distance tree.
- * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
- */function send_all_trees(s,lcodes,dcodes,blcodes)// deflate_state *s;
-// int lcodes, dcodes, blcodes; /* number of codes for each tree */
-{var rank;/* index in bl_order */ //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
-//Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
-// "too many codes");
-//Tracev((stderr, "\nbl counts: "));
-send_bits(s,lcodes-257,5);/* not +255 as stated in appnote.txt */send_bits(s,dcodes-1,5);send_bits(s,blcodes-4,4);/* not -3 as stated in appnote.txt */for(rank=0;rankbits_sent));
-send_tree(s,s.dyn_ltree,lcodes-1);/* literal tree */ //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
-send_tree(s,s.dyn_dtree,dcodes-1);/* distance tree */ //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
-}/* ===========================================================================
- * Check if the data type is TEXT or BINARY, using the following algorithm:
- * - TEXT if the two conditions below are satisfied:
- * a) There are no non-portable control characters belonging to the
- * "black list" (0..6, 14..25, 28..31).
- * b) There is at least one printable character belonging to the
- * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
- * - BINARY otherwise.
- * - The following partially-portable control characters form a
- * "gray list" that is ignored in this detection algorithm:
- * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
- * IN assertion: the fields Freq of dyn_ltree are set.
- */function detect_data_type(s){/* black_mask is the bit mask of black-listed bytes
- * set bits 0..6, 14..25, and 28..31
- * 0xf3ffc07f = binary 11110011111111111100000001111111
- */var black_mask=0xf3ffc07f;var n;/* Check for non-textual ("black-listed") bytes. */for(n=0;n<=31;n++,black_mask>>>=1){if(black_mask&1&&s.dyn_ltree[n*2]/*.Freq*/!==0){return Z_BINARY$1;}}/* Check for textual ("white-listed") bytes. */if(s.dyn_ltree[9*2]/*.Freq*/!==0||s.dyn_ltree[10*2]/*.Freq*/!==0||s.dyn_ltree[13*2]/*.Freq*/!==0){return Z_TEXT$1;}for(n=32;n0){/* Check if the file is binary or text */if(s.strm.data_type===Z_UNKNOWN$2){s.strm.data_type=detect_data_type(s);}/* Construct the literal and distance trees */build_tree(s,s.l_desc);// Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
-// s->static_len));
-build_tree(s,s.d_desc);// Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
-// s->static_len));
-/* At this point, opt_len and static_len are the total bit lengths of
- * the compressed block data, excluding the tree representations.
- */ /* Build the bit length tree for the above two trees, and get the index
- * in bl_order of the last bit length code to send.
- */max_blindex=build_bl_tree(s);/* Determine the best encoding. Compute the block lengths in bytes. */opt_lenb=s.opt_len+3+7>>>3;static_lenb=s.static_len+3+7>>>3;// Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
-// opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
-// s->last_lit));
-if(static_lenb<=opt_lenb){opt_lenb=static_lenb;}}else {// Assert(buf != (char*)0, "lost buf");
-opt_lenb=static_lenb=stored_len+5;/* force a stored block */}if(stored_len+4<=opt_lenb&&buf!==-1){/* 4: two words for the lengths */ /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
- * Otherwise we can't have processed more than WSIZE input bytes since
- * the last block flush, because compression would have been
- * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
- * transform a block into a stored block.
- */_tr_stored_block(s,buf,stored_len,last);}else if(s.strategy===Z_FIXED$2||static_lenb===opt_lenb){send_bits(s,(STATIC_TREES<<1)+(last?1:0),3);compress_block(s,static_ltree,static_dtree);}else {send_bits(s,(DYN_TREES<<1)+(last?1:0),3);send_all_trees(s,s.l_desc.max_code+1,s.d_desc.max_code+1,max_blindex+1);compress_block(s,s.dyn_ltree,s.dyn_dtree);}// Assert (s->compressed_len == s->bits_sent, "bad compressed size");
-/* The above check is made mod 2^32, for files larger than 512 MB
- * and uLong implemented on 32 bits.
- */init_block(s);if(last){bi_windup(s);}// Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
-// s->compressed_len-7*last));
-}/* ===========================================================================
- * Save the match info and tally the frequency counts. Return true if
- * the current block must be flushed.
- */function _tr_tally(s,dist,lc)// deflate_state *s;
-// unsigned dist; /* distance of matched string */
-// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
-{//var out_length, in_length, dcode;
-s.pending_buf[s.d_buf+s.last_lit*2]=dist>>>8&0xff;s.pending_buf[s.d_buf+s.last_lit*2+1]=dist&0xff;s.pending_buf[s.l_buf+s.last_lit]=lc&0xff;s.last_lit++;if(dist===0){/* lc is the unmatched char */s.dyn_ltree[lc*2]/*.Freq*/++;}else {s.matches++;/* Here, lc is the match length - MIN_MATCH */dist--;/* dist = match distance - 1 */ //Assert((ush)dist < (ush)MAX_DIST(s) &&
-// (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
-// (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match");
-s.dyn_ltree[(_length_code[lc]+LITERALS$1+1)*2]/*.Freq*/++;s.dyn_dtree[d_code(dist)*2]/*.Freq*/++;}// (!) This block is disabled in zlib defailts,
-// don't enable it for binary compatibility
-//#ifdef TRUNCATE_BLOCK
-// /* Try to guess if it is profitable to stop the current block here */
-// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
-// /* Compute an upper bound for the compressed length */
-// out_length = s.last_lit*8;
-// in_length = s.strstart - s.block_start;
-//
-// for (dcode = 0; dcode < D_CODES; dcode++) {
-// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
-// }
-// out_length >>>= 3;
-// //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
-// // s->last_lit, in_length, out_length,
-// // 100L - out_length*100L/in_length));
-// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
-// return true;
-// }
-// }
-//#endif
-return s.last_lit===s.lit_bufsize-1;/* We avoid equality with lit_bufsize because of wraparound at 64K
- * on 16 bit machines and because stored blocks are restricted to
- * 64K-1 bytes.
- */}// Note: adler32 takes 12% for level 0 and 2% for level 6.
-// It doesn't worth to make additional optimizationa as in original.
-// Small size is preferable.
-function adler32(adler,buf,len,pos){var s1=adler&0xffff|0,s2=adler>>>16&0xffff|0,n=0;while(len!==0){// Set limit ~ twice less than 5552, to keep
-// s2 in 31-bits, because we force signed ints.
-// in other case %= will fail.
-n=len>2000?2000:len;len-=n;do{s1=s1+buf[pos++]|0;s2=s2+s1|0;}while(--n);s1%=65521;s2%=65521;}return s1|s2<<16|0;}// Note: we can't get significant speed boost here.
-// So write code to minimize size - no pregenerated tables
-// and array tools dependencies.
-// Use ordinary array, since untyped makes no boost here
-function makeTable(){var c,table=[];for(var n=0;n<256;n++){c=n;for(var k=0;k<8;k++){c=c&1?0xEDB88320^c>>>1:c>>>1;}table[n]=c;}return table;}// Create table on load. Just 255 signed longs. Not a problem.
-var crcTable=makeTable();function crc32(crc,buf,len,pos){var t=crcTable,end=pos+len;crc^=-1;for(var i=pos;i>>8^t[(crc^buf[i])&0xFF];}return crc^-1;// >>> 0;
-}/* Public constants ==========================================================*/ /* ===========================================================================*/ /* Allowed flush values; see deflate() and inflate() below for details */var Z_NO_FLUSH$1=0;var Z_PARTIAL_FLUSH$1=1;//var Z_SYNC_FLUSH = 2;
-var Z_FULL_FLUSH$1=3;var Z_FINISH$2=4;var Z_BLOCK$2=5;//var Z_TREES = 6;
-/* Return codes for the compression/decompression functions. Negative values
- * are errors, positive values are used for special but normal events.
- */var Z_OK$2=0;var Z_STREAM_END$2=1;//var Z_NEED_DICT = 2;
-//var Z_ERRNO = -1;
-var Z_STREAM_ERROR$2=-2;var Z_DATA_ERROR$2=-3;//var Z_MEM_ERROR = -4;
-var Z_BUF_ERROR$2=-5;//var Z_VERSION_ERROR = -6;
-/* compression levels */ //var Z_NO_COMPRESSION = 0;
-//var Z_BEST_SPEED = 1;
-//var Z_BEST_COMPRESSION = 9;
-var Z_DEFAULT_COMPRESSION$1=-1;var Z_FILTERED$1=1;var Z_HUFFMAN_ONLY$1=2;var Z_RLE$1=3;var Z_FIXED$1=4;/* Possible values of the data_type field (though see inflate()) */ //var Z_BINARY = 0;
-//var Z_TEXT = 1;
-//var Z_ASCII = 1; // = Z_TEXT
-var Z_UNKNOWN$1=2;/* The deflate compression method */var Z_DEFLATED$2=8;/*============================================================================*/var MAX_MEM_LEVEL=9;var LENGTH_CODES=29;/* number of length codes, not counting the special END_BLOCK code */var LITERALS=256;/* number of literal bytes 0..255 */var L_CODES=LITERALS+1+LENGTH_CODES;/* number of Literal or Length codes, including the END_BLOCK code */var D_CODES=30;/* number of distance codes */var BL_CODES=19;/* number of codes used to transfer the bit lengths */var HEAP_SIZE=2*L_CODES+1;/* maximum heap size */var MAX_BITS=15;/* All codes must not exceed MAX_BITS bits */var MIN_MATCH=3;var MAX_MATCH=258;var MIN_LOOKAHEAD=MAX_MATCH+MIN_MATCH+1;var PRESET_DICT=0x20;var INIT_STATE=42;var EXTRA_STATE=69;var NAME_STATE=73;var COMMENT_STATE=91;var HCRC_STATE=103;var BUSY_STATE=113;var FINISH_STATE=666;var BS_NEED_MORE=1;/* block not completed, need more input or more output */var BS_BLOCK_DONE=2;/* block flush performed */var BS_FINISH_STARTED=3;/* finish started, need only more output at next deflate */var BS_FINISH_DONE=4;/* finish done, accept no more input or output */var OS_CODE=0x03;// Unix :) . Don't detect, use this default.
-function err(strm,errorCode){strm.msg=msg[errorCode];return errorCode;}function rank(f){return (f<<1)-(f>4?9:0);}function zero(buf){var len=buf.length;while(--len>=0){buf[len]=0;}}/* =========================================================================
- * Flush as much pending output as possible. All deflate() output goes
- * through this function so some applications may wish to modify it
- * to avoid allocating a large strm->output buffer and copying into it.
- * (See also read_buf()).
- */function flush_pending(strm){var s=strm.state;//_tr_flush_bits(s);
-var len=s.pending;if(len>strm.avail_out){len=strm.avail_out;}if(len===0){return;}arraySet(strm.output,s.pending_buf,s.pending_out,len,strm.next_out);strm.next_out+=len;s.pending_out+=len;strm.total_out+=len;strm.avail_out-=len;s.pending-=len;if(s.pending===0){s.pending_out=0;}}function flush_block_only(s,last){_tr_flush_block(s,s.block_start>=0?s.block_start:-1,s.strstart-s.block_start,last);s.block_start=s.strstart;flush_pending(s.strm);}function put_byte(s,b){s.pending_buf[s.pending++]=b;}/* =========================================================================
- * Put a short in the pending buffer. The 16-bit value is put in MSB order.
- * IN assertion: the stream state is correct and there is enough room in
- * pending_buf.
- */function putShortMSB(s,b){// put_byte(s, (Byte)(b >> 8));
-// put_byte(s, (Byte)(b & 0xff));
-s.pending_buf[s.pending++]=b>>>8&0xff;s.pending_buf[s.pending++]=b&0xff;}/* ===========================================================================
- * Read a new buffer from the current input stream, update the adler32
- * and total number of bytes read. All deflate() input goes through
- * this function so some applications may wish to modify it to avoid
- * allocating a large strm->input buffer and copying from it.
- * (See also flush_pending()).
- */function read_buf(strm,buf,start,size){var len=strm.avail_in;if(len>size){len=size;}if(len===0){return 0;}strm.avail_in-=len;// zmemcpy(buf, strm->next_in, len);
-arraySet(buf,strm.input,strm.next_in,len,start);if(strm.state.wrap===1){strm.adler=adler32(strm.adler,buf,len,start);}else if(strm.state.wrap===2){strm.adler=crc32(strm.adler,buf,len,start);}strm.next_in+=len;strm.total_in+=len;return len;}/* ===========================================================================
- * Set match_start to the longest match starting at the given string and
- * return its length. Matches shorter or equal to prev_length are discarded,
- * in which case the result is equal to prev_length and match_start is
- * garbage.
- * IN assertions: cur_match is the head of the hash chain for the current
- * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
- * OUT assertion: the match length is not greater than s->lookahead.
- */function longest_match(s,cur_match){var chain_length=s.max_chain_length;/* max hash chain length */var scan=s.strstart;/* current string */var match;/* matched string */var len;/* length of current match */var best_len=s.prev_length;/* best match length so far */var nice_match=s.nice_match;/* stop if match long enough */var limit=s.strstart>s.w_size-MIN_LOOKAHEAD?s.strstart-(s.w_size-MIN_LOOKAHEAD):0/*NIL*/;var _win=s.window;// shortcut
-var wmask=s.w_mask;var prev=s.prev;/* Stop when cur_match becomes <= limit. To simplify the code,
- * we prevent matches with the string of window index 0.
- */var strend=s.strstart+MAX_MATCH;var scan_end1=_win[scan+best_len-1];var scan_end=_win[scan+best_len];/* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
- * It is easy to get rid of this optimization if necessary.
- */ // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
-/* Do not waste too much time if we already have a good match: */if(s.prev_length>=s.good_match){chain_length>>=2;}/* Do not look for matches beyond the end of the input. This is necessary
- * to make deflate deterministic.
- */if(nice_match>s.lookahead){nice_match=s.lookahead;}// Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
-do{// Assert(cur_match < s->strstart, "no future");
-match=cur_match;/* Skip to next match if the match length cannot increase
- * or if the match length is less than 2. Note that the checks below
- * for insufficient lookahead only occur occasionally for performance
- * reasons. Therefore uninitialized memory will be accessed, and
- * conditional jumps will be made that depend on those values.
- * However the length of the match is limited to the lookahead, so
- * the output of deflate is not affected by the uninitialized values.
- */if(_win[match+best_len]!==scan_end||_win[match+best_len-1]!==scan_end1||_win[match]!==_win[scan]||_win[++match]!==_win[scan+1]){continue;}/* The check at best_len-1 can be removed because it will be made
- * again later. (This heuristic is not always a win.)
- * It is not necessary to compare scan[2] and match[2] since they
- * are always equal when the other bytes match, given that
- * the hash keys are equal and that HASH_BITS >= 8.
- */scan+=2;match++;// Assert(*scan == *match, "match[2]?");
-/* We check for insufficient lookahead only every 8th comparison;
- * the 256th check will be made at strstart+258.
- */do{/*jshint noempty:false*/}while(_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&scanwindow+(unsigned)(s->window_size-1), "wild scan");
-len=MAX_MATCH-(strend-scan);scan=strend-MAX_MATCH;if(len>best_len){s.match_start=cur_match;best_len=len;if(len>=nice_match){break;}scan_end1=_win[scan+best_len-1];scan_end=_win[scan+best_len];}}while((cur_match=prev[cur_match&wmask])>limit&&--chain_length!==0);if(best_len<=s.lookahead){return best_len;}return s.lookahead;}/* ===========================================================================
- * Fill the window when the lookahead becomes insufficient.
- * Updates strstart and lookahead.
- *
- * IN assertion: lookahead < MIN_LOOKAHEAD
- * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
- * At least one byte has been read, or avail_in == 0; reads are
- * performed for at least two bytes (required for the zip translate_eol
- * option -- not supported here).
- */function fill_window(s){var _w_size=s.w_size;var p,n,m,more,str;//Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
-do{more=s.window_size-s.lookahead-s.strstart;// JS ints have 32 bit, block below not needed
-/* Deal with !@#$% 64K limit: */ //if (sizeof(int) <= 2) {
-// if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
-// more = wsize;
-//
-// } else if (more == (unsigned)(-1)) {
-// /* Very unlikely, but possible on 16 bit machine if
-// * strstart == 0 && lookahead == 1 (input done a byte at time)
-// */
-// more--;
-// }
-//}
-/* If the window is almost full and there is insufficient lookahead,
- * move the upper half to the lower one to make room in the upper half.
- */if(s.strstart>=_w_size+(_w_size-MIN_LOOKAHEAD)){arraySet(s.window,s.window,_w_size,_w_size,0);s.match_start-=_w_size;s.strstart-=_w_size;/* we now have strstart >= MAX_DIST */s.block_start-=_w_size;/* Slide the hash table (could be avoided with 32 bit values
- at the expense of memory usage). We slide even when level == 0
- to keep the hash table consistent if we switch back to level > 0
- later. (Using level 0 permanently is not an optimal usage of
- zlib, so we don't care about this pathological case.)
- */n=s.hash_size;p=n;do{m=s.head[--p];s.head[p]=m>=_w_size?m-_w_size:0;}while(--n);n=_w_size;p=n;do{m=s.prev[--p];s.prev[p]=m>=_w_size?m-_w_size:0;/* If n is not on any hash chain, prev[n] is garbage but
- * its value will never be used.
- */}while(--n);more+=_w_size;}if(s.strm.avail_in===0){break;}/* If there was no sliding:
- * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
- * more == window_size - lookahead - strstart
- * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
- * => more >= window_size - 2*WSIZE + 2
- * In the BIG_MEM or MMAP case (not yet supported),
- * window_size == input_size + MIN_LOOKAHEAD &&
- * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
- * Otherwise, window_size == 2*WSIZE so more >= 2.
- * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
- */ //Assert(more >= 2, "more < 2");
-n=read_buf(s.strm,s.window,s.strstart+s.lookahead,more);s.lookahead+=n;/* Initialize the hash value now that we have some input: */if(s.lookahead+s.insert>=MIN_MATCH){str=s.strstart-s.insert;s.ins_h=s.window[str];/* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */s.ins_h=(s.ins_h<ins_h, s->window[str + MIN_MATCH-1]); */s.ins_h=(s.ins_h< WIN_INIT)
-// init = WIN_INIT;
-// zmemzero(s->window + curr, (unsigned)init);
-// s->high_water = curr + init;
-// }
-// else if (s->high_water < (ulg)curr + WIN_INIT) {
-// /* High water mark at or above current data, but below current data
-// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
-// * to end of window, whichever is less.
-// */
-// init = (ulg)curr + WIN_INIT - s->high_water;
-// if (init > s->window_size - s->high_water)
-// init = s->window_size - s->high_water;
-// zmemzero(s->window + s->high_water, (unsigned)init);
-// s->high_water += init;
-// }
-// }
-//
-// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
-// "not enough room for search");
-}/* ===========================================================================
- * Copy without compression as much as possible from the input stream, return
- * the current block state.
- * This function does not insert new strings in the dictionary since
- * uncompressible data is probably not useful. This function is used
- * only for the level=0 compression option.
- * NOTE: this function should be optimized to avoid extra copying from
- * window to pending_buf.
- */function deflate_stored(s,flush){/* Stored blocks are limited to 0xffff bytes, pending_buf is limited
- * to pending_buf_size, and each stored block has a 5 byte header:
- */var max_block_size=0xffff;if(max_block_size>s.pending_buf_size-5){max_block_size=s.pending_buf_size-5;}/* Copy as much as possible from input to output: */for(;;){/* Fill the window as much as possible: */if(s.lookahead<=1){//Assert(s->strstart < s->w_size+MAX_DIST(s) ||
-// s->block_start >= (long)s->w_size, "slide too late");
-// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
-// s.block_start >= s.w_size)) {
-// throw new Error("slide too late");
-// }
-fill_window(s);if(s.lookahead===0&&flush===Z_NO_FLUSH$1){return BS_NEED_MORE;}if(s.lookahead===0){break;}/* flush the current block */}//Assert(s->block_start >= 0L, "block gone");
-// if (s.block_start < 0) throw new Error("block gone");
-s.strstart+=s.lookahead;s.lookahead=0;/* Emit a stored block if pending_buf will be full: */var max_start=s.block_start+max_block_size;if(s.strstart===0||s.strstart>=max_start){/* strstart == 0 is possible when wraparound on 16-bit machine */s.lookahead=s.strstart-max_start;s.strstart=max_start;/*** FLUSH_BLOCK(s, 0); ***/flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE;}/***/}/* Flush if we may have to slide, otherwise block_start may become
- * negative and the data will be gone:
- */if(s.strstart-s.block_start>=s.w_size-MIN_LOOKAHEAD){/*** FLUSH_BLOCK(s, 0); ***/flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE;}/***/}}s.insert=0;if(flush===Z_FINISH$2){/*** FLUSH_BLOCK(s, 1); ***/flush_block_only(s,true);if(s.strm.avail_out===0){return BS_FINISH_STARTED;}/***/return BS_FINISH_DONE;}if(s.strstart>s.block_start){/*** FLUSH_BLOCK(s, 0); ***/flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE;}/***/}return BS_NEED_MORE;}/* ===========================================================================
- * Compress as much as possible from the input stream, return the current
- * block state.
- * This function does not perform lazy evaluation of matches and inserts
- * new strings in the dictionary only for unmatched strings or for short
- * matches. It is used only for the fast compression options.
- */function deflate_fast(s,flush){var hash_head;/* head of the hash chain */var bflush;/* set if current block must be flushed */for(;;){/* Make sure that we always have enough lookahead, except
- * at the end of the input file. We need MAX_MATCH bytes
- * for the next match, plus MIN_MATCH bytes to insert the
- * string following the next match.
- */if(s.lookahead=MIN_MATCH){/*** INSERT_STRING(s, s.strstart, hash_head); ***/s.ins_h=(s.ins_h<=MIN_MATCH){// check_match(s, s.strstart, s.match_start, s.match_length); // for debug only
-/*** _tr_tally_dist(s, s.strstart - s.match_start,
- s.match_length - MIN_MATCH, bflush); ***/bflush=_tr_tally(s,s.strstart-s.match_start,s.match_length-MIN_MATCH);s.lookahead-=s.match_length;/* Insert new strings in the hash table only if the match length
- * is not too large. This saves time but degrades compression.
- */if(s.match_length<=s.max_lazy_match/*max_insert_length*/&&s.lookahead>=MIN_MATCH){s.match_length--;/* string at strstart already in table */do{s.strstart++;/*** INSERT_STRING(s, s.strstart, hash_head); ***/s.ins_h=(s.ins_h<=MIN_MATCH){/*** INSERT_STRING(s, s.strstart, hash_head); ***/s.ins_h=(s.ins_h<4096/*TOO_FAR*/)){/* If prev_match is also MIN_MATCH, match_start is garbage
- * but we will ignore the current match anyway.
- */s.match_length=MIN_MATCH-1;}}/* If there was a match at the previous step and the current
- * match is not better, output the previous match:
- */if(s.prev_length>=MIN_MATCH&&s.match_length<=s.prev_length){max_insert=s.strstart+s.lookahead-MIN_MATCH;/* Do not insert strings in hash table beyond this. */ //check_match(s, s.strstart-1, s.prev_match, s.prev_length);
-/***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
- s.prev_length - MIN_MATCH, bflush);***/bflush=_tr_tally(s,s.strstart-1-s.prev_match,s.prev_length-MIN_MATCH);/* Insert in hash table all strings up to the end of the match.
- * strstart-1 and strstart are already inserted. If there is not
- * enough lookahead, the last two strings are not inserted in
- * the hash table.
- */s.lookahead-=s.prev_length-1;s.prev_length-=2;do{if(++s.strstart<=max_insert){/*** INSERT_STRING(s, s.strstart, hash_head); ***/s.ins_h=(s.ins_h<window[s->strstart-1]));
-/*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/bflush=_tr_tally(s,0,s.window[s.strstart-1]);if(bflush){/*** FLUSH_BLOCK_ONLY(s, 0) ***/flush_block_only(s,false);/***/}s.strstart++;s.lookahead--;if(s.strm.avail_out===0){return BS_NEED_MORE;}}else {/* There is no previous match to compare with, wait for
- * the next step to decide.
- */s.match_available=1;s.strstart++;s.lookahead--;}}//Assert (flush != Z_NO_FLUSH, "no flush?");
-if(s.match_available){//Tracevv((stderr,"%c", s->window[s->strstart-1]));
-/*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/bflush=_tr_tally(s,0,s.window[s.strstart-1]);s.match_available=0;}s.insert=s.strstart=MIN_MATCH&&s.strstart>0){scan=s.strstart-1;prev=_win[scan];if(prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]){strend=s.strstart+MAX_MATCH;do{/*jshint noempty:false*/}while(prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&scans.lookahead){s.match_length=s.lookahead;}}//Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
-}/* Emit match if have run of MIN_MATCH or longer, else emit literal */if(s.match_length>=MIN_MATCH){//check_match(s, s.strstart, s.strstart - 1, s.match_length);
-/*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/bflush=_tr_tally(s,1,s.match_length-MIN_MATCH);s.lookahead-=s.match_length;s.strstart+=s.match_length;s.match_length=0;}else {/* No match, output a literal byte */ //Tracevv((stderr,"%c", s->window[s->strstart]));
-/*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/bflush=_tr_tally(s,0,s.window[s.strstart]);s.lookahead--;s.strstart++;}if(bflush){/*** FLUSH_BLOCK(s, 0); ***/flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE;}/***/}}s.insert=0;if(flush===Z_FINISH$2){/*** FLUSH_BLOCK(s, 1); ***/flush_block_only(s,true);if(s.strm.avail_out===0){return BS_FINISH_STARTED;}/***/return BS_FINISH_DONE;}if(s.last_lit){/*** FLUSH_BLOCK(s, 0); ***/flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE;}/***/}return BS_BLOCK_DONE;}/* ===========================================================================
- * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.
- * (It will be regenerated if this run of deflate switches away from Huffman.)
- */function deflate_huff(s,flush){var bflush;/* set if current block must be flushed */for(;;){/* Make sure that we have a literal to write. */if(s.lookahead===0){fill_window(s);if(s.lookahead===0){if(flush===Z_NO_FLUSH$1){return BS_NEED_MORE;}break;/* flush the current block */}}/* Output a literal byte */s.match_length=0;//Tracevv((stderr,"%c", s->window[s->strstart]));
-/*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/bflush=_tr_tally(s,0,s.window[s.strstart]);s.lookahead--;s.strstart++;if(bflush){/*** FLUSH_BLOCK(s, 0); ***/flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE;}/***/}}s.insert=0;if(flush===Z_FINISH$2){/*** FLUSH_BLOCK(s, 1); ***/flush_block_only(s,true);if(s.strm.avail_out===0){return BS_FINISH_STARTED;}/***/return BS_FINISH_DONE;}if(s.last_lit){/*** FLUSH_BLOCK(s, 0); ***/flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE;}/***/}return BS_BLOCK_DONE;}/* Values for max_lazy_match, good_match and max_chain_length, depending on
- * the desired pack level (0..9). The values given below have been tuned to
- * exclude worst case performance for pathological files. Better values may be
- * found for specific files.
- */function Config(good_length,max_lazy,nice_length,max_chain,func){this.good_length=good_length;this.max_lazy=max_lazy;this.nice_length=nice_length;this.max_chain=max_chain;this.func=func;}var configuration_table;configuration_table=[/* good lazy nice chain */new Config(0,0,0,0,deflate_stored),/* 0 store only */new Config(4,4,8,4,deflate_fast),/* 1 max speed, no lazy matches */new Config(4,5,16,8,deflate_fast),/* 2 */new Config(4,6,32,32,deflate_fast),/* 3 */new Config(4,4,16,16,deflate_slow),/* 4 lazy matches */new Config(8,16,32,32,deflate_slow),/* 5 */new Config(8,16,128,128,deflate_slow),/* 6 */new Config(8,32,128,256,deflate_slow),/* 7 */new Config(32,128,258,1024,deflate_slow),/* 8 */new Config(32,258,258,4096,deflate_slow)/* 9 max compression */];/* ===========================================================================
- * Initialize the "longest match" routines for a new zlib stream
- */function lm_init(s){s.window_size=2*s.w_size;/*** CLEAR_HASH(s); ***/zero(s.head);// Fill with NIL (= 0);
-/* Set the default configuration parameters:
- */s.max_lazy_match=configuration_table[s.level].max_lazy;s.good_match=configuration_table[s.level].good_length;s.nice_match=configuration_table[s.level].nice_length;s.max_chain_length=configuration_table[s.level].max_chain;s.strstart=0;s.block_start=0;s.lookahead=0;s.insert=0;s.match_length=s.prev_length=MIN_MATCH-1;s.match_available=0;s.ins_h=0;}function DeflateState(){this.strm=null;/* pointer back to this zlib stream */this.status=0;/* as the name implies */this.pending_buf=null;/* output still pending */this.pending_buf_size=0;/* size of pending_buf */this.pending_out=0;/* next pending byte to output to the stream */this.pending=0;/* nb of bytes in the pending buffer */this.wrap=0;/* bit 0 true for zlib, bit 1 true for gzip */this.gzhead=null;/* gzip header information to write */this.gzindex=0;/* where in extra, name, or comment */this.method=Z_DEFLATED$2;/* can only be DEFLATED */this.last_flush=-1;/* value of flush param for previous deflate call */this.w_size=0;/* LZ77 window size (32K by default) */this.w_bits=0;/* log2(w_size) (8..16) */this.w_mask=0;/* w_size - 1 */this.window=null;/* Sliding window. Input bytes are read into the second half of the window,
- * and move to the first half later to keep a dictionary of at least wSize
- * bytes. With this organization, matches are limited to a distance of
- * wSize-MAX_MATCH bytes, but this ensures that IO is always
- * performed with a length multiple of the block size.
- */this.window_size=0;/* Actual size of window: 2*wSize, except when the user input buffer
- * is directly used as sliding window.
- */this.prev=null;/* Link to older string with same hash index. To limit the size of this
- * array to 64K, this link is maintained only for the last 32K strings.
- * An index in this array is thus a window index modulo 32K.
- */this.head=null;/* Heads of the hash chains or NIL. */this.ins_h=0;/* hash index of string to be inserted */this.hash_size=0;/* number of elements in hash table */this.hash_bits=0;/* log2(hash_size) */this.hash_mask=0;/* hash_size-1 */this.hash_shift=0;/* Number of bits by which ins_h must be shifted at each input
- * step. It must be such that after MIN_MATCH steps, the oldest
- * byte no longer takes part in the hash key, that is:
- * hash_shift * MIN_MATCH >= hash_bits
- */this.block_start=0;/* Window position at the beginning of the current output block. Gets
- * negative when the window is moved backwards.
- */this.match_length=0;/* length of best match */this.prev_match=0;/* previous match */this.match_available=0;/* set if previous match exists */this.strstart=0;/* start of string to insert */this.match_start=0;/* start of matching string */this.lookahead=0;/* number of valid bytes ahead in window */this.prev_length=0;/* Length of the best match at previous step. Matches not greater than this
- * are discarded. This is used in the lazy match evaluation.
- */this.max_chain_length=0;/* To speed up deflation, hash chains are never searched beyond this
- * length. A higher limit improves compression ratio but degrades the
- * speed.
- */this.max_lazy_match=0;/* Attempt to find a better match only when the current match is strictly
- * smaller than this value. This mechanism is used only for compression
- * levels >= 4.
- */ // That's alias to max_lazy_match, don't use directly
-//this.max_insert_length = 0;
-/* Insert new strings in the hash table only if the match length is not
- * greater than this length. This saves time but degrades compression.
- * max_insert_length is used only for compression levels <= 3.
- */this.level=0;/* compression level (1..9) */this.strategy=0;/* favor or force Huffman coding*/this.good_match=0;/* Use a faster search when the previous match is longer than this */this.nice_match=0;/* Stop searching when current match exceeds this */ /* used by c: */ /* Didn't use ct_data typedef below to suppress compiler warning */ // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */
-// struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
-// struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */
-// Use flat array of DOUBLE size, with interleaved fata,
-// because JS does not support effective
-this.dyn_ltree=new Buf16(HEAP_SIZE*2);this.dyn_dtree=new Buf16((2*D_CODES+1)*2);this.bl_tree=new Buf16((2*BL_CODES+1)*2);zero(this.dyn_ltree);zero(this.dyn_dtree);zero(this.bl_tree);this.l_desc=null;/* desc. for literal tree */this.d_desc=null;/* desc. for distance tree */this.bl_desc=null;/* desc. for bit length tree */ //ush bl_count[MAX_BITS+1];
-this.bl_count=new Buf16(MAX_BITS+1);/* number of codes at each bit length for an optimal tree */ //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */
-this.heap=new Buf16(2*L_CODES+1);/* heap used to build the Huffman trees */zero(this.heap);this.heap_len=0;/* number of elements in the heap */this.heap_max=0;/* element of largest frequency */ /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
- * The same heap array is used to build all
- */this.depth=new Buf16(2*L_CODES+1);//uch depth[2*L_CODES+1];
-zero(this.depth);/* Depth of each subtree used as tie breaker for trees of equal frequency
- */this.l_buf=0;/* buffer index for literals or lengths */this.lit_bufsize=0;/* Size of match buffer for literals/lengths. There are 4 reasons for
- * limiting lit_bufsize to 64K:
- * - frequencies can be kept in 16 bit counters
- * - if compression is not successful for the first block, all input
- * data is still in the window so we can still emit a stored block even
- * when input comes from standard input. (This can also be done for
- * all blocks if lit_bufsize is not greater than 32K.)
- * - if compression is not successful for a file smaller than 64K, we can
- * even emit a stored file instead of a stored block (saving 5 bytes).
- * This is applicable only for zip (not gzip or zlib).
- * - creating new Huffman trees less frequently may not provide fast
- * adaptation to changes in the input data statistics. (Take for
- * example a binary file with poorly compressible code followed by
- * a highly compressible string table.) Smaller buffer sizes give
- * fast adaptation but have of course the overhead of transmitting
- * trees more frequently.
- * - I can't count above 4
- */this.last_lit=0;/* running index in l_buf */this.d_buf=0;/* Buffer index for distances. To simplify the code, d_buf and l_buf have
- * the same number of elements. To use different lengths, an extra flag
- * array would be necessary.
- */this.opt_len=0;/* bit length of current block with optimal trees */this.static_len=0;/* bit length of current block with static trees */this.matches=0;/* number of string matches in current block */this.insert=0;/* bytes at end of window left to insert */this.bi_buf=0;/* Output buffer. bits are inserted starting at the bottom (least
- * significant bits).
- */this.bi_valid=0;/* Number of valid bits in bi_buf. All bits above the last valid bit
- * are always zero.
- */ // Used for window memory init. We safely ignore it for JS. That makes
-// sense only for pointers and memory check tools.
-//this.high_water = 0;
-/* High water mark offset in window for initialized bytes -- bytes above
- * this are set to zero in order to avoid memory check warnings when
- * longest match routines access bytes past the input. This is then
- * updated to the new high water mark.
- */}function deflateResetKeep(strm){var s;if(!strm||!strm.state){return err(strm,Z_STREAM_ERROR$2);}strm.total_in=strm.total_out=0;strm.data_type=Z_UNKNOWN$1;s=strm.state;s.pending=0;s.pending_out=0;if(s.wrap<0){s.wrap=-s.wrap;/* was made negative by deflate(..., Z_FINISH); */}s.status=s.wrap?INIT_STATE:BUSY_STATE;strm.adler=s.wrap===2?0// crc32(0, Z_NULL, 0)
-:1;// adler32(0, Z_NULL, 0)
-s.last_flush=Z_NO_FLUSH$1;_tr_init(s);return Z_OK$2;}function deflateReset(strm){var ret=deflateResetKeep(strm);if(ret===Z_OK$2){lm_init(strm.state);}return ret;}function deflateInit2(strm,level,method,windowBits,memLevel,strategy){if(!strm){// === Z_NULL
-return Z_STREAM_ERROR$2;}var wrap=1;if(level===Z_DEFAULT_COMPRESSION$1){level=6;}if(windowBits<0){/* suppress zlib wrapper */wrap=0;windowBits=-windowBits;}else if(windowBits>15){wrap=2;/* write gzip wrapper instead */windowBits-=16;}if(memLevel<1||memLevel>MAX_MEM_LEVEL||method!==Z_DEFLATED$2||windowBits<8||windowBits>15||level<0||level>9||strategy<0||strategy>Z_FIXED$1){return err(strm,Z_STREAM_ERROR$2);}if(windowBits===8){windowBits=9;}/* until 256-byte window bug fixed */var s=new DeflateState();strm.state=s;s.strm=strm;s.wrap=wrap;s.gzhead=null;s.w_bits=windowBits;s.w_size=1<window yet */
-s.lit_bufsize=1<lit_bufsize, sizeof(ush)+2);
-//s->pending_buf = (uchf *) overlay;
-s.pending_buf=new Buf8(s.pending_buf_size);// It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)
-//s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
-s.d_buf=1*s.lit_bufsize;//s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
-s.l_buf=(1+2)*s.lit_bufsize;s.level=level;s.strategy=strategy;s.method=method;return deflateReset(strm);}function deflate$1(strm,flush){var old_flush,s;var beg,val;// for gzip header write only
-if(!strm||!strm.state||flush>Z_BLOCK$2||flush<0){return strm?err(strm,Z_STREAM_ERROR$2):Z_STREAM_ERROR$2;}s=strm.state;if(!strm.output||!strm.input&&strm.avail_in!==0||s.status===FINISH_STATE&&flush!==Z_FINISH$2){return err(strm,strm.avail_out===0?Z_BUF_ERROR$2:Z_STREAM_ERROR$2);}s.strm=strm;/* just in case */old_flush=s.last_flush;s.last_flush=flush;/* Write the header */if(s.status===INIT_STATE){if(s.wrap===2){// GZIP header
-strm.adler=0;//crc32(0L, Z_NULL, 0);
-put_byte(s,31);put_byte(s,139);put_byte(s,8);if(!s.gzhead){// s->gzhead == Z_NULL
-put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,s.level===9?2:s.strategy>=Z_HUFFMAN_ONLY$1||s.level<2?4:0);put_byte(s,OS_CODE);s.status=BUSY_STATE;}else {put_byte(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(!s.gzhead.extra?0:4)+(!s.gzhead.name?0:8)+(!s.gzhead.comment?0:16));put_byte(s,s.gzhead.time&0xff);put_byte(s,s.gzhead.time>>8&0xff);put_byte(s,s.gzhead.time>>16&0xff);put_byte(s,s.gzhead.time>>24&0xff);put_byte(s,s.level===9?2:s.strategy>=Z_HUFFMAN_ONLY$1||s.level<2?4:0);put_byte(s,s.gzhead.os&0xff);if(s.gzhead.extra&&s.gzhead.extra.length){put_byte(s,s.gzhead.extra.length&0xff);put_byte(s,s.gzhead.extra.length>>8&0xff);}if(s.gzhead.hcrc){strm.adler=crc32(strm.adler,s.pending_buf,s.pending,0);}s.gzindex=0;s.status=EXTRA_STATE;}}else// DEFLATE header
-{var header=Z_DEFLATED$2+(s.w_bits-8<<4)<<8;var level_flags=-1;if(s.strategy>=Z_HUFFMAN_ONLY$1||s.level<2){level_flags=0;}else if(s.level<6){level_flags=1;}else if(s.level===6){level_flags=2;}else {level_flags=3;}header|=level_flags<<6;if(s.strstart!==0){header|=PRESET_DICT;}header+=31-header%31;s.status=BUSY_STATE;putShortMSB(s,header);/* Save the adler32 of the preset dictionary: */if(s.strstart!==0){putShortMSB(s,strm.adler>>>16);putShortMSB(s,strm.adler&0xffff);}strm.adler=1;// adler32(0L, Z_NULL, 0);
-}}//#ifdef GZIP
-if(s.status===EXTRA_STATE){if(s.gzhead.extra/* != Z_NULL*/){beg=s.pending;/* start of bytes to update crc */while(s.gzindex<(s.gzhead.extra.length&0xffff)){if(s.pending===s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg);}flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size){break;}}put_byte(s,s.gzhead.extra[s.gzindex]&0xff);s.gzindex++;}if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg);}if(s.gzindex===s.gzhead.extra.length){s.gzindex=0;s.status=NAME_STATE;}}else {s.status=NAME_STATE;}}if(s.status===NAME_STATE){if(s.gzhead.name/* != Z_NULL*/){beg=s.pending;/* start of bytes to update crc */ //int val;
-do{if(s.pending===s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg);}flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size){val=1;break;}}// JS specific: little magic to add zero terminator to end of string
-if(s.gzindexbeg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg);}if(val===0){s.gzindex=0;s.status=COMMENT_STATE;}}else {s.status=COMMENT_STATE;}}if(s.status===COMMENT_STATE){if(s.gzhead.comment/* != Z_NULL*/){beg=s.pending;/* start of bytes to update crc */ //int val;
-do{if(s.pending===s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg);}flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size){val=1;break;}}// JS specific: little magic to add zero terminator to end of string
-if(s.gzindexbeg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg);}if(val===0){s.status=HCRC_STATE;}}else {s.status=HCRC_STATE;}}if(s.status===HCRC_STATE){if(s.gzhead.hcrc){if(s.pending+2>s.pending_buf_size){flush_pending(strm);}if(s.pending+2<=s.pending_buf_size){put_byte(s,strm.adler&0xff);put_byte(s,strm.adler>>8&0xff);strm.adler=0;//crc32(0L, Z_NULL, 0);
-s.status=BUSY_STATE;}}else {s.status=BUSY_STATE;}}//#endif
-/* Flush as much pending output as possible */if(s.pending!==0){flush_pending(strm);if(strm.avail_out===0){/* Since avail_out is 0, deflate will be called again with
- * more output space, but possibly with both pending and
- * avail_in equal to zero. There won't be anything to do,
- * but this is not an error situation so make sure we
- * return OK instead of BUF_ERROR at next call of deflate:
- */s.last_flush=-1;return Z_OK$2;}/* Make sure there is something to do and avoid duplicate consecutive
- * flushes. For repeated and useless calls with Z_FINISH, we keep
- * returning Z_STREAM_END instead of Z_BUF_ERROR.
- */}else if(strm.avail_in===0&&rank(flush)<=rank(old_flush)&&flush!==Z_FINISH$2){return err(strm,Z_BUF_ERROR$2);}/* User must not provide more input after the first FINISH: */if(s.status===FINISH_STATE&&strm.avail_in!==0){return err(strm,Z_BUF_ERROR$2);}/* Start a new block or continue the current one.
- */if(strm.avail_in!==0||s.lookahead!==0||flush!==Z_NO_FLUSH$1&&s.status!==FINISH_STATE){var bstate=s.strategy===Z_HUFFMAN_ONLY$1?deflate_huff(s,flush):s.strategy===Z_RLE$1?deflate_rle(s,flush):configuration_table[s.level].func(s,flush);if(bstate===BS_FINISH_STARTED||bstate===BS_FINISH_DONE){s.status=FINISH_STATE;}if(bstate===BS_NEED_MORE||bstate===BS_FINISH_STARTED){if(strm.avail_out===0){s.last_flush=-1;/* avoid BUF_ERROR next call, see above */}return Z_OK$2;/* If flush != Z_NO_FLUSH && avail_out == 0, the next call
- * of deflate should use the same flush parameter to make sure
- * that the flush is complete. So we don't have to output an
- * empty block here, this will be done at next call. This also
- * ensures that for a very small output buffer, we emit at most
- * one empty block.
- */}if(bstate===BS_BLOCK_DONE){if(flush===Z_PARTIAL_FLUSH$1){_tr_align(s);}else if(flush!==Z_BLOCK$2){/* FULL_FLUSH or SYNC_FLUSH */_tr_stored_block(s,0,0,false);/* For a full flush, this empty block will be recognized
- * as a special marker by inflate_sync().
- */if(flush===Z_FULL_FLUSH$1){/*** CLEAR_HASH(s); ***/ /* forget history */zero(s.head);// Fill with NIL (= 0);
-if(s.lookahead===0){s.strstart=0;s.block_start=0;s.insert=0;}}}flush_pending(strm);if(strm.avail_out===0){s.last_flush=-1;/* avoid BUF_ERROR at next call, see above */return Z_OK$2;}}}//Assert(strm->avail_out > 0, "bug2");
-//if (strm.avail_out <= 0) { throw new Error("bug2");}
-if(flush!==Z_FINISH$2){return Z_OK$2;}if(s.wrap<=0){return Z_STREAM_END$2;}/* Write the trailer */if(s.wrap===2){put_byte(s,strm.adler&0xff);put_byte(s,strm.adler>>8&0xff);put_byte(s,strm.adler>>16&0xff);put_byte(s,strm.adler>>24&0xff);put_byte(s,strm.total_in&0xff);put_byte(s,strm.total_in>>8&0xff);put_byte(s,strm.total_in>>16&0xff);put_byte(s,strm.total_in>>24&0xff);}else {putShortMSB(s,strm.adler>>>16);putShortMSB(s,strm.adler&0xffff);}flush_pending(strm);/* If avail_out is zero, the application will call deflate again
- * to flush the rest.
- */if(s.wrap>0){s.wrap=-s.wrap;}/* write the trailer only once! */return s.pending!==0?Z_OK$2:Z_STREAM_END$2;}function deflateEnd(strm){var status;if(!strm/*== Z_NULL*/||!strm.state/*== Z_NULL*/){return Z_STREAM_ERROR$2;}status=strm.state.status;if(status!==INIT_STATE&&status!==EXTRA_STATE&&status!==NAME_STATE&&status!==COMMENT_STATE&&status!==HCRC_STATE&&status!==BUSY_STATE&&status!==FINISH_STATE){return err(strm,Z_STREAM_ERROR$2);}strm.state=null;return status===BUSY_STATE?err(strm,Z_DATA_ERROR$2):Z_OK$2;}/* Not implemented
- exports.deflateBound = deflateBound;
- exports.deflateCopy = deflateCopy;
- exports.deflateParams = deflateParams;
- exports.deflatePending = deflatePending;
- exports.deflatePrime = deflatePrime;
- exports.deflateTune = deflateTune;
- */ // See state defs from inflate.js
-var BAD$1=30;/* got a data error -- remain here until reset */var TYPE$2=12;/* i: waiting for type bits, including last-flag bit */ /*
- Decode literal, length, and distance codes and write out the resulting
- literal and match bytes until either not enough input or output is
- available, an end-of-block is encountered, or a data error is encountered.
- When large enough input and output buffers are supplied to inflate(), for
- example, a 16K input buffer and a 64K output buffer, more than 95% of the
- inflate execution time is spent in this routine.
-
- Entry assumptions:
-
- state.mode === LEN
- strm.avail_in >= 6
- strm.avail_out >= 258
- start >= strm.avail_out
- state.bits < 8
-
- On return, state.mode is one of:
-
- LEN -- ran out of enough output space or enough available input
- TYPE -- reached end of block code, inflate() to interpret next block
- BAD -- error in block data
-
- Notes:
-
- - The maximum input bits used by a length/distance pair is 15 bits for the
- length code, 5 bits for the length extra, 15 bits for the distance code,
- and 13 bits for the distance extra. This totals 48 bits, or six bytes.
- Therefore if strm.avail_in >= 6, then there is enough input to avoid
- checking for available input while decoding.
-
- - The maximum bytes that a single length/distance pair can output is 258
- bytes, which is the maximum length that can be coded. inflate_fast()
- requires strm.avail_out >= 258 for each loop to avoid checking for
- output space.
- */function inflate_fast(strm,start){var state;var _in;/* local strm.input */var last;/* have enough input while in < last */var _out;/* local strm.output */var beg;/* inflate()'s initial strm.output */var end;/* while out < end, enough space available */ //#ifdef INFLATE_STRICT
-var dmax;/* maximum distance from zlib header */ //#endif
-var wsize;/* window size or zero if not using window */var whave;/* valid bytes in the window */var wnext;/* window write index */ // Use `s_window` instead `window`, avoid conflict with instrumentation tools
-var s_window;/* allocated sliding window, if wsize != 0 */var hold;/* local strm.hold */var bits;/* local strm.bits */var lcode;/* local strm.lencode */var dcode;/* local strm.distcode */var lmask;/* mask for first level of length codes */var dmask;/* mask for first level of distance codes */var here;/* retrieved table entry */var op;/* code bits, operation, extra bits, or */ /* window position, window bytes to copy */var len;/* match length, unused bytes */var dist;/* match distance */var from;/* where to copy match from */var from_source;var input,output;// JS specific, because we have no pointers
-/* copy state to local variables */state=strm.state;//here = state.here;
-_in=strm.next_in;input=strm.input;last=_in+(strm.avail_in-5);_out=strm.next_out;output=strm.output;beg=_out-(start-strm.avail_out);end=_out+(strm.avail_out-257);//#ifdef INFLATE_STRICT
-dmax=state.dmax;//#endif
-wsize=state.wsize;whave=state.whave;wnext=state.wnext;s_window=state.window;hold=state.hold;bits=state.bits;lcode=state.lencode;dcode=state.distcode;lmask=(1<>>24/*here.bits*/;hold>>>=op;bits-=op;op=here>>>16&0xff/*here.op*/;if(op===0){/* literal */ //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
-// "inflate: literal '%c'\n" :
-// "inflate: literal 0x%02x\n", here.val));
-output[_out++]=here&0xffff/*here.val*/;}else if(op&16){/* length base */len=here&0xffff/*here.val*/;op&=15;/* number of extra bits */if(op){if(bits>>=op;bits-=op;}//Tracevv((stderr, "inflate: length %u\n", len));
-if(bits<15){hold+=input[_in++]<>>24/*here.bits*/;hold>>>=op;bits-=op;op=here>>>16&0xff/*here.op*/;if(op&16){/* distance base */dist=here&0xffff/*here.val*/;op&=15;/* number of extra bits */if(bitsdmax){strm.msg='invalid distance too far back';state.mode=BAD$1;break top;}//#endif
-hold>>>=op;bits-=op;//Tracevv((stderr, "inflate: distance %u\n", dist));
-op=_out-beg;/* max distance in output */if(dist>op){/* see if copy from window */op=dist-op;/* distance back in window */if(op>whave){if(state.sane){strm.msg='invalid distance too far back';state.mode=BAD$1;break top;}// (!) This block is disabled in zlib defailts,
-// don't enable it for binary compatibility
-//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
-// if (len <= op - whave) {
-// do {
-// output[_out++] = 0;
-// } while (--len);
-// continue top;
-// }
-// len -= op - whave;
-// do {
-// output[_out++] = 0;
-// } while (--op > whave);
-// if (op === 0) {
-// from = _out - dist;
-// do {
-// output[_out++] = output[from++];
-// } while (--len);
-// continue top;
-// }
-//#endif
-}from=0;// window index
-from_source=s_window;if(wnext===0){/* very common case */from+=wsize-op;if(op2){output[_out++]=from_source[from++];output[_out++]=from_source[from++];output[_out++]=from_source[from++];len-=3;}if(len){output[_out++]=from_source[from++];if(len>1){output[_out++]=from_source[from++];}}}else {from=_out-dist;/* copy direct from output */do{/* minimum length is three */output[_out++]=output[from++];output[_out++]=output[from++];output[_out++]=output[from++];len-=3;}while(len>2);if(len){output[_out++]=output[from++];if(len>1){output[_out++]=output[from++];}}}}else if((op&64)===0){/* 2nd level distance code */here=dcode[(here&0xffff)+(/*here.val*/hold&(1<>3;_in-=len;bits-=len<<3;hold&=(1< end */var count=new Buf16(MAXBITS+1);//[MAXBITS+1]; /* number of codes of each length */
-var offs=new Buf16(MAXBITS+1);//[MAXBITS+1]; /* offsets in table for each length */
-var extra=null;var extra_index=0;var here_bits,here_op,here_val;/*
- Process a set of code lengths to create a canonical Huffman code. The
- code lengths are lens[0..codes-1]. Each length corresponds to the
- symbols 0..codes-1. The Huffman code is generated by first sorting the
- symbols by length from short to long, and retaining the symbol order
- for codes with equal lengths. Then the code starts with all zero bits
- for the first code of the shortest length, and the codes are integer
- increments for the same length, and zeros are appended as the length
- increases. For the deflate format, these bits are stored backwards
- from their more natural integer increment ordering, and so when the
- decoding tables are built in the large loop below, the integer codes
- are incremented backwards.
-
- This routine assumes, but does not check, that all of the entries in
- lens[] are in the range 0..MAXBITS. The caller must assure this.
- 1..MAXBITS is interpreted as that code length. zero means that that
- symbol does not occur in this code.
-
- The codes are sorted by computing a count of codes for each length,
- creating from that a table of starting indices for each length in the
- sorted table, and then entering the symbols in order in the sorted
- table. The sorted table is work[], with that space being provided by
- the caller.
-
- The length counts are used for other purposes as well, i.e. finding
- the minimum and maximum length codes, determining if there are any
- codes at all, checking for a valid set of lengths, and looking ahead
- at length counts to determine sub-table sizes when building the
- decoding tables.
- */ /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */for(len=0;len<=MAXBITS;len++){count[len]=0;}for(sym=0;sym=1;max--){if(count[max]!==0){break;}}if(root>max){root=max;}if(max===0){/* no symbols to code at all */ //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */
-//table.bits[opts.table_index] = 1; //here.bits = (var char)1;
-//table.val[opts.table_index++] = 0; //here.val = (var short)0;
-table[table_index++]=1<<24|64<<16|0;//table.op[opts.table_index] = 64;
-//table.bits[opts.table_index] = 1;
-//table.val[opts.table_index++] = 0;
-table[table_index++]=1<<24|64<<16|0;opts.bits=1;return 0;/* no symbols, but wait for decoding to report error */}for(min=1;min0&&(type===CODES$1||max!==1)){return -1;/* incomplete set */}/* generate offsets into symbol table for each length for sorting */offs[1]=0;for(len=1;len root */used=1<ENOUGH_LENS$1||type===DISTS$1&&used>ENOUGH_DISTS$1){return 1;}/* process all codes and make table entries */for(;;){/* create table entry */here_bits=len-drop;if(work[sym]end){here_op=extra[extra_index+work[sym]];here_val=base[base_index+work[sym]];}else {here_op=32+64;/* end of block */here_val=0;}/* replicate for those indices with low len bits equal to huff */incr=1<>drop)+fill]=here_bits<<24|here_op<<16|here_val|0;}while(fill!==0);/* backwards increment the len-bit code huff */incr=1<>=1;}if(incr!==0){huff&=incr-1;huff+=incr;}else {huff=0;}/* go to next symbol, update count, len */sym++;if(--count[len]===0){if(len===max){break;}len=lens[lens_index+work[sym]];}/* create new sub-table if needed */if(len>root&&(huff&mask)!==low){/* if first time, transition to sub-tables */if(drop===0){drop=root;}/* increment past last table */next+=min;/* here min is 1 << curr */ /* determine length of next table */curr=len-drop;left=1<ENOUGH_LENS$1||type===DISTS$1&&used>ENOUGH_DISTS$1){return 1;}/* point entry in root table to sub-table */low=huff&mask;/*table.op[low] = curr;
- table.bits[low] = root;
- table.val[low] = next - opts.table_index;*/table[low]=root<<24|curr<<16|next-table_index|0;}}/* fill in remaining table entry if code is incomplete (guaranteed to have
- at most one remaining entry, since if the code is incomplete, the
- maximum code length that was allowed to get this far is one bit) */if(huff!==0){//table.op[next + huff] = 64; /* invalid code marker */
-//table.bits[next + huff] = len - drop;
-//table.val[next + huff] = 0;
-table[next+huff]=len-drop<<24|64<<16|0;}/* set return parameters */ //opts.table_index += used;
-opts.bits=root;return 0;}var CODES=0;var LENS=1;var DISTS=2;/* Public constants ==========================================================*/ /* ===========================================================================*/ /* Allowed flush values; see deflate() and inflate() below for details */ //var Z_NO_FLUSH = 0;
-//var Z_PARTIAL_FLUSH = 1;
-//var Z_SYNC_FLUSH = 2;
-//var Z_FULL_FLUSH = 3;
-var Z_FINISH$1=4;var Z_BLOCK$1=5;var Z_TREES$1=6;/* Return codes for the compression/decompression functions. Negative values
- * are errors, positive values are used for special but normal events.
- */var Z_OK$1=0;var Z_STREAM_END$1=1;var Z_NEED_DICT$1=2;//var Z_ERRNO = -1;
-var Z_STREAM_ERROR$1=-2;var Z_DATA_ERROR$1=-3;var Z_MEM_ERROR=-4;var Z_BUF_ERROR$1=-5;//var Z_VERSION_ERROR = -6;
-/* The deflate compression method */var Z_DEFLATED$1=8;/* STATES ====================================================================*/ /* ===========================================================================*/var HEAD=1;/* i: waiting for magic header */var FLAGS=2;/* i: waiting for method and flags (gzip) */var TIME=3;/* i: waiting for modification time (gzip) */var OS=4;/* i: waiting for extra flags and operating system (gzip) */var EXLEN=5;/* i: waiting for extra length (gzip) */var EXTRA=6;/* i: waiting for extra bytes (gzip) */var NAME=7;/* i: waiting for end of file name (gzip) */var COMMENT=8;/* i: waiting for end of comment (gzip) */var HCRC=9;/* i: waiting for header crc (gzip) */var DICTID=10;/* i: waiting for dictionary check value */var DICT=11;/* waiting for inflateSetDictionary() call */var TYPE$1=12;/* i: waiting for type bits, including last-flag bit */var TYPEDO=13;/* i: same, but skip check to exit inflate on new block */var STORED=14;/* i: waiting for stored size (length and complement) */var COPY_=15;/* i/o: same as COPY below, but only first time in */var COPY=16;/* i/o: waiting for input or output to copy stored block */var TABLE=17;/* i: waiting for dynamic block table lengths */var LENLENS=18;/* i: waiting for code length code lengths */var CODELENS=19;/* i: waiting for length/lit and distance code lengths */var LEN_=20;/* i: same as LEN below, but only first time in */var LEN=21;/* i: waiting for length/lit/eob code */var LENEXT=22;/* i: waiting for length extra bits */var DIST=23;/* i: waiting for distance code */var DISTEXT=24;/* i: waiting for distance extra bits */var MATCH=25;/* o: waiting for output space to copy string */var LIT=26;/* o: waiting for output space to write literal */var CHECK=27;/* i: waiting for 32-bit check value */var LENGTH=28;/* i: waiting for 32-bit length (gzip) */var DONE=29;/* finished check, done -- remain here until reset */var BAD=30;/* got a data error -- remain here until reset */var MEM=31;/* got an inflate() memory error -- remain here until reset */var SYNC=32;/* looking for synchronization bytes to restart inflate() */ /* ===========================================================================*/var ENOUGH_LENS=852;var ENOUGH_DISTS=592;function zswap32(q){return (q>>>24&0xff)+(q>>>8&0xff00)+((q&0xff00)<<8)+((q&0xff)<<24);}function InflateState(){this.mode=0;/* current inflate mode */this.last=false;/* true if processing last block */this.wrap=0;/* bit 0 true for zlib, bit 1 true for gzip */this.havedict=false;/* true if dictionary provided */this.flags=0;/* gzip header method and flags (0 if zlib) */this.dmax=0;/* zlib header max distance (INFLATE_STRICT) */this.check=0;/* protected copy of check value */this.total=0;/* protected copy of output count */ // TODO: may be {}
-this.head=null;/* where to save gzip header information */ /* sliding window */this.wbits=0;/* log base 2 of requested window size */this.wsize=0;/* window size or zero if not using window */this.whave=0;/* valid bytes in the window */this.wnext=0;/* window write index */this.window=null;/* allocated sliding window, if needed */ /* bit accumulator */this.hold=0;/* input bit accumulator */this.bits=0;/* number of bits in "in" */ /* for string and stored block copying */this.length=0;/* literal or length of data to copy */this.offset=0;/* distance back to copy string from */ /* for table and code decoding */this.extra=0;/* extra bits needed */ /* fixed and dynamic code tables */this.lencode=null;/* starting table for length/literal codes */this.distcode=null;/* starting table for distance codes */this.lenbits=0;/* index bits for lencode */this.distbits=0;/* index bits for distcode */ /* dynamic table building */this.ncode=0;/* number of code length code lengths */this.nlen=0;/* number of length code lengths */this.ndist=0;/* number of distance code lengths */this.have=0;/* number of code lengths in lens[] */this.next=null;/* next available space in codes[] */this.lens=new Buf16(320);/* temporary storage for code lengths */this.work=new Buf16(288);/* work area for code table building */ /*
- because we don't have pointers in js, we use lencode and distcode directly
- as buffers so we don't need codes
- */ //this.codes = new Buf32(ENOUGH); /* space for code tables */
-this.lendyn=null;/* dynamic table for length/literal codes (JS specific) */this.distdyn=null;/* dynamic table for distance codes (JS specific) */this.sane=0;/* if false, allow invalid distance too far */this.back=0;/* bits back of last unprocessed length/lit */this.was=0;/* initial length of match */}function inflateResetKeep(strm){var state;if(!strm||!strm.state){return Z_STREAM_ERROR$1;}state=strm.state;strm.total_in=strm.total_out=state.total=0;strm.msg='';/*Z_NULL*/if(state.wrap){/* to support ill-conceived Java test suite */strm.adler=state.wrap&1;}state.mode=HEAD;state.last=0;state.havedict=0;state.dmax=32768;state.head=null/*Z_NULL*/;state.hold=0;state.bits=0;//state.lencode = state.distcode = state.next = state.codes;
-state.lencode=state.lendyn=new Buf32(ENOUGH_LENS);state.distcode=state.distdyn=new Buf32(ENOUGH_DISTS);state.sane=1;state.back=-1;//Tracev((stderr, "inflate: reset\n"));
-return Z_OK$1;}function inflateReset(strm){var state;if(!strm||!strm.state){return Z_STREAM_ERROR$1;}state=strm.state;state.wsize=0;state.whave=0;state.wnext=0;return inflateResetKeep(strm);}function inflateReset2(strm,windowBits){var wrap;var state;/* get the state */if(!strm||!strm.state){return Z_STREAM_ERROR$1;}state=strm.state;/* extract wrap request from windowBits parameter */if(windowBits<0){wrap=0;windowBits=-windowBits;}else {wrap=(windowBits>>4)+1;if(windowBits<48){windowBits&=15;}}/* set number of window bits, free window if different */if(windowBits&&(windowBits<8||windowBits>15)){return Z_STREAM_ERROR$1;}if(state.window!==null&&state.wbits!==windowBits){state.window=null;}/* update state and reset the rest of it */state.wrap=wrap;state.wbits=windowBits;return inflateReset(strm);}function inflateInit2(strm,windowBits){var ret;var state;if(!strm){return Z_STREAM_ERROR$1;}//strm.msg = Z_NULL; /* in case we return an error */
-state=new InflateState();//if (state === Z_NULL) return Z_MEM_ERROR;
-//Tracev((stderr, "inflate: allocated\n"));
-strm.state=state;state.window=null/*Z_NULL*/;ret=inflateReset2(strm,windowBits);if(ret!==Z_OK$1){strm.state=null/*Z_NULL*/;}return ret;}/*
- Return state with length and distance decoding tables and index sizes set to
- fixed code decoding. Normally this returns fixed tables from inffixed.h.
- If BUILDFIXED is defined, then instead this routine builds the tables the
- first time it's called, and returns those tables the first time and
- thereafter. This reduces the size of the code by about 2K bytes, in
- exchange for a little execution time. However, BUILDFIXED should not be
- used for threaded applications, since the rewriting of the tables and virgin
- may not be thread-safe.
- */var virgin=true;var lenfix,distfix;// We have no pointers in JS, so keep tables separate
-function fixedtables(state){/* build fixed huffman tables if first call (may not be thread safe) */if(virgin){var sym;lenfix=new Buf32(512);distfix=new Buf32(32);/* literal/length table */sym=0;while(sym<144){state.lens[sym++]=8;}while(sym<256){state.lens[sym++]=9;}while(sym<280){state.lens[sym++]=7;}while(sym<288){state.lens[sym++]=8;}inflate_table(LENS,state.lens,0,288,lenfix,0,state.work,{bits:9});/* distance table */sym=0;while(sym<32){state.lens[sym++]=5;}inflate_table(DISTS,state.lens,0,32,distfix,0,state.work,{bits:5});/* do this just once */virgin=false;}state.lencode=lenfix;state.lenbits=9;state.distcode=distfix;state.distbits=5;}/*
- Update the window with the last wsize (normally 32K) bytes written before
- returning. If window does not exist yet, create it. This is only called
- when a window is already in use, or when output has been written during this
- inflate call, but the end of the deflate stream has not been reached yet.
- It is also called to create a window for dictionary data when a dictionary
- is loaded.
-
- Providing output buffers larger than 32K to inflate() should provide a speed
- advantage, since only the last 32K of output is copied to the sliding window
- upon return from inflate(), and since all distances after the first 32K of
- output will fall in the output data, making match copies simpler and faster.
- The advantage may be dependent on the size of the processor's data caches.
- */function updatewindow(strm,src,end,copy){var dist;var state=strm.state;/* if it hasn't been done already, allocate space for the window */if(state.window===null){state.wsize=1<wsize or less output bytes into the circular window */if(copy>=state.wsize){arraySet(state.window,src,end-state.wsize,state.wsize,0);state.wnext=0;state.whave=state.wsize;}else {dist=state.wsize-state.wnext;if(dist>copy){dist=copy;}//zmemcpy(state->window + state->wnext, end - copy, dist);
-arraySet(state.window,src,end-copy,dist,state.wnext);copy-=dist;if(copy){//zmemcpy(state->window, end - copy, copy);
-arraySet(state.window,src,end-copy,copy,0);state.wnext=copy;state.whave=state.wsize;}else {state.wnext+=dist;if(state.wnext===state.wsize){state.wnext=0;}if(state.whave>>8&0xff;state.check=crc32(state.check,hbuf,2,0);//===//
-//=== INITBITS();
-hold=0;bits=0;//===//
-state.mode=FLAGS;break;}state.flags=0;/* expect zlib header */if(state.head){state.head.done=false;}if(!(state.wrap&1)||/* check if zlib header allowed */(((hold&0xff)<*BITS(8)*/8)+(hold>>8))%31){strm.msg='incorrect header check';state.mode=BAD;break;}if((hold&0x0f)!==/*BITS(4)*/Z_DEFLATED$1){strm.msg='unknown compression method';state.mode=BAD;break;}//--- DROPBITS(4) ---//
-hold>>>=4;bits-=4;//---//
-len=(hold&0x0f)+/*BITS(4)*/8;if(state.wbits===0){state.wbits=len;}else if(len>state.wbits){strm.msg='invalid window size';state.mode=BAD;break;}state.dmax=1<>8&1;}if(state.flags&0x0200){//=== CRC2(state.check, hold);
-hbuf[0]=hold&0xff;hbuf[1]=hold>>>8&0xff;state.check=crc32(state.check,hbuf,2,0);//===//
-}//=== INITBITS();
-hold=0;bits=0;//===//
-state.mode=TIME;/* falls through */case TIME://=== NEEDBITS(32); */
-while(bits<32){if(have===0){break inf_leave;}have--;hold+=input[next++]<>>8&0xff;hbuf[2]=hold>>>16&0xff;hbuf[3]=hold>>>24&0xff;state.check=crc32(state.check,hbuf,4,0);//===
-}//=== INITBITS();
-hold=0;bits=0;//===//
-state.mode=OS;/* falls through */case OS://=== NEEDBITS(16); */
-while(bits<16){if(have===0){break inf_leave;}have--;hold+=input[next++]<>8;}if(state.flags&0x0200){//=== CRC2(state.check, hold);
-hbuf[0]=hold&0xff;hbuf[1]=hold>>>8&0xff;state.check=crc32(state.check,hbuf,2,0);//===//
-}//=== INITBITS();
-hold=0;bits=0;//===//
-state.mode=EXLEN;/* falls through */case EXLEN:if(state.flags&0x0400){//=== NEEDBITS(16); */
-while(bits<16){if(have===0){break inf_leave;}have--;hold+=input[next++]<>>8&0xff;state.check=crc32(state.check,hbuf,2,0);//===//
-}//=== INITBITS();
-hold=0;bits=0;//===//
-}else if(state.head){state.head.extra=null/*Z_NULL*/;}state.mode=EXTRA;/* falls through */case EXTRA:if(state.flags&0x0400){copy=state.length;if(copy>have){copy=have;}if(copy){if(state.head){len=state.head.extra_len-state.length;if(!state.head.extra){// Use untyped array for more conveniend processing later
-state.head.extra=new Array(state.head.extra_len);}arraySet(state.head.extra,input,next,// extra field is limited to 65536 bytes
-// - no need for additional size check
-copy,/*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/len);//zmemcpy(state.head.extra + len, next,
-// len + copy > state.head.extra_max ?
-// state.head.extra_max - len : copy);
-}if(state.flags&0x0200){state.check=crc32(state.check,input,copy,next);}have-=copy;next+=copy;state.length-=copy;}if(state.length){break inf_leave;}}state.length=0;state.mode=NAME;/* falls through */case NAME:if(state.flags&0x0800){if(have===0){break inf_leave;}copy=0;do{// TODO: 2 or 1 bytes?
-len=input[next+copy++];/* use constant limit because in js we should not preallocate memory */if(state.head&&len&&state.length<65536/*state.head.name_max*/){state.head.name+=String.fromCharCode(len);}}while(len&©>9&1;state.head.done=true;}strm.adler=state.check=0;state.mode=TYPE$1;break;case DICTID://=== NEEDBITS(32); */
-while(bits<32){if(have===0){break inf_leave;}have--;hold+=input[next++]<>>=bits&7;bits-=bits&7;//---//
-state.mode=CHECK;break;}//=== NEEDBITS(3); */
-while(bits<3){if(have===0){break inf_leave;}have--;hold+=input[next++]<>>=1;bits-=1;//---//
-switch(hold&0x03){/*BITS(2)*/case 0:/* stored block */ //Tracev((stderr, "inflate: stored block%s\n",
-// state.last ? " (last)" : ""));
-state.mode=STORED;break;case 1:/* fixed block */fixedtables(state);//Tracev((stderr, "inflate: fixed codes block%s\n",
-// state.last ? " (last)" : ""));
-state.mode=LEN_;/* decode codes */if(flush===Z_TREES$1){//--- DROPBITS(2) ---//
-hold>>>=2;bits-=2;//---//
-break inf_leave;}break;case 2:/* dynamic block */ //Tracev((stderr, "inflate: dynamic codes block%s\n",
-// state.last ? " (last)" : ""));
-state.mode=TABLE;break;case 3:strm.msg='invalid block type';state.mode=BAD;}//--- DROPBITS(2) ---//
-hold>>>=2;bits-=2;//---//
-break;case STORED://--- BYTEBITS() ---// /* go to byte boundary */
-hold>>>=bits&7;bits-=bits&7;//---//
-//=== NEEDBITS(32); */
-while(bits<32){if(have===0){break inf_leave;}have--;hold+=input[next++]<>>16^0xffff)){strm.msg='invalid stored block lengths';state.mode=BAD;break;}state.length=hold&0xffff;//Tracev((stderr, "inflate: stored length %u\n",
-// state.length));
-//=== INITBITS();
-hold=0;bits=0;//===//
-state.mode=COPY_;if(flush===Z_TREES$1){break inf_leave;}/* falls through */case COPY_:state.mode=COPY;/* falls through */case COPY:copy=state.length;if(copy){if(copy>have){copy=have;}if(copy>left){copy=left;}if(copy===0){break inf_leave;}//--- zmemcpy(put, next, copy); ---
-arraySet(output,input,next,copy,put);//---//
-have-=copy;next+=copy;left-=copy;put+=copy;state.length-=copy;break;}//Tracev((stderr, "inflate: stored end\n"));
-state.mode=TYPE$1;break;case TABLE://=== NEEDBITS(14); */
-while(bits<14){if(have===0){break inf_leave;}have--;hold+=input[next++]<