diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..2c90ae7 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,2 @@ +> 0.25% +not dead diff --git a/bin/synth.js b/bin/synth.js index 152f0be..5c93e1a 100755 --- a/bin/synth.js +++ b/bin/synth.js @@ -9,7 +9,8 @@ try { const args = getArgs(process.argv); if (args.help || args.input === undefined) { - return console.log(fs.readFileSync(`${__dirname}/../man/help.txt`, {encoding: 'utf8'})); + console.log(fs.readFileSync(`${__dirname}/../man/help.txt`, {encoding: 'utf8'})); + process.exit(); } if (args.verbose) { @@ -32,6 +33,8 @@ try { return console.log('dry run complete'); } + if (!wav) process.exit(); + if (args.verbose) { console.log('writing buffer...'); } diff --git a/bin/utils/args.js b/bin/utils/args.js index 38c2b46..a32097e 100644 --- a/bin/utils/args.js +++ b/bin/utils/args.js @@ -1,19 +1,28 @@ 'use strict'; -function argumentToVerboseFlag(argument) { - const camelCase = /^[\w]|\B[A-Z]/g; +const camelCase = /^[\w]|\B[A-Z]/g; +const beginning = /^(.).*$/; +/** + * @param {string} argument + */ +function argumentToVerboseFlag(argument) { return argument.replace(camelCase, (character, index) => `-${'-'.charAt(index)}${character.toLowerCase()}`); } +/** + * @param {string} argument + */ function argumentToConciseFlag(argument) { - const beginning = /^(.).*$/; - - return argument.replace(beginning, (match, character) => `-${character}`); + return argument.replace(beginning, (_, character) => `-${character}`); } -// utility function to convert -// command-line arguments to object +/** + * utility function to convert + * command-line arguments to object + * @param {Array} argv + * @returns {{ help?: boolean; input?: string; verbose?: boolean; DryRun?: boolean; output?: string; }} + */ module.exports = function getArguments(argv) { const argumentNames = [ 'input', diff --git a/dst/synth.min.js b/dst/synth.min.js index 23c6d94..c0bf789 100644 --- a/dst/synth.min.js +++ b/dst/synth.min.js @@ -1,3 +1,2 @@ -!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.synth=t()}}(function(){return function(){function t(e,r,n){function i(a,s){if(!r[a]){if(!e[a]){var u="function"==typeof require&&require;if(!s&&u)return u(a,!0);if(o)return o(a,!0);var f=new Error("Cannot find module '"+a+"'");throw f.code="MODULE_NOT_FOUND",f}var h=r[a]={exports:{}};e[a][0].call(h.exports,function(t){return i(e[a][1][t]||t)},h,h.exports,t,e,r,n)}return r[a].exports}for(var o="function"==typeof require&&require,a=0;a0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function i(t){var e=n(t),r=e[0],i=e[1];return 3*(r+i)/4-i}function o(t,e,r){return 3*(e+r)/4-r}function a(t){var e,r,i=n(t),a=i[0],s=i[1],u=new c(o(t,a,s)),f=0,h=s>0?a-4:a;for(r=0;r>16&255,u[f++]=e>>8&255,u[f++]=255&e;return 2===s&&(e=l[t.charCodeAt(r)]<<2|l[t.charCodeAt(r+1)]>>4,u[f++]=255&e),1===s&&(e=l[t.charCodeAt(r)]<<10|l[t.charCodeAt(r+1)]<<4|l[t.charCodeAt(r+2)]>>2,u[f++]=e>>8&255,u[f++]=255&e),u}function s(t){return h[t>>18&63]+h[t>>12&63]+h[t>>6&63]+h[63&t]}function u(t,e,r){for(var n,i=[],o=e;oa?a:o+16383));return 1===n?(e=t[r-1],i.push(h[e>>2]+h[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(h[e>>10]+h[e>>4&63]+h[e<<2&63]+"=")),i.join("")}r.byteLength=i,r.toByteArray=a,r.fromByteArray=f;for(var h=[],l=[],c="undefined"!=typeof Uint8Array?Uint8Array:Array,p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",y=0,d=p.length;yJ)throw new RangeError('The value "'+t+'" is invalid for option "size"');var r=new Uint8Array(t);return Object.setPrototypeOf(r,e.prototype),r}function e(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return s(t)}return i(t,e,r)}function i(t,r,n){if("string"==typeof t)return u(t,r);if(ArrayBuffer.isView(t))return f(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(q(t,ArrayBuffer)||t&&q(t.buffer,ArrayBuffer))return h(t,r,n);if("undefined"!=typeof SharedArrayBuffer&&(q(t,SharedArrayBuffer)||t&&q(t.buffer,SharedArrayBuffer)))return h(t,r,n);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var i=t.valueOf&&t.valueOf();if(null!=i&&i!==t)return e.from(i,r,n);var o=l(t);if(o)return o;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return e.from(t[Symbol.toPrimitive]("string"),r,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function o(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function a(t,e,r){return o(t),t<=0?n(t):void 0!==e?"string"==typeof r?n(t).fill(e,r):n(t).fill(e):n(t)}function s(t){return o(t),n(t<0?0:0|c(t))}function u(t,r){if("string"==typeof r&&""!==r||(r="utf8"),!e.isEncoding(r))throw new TypeError("Unknown encoding: "+r);var i=0|y(t,r),o=n(i),a=o.write(t,r);return a!==i&&(o=o.slice(0,a)),o}function f(t){for(var e=t.length<0?0:0|c(t.length),r=n(e),i=0;i=J)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+J.toString(16)+" bytes");return 0|t}function p(t){return+t!=t&&(t=0),e.alloc(+t)}function y(t,r){if(e.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||q(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var n=t.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===n)return 0;for(var o=!1;;)switch(r){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return j(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return _(t).length;default:if(o)return i?-1:j(t).length;r=(""+r).toLowerCase(),o=!0}}function d(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,e>>>=0,r<=e)return"";for(t||(t="utf8");;)switch(t){case"hex":return I(this,e,r);case"utf8":case"utf-8":return B(this,e,r);case"ascii":return C(this,e,r);case"latin1":case"binary":return O(this,e,r);case"base64":return A(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return M(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function g(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function v(t,r,n,i,o){if(0===t.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,W(n)&&(n=o?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(o)return-1;n=t.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof r&&(r=e.from(r,i)),e.isBuffer(r))return 0===r.length?-1:b(t,r,n,i,o);if("number"==typeof r)return r&=255,"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(t,r,n):Uint8Array.prototype.lastIndexOf.call(t,r,n):b(t,[r],n,i,o);throw new TypeError("val must be string, number or Buffer")}function b(t,e,r,n,i){function o(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}var a=1,s=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a=2,s/=2,u/=2,r/=2}var f;if(i){var h=-1;for(f=r;fs&&(r=s-u),f=r;f>=0;f--){for(var l=!0,c=0;ci&&(n=i):n=i;var o=e.length;n>o/2&&(n=o/2);for(var a=0;a239?4:o>223?3:o>191?2:1;if(i+s<=r){var u,f,h,l;switch(s){case 1:o<128&&(a=o);break;case 2:u=t[i+1],128==(192&u)&&(l=(31&o)<<6|63&u)>127&&(a=l);break;case 3:u=t[i+1],f=t[i+2],128==(192&u)&&128==(192&f)&&(l=(15&o)<<12|(63&u)<<6|63&f)>2047&&(l<55296||l>57343)&&(a=l);break;case 4:u=t[i+1],f=t[i+2],h=t[i+3],128==(192&u)&&128==(192&f)&&128==(192&h)&&(l=(15&o)<<18|(63&u)<<12|(63&f)<<6|63&h)>65535&&l<1114112&&(a=l)}}null===a?(a=65533,s=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=s}return T(n)}function T(t){var e=t.length;if(e<=Z)return String.fromCharCode.apply(String,t);for(var r="",n=0;nn)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function R(t,r,n,i,o,a){if(!e.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>o||rt.length)throw new RangeError("Index out of range")}function x(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function L(t,e,r,n,i){return e=+e,r>>>=0,i||x(t,e,r,4,3.4028234663852886e38,-3.4028234663852886e38),G.write(t,e,r,n,23,4),r+4}function N(t,e,r,n,i){return e=+e,r>>>=0,i||x(t,e,r,8,1.7976931348623157e308,-1.7976931348623157e308),G.write(t,e,r,n,52,8),r+8}function D(t){if(t=t.split("=")[0],t=t.trim().replace($,""),t.length<2)return"";for(;t.length%4!=0;)t+="=";return t}function j(t,e){e=e||1/0;for(var r,n=t.length,i=null,o=[],a=0;a55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function z(t){for(var e=[],r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function _(t){return Y.toByteArray(D(t))}function V(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function q(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function W(t){return t!==t}var Y=t("base64-js"),G=t("ieee754"),X="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;r.Buffer=e,r.SlowBuffer=p,r.INSPECT_MAX_BYTES=50;var J=2147483647;r.kMaxLength=J,e.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),42===t.foo()}catch(t){return!1}}(),e.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(e.prototype,"parent",{enumerable:!0,get:function(){if(e.isBuffer(this))return this.buffer}}),Object.defineProperty(e.prototype,"offset",{enumerable:!0,get:function(){if(e.isBuffer(this))return this.byteOffset}}),e.poolSize=8192,e.from=function(t,e,r){return i(t,e,r)},Object.setPrototypeOf(e.prototype,Uint8Array.prototype),Object.setPrototypeOf(e,Uint8Array),e.alloc=function(t,e,r){return a(t,e,r)},e.allocUnsafe=function(t){return s(t)},e.allocUnsafeSlow=function(t){return s(t)},e.isBuffer=function(t){return null!=t&&!0===t._isBuffer&&t!==e.prototype},e.compare=function(t,r){if(q(t,Uint8Array)&&(t=e.from(t,t.offset,t.byteLength)),q(r,Uint8Array)&&(r=e.from(r,r.offset,r.byteLength)),!e.isBuffer(t)||!e.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===r)return 0;for(var n=t.length,i=r.length,o=0,a=Math.min(n,i);oe&&(t+=" ... "),""},X&&(e.prototype[X]=e.prototype.inspect),e.prototype.compare=function(t,r,n,i,o){if(q(t,Uint8Array)&&(t=e.from(t,t.offset,t.byteLength)),!e.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===r&&(r=0),void 0===n&&(n=t?t.length:0),void 0===i&&(i=0),void 0===o&&(o=this.length),r<0||n>t.length||i<0||o>this.length)throw new RangeError("out of range index");if(i>=o&&r>=n)return 0;if(i>=o)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,o>>>=0,this===t)return 0;for(var a=o-i,s=n-r,u=Math.min(a,s),f=this.slice(i,o),h=t.slice(r,n),l=0;l>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return w(this,t,e,r);case"utf8":case"utf-8":return m(this,t,e,r);case"ascii":return k(this,t,e,r);case"latin1":case"binary":return E(this,t,e,r);case"base64":return S(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},e.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Z=4096;e.prototype.slice=function(t,r){var n=this.length;t=~~t,r=void 0===r?n:~~r,t<0?(t+=n)<0&&(t=0):t>n&&(t=n),r<0?(r+=n)<0&&(r=0):r>n&&(r=n),r>>=0,e>>>=0,r||P(t,e,this.length);for(var n=this[t],i=1,o=0;++o>>=0,e>>>=0,r||P(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},e.prototype.readUInt8=function(t,e){return t>>>=0,e||P(t,1,this.length),this[t]},e.prototype.readUInt16LE=function(t,e){return t>>>=0,e||P(t,2,this.length),this[t]|this[t+1]<<8},e.prototype.readUInt16BE=function(t,e){return t>>>=0,e||P(t,2,this.length),this[t]<<8|this[t+1]},e.prototype.readUInt32LE=function(t,e){return t>>>=0,e||P(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},e.prototype.readUInt32BE=function(t,e){return t>>>=0,e||P(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},e.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||P(t,e,this.length);for(var n=this[t],i=1,o=0;++o=i&&(n-=Math.pow(2,8*e)),n},e.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||P(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},e.prototype.readInt8=function(t,e){return t>>>=0,e||P(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},e.prototype.readInt16LE=function(t,e){t>>>=0,e||P(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},e.prototype.readInt16BE=function(t,e){t>>>=0,e||P(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},e.prototype.readInt32LE=function(t,e){return t>>>=0,e||P(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},e.prototype.readInt32BE=function(t,e){return t>>>=0,e||P(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},e.prototype.readFloatLE=function(t,e){return t>>>=0,e||P(t,4,this.length),G.read(this,t,!0,23,4)},e.prototype.readFloatBE=function(t,e){return t>>>=0,e||P(t,4,this.length),G.read(this,t,!1,23,4)},e.prototype.readDoubleLE=function(t,e){return t>>>=0,e||P(t,8,this.length),G.read(this,t,!0,52,8)},e.prototype.readDoubleBE=function(t,e){return t>>>=0,e||P(t,8,this.length),G.read(this,t,!1,52,8)},e.prototype.writeUIntLE=function(t,e,r,n){if(t=+t,e>>>=0,r>>>=0,!n){R(this,t,e,r,Math.pow(2,8*r)-1,0)}var i=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,!n){R(this,t,e,r,Math.pow(2,8*r)-1,0)}var i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},e.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,1,255,0),this[e]=255&t,e+1},e.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},e.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},e.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},e.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},e.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);R(this,t,e,r,i-1,-i)}var o=0,a=1,s=0;for(this[e]=255&t;++o>0)-s&255;return e+r},e.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);R(this,t,e,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===s&&0!==this[e+o+1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+r},e.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},e.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},e.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},e.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},e.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},e.prototype.writeFloatLE=function(t,e,r){return L(this,t,e,!0,r)},e.prototype.writeFloatBE=function(t,e,r){return L(this,t,e,!1,r)},e.prototype.writeDoubleLE=function(t,e,r){return N(this,t,e,!0,r)},e.prototype.writeDoubleBE=function(t,e,r){return N(this,t,e,!1,r)},e.prototype.copy=function(t,r,n,i){if(!e.isBuffer(t))throw new TypeError("argument should be a Buffer");if(n||(n=0),i||0===i||(i=this.length),r>=t.length&&(r=t.length),r||(r=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-r=0;--a)t[a+r]=this[a+n];else Uint8Array.prototype.set.call(t,this.subarray(n,i),r);return o},e.prototype.fill=function(t,r,n,i){if("string"==typeof t){if("string"==typeof r?(i=r,r=0,n=this.length):"string"==typeof n&&(i=n,n=this.length),void 0!==i&&"string"!=typeof i)throw new TypeError("encoding must be a string");if("string"==typeof i&&!e.isEncoding(i))throw new TypeError("Unknown encoding: "+i);if(1===t.length){var o=t.charCodeAt(0);("utf8"===i&&o<128||"latin1"===i)&&(t=o)}}else"number"==typeof t?t&=255:"boolean"==typeof t&&(t=Number(t));if(r<0||this.length>>=0,n=void 0===n?this.length:n>>>0,t||(t=0);var a;if("number"==typeof t)for(a=r;a>1,h=-7,l=r?i-1:0,c=r?-1:1,p=t[e+l];for(l+=c,o=p&(1<<-h)-1,p>>=-h,h+=s;h>0;o=256*o+t[e+l],l+=c,h-=8);for(a=o&(1<<-h)-1,o>>=-h,h+=n;h>0;a=256*a+t[e+l],l+=c,h-=8);if(0===o)o=1-f;else{if(o===u)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,n),o-=f}return(p?-1:1)*a*Math.pow(2,o-n)},r.write=function(t,e,r,n,i,o){var a,s,u,f=8*o-i-1,h=(1<>1,c=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,y=n?1:-1,d=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=h):(a=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-a))<1&&(a--,u*=2),e+=a+l>=1?c/u:c*Math.pow(2,1-l),e*u>=2&&(a++,u/=2),a+l>=h?(s=0,a=h):a+l>=1?(s=(e*u-1)*Math.pow(2,i),a+=l):(s=e*Math.pow(2,l-1)*Math.pow(2,i),a=0));i>=8;t[r+p]=255&s,p+=y,s/=256,i-=8);for(a=a<0;t[r+p]=255&a,p+=y,a/=256,f-=8);t[r+p-y]|=128*d}},{}],5:[function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=function(){function t(t,e){for(var r=0;r0&&this.skip(n);break;case 81:t.subType="setTempo",3===n?t.value=this.readUint24():this.skip(n);break;case 84:if(t.subType="smpteOffset",5===n){var i=this.readUint8();t.value={frameRate:{0:24,1:25,2:29.97,3:30}[i>>>6],hour:63&i,minute:this.readUint8(),second:this.readUint8(),frame:this.readUint8(),subFrame:this.readUint8()}}else this.skip(n);break;case 88:t.subType="timeSignature",4===n?t.value={numerator:this.readUint8(),denominator:1<>4;switch(t.channel=15&e,t.type="channel",a){case 8:t.subType="noteOff",t.value={noteNumber:o,velocity:this.readUint8()};break;case 9:t.value={noteNumber:o,velocity:this.readUint8()},0===t.value.velocity?t.subType="noteOff":t.subType="noteOn";break;case 10:t.subType="noteAftertouch",t.value={noteNumber:o,amount:this.readUint8()};break;case 11:t.subType="controller",t.value={controllerNumber:o,controllerValue:this.readUint8()};break;case 12:t.subType="programChange",t.value=o;break;case 13:t.subType="channelAftertouch",t.value=o;break;case 14:t.subType="pitchBend",t.value=o+(this.readUint8()<<7);break;default:t.subType="unknown",t.value=(o<<8)+this.readUint8()}}return t}}]),t}();e.exports=o},{}],6:[function(t,e,r){"use strict";var n=t("./wav"),i=t("./midi"),o=t("./utils/timer");e.exports=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.verbose&&console.log("parsing MIDI header...");var r=new i(t),a=r.readChunk();if("MThd"!==a.id||6!==a.length)throw new SyntaxError("malformed header");for(var s=new i(a.data),u=(s.readUint16(),s.readUint16()),f=s.readUint16(),h=[],l=[],c=[],p=void 0,y=0;y>>15!=0)return console.log("Detected unsupported MIDI timing mode"),null;var k=new o(f);e.verbose&&console.log("initializing timer...");for(var E,S=0,U=0,A=0;SD&&(D=z,j=k.getTime(J.delta)),V>F&&(F=V,_=k.getTime(J.delta))):(z-=J.velocity,V--)}}catch(t){W=!0,Y=t}finally{try{!q&&X.return&&X.return()}finally{if(W)throw Y}}p=128/D,e.verbose&&(console.log("setting volume to",p),console.log(" maximum chord of",F,"at",_,"seconds"),console.log(" maximum velocity of",D-1,"at",j,"seconds")),e.channels=1,e.verbose&&console.log("generating WAV buffer...");var Z=new n(e.channels,e.sampleRate,e.bitsPerSample);return Z.writeProgression(l,p,[0],!0,!0,e.duration),Z}},{"./midi":5,"./utils/timer":7,"./wav":8}],7:[function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=function(){function t(t,e){for(var r=0;r0;i++)e=this.criticalPoints[i],t>=e.delta?(r+=e.delta*n/this.ticksPerBeat/1e6,t-=e.delta):(r+=t*n/this.ticksPerBeat/1e6,t=0), -n=e.microsecondsPerBeat;return r+=t*n/this.ticksPerBeat/1e6}}]),t}();e.exports=o},{}],8:[function(t,e,r){(function(t){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var n=function(){function t(t,e){var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=t[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!e||r.length!==e);n=!0);}catch(t){i=!0,o=t}finally{try{!n&&s.return&&s.return()}finally{if(i)throw o}}return r}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),i=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:44100,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[];r(this,e);var s=i>>>3;this.header=new ArrayBuffer(44),this.view=new DataView(this.header),this.data=a,Object.defineProperty(this,"littleEndian",{configurable:!1,enumerable:!0,value:o,writable:!1}),this.pointer=0,this.ChunkID=o?"RIFF":"RIFX",this.ChunkSize=this.header.byteLength-8,this.Format="WAVE",this.SubChunk1ID="fmt ",this.SubChunk1Size=16,this.AudioFormat=1,this.NumChannels=t,this.SampleRate=n,this.ByteRate=t*n*s,this.BlockAlign=t*s,this.BitsPerSample=i,this.SubChunk2ID="data",this.SubChunk2Size=a.length*s}return i(e,null,[{key:"semitone",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"REST",e=/^([A-G])(\-?\d+)(b{0,2}|#{0,2})$/;if(!e.test(t))return-1/0;var r=t.match(e),i=n(r,4),o=i[1],a=i[2],s=i[3],u={C:0,D:2,E:4,F:5,G:7,A:9,B:11},f={"-1":0,0:1,1:2,2:3,3:4,4:5,5:6,6:7,7:8,8:9,9:10,10:11},h={bb:-2,b:-1,"":0,"#":1,"##":2};return void 0===u[o]||void 0===f[a]||void 0===h[s]?-1/0:u[o]+12*f[a]+h[s]}},{key:"note",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1/0,e=[-1,0,1,2,3,4,5,6,7,8,9,10],r=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],n=Math.floor(t/12),i=Math.floor(t-12*n),o=e[n],a=r[i];return void 0===o||void 0===a?"REST":a.charAt(0)+o.toString()+a.charAt(1)}},{key:"frequency",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1/0;return 440*Math.pow(2,(t-69)/12)}}]),i(e,[{key:"setString",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.length,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=0;n1&&void 0!==arguments[1]?arguments[1]:0,r=0,n="";r1&&void 0!==arguments[1])||arguments[1],r=this.data,n=Math.round(this.SampleRate*t);if(this.pointer=this.NumChannels*n,e)for(;r.length1&&void 0!==arguments[1]?arguments[1]:[],l=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],c=arguments.length>3&&void 0!==arguments[3]&&arguments[3],p=this.data,y=this.NumChannels,d=this.SampleRate,g=e.semitone(a),v=e.frequency(g)*Math.PI*2/d,b=(Math.PI,Math.round(d*s)),w=b-.001*d,m=b-w+1,k=this.pointer,E=p.length,S=Math.min(Math.floor((E-k)/y),b);if(0===h.length)for(h=[],r=0;r0&&(o=f*Math.sin(v*r)*(rw?b-r+1:m)/m),p[i]=o+(l?p[i]:0);for(r=S;r0||!U[n])&&(o=f*Math.sin(v*r)*(rw?b-r+1:m)/m),p[i+n]=o;var A=Math.max(k+b*y,E)*this.BitsPerSample>>>3;this.ChunkSize=A+this.header.byteLength-8,this.SubChunk2Size=A,c||(this.pointer=k+b*y)}},{key:"writeProgression",value:function(t){for(var e,r,n,i,o,a,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],f=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],h=arguments.length>4&&void 0!==arguments[4]&&arguments[4],l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1,c=this.pointer,p=0;p>>3,n=this.data,i=this.SubChunk2Size,o=i/r,a=new ArrayBuffer(i),s=new Uint8Array(a),u=Math.pow(2,(r<<3)-1)-1;switch(r){case 1:for(t=0;t>>8;else for(t=0;t>>8,s[2*t+1]=255&e;break;case 3:if(this.littleEndian)for(t=0;t>>8&255,s[3*t+2]=e>>>16;else for(t=0;t>>16,s[3*t+1]=e>>>8&255,s[3*t+2]=255&e;case 4:if(this.littleEndian)for(t=0;t>>8&255,s[4*t+2]=e>>>16&255,s[4*t+3]=e>>>24;else for(t=0;t>>24,s[4*t+1]=e>>>16&255,s[4*t+2]=e>>>8&255,s[4*t+3]=255&e}return a}}]),e}();e.exports=o}).call(this,t("buffer").Buffer)},{buffer:3}]},{},[1])(1)}); +!function(t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).synth=t()}(function(){return function n(i,o,a){function s(e,t){if(!o[e]){if(!i[e]){var r="function"==typeof require&&require;if(!t&&r)return r(e,!0);if(u)return u(e,!0);throw(t=new Error("Cannot find module '"+e+"'")).code="MODULE_NOT_FOUND",t}r=o[e]={exports:{}},i[e][0].call(r.exports,function(t){return s(i[e][1][t]||t)},r,r.exports,n,i,o,a)}return o[e].exports}for(var u="function"==typeof require&&require,t=0;t>16&255,o[a++]=e>>8&255,o[a++]=255&e;2===n&&(e=u[t.charCodeAt(r)]<<2|u[t.charCodeAt(r+1)]>>4,o[a++]=255&e);1===n&&(e=u[t.charCodeAt(r)]<<10|u[t.charCodeAt(r+1)]<<4|u[t.charCodeAt(r+2)]>>2,o[a++]=e>>8&255,o[a++]=255&e);return o},r.fromByteArray=function(t){for(var e,r=t.length,n=r%3,i=[],o=0,a=r-n;o>18&63]+s[t>>12&63]+s[t>>6&63]+s[63&t]}(n));return i.join("")}(t,o,a>2]+s[e<<4&63]+"==")):2==n&&(e=(t[r-2]<<8)+t[r-1],i.push(s[e>>10]+s[e>>4&63]+s[e<<2&63]+"="));return i.join("")};for(var s=[],u=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,o=n.length;i>>1;case"base64":return B(t).length;default:if(i)return n?-1:T(t).length;e=(""+e).toLowerCase(),i=!0}}function r(t,e,r){var n,i=!1;if((e=void 0===e||e<0?0:e)>this.length)return"";if((r=void 0===r||r>this.length?this.length:r)<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t=t||"utf8";;)switch(t){case"hex":var o=this,a=e,s=r,u=o.length;(!s||s<0||u=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=l.from(e,n)),l.isBuffer(e))return 0===e.length?-1:y(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?(i?Uint8Array.prototype.indexOf:Uint8Array.prototype.lastIndexOf).call(t,e,r):y(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function y(t,e,r,n,i){var o=1,a=t.length,s=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a/=o=2,s/=2,r/=2}function u(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i)for(var f=-1,h=r;h>8,i.push(r%256),i.push(n);return i}(e,t.length-r),t,r,n)}function A(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i>>10&1023|55296),h=56320|1023&h),n.push(h),i+=l}var c=n,p=c.length;if(p<=b)return String.fromCharCode.apply(String,c);for(var y="",d=0;de&&(t+=" ... "),""},l.prototype.compare=function(t,e,r,n,i){if(I(t,Uint8Array)&&(t=l.from(t,t.offset,t.byteLength)),!l.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),(e=void 0===e?0:e)<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(i<=n&&r<=e)return 0;if(i<=n)return-1;if(r<=e)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(e>>>=0),s=Math.min(o,a),u=this.slice(n,i),f=t.slice(e,r),h=0;h>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||ithis.length)throw new RangeError("Attempt to write outside buffer bounds");n=n||"utf8";for(var o,a,s,u=!1;;)switch(n){case"hex":var f=this,h=t,l=e,c=r,p=(l=Number(l)||0,f.length-l);(!c||p<(c=Number(c)))&&(c=p),(p=h.length)/2t.length)throw new RangeError("Index out of range")}function w(t,e,r,n){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(t,e,r,n,i){return e=+e,r>>>=0,i||w(t,0,r,4),o.write(t,e,r,n,23,4),r+4}function S(t,e,r,n,i){return e=+e,r>>>=0,i||w(t,0,r,8),o.write(t,e,r,n,52,8),r+8}l.prototype.slice=function(t,e){var r=this.length,r=((t=~~t)<0?(t+=r)<0&&(t=0):r>>=0,e>>>=0,r||d(t,e,this.length);for(var n=this[t],i=1,o=0;++o>>=0,e>>>=0,r||d(t,e,this.length);for(var n=this[t+--e],i=1;0>>=0,e||d(t,1,this.length),this[t]},l.prototype.readUInt16LE=function(t,e){return t>>>=0,e||d(t,2,this.length),this[t]|this[t+1]<<8},l.prototype.readUInt16BE=function(t,e){return t>>>=0,e||d(t,2,this.length),this[t]<<8|this[t+1]},l.prototype.readUInt32LE=function(t,e){return t>>>=0,e||d(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},l.prototype.readUInt32BE=function(t,e){return t>>>=0,e||d(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},l.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||d(t,e,this.length);for(var n=this[t],i=1,o=0;++o>>=0,e>>>=0,r||d(t,e,this.length);for(var n=e,i=1,o=this[t+--n];0>>=0,e||d(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},l.prototype.readInt16LE=function(t,e){t>>>=0,e||d(t,2,this.length);e=this[t]|this[t+1]<<8;return 32768&e?4294901760|e:e},l.prototype.readInt16BE=function(t,e){t>>>=0,e||d(t,2,this.length);e=this[t+1]|this[t]<<8;return 32768&e?4294901760|e:e},l.prototype.readInt32LE=function(t,e){return t>>>=0,e||d(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},l.prototype.readInt32BE=function(t,e){return t>>>=0,e||d(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},l.prototype.readFloatLE=function(t,e){return t>>>=0,e||d(t,4,this.length),o.read(this,t,!0,23,4)},l.prototype.readFloatBE=function(t,e){return t>>>=0,e||d(t,4,this.length),o.read(this,t,!1,23,4)},l.prototype.readDoubleLE=function(t,e){return t>>>=0,e||d(t,8,this.length),o.read(this,t,!0,52,8)},l.prototype.readDoubleBE=function(t,e){return t>>>=0,e||d(t,8,this.length),o.read(this,t,!1,52,8)},l.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||m(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,n||m(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[e+i]=255&t;0<=--i&&(o*=256);)this[e+i]=t/o&255;return e+r},l.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||m(this,t,e,1,255,0),this[e]=255&t,e+1},l.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||m(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},l.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||m(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},l.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||m(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},l.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||m(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},l.prototype.writeIntLE=function(t,e,r,n){t=+t,e>>>=0,n||m(this,t,e,r,(n=Math.pow(2,8*r-1))-1,-n);var i=0,o=1,a=0;for(this[e]=255&t;++i>0)-a&255;return e+r},l.prototype.writeIntBE=function(t,e,r,n){t=+t,e>>>=0,n||m(this,t,e,r,(n=Math.pow(2,8*r-1))-1,-n);var i=r-1,o=1,a=0;for(this[e+i]=255&t;0<=--i&&(o*=256);)t<0&&0===a&&0!==this[e+i+1]&&(a=1),this[e+i]=(t/o>>0)-a&255;return e+r},l.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||m(this,t,e,1,127,-128),this[e]=255&(t=t<0?255+t+1:t),e+1},l.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||m(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},l.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||m(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},l.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||m(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},l.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||m(this,t,e,4,2147483647,-2147483648),this[e]=(t=t<0?4294967295+t+1:t)>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},l.prototype.writeFloatLE=function(t,e,r){return k(this,t,e,!0,r)},l.prototype.writeFloatBE=function(t,e,r){return k(this,t,e,!1,r)},l.prototype.writeDoubleLE=function(t,e,r){return S(this,t,e,!0,r)},l.prototype.writeDoubleBE=function(t,e,r){return S(this,t,e,!1,r)},l.prototype.copy=function(t,e,r,n){if(!l.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r=r||0,n||0===n||(n=this.length),e>=t.length&&(e=t.length),(n=0=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length);var i=(n=t.length-e>>=0,r=void 0===r?this.length:r>>>0,"number"==typeof(t=t||0))for(o=e;o>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function B(t){return U.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(E,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function C(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function I(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function O(t){return t!=t}}.call(this)}.call(this,M("buffer").Buffer)},{"base64-js":1,buffer:2,ieee754:3}],3:[function(t,e,r){r.read=function(t,e,r,n,i){var o,a,s=8*i-n-1,u=(1<>1,h=-7,l=r?i-1:0,c=r?-1:1,i=t[e+l];for(l+=c,o=i&(1<<-h)-1,i>>=-h,h+=s;0>=-h,h+=n;0>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,c=n?0:o-1,p=n?1:-1,o=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=f):(a=Math.floor(Math.log(e)/Math.LN2),e*(n=Math.pow(2,-a))<1&&(a--,n*=2),2<=(e+=1<=a+h?l/n:l*Math.pow(2,1-h))*n&&(a++,n/=2),f<=a+h?(s=0,a=f):1<=a+h?(s=(e*n-1)*Math.pow(2,i),a+=h):(s=e*Math.pow(2,h-1)*Math.pow(2,i),a=0));8<=i;t[r+c]=255&s,c+=p,s/=256,i-=8);for(a=a<>>6],hour:63&r,minute:this.readUint8(),second:this.readUint8(),frame:this.readUint8(),subFrame:this.readUint8()}):this.skip(o);break;case 88:n.subType="timeSignature",4===o?t.value={numerator:this.readUint8(),denominator:1<>4,u=t;switch(u.channel=15&e,u.type="channel",s){case 8:u.subType="noteOff",t.value={noteNumber:a,velocity:this.readUint8()};break;case 9:t.value={noteNumber:a,velocity:this.readUint8()},0===t.value.velocity?u.subType="noteOff":u.subType="noteOn";break;case 10:u.subType="noteAftertouch",t.value={noteNumber:a,amount:this.readUint8()};break;case 11:u.subType="controller",t.value={controllerNumber:a,controllerValue:this.readUint8()};break;case 12:u.subType="programChange",t.value=a;break;case 13:u.subType="channelAftertouch",t.value=a;break;case 14:u.subType="pitchBend",t.value=a+(this.readUint8()<<7);break;default:u.subType="unknown",t.value=(a<<8)+this.readUint8()}}return t}}])&&o(t.prototype,r),n&&o(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();e.exports=n},{}],5:[function(t,e,r){"use strict";function F(t,e){var r,n,i,o,a="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(a)return n=!(r=!0),{s:function(){a=a.call(t)},n:function(){var t=a.next();return r=t.done,t},e:function(t){n=!0,i=t},f:function(){try{r||null==a.return||a.return()}finally{if(n)throw i}}};if(Array.isArray(t)||(a=function(t,e){var r;if(t)return"string"==typeof t?s(t,e):"Map"===(r="Object"===(r=Object.prototype.toString.call(t).slice(8,-1))&&t.constructor?t.constructor.name:r)||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(t,e):void 0}(t))||e&&t&&"number"==typeof t.length)return a&&(t=a),o=0,{s:e=function(){},n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:e};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r>>15!=0)return console.log("Detected unsupported MIDI timing mode"),null;var y=new W(t);e.verbose&&console.log("initializing timer...");for(var d,g=0,v=0;g=(e=this.criticalPoints[i]).delta?(r+=e.delta*n/this.ticksPerBeat/1e6,t-=e.delta):(r+=t*n/this.ticksPerBeat/1e6,t=0),n=e.microsecondsPerBeat;return r+=t*n/this.ticksPerBeat/1e6}}])&&o(t.prototype,r),n&&o(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();e.exports=n},{}],7:[function(t,e,r){!function(u){!function(){"use strict";function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,o,a,s=[],u=!0,f=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=o.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){f=!0,i=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(f)throw i}}return s}}(t,e)||function(t,e){var r;if(t)return"string"==typeof t?n(t,e):"Map"===(r="Object"===(r=Object.prototype.toString.call(t).slice(8,-1))&&t.constructor?t.constructor.name:r)||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r>>3;this.header=new ArrayBuffer(44),this.view=new DataView(this.header),this.data=i,Object.defineProperty(this,"littleEndian",{configurable:!1,enumerable:!0,value:n,writable:!1}),this.pointer=0,this.ChunkID=n?"RIFF":"RIFX",this.ChunkSize=this.header.byteLength-8,this.Format="WAVE",this.SubChunk1ID="fmt ",this.SubChunk1Size=16,this.AudioFormat=1,this.NumChannels=t,this.SampleRate=e,this.ByteRate=t*e*o,this.BlockAlign=t*o,this.BitsPerSample=r,this.SubChunk2ID="data",this.SubChunk2Size=i.length*o,this.littleEndian}var t,e,r;return t=w,r=[{key:"semitone",value:function(){var t,e,r,n,i,o=0>>3,n=this.data,i=this.SubChunk2Size,o=i/r,i=new ArrayBuffer(i),a=new Uint8Array(i),s=Math.pow(2,(r<<3)-1)-1;switch(r){case 1:for(t=0;t>>8;else for(t=0;t>>8,a[2*t+1]=255&e;break;case 3:if(this.littleEndian)for(t=0;t>>8&255,a[3*t+2]=e>>>16;else for(t=0;t>>16,a[3*t+1]=e>>>8&255,a[3*t+2]=255&e;break;case 4:if(this.littleEndian)for(t=0;t>>8&255,a[4*t+2]=e>>>16&255,a[4*t+3]=e>>>24;else for(t=0;t>>24,a[4*t+1]=e>>>16&255,a[4*t+2]=e>>>8&255,a[4*t+3]=255&e}return i}},{key:"toBlob",value:function(){return new Blob([this.header,this.typedData],{type:"audio/wav"})}},{key:"toBuffer",value:function(){return u.concat([u.from(this.header),u.from(this.typedData)])}},{key:"tell",value:function(){return this.pointer/this.NumChannels/this.SampleRate}},{key:"seek",value:function(t){var e=!(1>>3;this.ChunkSize=o+this.header.byteLength-8,this.SubChunk2Size=o,t||(this.pointer=g+p*h)}},{key:"writeProgression",value:function(t){for(var e=1 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol.for === 'function')\n ? Symbol.for('nodejs.util.inspect.custom')\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayLike(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n buf = Buffer.from(buf)\n }\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (var i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\r\n\r\nclass MIDIStream {\r\n constructor(buffer) {\r\n this.data = new Uint8Array(buffer);\r\n this.byteOffset = 0;\r\n this.lastEventTypeByte = 0x00;\r\n }\r\n\r\n readString(byteLength) {\r\n var byteOffset = this.byteOffset;\r\n\r\n for (var i = 0, str = ''; i < byteLength; i++) {\r\n str += String.fromCharCode(this.data[byteOffset + i]);\r\n }\r\n\r\n this.byteOffset += byteLength;\r\n\r\n return str;\r\n }\r\n\r\n readUint32() {\r\n var byteOffset = this.byteOffset;\r\n var value = (\r\n (this.data[byteOffset ] << 24) |\r\n (this.data[byteOffset + 1] << 16) |\r\n (this.data[byteOffset + 2] << 8) |\r\n (this.data[byteOffset + 3] )\r\n );\r\n\r\n this.byteOffset += 4;\r\n\r\n return value;\r\n }\r\n\r\n readUint24() {\r\n var byteOffset = this.byteOffset;\r\n var value = (\r\n (this.data[byteOffset ] << 16) |\r\n (this.data[byteOffset + 1] << 8) |\r\n (this.data[byteOffset + 2] )\r\n );\r\n\r\n this.byteOffset += 3;\r\n\r\n return value;\r\n }\r\n\r\n readUint16() {\r\n var byteOffset = this.byteOffset;\r\n var value = (\r\n (this.data[byteOffset ] << 8) |\r\n (this.data[byteOffset + 1] )\r\n );\r\n\r\n this.byteOffset += 2;\r\n\r\n return value;\r\n }\r\n\r\n readUint8() {\r\n var byteOffset = this.byteOffset;\r\n var value = this.data[byteOffset];\r\n\r\n this.byteOffset += 1;\r\n\r\n return value;\r\n }\r\n\r\n readInt8() {\r\n var byteOffset = this.byteOffset;\r\n var value = this.data[byteOffset];\r\n\r\n if (value & 0x80 === 0x80) {\r\n value ^= 0xFFFFFF00;\r\n }\r\n\r\n this.byteOffset += 1;\r\n\r\n return value;\r\n }\r\n\r\n readVarUint() {\r\n var value = 0;\r\n var uint8;\r\n\r\n do {\r\n uint8 = this.readUint8();\r\n value = (value << 7) + (uint8 & 0x7F);\r\n } while ((uint8 & 0x80) === 0x80);\r\n\r\n return value;\r\n }\r\n\r\n skip(byteLength) {\r\n this.byteOffset += byteLength;\r\n }\r\n\r\n readChunk() {\r\n var id = this.readString(4);\r\n var length = this.readUint32();\r\n var byteOffset = this.byteOffset;\r\n\r\n this.byteOffset += length;\r\n\r\n var data = this.data.slice(byteOffset, this.byteOffset);\r\n\r\n return {\r\n id: id,\r\n length: length,\r\n data: data.buffer\r\n };\r\n }\r\n\r\n readEvent() {\r\n var event = {};\r\n\r\n event.delta = this.readVarUint();\r\n\r\n var eventTypeByte = this.readUint8();\r\n\r\n // system event\r\n if ((eventTypeByte & 0xF0) === 0xF0) {\r\n switch (eventTypeByte) {\r\n // meta event\r\n case 0xFF:\r\n event.type = 'meta';\r\n\r\n var subTypeByte = this.readUint8();\r\n var length = this.readVarUint();\r\n\r\n switch (subTypeByte) {\r\n case 0x00:\r\n event.subType = 'sequenceNumber';\r\n if (length === 2)\r\n event.value = this.readUint16();\r\n else\r\n this.skip(length);\r\n break;\r\n case 0x01:\r\n event.subType = 'text';\r\n event.value = this.readString(length);\r\n break;\r\n case 0x02:\r\n event.subType = 'copyrightNotice';\r\n event.value = this.readString(length);\r\n break;\r\n case 0x03:\r\n event.subType = 'trackName';\r\n event.value = this.readString(length);\r\n break;\r\n case 0x04:\r\n event.subType = 'instrumentName';\r\n event.value = this.readString(length);\r\n break;\r\n case 0x05:\r\n event.subType = 'lyrics';\r\n event.value = this.readString(length);\r\n break;\r\n case 0x06:\r\n event.subType = 'marker';\r\n event.value = this.readString(length);\r\n break;\r\n case 0x07:\r\n event.subType = 'cuePoint';\r\n event.value = this.readString(length);\r\n break;\r\n case 0x20:\r\n event.subType = 'midiChannelPrefix';\r\n if (length === 1)\r\n event.value = this.readUint8();\r\n else\r\n this.skip(length);\r\n break;\r\n case 0x2F:\r\n event.subType = 'endOfTrack';\r\n if (length > 0)\r\n this.skip(length);\r\n break;\r\n case 0x51:\r\n event.subType = 'setTempo';\r\n if (length === 3)\r\n event.value = this.readUint24();\r\n else\r\n this.skip(length)\r\n break;\r\n case 0x54:\r\n event.subType = 'smpteOffset';\r\n if (length === 5) {\r\n var hourByte = this.readUint8();\r\n event.value = {\r\n frameRate: ({\r\n 0x00: 24,\r\n 0x01: 25,\r\n 0x02: 29.97,\r\n 0x03: 30\r\n }[hourByte >>> 6]),\r\n hour: (hourByte & 0x3F),\r\n minute: this.readUint8(),\r\n second: this.readUint8(),\r\n frame: this.readUint8(),\r\n subFrame: this.readUint8()\r\n };\r\n } else {\r\n this.skip(length);\r\n }\r\n break;\r\n case 0x58:\r\n event.subType = 'timeSignature';\r\n if (length === 4) {\r\n event.value = {\r\n numerator: this.readUint8(),\r\n denominator: 1 << this.readUint8(),\r\n metronome: this.readUint8(),\r\n thirtyseconds: this.readUint8()\r\n };\r\n } else {\r\n this.skip(length);\r\n }\r\n break;\r\n case 0x59:\r\n event.subType = 'keySignature';\r\n if (length === 2) {\r\n event.value = {\r\n key: this.readInt8(),\r\n scale: this.readUint8()\r\n };\r\n } else {\r\n this.skip(length);\r\n }\r\n break;\r\n case 0x7F:\r\n event.subType = 'sequencerSpecific';\r\n event.value = this.readString(length);\r\n break;\r\n default:\r\n event.subType = 'unknown';\r\n event.value = this.readString(length);\r\n }\r\n break;\r\n // sysex event\r\n case 0xF0:\r\n event.type = 'sysEx';\r\n\r\n var length = this.readVarUint();\r\n\r\n event.value = this.readString(length);\r\n\r\n break;\r\n case 0xF7:\r\n event.type = 'dividedSysEx';\r\n\r\n var length = this.readVarUint();\r\n\r\n event.value = this.readString(length);\r\n\r\n break;\r\n default:\r\n event.type = 'unknown';\r\n\r\n var length = this.readVarUint();\r\n\r\n event.value = this.readString(length);\r\n }\r\n // channel event\r\n } else {\r\n var param;\r\n\r\n // if the high bit is low\r\n // use running event type mode\r\n if ((eventTypeByte & 0x80) === 0x00) {\r\n param = eventTypeByte;\r\n eventTypeByte = this.lastEventTypeByte;\r\n } else {\r\n param = this.readUint8();\r\n this.lastEventTypeByte = eventTypeByte;\r\n }\r\n\r\n var eventType = eventTypeByte >> 4;\r\n\r\n event.channel = eventTypeByte & 0x0F;\r\n event.type = 'channel';\r\n\r\n switch (eventType) {\r\n case 0x08:\r\n event.subType = 'noteOff';\r\n\r\n event.value = {\r\n noteNumber: param,\r\n velocity: this.readUint8()\r\n };\r\n break;\r\n case 0x09:\r\n event.value = {\r\n noteNumber: param,\r\n velocity: this.readUint8()\r\n };\r\n\r\n // some midi implementations use a noteOn\r\n // event with 0 velocity to denote noteOff\r\n if (event.value.velocity === 0) {\r\n event.subType = 'noteOff';\r\n } else {\r\n event.subType = 'noteOn';\r\n }\r\n break;\r\n case 0x0A:\r\n event.subType = 'noteAftertouch';\r\n\r\n event.value = {\r\n noteNumber: param,\r\n amount: this.readUint8()\r\n };\r\n break;\r\n case 0x0B:\r\n event.subType = 'controller';\r\n\r\n event.value = {\r\n controllerNumber: param,\r\n controllerValue: this.readUint8()\r\n };\r\n break;\r\n case 0x0C:\r\n event.subType = 'programChange';\r\n event.value = param;\r\n break;\r\n case 0x0D:\r\n event.subType = 'channelAftertouch';\r\n event.value = param;\r\n break;\r\n case 0x0E:\r\n event.subType = 'pitchBend';\r\n event.value = param + (this.readUint8() << 7);\r\n break;\r\n default:\r\n event.subType = 'unknown';\r\n event.value = (param << 8) + this.readUint8();\r\n }\r\n }\r\n\r\n return event;\r\n }\r\n};\r\n\r\nmodule.exports = MIDIStream;\r\n","'use strict';\r\n\r\nconst WAV = require('./wav');\r\nconst MIDIStream = require('./midi');\r\nconst Timer = require('./utils/timer');\r\n\r\nmodule.exports = function midiToWav(buffer, args = {}) {\r\n if (args.verbose) {\r\n console.log('parsing MIDI header...');\r\n }\r\n\r\n const midiStream = new MIDIStream(buffer);\r\n const header = midiStream.readChunk();\r\n\r\n if (header.id !== 'MThd' || header.length !== 6) {\r\n throw new SyntaxError('malformed header');\r\n }\r\n\r\n const headerStream = new MIDIStream(header.data);\r\n const formatType = headerStream.readUint16();\r\n const trackCount = headerStream.readUint16();\r\n const timeDivision = headerStream.readUint16();\r\n const tracks = [];\r\n const progression = [];\r\n const events = [];\r\n let maxAmplitude;\r\n\r\n for (let i = 0; i < trackCount; i++) {\r\n if (args.verbose) {\r\n console.log(`parsing track ${i + 1}...`);\r\n }\r\n\r\n const trackChunk = midiStream.readChunk();\r\n\r\n if (trackChunk.id !== 'MTrk') {\r\n continue;\r\n }\r\n\r\n const trackStream = new MIDIStream(trackChunk.data);\r\n const track = [];\r\n let keep = true;\r\n\r\n // determine whether applied filter will remove the current track while populating it\r\n while (keep && trackStream.byteOffset < trackChunk.length) {\r\n let event = trackStream.readEvent();\r\n track.push(event);\r\n\r\n if (typeof event.value === 'string') {\r\n if (args.verbose) {\r\n console.log(`{\"${event.subType}\":\"${event.value}\"}`);\r\n }\r\n\r\n if (Array.isArray(args.Skip)) {\r\n for (let t = 0; t < args.Skip.length; t++) {\r\n if (args.Skip[t][event.subType] === event.value) {\r\n if (args.verbose) {\r\n console.log(`skip match found: {\"${event.subType}\":\"${event.value}\"}`);\r\n }\r\n\r\n keep = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (typeof args.Skip === 'function') {\r\n keep = !args.Skip(track);\r\n }\r\n\r\n if (keep) {\r\n tracks.push(track);\r\n } else if (args.verbose) {\r\n console.log(`skipping track ${i + 1}...`);\r\n }\r\n }\r\n\r\n if (timeDivision >>> 15 === 0) {\r\n // use microseconds per beat\r\n const timer = new Timer(timeDivision);\r\n\r\n if (args.verbose) {\r\n console.log('initializing timer...');\r\n }\r\n\r\n // set up timer with setTempo events\r\n for (let i = 0, delta = 0, ticks = 0, event; i < tracks[0].length; i++) {\r\n event = tracks[0][i];\r\n delta += event.delta;\r\n ticks += event.delta;\r\n\r\n if (event.subType === 'setTempo') {\r\n timer.addCriticalPoint(delta, event.value);\r\n delta = 0;\r\n }\r\n }\r\n\r\n // generate note data\r\n for (let i = 0; i < tracks.length; i++) {\r\n if (args.verbose) {\r\n console.log(`generating progression from track ${i + 1}...`);\r\n }\r\n\r\n let track = tracks[i];\r\n let delta = 0;\r\n let map = new Map();\r\n\r\n for (let j = 0; j < track.length; j++) {\r\n let event = track[j];\r\n delta += event.delta;\r\n\r\n if (event.type === 'channel') {\r\n const semitone = event.value.noteNumber;\r\n\r\n if (event.subType === 'noteOn') {\r\n let velocity = event.value.velocity;\r\n let offset = timer.getTime(delta);\r\n\r\n // use stack for simultaneous identical notes\r\n if (map.has(semitone)) {\r\n map.get(semitone).push({offset, velocity});\r\n } else {\r\n map.set(semitone, [{offset, velocity}]);\r\n }\r\n\r\n // to determine maximum total velocity for normalizing volume\r\n events.push({velocity, delta, note: true});\r\n } else if (event.subType === 'noteOff') {\r\n const notes = map.get(semitone);\r\n\t const note = notes ? notes.pop() : { offset: 0, velocity: 0 };\r\n\r\n progression.push({\r\n note: WAV.note(semitone),\r\n time: timer.getTime(delta) - note.offset,\r\n amplitude: note.velocity / 128,\r\n offset: note.offset,\r\n });\r\n\r\n // to determine maximum total velocity for normalizing volume\r\n events.push({velocity: note.velocity, delta, note: false});\r\n }\r\n } else if (args.verbose && event.type === 'meta') {\r\n if (typeof event.value === 'string') {\r\n console.log(`${timer.getTime(delta).toFixed(2)}s ${event.subType}: ${event.value}`);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (args.verbose) {\r\n console.log('normalizing volume...');\r\n }\r\n\r\n events.sort(function (a, b) {\r\n return a.delta - b.delta || a.note - b.note;\r\n });\r\n\r\n if (args.verbose) {\r\n console.log('total notes:', progression.length);\r\n console.log('total time:', timer.getTime(events[events.length - 1].delta), 'seconds');\r\n }\r\n\r\n let maxVelocity = 1;\r\n let maxVelocityTime = 0;\r\n let velocity = 1;\r\n let maxChord = 0;\r\n let maxChordTime = 0;\r\n let chord = 0;\r\n\r\n for (const event of events) {\r\n if (event.note) {\r\n velocity += event.velocity;\r\n chord++;\r\n\r\n if (velocity > maxVelocity) {\r\n maxVelocity = velocity;\r\n maxVelocityTime = timer.getTime(event.delta);\r\n }\r\n\r\n if (chord > maxChord) {\r\n maxChord = chord;\r\n maxChordTime = timer.getTime(event.delta);\r\n }\r\n } else {\r\n velocity -= event.velocity;\r\n chord--;\r\n }\r\n }\r\n\r\n // scaling factor for amplitude\r\n maxAmplitude = 128 / maxVelocity;\r\n\r\n if (args.verbose) {\r\n console.log('setting volume to', maxAmplitude);\r\n console.log(' maximum chord of', maxChord, 'at', maxChordTime, 'seconds');\r\n console.log(' maximum velocity of', maxVelocity - 1, 'at', maxVelocityTime, 'seconds');\r\n }\r\n } else {\r\n // use frames per second\r\n // not yet implemented\r\n\r\n console.log('Detected unsupported MIDI timing mode');\r\n\r\n return null;\r\n\r\n /*\r\n let framesPerSecond = (division >>> 8) & 0x7F;\r\n let ticksPerFrame = division & 0xFF;\r\n\r\n if (framesPerSecond === 29) {\r\n framesPerSecond = 29.97;\r\n }\r\n\r\n // seconds per tick = 1 / frames per second / ticks per frame\r\n secsPerTick = 1 / framesPerSecond / ticksPerFrame;\r\n */\r\n }\r\n\r\n // set to mono\r\n args.channels = 1;\r\n\r\n if (args.verbose) {\r\n console.log('generating WAV buffer...');\r\n }\r\n\r\n const wav = new WAV(args.channels, args.sampleRate, args.bitsPerSample);\r\n\r\n wav.writeProgression(progression, maxAmplitude, [0], true, true, args.duration);\r\n\r\n return wav;\r\n};\r\n","'use strict';\r\n\r\n// utility class to calculate time from delta ticks\r\n// when MIDI file has several `setTempo` events\r\nclass Timer {\r\n constructor(ticksPerBeat) {\r\n this.ticksPerBeat = ticksPerBeat;\r\n this.criticalPoints = [];\r\n }\r\n\r\n // delta represents ticks since last time change\r\n addCriticalPoint(delta, microsecondsPerBeat) {\r\n this.criticalPoints.push({\r\n delta,\r\n microsecondsPerBeat\r\n });\r\n }\r\n\r\n getTime(delta) {\r\n const microsecondsPerSecond = 1000000;\r\n let time = 0;\r\n // midi standard initializes file with this value\r\n let microsecondsPerBeat = 500000;\r\n\r\n // iterate through time changes while decrementing delta ticks to 0\r\n for (let i = 0, criticalPoint; i < this.criticalPoints.length && delta > 0; i++) {\r\n criticalPoint = this.criticalPoints[i];\r\n\r\n // incrementally calculate the time passed for each range of timing\r\n if (delta >= criticalPoint.delta) {\r\n time += criticalPoint.delta * microsecondsPerBeat / this.ticksPerBeat / microsecondsPerSecond;\r\n delta -= criticalPoint.delta;\r\n } else {\r\n time += delta * microsecondsPerBeat / this.ticksPerBeat / microsecondsPerSecond;\r\n delta = 0;\r\n }\r\n\r\n microsecondsPerBeat = criticalPoint.microsecondsPerBeat;\r\n }\r\n\r\n time += delta * microsecondsPerBeat / this.ticksPerBeat / microsecondsPerSecond;\r\n\r\n return time;\r\n }\r\n};\r\n\r\nmodule.exports = Timer;\r\n","'use strict';\r\n\r\nclass WAV {\r\n static semitone(note = 'REST') {\r\n // matches occurence of A through G\r\n // followed by positive or negative integer\r\n // followed by 0 to 2 occurences of flat or sharp\r\n const re = /^([A-G])(\\-?\\d+)(b{0,2}|#{0,2})$/;\r\n\r\n // if semitone is unrecognized, assume REST\r\n if (!re.test(note)) {\r\n return -Infinity;\r\n }\r\n\r\n // parse substrings of note\r\n const [, tone, octave, accidental] = note.match(re);\r\n\r\n // semitone indexed relative to A4 == 69 for compatibility with MIDI\r\n const tones = {C: 0, D: 2, E: 4, F: 5, G: 7, A: 9, B: 11};\r\n const octaves = {'-1': 0, 0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10, 10: 11};\r\n const accidentals = {bb: -2, b: -1, '': 0, '#': 1, '##': 2};\r\n\r\n // if semitone is unrecognized, assume REST\r\n if (tones[tone] === undefined || octaves[octave] === undefined || accidentals[accidental] === undefined) {\r\n return -Infinity;\r\n }\r\n\r\n // return calculated index\r\n return tones[tone] + octaves[octave] * 12 + accidentals[accidental];\r\n }\r\n\r\n static note(semitone = -Infinity) {\r\n const octaves = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\r\n const tones = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'];\r\n\r\n const octaveIndex = Math.floor(semitone / 12);\r\n const toneIndex = Math.floor(semitone - octaveIndex * 12);\r\n\r\n const octave = octaves[octaveIndex];\r\n const tone = tones[toneIndex];\r\n\r\n // by default assume REST\r\n if (octave === undefined || tone === undefined) {\r\n return 'REST';\r\n }\r\n\r\n // tone followed by octave followed by accidental\r\n return tone.charAt(0) + octave.toString() + tone.charAt(1);\r\n }\r\n\r\n // converts semitone index to frequency in Hz\r\n static frequency(semitone = -Infinity) {\r\n // A4 is 440 Hz, 12 semitones per octave\r\n return 440 * Math.pow(2, (semitone - 69) / 12);\r\n }\r\n\r\n constructor(numChannels = 1, sampleRate = 44100, bitsPerSample = 16, littleEndian = true, data = []) {\r\n var bytesPerSample = bitsPerSample >>> 3;\r\n // WAV header is always 44 bytes\r\n this.header = new ArrayBuffer(44);\r\n // flexible container for reading / writing raw bytes in header\r\n this.view = new DataView(this.header);\r\n // leave sound data as non typed array for more flexibility\r\n this.data = data;\r\n\r\n // initialize as non-configurable because it\r\n // causes script to freeze when using parsed\r\n // chunk sizes with wrong endianess assumed\r\n Object.defineProperty(this, 'littleEndian', {\r\n configurable: false,\r\n enumerable: true,\r\n value: littleEndian,\r\n writable: false\r\n });\r\n\r\n // initial write index in data array\r\n this.pointer = 0;\r\n\r\n // WAV header properties\r\n this.ChunkID = littleEndian ? 'RIFF' : 'RIFX';\r\n this.ChunkSize = this.header.byteLength - 8;\r\n this.Format = 'WAVE';\r\n this.SubChunk1ID = 'fmt ';\r\n this.SubChunk1Size = 16;\r\n this.AudioFormat = 1;\r\n this.NumChannels = numChannels;\r\n this.SampleRate = sampleRate;\r\n this.ByteRate = numChannels * sampleRate * bytesPerSample;\r\n this.BlockAlign = numChannels * bytesPerSample;\r\n this.BitsPerSample = bitsPerSample;\r\n this.SubChunk2ID = 'data';\r\n this.SubChunk2Size = data.length * bytesPerSample;\r\n }\r\n\r\n // internal setter for writing strings as raw bytes to header\r\n setString(str, byteLength = str.length, byteOffset = 0) {\r\n for (var i = 0; i < byteLength; i++) {\r\n this.view.setUint8(byteOffset + i, str.charCodeAt(i));\r\n }\r\n }\r\n\r\n // internal getter for reading raw bytes as strings from header\r\n getString(byteLength, byteOffset = 0) {\r\n for (var i = 0, str = ''; i < byteLength; i++) {\r\n str += String.fromCharCode(this.view.getUint8(byteOffset + i));\r\n }\r\n\r\n return str;\r\n }\r\n\r\n // header property mutators\r\n\r\n // 4 bytes at offset of 0 bytes\r\n set ChunkID(str) {\r\n this.setString(str, 4, 0);\r\n }\r\n\r\n get ChunkID() {\r\n return this.getString(4, 0);\r\n }\r\n\r\n // 4 bytes at offset of 4 bytes\r\n set ChunkSize(uint) {\r\n this.view.setUint32(4, uint, this.littleEndian);\r\n }\r\n\r\n get ChunkSize() {\r\n return this.view.getUint32(4, this.littleEndian);\r\n }\r\n\r\n // 4 bytes at offset of 8 bytes\r\n set Format(str) {\r\n this.setString(str, 4, 8);\r\n }\r\n\r\n get Format() {\r\n return this.getString(4, 8);\r\n }\r\n\r\n // 4 bytes at offset of 12 bytes\r\n set SubChunk1ID(str) {\r\n this.setString(str, 4, 12);\r\n }\r\n\r\n get SubChunk1ID() {\r\n return this.getString(4, 12);\r\n }\r\n\r\n // 4 bytes at offset of 16 bytes\r\n set SubChunk1Size(uint) {\r\n this.view.setUint32(16, uint, this.littleEndian);\r\n }\r\n\r\n get SubChunk1Size() {\r\n return this.view.getUint32(16, this.littleEndian);\r\n }\r\n\r\n // 2 bytes at offset of 20 bytes\r\n set AudioFormat(uint) {\r\n this.view.setUint16(20, uint, this.littleEndian);\r\n }\r\n\r\n get AudioFormat() {\r\n return this.view.getUint16(20, this.littleEndian);\r\n }\r\n\r\n // 2 bytes at offset of 22 bytes\r\n set NumChannels(uint) {\r\n this.view.setUint16(22, uint, this.littleEndian);\r\n }\r\n\r\n get NumChannels() {\r\n return this.view.getUint16(22, this.littleEndian);\r\n }\r\n\r\n // 4 bytes at offset of 24 bytes\r\n set SampleRate(uint) {\r\n this.view.setUint32(24, uint, this.littleEndian);\r\n }\r\n\r\n get SampleRate() {\r\n return this.view.getUint32(24, this.littleEndian);\r\n }\r\n\r\n // 4 bytes at offset of 28 bytes\r\n set ByteRate(uint) {\r\n this.view.setUint32(28, uint, this.littleEndian);\r\n }\r\n\r\n get ByteRate() {\r\n return this.view.getUint32(28, this.littleEndian);\r\n }\r\n\r\n // 2 bytes at offset of 32 bytes\r\n set BlockAlign(uint) {\r\n this.view.setUint16(32, uint, this.littleEndian);\r\n }\r\n\r\n get BlockAlign() {\r\n return this.view.getUint16(32, this.littleEndian);\r\n }\r\n\r\n // 2 bytes at offset of 34 bytes\r\n set BitsPerSample(uint) {\r\n this.view.setUint16(34, uint, this.littleEndian);\r\n }\r\n\r\n get BitsPerSample() {\r\n return this.view.getUint16(34, this.littleEndian);\r\n }\r\n\r\n // 4 bytes at offset of 36 bytes\r\n set SubChunk2ID(str) {\r\n this.setString(str, 4, 36);\r\n }\r\n\r\n get SubChunk2ID() {\r\n return this.getString(4, 36);\r\n }\r\n\r\n // 4 bytes at offset of 40 bytes\r\n set SubChunk2Size(uint) {\r\n this.view.setUint32(40, uint, this.littleEndian);\r\n }\r\n\r\n get SubChunk2Size() {\r\n return this.view.getUint32(40, this.littleEndian);\r\n }\r\n\r\n // internal getter for sound data as\r\n // typed array based on header properties\r\n get typedData() {\r\n var bytesPerSample = this.BitsPerSample >>> 3;\r\n var data = this.data;\r\n var size = this.SubChunk2Size;\r\n var samples = size / bytesPerSample;\r\n var buffer = new ArrayBuffer(size);\r\n var uint8 = new Uint8Array(buffer);\r\n\r\n // convert signed normalized sound data to typed integer data\r\n // i.e. [-1, 1] -> [INT_MIN, INT_MAX]\r\n var amplitude = Math.pow(2, (bytesPerSample << 3) - 1) - 1;\r\n var i, d;\r\n\r\n switch (bytesPerSample) {\r\n case 1:\r\n // endianess not relevant for 8-bit encoding\r\n for (i = 0; i < samples; i++) {\r\n // convert by adding 0x80 instead of 0x100\r\n // WAV uses unsigned data for 8-bit encoding\r\n\r\n // [INT8_MIN, INT8_MAX] -> [0, UINT8_MAX]\r\n uint8[i] = (data[i] * amplitude + 0x80) & 0xFF;\r\n }\r\n break;\r\n case 2:\r\n // LSB first\r\n if (this.littleEndian) {\r\n for (i = 0; i < samples; i++) {\r\n // [INT16_MIN, INT16_MAX] -> [0, UINT16_MAX]\r\n d = (data[i] * amplitude + 0x10000) & 0xFFFF;\r\n\r\n // unwrap inner loop\r\n uint8[i * 2 ] = (d ) & 0xFF;\r\n uint8[i * 2 + 1] = (d >>> 8);\r\n }\r\n // MSB first\r\n } else {\r\n for (i = 0; i < samples; i++) {\r\n // [INT16_MIN, INT16_MAX] -> [0, UINT16_MAX]\r\n d = (data[i] * amplitude + 0x10000) & 0xFFFF;\r\n\r\n // unwrap inner loop\r\n uint8[i * 2 ] = (d >>> 8);\r\n uint8[i * 2 + 1] = (d ) & 0xFF;\r\n }\r\n }\r\n break;\r\n case 3:\r\n // LSB first\r\n if (this.littleEndian) {\r\n for (i = 0; i < samples; i++) {\r\n // [INT24_MIN, INT24_MAX] -> [0, UINT24_MAX]\r\n d = (data[i] * amplitude + 0x1000000) & 0xFFFFFF;\r\n\r\n // unwrap inner loop\r\n uint8[i * 3 ] = (d ) & 0xFF;\r\n uint8[i * 3 + 1] = (d >>> 8) & 0xFF;\r\n uint8[i * 3 + 2] = (d >>> 16);\r\n }\r\n // MSB first\r\n } else {\r\n for (i = 0; i < samples; i++) {\r\n // [INT24_MIN, INT24_MAX] -> [0, UINT24_MAX]\r\n d = (data[i] * amplitude + 0x1000000) & 0xFFFFFF;\r\n\r\n // unwrap inner loop\r\n uint8[i * 3 ] = (d >>> 16);\r\n uint8[i * 3 + 1] = (d >>> 8) & 0xFF;\r\n uint8[i * 3 + 2] = (d ) & 0xFF;\r\n }\r\n }\r\n case 4:\r\n // LSB first\r\n if (this.littleEndian) {\r\n for (i = 0; i < samples; i++) {\r\n // [INT32_MIN, INT32_MAX] -> [0, UINT32_MAX]\r\n d = (data[i] * amplitude + 0x100000000) & 0xFFFFFFFF;\r\n\r\n // unwrap inner loop\r\n uint8[i * 4 ] = (d ) & 0xFF;\r\n uint8[i * 4 + 1] = (d >>> 8) & 0xFF;\r\n uint8[i * 4 + 2] = (d >>> 16) & 0xFF;\r\n uint8[i * 4 + 3] = (d >>> 24);\r\n }\r\n // MSB first\r\n } else {\r\n for (i = 0; i < samples; i++) {\r\n // [INT32_MIN, INT32_MAX] -> [0, UINT32_MAX]\r\n d = (data[i] * amplitude + 0x100000000) & 0xFFFFFFFF;\r\n\r\n // unwrap inner loop\r\n uint8[i * 4 ] = (d >>> 24);\r\n uint8[i * 4 + 1] = (d >>> 16) & 0xFF;\r\n uint8[i * 4 + 2] = (d >>> 8) & 0xFF;\r\n uint8[i * 4 + 3] = (d ) & 0xFF;\r\n }\r\n }\r\n }\r\n\r\n return buffer;\r\n }\r\n\r\n // binary container outputs\r\n\r\n // browser-specific\r\n // generates blob from concatenated typed arrays\r\n toBlob() {\r\n return new Blob([this.header, this.typedData], {type: 'audio/wav'});\r\n }\r\n\r\n // Node.js-specific\r\n // generates buffer from concatenated typed arrays\r\n toBuffer() {\r\n return Buffer.concat([Buffer.from(this.header), Buffer.from(this.typedData)]);\r\n }\r\n\r\n // pointer mutators\r\n\r\n // gets time (in seconds) of pointer\r\n tell() {\r\n return this.pointer / this.NumChannels / this.SampleRate;\r\n }\r\n\r\n // sets time (in seconds) of pointer\r\n // zero-fills by default\r\n seek(time, fill = true) {\r\n var data = this.data;\r\n var sample = Math.round(this.SampleRate * time);\r\n\r\n this.pointer = this.NumChannels * sample;\r\n\r\n if (fill) {\r\n // zero-fill seek\r\n while (data.length < this.pointer) {\r\n data[data.length] = 0;\r\n }\r\n } else {\r\n this.pointer = data.length;\r\n }\r\n }\r\n\r\n // sound data mutators\r\n\r\n // writes the specified note to the sound data\r\n // for amount of time in seconds\r\n // at given normalized amplitude\r\n // to channels listed (or all by default)\r\n // adds to existing data by default\r\n // and does not reset write index after operation by default\r\n writeNote({note, time, amplitude = 1}, channels = [], blend = true, reset = false) {\r\n // creating local references to properties\r\n var data = this.data;\r\n var numChannels = this.NumChannels;\r\n var sampleRate = this.SampleRate;\r\n\r\n // to prevent sound artifacts\r\n const fadeSeconds = 0.001;\r\n\r\n // calculating properties of given note\r\n var semitone = WAV.semitone(note);\r\n var frequency = WAV.frequency(semitone) * Math.PI * 2 / sampleRate;\r\n var period = Math.PI * 2 / frequency;\r\n\r\n // amount of blocks to be written\r\n var blocksOut = Math.round(sampleRate * time);\r\n // reduces sound artifacts by fading at last fadeSeconds\r\n var nonZero = blocksOut - sampleRate * fadeSeconds;\r\n // fade interval in samples\r\n var fade = blocksOut - nonZero + 1;\r\n\r\n // index of start and stop samples\r\n var start = this.pointer;\r\n var stop = data.length;\r\n\r\n // determines amount of blocks to be updated\r\n var blocksIn = Math.min(Math.floor((stop - start) / numChannels), blocksOut);\r\n\r\n // i = index of each sample block\r\n // j = index of each channel in a block\r\n // k = cached index of data\r\n // d = sample data value\r\n var i, j, k, d;\r\n\r\n // by default write to all channels\r\n if (channels.length === 0) {\r\n // don't overwrite passed array\r\n channels = [];\r\n\r\n for (i = 0; i < numChannels; i++) {\r\n channels[i] = i;\r\n }\r\n }\r\n\r\n // inline .indexOf() function calls into array references\r\n var skipChannel = [];\r\n\r\n for (i = 0; i < numChannels; i++) {\r\n skipChannel[i] = (channels.indexOf(i) === -1);\r\n }\r\n\r\n // update existing data\r\n for (i = 0; i < blocksIn; i++) {\r\n // iterate through specified channels\r\n for (j = 0; j < channels.length; j++) {\r\n k = start + i * numChannels + channels[j];\r\n d = 0;\r\n\r\n if (frequency > 0) {\r\n d = amplitude * Math.sin(frequency * i) * ((i < fade) ? i : (i > nonZero) ? blocksOut - i + 1 : fade) / fade;\r\n }\r\n\r\n data[k] = d + (blend ? data[k] : 0);\r\n }\r\n }\r\n\r\n // append data\r\n for (i = blocksIn; i < blocksOut; i++) {\r\n k = start + i * numChannels;\r\n\r\n // iterate through all channels\r\n for (j = 0; j < numChannels; j++) {\r\n d = 0;\r\n\r\n // only write non-zero data to specified channels\r\n if (frequency > 0 || !skipChannel[j]) {\r\n d = amplitude * Math.sin(frequency * i) * ((i < fade) ? i : (i > nonZero) ? blocksOut - i + 1 : fade) / fade;\r\n }\r\n\r\n data[k + j] = d;\r\n }\r\n }\r\n\r\n // update header properties\r\n var end = Math.max(start + blocksOut * numChannels, stop) * this.BitsPerSample >>> 3;\r\n\r\n this.ChunkSize = end + this.header.byteLength - 8;\r\n this.SubChunk2Size = end;\r\n\r\n if (!reset) {\r\n // move write index to end of written data\r\n this.pointer = start + blocksOut * numChannels;\r\n }\r\n }\r\n\r\n // adds specified notes in series\r\n // (or asynchronously if offset property is specified in a note)\r\n // each playing for time * relativeDuration seconds\r\n // followed by a time * (1 - relativeDuration) second rest\r\n writeProgression(notes, amplitude = 1, channels = [], blend = true, reset = false, relativeDuration = 1) {\r\n var start = this.pointer;\r\n\r\n for (var i = 0, note, time, amp, off, secs, rest; i < notes.length; i++) {\r\n ({note, time, amplitude: amp, offset: off} = notes[i]);\r\n\r\n // for asynchronous progression\r\n if (off !== undefined) {\r\n this.seek(off);\r\n }\r\n\r\n if (relativeDuration === 1 || note === 'REST') {\r\n this.writeNote({note, time, amplitude: amp === undefined ? amplitude : amp * amplitude}, channels, blend, false);\r\n } else {\r\n secs = time * relativeDuration;\r\n rest = time - secs;\r\n\r\n this.writeNote({note: note, time: secs, amplitude: amp === undefined ? amplitude : amp * amplitude}, channels, blend, false);\r\n this.writeNote({note: 'REST', time: rest}, channels, blend, false);\r\n }\r\n }\r\n\r\n if (reset) {\r\n this.pointer = start;\r\n }\r\n }\r\n};\r\n\r\nmodule.exports = WAV;\r\n"]} \ No newline at end of file +{"version":3,"sources":["A:/Windows/Documents/GitHub/synth-js/node_modules/browser-pack/_prelude.js","A:/Windows/Documents/GitHub/synth-js/node_modules/base64-js/index.js","A:/Windows/Documents/GitHub/synth-js/node_modules/buffer/index.js","A:/Windows/Documents/GitHub/synth-js/node_modules/ieee754/index.js","A:/Windows/Documents/GitHub/synth-js/src/midi.js","A:/Windows/Documents/GitHub/synth-js/src/midi2wav.js","A:/Windows/Documents/GitHub/synth-js/src/utils/timer.js","A:/Windows/Documents/GitHub/synth-js/src/wav.js","index.js"],"names":["f","exports","module","define","amd","window","global","self","this","synth","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","arr","Arr","curByte","len","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","parts","len2","push","start","end","output","num","lookup","join","Uint8Array","Array","indexOf","base64","ieee754","K_MAX_LENGTH","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","createBuffer","RangeError","buf","__proto__","prototype","arg","encodingOrOffset","from","TypeError","allocUnsafe","value","fromString","string","encoding","isEncoding","actual","write","slice","ArrayBuffer","isView","fromArrayLike","isInstance","buffer","fromArrayBuffer","array","byteOffset","undefined","valueOf","b","obj","isBuffer","checked","copy","numberIsNaN","type","isArray","data","Symbol","toPrimitive","assertSize","size","toString","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","out","utf8Slice","asciiSlice","ret","Math","min","String","fromCharCode","latin1Slice","utf16leSlice","bytes","res","swap","m","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","asciiWrite","offset","blitBuffer","str","byteArray","ucs2Write","units","hi","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","codePoints","MAX_ARGUMENTS_LENGTH","apply","kMaxLength","TYPED_ARRAY_SUPPORT","foo","console","error","Object","defineProperty","enumerable","get","species","configurable","writable","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","x","y","concat","list","pos","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","remaining","hexWrite","Number","strLen","parsed","parseInt","substr","toJSON","_arr","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","set","INVALID_BASE64_RE","Infinity","leadSurrogate","split","src","dst","constructor","name","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","d","s","NaN","rt","abs","isNaN","floor","log","LN2","_typeof","iterator","_defineProperties","props","descriptor","key","input","hint","prim","MIDIStream","lastEventTypeByte","Constructor","protoProps","staticProps","readUint8","id","readString","readUint32","event","eventTypeByte","delta","readVarUint","hourByte","meta","subTypeByte","subType","readUint16","skip","readUint24","frameRate","0","2","3","hour","minute","second","frame","subFrame","numerator","denominator","metronome","thirtyseconds","scale","unk","param","eventType","chan","channel","noteNumber","velocity","amount","controllerNumber","controllerValue","_createForOfIteratorHelper","allowArrayLike","normalCompletion","didErr","err","it","step","next","done","_e2","return","minLen","_arrayLikeToArray","test","F","_e","arr2","WAV","Timer","args","midiStream","verbose","header","readChunk","SyntaxError","headerStream","trackCount","timeDivision","tracks","progression","events","trackChunk","trackStream","track","keep","readEvent","Skip","_step","_iterator","timer","_event","_i","addCriticalPoint","_i2","_step2","_track","_delta","map","Map","_iterator2","semitone","_velocity","notes","note","_event2","getTime","has","pop","time","amplitude","toFixed","sort","_step3","maxVelocity","maxVelocityTime","maxChord","maxChordTime","chord","_iterator3","_event3","maxAmplitude","channels","wav","sampleRate","bitsPerSample","writeProgression","duration","ticksPerBeat","criticalPoints","microsecondsPerBeat","criticalPoint","_slicedToArray","_s","_x","_r","_n","_d","re","numChannels","instance","bytesPerSample","view","DataView","pointer","ChunkID","ChunkSize","Format","SubChunk1ID","SubChunk1Size","AudioFormat","NumChannels","SampleRate","ByteRate","BlockAlign","BitsPerSample","SubChunk2ID","SubChunk2Size","tone","octave","tones","octaves","accidentals","_ref3","match","accidental","-1","4","5","6","7","8","9","10","bb","","#","##","C","D","E","G","A","B","octaveIndex","toneIndex","charAt","setUint8","getUint8","getString","setString","getUint32","uint","setUint32","getUint16","setUint16","samples","Blob","typedData","sample","round","_ref","k","_ref$amplitude","blend","reset","frequency","PI","blocksOut","nonZero","fade","stop","blocksIn","skipChannel","sin","relativeDuration","_notes$i","amp","off","seek","writeNote","rest","secs","midiToWav"],"mappings":"AAAA,CAAA,SAAAA,GAAA,UAAA,OAAAC,SAAA,aAAA,OAAAC,OAAAA,OAAAD,QAAAD,EAAA,EAAA,YAAA,OAAAG,QAAAA,OAAAC,IAAAD,OAAA,GAAAH,CAAA,GAAA,aAAA,OAAAK,OAAAA,OAAA,aAAA,OAAAC,OAAAA,OAAA,aAAA,OAAAC,KAAAA,KAAAC,MAAAC,MAAAT,EAAA,CAAA,EAAA,WAAA,OAAA,SAAAU,EAAAC,EAAAC,EAAAC,GAAA,SAAAC,EAAAC,EAAAf,GAAA,GAAA,CAAAY,EAAAG,GAAA,CAAA,GAAA,CAAAJ,EAAAI,GAAA,CAAA,IAAAC,EAAA,YAAA,OAAAC,SAAAA,QAAA,GAAA,CAAAjB,GAAAgB,EAAA,OAAAA,EAAAD,EAAA,CAAA,CAAA,EAAA,GAAAG,EAAA,OAAAA,EAAAH,EAAA,CAAA,CAAA,EAAA,MAAAI,EAAA,IAAAC,MAAA,uBAAAL,EAAA,GAAA,GAAAM,KAAA,mBAAAF,CAAA,CAAAG,EAAAV,EAAAG,GAAA,CAAAd,QAAA,EAAA,EAAAU,EAAAI,GAAA,GAAAQ,KAAAD,EAAArB,QAAA,SAAAS,GAAA,OAAAI,EAAAH,EAAAI,GAAA,GAAAL,IAAAA,CAAA,CAAA,EAAAY,EAAAA,EAAArB,QAAAS,EAAAC,EAAAC,EAAAC,CAAA,CAAA,CAAA,OAAAD,EAAAG,GAAAd,OAAA,CAAA,IAAA,IAAAiB,EAAA,YAAA,OAAAD,SAAAA,QAAAF,EAAA,EAAAA,EAAAF,EAAAW,OAAAT,CAAA,GAAAD,EAAAD,EAAAE,EAAA,EAAA,OAAAD,CAAA,EAAA,CAAAW,EAAA,CAAA,SAAAR,EAAAf,EAAAD,GCAA,aAEAA,EAAAyB,WAuCA,SAAAC,GACA,IAAAC,EAAAC,EAAAF,CAAA,EACAG,EAAAF,EAAA,GACAG,EAAAH,EAAA,GACA,OAAA,GAAAE,EAAAC,GAAA,EAAAA,CACA,EA3CA9B,EAAA+B,YAiDA,SAAAL,GACA,IAAAM,EAcAlB,EAbAa,EAAAC,EAAAF,CAAA,EACAG,EAAAF,EAAA,GACAG,EAAAH,EAAA,GAEAM,EAAA,IAAAC,EAVA,SAAAL,EAAAC,GACA,OAAA,GAAAD,EAAAC,GAAA,EAAAA,CACA,EAQAD,EAAAC,CAAA,CAAA,EAEAK,EAAA,EAGAC,EAAA,EAAAN,EACAD,EAAA,EACAA,EAGA,IAAAf,EAAA,EAAAA,EAAAsB,EAAAtB,GAAA,EACAkB,EACAK,EAAAX,EAAAY,WAAAxB,CAAA,IAAA,GACAuB,EAAAX,EAAAY,WAAAxB,EAAA,CAAA,IAAA,GACAuB,EAAAX,EAAAY,WAAAxB,EAAA,CAAA,IAAA,EACAuB,EAAAX,EAAAY,WAAAxB,EAAA,CAAA,GACAmB,EAAAE,CAAA,IAAAH,GAAA,GAAA,IACAC,EAAAE,CAAA,IAAAH,GAAA,EAAA,IACAC,EAAAE,CAAA,IAAA,IAAAH,EAGA,IAAAF,IACAE,EACAK,EAAAX,EAAAY,WAAAxB,CAAA,IAAA,EACAuB,EAAAX,EAAAY,WAAAxB,EAAA,CAAA,IAAA,EACAmB,EAAAE,CAAA,IAAA,IAAAH,GAGA,IAAAF,IACAE,EACAK,EAAAX,EAAAY,WAAAxB,CAAA,IAAA,GACAuB,EAAAX,EAAAY,WAAAxB,EAAA,CAAA,IAAA,EACAuB,EAAAX,EAAAY,WAAAxB,EAAA,CAAA,IAAA,EACAmB,EAAAE,CAAA,IAAAH,GAAA,EAAA,IACAC,EAAAE,CAAA,IAAA,IAAAH,GAGA,OAAAC,CACA,EA5FAjC,EAAAuC,cAkHA,SAAAC,GAQA,IAPA,IAAAR,EACAI,EAAAI,EAAAjB,OACAkB,EAAAL,EAAA,EACAM,EAAA,GAIA5B,EAAA,EAAA6B,EAAAP,EAAAK,EAAA3B,EAAA6B,EAAA7B,GAHA,MAIA4B,EAAAE,KAtBA,SAAAJ,EAAAK,EAAAC,GAGA,IAFA,IAAAd,EACAe,EAAA,GACAjC,EAAA+B,EAAA/B,EAAAgC,EAAAhC,GAAA,EACAkB,GACAQ,EAAA1B,IAAA,GAAA,WACA0B,EAAA1B,EAAA,IAAA,EAAA,QACA,IAAA0B,EAAA1B,EAAA,IACAiC,EAAAH,KAfA,SAAAI,GACA,OAAAC,EAAAD,GAAA,GAAA,IACAC,EAAAD,GAAA,GAAA,IACAC,EAAAD,GAAA,EAAA,IACAC,EAAA,GAAAD,EACA,EAUAhB,CAAA,CAAA,EAEA,OAAAe,EAAAG,KAAA,EAAA,CACA,EAWAV,EAAA1B,EAAA6B,EAAA7B,EAJA,MAIA6B,EAAA7B,EAJA,KAIA,CAAA,EAIA,GAAA2B,GACAT,EAAAQ,EAAAJ,EAAA,GACAM,EAAAE,KACAK,EAAAjB,GAAA,GACAiB,EAAAjB,GAAA,EAAA,IACA,IACA,GACA,GAAAS,IACAT,GAAAQ,EAAAJ,EAAA,IAAA,GAAAI,EAAAJ,EAAA,GACAM,EAAAE,KACAK,EAAAjB,GAAA,IACAiB,EAAAjB,GAAA,EAAA,IACAiB,EAAAjB,GAAA,EAAA,IACA,GACA,GAGA,OAAAU,EAAAQ,KAAA,EAAA,CACA,EA1IA,IALA,IAAAD,EAAA,GACAZ,EAAA,GACAH,EAAA,aAAA,OAAAiB,WAAAA,WAAAC,MAEAhC,EAAA,mEACAN,EAAA,EAAAsB,EAAAhB,EAAAG,OAAAT,EAAAsB,EAAA,EAAAtB,EACAmC,EAAAnC,GAAAM,EAAAN,GACAuB,EAAAjB,EAAAkB,WAAAxB,CAAA,GAAAA,EAQA,SAAAc,EAAAF,GACA,IAAAU,EAAAV,EAAAH,OAEA,GAAA,EAAAa,EAAA,EACA,MAAA,IAAAjB,MAAA,gDAAA,EAKAU,EAAAH,EAAA2B,QAAA,GAAA,EAGAvB,GAFAD,EAAA,CAAA,IAAAA,EAAAO,EAEAP,KAAAO,EACA,EACA,EAAAP,EAAA,EAEA,MAAA,CAAAA,EAAAC,EACA,CApBAO,EAAA,IAAAC,WAAA,CAAA,GAAA,GACAD,EAAA,IAAAC,WAAA,CAAA,GAAA,E,kDCXA,aAEA,IAAAgB,EAAAtC,EAAA,WAAA,EACAuC,EAAAvC,EAAA,SAAA,EAMAwC,GAJAxD,EAAAyD,OAAAA,EACAzD,EAAA0D,WAqTA,SAAAnC,GACA,CAAAA,GAAAA,IACAA,EAAA,GAEA,OAAAkC,EAAAE,MAAA,CAAApC,CAAA,CACA,EAzTAvB,EAAA4D,kBAAA,GAEA,YAsDA,SAAAC,EAAAtC,GACA,GAAAiC,EAAAjC,EACA,MAAA,IAAAuC,WAAA,cAAAvC,EAAA,gCAAA,EAGAwC,EAAA,IAAAZ,WAAA5B,CAAA,EAEA,OADAwC,EAAAC,UAAAP,EAAAQ,UACAF,CACA,CAYA,SAAAN,EAAAS,EAAAC,EAAA5C,GAEA,GAAA,UAAA,OAAA2C,EAQA,OAAAE,EAAAF,EAAAC,EAAA5C,CAAA,EAPA,GAAA,UAAA,OAAA4C,EACA,MAAA,IAAAE,UACA,oEACA,EAEA,OAAAC,EAAAJ,CAAA,CAGA,CAeA,SAAAE,EAAAG,EAAAJ,EAAA5C,GACA,GAAA,UAAA,OAAAgD,EAAA,CACAC,IAiHAC,EAjHAF,EAiHAG,EAjHAP,EAsHA,GAAAV,EAAAkB,WAHAD,EADA,UAAA,OAAAA,GAAA,KAAAA,EAIAA,EAHA,MAGA,EAgBA,OAZAnD,EAAA,EAAAE,EAAAgD,EAAAC,CAAA,EACAX,EAAAF,EAAAtC,CAAA,EAQAwC,GAJAa,EAFAb,EAAAc,MAAAJ,EAAAC,CAAA,KAEAnD,EAIAwC,EAAAe,MAAA,EAAAF,CAAA,EAGAb,EAfA,MAAA,IAAAM,UAAA,qBAAAK,CAAA,CAtHA,CAEA,GAAAK,YAAAC,OAAAT,CAAA,EACA,OAAAU,EAAAV,CAAA,EAGA,GAAA,MAAAA,EACA,MAAAF,UACA,kHACA,OAAAE,CACA,EAGA,GAAAW,EAAAX,EAAAQ,WAAA,GACAR,GAAAW,EAAAX,EAAAY,OAAAJ,WAAA,EAAA,CACAK,IAkIAC,EAlIAd,EAkIAe,EAlIAnB,EAkIA5C,EAlIAA,EAmIA,GAAA+D,EAAA,GAAAD,EAAA5D,WAAA6D,EACA,MAAA,IAAAxB,WAAA,sCAAA,EAGA,GAAAuB,EAAA5D,WAAA6D,GAAA/D,GAAA,GACA,MAAA,IAAAuC,WAAA,sCAAA,EAcA,OATAC,EADAwB,KAAAA,IAAAD,GAAAC,KAAAA,IAAAhE,EACA,IAAA4B,WAAAkC,CAAA,EACAE,KAAAA,IAAAhE,EACA,IAAA4B,WAAAkC,EAAAC,CAAA,EAEA,IAAAnC,WAAAkC,EAAAC,EAAA/D,CAAA,GAIAyC,UAAAP,EAAAQ,UACAF,CArJA,CAEA,GAAA,UAAA,OAAAQ,EACA,MAAA,IAAAF,UACA,uEACA,EAGAmB,EAAAjB,EAAAiB,SAAAjB,EAAAiB,QAAA,EACA,GAAA,MAAAA,GAAAA,IAAAjB,EACA,OAAAd,EAAAW,KAAAoB,EAAArB,EAAA5C,CAAA,EAGA,IAAAkE,EA2IA,SAAAC,GACA,CAAA,IACAtD,EACA2B,EAFA,GAAAN,EAAAkC,SAAAD,CAAA,EASA,OARAtD,EAAA,EAAAwD,EAAAF,EAAAnE,MAAA,EAGA,KAFAwC,EAAAF,EAAAzB,CAAA,GAEAb,QAIAmE,EAAAG,KAAA9B,EAAA,EAAA,EAAA3B,CAAA,EACA2B,CACA,CAEA,GAAAwB,KAAAA,IAAAG,EAAAnE,OACA,MAAA,UAAA,OAAAmE,EAAAnE,QAAAuE,EAAAJ,EAAAnE,MAAA,EACAsC,EAAA,CAAA,EAEAoB,EAAAS,CAAA,EAGA,GAAA,WAAAA,EAAAK,MAAA3C,MAAA4C,QAAAN,EAAAO,IAAA,EACA,OAAAhB,EAAAS,EAAAO,IAAA,CAEA,EAlKA1B,CAAA,EACA,GAAAkB,EAAA,OAAAA,EAEA,GAAA,aAAA,OAAAS,QAAA,MAAAA,OAAAC,aACA,YAAA,OAAA5B,EAAA2B,OAAAC,aACA,OAAA1C,EAAAW,KACAG,EAAA2B,OAAAC,aAAA,QAAA,EAAAhC,EAAA5C,CACA,EAGA,MAAA,IAAA8C,UACA,kHACA,OAAAE,CACA,CACA,CAmBA,SAAA6B,EAAAC,GACA,GAAA,UAAA,OAAAA,EACA,MAAA,IAAAhC,UAAA,wCAAA,EACA,GAAAgC,EAAA,EACA,MAAA,IAAAvC,WAAA,cAAAuC,EAAA,gCAAA,CAEA,CA0BA,SAAA/B,EAAA+B,GAEA,OADAD,EAAAC,CAAA,EACAxC,EAAAwC,EAAA,EAAA,EAAA,EAAAT,EAAAS,CAAA,CAAA,CACA,CAuCA,SAAApB,EAAAI,GAGA,IAFA,IAAA9D,EAAA8D,EAAA9D,OAAA,EAAA,EAAA,EAAAqE,EAAAP,EAAA9D,MAAA,EACAwC,EAAAF,EAAAtC,CAAA,EACAT,EAAA,EAAAA,EAAAS,EAAAT,GAAA,EACAiD,EAAAjD,GAAA,IAAAuE,EAAAvE,GAEA,OAAAiD,CACA,CAkDA,SAAA6B,EAAArE,GAGA,GAAAiC,GAAAjC,EACA,MAAA,IAAAuC,WAAA,0DACAN,EAAA8C,SAAA,EAAA,EAAA,QAAA,EAEA,OAAA,EAAA/E,CACA,CA6FA,SAAAE,EAAAgD,EAAAC,GACA,GAAAjB,EAAAkC,SAAAlB,CAAA,EACA,OAAAA,EAAAlD,OAEA,GAAAwD,YAAAC,OAAAP,CAAA,GAAAS,EAAAT,EAAAM,WAAA,EACA,OAAAN,EAAAhD,WAEA,GAAA,UAAA,OAAAgD,EACA,MAAA,IAAAJ,UACA,2FACA,OAAAI,CACA,EAGA,IAAArC,EAAAqC,EAAAlD,OACAgF,EAAA,EAAAC,UAAAjF,QAAA,CAAA,IAAAiF,UAAA,GACA,GAAA,CAAAD,GAAA,IAAAnE,EAAA,OAAA,EAIA,IADA,IAAAqE,EAAA,CAAA,IAEA,OAAA/B,GACA,IAAA,QACA,IAAA,SACA,IAAA,SACA,OAAAtC,EACA,IAAA,OACA,IAAA,QACA,OAAAsE,EAAAjC,CAAA,EAAAlD,OACA,IAAA,OACA,IAAA,QACA,IAAA,UACA,IAAA,WACA,OAAA,EAAAa,EACA,IAAA,MACA,OAAAA,IAAA,EACA,IAAA,SACA,OAAAuE,EAAAlC,CAAA,EAAAlD,OACA,QACA,GAAAkF,EACA,OAAAF,EAAA,CAAA,EAAAG,EAAAjC,CAAA,EAAAlD,OAEAmD,GAAA,GAAAA,GAAAkC,YAAA,EACAH,EAAA,CAAA,CACA,CAEA,CAGA,SAAAI,EAAAnC,EAAA7B,EAAAC,GACA,IAgdAA,EAhdA2D,EAAA,CAAA,EAcA,IAJA5D,EADA0C,KAAAA,IAAA1C,GAAAA,EAAA,EACA,EAIAA,GAAAtC,KAAAgB,OACA,MAAA,GAOA,IAHAuB,EADAyC,KAAAA,IAAAzC,GAAAA,EAAAvC,KAAAgB,OACAhB,KAAAgB,OAGAuB,IAAA,EACA,MAAA,GAOA,IAHAA,KAAA,KACAD,KAAA,GAGA,MAAA,GAKA,IAFA6B,EAAAA,GAAA,SAGA,OAAAA,GACA,IAAA,MACAoC,IAqiBA/C,EAriBAxD,KAqiBAsC,EAriBAA,EAqiBAC,EAriBAA,EAsiBAV,EAAA2B,EAAAxC,QAGA,CAAAuB,GAAAA,EAAA,GAAAV,EAAAU,KAAAA,EAAAV,GAGA,IADA,IAAA2E,EAAA,GACAjG,EAJA+B,EAAA,CAAAA,GAAAA,EAAA,EAAA,EAIAA,EAAA/B,EAAAgC,EAAA,EAAAhC,EACAiG,GAukBA,SAAApG,GACA,OAAAA,EAAA,GAAA,IAAAA,EAAA2F,SAAA,EAAA,EACA3F,EAAA2F,SAAA,EAAA,CACA,EA1kBAvC,EAAAjD,EAAA,EAEA,OAAAiG,EA7iBA,IAAA,OACA,IAAA,QACA,OAAAC,EAAAzG,KAAAsC,EAAAC,CAAA,EAEA,IAAA,QACAmE,IA0gBAlD,EA1gBAxD,KA0gBAsC,EA1gBAA,EA0gBAC,EA1gBAA,EA2gBAoE,EAAA,GACApE,EAAAqE,KAAAC,IAAArD,EAAAxC,OAAAuB,CAAA,EAEA,IAAA,IAAAhC,EAAA+B,EAAA/B,EAAAgC,EAAA,EAAAhC,EACAoG,GAAAG,OAAAC,aAAA,IAAAvD,EAAAjD,EAAA,EAEA,OAAAoG,EA/gBA,IAAA,SACA,IAAA,SACAK,IAghBAxD,EAhhBAxD,KAghBAsC,EAhhBAA,EAghBAC,EAhhBAA,EAihBAoE,EAAA,GACApE,EAAAqE,KAAAC,IAAArD,EAAAxC,OAAAuB,CAAA,EAEA,IAAA,IAAAhC,EAAA+B,EAAA/B,EAAAgC,EAAA,EAAAhC,EACAoG,GAAAG,OAAAC,aAAAvD,EAAAjD,EAAA,EAEA,OAAAoG,EArhBA,IAAA,SACA,OA2ZAnD,EA3ZAxD,KA2ZAuC,EA3ZAA,EA4ZA,KADAD,EA3ZAA,IA4ZAC,IAAAiB,EAAAxC,OACA+B,EAAAf,cAAAwB,CAAA,EAEAT,EAAAf,cAAAwB,EAAAe,MAAAjC,EAAAC,CAAA,CAAA,EA7ZA,IAAA,OACA,IAAA,QACA,IAAA,UACA,IAAA,WAkiBA,IAjiBA0E,IA8hBA3E,EA9hBAA,EA8hBAC,EA9hBAA,EA+hBA2E,EA/hBAlH,KA+hBAuE,MAAAjC,EAAAC,CAAA,EACA4E,EAAA,GACA5G,EAAA,EAAAA,EAAA2G,EAAAlG,OAAAT,GAAA,EACA4G,GAAAL,OAAAC,aAAAG,EAAA3G,GAAA,IAAA2G,EAAA3G,EAAA,EAAA,EAEA,OAAA4G,EAliBA,QACA,GAAAjB,EAAA,MAAA,IAAApC,UAAA,qBAAAK,CAAA,EACAA,GAAAA,EAAA,IAAAkC,YAAA,EACAH,EAAA,CAAA,CACA,CAEA,CAUA,SAAAkB,EAAAlC,EAAA9E,EAAAiH,GACA,IAAA9G,EAAA2E,EAAA9E,GACA8E,EAAA9E,GAAA8E,EAAAmC,GACAnC,EAAAmC,GAAA9G,CACA,CAwIA,SAAA+G,EAAA1C,EAAA2C,EAAAxC,EAAAZ,EAAAqD,GAEA,GAAA,IAAA5C,EAAA5D,OAAA,MAAA,CAAA,EAmBA,GAhBA,UAAA,OAAA+D,GACAZ,EAAAY,EACAA,EAAA,GACA,WAAAA,EACAA,EAAA,WACAA,EAAA,CAAA,aACAA,EAAA,CAAA,aASAA,GAJAA,EAFAQ,EADAR,EAAA,CAAAA,CACA,EAEAyC,EAAA,EAAA5C,EAAA5D,OAAA,EAIA+D,GAAA,EAAAH,EAAA5D,OAAA+D,EACAA,IAAAH,EAAA5D,OAAA,CACA,GAAAwG,EAAA,MAAA,CAAA,EACAzC,EAAAH,EAAA5D,OAAA,CACA,MAAA,GAAA+D,EAAA,EAAA,CACA,GAAAyC,CAAAA,EACA,MAAA,CAAA,EADAzC,EAAA,CAEA,CAQA,GALA,UAAA,OAAAwC,IACAA,EAAArE,EAAAW,KAAA0D,EAAApD,CAAA,GAIAjB,EAAAkC,SAAAmC,CAAA,EAEA,OAAA,IAAAA,EAAAvG,OACA,CAAA,EAEAyG,EAAA7C,EAAA2C,EAAAxC,EAAAZ,EAAAqD,CAAA,EACA,GAAA,UAAA,OAAAD,EAEA,OADAA,GAAA,IACA,YAAA,OAAA3E,WAAAc,UAAAZ,SACA0E,EACA5E,WAAAc,UAAAZ,QAEAF,WAAAc,UAAAgE,aAFA3G,KAAA6D,EAAA2C,EAAAxC,CAAA,EAKA0C,EAAA7C,EAAA,CAAA2C,GAAAxC,EAAAZ,EAAAqD,CAAA,EAGA,MAAA,IAAA1D,UAAA,sCAAA,CACA,CAEA,SAAA2D,EAAA/F,EAAA6F,EAAAxC,EAAAZ,EAAAqD,GACA,IAAAG,EAAA,EACAC,EAAAlG,EAAAV,OACA6G,EAAAN,EAAAvG,OAEA,GAAAgE,KAAAA,IAAAb,IAEA,UADAA,EAAA2C,OAAA3C,CAAA,EAAAkC,YAAA,IACA,UAAAlC,GACA,YAAAA,GAAA,aAAAA,GAAA,CACA,GAAAzC,EAAAV,OAAA,GAAAuG,EAAAvG,OAAA,EACA,MAAA,CAAA,EAGA4G,GADAD,EAAA,EAEAE,GAAA,EACA9C,GAAA,CACA,CAGA,SAAA+C,EAAAtE,EAAAjD,GACA,OAAA,IAAAoH,EACAnE,EAAAjD,GAEAiD,EAAAuE,aAAAxH,EAAAoH,CAAA,CAEA,CAGA,GAAAH,EAEA,IADA,IAAAQ,EAAA,CAAA,EACAzH,EAAAwE,EAAAxE,EAAAqH,EAAArH,CAAA,GACA,GAAAuH,EAAApG,EAAAnB,CAAA,IAAAuH,EAAAP,EAAA,CAAA,IAAAS,EAAA,EAAAzH,EAAAyH,CAAA,GAEA,GAAAzH,GADAyH,EAAA,CAAA,IAAAA,EAAAzH,EACAyH,GAAA,IAAAH,EAAA,OAAAG,EAAAL,CAAAA,KAEA,CAAA,IAAAK,IAAAzH,GAAAA,EAAAyH,GACAA,EAAA,CAAA,OAKA,IAAAzH,EADAwE,EAAA6C,EAAA7C,EAAA8C,EAAAD,EAAAC,EACA9C,EAAA,GAAAxE,EAAAA,CAAA,GAAA,CAEA,IADA,IAAA0H,EAAA,CAAA,EACAC,EAAA,EAAAA,EAAAL,EAAAK,CAAA,GACA,GAAAJ,EAAApG,EAAAnB,EAAA2H,CAAA,IAAAJ,EAAAP,EAAAW,CAAA,EAAA,CACAD,EAAA,CAAA,EACA,KACA,CAEA,GAAAA,EAAA,OAAA1H,CACA,CAGA,MAAA,CAAA,CACA,CA2CA,SAAA4H,EAAA3E,EAAAU,EAAAkE,EAAApH,GACA,OAAAqH,EA63BA,SAAAC,GAEA,IADA,IAAAC,EAAA,GACAhI,EAAA,EAAAA,EAAA+H,EAAAtH,OAAA,EAAAT,EAEAgI,EAAAlG,KAAA,IAAAiG,EAAAvG,WAAAxB,CAAA,CAAA,EAEA,OAAAgI,CACA,EAp4BArE,CAAA,EAAAV,EAAA4E,EAAApH,CAAA,CACA,CAUA,SAAAwH,EAAAhF,EAAAU,EAAAkE,EAAApH,GACA,OAAAqH,EA03BA,SAAAC,EAAAG,GAGA,IAFA,IAAAjI,EAAAkI,EACAH,EAAA,GACAhI,EAAA,EAAAA,EAAA+H,EAAAtH,QACA,GAAAyH,GAAA,GAAA,GADA,EAAAlI,EAGAC,EAAA8H,EAAAvG,WAAAxB,CAAA,EACAmI,EAAAlI,GAAA,EAEA+H,EAAAlG,KADA7B,EAAA,GACA,EACA+H,EAAAlG,KAAAqG,CAAA,EAGA,OAAAH,CACA,EAx4BArE,EAAAV,EAAAxC,OAAAoH,CAAA,EAAA5E,EAAA4E,EAAApH,CAAA,CACA,CAwFA,SAAAyF,EAAAjD,EAAAlB,EAAAC,GACAA,EAAAqE,KAAAC,IAAArD,EAAAxC,OAAAuB,CAAA,EAIA,IAHA,IAAA4E,EAAA,GAEA5G,EAAA+B,EACA/B,EAAAgC,GAAA,CACA,IAQAoG,EAAAC,EAAAC,EAAAC,EARAC,EAAAvF,EAAAjD,GACAyI,EAAA,KACAC,EAAA,IAAAF,EAAA,EACA,IAAAA,EAAA,EACA,IAAAA,EAAA,EACA,EAEA,GAAAxI,EAAA0I,GAAA1G,EAGA,OAAA0G,GACA,KAAA,EACAF,EAAA,MACAC,EAAAD,GAEA,MACA,KAAA,EAEA,MAAA,KADAJ,EAAAnF,EAAAjD,EAAA,MAGA,KADAuI,GAAA,GAAAC,IAAA,EAAA,GAAAJ,KAEAK,EAAAF,GAGA,MACA,KAAA,EACAH,EAAAnF,EAAAjD,EAAA,GACAqI,EAAApF,EAAAjD,EAAA,GACA,MAAA,IAAAoI,IAAA,MAAA,IAAAC,IAEA,MADAE,GAAA,GAAAC,IAAA,IAAA,GAAAJ,IAAA,EAAA,GAAAC,KACAE,EAAA,OAAA,MAAAA,KACAE,EAAAF,GAGA,MACA,KAAA,EACAH,EAAAnF,EAAAjD,EAAA,GACAqI,EAAApF,EAAAjD,EAAA,GACAsI,EAAArF,EAAAjD,EAAA,GACA,MAAA,IAAAoI,IAAA,MAAA,IAAAC,IAAA,MAAA,IAAAC,IAEA,OADAC,GAAA,GAAAC,IAAA,IAAA,GAAAJ,IAAA,IAAA,GAAAC,IAAA,EAAA,GAAAC,IACAC,EAAA,UACAE,EAAAF,EAGA,CAGA,OAAAE,GAGAA,EAAA,MACAC,EAAA,GACA,MAAAD,IAGA7B,EAAA9E,MADA2G,GAAA,SACA,GAAA,KAAA,KAAA,EACAA,EAAA,MAAA,KAAAA,GAGA7B,EAAA9E,KAAA2G,CAAA,EACAzI,GAAA0I,CACA,CAEAC,IAQAC,EARAhC,EASAtF,EAAAsH,EAAAnI,OACA,GAAAa,GAAAuH,EACA,OAAAtC,OAAAC,aAAAsC,MAAAvC,OAAAqC,CAAA,EAMA,IAFA,IAAAhC,EAAA,GACA5G,EAAA,EACAA,EAAAsB,GACAsF,GAAAL,OAAAC,aAAAsC,MACAvC,OACAqC,EAAA5E,MAAAhE,EAAAA,GAAA6I,CAAA,CACA,EAEA,OAAAjC,CAtBA,CA79BA1H,EAAA6J,WAAArG,GAgBAC,EAAAqG,oBAUA,WAEA,IACA,IAAA7H,EAAA,IAAAkB,WAAA,CAAA,EAEA,OADAlB,EAAA+B,UAAA,CAAAA,UAAAb,WAAAc,UAAA8F,IAAA,WAAA,OAAA,EAAA,CAAA,EACA,KAAA9H,EAAA8H,IAAA,CAGA,CAFA,MAAArJ,GACA,MAAA,CAAA,CACA,CACA,EAnBA,IAEA,aAAA,OAAAsJ,SACA,YAAA,OAAAA,QAAAC,OACAD,QAAAC,MACA,+IAEA,EAcAC,OAAAC,eAAA1G,EAAAQ,UAAA,SAAA,CACAmG,WAAA,CAAA,EACAC,IAAA,WACA,GAAA5G,EAAAkC,SAAApF,IAAA,EACA,OAAAA,KAAA4E,MACA,CACA,CAAA,EAEA+E,OAAAC,eAAA1G,EAAAQ,UAAA,SAAA,CACAmG,WAAA,CAAA,EACAC,IAAA,WACA,GAAA5G,EAAAkC,SAAApF,IAAA,EACA,OAAAA,KAAA+E,UACA,CACA,CAAA,EAoCA,aAAA,OAAAY,QAAA,MAAAA,OAAAoE,SACA7G,EAAAyC,OAAAoE,WAAA7G,GACAyG,OAAAC,eAAA1G,EAAAyC,OAAAoE,QAAA,CACA/F,MAAA,KACAgG,aAAA,CAAA,EACAH,WAAA,CAAA,EACAI,SAAA,CAAA,CACA,CAAA,EAGA/G,EAAAgH,SAAA,KA0DAhH,EAAAW,KACAA,EAKAX,EAAAQ,UAAAD,UAAAb,WAAAc,UACAR,EAAAO,UAAAb,WA8BAM,EAAAE,MAAA,SAAA0C,EAAAqE,EAAAhG,GACA,OArBAgG,EAqBAA,EArBAhG,EAqBAA,EApBA0B,EADAC,EAqBAA,CApBA,EACAA,EAAAA,GAAA,IAGAd,KAAAA,IAAAmF,EAIA,UAAA,OAAAhG,EACAb,EAAAwC,CAAA,EAAAqE,KAAAA,EAAAhG,CAAA,EACAb,EAAAwC,CAAA,EAAAqE,KAAAA,CAAA,EAEA7G,EAAAwC,CAAA,CASA,EAUA5C,EAAAa,YACAA,EAKAb,EAAAkH,gBACArG,EAqGAb,EAAAkC,SAAA,SAAAF,GACA,OAAA,MAAAA,GAAA,CAAA,IAAAA,EAAAmF,WACAnF,IAAAhC,EAAAQ,SACA,EAEAR,EAAAoH,QAAA,SAAA3J,EAAAuE,GAGA,GAFAP,EAAAhE,EAAAiC,UAAA,IAAAjC,EAAAuC,EAAAW,KAAAlD,EAAAA,EAAAyH,OAAAzH,EAAAO,UAAA,GACAyD,EAAAO,EAAAtC,UAAA,IAAAsC,EAAAhC,EAAAW,KAAAqB,EAAAA,EAAAkD,OAAAlD,EAAAhE,UAAA,GACA,CAAAgC,EAAAkC,SAAAzE,CAAA,GAAA,CAAAuC,EAAAkC,SAAAF,CAAA,EACA,MAAA,IAAApB,UACA,uEACA,EAGA,GAAAnD,IAAAuE,EAAA,OAAA,EAKA,IAHA,IAAAqF,EAAA5J,EAAAK,OACAwJ,EAAAtF,EAAAlE,OAEAT,EAAA,EAAAsB,EAAA+E,KAAAC,IAAA0D,EAAAC,CAAA,EAAAjK,EAAAsB,EAAA,EAAAtB,EACA,GAAAI,EAAAJ,KAAA2E,EAAA3E,GAAA,CACAgK,EAAA5J,EAAAJ,GACAiK,EAAAtF,EAAA3E,GACA,KACA,CAGA,OAAAgK,EAAAC,EAAA,CAAA,EACAA,EAAAD,EAAA,EACA,CACA,EAEArH,EAAAkB,WAAA,SAAAD,GACA,OAAA2C,OAAA3C,CAAA,EAAAkC,YAAA,GACA,IAAA,MACA,IAAA,OACA,IAAA,QACA,IAAA,QACA,IAAA,SACA,IAAA,SACA,IAAA,SACA,IAAA,OACA,IAAA,QACA,IAAA,UACA,IAAA,WACA,MAAA,CAAA,EACA,QACA,MAAA,CAAA,CACA,CACA,EAEAnD,EAAAuH,OAAA,SAAAC,EAAA1J,GACA,GAAA,CAAA6B,MAAA4C,QAAAiF,CAAA,EACA,MAAA,IAAA5G,UAAA,6CAAA,EAGA,GAAA,IAAA4G,EAAA1J,OACA,OAAAkC,EAAAE,MAAA,CAAA,EAIA,GAAA4B,KAAAA,IAAAhE,EAEA,IAAAT,EADAS,EAAA,EACAT,EAAAmK,EAAA1J,OAAA,EAAAT,EACAS,GAAA0J,EAAAnK,GAAAS,OAMA,IAFA,IAAA4D,EAAA1B,EAAAa,YAAA/C,CAAA,EACA2J,EAAA,EACApK,EAAA,EAAAA,EAAAmK,EAAA1J,OAAA,EAAAT,EAAA,CACA,IAAAiD,EAAAkH,EAAAnK,GAIA,GAHAoE,EAAAnB,EAAAZ,UAAA,IACAY,EAAAN,EAAAW,KAAAL,CAAA,GAEA,CAAAN,EAAAkC,SAAA5B,CAAA,EACA,MAAA,IAAAM,UAAA,6CAAA,EAEAN,EAAA8B,KAAAV,EAAA+F,CAAA,EACAA,GAAAnH,EAAAxC,MACA,CACA,OAAA4D,CACA,EAiDA1B,EAAAhC,WAAAA,EA8EAgC,EAAAQ,UAAA2G,UAAA,CAAA,EAQAnH,EAAAQ,UAAAkH,OAAA,WACA,IAAA/I,EAAA7B,KAAAgB,OACA,GAAAa,EAAA,GAAA,EACA,MAAA,IAAA0B,WAAA,2CAAA,EAEA,IAAA,IAAAhD,EAAA,EAAAA,EAAAsB,EAAAtB,GAAA,EACA6G,EAAApH,KAAAO,EAAAA,EAAA,CAAA,EAEA,OAAAP,IACA,EAEAkD,EAAAQ,UAAAmH,OAAA,WACA,IAAAhJ,EAAA7B,KAAAgB,OACA,GAAAa,EAAA,GAAA,EACA,MAAA,IAAA0B,WAAA,2CAAA,EAEA,IAAA,IAAAhD,EAAA,EAAAA,EAAAsB,EAAAtB,GAAA,EACA6G,EAAApH,KAAAO,EAAAA,EAAA,CAAA,EACA6G,EAAApH,KAAAO,EAAA,EAAAA,EAAA,CAAA,EAEA,OAAAP,IACA,EAEAkD,EAAAQ,UAAAoH,OAAA,WACA,IAAAjJ,EAAA7B,KAAAgB,OACA,GAAAa,EAAA,GAAA,EACA,MAAA,IAAA0B,WAAA,2CAAA,EAEA,IAAA,IAAAhD,EAAA,EAAAA,EAAAsB,EAAAtB,GAAA,EACA6G,EAAApH,KAAAO,EAAAA,EAAA,CAAA,EACA6G,EAAApH,KAAAO,EAAA,EAAAA,EAAA,CAAA,EACA6G,EAAApH,KAAAO,EAAA,EAAAA,EAAA,CAAA,EACA6G,EAAApH,KAAAO,EAAA,EAAAA,EAAA,CAAA,EAEA,OAAAP,IACA,EASAkD,EAAAQ,UAAAqH,eAPA7H,EAAAQ,UAAAqC,SAAA,WACA,IAAA/E,EAAAhB,KAAAgB,OACA,OAAA,IAAAA,EAAA,GACA,IAAAiF,UAAAjF,OAAAyF,EAAAzG,KAAA,EAAAgB,CAAA,EACAsF,EAAA+C,MAAArJ,KAAAiG,SAAA,CACA,EAIA/C,EAAAQ,UAAAsH,OAAA,SAAA9F,GACA,GAAAhC,EAAAkC,SAAAF,CAAA,EACA,OAAAlF,OAAAkF,GACA,IAAAhC,EAAAoH,QAAAtK,KAAAkF,CAAA,EAFA,MAAA,IAAApB,UAAA,2BAAA,CAGA,EAEAZ,EAAAQ,UAAAuH,QAAA,WACA,IAAA3C,EAAA,GACA4C,EAAAzL,EAAA4D,kBACAiF,EAAAtI,KAAA+F,SAAA,MAAA,EAAAmF,CAAA,EAAAC,QAAA,UAAA,KAAA,EAAAC,KAAA,EAEA,OADApL,KAAAgB,OAAAkK,IAAA5C,GAAA,SACA,WAAAA,EAAA,GACA,EAEApF,EAAAQ,UAAA4G,QAAA,SAAAe,EAAA/I,EAAAC,EAAA+I,EAAAC,GAIA,GAHA5G,EAAA0G,EAAAzI,UAAA,IACAyI,EAAAnI,EAAAW,KAAAwH,EAAAA,EAAAjD,OAAAiD,EAAAnK,UAAA,GAEA,CAAAgC,EAAAkC,SAAAiG,CAAA,EACA,MAAA,IAAAvH,UACA,iFACA,OAAAuH,CACA,EAgBA,GAVArG,KAAAA,IAAAzC,IACAA,EAAA8I,EAAAA,EAAArK,OAAA,GAEAgE,KAAAA,IAAAsG,IACAA,EAAA,GAEAtG,KAAAA,IAAAuG,IACAA,EAAAvL,KAAAgB,SATAsB,EADA0C,KAAAA,IAAA1C,EACA,EAYAA,GAAA,GAAAC,EAAA8I,EAAArK,QAAAsK,EAAA,GAAAC,EAAAvL,KAAAgB,OACA,MAAA,IAAAuC,WAAA,oBAAA,EAGA,GAAAgI,GAAAD,GAAA/I,GAAAD,EACA,OAAA,EAEA,GAAAiJ,GAAAD,EACA,MAAA,CAAA,EAEA,GAAA/I,GAAAD,EACA,OAAA,EAQA,GAAAtC,OAAAqL,EAAA,OAAA,EASA,IAPA,IAAAd,GAJAgB,KAAA,IADAD,KAAA,GAMAd,GAPAjI,KAAA,IADAD,KAAA,GASAT,EAAA+E,KAAAC,IAAA0D,EAAAC,CAAA,EAEAgB,EAAAxL,KAAAuE,MAAA+G,EAAAC,CAAA,EACAE,EAAAJ,EAAA9G,MAAAjC,EAAAC,CAAA,EAEAhC,EAAA,EAAAA,EAAAsB,EAAA,EAAAtB,EACA,GAAAiL,EAAAjL,KAAAkL,EAAAlL,GAAA,CACAgK,EAAAiB,EAAAjL,GACAiK,EAAAiB,EAAAlL,GACA,KACA,CAGA,OAAAgK,EAAAC,EAAA,CAAA,EACAA,EAAAD,EAAA,EACA,CACA,EA2HArH,EAAAQ,UAAAgI,SAAA,SAAAnE,EAAAxC,EAAAZ,GACA,MAAA,CAAA,IAAAnE,KAAA8C,QAAAyE,EAAAxC,EAAAZ,CAAA,CACA,EAEAjB,EAAAQ,UAAAZ,QAAA,SAAAyE,EAAAxC,EAAAZ,GACA,OAAAmD,EAAAtH,KAAAuH,EAAAxC,EAAAZ,EAAA,CAAA,CAAA,CACA,EAEAjB,EAAAQ,UAAAgE,YAAA,SAAAH,EAAAxC,EAAAZ,GACA,OAAAmD,EAAAtH,KAAAuH,EAAAxC,EAAAZ,EAAA,CAAA,CAAA,CACA,EA+CAjB,EAAAQ,UAAAY,MAAA,SAAAJ,EAAAkE,EAAApH,EAAAmD,GAEA,GAAAa,KAAAA,IAAAoD,EACAjE,EAAA,OACAnD,EAAAhB,KAAAgB,OACAoH,EAAA,OAEA,GAAApD,KAAAA,IAAAhE,GAAA,UAAA,OAAAoH,EACAjE,EAAAiE,EACApH,EAAAhB,KAAAgB,OACAoH,EAAA,MAEA,CAAA,GAAAuD,CAAAA,SAAAvD,CAAA,EAUA,MAAA,IAAAxH,MACA,yEACA,EAXAwH,KAAA,EACAuD,SAAA3K,CAAA,GACAA,KAAA,EACAgE,KAAAA,IAAAb,IAAAA,EAAA,UAEAA,EAAAnD,EACAA,EAAAgE,KAAAA,EAMA,CAEA,IAAA4G,EAAA5L,KAAAgB,OAAAoH,EAGA,IAFApD,KAAAA,IAAAhE,GAAA4K,EAAA5K,KAAAA,EAAA4K,GAEA,EAAA1H,EAAAlD,SAAAA,EAAA,GAAAoH,EAAA,IAAAA,EAAApI,KAAAgB,OACA,MAAA,IAAAuC,WAAA,wCAAA,EAGAY,EAAAA,GAAA,OAGA,IADA,IA5CAnD,EAZAwC,EAAAxC,EAwDAkF,EAAA,CAAA,IAEA,OAAA/B,GACA,IAAA,MACA0H,IArFArI,EAqFAxD,KArFAkE,EAqFAA,EArFAkE,EAqFAA,EArFApH,EAqFAA,EAnFA4K,GADAxD,EAAA0D,OAAA1D,CAAA,GAAA,EACA5E,EAAAxC,OAAAoH,IACApH,CAAAA,GAIA4K,GADA5K,EAAA8K,OAAA9K,CAAA,MAFAA,EAAA4K,IAUAG,EAFA7H,EAAAlD,QAEA,EAAAA,IACAA,EAAA+K,EAAA,GAEA,IAAA,IAAAxL,EAAA,EAAAA,EAAAS,EAAA,EAAAT,EAAA,CACA,IAAAyL,EAAAC,SAAA/H,EAAAgI,OAAA,EAAA3L,EAAA,CAAA,EAAA,EAAA,EACA,GAAAgF,EAAAyG,CAAA,EAAA,OAAAzL,EACAiD,EAAA4E,EAAA7H,GAAAyL,CACA,CACA,OAAAzL,EAiEA,IAAA,OACA,IAAA,QACA,OAhEA6H,EAgEAA,EAhEApH,EAgEAA,EA/DAqH,EAAAlC,EA+DAjC,GAhEAV,EAgEAxD,MA/DAgB,OAAAoH,CAAA,EAAA5E,EAAA4E,EAAApH,CAAA,EAiEA,IAAA,QACA,OAAAmH,EAAAnI,KAAAkE,EAAAkE,EAAApH,CAAA,EAEA,IAAA,SACA,IAAA,SACA,OA9DAmH,EA8DAnI,KAAAkE,EAAAkE,EAAApH,CAAA,EAEA,IAAA,SAEA,OA/DAwC,EA+DAxD,KA/DAoI,EA+DAA,EA/DApH,EA+DAA,EA9DAqH,EAAAjC,EA8DAlC,CA9DA,EAAAV,EAAA4E,EAAApH,CAAA,EAgEA,IAAA,OACA,IAAA,QACA,IAAA,UACA,IAAA,WACA,OAAAwH,EAAAxI,KAAAkE,EAAAkE,EAAApH,CAAA,EAEA,QACA,GAAAkF,EAAA,MAAA,IAAApC,UAAA,qBAAAK,CAAA,EACAA,GAAA,GAAAA,GAAAkC,YAAA,EACAH,EAAA,CAAA,CACA,CAEA,EAEAhD,EAAAQ,UAAAyI,OAAA,WACA,MAAA,CACA3G,KAAA,SACAE,KAAA7C,MAAAa,UAAAa,MAAAxD,KAAAf,KAAAoM,MAAApM,KAAA,CAAA,CACA,CACA,EAsFA,IAAAoJ,EAAA,KA4FA,SAAAiD,EAAAjE,EAAAkE,EAAAtL,GACA,GAAAoH,EAAA,GAAA,GAAAA,EAAA,EAAA,MAAA,IAAA7E,WAAA,oBAAA,EACA,GAAAvC,EAAAoH,EAAAkE,EAAA,MAAA,IAAA/I,WAAA,uCAAA,CACA,CA4KA,SAAAgJ,EAAA/I,EAAAQ,EAAAoE,EAAAkE,EAAApB,EAAArE,GACA,GAAA,CAAA3D,EAAAkC,SAAA5B,CAAA,EAAA,MAAA,IAAAM,UAAA,6CAAA,EACA,GAAAoH,EAAAlH,GAAAA,EAAA6C,EAAA,MAAA,IAAAtD,WAAA,mCAAA,EACA,GAAA6E,EAAAkE,EAAA9I,EAAAxC,OAAA,MAAA,IAAAuC,WAAA,oBAAA,CACA,CAwLA,SAAAiJ,EAAAhJ,EAAAQ,EAAAoE,EAAAkE,GACA,GAAAlE,EAAAkE,EAAA9I,EAAAxC,OAAA,MAAA,IAAAuC,WAAA,oBAAA,EACA,GAAA6E,EAAA,EAAA,MAAA,IAAA7E,WAAA,oBAAA,CACA,CAEA,SAAAkJ,EAAAjJ,EAAAQ,EAAAoE,EAAAsE,EAAAC,GAOA,OANA3I,EAAA,CAAAA,EACAoE,KAAA,EACAuE,GACAH,EAAAhJ,EAAAQ,EAAAoE,EAAA,CAAA,EAEApF,EAAAsB,MAAAd,EAAAQ,EAAAoE,EAAAsE,EAAA,GAAA,CAAA,EACAtE,EAAA,CACA,CAUA,SAAAwE,EAAApJ,EAAAQ,EAAAoE,EAAAsE,EAAAC,GAOA,OANA3I,EAAA,CAAAA,EACAoE,KAAA,EACAuE,GACAH,EAAAhJ,EAAAQ,EAAAoE,EAAA,CAAA,EAEApF,EAAAsB,MAAAd,EAAAQ,EAAAoE,EAAAsE,EAAA,GAAA,CAAA,EACAtE,EAAA,CACA,CAxaAlF,EAAAQ,UAAAa,MAAA,SAAAjC,EAAAC,GACA,IAAAV,EAAA7B,KAAAgB,OAoBA6L,IAnBAvK,EAAA,CAAA,CAAAA,GAGA,GACAA,GAAAT,GACA,IAAAS,EAAA,GACAT,EAAAS,IACAA,EAAAT,IANAU,EAAAyC,KAAAA,IAAAzC,EAAAV,EAAA,CAAA,CAAAU,GASA,GACAA,GAAAV,GACA,IAAAU,EAAA,GACAV,EAAAU,IACAA,EAAAV,GAGAU,EAAAD,IAAAC,EAAAD,GAEAtC,KAAA8M,SAAAxK,EAAAC,CAAA,GAGA,OADAsK,EAAApJ,UAAAP,EAAAQ,UACAmJ,CACA,EAUA3J,EAAAQ,UAAAqJ,WAAA,SAAA3E,EAAAlH,EAAAyL,GACAvE,KAAA,EACAlH,KAAA,EACAyL,GAAAN,EAAAjE,EAAAlH,EAAAlB,KAAAgB,MAAA,EAKA,IAHA,IAAAuG,EAAAvH,KAAAoI,GACA4E,EAAA,EACAzM,EAAA,EACA,EAAAA,EAAAW,IAAA8L,GAAA,MACAzF,GAAAvH,KAAAoI,EAAA7H,GAAAyM,EAGA,OAAAzF,CACA,EAEArE,EAAAQ,UAAAuJ,WAAA,SAAA7E,EAAAlH,EAAAyL,GACAvE,KAAA,EACAlH,KAAA,EACAyL,GACAN,EAAAjE,EAAAlH,EAAAlB,KAAAgB,MAAA,EAKA,IAFA,IAAAuG,EAAAvH,KAAAoI,EAAA,EAAAlH,GACA8L,EAAA,EACA,EAAA9L,IAAA8L,GAAA,MACAzF,GAAAvH,KAAAoI,EAAA,EAAAlH,GAAA8L,EAGA,OAAAzF,CACA,EAEArE,EAAAQ,UAAAwJ,UAAA,SAAA9E,EAAAuE,GAGA,OAFAvE,KAAA,EACAuE,GAAAN,EAAAjE,EAAA,EAAApI,KAAAgB,MAAA,EACAhB,KAAAoI,EACA,EAEAlF,EAAAQ,UAAAyJ,aAAA,SAAA/E,EAAAuE,GAGA,OAFAvE,KAAA,EACAuE,GAAAN,EAAAjE,EAAA,EAAApI,KAAAgB,MAAA,EACAhB,KAAAoI,GAAApI,KAAAoI,EAAA,IAAA,CACA,EAEAlF,EAAAQ,UAAAqE,aAAA,SAAAK,EAAAuE,GAGA,OAFAvE,KAAA,EACAuE,GAAAN,EAAAjE,EAAA,EAAApI,KAAAgB,MAAA,EACAhB,KAAAoI,IAAA,EAAApI,KAAAoI,EAAA,EACA,EAEAlF,EAAAQ,UAAA0J,aAAA,SAAAhF,EAAAuE,GAIA,OAHAvE,KAAA,EACAuE,GAAAN,EAAAjE,EAAA,EAAApI,KAAAgB,MAAA,GAEAhB,KAAAoI,GACApI,KAAAoI,EAAA,IAAA,EACApI,KAAAoI,EAAA,IAAA,IACA,SAAApI,KAAAoI,EAAA,EACA,EAEAlF,EAAAQ,UAAA2J,aAAA,SAAAjF,EAAAuE,GAIA,OAHAvE,KAAA,EACAuE,GAAAN,EAAAjE,EAAA,EAAApI,KAAAgB,MAAA,EAEA,SAAAhB,KAAAoI,IACApI,KAAAoI,EAAA,IAAA,GACApI,KAAAoI,EAAA,IAAA,EACApI,KAAAoI,EAAA,GACA,EAEAlF,EAAAQ,UAAA4J,UAAA,SAAAlF,EAAAlH,EAAAyL,GACAvE,KAAA,EACAlH,KAAA,EACAyL,GAAAN,EAAAjE,EAAAlH,EAAAlB,KAAAgB,MAAA,EAKA,IAHA,IAAAuG,EAAAvH,KAAAoI,GACA4E,EAAA,EACAzM,EAAA,EACA,EAAAA,EAAAW,IAAA8L,GAAA,MACAzF,GAAAvH,KAAAoI,EAAA7H,GAAAyM,EAMA,OAJAA,GAAA,MAEAzF,IAAAA,GAAAX,KAAA2G,IAAA,EAAA,EAAArM,CAAA,GAEAqG,CACA,EAEArE,EAAAQ,UAAA8J,UAAA,SAAApF,EAAAlH,EAAAyL,GACAvE,KAAA,EACAlH,KAAA,EACAyL,GAAAN,EAAAjE,EAAAlH,EAAAlB,KAAAgB,MAAA,EAKA,IAHA,IAAAT,EAAAW,EACA8L,EAAA,EACAzF,EAAAvH,KAAAoI,EAAA,EAAA7H,GACA,EAAAA,IAAAyM,GAAA,MACAzF,GAAAvH,KAAAoI,EAAA,EAAA7H,GAAAyM,EAMA,OAJAA,GAAA,MAEAzF,IAAAA,GAAAX,KAAA2G,IAAA,EAAA,EAAArM,CAAA,GAEAqG,CACA,EAEArE,EAAAQ,UAAA+J,SAAA,SAAArF,EAAAuE,GAGA,OAFAvE,KAAA,EACAuE,GAAAN,EAAAjE,EAAA,EAAApI,KAAAgB,MAAA,EACA,IAAAhB,KAAAoI,GACA,CAAA,GAAA,IAAApI,KAAAoI,GAAA,GADApI,KAAAoI,EAEA,EAEAlF,EAAAQ,UAAAgK,YAAA,SAAAtF,EAAAuE,GACAvE,KAAA,EACAuE,GAAAN,EAAAjE,EAAA,EAAApI,KAAAgB,MAAA,EACAuG,EAAAvH,KAAAoI,GAAApI,KAAAoI,EAAA,IAAA,EACA,OAAA,MAAAb,EAAA,WAAAA,EAAAA,CACA,EAEArE,EAAAQ,UAAAiK,YAAA,SAAAvF,EAAAuE,GACAvE,KAAA,EACAuE,GAAAN,EAAAjE,EAAA,EAAApI,KAAAgB,MAAA,EACAuG,EAAAvH,KAAAoI,EAAA,GAAApI,KAAAoI,IAAA,EACA,OAAA,MAAAb,EAAA,WAAAA,EAAAA,CACA,EAEArE,EAAAQ,UAAAkK,YAAA,SAAAxF,EAAAuE,GAIA,OAHAvE,KAAA,EACAuE,GAAAN,EAAAjE,EAAA,EAAApI,KAAAgB,MAAA,EAEAhB,KAAAoI,GACApI,KAAAoI,EAAA,IAAA,EACApI,KAAAoI,EAAA,IAAA,GACApI,KAAAoI,EAAA,IAAA,EACA,EAEAlF,EAAAQ,UAAAmK,YAAA,SAAAzF,EAAAuE,GAIA,OAHAvE,KAAA,EACAuE,GAAAN,EAAAjE,EAAA,EAAApI,KAAAgB,MAAA,EAEAhB,KAAAoI,IAAA,GACApI,KAAAoI,EAAA,IAAA,GACApI,KAAAoI,EAAA,IAAA,EACApI,KAAAoI,EAAA,EACA,EAEAlF,EAAAQ,UAAAoK,YAAA,SAAA1F,EAAAuE,GAGA,OAFAvE,KAAA,EACAuE,GAAAN,EAAAjE,EAAA,EAAApI,KAAAgB,MAAA,EACAgC,EAAA8E,KAAA9H,KAAAoI,EAAA,CAAA,EAAA,GAAA,CAAA,CACA,EAEAlF,EAAAQ,UAAAqK,YAAA,SAAA3F,EAAAuE,GAGA,OAFAvE,KAAA,EACAuE,GAAAN,EAAAjE,EAAA,EAAApI,KAAAgB,MAAA,EACAgC,EAAA8E,KAAA9H,KAAAoI,EAAA,CAAA,EAAA,GAAA,CAAA,CACA,EAEAlF,EAAAQ,UAAAsK,aAAA,SAAA5F,EAAAuE,GAGA,OAFAvE,KAAA,EACAuE,GAAAN,EAAAjE,EAAA,EAAApI,KAAAgB,MAAA,EACAgC,EAAA8E,KAAA9H,KAAAoI,EAAA,CAAA,EAAA,GAAA,CAAA,CACA,EAEAlF,EAAAQ,UAAAuK,aAAA,SAAA7F,EAAAuE,GAGA,OAFAvE,KAAA,EACAuE,GAAAN,EAAAjE,EAAA,EAAApI,KAAAgB,MAAA,EACAgC,EAAA8E,KAAA9H,KAAAoI,EAAA,CAAA,EAAA,GAAA,CAAA,CACA,EAQAlF,EAAAQ,UAAAwK,YAAA,SAAAlK,EAAAoE,EAAAlH,EAAAyL,GACA3I,EAAA,CAAAA,EACAoE,KAAA,EACAlH,KAAA,EACAyL,GAEAJ,EAAAvM,KAAAgE,EAAAoE,EAAAlH,EADA0F,KAAA2G,IAAA,EAAA,EAAArM,CAAA,EAAA,EACA,CAAA,EAFA,IAKA8L,EAAA,EACAzM,EAAA,EAEA,IADAP,KAAAoI,GAAA,IAAApE,EACA,EAAAzD,EAAAW,IAAA8L,GAAA,MACAhN,KAAAoI,EAAA7H,GAAAyD,EAAAgJ,EAAA,IAGA,OAAA5E,EAAAlH,CACA,EAEAgC,EAAAQ,UAAAyK,YAAA,SAAAnK,EAAAoE,EAAAlH,EAAAyL,GACA3I,EAAA,CAAAA,EACAoE,KAAA,EACAlH,KAAA,EACAyL,GAEAJ,EAAAvM,KAAAgE,EAAAoE,EAAAlH,EADA0F,KAAA2G,IAAA,EAAA,EAAArM,CAAA,EAAA,EACA,CAAA,EAFA,IAKAX,EAAAW,EAAA,EACA8L,EAAA,EAEA,IADAhN,KAAAoI,EAAA7H,GAAA,IAAAyD,EACA,GAAA,EAAAzD,IAAAyM,GAAA,MACAhN,KAAAoI,EAAA7H,GAAAyD,EAAAgJ,EAAA,IAGA,OAAA5E,EAAAlH,CACA,EAEAgC,EAAAQ,UAAA0K,WAAA,SAAApK,EAAAoE,EAAAuE,GAKA,OAJA3I,EAAA,CAAAA,EACAoE,KAAA,EACAuE,GAAAJ,EAAAvM,KAAAgE,EAAAoE,EAAA,EAAA,IAAA,CAAA,EACApI,KAAAoI,GAAA,IAAApE,EACAoE,EAAA,CACA,EAEAlF,EAAAQ,UAAA2K,cAAA,SAAArK,EAAAoE,EAAAuE,GAMA,OALA3I,EAAA,CAAAA,EACAoE,KAAA,EACAuE,GAAAJ,EAAAvM,KAAAgE,EAAAoE,EAAA,EAAA,MAAA,CAAA,EACApI,KAAAoI,GAAA,IAAApE,EACAhE,KAAAoI,EAAA,GAAApE,IAAA,EACAoE,EAAA,CACA,EAEAlF,EAAAQ,UAAA4K,cAAA,SAAAtK,EAAAoE,EAAAuE,GAMA,OALA3I,EAAA,CAAAA,EACAoE,KAAA,EACAuE,GAAAJ,EAAAvM,KAAAgE,EAAAoE,EAAA,EAAA,MAAA,CAAA,EACApI,KAAAoI,GAAApE,IAAA,EACAhE,KAAAoI,EAAA,GAAA,IAAApE,EACAoE,EAAA,CACA,EAEAlF,EAAAQ,UAAA6K,cAAA,SAAAvK,EAAAoE,EAAAuE,GAQA,OAPA3I,EAAA,CAAAA,EACAoE,KAAA,EACAuE,GAAAJ,EAAAvM,KAAAgE,EAAAoE,EAAA,EAAA,WAAA,CAAA,EACApI,KAAAoI,EAAA,GAAApE,IAAA,GACAhE,KAAAoI,EAAA,GAAApE,IAAA,GACAhE,KAAAoI,EAAA,GAAApE,IAAA,EACAhE,KAAAoI,GAAA,IAAApE,EACAoE,EAAA,CACA,EAEAlF,EAAAQ,UAAA8K,cAAA,SAAAxK,EAAAoE,EAAAuE,GAQA,OAPA3I,EAAA,CAAAA,EACAoE,KAAA,EACAuE,GAAAJ,EAAAvM,KAAAgE,EAAAoE,EAAA,EAAA,WAAA,CAAA,EACApI,KAAAoI,GAAApE,IAAA,GACAhE,KAAAoI,EAAA,GAAApE,IAAA,GACAhE,KAAAoI,EAAA,GAAApE,IAAA,EACAhE,KAAAoI,EAAA,GAAA,IAAApE,EACAoE,EAAA,CACA,EAEAlF,EAAAQ,UAAA+K,WAAA,SAAAzK,EAAAoE,EAAAlH,EAAAyL,GACA3I,EAAA,CAAAA,EACAoE,KAAA,EACAuE,GAGAJ,EAAAvM,KAAAgE,EAAAoE,EAAAlH,GAFAwN,EAAA9H,KAAA2G,IAAA,EAAA,EAAArM,EAAA,CAAA,GAEA,EAAA,CAAAwN,CAAA,EAHA,IAMAnO,EAAA,EACAyM,EAAA,EACA2B,EAAA,EAEA,IADA3O,KAAAoI,GAAA,IAAApE,EACA,EAAAzD,EAAAW,IAAA8L,GAAA,MACAhJ,EAAA,GAAA,IAAA2K,GAAA,IAAA3O,KAAAoI,EAAA7H,EAAA,KACAoO,EAAA,GAEA3O,KAAAoI,EAAA7H,IAAAyD,EAAAgJ,GAAA,GAAA2B,EAAA,IAGA,OAAAvG,EAAAlH,CACA,EAEAgC,EAAAQ,UAAAkL,WAAA,SAAA5K,EAAAoE,EAAAlH,EAAAyL,GACA3I,EAAA,CAAAA,EACAoE,KAAA,EACAuE,GAGAJ,EAAAvM,KAAAgE,EAAAoE,EAAAlH,GAFAwN,EAAA9H,KAAA2G,IAAA,EAAA,EAAArM,EAAA,CAAA,GAEA,EAAA,CAAAwN,CAAA,EAHA,IAMAnO,EAAAW,EAAA,EACA8L,EAAA,EACA2B,EAAA,EAEA,IADA3O,KAAAoI,EAAA7H,GAAA,IAAAyD,EACA,GAAA,EAAAzD,IAAAyM,GAAA,MACAhJ,EAAA,GAAA,IAAA2K,GAAA,IAAA3O,KAAAoI,EAAA7H,EAAA,KACAoO,EAAA,GAEA3O,KAAAoI,EAAA7H,IAAAyD,EAAAgJ,GAAA,GAAA2B,EAAA,IAGA,OAAAvG,EAAAlH,CACA,EAEAgC,EAAAQ,UAAAmL,UAAA,SAAA7K,EAAAoE,EAAAuE,GAMA,OALA3I,EAAA,CAAAA,EACAoE,KAAA,EACAuE,GAAAJ,EAAAvM,KAAAgE,EAAAoE,EAAA,EAAA,IAAA,CAAA,GAAA,EAEApI,KAAAoI,GAAA,KADApE,EAAAA,EAAA,EAAA,IAAAA,EAAA,EACAA,GACAoE,EAAA,CACA,EAEAlF,EAAAQ,UAAAoL,aAAA,SAAA9K,EAAAoE,EAAAuE,GAMA,OALA3I,EAAA,CAAAA,EACAoE,KAAA,EACAuE,GAAAJ,EAAAvM,KAAAgE,EAAAoE,EAAA,EAAA,MAAA,CAAA,KAAA,EACApI,KAAAoI,GAAA,IAAApE,EACAhE,KAAAoI,EAAA,GAAApE,IAAA,EACAoE,EAAA,CACA,EAEAlF,EAAAQ,UAAAqL,aAAA,SAAA/K,EAAAoE,EAAAuE,GAMA,OALA3I,EAAA,CAAAA,EACAoE,KAAA,EACAuE,GAAAJ,EAAAvM,KAAAgE,EAAAoE,EAAA,EAAA,MAAA,CAAA,KAAA,EACApI,KAAAoI,GAAApE,IAAA,EACAhE,KAAAoI,EAAA,GAAA,IAAApE,EACAoE,EAAA,CACA,EAEAlF,EAAAQ,UAAAsL,aAAA,SAAAhL,EAAAoE,EAAAuE,GAQA,OAPA3I,EAAA,CAAAA,EACAoE,KAAA,EACAuE,GAAAJ,EAAAvM,KAAAgE,EAAAoE,EAAA,EAAA,WAAA,CAAA,UAAA,EACApI,KAAAoI,GAAA,IAAApE,EACAhE,KAAAoI,EAAA,GAAApE,IAAA,EACAhE,KAAAoI,EAAA,GAAApE,IAAA,GACAhE,KAAAoI,EAAA,GAAApE,IAAA,GACAoE,EAAA,CACA,EAEAlF,EAAAQ,UAAAuL,aAAA,SAAAjL,EAAAoE,EAAAuE,GASA,OARA3I,EAAA,CAAAA,EACAoE,KAAA,EACAuE,GAAAJ,EAAAvM,KAAAgE,EAAAoE,EAAA,EAAA,WAAA,CAAA,UAAA,EAEApI,KAAAoI,IADApE,EAAAA,EAAA,EAAA,WAAAA,EAAA,EACAA,KAAA,GACAhE,KAAAoI,EAAA,GAAApE,IAAA,GACAhE,KAAAoI,EAAA,GAAApE,IAAA,EACAhE,KAAAoI,EAAA,GAAA,IAAApE,EACAoE,EAAA,CACA,EAiBAlF,EAAAQ,UAAAwL,aAAA,SAAAlL,EAAAoE,EAAAuE,GACA,OAAAF,EAAAzM,KAAAgE,EAAAoE,EAAA,CAAA,EAAAuE,CAAA,CACA,EAEAzJ,EAAAQ,UAAAyL,aAAA,SAAAnL,EAAAoE,EAAAuE,GACA,OAAAF,EAAAzM,KAAAgE,EAAAoE,EAAA,CAAA,EAAAuE,CAAA,CACA,EAYAzJ,EAAAQ,UAAA0L,cAAA,SAAApL,EAAAoE,EAAAuE,GACA,OAAAC,EAAA5M,KAAAgE,EAAAoE,EAAA,CAAA,EAAAuE,CAAA,CACA,EAEAzJ,EAAAQ,UAAA2L,cAAA,SAAArL,EAAAoE,EAAAuE,GACA,OAAAC,EAAA5M,KAAAgE,EAAAoE,EAAA,CAAA,EAAAuE,CAAA,CACA,EAGAzJ,EAAAQ,UAAA4B,KAAA,SAAA+F,EAAAiE,EAAAhN,EAAAC,GACA,GAAA,CAAAW,EAAAkC,SAAAiG,CAAA,EAAA,MAAA,IAAAvH,UAAA,6BAAA,EAQA,GAPAxB,EAAAA,GAAA,EACAC,GAAA,IAAAA,IAAAA,EAAAvC,KAAAgB,QACAsO,GAAAjE,EAAArK,SAAAsO,EAAAjE,EAAArK,SAEAuB,EAAA,EAAAA,GAAAA,EAAAD,EAAAA,EAGAC,KAAAD,EAAA,OAAA,EACA,GAAA,IAAA+I,EAAArK,QAAA,IAAAhB,KAAAgB,OAAA,OAAA,EAGA,IARAsO,EAAAA,GAAA,GAQA,EACA,MAAA,IAAA/L,WAAA,2BAAA,EAEA,GAAAjB,EAAA,GAAAA,GAAAtC,KAAAgB,OAAA,MAAA,IAAAuC,WAAA,oBAAA,EACA,GAAAhB,EAAA,EAAA,MAAA,IAAAgB,WAAA,yBAAA,EAGAhB,EAAAvC,KAAAgB,SAAAuB,EAAAvC,KAAAgB,QAKA,IAAAa,GAHAU,EADA8I,EAAArK,OAAAsO,EAAA/M,EAAAD,EACA+I,EAAArK,OAAAsO,EAAAhN,EAGAC,GAAAD,EAEA,GAAAtC,OAAAqL,GAAA,YAAA,OAAAzI,WAAAc,UAAA6L,WAEAvP,KAAAuP,WAAAD,EAAAhN,EAAAC,CAAA,OACA,GAAAvC,OAAAqL,GAAA/I,EAAAgN,GAAAA,EAAA/M,EAEA,IAAA,IAAAhC,EAAAsB,EAAA,EAAA,GAAAtB,EAAA,EAAAA,EACA8K,EAAA9K,EAAA+O,GAAAtP,KAAAO,EAAA+B,QAGAM,WAAAc,UAAA8L,IAAAzO,KACAsK,EACArL,KAAA8M,SAAAxK,EAAAC,CAAA,EACA+M,CACA,EAGA,OAAAzN,CACA,EAMAqB,EAAAQ,UAAAyG,KAAA,SAAA5C,EAAAjF,EAAAC,EAAA4B,GAEA,GAAA,UAAA,OAAAoD,EAAA,CASA,GARA,UAAA,OAAAjF,GACA6B,EAAA7B,EACAA,EAAA,EACAC,EAAAvC,KAAAgB,QACA,UAAA,OAAAuB,IACA4B,EAAA5B,EACAA,EAAAvC,KAAAgB,QAEAgE,KAAAA,IAAAb,GAAA,UAAA,OAAAA,EACA,MAAA,IAAAL,UAAA,2BAAA,EAEA,GAAA,UAAA,OAAAK,GAAA,CAAAjB,EAAAkB,WAAAD,CAAA,EACA,MAAA,IAAAL,UAAA,qBAAAK,CAAA,EAEA,IACAtD,EADA,IAAA0G,EAAAvG,SACAH,EAAA0G,EAAAxF,WAAA,CAAA,EACA,SAAAoC,GAAAtD,EAAA,KACA,WAAAsD,KAEAoD,EAAA1G,EAGA,KAAA,UAAA,OAAA0G,IACAA,GAAA,KAIA,GAAAjF,EAAA,GAAAtC,KAAAgB,OAAAsB,GAAAtC,KAAAgB,OAAAuB,EACA,MAAA,IAAAgB,WAAA,oBAAA,EAYA,IAAAhD,EATA,GAAAgC,EAAAA,GAAAD,GAUA,GANAA,KAAA,EACAC,EAAAyC,KAAAA,IAAAzC,EAAAvC,KAAAgB,OAAAuB,IAAA,EAKA,UAAA,OAHAgF,EAAAA,GAAA,GAIA,IAAAhH,EAAA+B,EAAA/B,EAAAgC,EAAA,EAAAhC,EACAP,KAAAO,GAAAgH,MAEA,CACA,IAAAL,EAAAhE,EAAAkC,SAAAmC,CAAA,EACAA,EACArE,EAAAW,KAAA0D,EAAApD,CAAA,EACAtC,EAAAqF,EAAAlG,OACA,GAAA,IAAAa,EACA,MAAA,IAAAiC,UAAA,cAAAyD,EACA,mCAAA,EAEA,IAAAhH,EAAA,EAAAA,EAAAgC,EAAAD,EAAA,EAAA/B,EACAP,KAAAO,EAAA+B,GAAA4E,EAAA3G,EAAAsB,EAEA,CAEA,OAAA7B,IACA,EAKA,IAAAyP,EAAA,oBAqBA,SAAAtJ,EAAAjC,EAAAuE,GACAA,EAAAA,GAAAiH,EAAAA,EAMA,IALA,IAAA1G,EACAhI,EAAAkD,EAAAlD,OACA2O,EAAA,KACAzI,EAAA,GAEA3G,EAAA,EAAAA,EAAAS,EAAA,EAAAT,EAAA,CAIA,GAAA,OAHAyI,EAAA9E,EAAAnC,WAAAxB,CAAA,IAGAyI,EAAA,MAAA,CAEA,GAAA,CAAA2G,EAAA,CAEA,GAAA,MAAA3G,EAAA,CAEA,CAAA,GAAAP,GAAA,IAAAvB,EAAA7E,KAAA,IAAA,IAAA,GAAA,EACA,QACA,CAAA,GAAA9B,EAAA,IAAAS,EAAA,CAEA,CAAA,GAAAyH,GAAA,IAAAvB,EAAA7E,KAAA,IAAA,IAAA,GAAA,EACA,QACA,CAGAsN,EAAA3G,EAEA,QACA,CAGA,GAAAA,EAAA,MAAA,CACA,CAAA,GAAAP,GAAA,IAAAvB,EAAA7E,KAAA,IAAA,IAAA,GAAA,EACAsN,EAAA3G,EACA,QACA,CAGAA,EAAA,OAAA2G,EAAA,OAAA,GAAA3G,EAAA,MACA,MAAA2G,GAEA,CAAA,GAAAlH,GAAA,IAAAvB,EAAA7E,KAAA,IAAA,IAAA,GAAA,EAMA,GAHAsN,EAAA,KAGA3G,EAAA,IAAA,CACA,GAAA,EAAAP,EAAA,EAAA,MACAvB,EAAA7E,KAAA2G,CAAA,CACA,MAAA,GAAAA,EAAA,KAAA,CACA,IAAAP,GAAA,GAAA,EAAA,MACAvB,EAAA7E,KACA2G,GAAA,EAAA,IACA,GAAAA,EAAA,GACA,CACA,MAAA,GAAAA,EAAA,MAAA,CACA,IAAAP,GAAA,GAAA,EAAA,MACAvB,EAAA7E,KACA2G,GAAA,GAAA,IACAA,GAAA,EAAA,GAAA,IACA,GAAAA,EAAA,GACA,CACA,KAAA,CAAA,GAAAA,EAAAA,EAAA,SASA,MAAA,IAAApI,MAAA,oBAAA,EARA,IAAA6H,GAAA,GAAA,EAAA,MACAvB,EAAA7E,KACA2G,GAAA,GAAA,IACAA,GAAA,GAAA,GAAA,IACAA,GAAA,EAAA,GAAA,IACA,GAAAA,EAAA,GACA,CAGA,CACA,CAEA,OAAA9B,CACA,CA2BA,SAAAd,EAAAkC,GACA,OAAAvF,EAAAvB,YA7HA,SAAA8G,GAMA,IAFAA,GAFAA,EAAAA,EAAAsH,MAAA,GAAA,EAAA,IAEAxE,KAAA,EAAAD,QAAAsE,EAAA,EAAA,GAEAzO,OAAA,EAAA,MAAA,GAEA,KAAAsH,EAAAtH,OAAA,GAAA,GACAsH,GAAA,IAEA,OAAAA,CACA,EAiHAA,CAAA,CAAA,CACA,CAEA,SAAAD,EAAAwH,EAAAC,EAAA1H,EAAApH,GACA,IAAA,IAAAT,EAAA,EAAAA,EAAAS,GACA,EAAAT,EAAA6H,GAAA0H,EAAA9O,QAAAT,GAAAsP,EAAA7O,QADA,EAAAT,EAEAuP,EAAAvP,EAAA6H,GAAAyH,EAAAtP,GAEA,OAAAA,CACA,CAKA,SAAAoE,EAAAQ,EAAAK,GACA,OAAAL,aAAAK,GACA,MAAAL,GAAA,MAAAA,EAAA4K,aAAA,MAAA5K,EAAA4K,YAAAC,MACA7K,EAAA4K,YAAAC,OAAAxK,EAAAwK,IACA,CACA,SAAAzK,EAAAJ,GAEA,OAAAA,GAAAA,CACA,C,oGC/uDA1F,EAAAqI,KAAA,SAAAlD,EAAAwD,EAAA6H,EAAAC,EAAAC,GACA,IAAAhQ,EAAAkH,EACA+I,EAAA,EAAAD,EAAAD,EAAA,EACAG,GAAA,GAAAD,GAAA,EACAE,EAAAD,GAAA,EACAE,EAAA,CAAA,EACAhQ,EAAA0P,EAAAE,EAAA,EAAA,EACAK,EAAAP,EAAA,CAAA,EAAA,EACAQ,EAAA7L,EAAAwD,EAAA7H,GAOA,IALAA,GAAAiQ,EAEArQ,EAAAsQ,GAAA,GAAA,CAAAF,GAAA,EACAE,IAAA,CAAAF,EACAA,GAAAH,EACA,EAAAG,EAAApQ,EAAA,IAAAA,EAAAyE,EAAAwD,EAAA7H,GAAAA,GAAAiQ,EAAAD,GAAA,GAKA,IAHAlJ,EAAAlH,GAAA,GAAA,CAAAoQ,GAAA,EACApQ,IAAA,CAAAoQ,EACAA,GAAAL,EACA,EAAAK,EAAAlJ,EAAA,IAAAA,EAAAzC,EAAAwD,EAAA7H,GAAAA,GAAAiQ,EAAAD,GAAA,GAEA,GAAA,IAAApQ,EACAA,EAAA,EAAAmQ,MACA,CAAA,GAAAnQ,IAAAkQ,EACA,OAAAhJ,EAAAqJ,IAAAhB,EAAAA,GAAAe,EAAA,CAAA,EAAA,GAEApJ,GAAAT,KAAA2G,IAAA,EAAA2C,CAAA,EACA/P,GAAAmQ,CACA,CACA,OAAAG,EAAA,CAAA,EAAA,GAAApJ,EAAAT,KAAA2G,IAAA,EAAApN,EAAA+P,CAAA,CACA,EAEAzQ,EAAA6E,MAAA,SAAAM,EAAAZ,EAAAoE,EAAA6H,EAAAC,EAAAC,GACA,IAAAhQ,EAAAkH,EACA+I,EAAA,EAAAD,EAAAD,EAAA,EACAG,GAAA,GAAAD,GAAA,EACAE,EAAAD,GAAA,EACAM,EAAA,KAAAT,EAAAtJ,KAAA2G,IAAA,EAAA,CAAA,EAAA,EAAA3G,KAAA2G,IAAA,EAAA,CAAA,EAAA,EAAA,EACAhN,EAAA0P,EAAA,EAAAE,EAAA,EACAK,EAAAP,EAAA,EAAA,CAAA,EACAQ,EAAAzM,EAAA,GAAA,IAAAA,GAAA,EAAAA,EAAA,EAAA,EAAA,EAmCA,IAjCAA,EAAA4C,KAAAgK,IAAA5M,CAAA,EAEA6M,MAAA7M,CAAA,GAAAA,IAAA0L,EAAAA,GACArI,EAAAwJ,MAAA7M,CAAA,EAAA,EAAA,EACA7D,EAAAkQ,IAEAlQ,EAAAyG,KAAAkK,MAAAlK,KAAAmK,IAAA/M,CAAA,EAAA4C,KAAAoK,GAAA,EACAhN,GAAAxD,EAAAoG,KAAA2G,IAAA,EAAA,CAAApN,CAAA,GAAA,IACAA,CAAA,GACAK,GAAA,GAOA,IAJAwD,GADA,GAAA7D,EAAAmQ,EACAK,EAAAnQ,EAEAmQ,EAAA/J,KAAA2G,IAAA,EAAA,EAAA+C,CAAA,GAEA9P,IACAL,CAAA,GACAK,GAAA,GAGA6P,GAAAlQ,EAAAmQ,GACAjJ,EAAA,EACAlH,EAAAkQ,GACA,GAAAlQ,EAAAmQ,GACAjJ,GAAArD,EAAAxD,EAAA,GAAAoG,KAAA2G,IAAA,EAAA2C,CAAA,EACA/P,GAAAmQ,IAEAjJ,EAAArD,EAAA4C,KAAA2G,IAAA,EAAA+C,EAAA,CAAA,EAAA1J,KAAA2G,IAAA,EAAA2C,CAAA,EACA/P,EAAA,IAIA,GAAA+P,EAAAtL,EAAAwD,EAAA7H,GAAA,IAAA8G,EAAA9G,GAAAiQ,EAAAnJ,GAAA,IAAA6I,GAAA,GAIA,IAFA/P,EAAAA,GAAA+P,EAAA7I,EACA+I,GAAAF,EACA,EAAAE,EAAAxL,EAAAwD,EAAA7H,GAAA,IAAAJ,EAAAI,GAAAiQ,EAAArQ,GAAA,IAAAiQ,GAAA,GAEAxL,EAAAwD,EAAA7H,EAAAiQ,IAAA,IAAAC,CACA,C,yBCpFA,aAAa,SAAAQ,EAAA9L,GAAA,OAAA8L,EAAA,YAAA,OAAAtL,QAAA,UAAA,OAAAA,OAAAuL,SAAA,SAAA/L,GAAA,OAAA,OAAAA,CAAA,EAAA,SAAAA,GAAA,OAAAA,GAAA,YAAA,OAAAQ,QAAAR,EAAA4K,cAAApK,QAAAR,IAAAQ,OAAAjC,UAAA,SAAA,OAAAyB,CAAA,GAAAA,CAAA,CAAA,CAAA,SAAAgM,EAAA9F,EAAA+F,GAAA,IAAA,IAAA7Q,EAAA,EAAAA,EAAA6Q,EAAApQ,OAAAT,CAAA,GAAA,CAAA,IAAA8Q,EAAAD,EAAA7Q,GAAA8Q,EAAAxH,WAAAwH,EAAAxH,YAAA,CAAA,EAAAwH,EAAArH,aAAA,CAAA,EAAA,UAAAqH,IAAAA,EAAApH,SAAA,CAAA,GAAAN,OAAAC,eAAAyB,EAAA,SAAA1H,GAAA2N,EAAA,SAAAC,EAAAC,GAAA,GAAA,WAAAP,EAAAM,CAAA,GAAA,OAAAA,EAAA,OAAAA,EAAA,IAAAE,EAAAF,EAAA5L,OAAAC,aAAA,GAAAZ,KAAAA,IAAAyM,EAAA,OAAA,WAAAD,EAAA1K,OAAAgF,QAAAyF,CAAA,EAAApK,EAAAsK,EAAA1Q,KAAAwQ,EAAAC,GAAA,SAAA,EAAA,GAAA,WAAAP,EAAA9J,CAAA,EAAA,OAAAA,EAAA,MAAA,IAAArD,UAAA,8CAAA,CAAA,EAAAH,EAAA,QAAA,EAAA,MAAA,WAAAsN,EAAAK,CAAA,EAAAA,EAAAxK,OAAAwK,CAAA,CAAA,EAAAD,EAAAC,GAAA,EAAAD,CAAA,CAAA,CAAA,CAAA,IAEPK,EAAU,WAId,SAAAA,EAAY9M,GAND,GAAA,EAMS5E,gBAAA0R,GANT,MAAA,IAAA5N,UAAA,mCAAA,EAOT9D,KAAK0F,KAAO,IAAI9C,WAAWgC,CAAM,EACjC5E,KAAK+E,WAAa,EAClB/E,KAAK2R,kBAAoB,CAC3B,CAVW,IAAAC,EAAAC,EAAAC,EAwXV,OAxXUF,EAYXF,GAZWG,EAYX,CAAA,CAAAP,IAAA,aAAAtN,MAIA,SAAW9C,GAIT,IAHA,IAAM6D,EAAa/E,KAAK+E,WACpBuD,EAAM,GAED/H,EAAI,EAAGA,EAAIW,EAAYX,CAAC,GAC/B+H,GAAOxB,OAAOC,aAAa/G,KAAK0F,KAAKX,EAAaxE,EAAE,EAKtD,OAFAP,KAAK+E,YAAc7D,EAEZoH,CACT,CAAC,EAAA,CAAAgJ,IAAA,aAAAtN,MAED,WACE,IAAMe,EAAa/E,KAAK+E,WAClBf,EACHhE,KAAK0F,KAAKX,IAAmB,GAC7B/E,KAAK0F,KAAKX,EAAa,IAAM,GAC7B/E,KAAK0F,KAAKX,EAAa,IAAO,EAC9B/E,KAAK0F,KAAKX,EAAa,GAK1B,OAFA/E,KAAK+E,YAAc,EAEZf,CACT,CAAC,EAAA,CAAAsN,IAAA,aAAAtN,MAED,WACE,IAAMe,EAAa/E,KAAK+E,WAClBf,EACHhE,KAAK0F,KAAKX,IAAmB,GAC7B/E,KAAK0F,KAAKX,EAAa,IAAO,EAC9B/E,KAAK0F,KAAKX,EAAa,GAK1B,OAFA/E,KAAK+E,YAAc,EAEZf,CACT,CAAC,EAAA,CAAAsN,IAAA,aAAAtN,MAED,WACE,IAAMe,EAAa/E,KAAK+E,WAClBf,EACHhE,KAAK0F,KAAKX,IAAmB,EAC7B/E,KAAK0F,KAAKX,EAAa,GAK1B,OAFA/E,KAAK+E,YAAc,EAEZf,CACT,CAAC,EAAA,CAAAsN,IAAA,YAAAtN,MAED,WACE,IAAMe,EAAa/E,KAAK+E,WAClBf,EAAQhE,KAAK0F,KAAKX,GAIxB,OAFA/E,KAAK+E,YAAc,EAEZf,CACT,CAAC,EAAA,CAAAsN,IAAA,WAAAtN,MAED,WACE,IAAMe,EAAa/E,KAAK+E,WACpBf,EAAQhE,KAAK0F,KAAKX,GAQtB,OANuB,MAAV,IAARf,KACHA,GAAS,YAGXhE,KAAK+E,YAAc,EAEZf,CACT,CAAC,EAAA,CAAAsN,IAAA,cAAAtN,MAED,WAIE,IAHA,IACI/B,EADA+B,EAAQ,EAKVA,GAASA,GAAS,IAAc,KADhC/B,EAAQjC,KAAK+R,UAAS,IAEI,MAAV,IAAR9P,KAEV,OAAO+B,CACT,CAEA,EAAA,CAAAsN,IAAA,OAAAtN,MAGA,SAAK9C,GACHlB,KAAK+E,YAAc7D,CACrB,CAAC,EAAA,CAAAoQ,IAAA,YAAAtN,MAED,WACE,IAAMgO,EAAKhS,KAAKiS,WAAW,CAAC,EACtBjR,EAAShB,KAAKkS,WAAU,EACxBnN,EAAa/E,KAAK+E,WAMxB,OAJA/E,KAAK+E,YAAc/D,EAIZ,CACLgR,GAAIA,EACJhR,OAAQA,EACR0E,KALW1F,KAAK0F,KAAKnB,MAAMQ,EAAY/E,KAAK+E,UAAU,EAK3CH,MACb,CACF,CAEA,EAAA,CAAA0M,IAAA,YAAAtN,MAOA,WAEE,IAAMmO,EAAQ,GAIVC,GAFJD,EAAME,MAAQrS,KAAKsS,YAAW,EAEVtS,KAAK+R,UAAS,GAGlC,GAA+B,MAAV,IAAhBK,GACH,OAAQA,GAER,KAAK,IAGH,IAgEUG,EAhEJC,EAAOL,EAGPM,GAFND,EAAKhN,KAAO,OAEQxF,KAAK+R,UAAS,GAC9B/Q,EAAShB,KAAKsS,YAAW,EAE7B,OAAQG,GACR,KAAK,EACHD,EAAKE,QAAU,iBACA,IAAX1R,EACFmR,EAAMnO,MAAQhE,KAAK2S,WAAU,EAE7B3S,KAAK4S,KAAK5R,CAAM,EAClB,MACF,KAAK,EACHwR,EAAKE,QAAU,OACfP,EAAMnO,MAAQhE,KAAKiS,WAAWjR,CAAM,EACpC,MACF,KAAK,EACHwR,EAAKE,QAAU,kBACfP,EAAMnO,MAAQhE,KAAKiS,WAAWjR,CAAM,EACpC,MACF,KAAK,EACHwR,EAAKE,QAAU,YACfP,EAAMnO,MAAQhE,KAAKiS,WAAWjR,CAAM,EACpC,MACF,KAAK,EACHwR,EAAKE,QAAU,iBACfP,EAAMnO,MAAQhE,KAAKiS,WAAWjR,CAAM,EACpC,MACF,KAAK,EACHwR,EAAKE,QAAU,SACfP,EAAMnO,MAAQhE,KAAKiS,WAAWjR,CAAM,EACpC,MACF,KAAK,EACHwR,EAAKE,QAAU,SACfP,EAAMnO,MAAQhE,KAAKiS,WAAWjR,CAAM,EACpC,MACF,KAAK,EACHwR,EAAKE,QAAU,WACfP,EAAMnO,MAAQhE,KAAKiS,WAAWjR,CAAM,EACpC,MACF,KAAK,GACHwR,EAAKE,QAAU,oBACA,IAAX1R,EACFmR,EAAMnO,MAAQhE,KAAK+R,UAAS,EAE5B/R,KAAK4S,KAAK5R,CAAM,EAClB,MACF,KAAK,GACHwR,EAAKE,QAAU,aACF,EAAT1R,GACFhB,KAAK4S,KAAK5R,CAAM,EAClB,MACF,KAAK,GACHwR,EAAKE,QAAU,WACA,IAAX1R,EACFmR,EAAMnO,MAAQhE,KAAK6S,WAAU,EAE7B7S,KAAK4S,KAAK5R,CAAM,EAClB,MACF,KAAK,GACHwR,EAAKE,QAAU,cACA,IAAX1R,GACIuR,EAAWvS,KAAK+R,UAAS,EAC/BI,EAAMnO,MAAQ,CACZ8O,UAAY,CACVC,EAAM,GACN9R,EAAM,GACN+R,EAAM,MACNC,EAAM,EACR,EAAEV,IAAa,GACfW,KAAkB,GAAXX,EACPY,OAAQnT,KAAK+R,UAAS,EACtBqB,OAAQpT,KAAK+R,UAAS,EACtBsB,MAAOrT,KAAK+R,UAAS,EACrBuB,SAAUtT,KAAK+R,UAAS,CAC1B,GAEA/R,KAAK4S,KAAK5R,CAAM,EAElB,MACF,KAAK,GACHwR,EAAKE,QAAU,gBACA,IAAX1R,EACFmR,EAAMnO,MAAQ,CACZuP,UAAWvT,KAAK+R,UAAS,EACzByB,YAAa,GAAKxT,KAAK+R,UAAS,EAChC0B,UAAWzT,KAAK+R,UAAS,EACzB2B,cAAe1T,KAAK+R,UAAS,CAC/B,EAEA/R,KAAK4S,KAAK5R,CAAM,EAElB,MACF,KAAK,GACHwR,EAAKE,QAAU,eACA,IAAX1R,EACFmR,EAAMnO,MAAQ,CACZsN,IAAKtR,KAAKyN,SAAQ,EAClBkG,MAAO3T,KAAK+R,UAAS,CACvB,EAEA/R,KAAK4S,KAAK5R,CAAM,EAElB,MACF,KAAK,IACHwR,EAAKE,QAAU,oBACfP,EAAMnO,MAAQhE,KAAKiS,WAAWjR,CAAM,EACpC,MACF,QACEwR,EAAKE,QAAU,UACfP,EAAMnO,MAAQhE,KAAKiS,WAAWjR,CAAM,CAAE,CAExC,MAEF,KAAK,IAGWmR,EACR3M,KAAO,QAEbxE,EAAShB,KAAKsS,YAAW,EAEzBH,EAAMnO,MAAQhE,KAAKiS,WAAWjR,CAAM,EAEpC,MACF,KAAK,IAGcmR,EACR3M,KAAO,eAEhBxE,EAAShB,KAAKsS,YAAW,EAEzBH,EAAMnO,MAAQhE,KAAKiS,WAAWjR,CAAM,EAEpC,MACF,QAGQ4S,EAAMzB,EACZyB,EAAIpO,KAAO,UACXoO,EAAIlB,QAAU,UAEd1R,EAAShB,KAAKsS,YAAW,EAEzBH,EAAMnO,MAAQhE,KAAKiS,WAAWjR,CAAM,CAAE,KAGnC,CAK0B,IAAV,IAAhBoR,IACHyB,EAAQzB,EACRA,EAAgBpS,KAAK2R,oBAErBkC,EAAQ7T,KAAK+R,UAAS,EACtB/R,KAAK2R,kBAAoBS,GAT3B,IAAIyB,EAYEC,EAAY1B,GAAiB,EAI7B2B,EAAO5B,EAIb,OAHA4B,EAAKC,QAA0B,GAAhB5B,EACf2B,EAAKvO,KAAO,UAEJsO,GACR,KAAK,EACHC,EAAKrB,QAAU,UAEfP,EAAMnO,MAAQ,CACZiQ,WAAYJ,EACZK,SAAUlU,KAAK+R,UAAS,CAC1B,EACA,MACF,KAAK,EACHI,EAAMnO,MAAQ,CACZiQ,WAAYJ,EACZK,SAAUlU,KAAK+R,UAAS,CAC1B,EAI6B,IAAzBI,EAAMnO,MAAMkQ,SACdH,EAAKrB,QAAU,UAEfqB,EAAKrB,QAAU,SAEjB,MACF,KAAK,GACHqB,EAAKrB,QAAU,iBAEfP,EAAMnO,MAAQ,CACZiQ,WAAYJ,EACZM,OAAQnU,KAAK+R,UAAS,CACxB,EACA,MACF,KAAK,GACHgC,EAAKrB,QAAU,aAEfP,EAAMnO,MAAQ,CACZoQ,iBAAkBP,EAClBQ,gBAAiBrU,KAAK+R,UAAS,CACjC,EACA,MACF,KAAK,GACHgC,EAAKrB,QAAU,gBACfP,EAAMnO,MAAQ6P,EACd,MACF,KAAK,GACHE,EAAKrB,QAAU,oBACfP,EAAMnO,MAAQ6P,EACd,MACF,KAAK,GACHE,EAAKrB,QAAU,YACfP,EAAMnO,MAAQ6P,GAAS7T,KAAK+R,UAAS,GAAM,GAC3C,MACF,QACEgC,EAAKrB,QAAU,UACfP,EAAMnO,OAAS6P,GAAS,GAAK7T,KAAK+R,UAAS,CAAG,CAElD,CAEA,OAAOI,CACT,CAAC,KAxXUhB,EAAAS,EAAAlO,UAAAmO,CAAA,EAAAC,GAAAX,EAAAS,EAAAE,CAAA,EAAAnI,OAAAC,eAAAgI,EAAA,YAAA,CAAA3H,SAAA,CAAA,CAAA,CAAA,EAwXVyH,CAAA,EAAA,EAgEHhS,EAAOD,QAAUiS,C,yBCxbjB,aAAa,SAAA4C,EAAAhU,EAAAiU,GAAA,IAAAC,EAAAC,EAAAC,EAAAnU,EAAAoU,EAAA,aAAA,OAAAhP,QAAArF,EAAAqF,OAAAuL,WAAA5Q,EAAA,cAAA,GAAAqU,EAAA,OAAAF,EAAA,EAAAD,EAAA,CAAA,GAAA,CAAA/D,EAAA,WAAAkE,EAAAA,EAAA5T,KAAAT,CAAA,CAAA,EAAAF,EAAA,WAAA,IAAAwU,EAAAD,EAAAE,KAAA,EAAA,OAAAL,EAAAI,EAAAE,KAAAF,CAAA,EAAAzU,EAAA,SAAA4U,GAAAN,EAAA,CAAA,EAAAC,EAAAK,CAAA,EAAAvV,EAAA,WAAA,IAAAgV,GAAA,MAAAG,EAAAK,QAAAL,EAAAK,OAAA,CAAA,CAAA,QAAA,GAAAP,EAAA,MAAAC,CAAA,CAAA,CAAA,EAAA,GAAA7R,MAAA4C,QAAAnF,CAAA,IAAAqU,EAAA,SAAArU,EAAA2U,GAAA,IAAA7U,EAAA,GAAAE,EAAA,MAAA,UAAA,OAAAA,EAAA4U,EAAA5U,EAAA2U,CAAA,EAAA,SAAA7U,EAAA,YAAAA,EAAAuJ,OAAAjG,UAAAqC,SAAAhF,KAAAT,CAAA,EAAAiE,MAAA,EAAA,CAAA,CAAA,IAAAjE,EAAAyP,YAAAzP,EAAAyP,YAAAC,KAAA5P,IAAA,QAAAA,EAAAyC,MAAAgB,KAAAvD,CAAA,EAAA,cAAAF,GAAA,2CAAA+U,KAAA/U,CAAA,EAAA8U,EAAA5U,EAAA2U,CAAA,EAAA,KAAA,CAAA,EAAA3U,CAAA,IAAAiU,GAAAjU,GAAA,UAAA,OAAAA,EAAAU,OAAA,OAAA2T,IAAArU,EAAAqU,GAAApU,EAAA,EAAA,CAAAkQ,EAAA2E,EAAA,aAAAhV,EAAA,WAAA,OAAAG,GAAAD,EAAAU,OAAA,CAAA8T,KAAA,CAAA,CAAA,EAAA,CAAAA,KAAA,CAAA,EAAA9Q,MAAA1D,EAAAC,CAAA,GAAA,CAAA,EAAAJ,EAAA,SAAAkV,GAAA,MAAAA,CAAA,EAAA7V,EAAA4V,CAAA,EAAA,MAAA,IAAAtR,UAAA,uIAAA,CAAA,CAAA,SAAAoR,EAAAxT,EAAAG,IAAA,MAAAA,GAAAA,EAAAH,EAAAV,UAAAa,EAAAH,EAAAV,QAAA,IAAA,IAAAT,EAAA,EAAA+U,EAAA,IAAAzS,MAAAhB,CAAA,EAAAtB,EAAAsB,EAAAtB,CAAA,GAAA+U,EAAA/U,GAAAmB,EAAAnB,GAAA,OAAA+U,CAAA,CAEb,IAAMC,EAAM9U,EAAQ,OAAO,EACrBiR,EAAajR,EAAQ,QAAQ,EAC7B+U,EAAQ/U,EAAQ,eAAe,EAWrCf,EAAOD,QAAU,SAAmBmF,GAAmB,IAAX6Q,EAAI,EAAAxP,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAG,GAK3CyP,GAJFD,EAAKE,SACPlM,QAAQsH,IAAI,wBAAwB,EAGnB,IAAIW,EAAW9M,CAAM,GAClCgR,EAASF,EAAWG,UAAS,EAEnC,GAAkB,SAAdD,EAAO5D,IAAmC,IAAlB4D,EAAO5U,OACjC,MAAM,IAAI8U,YAAY,kBAAkB,EAW1C,IARA,IAAMC,EAAe,IAAIrE,EAAWkE,EAAOlQ,IAAI,EACzCsQ,EAAaD,EAAapD,WAAU,EACpCsD,EAAeF,EAAapD,WAAU,EACtCuD,EAAS,GACTC,EAAc,GACdC,EAAS,GAGN7V,EAAI,EAAGA,EAAIyV,EAAYzV,CAAC,GAAI,CAC/BkV,EAAKE,SACPlM,QAAQsH,IAAG,iBAAAtG,OAAkBlK,EAAI,EAAC,KAAA,CAAA,EAGpC,IAAM8V,EAAaX,EAAWG,UAAS,EAEvC,GAAsB,SAAlBQ,EAAWrE,GAAf,CAUA,IANA,IAAMsE,EAAc,IAAI5E,EAAW2E,EAAW3Q,IAAI,EAE5C6Q,EAAQ,GACVC,EAAO,CAAA,EAGJA,GAAQF,EAAYvR,WAAasR,EAAWrV,QAAQ,CAEzD,IAAImR,EAAQmE,EAAYG,UAAS,EAGjC,GAFAF,EAAMlU,KAAK8P,CAAK,EAEW,UAAvB,OAAOA,EAAMnO,QACXyR,EAAKE,SACPlM,QAAQsH,IAAG,KAAAtG,OAAM0H,EAAMO,QAAO,KAAA,EAAAjI,OAAM0H,EAAMnO,MAAK,IAAA,CAAA,EAG7CnB,MAAM4C,QAAQgQ,EAAKiB,IAAI,GAAG,CAAA,IACGC,EADHC,EAAAtC,EACNmB,EAAKiB,IAAI,EAAA,IAA/B,IAAAE,EAAAnG,EAAA,EAAA,EAAAkG,EAAAC,EAAAxW,EAAA,GAAA0U,MACE,GADgB6B,EAAA3S,MACJmO,EAAMO,WAAaP,EAAMnO,MAAO,CACtCyR,EAAKE,SACPlM,QAAQsH,IAAG,uBAAAtG,OAAwB0H,EAAMO,QAAO,KAAA,EAAAjI,OAAM0H,EAAMnO,MAAK,IAAA,CAAA,EAGnEwS,EAAO,CAAA,EACP,KACF,CACD,CAAA,MAAA9B,GAAAkC,EAAAzW,EAAAuU,CAAA,CAAA,CAAA,QAAAkC,EAAApX,EAAA,CAAA,CACH,CAEJ,EAGEgX,EADuB,YAArB,OAAOf,EAAKiB,KACP,CAACjB,EAAKiB,KAAKH,CAAK,EAGrBC,GACFN,EAAO7T,KAAKkU,CAAK,EACRd,EAAKE,SACdlM,QAAQsH,IAAG,kBAAAtG,OAAmBlK,EAAI,EAAC,KAAA,CAAA,CAxCrC,CA0CF,CAEA,GAAI0V,IAAiB,IAAO,EA8H1B,OAFAxM,QAAQsH,IAAI,uCAAuC,EAE5C,KA5HP,IAAM8F,EAAQ,IAAIrB,EAAMS,CAAY,EAEhCR,EAAKE,SACPlM,QAAQsH,IAAI,uBAAuB,EAIrC,IAAK,IAAiC+F,EAA7BC,EAAI,EAAG1E,EAAQ,EAAqB0E,EAAIb,EAAO,GAAGlV,OAAQ+V,CAAC,GAElE1E,IADAyE,EAAQZ,EAAO,GAAGa,IACH1E,MACNyE,EAAMzE,MAEO,aAAlByE,EAAMpE,UACRmE,EAAMG,iBAAiB3E,EAAOyE,EAAM9S,KAAK,EACzCqO,EAAQ,GAKZ,IAAK,IAAI4E,EAAI,EAAGA,EAAIf,EAAOlV,OAAQiW,CAAC,GAAI,CAClCxB,EAAKE,SACPlM,QAAQsH,IAAG,qCAAAtG,OAAsCwM,EAAI,EAAC,KAAA,CAAA,EAGxD,IAI2BC,EAJvBC,EAAQjB,EAAOe,GACfG,EAAQ,EACRC,EAAM,IAAIC,IAAMC,EAAAjD,EAEE6C,CAAK,EAAA,IAA3B,IAAAI,EAAA9G,EAAA,EAAA,EAAAyG,EAAAK,EAAAnX,EAAA,GAAA0U,MAA6B,CAAA,IAKnB0C,EAGAC,EACArP,EAYEsP,EACDC,EArBLC,EADYV,EAAAlT,MAEhBoT,GAASQ,EAAMvF,MAEI,YAAfuF,EAAMpS,MACFgS,EAAWI,EAAM5T,MAAMiQ,WAEP,WAAlB2D,EAAMlF,SACJ+E,EAAWG,EAAM5T,MAAMkQ,SACvB9L,EAASyO,EAAMgB,QAAQT,CAAK,EAG5BC,EAAIS,IAAIN,CAAQ,EAClBH,EAAIvN,IAAI0N,CAAQ,EAAEnV,KAAK,CAAC+F,OAAAA,EAAQ8L,SAAAuD,CAAQ,CAAC,EAEzCJ,EAAI7H,IAAIgI,EAAU,CAAC,CAACpP,OAAAA,EAAQ8L,SAAAuD,CAAQ,EAAE,EAIxCrB,EAAO/T,KAAK,CAAC6R,SAAAuD,EAAUpF,MAAA+E,EAAOO,KAAM,CAAA,CAAI,CAAC,GACd,YAAlBC,EAAMlF,UAEViF,GADCD,EAAQL,EAAIvN,IAAI0N,CAAQ,GACVE,EAAMK,IAAG,EAAK,CAAE3P,OAAQ,EAAG8L,SAAU,CAAE,EAE3DiC,EAAY9T,KAAK,CACfsV,KAAMpC,EAAIoC,KAAKH,CAAQ,EACvBQ,KAAMnB,EAAMgB,QAAQT,CAAK,EAAIO,EAAKvP,OAClC6P,UAAWN,EAAKzD,SAAW,IAC3B9L,OAAQuP,EAAKvP,MACf,CAAC,EAGDgO,EAAO/T,KAAK,CAAC6R,SAAUyD,EAAKzD,SAAU7B,MAAA+E,EAAOO,KAAM,CAAA,CAAK,CAAC,IAElDlC,EAAKE,SAA0B,SAAfiC,EAAMpS,MACJ,UAAvB,OAAOoS,EAAM5T,OACfyF,QAAQsH,IAAG,GAAAtG,OAAIoM,EAAMgB,QAAQT,CAAK,EAAEc,QAAQ,CAAC,EAAC,IAAA,EAAAzN,OAAKmN,EAAMlF,QAAO,IAAA,EAAAjI,OAAKmN,EAAM5T,KAAK,CAAA,CAGtF,CAAC,CAAA,MAAA0Q,GAAA6C,EAAApX,EAAAuU,CAAA,CAAA,CAAA,QAAA6C,EAAA/X,EAAA,CAAA,CACH,CAEIiW,EAAKE,SACPlM,QAAQsH,IAAI,uBAAuB,EAGrCqF,EAAO+B,KAAK,SAAUxX,EAAGuE,GACvB,OAAOvE,EAAE0R,MAAQnN,EAAEmN,OAASvG,OAAOnL,EAAEgX,IAAI,EAAI7L,OAAO5G,EAAEyS,IAAI,CAC5D,CAAC,EAEGlC,EAAKE,UACPlM,QAAQsH,IAAI,eAAgBoF,EAAYnV,MAAM,EAC9CyI,QAAQsH,IAAI,cAAe8F,EAAMgB,QAAQzB,EAAOA,EAAOpV,OAAS,GAAGqR,KAAK,EAAG,SAAS,GAGtF,IAO0B+F,EAPtBC,EAAc,EACdC,EAAkB,EAClBpE,EAAW,EACXqE,EAAW,EACXC,EAAe,EACfC,EAAQ,EAAEC,EAAApE,EAEM8B,CAAM,EAAA,IAA1B,IAAAsC,EAAAjI,EAAA,EAAA,EAAA2H,EAAAM,EAAAtY,EAAA,GAAA0U,MAA4B,CAAA,IAAjB6D,EAAKP,EAAApU,MACV2U,EAAMhB,MACRzD,GAAYyE,EAAMzE,SAClBuE,CAAK,GAEUJ,EAAXnE,IACFmE,EAAcnE,EACdoE,EAAkBzB,EAAMgB,QAAQc,EAAMtG,KAAK,GAGjCkG,EAARE,IACFF,EAAWE,EACXD,EAAe3B,EAAMgB,QAAQc,EAAMtG,KAAK,KAG1C6B,GAAYyE,EAAMzE,SAClBuE,CAAK,GAET,CAEA,CAAA,MAAA/D,GAAAgE,EAAAvY,EAAAuU,CAAA,CAAA,CAAA,QAAAgE,EAAAlZ,EAAA,CAAA,CACAoZ,EAAe,IAAMP,EAEjB5C,EAAKE,UACPlM,QAAQsH,IAAI,oBAAqB6H,CAAY,EAC7CnP,QAAQsH,IAAI,qBAAsBwH,EAAU,KAAMC,EAAc,SAAS,EACzE/O,QAAQsH,IAAI,wBAAyBsH,EAAc,EAAG,KAAMC,EAAiB,SAAS,GAwB1F7C,EAAKoD,SAAW,EAEZpD,EAAKE,SACPlM,QAAQsH,IAAI,0BAA0B,EAGxC,IAAM+H,EAAM,IAAIvD,EAAIE,EAAKoD,SAAUpD,EAAKsD,WAAYtD,EAAKuD,aAAa,EAItE,OAFAF,EAAIG,iBAAiB9C,EAAayC,EAAc,CAAC,GAAI,CAAA,EAAM,CAAA,EAAMnD,EAAKyD,QAAQ,EAEvEJ,CACT,C,+DCjPA,aAEA,SAAA7H,EAAA9L,GAAA,OAAA8L,EAAA,YAAA,OAAAtL,QAAA,UAAA,OAAAA,OAAAuL,SAAA,SAAA/L,GAAA,OAAA,OAAAA,CAAA,EAAA,SAAAA,GAAA,OAAAA,GAAA,YAAA,OAAAQ,QAAAR,EAAA4K,cAAApK,QAAAR,IAAAQ,OAAAjC,UAAA,SAAA,OAAAyB,CAAA,GAAAA,CAAA,CAAA,CAAA,SAAAgM,EAAA9F,EAAA+F,GAAA,IAAA,IAAA7Q,EAAA,EAAAA,EAAA6Q,EAAApQ,OAAAT,CAAA,GAAA,CAAA,IAAA8Q,EAAAD,EAAA7Q,GAAA8Q,EAAAxH,WAAAwH,EAAAxH,YAAA,CAAA,EAAAwH,EAAArH,aAAA,CAAA,EAAA,UAAAqH,IAAAA,EAAApH,SAAA,CAAA,GAAAN,OAAAC,eAAAyB,EAAA,SAAA1H,GAAA2N,EAAA,SAAAC,EAAAC,GAAA,GAAA,WAAAP,EAAAM,CAAA,GAAA,OAAAA,EAAA,OAAAA,EAAA,IAAAE,EAAAF,EAAA5L,OAAAC,aAAA,GAAAZ,KAAAA,IAAAyM,EAAA,OAAA,WAAAD,EAAA1K,OAAAgF,QAAAyF,CAAA,EAAApK,EAAAsK,EAAA1Q,KAAAwQ,EAAAC,GAAA,SAAA,EAAA,GAAA,WAAAP,EAAA9J,CAAA,EAAA,OAAAA,EAAA,MAAA,IAAArD,UAAA,8CAAA,CAAA,EAAAH,EAAA,QAAA,EAAA,MAAA,WAAAsN,EAAAK,CAAA,EAAAA,EAAAxK,OAAAwK,CAAA,CAAA,EAAAD,EAAAC,GAAA,EAAAD,CAAA,CAAA,CAAA,CAAA,IAIMmE,EAAK,WAIT,SAAAA,EAAY2D,GARd,GAAA,EAQ4BnZ,gBAAAwV,GAR5B,MAAA,IAAA1R,UAAA,mCAAA,EASI9D,KAAKmZ,aAAeA,EAEpBnZ,KAAKoZ,eAAiB,EACxB,CAZF,IAAAxH,EAAAC,EAAAC,EAsDG,OAtDHF,EAcE4D,GAdF3D,EAcE,CAAA,CAAAP,IAAA,mBAAAtN,MAKA,SAAiBqO,EAAOgH,GACtBrZ,KAAKoZ,eAAe/W,KAAK,CACvBgQ,MAAAA,EACAgH,oBAAAA,CACF,CAAC,CACH,CAEA,EAAA,CAAA/H,IAAA,UAAAtN,MAGA,SAAQqO,GAON,IANA,IAMgBiH,EALZtB,EAAO,EAEPqB,EAAsB,IAGjB9Y,EAAI,EAAkBA,EAAIP,KAAKoZ,eAAepY,QAAkB,EAARqR,EAAW9R,CAAC,GAIvE8R,IAHJiH,EAAgBtZ,KAAKoZ,eAAe7Y,IAGT8R,OACzB2F,GAAQsB,EAAcjH,MAAQgH,EAAsBrZ,KAAKmZ,aAX/B,IAY1B9G,GAASiH,EAAcjH,QAEvB2F,GAAQ3F,EAAQgH,EAAsBrZ,KAAKmZ,aAdjB,IAe1B9G,EAAQ,GAGVgH,EAAsBC,EAAcD,oBAKtC,OAFArB,GAAQ3F,EAAQgH,EAAsBrZ,KAAKmZ,aArBb,GAwBhC,CAAC,KAtDHhI,EAAAS,EAAAlO,UAAAmO,CAAA,EAAAC,GAAAX,EAAAS,EAAAE,CAAA,EAAAnI,OAAAC,eAAAgI,EAAA,YAAA,CAAA3H,SAAA,CAAA,CAAA,CAAA,EAsDGuL,CAAA,EAAA,EAGH9V,EAAOD,QAAU+V,C,kDC3DjB,aAIA,SAAAvE,EAAA9L,GAAA,OAAA8L,EAAA,YAAA,OAAAtL,QAAA,UAAA,OAAAA,OAAAuL,SAAA,SAAA/L,GAAA,OAAA,OAAAA,CAAA,EAAA,SAAAA,GAAA,OAAAA,GAAA,YAAA,OAAAQ,QAAAR,EAAA4K,cAAApK,QAAAR,IAAAQ,OAAAjC,UAAA,SAAA,OAAAyB,CAAA,GAAAA,CAAA,CAAA,CAAA,SAAAoU,EAAA7X,EAAAnB,GAAA,OAAA,SAAAmB,GAAA,GAAAmB,MAAA4C,QAAA/D,CAAA,EAAA,OAAAA,CAAA,EAAAA,CAAA,GAAA,SAAAA,EAAAnB,GAAA,IAAAwW,EAAA,MAAArV,EAAA,KAAA,aAAA,OAAAiE,QAAAjE,EAAAiE,OAAAuL,WAAAxP,EAAA,cAAA,GAAA,MAAAqV,EAAA,CAAA,IAAAyC,EAAAnE,EAAAoE,EAAAC,EAAAtN,EAAA,GAAAuN,EAAA,CAAA,EAAAC,EAAA,CAAA,EAAA,IAAA,GAAAH,GAAA1C,EAAAA,EAAAhW,KAAAW,CAAA,GAAAmT,KAAA,IAAAtU,EAAA,CAAA,GAAAoJ,OAAAoN,CAAA,IAAAA,EAAA,OAAA4C,EAAA,CAAA,CAAA,MAAA,KAAA,EAAAA,GAAAH,EAAAC,EAAA1Y,KAAAgW,CAAA,GAAAjC,QAAA1I,EAAA/J,KAAAmX,EAAAxV,KAAA,EAAAoI,EAAApL,SAAAT,GAAAoZ,EAAA,CAAA,GAAA,CAAA,MAAAjF,GAAAkF,EAAA,CAAA,EAAAvE,EAAAX,CAAA,CAAA,QAAA,IAAA,GAAA,CAAAiF,GAAA,MAAA5C,EAAA/B,SAAA0E,EAAA3C,EAAA/B,OAAA,EAAArL,OAAA+P,CAAA,IAAAA,GAAA,MAAA,CAAA,QAAA,GAAAE,EAAA,MAAAvE,CAAA,CAAA,CAAA,OAAAjJ,CAAA,CAAA,EAAA1K,EAAAnB,CAAA,GAAA,SAAAD,EAAA2U,GAAA,IAAA7U,EAAA,GAAAE,EAAA,MAAA,UAAA,OAAAA,EAAA4U,EAAA5U,EAAA2U,CAAA,EAAA,SAAA7U,EAAA,YAAAA,EAAAuJ,OAAAjG,UAAAqC,SAAAhF,KAAAT,CAAA,EAAAiE,MAAA,EAAA,CAAA,CAAA,IAAAjE,EAAAyP,YAAAzP,EAAAyP,YAAAC,KAAA5P,IAAA,QAAAA,EAAAyC,MAAAgB,KAAAvD,CAAA,EAAA,cAAAF,GAAA,2CAAA+U,KAAA/U,CAAA,EAAA8U,EAAA5U,EAAA2U,CAAA,EAAA,KAAA,CAAA,EAAAvT,EAAAnB,CAAA,GAAA,WAAA,MAAA,IAAAuD,UAAA,2IAAA,CAAA,EAAA,CAAA,CAAA,SAAAoR,EAAAxT,EAAAG,IAAA,MAAAA,GAAAA,EAAAH,EAAAV,UAAAa,EAAAH,EAAAV,QAAA,IAAA,IAAAT,EAAA,EAAA+U,EAAA,IAAAzS,MAAAhB,CAAA,EAAAtB,EAAAsB,EAAAtB,CAAA,GAAA+U,EAAA/U,GAAAmB,EAAAnB,GAAA,OAAA+U,CAAA,CAAA,SAAAnE,EAAA9F,EAAA+F,GAAA,IAAA,IAAA7Q,EAAA,EAAAA,EAAA6Q,EAAApQ,OAAAT,CAAA,GAAA,CAAA,IAAA8Q,EAAAD,EAAA7Q,GAAA8Q,EAAAxH,WAAAwH,EAAAxH,YAAA,CAAA,EAAAwH,EAAArH,aAAA,CAAA,EAAA,UAAAqH,IAAAA,EAAApH,SAAA,CAAA,GAAAN,OAAAC,eAAAyB,EAAA,SAAA1H,GAAA2N,EAAA,SAAAC,EAAAC,GAAA,GAAA,WAAAP,EAAAM,CAAA,GAAA,OAAAA,EAAA,OAAAA,EAAA,IAAAE,EAAAF,EAAA5L,OAAAC,aAAA,GAAAZ,KAAAA,IAAAyM,EAAA,OAAA,WAAAD,EAAA1K,OAAAgF,QAAAyF,CAAA,EAAApK,EAAAsK,EAAA1Q,KAAAwQ,EAAAC,GAAA,SAAA,EAAA,GAAA,WAAAP,EAAA9J,CAAA,EAAA,OAAAA,EAAA,MAAA,IAAArD,UAAA,8CAAA,CAAA,EAAAH,EAAA,QAAA,EAAA,MAAA,WAAAsN,EAAAK,CAAA,EAAAA,EAAAxK,OAAAwK,CAAA,CAAA,EAAAD,EAAAC,GAAA,EAAAD,CAAA,CAAA,CAAA,CACA,IAAMwI,EAAK,mCAELtE,EAAG,WAiEP,SAAAA,IAAqG,IAAzFuE,EAAW,EAAA7T,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAG,EAAG8S,EAAU,EAAA9S,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAG,MAAO+S,EAAa,EAAA/S,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAG,GAAIyG,EAAYzG,EAAA,EAAAA,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,KAAAA,UAAA,GAASP,EAAI,EAAAO,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAG,GApEnG8T,EAoEqG/Z,KApErG4R,EAoEqG2D,EApErG,GAAA,EAAAwE,aAAAnI,GAAA,MAAA,IAAA9N,UAAA,mCAAA,EAqEUkW,EAAiBhB,IAAkB,EAGzChZ,KAAK4V,OAAS,IAAIpR,YAAY,EAAE,EAGhCxE,KAAKia,KAAO,IAAIC,SAASla,KAAK4V,MAAM,EAGpC5V,KAAK0F,KAAOA,EAKZiE,OAAOC,eAAe5J,KAAM,eAAgB,CAC1CgK,aAAc,CAAA,EACdH,WAAY,CAAA,EACZ7F,MAAO0I,EACPzC,SAAU,CAAA,CACZ,CAAC,EAGDjK,KAAKma,QAAU,EAGfna,KAAKoa,QAAU1N,EAAe,OAAS,OACvC1M,KAAKqa,UAAYra,KAAK4V,OAAO1U,WAAa,EAC1ClB,KAAKsa,OAAS,OACdta,KAAKua,YAAc,OACnBva,KAAKwa,cAAgB,GACrBxa,KAAKya,YAAc,EACnBza,KAAK0a,YAAcZ,EACnB9Z,KAAK2a,WAAa5B,EAClB/Y,KAAK4a,SAAWd,EAAcf,EAAaiB,EAC3Cha,KAAK6a,WAAaf,EAAcE,EAChCha,KAAK8a,cAAgB9B,EACrBhZ,KAAK+a,YAAc,OACnB/a,KAAKgb,cAAgBtV,EAAK1E,OAASgZ,EAGnCha,KAAK0M,YACP,CA9GF,IAAAkF,EAAAC,EAAAC,EA2DG,OA3DHF,EAgHE2D,EAhHFzD,EA4kBG,CAAA,CAAAR,IAAA,WAAAtN,MAnkBD,WAA+B,IAQpBiX,EAAMC,EAGTC,EACAC,EACAC,EAbQ1D,EAAI,EAAA1R,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAG,OAGrB,MAAK4T,CAAAA,EAAG1E,KAAKwC,CAAI,IAKRsD,GAAgDK,EAAA/B,EAApB5B,EAAK4D,MAAM1B,CAAE,GAAK,GAAE,CAAA,GAA5C,GAAEqB,EAAMI,EAAA,GAAEE,EAAUF,EAAA,GAI3BF,EAAU,CAACK,KAAM,EAAG1I,EAAG,EAAG9R,EAAG,EAAG+R,EAAG,EAAGC,EAAG,EAAGyI,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGC,EAAG,GAAIC,GAAI,EAAE,EACvFX,EAAc,CAACY,GAAI,CAAC,EAAG/W,EAAG,CAAC,EAAGgX,GAAI,EAAGC,IAAK,EAAGC,KAAM,CAAC,EAGtCpX,KAAAA,KALdmW,EAAQ,CAACkB,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGnH,EAAG,EAAGoH,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAE,GAK9CzB,KAA2CjW,KAAAA,IAApBoW,EAAQF,IAAqDlW,KAAAA,IAA5BqW,EAAYG,GAZpE9L,CAAAA,EAAAA,EAiBHyL,EAAMF,GAA0B,GAAlBG,EAAQF,GAAeG,EAAYG,EAC1D,CAAC,EAAA,CAAAlK,IAAA,OAAAtN,MAED,WAAkC,IAAtBwT,EAAQ,EAAAvR,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAIyJ,CAAAA,EAAAA,EAIhBiN,EAAc/V,KAAKkK,MAAM0G,EAAW,EAAE,EACtCoF,EAAYhW,KAAKkK,MAAM0G,EAAyB,GAAdmF,CAAgB,EAElDzB,EANU,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAM5ByB,GACjB1B,EANQ,CAAC,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,KAMxD2B,GAGnB,OAAe5X,KAAAA,IAAXkW,GAAiClW,KAAAA,IAATiW,EACnB,OAIFA,EAAK4B,OAAO,CAAC,EAAI3B,EAAOnV,SAAQ,EAAKkV,EAAK4B,OAAO,CAAC,CAC3D,CAEA,EAAA,CAAAvL,IAAA,YAAAtN,MAIA,WAEE,OAAO,IAAM4C,KAAK2G,IAAI,IAFC,EAAAtH,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAIyJ,CAAAA,EAAAA,GAEU,IAAM,EAAE,CAC/C,CAAC,IA3DHmC,EAgHE,CAAA,CAAAP,IAAA,YAAAtN,MAMA,SAAUsE,GACR,IADsD,IAAzCpH,EAAU,EAAA+E,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAGqC,EAAItH,OAAQ+D,EAAU,EAAAkB,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAG,EAC1C1F,EAAI,EAAGA,EAAIW,EAAYX,CAAC,GAC/BP,KAAKia,KAAK6C,SAAS/X,EAAaxE,EAAG+H,EAAIvG,WAAWxB,CAAC,CAAC,CAExD,CAEA,EAAA,CAAA+Q,IAAA,YAAAtN,MAKA,SAAU9C,GAER,IAFoC,IAAhB6D,EAAU,EAAAkB,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAG,EAC7BqC,EAAM,GACD/H,EAAI,EAAGA,EAAIW,EAAYX,CAAC,GAC/B+H,GAAOxB,OAAOC,aAAa/G,KAAKia,KAAK8C,SAAShY,EAAaxE,CAAC,CAAC,EAG/D,OAAO+H,CACT,CAIA,EAAA,CAAAgJ,IAAA,UAAAxH,IAOA,WACE,OAAO9J,KAAKgd,UAAU,EAAG,CAAC,CAC5B,EAEAxN,IARA,SAAYlH,GACVtI,KAAKid,UAAU3U,EAAK,EAAG,CAAC,CAC1B,CAAC,EAAA,CAAAgJ,IAAA,YAAAxH,IAaD,WACE,OAAO9J,KAAKia,KAAKiD,UAAU,EAAGld,KAAK0M,YAAY,CACjD,EAEA8C,IARA,SAAc2N,GACZnd,KAAKia,KAAKmD,UAAU,EAAGD,EAAMnd,KAAK0M,YAAY,CAChD,CAAC,EAAA,CAAA4E,IAAA,SAAAxH,IAaD,WACE,OAAO9J,KAAKgd,UAAU,EAAG,CAAC,CAC5B,EAEAxN,IARA,SAAWlH,GACTtI,KAAKid,UAAU3U,EAAK,EAAG,CAAC,CAC1B,CAAC,EAAA,CAAAgJ,IAAA,cAAAxH,IAaD,WACE,OAAO9J,KAAKgd,UAAU,EAAG,EAAE,CAC7B,EAEAxN,IARA,SAAgBlH,GACdtI,KAAKid,UAAU3U,EAAK,EAAG,EAAE,CAC3B,CAAC,EAAA,CAAAgJ,IAAA,gBAAAxH,IAaD,WACE,OAAO9J,KAAKia,KAAKiD,UAAU,GAAIld,KAAK0M,YAAY,CAClD,EAEA8C,IARA,SAAkB2N,GAChBnd,KAAKia,KAAKmD,UAAU,GAAID,EAAMnd,KAAK0M,YAAY,CACjD,CAAC,EAAA,CAAA4E,IAAA,cAAAxH,IAaD,WACE,OAAO9J,KAAKia,KAAKoD,UAAU,GAAIrd,KAAK0M,YAAY,CAClD,EAEA8C,IARA,SAAgB2N,GACdnd,KAAKia,KAAKqD,UAAU,GAAIH,EAAMnd,KAAK0M,YAAY,CACjD,CAAC,EAAA,CAAA4E,IAAA,cAAAxH,IAaD,WACE,OAAO9J,KAAKia,KAAKoD,UAAU,GAAIrd,KAAK0M,YAAY,CAClD,EAEA8C,IARA,SAAgB2N,GACdnd,KAAKia,KAAKqD,UAAU,GAAIH,EAAMnd,KAAK0M,YAAY,CACjD,CAAC,EAAA,CAAA4E,IAAA,aAAAxH,IAaD,WACE,OAAO9J,KAAKia,KAAKiD,UAAU,GAAIld,KAAK0M,YAAY,CAClD,EAEA8C,IARA,SAAe2N,GACbnd,KAAKia,KAAKmD,UAAU,GAAID,EAAMnd,KAAK0M,YAAY,CACjD,CAAC,EAAA,CAAA4E,IAAA,WAAAxH,IAaD,WACE,OAAO9J,KAAKia,KAAKiD,UAAU,GAAIld,KAAK0M,YAAY,CAClD,EAEA8C,IARA,SAAa2N,GACXnd,KAAKia,KAAKmD,UAAU,GAAID,EAAMnd,KAAK0M,YAAY,CACjD,CAAC,EAAA,CAAA4E,IAAA,aAAAxH,IAaD,WACE,OAAO9J,KAAKia,KAAKoD,UAAU,GAAIrd,KAAK0M,YAAY,CAClD,EAEA8C,IARA,SAAe2N,GACbnd,KAAKia,KAAKqD,UAAU,GAAIH,EAAMnd,KAAK0M,YAAY,CACjD,CAAC,EAAA,CAAA4E,IAAA,gBAAAxH,IAaD,WACE,OAAO9J,KAAKia,KAAKoD,UAAU,GAAIrd,KAAK0M,YAAY,CAClD,EAEA8C,IARA,SAAkB2N,GAChBnd,KAAKia,KAAKqD,UAAU,GAAIH,EAAMnd,KAAK0M,YAAY,CACjD,CAAC,EAAA,CAAA4E,IAAA,cAAAxH,IAaD,WACE,OAAO9J,KAAKgd,UAAU,EAAG,EAAE,CAC7B,EAEAxN,IARA,SAAgBlH,GACdtI,KAAKid,UAAU3U,EAAK,EAAG,EAAE,CAC3B,CAAC,EAAA,CAAAgJ,IAAA,gBAAAxH,IAaD,WACE,OAAO9J,KAAKia,KAAKiD,UAAU,GAAIld,KAAK0M,YAAY,CAClD,EAEA8C,IARA,SAAkB2N,GAChBnd,KAAKia,KAAKmD,UAAU,GAAID,EAAMnd,KAAK0M,YAAY,CACjD,CAAC,EAAA,CAAA4E,IAAA,YAAAxH,IAUD,WACE,IAUIvJ,EAAGiQ,EAVDwJ,EAAiBha,KAAK8a,gBAAkB,EACxCpV,EAAO1F,KAAK0F,KACZI,EAAO9F,KAAKgb,cACZuC,EAAUzX,EAAOkU,EACjBpV,EAAS,IAAIJ,YAAYsB,CAAI,EAC7B7D,EAAQ,IAAIW,WAAWgC,CAAM,EAI7BqT,EAAYrR,KAAK2G,IAAI,GAAIyM,GAAkB,GAAK,CAAC,EAAI,EAG3D,OAAQA,GACR,KAAK,EAEH,IAAKzZ,EAAI,EAAGA,EAAIgd,EAAShd,CAAC,GAKxB0B,EAAM1B,GAAMmF,EAAKnF,GAAK0X,EAAY,IAAQ,IAE5C,MACF,KAAK,EAEH,GAAIjY,KAAK0M,aACP,IAAKnM,EAAI,EAAGA,EAAIgd,EAAShd,CAAC,GAExBiQ,EAAK9K,EAAKnF,GAAK0X,EAAY,MAAW,MAGtChW,EAAU,EAAJ1B,GAAyB,IAAXiQ,EACpBvO,EAAU,EAAJ1B,EAAQ,GAAMiQ,IAAM,OAI5B,IAAKjQ,EAAI,EAAGA,EAAIgd,EAAShd,CAAC,GAExBiQ,EAAK9K,EAAKnF,GAAK0X,EAAY,MAAW,MAGtChW,EAAU,EAAJ1B,GAAciQ,IAAM,EAC1BvO,EAAU,EAAJ1B,EAAQ,GAAiB,IAAXiQ,EAGxB,MACF,KAAK,EAEH,GAAIxQ,KAAK0M,aACP,IAAKnM,EAAI,EAAGA,EAAIgd,EAAShd,CAAC,GAExBiQ,EAAK9K,EAAKnF,GAAK0X,EAAY,SAAa,SAGxChW,EAAU,EAAJ1B,GAA0B,IAAZiQ,EACpBvO,EAAU,EAAJ1B,EAAQ,GAAMiQ,IAAO,EAAK,IAChCvO,EAAU,EAAJ1B,EAAQ,GAAMiQ,IAAM,QAI5B,IAAKjQ,EAAI,EAAGA,EAAIgd,EAAShd,CAAC,GAExBiQ,EAAK9K,EAAKnF,GAAK0X,EAAY,SAAa,SAGxChW,EAAU,EAAJ1B,GAAciQ,IAAM,GAC1BvO,EAAU,EAAJ1B,EAAQ,GAAMiQ,IAAO,EAAK,IAChCvO,EAAU,EAAJ1B,EAAQ,GAAkB,IAAZiQ,EAGxB,MACF,KAAK,EAEH,GAAIxQ,KAAK0M,aACP,IAAKnM,EAAI,EAAGA,EAAIgd,EAAShd,CAAC,GAExBiQ,EAAK9K,EAAKnF,GAAK0X,EAAY,WAAe,WAG1ChW,EAAU,EAAJ1B,GAA0B,IAAZiQ,EACpBvO,EAAU,EAAJ1B,EAAQ,GAAMiQ,IAAO,EAAK,IAChCvO,EAAU,EAAJ1B,EAAQ,GAAMiQ,IAAM,GAAM,IAChCvO,EAAU,EAAJ1B,EAAQ,GAAMiQ,IAAM,QAI5B,IAAKjQ,EAAI,EAAGA,EAAIgd,EAAShd,CAAC,GAExBiQ,EAAK9K,EAAKnF,GAAK0X,EAAY,WAAe,WAG1ChW,EAAU,EAAJ1B,GAAciQ,IAAM,GAC1BvO,EAAU,EAAJ1B,EAAQ,GAAMiQ,IAAM,GAAM,IAChCvO,EAAU,EAAJ1B,EAAQ,GAAMiQ,IAAO,EAAK,IAChCvO,EAAU,EAAJ1B,EAAQ,GAAkB,IAAZiQ,CAEvB,CAGH,OAAO5L,CACT,CAIA,EAAA,CAAA0M,IAAA,SAAAtN,MAKA,WACE,OAAO,IAAIwZ,KAAK,CAACxd,KAAK4V,OAAQ5V,KAAKyd,WAAY,CAACjY,KAAM,WAAW,CAAC,CACpE,CAEA,EAAA,CAAA8L,IAAA,WAAAtN,MAKA,WACE,OAAOd,EAAOuH,OAAO,CAACvH,EAAOW,KAAK7D,KAAK4V,MAAM,EAAG1S,EAAOW,KAAK7D,KAAKyd,SAAS,EAAE,CAC9E,CAIA,EAAA,CAAAnM,IAAA,OAAAtN,MAGA,WACE,OAAOhE,KAAKma,QAAUna,KAAK0a,YAAc1a,KAAK2a,UAChD,CAEA,EAAA,CAAArJ,IAAA,OAAAtN,MAOA,SAAKgU,GAAmB,IAAb7N,EAAIlE,EAAA,EAAAA,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,KAAAA,UAAA,GACPP,EAAS1F,KAAK0F,KACdgY,EAAS9W,KAAK+W,MAAM3d,KAAK2a,WAAa3C,CAAI,EAIhD,GAFAhY,KAAKma,QAAUna,KAAK0a,YAAcgD,EAE9BvT,EAEF,KAAOzE,EAAK1E,OAAShB,KAAKma,SACxBzU,EAAKA,EAAK1E,QAAU,OAGtBhB,KAAKma,QAAUzU,EAAK1E,MAExB,CAIA,EAAA,CAAAsQ,IAAA,YAAAtN,MAYA,SAAA4Z,GAAmF,IA+B1E1V,EAAG2V,EAAGrN,EA/BJmH,EAAIiG,EAAJjG,KAAMK,EAAI4F,EAAJ5F,KAAI8F,EAAAF,EAAE3F,UAAAA,EAAS,KAAA,IAAA6F,EAAG,EAACA,EAAGjF,EAAQ,EAAA5S,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAG,GAAI8X,EAAK9X,EAAA,EAAAA,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,KAAAA,UAAA,GAAS+X,EAAK,EAAA/X,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,IAAAA,UAAA,GAEjEP,EAAO1F,KAAK0F,KACZoU,EAAc9Z,KAAK0a,YACnB3B,EAAa/Y,KAAK2a,WAMlBnD,EAAWjC,EAAIiC,SAASG,CAAI,EAC5BsG,EAAY1I,EAAI0I,UAAUzG,CAAQ,EAAI5Q,KAAKsX,GAAK,EAAInF,EAGpDoF,EAAYvX,KAAK+W,MAAM5E,EAAaf,CAAI,EAExCoG,EAAUD,EATI,KASQpF,EAEtBsF,EAAOF,EAAYC,EAAU,EAG7B9b,EAAQtC,KAAKma,QACbmE,EAAO5Y,EAAK1E,OAGZud,EAAW3X,KAAKC,IAAID,KAAKkK,OAAOwN,EAAOhc,GAASwX,CAAW,EAAGqE,CAAS,EAS7E,GAAwB,IAApBtF,EAAS7X,OAIX,IAFA6X,EAAW,GAENtY,EAAI,EAAGA,EAAIuZ,EAAavZ,CAAC,GAC5BsY,EAAStY,GAAKA,EAQlB,IAFA,IAAMie,EAAc,GAEfje,EAAI,EAAGA,EAAIuZ,EAAavZ,CAAC,GAC5Bie,EAAYje,GAA8B,CAAC,IAAzBsY,EAAS/V,QAAQvC,CAAC,EAItC,IAAKA,EAAI,EAAGA,EAAIge,EAAUhe,CAAC,GAEzB,IAAK2H,EAAI,EAAGA,EAAI2Q,EAAS7X,OAAQkH,CAAC,GAChC2V,EAAIvb,EAAQ/B,EAAIuZ,EAAcjB,EAAS3Q,IACvCsI,EAAI,GAEAyN,IACFzN,EAAIyH,EAAYrR,KAAK6X,IAAIR,EAAY1d,CAAC,GAAMA,EAAI8d,EAAQ9d,EAAS6d,EAAJ7d,EAAe4d,EAAY5d,EAAI,EAAI8d,GAAQA,GAG1G3Y,EAAKmY,GAAKrN,GAAKuN,EAAQrY,EAAKmY,GAAK,GAKrC,IAAKtd,EAAIge,EAAUhe,EAAI4d,EAAW5d,CAAC,GAIjC,IAHAsd,EAAIvb,EAAQ/B,EAAIuZ,EAGX5R,EAAI,EAAGA,EAAI4R,EAAa5R,CAAC,KAC5BsI,EAAI,GAGAyN,GAAiB,CAACO,EAAYtW,MAChCsI,EAAIyH,EAAYrR,KAAK6X,IAAIR,EAAY1d,CAAC,GAAMA,EAAI8d,EAAQ9d,EAAS6d,EAAJ7d,EAAe4d,EAAY5d,EAAI,EAAI8d,GAAQA,GAG1G3Y,EAAKmY,EAAI3V,GAAKsI,EAKZjO,EAAMqE,KAAKsE,IAAI5I,EAAQ6b,EAAYrE,EAAawE,CAAI,EAAIte,KAAK8a,gBAAkB,EAErF9a,KAAKqa,UAAY9X,EAAMvC,KAAK4V,OAAO1U,WAAa,EAChDlB,KAAKgb,cAAgBzY,EAEhByb,IAEHhe,KAAKma,QAAU7X,EAAQ6b,EAAYrE,EAEvC,CAEA,EAAA,CAAAxI,IAAA,mBAAAtN,MAYA,SAAiB0T,GAGf,IAHuG,IAAjFO,EAAS,EAAAhS,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAG,EAAG4S,EAAQ,EAAA5S,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAG,GAAI8X,EAAK9X,EAAA,EAAAA,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,KAAAA,UAAA,GAAS+X,EAAK,EAAA/X,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,IAAAA,UAAA,GAAUyY,EAAgB,EAAAzY,UAAAjF,QAAAgE,KAAAA,IAAAiB,UAAA,GAAAA,UAAA,GAAG,EAC9F3D,EAAQtC,KAAKma,QAEV5Z,EAAI,EAAqCA,EAAImX,EAAM1W,OAAQT,CAAC,GAAI,CAGvE,IAAAoe,EAF6CjH,EAAMnX,GAAjDoX,EAAIgH,EAAJhH,KAAMK,EAAI2G,EAAJ3G,KAAiB4G,EAAGD,EAAd1G,UAGFjT,KAAAA,KAAR6Z,EAHqCF,EAAXvW,SAI5BpI,KAAK8e,KAAKD,CAAG,EAGU,IAArBH,GAAmC,SAAT/G,EAC5B3X,KAAK+e,UAAU,CAACpH,KAAAA,EAAMK,KAAAA,EAAMC,UAAmBjT,KAAAA,IAAR4Z,EAAoB3G,EAAY2G,EAAM3G,CAAS,EAAGY,EAAUkF,EAAO,CAAA,CAAK,GAG/GiB,EAAOhH,GADPiH,EAAOjH,EAAO0G,GAGd1e,KAAK+e,UAAU,CAACpH,KAAMA,EAAMK,KAAMiH,EAAMhH,UAAmBjT,KAAAA,IAAR4Z,EAAoB3G,EAAY2G,EAAM3G,CAAS,EAAGY,EAAUkF,EAAO,CAAA,CAAK,EAC3H/d,KAAK+e,UAAU,CAACpH,KAAM,OAAQK,KAAMgH,CAAI,EAAGnG,EAAUkF,EAAO,CAAA,CAAK,EAErE,CAEIC,IACFhe,KAAKma,QAAU7X,EAEnB,CAAC,KA5kBH6O,EAAAS,EAAAlO,UAAAmO,CAAA,EAAAC,GAAAX,EAAAS,EAAAE,CAAA,EAAAnI,OAAAC,eAAAgI,EAAA,YAAA,CAAA3H,SAAA,CAAA,CAAA,CAAA,EA2DGsL,CAAA,EAAA,EAohBH7V,EAAOD,QAAU8V,C,4ECnlBjB,aAEA7V,EAAOD,QAAU,CACf8V,IAAK9U,EAAQ,WAAW,EACxBiR,WAAYjR,EAAQ,YAAY,EAChCye,UAAWze,EAAQ,gBAAgB,CACrC","file":"synth.min.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayLike(value)\n }\n\n if (value == null) {\n throw TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n buf = Buffer.from(buf)\n }\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (var i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\r\n\r\nclass MIDIStream {\r\n /**\r\n * @param {ArrayBufferLike} buffer\r\n */\r\n constructor(buffer) {\r\n this.data = new Uint8Array(buffer);\r\n this.byteOffset = 0;\r\n this.lastEventTypeByte = 0x00;\r\n }\r\n\r\n /**\r\n * @param {number} byteLength\r\n * @returns {string}\r\n */\r\n readString(byteLength) {\r\n const byteOffset = this.byteOffset;\r\n let str = '';\r\n\r\n for (let i = 0; i < byteLength; i++) {\r\n str += String.fromCharCode(this.data[byteOffset + i]);\r\n }\r\n\r\n this.byteOffset += byteLength;\r\n\r\n return str;\r\n }\r\n\r\n readUint32() {\r\n const byteOffset = this.byteOffset;\r\n const value = (\r\n (this.data[byteOffset ] << 24) |\r\n (this.data[byteOffset + 1] << 16) |\r\n (this.data[byteOffset + 2] << 8) |\r\n (this.data[byteOffset + 3] )\r\n );\r\n\r\n this.byteOffset += 4;\r\n\r\n return value;\r\n }\r\n\r\n readUint24() {\r\n const byteOffset = this.byteOffset;\r\n const value = (\r\n (this.data[byteOffset ] << 16) |\r\n (this.data[byteOffset + 1] << 8) |\r\n (this.data[byteOffset + 2] )\r\n );\r\n\r\n this.byteOffset += 3;\r\n\r\n return value;\r\n }\r\n\r\n readUint16() {\r\n const byteOffset = this.byteOffset;\r\n const value = (\r\n (this.data[byteOffset ] << 8) |\r\n (this.data[byteOffset + 1] )\r\n );\r\n\r\n this.byteOffset += 2;\r\n\r\n return value;\r\n }\r\n\r\n readUint8() {\r\n const byteOffset = this.byteOffset;\r\n const value = this.data[byteOffset];\r\n\r\n this.byteOffset += 1;\r\n\r\n return value;\r\n }\r\n\r\n readInt8() {\r\n const byteOffset = this.byteOffset;\r\n let value = this.data[byteOffset];\r\n\r\n if ((value & 0x80) === 0x80) {\r\n value ^= 0xFFFFFF00;\r\n }\r\n\r\n this.byteOffset += 1;\r\n\r\n return value;\r\n }\r\n\r\n readVarUint() {\r\n let value = 0;\r\n let uint8;\r\n\r\n do {\r\n uint8 = this.readUint8();\r\n value = (value << 7) + (uint8 & 0x7F);\r\n } while ((uint8 & 0x80) === 0x80);\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * @param {number} byteLength\r\n */\r\n skip(byteLength) {\r\n this.byteOffset += byteLength;\r\n }\r\n\r\n readChunk() {\r\n const id = this.readString(4);\r\n const length = this.readUint32();\r\n const byteOffset = this.byteOffset;\r\n\r\n this.byteOffset += length;\r\n\r\n const data = this.data.slice(byteOffset, this.byteOffset);\r\n\r\n return {\r\n id: id,\r\n length: length,\r\n data: data.buffer\r\n };\r\n }\r\n\r\n /**\r\n * @template {keyof EventMap} T\r\n * @template {EventMap[T] extends undefined ? never : Exclude} S\r\n * @template {S extends keyof EventMap[T] ? (\"value\" extends keyof EventMap[T][S] ? EventMap[T][S][\"value\"] : never) : never} [V=S extends keyof EventMap[T] ? (\"value\" extends keyof EventMap[T][S] ? EventMap[T][S][\"value\"] : never) : never]\r\n * @template {S extends keyof EventMap[T] ? Omit : {}} [E = S extends keyof EventMap[T] ? Omit : {}]\r\n * @returns {Event}\r\n */\r\n readEvent() {\r\n /** @type {Event} */\r\n const event = {};\r\n\r\n event.delta = this.readVarUint();\r\n\r\n let eventTypeByte = this.readUint8();\r\n\r\n // system event\r\n if ((eventTypeByte & 0xF0) === 0xF0) {\r\n switch (eventTypeByte) {\r\n // meta event\r\n case 0xFF:\r\n /** @type {Event<\"meta\", keyof MetaEvent, any, {}>} */\r\n // @ts-expect-error\r\n const meta = event;\r\n meta.type = \"meta\";\r\n\r\n const subTypeByte = this.readUint8();\r\n let length = this.readVarUint();\r\n\r\n switch (subTypeByte) {\r\n case 0x00:\r\n meta.subType = 'sequenceNumber';\r\n if (length === 2)\r\n event.value = this.readUint16();\r\n else\r\n this.skip(length);\r\n break;\r\n case 0x01:\r\n meta.subType = 'text';\r\n event.value = this.readString(length);\r\n break;\r\n case 0x02:\r\n meta.subType = 'copyrightNotice';\r\n event.value = this.readString(length);\r\n break;\r\n case 0x03:\r\n meta.subType = 'trackName';\r\n event.value = this.readString(length);\r\n break;\r\n case 0x04:\r\n meta.subType = 'instrumentName';\r\n event.value = this.readString(length);\r\n break;\r\n case 0x05:\r\n meta.subType = 'lyrics';\r\n event.value = this.readString(length);\r\n break;\r\n case 0x06:\r\n meta.subType = 'marker';\r\n event.value = this.readString(length);\r\n break;\r\n case 0x07:\r\n meta.subType = 'cuePoint';\r\n event.value = this.readString(length);\r\n break;\r\n case 0x20:\r\n meta.subType = 'midiChannelPrefix';\r\n if (length === 1)\r\n event.value = this.readUint8();\r\n else\r\n this.skip(length);\r\n break;\r\n case 0x2F:\r\n meta.subType = 'endOfTrack';\r\n if (length > 0)\r\n this.skip(length);\r\n break;\r\n case 0x51:\r\n meta.subType = 'setTempo';\r\n if (length === 3)\r\n event.value = this.readUint24();\r\n else\r\n this.skip(length)\r\n break;\r\n case 0x54:\r\n meta.subType = 'smpteOffset';\r\n if (length === 5) {\r\n const hourByte = this.readUint8();\r\n event.value = {\r\n frameRate: ({\r\n 0x00: 24,\r\n 0x01: 25,\r\n 0x02: 29.97,\r\n 0x03: 30\r\n }[hourByte >>> 6]),\r\n hour: (hourByte & 0x3F),\r\n minute: this.readUint8(),\r\n second: this.readUint8(),\r\n frame: this.readUint8(),\r\n subFrame: this.readUint8()\r\n };\r\n } else {\r\n this.skip(length);\r\n }\r\n break;\r\n case 0x58:\r\n meta.subType = 'timeSignature';\r\n if (length === 4) {\r\n event.value = {\r\n numerator: this.readUint8(),\r\n denominator: 1 << this.readUint8(),\r\n metronome: this.readUint8(),\r\n thirtyseconds: this.readUint8()\r\n };\r\n } else {\r\n this.skip(length);\r\n }\r\n break;\r\n case 0x59:\r\n meta.subType = 'keySignature';\r\n if (length === 2) {\r\n event.value = {\r\n key: this.readInt8(),\r\n scale: this.readUint8()\r\n };\r\n } else {\r\n this.skip(length);\r\n }\r\n break;\r\n case 0x7F:\r\n meta.subType = 'sequencerSpecific';\r\n event.value = this.readString(length);\r\n break;\r\n default:\r\n meta.subType = 'unknown';\r\n event.value = this.readString(length);\r\n }\r\n break;\r\n // sysex event\r\n case 0xF0:\r\n /** @type {Event<\"sysEx\", Exclude, any, {}>} */\r\n // @ts-expect-error\r\n const sysex = event;\r\n sysex.type = 'sysEx';\r\n\r\n length = this.readVarUint();\r\n\r\n event.value = this.readString(length);\r\n\r\n break;\r\n case 0xF7:\r\n /** @type {Event<\"dividedSysEx\", Exclude, any, {}>} */\r\n // @ts-expect-error\r\n const divsysex = event;\r\n divsysex.type = 'dividedSysEx';\r\n\r\n length = this.readVarUint();\r\n\r\n event.value = this.readString(length);\r\n\r\n break;\r\n default:\r\n /** @type {Event<\"unknown\", Exclude, any, {}>} */\r\n // @ts-expect-error\r\n const unk = event;\r\n unk.type = 'unknown';\r\n unk.subType = \"unknown\";\r\n\r\n length = this.readVarUint();\r\n\r\n event.value = this.readString(length);\r\n }\r\n // channel event\r\n } else {\r\n let param;\r\n\r\n // if the high bit is low\r\n // use running event type mode\r\n if ((eventTypeByte & 0x80) === 0x00) {\r\n param = eventTypeByte;\r\n eventTypeByte = this.lastEventTypeByte;\r\n } else {\r\n param = this.readUint8();\r\n this.lastEventTypeByte = eventTypeByte;\r\n }\r\n\r\n const eventType = eventTypeByte >> 4;\r\n\r\n /** @type {Event<\"channel\", keyof ChannelEvent, any, { channel: number; }>} */\r\n // @ts-expect-error\r\n const chan = event;\r\n chan.channel = eventTypeByte & 0x0F;\r\n chan.type = 'channel';\r\n\r\n switch (eventType) {\r\n case 0x08:\r\n chan.subType = 'noteOff';\r\n\r\n event.value = {\r\n noteNumber: param,\r\n velocity: this.readUint8()\r\n };\r\n break;\r\n case 0x09:\r\n event.value = {\r\n noteNumber: param,\r\n velocity: this.readUint8()\r\n };\r\n\r\n // some midi implementations use a noteOn\r\n // event with 0 velocity to denote noteOff\r\n if (event.value.velocity === 0) {\r\n chan.subType = 'noteOff';\r\n } else {\r\n chan.subType = 'noteOn';\r\n }\r\n break;\r\n case 0x0A:\r\n chan.subType = 'noteAftertouch';\r\n\r\n event.value = {\r\n noteNumber: param,\r\n amount: this.readUint8()\r\n };\r\n break;\r\n case 0x0B:\r\n chan.subType = 'controller';\r\n\r\n event.value = {\r\n controllerNumber: param,\r\n controllerValue: this.readUint8()\r\n };\r\n break;\r\n case 0x0C:\r\n chan.subType = 'programChange';\r\n event.value = param;\r\n break;\r\n case 0x0D:\r\n chan.subType = 'channelAftertouch';\r\n event.value = param;\r\n break;\r\n case 0x0E:\r\n chan.subType = 'pitchBend';\r\n event.value = param + (this.readUint8() << 7);\r\n break;\r\n default:\r\n chan.subType = 'unknown';\r\n event.value = (param << 8) + this.readUint8();\r\n }\r\n }\r\n\r\n return event;\r\n }\r\n};\r\n\r\n/**\r\n * @typedef {Object} EventMap\r\n * @property {MetaEvent} meta\r\n * @property {SysExEvent} sysEx\r\n * @property {DividedSysExEvent} dividedSysEx\r\n * @property {UnknownEvent} unknown\r\n * @property {ChannelEvent} channel\r\n */\r\n\r\n/**\r\n * @typedef {Object} MetaEvent\r\n * @property {{ value: number; }} sequenceNumber\r\n * @property {{ value: string; }} text\r\n * @property {{ value: string; }} copyrightNotice\r\n * @property {{ value: string; }} trackName\r\n * @property {{ value: string; }} instrumentName\r\n * @property {{ value: string; }} lyrics\r\n * @property {{ value: string; }} marker\r\n * @property {{ value: string; }} cuePoint\r\n * @property {{ value: number | undefined; }} midiChannelPrefix\r\n * @property {{ value: undefined; }} endOfTrack\r\n * @property {{ value: number | undefined; }} setTempo\r\n * @property {{ value: { frameRate: number; hour: number; minute: number; second: number; frame: number; subFrame: number; } | undefined; }} smpteOffset\r\n * @property {{ value: { numerator: number; denominator: number; metronome: number; thirtyseconds: number; } | undefined; }} timeSignature\r\n * @property {{ value: { key: number; scale: number; } | undefined; }} keySignature\r\n * @property {{ value: number; }} sequencerSpecific\r\n * @property {{ value: number; }} unknown\r\n */\r\n\r\n/**\r\n * @typedef {{ [K in any]: { value: string; }; }} SysExEvent\r\n */\r\n\r\n/**\r\n * @typedef {{ [K in any]: { value: string; }; }} DividedSysExEvent\r\n */\r\n\r\n/**\r\n * @typedef {{ unknown: { value: string; }; }} UnknownEvent\r\n */\r\n\r\n/**\r\n * @typedef {Object} ChannelEvent\r\n * @property {{ channel: number; value: { noteNumber: number; } }} noteOff\r\n * @property {{ channel: number; value: { noteNumber: number; } }} noteOn\r\n * @property {{ channel: number; value: { noteNumber: number; amount: number; } }} noteAftertouch\r\n * @property {{ channel: number; value: { controllerNumber: number; controllerValue: number; } }} controller\r\n * @property {{ channel: number; value: number; }} programChange\r\n * @property {{ channel: number; value: number; }} channelAftertouch\r\n * @property {{ channel: number; value: number; }} pitchBend\r\n * @property {{ channel: number; value: number; }} unknown\r\n */\r\n\r\n/**\r\n * @template {keyof EventMap} [T=keyof EventMap]\r\n * @template {Exclude | undefined} [S=undefined]\r\n * @template {S extends keyof EventMap[T] ? (\"value\" extends keyof EventMap[T][S] ? EventMap[T][S][\"value\"] : never) : never} [V=S extends keyof EventMap[T] ? (\"value\" extends keyof EventMap[T][S] ? EventMap[T][S][\"value\"] : never) : never]\r\n * @template {S extends keyof EventMap[T] ? Omit : {}} [E = S extends keyof EventMap[T] ? Omit : {}]\r\n * @typedef {{ delta: number; subType: S; type: T; value: any } & E} Event\r\n */\r\n\r\nmodule.exports = MIDIStream;\r\n","'use strict';\r\n\r\nconst WAV = require('./wav');\r\nconst MIDIStream = require('./midi');\r\nconst Timer = require('./utils/timer');\r\n\r\n/**\r\n * @template {keyof MIDIStream.EventMap} T\r\n * @template {MIDIStream.EventMap[T] extends undefined ? never : Exclude} S\r\n * @template {S extends keyof MIDIStream.EventMap[T] ? (\"value\" extends keyof MIDIStream.EventMap[T][S] ? MIDIStream.EventMap[T][S][\"value\"] : never) : never} [V=S extends keyof MIDIStream.EventMap[T] ? (\"value\" extends keyof MIDIStream.EventMap[T][S] ? MIDIStream.EventMap[T][S][\"value\"] : never) : never]\r\n * @template {S extends keyof MIDIStream.EventMap[T] ? Omit : {}} [E = S extends keyof MIDIStream.EventMap[T] ? Omit : {}]\r\n * @param {ArrayBufferLike} buffer\r\n * @param {{ verbose?: boolean; Skip?: Array<{ [subType: string]: string }> | ((track: Array>) => boolean); channels?: number; sampleRate?: number; bitsPerSample?: number; duration?: number; }} args\r\n * @returns {WAV | null}\r\n */\r\nmodule.exports = function midiToWav(buffer, args = {}) {\r\n if (args.verbose) {\r\n console.log('parsing MIDI header...');\r\n }\r\n\r\n const midiStream = new MIDIStream(buffer);\r\n const header = midiStream.readChunk();\r\n\r\n if (header.id !== 'MThd' || header.length !== 6) {\r\n throw new SyntaxError('malformed header');\r\n }\r\n\r\n const headerStream = new MIDIStream(header.data);\r\n const trackCount = headerStream.readUint16();\r\n const timeDivision = headerStream.readUint16();\r\n const tracks = [];\r\n const progression = [];\r\n const events = [];\r\n let maxAmplitude;\r\n\r\n for (let i = 0; i < trackCount; i++) {\r\n if (args.verbose) {\r\n console.log(`parsing track ${i + 1}...`);\r\n }\r\n\r\n const trackChunk = midiStream.readChunk();\r\n\r\n if (trackChunk.id !== 'MTrk') {\r\n continue;\r\n }\r\n\r\n const trackStream = new MIDIStream(trackChunk.data);\r\n /** @type {Array>} */\r\n const track = [];\r\n let keep = true;\r\n\r\n // determine whether applied filter will remove the current track while populating it\r\n while (keep && trackStream.byteOffset < trackChunk.length) {\r\n /** @type {MIDIStream.Event} */\r\n let event = trackStream.readEvent();\r\n track.push(event);\r\n\r\n if (typeof event.value === 'string') {\r\n if (args.verbose) {\r\n console.log(`{\"${event.subType}\":\"${event.value}\"}`);\r\n }\r\n\r\n if (Array.isArray(args.Skip)) {\r\n for (const element of args.Skip) {\r\n if (element[event.subType] === event.value) {\r\n if (args.verbose) {\r\n console.log(`skip match found: {\"${event.subType}\":\"${event.value}\"}`);\r\n }\r\n\r\n keep = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (typeof args.Skip === 'function') {\r\n keep = !args.Skip(track);\r\n }\r\n\r\n if (keep) {\r\n tracks.push(track);\r\n } else if (args.verbose) {\r\n console.log(`skipping track ${i + 1}...`);\r\n }\r\n }\r\n\r\n if (timeDivision >>> 15 === 0) {\r\n // use microseconds per beat\r\n const timer = new Timer(timeDivision);\r\n\r\n if (args.verbose) {\r\n console.log('initializing timer...');\r\n }\r\n\r\n // set up timer with setTempo events\r\n for (let i = 0, delta = 0, ticks = 0, event; i < tracks[0].length; i++) {\r\n event = tracks[0][i];\r\n delta += event.delta;\r\n ticks += event.delta;\r\n\r\n if (event.subType === 'setTempo') {\r\n timer.addCriticalPoint(delta, event.value);\r\n delta = 0;\r\n }\r\n }\r\n\r\n // generate note data\r\n for (let i = 0; i < tracks.length; i++) {\r\n if (args.verbose) {\r\n console.log(`generating progression from track ${i + 1}...`);\r\n }\r\n\r\n let track = tracks[i];\r\n let delta = 0;\r\n let map = new Map();\r\n\r\n for (const element of track) {\r\n let event = element;\r\n delta += event.delta;\r\n\r\n if (event.type === 'channel') {\r\n const semitone = event.value.noteNumber;\r\n\r\n if (event.subType === 'noteOn') {\r\n let velocity = event.value.velocity;\r\n let offset = timer.getTime(delta);\r\n\r\n // use stack for simultaneous identical notes\r\n if (map.has(semitone)) {\r\n map.get(semitone).push({offset, velocity});\r\n } else {\r\n map.set(semitone, [{offset, velocity}]);\r\n }\r\n\r\n // to determine maximum total velocity for normalizing volume\r\n events.push({velocity, delta, note: true});\r\n } else if (event.subType === 'noteOff') {\r\n const notes = map.get(semitone);\r\n\t const note = notes ? notes.pop() : { offset: 0, velocity: 0 };\r\n\r\n progression.push({\r\n note: WAV.note(semitone),\r\n time: timer.getTime(delta) - note.offset,\r\n amplitude: note.velocity / 128,\r\n offset: note.offset,\r\n });\r\n\r\n // to determine maximum total velocity for normalizing volume\r\n events.push({velocity: note.velocity, delta, note: false});\r\n }\r\n } else if (args.verbose && event.type === 'meta') {\r\n if (typeof event.value === 'string') {\r\n console.log(`${timer.getTime(delta).toFixed(2)}s ${event.subType}: ${event.value}`);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (args.verbose) {\r\n console.log('normalizing volume...');\r\n }\r\n\r\n events.sort(function (a, b) {\r\n return a.delta - b.delta || Number(a.note) - Number(b.note);\r\n });\r\n\r\n if (args.verbose) {\r\n console.log('total notes:', progression.length);\r\n console.log('total time:', timer.getTime(events[events.length - 1].delta), 'seconds');\r\n }\r\n\r\n let maxVelocity = 1;\r\n let maxVelocityTime = 0;\r\n let velocity = 1;\r\n let maxChord = 0;\r\n let maxChordTime = 0;\r\n let chord = 0;\r\n\r\n for (const event of events) {\r\n if (event.note) {\r\n velocity += event.velocity;\r\n chord++;\r\n\r\n if (velocity > maxVelocity) {\r\n maxVelocity = velocity;\r\n maxVelocityTime = timer.getTime(event.delta);\r\n }\r\n\r\n if (chord > maxChord) {\r\n maxChord = chord;\r\n maxChordTime = timer.getTime(event.delta);\r\n }\r\n } else {\r\n velocity -= event.velocity;\r\n chord--;\r\n }\r\n }\r\n\r\n // scaling factor for amplitude\r\n maxAmplitude = 128 / maxVelocity;\r\n\r\n if (args.verbose) {\r\n console.log('setting volume to', maxAmplitude);\r\n console.log(' maximum chord of', maxChord, 'at', maxChordTime, 'seconds');\r\n console.log(' maximum velocity of', maxVelocity - 1, 'at', maxVelocityTime, 'seconds');\r\n }\r\n } else {\r\n // use frames per second\r\n // not yet implemented\r\n\r\n console.log('Detected unsupported MIDI timing mode');\r\n\r\n return null;\r\n\r\n /*\r\n let framesPerSecond = (division >>> 8) & 0x7F;\r\n let ticksPerFrame = division & 0xFF;\r\n\r\n if (framesPerSecond === 29) {\r\n framesPerSecond = 29.97;\r\n }\r\n\r\n // seconds per tick = 1 / frames per second / ticks per frame\r\n secsPerTick = 1 / framesPerSecond / ticksPerFrame;\r\n */\r\n }\r\n\r\n // set to mono\r\n args.channels = 1;\r\n\r\n if (args.verbose) {\r\n console.log('generating WAV buffer...');\r\n }\r\n\r\n const wav = new WAV(args.channels, args.sampleRate, args.bitsPerSample);\r\n\r\n wav.writeProgression(progression, maxAmplitude, [0], true, true, args.duration);\r\n\r\n return wav;\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * utility class to calculate time from delta ticks\r\n * when MIDI file has several `setTempo` events\r\n */\r\nclass Timer {\r\n /**\r\n * @param {number} ticksPerBeat\r\n */\r\n constructor(ticksPerBeat) {\r\n this.ticksPerBeat = ticksPerBeat;\r\n /** @type {Array<{ delta: number; microsecondsPerBeat: number; }>} */\r\n this.criticalPoints = [];\r\n }\r\n\r\n /**\r\n * delta represents ticks since last time change\r\n * @param {number} delta\r\n * @param {number} microsecondsPerBeat\r\n */\r\n addCriticalPoint(delta, microsecondsPerBeat) {\r\n this.criticalPoints.push({\r\n delta,\r\n microsecondsPerBeat\r\n });\r\n }\r\n\r\n /**\r\n * @param {number} delta\r\n */\r\n getTime(delta) {\r\n const microsecondsPerSecond = 1000000;\r\n let time = 0;\r\n // midi standard initializes file with this value\r\n let microsecondsPerBeat = 500000;\r\n\r\n // iterate through time changes while decrementing delta ticks to 0\r\n for (let i = 0, criticalPoint; i < this.criticalPoints.length && delta > 0; i++) {\r\n criticalPoint = this.criticalPoints[i];\r\n\r\n // incrementally calculate the time passed for each range of timing\r\n if (delta >= criticalPoint.delta) {\r\n time += criticalPoint.delta * microsecondsPerBeat / this.ticksPerBeat / microsecondsPerSecond;\r\n delta -= criticalPoint.delta;\r\n } else {\r\n time += delta * microsecondsPerBeat / this.ticksPerBeat / microsecondsPerSecond;\r\n delta = 0;\r\n }\r\n\r\n microsecondsPerBeat = criticalPoint.microsecondsPerBeat;\r\n }\r\n\r\n time += delta * microsecondsPerBeat / this.ticksPerBeat / microsecondsPerSecond;\r\n\r\n return time;\r\n }\r\n};\r\n\r\nmodule.exports = Timer;\r\n","'use strict';\r\n\r\n// matches occurence of A through G\r\n// followed by positive or negative integer\r\n// followed by 0 to 2 occurences of flat or sharp\r\nconst re = /^([A-G])(\\-?\\d+)(b{0,2}|#{0,2})$/;\r\n\r\nclass WAV {\r\n /**\r\n *\r\n * @param {string} note\r\n * @returns {number}\r\n */\r\n static semitone(note = 'REST') {\r\n\r\n // if semitone is unrecognized, assume REST\r\n if (!re.test(note)) {\r\n return -Infinity;\r\n }\r\n\r\n // parse substrings of note\r\n const [, tone, octave, accidental] = note.match(re) || [];\r\n\r\n // semitone indexed relative to A4 == 69 for compatibility with MIDI\r\n const tones = {C: 0, D: 2, E: 4, F: 5, G: 7, A: 9, B: 11};\r\n const octaves = {'-1': 0, 0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10, 10: 11};\r\n const accidentals = {bb: -2, b: -1, '': 0, '#': 1, '##': 2};\r\n\r\n // if semitone is unrecognized, assume REST\r\n if (tones[tone] === undefined || octaves[octave] === undefined || accidentals[accidental] === undefined) {\r\n return -Infinity;\r\n }\r\n\r\n // return calculated index\r\n return tones[tone] + octaves[octave] * 12 + accidentals[accidental];\r\n }\r\n\r\n static note(semitone = -Infinity) {\r\n const octaves = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\r\n const tones = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'];\r\n\r\n const octaveIndex = Math.floor(semitone / 12);\r\n const toneIndex = Math.floor(semitone - octaveIndex * 12);\r\n\r\n const octave = octaves[octaveIndex];\r\n const tone = tones[toneIndex];\r\n\r\n // by default assume REST\r\n if (octave === undefined || tone === undefined) {\r\n return 'REST';\r\n }\r\n\r\n // tone followed by octave followed by accidental\r\n return tone.charAt(0) + octave.toString() + tone.charAt(1);\r\n }\r\n\r\n /**\r\n * converts semitone index to frequency in Hz\r\n * @param {number} semitone\r\n */\r\n static frequency(semitone = -Infinity) {\r\n // A4 is 440 Hz, 12 semitones per octave\r\n return 440 * Math.pow(2, (semitone - 69) / 12);\r\n }\r\n\r\n /**\r\n * @param {number} numChannels\r\n * @param {number} sampleRate\r\n * @param {number} bitsPerSample\r\n * @param {boolean} littleEndian\r\n * @param {Array} data\r\n */\r\n constructor(numChannels = 1, sampleRate = 44100, bitsPerSample = 16, littleEndian = true, data = []) {\r\n const bytesPerSample = bitsPerSample >>> 3;\r\n // WAV header is always 44 bytes\r\n /** @type {ArrayBuffer} */\r\n this.header = new ArrayBuffer(44);\r\n // flexible container for reading / writing raw bytes in header\r\n /** @type {DataView} */\r\n this.view = new DataView(this.header);\r\n // leave sound data as non typed array for more flexibility\r\n /** @type {Array} */\r\n this.data = data;\r\n\r\n // initialize as non-configurable because it\r\n // causes script to freeze when using parsed\r\n // chunk sizes with wrong endianess assumed\r\n Object.defineProperty(this, 'littleEndian', {\r\n configurable: false,\r\n enumerable: true,\r\n value: littleEndian,\r\n writable: false\r\n });\r\n\r\n // initial write index in data array\r\n this.pointer = 0;\r\n\r\n // WAV header properties\r\n this.ChunkID = littleEndian ? 'RIFF' : 'RIFX';\r\n this.ChunkSize = this.header.byteLength - 8;\r\n this.Format = 'WAVE';\r\n this.SubChunk1ID = 'fmt ';\r\n this.SubChunk1Size = 16;\r\n this.AudioFormat = 1;\r\n this.NumChannels = numChannels;\r\n this.SampleRate = sampleRate;\r\n this.ByteRate = numChannels * sampleRate * bytesPerSample;\r\n this.BlockAlign = numChannels * bytesPerSample;\r\n this.BitsPerSample = bitsPerSample;\r\n this.SubChunk2ID = 'data';\r\n this.SubChunk2Size = data.length * bytesPerSample;\r\n /** @type {boolean} */\r\n // @ts-expect-error\r\n this.littleEndian;\r\n }\r\n\r\n /**\r\n * internal setter for writing strings as raw bytes to header\r\n * @param {string} str\r\n * @param {number} byteLength\r\n * @param {number} byteOffset\r\n */\r\n setString(str, byteLength = str.length, byteOffset = 0) {\r\n for (let i = 0; i < byteLength; i++) {\r\n this.view.setUint8(byteOffset + i, str.charCodeAt(i));\r\n }\r\n }\r\n\r\n /**\r\n * internal getter for reading raw bytes as strings from header\r\n * @param {number} byteLength\r\n * @param {number} byteOffset\r\n */\r\n getString(byteLength, byteOffset = 0) {\r\n let str = '';\r\n for (let i = 0; i < byteLength; i++) {\r\n str += String.fromCharCode(this.view.getUint8(byteOffset + i));\r\n }\r\n\r\n return str;\r\n }\r\n\r\n // header property mutators\r\n\r\n /**\r\n * 4 bytes at offset of 0 bytes\r\n */\r\n set ChunkID(str) {\r\n this.setString(str, 4, 0);\r\n }\r\n\r\n get ChunkID() {\r\n return this.getString(4, 0);\r\n }\r\n\r\n /**\r\n * 4 bytes at offset of 4 bytes\r\n */\r\n set ChunkSize(uint) {\r\n this.view.setUint32(4, uint, this.littleEndian);\r\n }\r\n\r\n get ChunkSize() {\r\n return this.view.getUint32(4, this.littleEndian);\r\n }\r\n\r\n /**\r\n * 4 bytes at offset of 8 bytes\r\n */\r\n set Format(str) {\r\n this.setString(str, 4, 8);\r\n }\r\n\r\n get Format() {\r\n return this.getString(4, 8);\r\n }\r\n\r\n /**\r\n * 4 bytes at offset of 12 bytes\r\n */\r\n set SubChunk1ID(str) {\r\n this.setString(str, 4, 12);\r\n }\r\n\r\n get SubChunk1ID() {\r\n return this.getString(4, 12);\r\n }\r\n\r\n /**\r\n * 4 bytes at offset of 16 bytes\r\n */\r\n set SubChunk1Size(uint) {\r\n this.view.setUint32(16, uint, this.littleEndian);\r\n }\r\n\r\n get SubChunk1Size() {\r\n return this.view.getUint32(16, this.littleEndian);\r\n }\r\n\r\n /**\r\n * 2 bytes at offset of 20 bytes\r\n */\r\n set AudioFormat(uint) {\r\n this.view.setUint16(20, uint, this.littleEndian);\r\n }\r\n\r\n get AudioFormat() {\r\n return this.view.getUint16(20, this.littleEndian);\r\n }\r\n\r\n /**\r\n * 2 bytes at offset of 22 bytes\r\n */\r\n set NumChannels(uint) {\r\n this.view.setUint16(22, uint, this.littleEndian);\r\n }\r\n\r\n get NumChannels() {\r\n return this.view.getUint16(22, this.littleEndian);\r\n }\r\n\r\n /**\r\n * 4 bytes at offset of 24 bytes\r\n */\r\n set SampleRate(uint) {\r\n this.view.setUint32(24, uint, this.littleEndian);\r\n }\r\n\r\n get SampleRate() {\r\n return this.view.getUint32(24, this.littleEndian);\r\n }\r\n\r\n /**\r\n * 4 bytes at offset of 28 bytes\r\n */\r\n set ByteRate(uint) {\r\n this.view.setUint32(28, uint, this.littleEndian);\r\n }\r\n\r\n get ByteRate() {\r\n return this.view.getUint32(28, this.littleEndian);\r\n }\r\n\r\n /**\r\n * 2 bytes at offset of 32 bytes\r\n */\r\n set BlockAlign(uint) {\r\n this.view.setUint16(32, uint, this.littleEndian);\r\n }\r\n\r\n get BlockAlign() {\r\n return this.view.getUint16(32, this.littleEndian);\r\n }\r\n\r\n /**\r\n * 2 bytes at offset of 34 bytes\r\n */\r\n set BitsPerSample(uint) {\r\n this.view.setUint16(34, uint, this.littleEndian);\r\n }\r\n\r\n get BitsPerSample() {\r\n return this.view.getUint16(34, this.littleEndian);\r\n }\r\n\r\n /**\r\n * 4 bytes at offset of 36 bytes\r\n */\r\n set SubChunk2ID(str) {\r\n this.setString(str, 4, 36);\r\n }\r\n\r\n get SubChunk2ID() {\r\n return this.getString(4, 36);\r\n }\r\n\r\n /**\r\n * 4 bytes at offset of 40 bytes\r\n */\r\n set SubChunk2Size(uint) {\r\n this.view.setUint32(40, uint, this.littleEndian);\r\n }\r\n\r\n get SubChunk2Size() {\r\n return this.view.getUint32(40, this.littleEndian);\r\n }\r\n\r\n /**\r\n * internal getter for sound data as\r\n * typed array based on header properties\r\n */\r\n get typedData() {\r\n const bytesPerSample = this.BitsPerSample >>> 3;\r\n const data = this.data;\r\n const size = this.SubChunk2Size;\r\n const samples = size / bytesPerSample;\r\n const buffer = new ArrayBuffer(size);\r\n const uint8 = new Uint8Array(buffer);\r\n\r\n // convert signed normalized sound data to typed integer data\r\n // i.e. [-1, 1] -> [INT_MIN, INT_MAX]\r\n const amplitude = Math.pow(2, (bytesPerSample << 3) - 1) - 1;\r\n let i, d;\r\n\r\n switch (bytesPerSample) {\r\n case 1:\r\n // endianess not relevant for 8-bit encoding\r\n for (i = 0; i < samples; i++) {\r\n // convert by adding 0x80 instead of 0x100\r\n // WAV uses unsigned data for 8-bit encoding\r\n\r\n // [INT8_MIN, INT8_MAX] -> [0, UINT8_MAX]\r\n uint8[i] = (data[i] * amplitude + 0x80) & 0xFF;\r\n }\r\n break;\r\n case 2:\r\n // LSB first\r\n if (this.littleEndian) {\r\n for (i = 0; i < samples; i++) {\r\n // [INT16_MIN, INT16_MAX] -> [0, UINT16_MAX]\r\n d = (data[i] * amplitude + 0x10000) & 0xFFFF;\r\n\r\n // unwrap inner loop\r\n uint8[i * 2 ] = (d ) & 0xFF;\r\n uint8[i * 2 + 1] = (d >>> 8);\r\n }\r\n // MSB first\r\n } else {\r\n for (i = 0; i < samples; i++) {\r\n // [INT16_MIN, INT16_MAX] -> [0, UINT16_MAX]\r\n d = (data[i] * amplitude + 0x10000) & 0xFFFF;\r\n\r\n // unwrap inner loop\r\n uint8[i * 2 ] = (d >>> 8);\r\n uint8[i * 2 + 1] = (d ) & 0xFF;\r\n }\r\n }\r\n break;\r\n case 3:\r\n // LSB first\r\n if (this.littleEndian) {\r\n for (i = 0; i < samples; i++) {\r\n // [INT24_MIN, INT24_MAX] -> [0, UINT24_MAX]\r\n d = (data[i] * amplitude + 0x1000000) & 0xFFFFFF;\r\n\r\n // unwrap inner loop\r\n uint8[i * 3 ] = (d ) & 0xFF;\r\n uint8[i * 3 + 1] = (d >>> 8) & 0xFF;\r\n uint8[i * 3 + 2] = (d >>> 16);\r\n }\r\n // MSB first\r\n } else {\r\n for (i = 0; i < samples; i++) {\r\n // [INT24_MIN, INT24_MAX] -> [0, UINT24_MAX]\r\n d = (data[i] * amplitude + 0x1000000) & 0xFFFFFF;\r\n\r\n // unwrap inner loop\r\n uint8[i * 3 ] = (d >>> 16);\r\n uint8[i * 3 + 1] = (d >>> 8) & 0xFF;\r\n uint8[i * 3 + 2] = (d ) & 0xFF;\r\n }\r\n }\r\n break;\r\n case 4:\r\n // LSB first\r\n if (this.littleEndian) {\r\n for (i = 0; i < samples; i++) {\r\n // [INT32_MIN, INT32_MAX] -> [0, UINT32_MAX]\r\n d = (data[i] * amplitude + 0x100000000) & 0xFFFFFFFF;\r\n\r\n // unwrap inner loop\r\n uint8[i * 4 ] = (d ) & 0xFF;\r\n uint8[i * 4 + 1] = (d >>> 8) & 0xFF;\r\n uint8[i * 4 + 2] = (d >>> 16) & 0xFF;\r\n uint8[i * 4 + 3] = (d >>> 24);\r\n }\r\n // MSB first\r\n } else {\r\n for (i = 0; i < samples; i++) {\r\n // [INT32_MIN, INT32_MAX] -> [0, UINT32_MAX]\r\n d = (data[i] * amplitude + 0x100000000) & 0xFFFFFFFF;\r\n\r\n // unwrap inner loop\r\n uint8[i * 4 ] = (d >>> 24);\r\n uint8[i * 4 + 1] = (d >>> 16) & 0xFF;\r\n uint8[i * 4 + 2] = (d >>> 8) & 0xFF;\r\n uint8[i * 4 + 3] = (d ) & 0xFF;\r\n }\r\n }\r\n }\r\n\r\n return buffer;\r\n }\r\n\r\n // binary container outputs\r\n\r\n /**\r\n * browser-specific\r\n *\r\n * generates blob from concatenated typed arrays\r\n */\r\n toBlob() {\r\n return new Blob([this.header, this.typedData], {type: 'audio/wav'});\r\n }\r\n\r\n /**\r\n * Node.js-specific\r\n *\r\n * generates buffer from concatenated typed arrays\r\n */\r\n toBuffer() {\r\n return Buffer.concat([Buffer.from(this.header), Buffer.from(this.typedData)]);\r\n }\r\n\r\n // pointer mutators\r\n\r\n /**\r\n * gets time (in seconds) of pointer\r\n */\r\n tell() {\r\n return this.pointer / this.NumChannels / this.SampleRate;\r\n }\r\n\r\n /**\r\n * sets time (in seconds) of pointer\r\n *\r\n * zero-fills by default\r\n * @param {number} time\r\n * @param {boolean} fill\r\n */\r\n seek(time, fill = true) {\r\n const data = this.data;\r\n const sample = Math.round(this.SampleRate * time);\r\n\r\n this.pointer = this.NumChannels * sample;\r\n\r\n if (fill) {\r\n // zero-fill seek\r\n while (data.length < this.pointer) {\r\n data[data.length] = 0;\r\n }\r\n } else {\r\n this.pointer = data.length;\r\n }\r\n }\r\n\r\n // sound data mutators\r\n\r\n /**\r\n * writes the specified note to the sound data\r\n * for amount of time in seconds\r\n * at given normalized amplitude\r\n * to channels listed (or all by default)\r\n * adds to existing data by default\r\n * and does not reset write index after operation by default\r\n * @param {{ note: string; time: number; amplitude?: number; }} param0\r\n * @param {Array} channels\r\n * @param {boolean} blend\r\n * @param {boolean} reset\r\n */\r\n writeNote({note, time, amplitude = 1}, channels = [], blend = true, reset = false) {\r\n // creating local references to properties\r\n const data = this.data;\r\n const numChannels = this.NumChannels;\r\n const sampleRate = this.SampleRate;\r\n\r\n // to prevent sound artifacts\r\n const fadeSeconds = 0.001;\r\n\r\n // calculating properties of given note\r\n const semitone = WAV.semitone(note);\r\n const frequency = WAV.frequency(semitone) * Math.PI * 2 / sampleRate;\r\n\r\n // amount of blocks to be written\r\n const blocksOut = Math.round(sampleRate * time);\r\n // reduces sound artifacts by fading at last fadeSeconds\r\n const nonZero = blocksOut - sampleRate * fadeSeconds;\r\n // fade interval in samples\r\n const fade = blocksOut - nonZero + 1;\r\n\r\n // index of start and stop samples\r\n const start = this.pointer;\r\n const stop = data.length;\r\n\r\n // determines amount of blocks to be updated\r\n const blocksIn = Math.min(Math.floor((stop - start) / numChannels), blocksOut);\r\n\r\n // i = index of each sample block\r\n // j = index of each channel in a block\r\n // k = cached index of data\r\n // d = sample data value\r\n let i, j, k, d;\r\n\r\n // by default write to all channels\r\n if (channels.length === 0) {\r\n // don't overwrite passed array\r\n channels = [];\r\n\r\n for (i = 0; i < numChannels; i++) {\r\n channels[i] = i;\r\n }\r\n }\r\n\r\n // inline .indexOf() function calls into array references\r\n /** @type {Array} */\r\n const skipChannel = [];\r\n\r\n for (i = 0; i < numChannels; i++) {\r\n skipChannel[i] = (channels.indexOf(i) === -1);\r\n }\r\n\r\n // update existing data\r\n for (i = 0; i < blocksIn; i++) {\r\n // iterate through specified channels\r\n for (j = 0; j < channels.length; j++) {\r\n k = start + i * numChannels + channels[j];\r\n d = 0;\r\n\r\n if (frequency > 0) {\r\n d = amplitude * Math.sin(frequency * i) * ((i < fade) ? i : (i > nonZero) ? blocksOut - i + 1 : fade) / fade;\r\n }\r\n\r\n data[k] = d + (blend ? data[k] : 0);\r\n }\r\n }\r\n\r\n // append data\r\n for (i = blocksIn; i < blocksOut; i++) {\r\n k = start + i * numChannels;\r\n\r\n // iterate through all channels\r\n for (j = 0; j < numChannels; j++) {\r\n d = 0;\r\n\r\n // only write non-zero data to specified channels\r\n if (frequency > 0 || !skipChannel[j]) {\r\n d = amplitude * Math.sin(frequency * i) * ((i < fade) ? i : (i > nonZero) ? blocksOut - i + 1 : fade) / fade;\r\n }\r\n\r\n data[k + j] = d;\r\n }\r\n }\r\n\r\n // update header properties\r\n const end = Math.max(start + blocksOut * numChannels, stop) * this.BitsPerSample >>> 3;\r\n\r\n this.ChunkSize = end + this.header.byteLength - 8;\r\n this.SubChunk2Size = end;\r\n\r\n if (!reset) {\r\n // move write index to end of written data\r\n this.pointer = start + blocksOut * numChannels;\r\n }\r\n }\r\n\r\n /**\r\n * adds specified notes in series\r\n * (or asynchronously if offset property is specified in a note)\r\n * each playing for time * relativeDuration seconds\r\n * followed by a time * (1 - relativeDuration) second rest\r\n * @param {Array<{ note: string; time: number; amplitude?: number; offset?: number; }>} notes\r\n * @param {number} amplitude\r\n * @param {Array} channels\r\n * @param {boolean} blend\r\n * @param {boolean} reset\r\n * @param {number} relativeDuration\r\n */\r\n writeProgression(notes, amplitude = 1, channels = [], blend = true, reset = false, relativeDuration = 1) {\r\n const start = this.pointer;\r\n\r\n for (let i = 0, note, time, amp, off, secs, rest; i < notes.length; i++) {\r\n ({note, time, amplitude: amp, offset: off} = notes[i]);\r\n\r\n // for asynchronous progression\r\n if (off !== undefined) {\r\n this.seek(off);\r\n }\r\n\r\n if (relativeDuration === 1 || note === 'REST') {\r\n this.writeNote({note, time, amplitude: amp === undefined ? amplitude : amp * amplitude}, channels, blend, false);\r\n } else {\r\n secs = time * relativeDuration;\r\n rest = time - secs;\r\n\r\n this.writeNote({note: note, time: secs, amplitude: amp === undefined ? amplitude : amp * amplitude}, channels, blend, false);\r\n this.writeNote({note: 'REST', time: rest}, channels, blend, false);\r\n }\r\n }\r\n\r\n if (reset) {\r\n this.pointer = start;\r\n }\r\n }\r\n};\r\n\r\nmodule.exports = WAV;\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n WAV: require('./src/wav'),\r\n MIDIStream: require('./src/midi'),\r\n midiToWav: require('./src/midi2wav')\r\n};\r\n"]} \ No newline at end of file diff --git a/gulp/tasks/browserify.js b/gulp/tasks/browserify.js deleted file mode 100644 index 5caf8e7..0000000 --- a/gulp/tasks/browserify.js +++ /dev/null @@ -1,35 +0,0 @@ -const config = require('../config'); - -const gulp = require('gulp'); -const browserify = require('browserify'); -const babelify = require('babelify'); -const source = require('vinyl-source-stream'); -const buffer = require('vinyl-buffer'); -const uglify = require('gulp-uglify'); -const sourcemaps = require('gulp-sourcemaps'); -const gutil = require('gulp-util'); - -gulp.task('browserify', function () { - // set up the browserify instance on a task basis - let b = browserify({ - entries: config.paths.entry, - debug: true, - standalone: config.names.glob, - transform: [ - babelify.configure({ - presets: ['es2015'], - sourceMapsAbsolute: true, - }), - ], - }); - - return b.bundle() - .pipe(source(config.names.app)) - .pipe(buffer()) - .pipe(sourcemaps.init({loadMaps: true})) - // Add transformation tasks to the pipeline here. - .pipe(uglify()) - .on('error', gutil.log) - .pipe(sourcemaps.write('./')) - .pipe(gulp.dest(config.paths.dest)); -}); diff --git a/gulp/tasks/default.js b/gulp/tasks/default.js index 43fcc4d..20eeda5 100644 --- a/gulp/tasks/default.js +++ b/gulp/tasks/default.js @@ -1,3 +1,37 @@ +const config = require('../config.json'); + +const { pipeline } = require("stream"); const gulp = require('gulp'); +const browserify = require('browserify'); +const babelify = require('babelify'); +const source = require('vinyl-source-stream'); +const buffer = require('vinyl-buffer'); +const uglify = require('gulp-uglify'); +const sourcemaps = require('gulp-sourcemaps'); +const gutil = require('gulp-util'); + +gulp.task('default', cb => { + // set up the browserify instance on a task basis + let b = browserify({ + entries: config.paths.entry, + debug: true, + standalone: config.names.glob, + transform: [ + babelify.configure({ + presets: ['@babel/preset-env'], + sourceMapsAbsolute: true, + }), + ], + }); -gulp.task('default', ['browserify']); + return pipeline([ + b.bundle(), + source(config.names.app), + buffer(), + sourcemaps.init({loadMaps: true}), + uglify() + .on('error', gutil.log), + sourcemaps.write('./'), + gulp.dest(config.paths.dest) + ], cb); +}); diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..41dd809 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,3 @@ +export const WAV: typeof import("./src/wav"); +export const MIDIStream: typeof import("./src/midi"); +export const midiToWav: typeof import("./src/midi2wav"); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4765138 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,8345 @@ +{ + "name": "synth-js", + "version": "0.1.2", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "synth-js", + "version": "0.1.2", + "license": "MIT", + "bin": { + "synth": "bin/synth.js" + }, + "devDependencies": { + "@babel/preset-env": "^7.21.4", + "@types/node": "^18.15.11", + "babelify": "^10.0.0", + "browserify": "^17.0.0", + "gulp": "^4.0.2", + "gulp-sourcemaps": "^3.0.0", + "gulp-uglify": "^3.0.2", + "gulp-util": "^3.0.8", + "require-dir": "^1.2.0", + "typescript": "^5.0.3", + "vinyl-buffer": "^1.0.1", + "vinyl-source-stream": "^2.0.0" + }, + "engines": { + "node": ">=v6.9.2", + "npm": ">=4.0.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", + "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", + "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", + "dev": true, + "peer": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.4", + "@babel/helper-compilation-targets": "^7.21.4", + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.4", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.4", + "@babel/types": "^7.21.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", + "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.4", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", + "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.21.4", + "@babel/helper-validator-option": "^7.21.0", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz", + "integrity": "sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-member-expression-to-functions": "^7.21.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz", + "integrity": "sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", + "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", + "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", + "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", + "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz", + "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz", + "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz", + "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz", + "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz", + "integrity": "sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz", + "integrity": "sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz", + "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz", + "integrity": "sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.21.4", + "@babel/helper-compilation-targets": "^7.21.4", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.21.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7", + "@babel/plugin-proposal-async-generator-functions": "^7.20.7", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.21.0", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.21.0", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.21.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.20.7", + "@babel/plugin-transform-async-to-generator": "^7.20.7", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.21.0", + "@babel/plugin-transform-classes": "^7.21.0", + "@babel/plugin-transform-computed-properties": "^7.20.7", + "@babel/plugin-transform-destructuring": "^7.21.3", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.21.0", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.20.11", + "@babel/plugin-transform-modules-commonjs": "^7.21.2", + "@babel/plugin-transform-modules-systemjs": "^7.20.11", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.21.3", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.20.5", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.20.7", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.21.4", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", + "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.4", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.4", + "@babel/types": "^7.21.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", + "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@gulp-sourcemaps/identity-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", + "integrity": "sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==", + "dev": true, + "dependencies": { + "acorn": "^6.4.1", + "normalize-path": "^3.0.0", + "postcss": "^7.0.16", + "source-map": "^0.6.0", + "through2": "^3.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/@gulp-sourcemaps/identity-map/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/@gulp-sourcemaps/identity-map/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/@gulp-sourcemaps/identity-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@gulp-sourcemaps/identity-map/node_modules/through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "node_modules/@gulp-sourcemaps/map-sources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", + "integrity": "sha512-o/EatdaGt8+x2qpb0vFLC/2Gug/xYPRXb6a+ET1wGYKozKN3krDWC/zZFZAtrzxJHuDL12mwdfEFKcKMNvc55A==", + "dev": true, + "dependencies": { + "normalize-path": "^2.0.1", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/@gulp-sourcemaps/map-sources/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@types/node": { + "version": "18.15.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", + "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-node/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "dev": true, + "dependencies": { + "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dev": true, + "dependencies": { + "buffer-equal": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "dev": true, + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "dev": true, + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "dev": true, + "dependencies": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "dependencies": { + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "dependencies": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "dev": true, + "dependencies": { + "async-done": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babelify": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", + "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "dev": true, + "dependencies": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha512-3vqtKL1N45I5dV0RdssXZG7X6pCqQrWPNOlBPZPrd+QkE2HEhR57Z04m0KtpbsZH73j+a3F8UD1TQnn+ExTvIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "dev": true, + "dependencies": { + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "JSONStream": "^1.0.3", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" + }, + "bin": { + "browser-pack": "bin/cmd.js" + } + }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "dependencies": { + "resolve": "^1.17.0" + } + }, + "node_modules/browserify": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", + "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", + "dev": true, + "dependencies": { + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.1", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^3.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.2.1", + "JSONStream": "^1.0.3", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "^1.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum-object": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^3.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.12.0", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "browserify": "bin/cmd.js" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "dev": true, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cached-path-relative": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", + "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==", + "dev": true + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001473", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001473.tgz", + "integrity": "sha512-ewDad7+D2vlyy+E4UJuVfiBsU69IL+8oVmTuZnH5Q6CIUbxNfI50uVpRHbUPDD6SUaN2o0Lh4DhTrvLG/Tn1yg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha512-dhUqc57gSMCo6TX85FLfe51eC/s+Im2MLkAgJwfaRRexR2tA4dd3eLEW4L6efzHc2iNorrRRXITifnDLlRrhaA==", + "dev": true + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "dev": true, + "dependencies": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==", + "dev": true, + "dependencies": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + } + }, + "node_modules/combine-source-map/node_modules/convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "dev": true, + "dependencies": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "node_modules/core-js-compat": { + "version": "3.29.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.29.1.tgz", + "integrity": "sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "node_modules/css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", + "dev": true + }, + "node_modules/dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug-fabulous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", + "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", + "dev": true, + "dependencies": { + "debug": "3.X", + "memoizee": "0.4.X", + "object-assign": "4.X" + } + }, + "node_modules/debug-fabulous/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "dependencies": { + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defined": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deps-sort": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", + "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "dev": true, + "dependencies": { + "JSONStream": "^1.0.3", + "shasum-object": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + }, + "bin": { + "deps-sort": "bin/cmd.js" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detective": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dev": true, + "dependencies": { + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "node_modules/each-props/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.348", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.348.tgz", + "integrity": "sha512-gM7TdwuG3amns/1rlgxMbeeyNoBFPa+4Uu0c7FeROWh4qWmvSOnvcslKmWy51ggLKZ2n/F/4i2HJ+PVNxH9uCQ==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "dependencies": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==", + "dev": true + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fined/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dev": true, + "dependencies": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "dependencies": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-sourcemaps": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz", + "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==", + "dev": true, + "dependencies": { + "@gulp-sourcemaps/identity-map": "^2.0.1", + "@gulp-sourcemaps/map-sources": "^1.0.0", + "acorn": "^6.4.1", + "convert-source-map": "^1.0.0", + "css": "^3.0.0", + "debug-fabulous": "^1.0.0", + "detect-newline": "^2.0.0", + "graceful-fs": "^4.0.0", + "source-map": "^0.6.0", + "strip-bom-string": "^1.0.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gulp-sourcemaps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-uglify": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", + "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", + "dev": true, + "dependencies": { + "array-each": "^1.0.1", + "extend-shallow": "^3.0.2", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "isobject": "^3.0.1", + "make-error-cause": "^1.1.1", + "safe-buffer": "^5.1.2", + "through2": "^2.0.0", + "uglify-js": "^3.0.5", + "vinyl-sourcemaps-apply": "^0.2.0" + } + }, + "node_modules/gulp-uglify/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-uglify/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-uglify/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha512-q5oWPc12lwSFS9h/4VIjG+1NuNDlJ48ywV2JKItY4Ycc/n1fXJeYPVQsfu5ZrhQi7FGSDBalwUCLar/GyHXKGw==", + "deprecated": "gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5", + "dev": true, + "dependencies": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/gulp-util/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-util/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-util/node_modules/object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-util/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "dev": true, + "dependencies": { + "glogg": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==", + "dev": true, + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==", + "dev": true, + "dependencies": { + "source-map": "~0.5.3" + } + }, + "node_modules/insert-module-globals": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", + "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", + "dev": true, + "dependencies": { + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "JSONStream": "^1.0.3", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + }, + "bin": { + "insert-module-globals": "bin/cmd.js" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "peer": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==", + "dev": true + }, + "node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/labeled-stream-splicer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", + "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "stream-splicer": "^2.0.0" + } + }, + "node_modules/last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "dev": true, + "dependencies": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dev": true, + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dev": true, + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "dependencies": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/liftoff/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ==", + "dev": true + }, + "node_modules/lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha512-mTzAr1aNAv/i7W43vOR/uD/aJ4ngbtsRaCubp2BfZhlGU/eORUjg/7F6X0orNMdv33JOrdgGybtvMN/po3EWrA==", + "dev": true + }, + "node_modules/lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha512-H94wl5P13uEqlCg7OcNNhMQ8KvWSIyqXzOPusRgHC9DK3o54P6P3xtbXlVbRABG4q5gSmp7EDdJ0MSuW9HX6Mg==", + "dev": true + }, + "node_modules/lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==", + "dev": true + }, + "node_modules/lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ==", + "dev": true + }, + "node_modules/lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha512-Sjlavm5y+FUVIF3vF3B75GyXrzsfYV8Dlv3L4mEpuB9leg8N6yf/7rU06iLPx9fY0Mv3khVp9p7Dx0mGV6V5OQ==", + "dev": true + }, + "node_modules/lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha512-OrPwdDc65iJiBeUe5n/LIjd7Viy99bKwDdk7Z5ljfZg0uFRFlfQaCy9tZ4YMAag9WAZmlVpe1iZrkIMMSMHD3w==", + "dev": true + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true + }, + "node_modules/lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha512-n1PZMXgaaDWZDSvuNZ/8XOcYO2hOKDqZel5adtR30VKQAtoWs/5AOeFA0vPV8moiPzlqe7F4cP2tzpFewQyelQ==", + "dev": true, + "dependencies": { + "lodash._root": "^3.0.0" + } + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", + "dev": true + }, + "node_modules/lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==", + "dev": true + }, + "node_modules/lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==", + "dev": true, + "dependencies": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "node_modules/lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", + "dev": true + }, + "node_modules/lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==", + "dev": true + }, + "node_modules/lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha512-0B4Y53I0OgHUJkt+7RmlDFWKjVAI/YUpWNiL9GQz5ORDr4ttgfQGo+phBWKFLJbBdtOwgMuUkdOHOnPg45jKmQ==", + "dev": true, + "dependencies": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha512-TcrlEr31tDYnWkHFWDCV3dHYroKEXpJZ2YJYvJdhN+y4AkWMDZ5I4I8XDtUKqSAyG81N7w+I1mFEJtcED+tGqQ==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/make-error-cause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha512-4TO2Y3HkBnis4c0dxhAgD/jprySYLACf7nwN6V0HAHDx59g12WlRpUmFy1bRHamjGUEEBrEvCq6SUpsEE2lhUg==", + "dev": true, + "dependencies": { + "make-error": "^1.2.0" + } + }, + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/make-iterator/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", + "dev": true, + "dependencies": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/matchdep/node_modules/findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/matchdep/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "node_modules/module-deps": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", + "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", + "dev": true, + "dependencies": { + "browser-resolve": "^2.0.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.2.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "JSONStream": "^1.0.3", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "module-deps": "bin/cmd.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha512-7ZxrUybYv9NonoXgwoOqtStIu18D1c3eFZj27hqgf5kBrBF8Q+tE8V0MW8dKM5QLkQPh1JhhbKgHLY9kifov4Q==", + "dev": true, + "dependencies": { + "duplexer2": "0.0.2" + } + }, + "node_modules/multipipe/node_modules/duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g==", + "dev": true, + "dependencies": { + "readable-stream": "~1.1.9" + } + }, + "node_modules/multipipe/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/multipipe/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/multipipe/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, + "node_modules/mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dev": true, + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dev": true, + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", + "dev": true, + "dependencies": { + "path-platform": "~0.11.15" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "dev": true, + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha512-AFBWBy9EVRTa/LhEcG8QDP3FvpwZqmvN2QFDuJswFeaVhWnZMp8q3E6Zd90SR04PlIwfGdyVjNyLPyen/ek5CQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-dir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/require-dir/-/require-dir-1.2.0.tgz", + "integrity": "sha512-LY85DTSu+heYgDqq/mK+7zFHWkttVNRXC9NKcKGyuGLdlsfbjEPrIEYdCVrx6hqnJb+xSu3Lzaoo8VnmOhhjNA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dev": true, + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "dev": true, + "dependencies": { + "sver-compat": "^1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shasum-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", + "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "dev": true, + "dependencies": { + "fast-safe-stringify": "^2.0.7" + } + }, + "node_modules/shell-quote": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", + "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dev": true, + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "dev": true, + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "node_modules/stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", + "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", + "dev": true, + "dependencies": { + "minimist": "^1.1.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", + "dev": true, + "dependencies": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "dev": true, + "dependencies": { + "acorn-node": "^1.2.0" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", + "dev": true, + "dependencies": { + "process": "~0.11.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "dev": true, + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", + "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/umd": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", + "dev": true, + "bin": { + "umd": "bin/cli.js" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undeclared-identifiers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", + "dev": true, + "dependencies": { + "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", + "get-assigned-identifiers": "^1.2.0", + "simple-concat": "^1.0.0", + "xtend": "^4.0.1" + }, + "bin": { + "undeclared-identifiers": "bin.js" + } + }, + "node_modules/undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha512-P5zdf3WB9uzr7IFoVQ2wZTmUwHL8cMZWJGzLBNCHNZ3NB6HTMsYABtt7z8tAGIINLXyAob9B9a1yzVGMFOYKEA==", + "dev": true, + "dependencies": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + }, + "engines": { + "node": ">= 0.9" + } + }, + "node_modules/vinyl-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vinyl-buffer/-/vinyl-buffer-1.0.1.tgz", + "integrity": "sha512-LRBE2/g3C1hSHL2k/FynSZcVTRhEw8sb08oKGt/0hukZXwrh2m8nfy+r5yLhGEk7eFFuclhyIuPct/Bxlxk6rg==", + "dev": true, + "dependencies": { + "bl": "^1.2.1", + "through2": "^2.0.3" + } + }, + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/vinyl-fs/node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "node_modules/vinyl-fs/node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs/node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-source-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-2.0.0.tgz", + "integrity": "sha512-Y5f1wRGajOfYukhv8biIGA7iZiY8UOIc3zJ6zcUNIbRG1BVuXzBsfSfe7MUJTttVkuy64k/pGQtJdd/aIt+hbw==", + "dev": true, + "dependencies": { + "through2": "^2.0.3", + "vinyl": "^2.1.0" + } + }, + "node_modules/vinyl-source-stream/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/vinyl-source-stream/node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "node_modules/vinyl-source-stream/node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-source-stream/node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "dev": true, + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/vinyl-sourcemap/node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "node_modules/vinyl-sourcemap/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vinyl-sourcemap/node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap/node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", + "dev": true, + "dependencies": { + "source-map": "^0.5.1" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", + "dev": true + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "node_modules/yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + } + } +} diff --git a/package.json b/package.json index 2cac49f..943db73 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.1.2", "description": "high performance MIDI parser and WAV encoder", "main": "index.js", + "types": "./index.d.ts", "bin": { "synth": "./bin/synth.js" }, @@ -12,11 +13,11 @@ "url": "https://github.com/patrickroberts/synth-js.git" }, "engines": { - "node": ">=6.9.2", - "npm": "^4.0.0" + "node": ">=v6.9.2", + "npm": ">=4.0.0" }, "scripts": { - "prepublishOnly": "gulp" + "prepublishOnly": "gulp & tsc -p ." }, "keywords": [ "wav", @@ -27,17 +28,18 @@ ], "author": "Patrick Roberts", "license": "MIT", - "dependencies": {}, "devDependencies": { - "babel-preset-es2015": "^6.24.1", - "babelify": "^7.3.0", - "browserify": "^14.3.0", - "gulp": "^3.9.1", - "gulp-sourcemaps": "^2.6.0", - "gulp-uglify": "^2.1.2", + "@babel/preset-env": "^7.21.4", + "@types/node": "^18.15.11", + "babelify": "^10.0.0", + "browserify": "^17.0.0", + "gulp": "^4.0.2", + "gulp-sourcemaps": "^3.0.0", + "gulp-uglify": "^3.0.2", "gulp-util": "^3.0.8", - "require-dir": "^0.3.1", - "vinyl-buffer": "^1.0.0", - "vinyl-source-stream": "^1.1.0" + "require-dir": "^1.2.0", + "typescript": "^5.0.3", + "vinyl-buffer": "^1.0.1", + "vinyl-source-stream": "^2.0.0" } } diff --git a/src/midi.d.ts b/src/midi.d.ts new file mode 100644 index 0000000..57da865 --- /dev/null +++ b/src/midi.d.ts @@ -0,0 +1,173 @@ +export = MIDIStream; +declare class MIDIStream { + constructor(buffer: ArrayBufferLike); + data: Uint8Array; + byteOffset: number; + lastEventTypeByte: number; + readString(byteLength: number): string; + readUint32(): number; + readUint24(): number; + readUint16(): number; + readUint8(): number; + readInt8(): number; + readVarUint(): number; + skip(byteLength: number): void; + readChunk(): { + id: string; + length: number; + data: ArrayBufferLike; + }; + readEvent, V extends S extends keyof EventMap[T] ? "value" extends keyof EventMap[T][S] ? EventMap[T][S][keyof EventMap[T][S] & "value"] : never : never = S extends keyof EventMap[T] ? "value" extends keyof EventMap[T][S] ? EventMap[T][S][keyof EventMap[T][S] & "value"] : never : never, E extends S extends keyof EventMap[T] ? Omit : {} = S extends keyof EventMap[T] ? Omit : {}>(): Event; +} +declare namespace MIDIStream { + export { EventMap, MetaEvent, SysExEvent, DividedSysExEvent, UnknownEvent, ChannelEvent, Event }; +} +type EventMap = { + meta: MetaEvent; + sysEx: SysExEvent; + dividedSysEx: DividedSysExEvent; + unknown: UnknownEvent; + channel: ChannelEvent; +}; +type Event | undefined = undefined, V extends S extends keyof EventMap[T] ? "value" extends keyof EventMap[T][S] ? EventMap[T][S]["value"] : never : never = S extends keyof EventMap[T] ? "value" extends keyof EventMap[T][S] ? EventMap[T][S]["value"] : never : never, E extends S extends keyof EventMap[T] ? Omit : {} = S extends keyof EventMap[T] ? Omit : {}> = { + delta: number; + subType: S; + type: T; + value: any; +} & E; +type MetaEvent = { + sequenceNumber: { + value: number; + }; + text: { + value: string; + }; + copyrightNotice: { + value: string; + }; + trackName: { + value: string; + }; + instrumentName: { + value: string; + }; + lyrics: { + value: string; + }; + marker: { + value: string; + }; + cuePoint: { + value: string; + }; + midiChannelPrefix: { + value: number | undefined; + }; + endOfTrack: { + value: undefined; + }; + setTempo: { + value: number | undefined; + }; + smpteOffset: { + value: { + frameRate: number; + hour: number; + minute: number; + second: number; + frame: number; + subFrame: number; + } | undefined; + }; + timeSignature: { + value: { + numerator: number; + denominator: number; + metronome: number; + thirtyseconds: number; + } | undefined; + }; + keySignature: { + value: { + key: number; + scale: number; + } | undefined; + }; + sequencerSpecific: { + value: number; + }; + unknown: { + value: number; + }; +}; +type SysExEvent = { + [x: string]: { + value: string; + }; + [x: number]: { + value: string; + }; + [x: symbol]: { + value: string; + }; +}; +type DividedSysExEvent = { + [x: string]: { + value: string; + }; + [x: number]: { + value: string; + }; + [x: symbol]: { + value: string; + }; +}; +type UnknownEvent = { + unknown: { + value: string; + }; +}; +type ChannelEvent = { + noteOff: { + channel: number; + value: { + noteNumber: number; + }; + }; + noteOn: { + channel: number; + value: { + noteNumber: number; + }; + }; + noteAftertouch: { + channel: number; + value: { + noteNumber: number; + amount: number; + }; + }; + controller: { + channel: number; + value: { + controllerNumber: number; + controllerValue: number; + }; + }; + programChange: { + channel: number; + value: number; + }; + channelAftertouch: { + channel: number; + value: number; + }; + pitchBend: { + channel: number; + value: number; + }; + unknown: { + channel: number; + value: number; + }; +}; diff --git a/src/midi.js b/src/midi.js index 66a7349..8b88463 100644 --- a/src/midi.js +++ b/src/midi.js @@ -1,16 +1,24 @@ 'use strict'; class MIDIStream { + /** + * @param {ArrayBufferLike} buffer + */ constructor(buffer) { this.data = new Uint8Array(buffer); this.byteOffset = 0; this.lastEventTypeByte = 0x00; } + /** + * @param {number} byteLength + * @returns {string} + */ readString(byteLength) { - var byteOffset = this.byteOffset; + const byteOffset = this.byteOffset; + let str = ''; - for (var i = 0, str = ''; i < byteLength; i++) { + for (let i = 0; i < byteLength; i++) { str += String.fromCharCode(this.data[byteOffset + i]); } @@ -20,8 +28,8 @@ class MIDIStream { } readUint32() { - var byteOffset = this.byteOffset; - var value = ( + const byteOffset = this.byteOffset; + const value = ( (this.data[byteOffset ] << 24) | (this.data[byteOffset + 1] << 16) | (this.data[byteOffset + 2] << 8) | @@ -34,8 +42,8 @@ class MIDIStream { } readUint24() { - var byteOffset = this.byteOffset; - var value = ( + const byteOffset = this.byteOffset; + const value = ( (this.data[byteOffset ] << 16) | (this.data[byteOffset + 1] << 8) | (this.data[byteOffset + 2] ) @@ -47,8 +55,8 @@ class MIDIStream { } readUint16() { - var byteOffset = this.byteOffset; - var value = ( + const byteOffset = this.byteOffset; + const value = ( (this.data[byteOffset ] << 8) | (this.data[byteOffset + 1] ) ); @@ -59,8 +67,8 @@ class MIDIStream { } readUint8() { - var byteOffset = this.byteOffset; - var value = this.data[byteOffset]; + const byteOffset = this.byteOffset; + const value = this.data[byteOffset]; this.byteOffset += 1; @@ -68,10 +76,10 @@ class MIDIStream { } readInt8() { - var byteOffset = this.byteOffset; - var value = this.data[byteOffset]; + const byteOffset = this.byteOffset; + let value = this.data[byteOffset]; - if (value & 0x80 === 0x80) { + if ((value & 0x80) === 0x80) { value ^= 0xFFFFFF00; } @@ -81,8 +89,8 @@ class MIDIStream { } readVarUint() { - var value = 0; - var uint8; + let value = 0; + let uint8; do { uint8 = this.readUint8(); @@ -92,18 +100,21 @@ class MIDIStream { return value; } + /** + * @param {number} byteLength + */ skip(byteLength) { this.byteOffset += byteLength; } readChunk() { - var id = this.readString(4); - var length = this.readUint32(); - var byteOffset = this.byteOffset; + const id = this.readString(4); + const length = this.readUint32(); + const byteOffset = this.byteOffset; this.byteOffset += length; - var data = this.data.slice(byteOffset, this.byteOffset); + const data = this.data.slice(byteOffset, this.byteOffset); return { id: id, @@ -112,82 +123,93 @@ class MIDIStream { }; } + /** + * @template {keyof EventMap} T + * @template {EventMap[T] extends undefined ? never : Exclude} S + * @template {S extends keyof EventMap[T] ? ("value" extends keyof EventMap[T][S] ? EventMap[T][S]["value"] : never) : never} [V=S extends keyof EventMap[T] ? ("value" extends keyof EventMap[T][S] ? EventMap[T][S]["value"] : never) : never] + * @template {S extends keyof EventMap[T] ? Omit : {}} [E = S extends keyof EventMap[T] ? Omit : {}] + * @returns {Event} + */ readEvent() { - var event = {}; + /** @type {Event} */ + const event = {}; event.delta = this.readVarUint(); - var eventTypeByte = this.readUint8(); + let eventTypeByte = this.readUint8(); // system event if ((eventTypeByte & 0xF0) === 0xF0) { switch (eventTypeByte) { // meta event case 0xFF: - event.type = 'meta'; + /** @type {Event<"meta", keyof MetaEvent, any, {}>} */ + // @ts-expect-error + const meta = event; + meta.type = "meta"; - var subTypeByte = this.readUint8(); - var length = this.readVarUint(); + const subTypeByte = this.readUint8(); + let length = this.readVarUint(); switch (subTypeByte) { case 0x00: - event.subType = 'sequenceNumber'; + meta.subType = 'sequenceNumber'; if (length === 2) event.value = this.readUint16(); else this.skip(length); break; case 0x01: - event.subType = 'text'; + meta.subType = 'text'; event.value = this.readString(length); break; case 0x02: - event.subType = 'copyrightNotice'; + meta.subType = 'copyrightNotice'; event.value = this.readString(length); break; case 0x03: - event.subType = 'trackName'; + meta.subType = 'trackName'; event.value = this.readString(length); break; case 0x04: - event.subType = 'instrumentName'; + meta.subType = 'instrumentName'; event.value = this.readString(length); break; case 0x05: - event.subType = 'lyrics'; + meta.subType = 'lyrics'; event.value = this.readString(length); break; case 0x06: - event.subType = 'marker'; + meta.subType = 'marker'; event.value = this.readString(length); break; case 0x07: - event.subType = 'cuePoint'; + meta.subType = 'cuePoint'; event.value = this.readString(length); break; case 0x20: - event.subType = 'midiChannelPrefix'; + meta.subType = 'midiChannelPrefix'; if (length === 1) event.value = this.readUint8(); else this.skip(length); break; case 0x2F: - event.subType = 'endOfTrack'; + meta.subType = 'endOfTrack'; if (length > 0) this.skip(length); break; case 0x51: - event.subType = 'setTempo'; + meta.subType = 'setTempo'; if (length === 3) event.value = this.readUint24(); else this.skip(length) break; case 0x54: - event.subType = 'smpteOffset'; + meta.subType = 'smpteOffset'; if (length === 5) { - var hourByte = this.readUint8(); + const hourByte = this.readUint8(); event.value = { frameRate: ({ 0x00: 24, @@ -206,7 +228,7 @@ class MIDIStream { } break; case 0x58: - event.subType = 'timeSignature'; + meta.subType = 'timeSignature'; if (length === 4) { event.value = { numerator: this.readUint8(), @@ -219,7 +241,7 @@ class MIDIStream { } break; case 0x59: - event.subType = 'keySignature'; + meta.subType = 'keySignature'; if (length === 2) { event.value = { key: this.readInt8(), @@ -230,41 +252,51 @@ class MIDIStream { } break; case 0x7F: - event.subType = 'sequencerSpecific'; + meta.subType = 'sequencerSpecific'; event.value = this.readString(length); break; default: - event.subType = 'unknown'; + meta.subType = 'unknown'; event.value = this.readString(length); } break; // sysex event case 0xF0: - event.type = 'sysEx'; + /** @type {Event<"sysEx", Exclude, any, {}>} */ + // @ts-expect-error + const sysex = event; + sysex.type = 'sysEx'; - var length = this.readVarUint(); + length = this.readVarUint(); event.value = this.readString(length); break; case 0xF7: - event.type = 'dividedSysEx'; + /** @type {Event<"dividedSysEx", Exclude, any, {}>} */ + // @ts-expect-error + const divsysex = event; + divsysex.type = 'dividedSysEx'; - var length = this.readVarUint(); + length = this.readVarUint(); event.value = this.readString(length); break; default: - event.type = 'unknown'; + /** @type {Event<"unknown", Exclude, any, {}>} */ + // @ts-expect-error + const unk = event; + unk.type = 'unknown'; + unk.subType = "unknown"; - var length = this.readVarUint(); + length = this.readVarUint(); event.value = this.readString(length); } // channel event } else { - var param; + let param; // if the high bit is low // use running event type mode @@ -276,14 +308,17 @@ class MIDIStream { this.lastEventTypeByte = eventTypeByte; } - var eventType = eventTypeByte >> 4; + const eventType = eventTypeByte >> 4; - event.channel = eventTypeByte & 0x0F; - event.type = 'channel'; + /** @type {Event<"channel", keyof ChannelEvent, any, { channel: number; }>} */ + // @ts-expect-error + const chan = event; + chan.channel = eventTypeByte & 0x0F; + chan.type = 'channel'; switch (eventType) { case 0x08: - event.subType = 'noteOff'; + chan.subType = 'noteOff'; event.value = { noteNumber: param, @@ -299,13 +334,13 @@ class MIDIStream { // some midi implementations use a noteOn // event with 0 velocity to denote noteOff if (event.value.velocity === 0) { - event.subType = 'noteOff'; + chan.subType = 'noteOff'; } else { - event.subType = 'noteOn'; + chan.subType = 'noteOn'; } break; case 0x0A: - event.subType = 'noteAftertouch'; + chan.subType = 'noteAftertouch'; event.value = { noteNumber: param, @@ -313,7 +348,7 @@ class MIDIStream { }; break; case 0x0B: - event.subType = 'controller'; + chan.subType = 'controller'; event.value = { controllerNumber: param, @@ -321,19 +356,19 @@ class MIDIStream { }; break; case 0x0C: - event.subType = 'programChange'; + chan.subType = 'programChange'; event.value = param; break; case 0x0D: - event.subType = 'channelAftertouch'; + chan.subType = 'channelAftertouch'; event.value = param; break; case 0x0E: - event.subType = 'pitchBend'; + chan.subType = 'pitchBend'; event.value = param + (this.readUint8() << 7); break; default: - event.subType = 'unknown'; + chan.subType = 'unknown'; event.value = (param << 8) + this.readUint8(); } } @@ -342,4 +377,65 @@ class MIDIStream { } }; +/** + * @typedef {Object} EventMap + * @property {MetaEvent} meta + * @property {SysExEvent} sysEx + * @property {DividedSysExEvent} dividedSysEx + * @property {UnknownEvent} unknown + * @property {ChannelEvent} channel + */ + +/** + * @typedef {Object} MetaEvent + * @property {{ value: number; }} sequenceNumber + * @property {{ value: string; }} text + * @property {{ value: string; }} copyrightNotice + * @property {{ value: string; }} trackName + * @property {{ value: string; }} instrumentName + * @property {{ value: string; }} lyrics + * @property {{ value: string; }} marker + * @property {{ value: string; }} cuePoint + * @property {{ value: number | undefined; }} midiChannelPrefix + * @property {{ value: undefined; }} endOfTrack + * @property {{ value: number | undefined; }} setTempo + * @property {{ value: { frameRate: number; hour: number; minute: number; second: number; frame: number; subFrame: number; } | undefined; }} smpteOffset + * @property {{ value: { numerator: number; denominator: number; metronome: number; thirtyseconds: number; } | undefined; }} timeSignature + * @property {{ value: { key: number; scale: number; } | undefined; }} keySignature + * @property {{ value: number; }} sequencerSpecific + * @property {{ value: number; }} unknown + */ + +/** + * @typedef {{ [K in any]: { value: string; }; }} SysExEvent + */ + +/** + * @typedef {{ [K in any]: { value: string; }; }} DividedSysExEvent + */ + +/** + * @typedef {{ unknown: { value: string; }; }} UnknownEvent + */ + +/** + * @typedef {Object} ChannelEvent + * @property {{ channel: number; value: { noteNumber: number; } }} noteOff + * @property {{ channel: number; value: { noteNumber: number; } }} noteOn + * @property {{ channel: number; value: { noteNumber: number; amount: number; } }} noteAftertouch + * @property {{ channel: number; value: { controllerNumber: number; controllerValue: number; } }} controller + * @property {{ channel: number; value: number; }} programChange + * @property {{ channel: number; value: number; }} channelAftertouch + * @property {{ channel: number; value: number; }} pitchBend + * @property {{ channel: number; value: number; }} unknown + */ + +/** + * @template {keyof EventMap} [T=keyof EventMap] + * @template {Exclude | undefined} [S=undefined] + * @template {S extends keyof EventMap[T] ? ("value" extends keyof EventMap[T][S] ? EventMap[T][S]["value"] : never) : never} [V=S extends keyof EventMap[T] ? ("value" extends keyof EventMap[T][S] ? EventMap[T][S]["value"] : never) : never] + * @template {S extends keyof EventMap[T] ? Omit : {}} [E = S extends keyof EventMap[T] ? Omit : {}] + * @typedef {{ delta: number; subType: S; type: T; value: any } & E} Event + */ + module.exports = MIDIStream; diff --git a/src/midi2wav.d.ts b/src/midi2wav.d.ts new file mode 100644 index 0000000..982de44 --- /dev/null +++ b/src/midi2wav.d.ts @@ -0,0 +1,13 @@ +declare function _exports, V extends S extends keyof MIDIStream.EventMap[T] ? "value" extends keyof MIDIStream.EventMap[T][S] ? MIDIStream.EventMap[T][S]["value"] : never : never = S extends keyof MIDIStream.EventMap[T] ? "value" extends keyof MIDIStream.EventMap[T][S] ? MIDIStream.EventMap[T][S]["value"] : never : never, E extends S extends keyof MIDIStream.EventMap[T] ? Omit : {} = S extends keyof MIDIStream.EventMap[T] ? Omit : {}>(buffer: ArrayBufferLike, args?: { + verbose?: boolean | undefined; + Skip?: { + [subType: string]: string; + }[] | ((track: MIDIStream.Event[]) => boolean) | undefined; + channels?: number | undefined; + sampleRate?: number | undefined; + bitsPerSample?: number | undefined; + duration?: number | undefined; +}): WAV | null; +export = _exports; +import MIDIStream = require("./midi"); +import WAV = require("./wav"); diff --git a/src/midi2wav.js b/src/midi2wav.js index ffb205b..928847e 100644 --- a/src/midi2wav.js +++ b/src/midi2wav.js @@ -4,6 +4,15 @@ const WAV = require('./wav'); const MIDIStream = require('./midi'); const Timer = require('./utils/timer'); +/** + * @template {keyof MIDIStream.EventMap} T + * @template {MIDIStream.EventMap[T] extends undefined ? never : Exclude} S + * @template {S extends keyof MIDIStream.EventMap[T] ? ("value" extends keyof MIDIStream.EventMap[T][S] ? MIDIStream.EventMap[T][S]["value"] : never) : never} [V=S extends keyof MIDIStream.EventMap[T] ? ("value" extends keyof MIDIStream.EventMap[T][S] ? MIDIStream.EventMap[T][S]["value"] : never) : never] + * @template {S extends keyof MIDIStream.EventMap[T] ? Omit : {}} [E = S extends keyof MIDIStream.EventMap[T] ? Omit : {}] + * @param {ArrayBufferLike} buffer + * @param {{ verbose?: boolean; Skip?: Array<{ [subType: string]: string }> | ((track: Array>) => boolean); channels?: number; sampleRate?: number; bitsPerSample?: number; duration?: number; }} args + * @returns {WAV | null} + */ module.exports = function midiToWav(buffer, args = {}) { if (args.verbose) { console.log('parsing MIDI header...'); @@ -17,7 +26,6 @@ module.exports = function midiToWav(buffer, args = {}) { } const headerStream = new MIDIStream(header.data); - const formatType = headerStream.readUint16(); const trackCount = headerStream.readUint16(); const timeDivision = headerStream.readUint16(); const tracks = []; @@ -37,11 +45,13 @@ module.exports = function midiToWav(buffer, args = {}) { } const trackStream = new MIDIStream(trackChunk.data); + /** @type {Array>} */ const track = []; let keep = true; // determine whether applied filter will remove the current track while populating it while (keep && trackStream.byteOffset < trackChunk.length) { + /** @type {MIDIStream.Event} */ let event = trackStream.readEvent(); track.push(event); @@ -51,8 +61,8 @@ module.exports = function midiToWav(buffer, args = {}) { } if (Array.isArray(args.Skip)) { - for (let t = 0; t < args.Skip.length; t++) { - if (args.Skip[t][event.subType] === event.value) { + for (const element of args.Skip) { + if (element[event.subType] === event.value) { if (args.verbose) { console.log(`skip match found: {"${event.subType}":"${event.value}"}`); } @@ -106,8 +116,8 @@ module.exports = function midiToWav(buffer, args = {}) { let delta = 0; let map = new Map(); - for (let j = 0; j < track.length; j++) { - let event = track[j]; + for (const element of track) { + let event = element; delta += event.delta; if (event.type === 'channel') { @@ -153,7 +163,7 @@ module.exports = function midiToWav(buffer, args = {}) { } events.sort(function (a, b) { - return a.delta - b.delta || a.note - b.note; + return a.delta - b.delta || Number(a.note) - Number(b.note); }); if (args.verbose) { diff --git a/src/utils/timer.d.ts b/src/utils/timer.d.ts new file mode 100644 index 0000000..8985811 --- /dev/null +++ b/src/utils/timer.d.ts @@ -0,0 +1,11 @@ +export = Timer; +declare class Timer { + constructor(ticksPerBeat: number); + ticksPerBeat: number; + criticalPoints: { + delta: number; + microsecondsPerBeat: number; + }[]; + addCriticalPoint(delta: number, microsecondsPerBeat: number): void; + getTime(delta: number): number; +} diff --git a/src/utils/timer.js b/src/utils/timer.js index a217290..b1db308 100644 --- a/src/utils/timer.js +++ b/src/utils/timer.js @@ -1,14 +1,24 @@ 'use strict'; -// utility class to calculate time from delta ticks -// when MIDI file has several `setTempo` events +/** + * utility class to calculate time from delta ticks + * when MIDI file has several `setTempo` events + */ class Timer { + /** + * @param {number} ticksPerBeat + */ constructor(ticksPerBeat) { this.ticksPerBeat = ticksPerBeat; + /** @type {Array<{ delta: number; microsecondsPerBeat: number; }>} */ this.criticalPoints = []; } - // delta represents ticks since last time change + /** + * delta represents ticks since last time change + * @param {number} delta + * @param {number} microsecondsPerBeat + */ addCriticalPoint(delta, microsecondsPerBeat) { this.criticalPoints.push({ delta, @@ -16,6 +26,9 @@ class Timer { }); } + /** + * @param {number} delta + */ getTime(delta) { const microsecondsPerSecond = 1000000; let time = 0; diff --git a/src/wav.d.ts b/src/wav.d.ts new file mode 100644 index 0000000..9f28462 --- /dev/null +++ b/src/wav.d.ts @@ -0,0 +1,56 @@ +export = WAV; +declare class WAV { + static semitone(note?: string): number; + static note(semitone?: number): string; + static frequency(semitone?: number): number; + constructor(numChannels?: number, sampleRate?: number, bitsPerSample?: number, littleEndian?: boolean, data?: Array); + header: ArrayBuffer; + view: DataView; + data: Array; + pointer: number; + set ChunkID(arg: string); + get ChunkID(): string; + set ChunkSize(arg: number); + get ChunkSize(): number; + set Format(arg: string); + get Format(): string; + set SubChunk1ID(arg: string); + get SubChunk1ID(): string; + set SubChunk1Size(arg: number); + get SubChunk1Size(): number; + set AudioFormat(arg: number); + get AudioFormat(): number; + set NumChannels(arg: number); + get NumChannels(): number; + set SampleRate(arg: number); + get SampleRate(): number; + set ByteRate(arg: number); + get ByteRate(): number; + set BlockAlign(arg: number); + get BlockAlign(): number; + set BitsPerSample(arg: number); + get BitsPerSample(): number; + set SubChunk2ID(arg: string); + get SubChunk2ID(): string; + set SubChunk2Size(arg: number); + get SubChunk2Size(): number; + littleEndian: boolean; + setString(str: string, byteLength?: number, byteOffset?: number): void; + getString(byteLength: number, byteOffset?: number): string; + get typedData(): ArrayBuffer; + toBlob(): Blob; + toBuffer(): Buffer; + tell(): number; + seek(time: number, fill?: boolean): void; + writeNote({ note, time, amplitude }: { + note: string; + time: number; + amplitude?: number; + }, channels?: Array, blend?: boolean, reset?: boolean): void; + writeProgression(notes: Array<{ + note: string; + time: number; + amplitude?: number; + offset?: number; + }>, amplitude?: number, channels?: Array, blend?: boolean, reset?: boolean, relativeDuration?: number): void; +} diff --git a/src/wav.js b/src/wav.js index 9437457..261b52b 100644 --- a/src/wav.js +++ b/src/wav.js @@ -1,11 +1,17 @@ 'use strict'; +// matches occurence of A through G +// followed by positive or negative integer +// followed by 0 to 2 occurences of flat or sharp +const re = /^([A-G])(\-?\d+)(b{0,2}|#{0,2})$/; + class WAV { + /** + * + * @param {string} note + * @returns {number} + */ static semitone(note = 'REST') { - // matches occurence of A through G - // followed by positive or negative integer - // followed by 0 to 2 occurences of flat or sharp - const re = /^([A-G])(\-?\d+)(b{0,2}|#{0,2})$/; // if semitone is unrecognized, assume REST if (!re.test(note)) { @@ -13,7 +19,7 @@ class WAV { } // parse substrings of note - const [, tone, octave, accidental] = note.match(re); + const [, tone, octave, accidental] = note.match(re) || []; // semitone indexed relative to A4 == 69 for compatibility with MIDI const tones = {C: 0, D: 2, E: 4, F: 5, G: 7, A: 9, B: 11}; @@ -48,19 +54,32 @@ class WAV { return tone.charAt(0) + octave.toString() + tone.charAt(1); } - // converts semitone index to frequency in Hz + /** + * converts semitone index to frequency in Hz + * @param {number} semitone + */ static frequency(semitone = -Infinity) { // A4 is 440 Hz, 12 semitones per octave return 440 * Math.pow(2, (semitone - 69) / 12); } + /** + * @param {number} numChannels + * @param {number} sampleRate + * @param {number} bitsPerSample + * @param {boolean} littleEndian + * @param {Array} data + */ constructor(numChannels = 1, sampleRate = 44100, bitsPerSample = 16, littleEndian = true, data = []) { - var bytesPerSample = bitsPerSample >>> 3; + const bytesPerSample = bitsPerSample >>> 3; // WAV header is always 44 bytes + /** @type {ArrayBuffer} */ this.header = new ArrayBuffer(44); // flexible container for reading / writing raw bytes in header + /** @type {DataView} */ this.view = new DataView(this.header); // leave sound data as non typed array for more flexibility + /** @type {Array} */ this.data = data; // initialize as non-configurable because it @@ -90,18 +109,31 @@ class WAV { this.BitsPerSample = bitsPerSample; this.SubChunk2ID = 'data'; this.SubChunk2Size = data.length * bytesPerSample; + /** @type {boolean} */ + // @ts-expect-error + this.littleEndian; } - // internal setter for writing strings as raw bytes to header + /** + * internal setter for writing strings as raw bytes to header + * @param {string} str + * @param {number} byteLength + * @param {number} byteOffset + */ setString(str, byteLength = str.length, byteOffset = 0) { - for (var i = 0; i < byteLength; i++) { + for (let i = 0; i < byteLength; i++) { this.view.setUint8(byteOffset + i, str.charCodeAt(i)); } } - // internal getter for reading raw bytes as strings from header + /** + * internal getter for reading raw bytes as strings from header + * @param {number} byteLength + * @param {number} byteOffset + */ getString(byteLength, byteOffset = 0) { - for (var i = 0, str = ''; i < byteLength; i++) { + let str = ''; + for (let i = 0; i < byteLength; i++) { str += String.fromCharCode(this.view.getUint8(byteOffset + i)); } @@ -110,7 +142,9 @@ class WAV { // header property mutators - // 4 bytes at offset of 0 bytes + /** + * 4 bytes at offset of 0 bytes + */ set ChunkID(str) { this.setString(str, 4, 0); } @@ -119,7 +153,9 @@ class WAV { return this.getString(4, 0); } - // 4 bytes at offset of 4 bytes + /** + * 4 bytes at offset of 4 bytes + */ set ChunkSize(uint) { this.view.setUint32(4, uint, this.littleEndian); } @@ -128,7 +164,9 @@ class WAV { return this.view.getUint32(4, this.littleEndian); } - // 4 bytes at offset of 8 bytes + /** + * 4 bytes at offset of 8 bytes + */ set Format(str) { this.setString(str, 4, 8); } @@ -137,7 +175,9 @@ class WAV { return this.getString(4, 8); } - // 4 bytes at offset of 12 bytes + /** + * 4 bytes at offset of 12 bytes + */ set SubChunk1ID(str) { this.setString(str, 4, 12); } @@ -146,7 +186,9 @@ class WAV { return this.getString(4, 12); } - // 4 bytes at offset of 16 bytes + /** + * 4 bytes at offset of 16 bytes + */ set SubChunk1Size(uint) { this.view.setUint32(16, uint, this.littleEndian); } @@ -155,7 +197,9 @@ class WAV { return this.view.getUint32(16, this.littleEndian); } - // 2 bytes at offset of 20 bytes + /** + * 2 bytes at offset of 20 bytes + */ set AudioFormat(uint) { this.view.setUint16(20, uint, this.littleEndian); } @@ -164,7 +208,9 @@ class WAV { return this.view.getUint16(20, this.littleEndian); } - // 2 bytes at offset of 22 bytes + /** + * 2 bytes at offset of 22 bytes + */ set NumChannels(uint) { this.view.setUint16(22, uint, this.littleEndian); } @@ -173,7 +219,9 @@ class WAV { return this.view.getUint16(22, this.littleEndian); } - // 4 bytes at offset of 24 bytes + /** + * 4 bytes at offset of 24 bytes + */ set SampleRate(uint) { this.view.setUint32(24, uint, this.littleEndian); } @@ -182,7 +230,9 @@ class WAV { return this.view.getUint32(24, this.littleEndian); } - // 4 bytes at offset of 28 bytes + /** + * 4 bytes at offset of 28 bytes + */ set ByteRate(uint) { this.view.setUint32(28, uint, this.littleEndian); } @@ -191,7 +241,9 @@ class WAV { return this.view.getUint32(28, this.littleEndian); } - // 2 bytes at offset of 32 bytes + /** + * 2 bytes at offset of 32 bytes + */ set BlockAlign(uint) { this.view.setUint16(32, uint, this.littleEndian); } @@ -200,7 +252,9 @@ class WAV { return this.view.getUint16(32, this.littleEndian); } - // 2 bytes at offset of 34 bytes + /** + * 2 bytes at offset of 34 bytes + */ set BitsPerSample(uint) { this.view.setUint16(34, uint, this.littleEndian); } @@ -209,7 +263,9 @@ class WAV { return this.view.getUint16(34, this.littleEndian); } - // 4 bytes at offset of 36 bytes + /** + * 4 bytes at offset of 36 bytes + */ set SubChunk2ID(str) { this.setString(str, 4, 36); } @@ -218,7 +274,9 @@ class WAV { return this.getString(4, 36); } - // 4 bytes at offset of 40 bytes + /** + * 4 bytes at offset of 40 bytes + */ set SubChunk2Size(uint) { this.view.setUint32(40, uint, this.littleEndian); } @@ -227,20 +285,22 @@ class WAV { return this.view.getUint32(40, this.littleEndian); } - // internal getter for sound data as - // typed array based on header properties + /** + * internal getter for sound data as + * typed array based on header properties + */ get typedData() { - var bytesPerSample = this.BitsPerSample >>> 3; - var data = this.data; - var size = this.SubChunk2Size; - var samples = size / bytesPerSample; - var buffer = new ArrayBuffer(size); - var uint8 = new Uint8Array(buffer); + const bytesPerSample = this.BitsPerSample >>> 3; + const data = this.data; + const size = this.SubChunk2Size; + const samples = size / bytesPerSample; + const buffer = new ArrayBuffer(size); + const uint8 = new Uint8Array(buffer); // convert signed normalized sound data to typed integer data // i.e. [-1, 1] -> [INT_MIN, INT_MAX] - var amplitude = Math.pow(2, (bytesPerSample << 3) - 1) - 1; - var i, d; + const amplitude = Math.pow(2, (bytesPerSample << 3) - 1) - 1; + let i, d; switch (bytesPerSample) { case 1: @@ -300,6 +360,7 @@ class WAV { uint8[i * 3 + 2] = (d ) & 0xFF; } } + break; case 4: // LSB first if (this.littleEndian) { @@ -333,30 +394,43 @@ class WAV { // binary container outputs - // browser-specific - // generates blob from concatenated typed arrays + /** + * browser-specific + * + * generates blob from concatenated typed arrays + */ toBlob() { return new Blob([this.header, this.typedData], {type: 'audio/wav'}); } - // Node.js-specific - // generates buffer from concatenated typed arrays + /** + * Node.js-specific + * + * generates buffer from concatenated typed arrays + */ toBuffer() { return Buffer.concat([Buffer.from(this.header), Buffer.from(this.typedData)]); } // pointer mutators - // gets time (in seconds) of pointer + /** + * gets time (in seconds) of pointer + */ tell() { return this.pointer / this.NumChannels / this.SampleRate; } - // sets time (in seconds) of pointer - // zero-fills by default + /** + * sets time (in seconds) of pointer + * + * zero-fills by default + * @param {number} time + * @param {boolean} fill + */ seek(time, fill = true) { - var data = this.data; - var sample = Math.round(this.SampleRate * time); + const data = this.data; + const sample = Math.round(this.SampleRate * time); this.pointer = this.NumChannels * sample; @@ -372,45 +446,50 @@ class WAV { // sound data mutators - // writes the specified note to the sound data - // for amount of time in seconds - // at given normalized amplitude - // to channels listed (or all by default) - // adds to existing data by default - // and does not reset write index after operation by default + /** + * writes the specified note to the sound data + * for amount of time in seconds + * at given normalized amplitude + * to channels listed (or all by default) + * adds to existing data by default + * and does not reset write index after operation by default + * @param {{ note: string; time: number; amplitude?: number; }} param0 + * @param {Array} channels + * @param {boolean} blend + * @param {boolean} reset + */ writeNote({note, time, amplitude = 1}, channels = [], blend = true, reset = false) { // creating local references to properties - var data = this.data; - var numChannels = this.NumChannels; - var sampleRate = this.SampleRate; + const data = this.data; + const numChannels = this.NumChannels; + const sampleRate = this.SampleRate; // to prevent sound artifacts const fadeSeconds = 0.001; // calculating properties of given note - var semitone = WAV.semitone(note); - var frequency = WAV.frequency(semitone) * Math.PI * 2 / sampleRate; - var period = Math.PI * 2 / frequency; + const semitone = WAV.semitone(note); + const frequency = WAV.frequency(semitone) * Math.PI * 2 / sampleRate; // amount of blocks to be written - var blocksOut = Math.round(sampleRate * time); + const blocksOut = Math.round(sampleRate * time); // reduces sound artifacts by fading at last fadeSeconds - var nonZero = blocksOut - sampleRate * fadeSeconds; + const nonZero = blocksOut - sampleRate * fadeSeconds; // fade interval in samples - var fade = blocksOut - nonZero + 1; + const fade = blocksOut - nonZero + 1; // index of start and stop samples - var start = this.pointer; - var stop = data.length; + const start = this.pointer; + const stop = data.length; // determines amount of blocks to be updated - var blocksIn = Math.min(Math.floor((stop - start) / numChannels), blocksOut); + const blocksIn = Math.min(Math.floor((stop - start) / numChannels), blocksOut); // i = index of each sample block // j = index of each channel in a block // k = cached index of data // d = sample data value - var i, j, k, d; + let i, j, k, d; // by default write to all channels if (channels.length === 0) { @@ -423,7 +502,8 @@ class WAV { } // inline .indexOf() function calls into array references - var skipChannel = []; + /** @type {Array} */ + const skipChannel = []; for (i = 0; i < numChannels; i++) { skipChannel[i] = (channels.indexOf(i) === -1); @@ -462,7 +542,7 @@ class WAV { } // update header properties - var end = Math.max(start + blocksOut * numChannels, stop) * this.BitsPerSample >>> 3; + const end = Math.max(start + blocksOut * numChannels, stop) * this.BitsPerSample >>> 3; this.ChunkSize = end + this.header.byteLength - 8; this.SubChunk2Size = end; @@ -473,14 +553,22 @@ class WAV { } } - // adds specified notes in series - // (or asynchronously if offset property is specified in a note) - // each playing for time * relativeDuration seconds - // followed by a time * (1 - relativeDuration) second rest + /** + * adds specified notes in series + * (or asynchronously if offset property is specified in a note) + * each playing for time * relativeDuration seconds + * followed by a time * (1 - relativeDuration) second rest + * @param {Array<{ note: string; time: number; amplitude?: number; offset?: number; }>} notes + * @param {number} amplitude + * @param {Array} channels + * @param {boolean} blend + * @param {boolean} reset + * @param {number} relativeDuration + */ writeProgression(notes, amplitude = 1, channels = [], blend = true, reset = false, relativeDuration = 1) { - var start = this.pointer; + const start = this.pointer; - for (var i = 0, note, time, amp, off, secs, rest; i < notes.length; i++) { + for (let i = 0, note, time, amp, off, secs, rest; i < notes.length; i++) { ({note, time, amplitude: amp, offset: off} = notes[i]); // for asynchronous progression diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..46a567c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "declaration": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "incremental": false, + "lib": ["es2015", "dom"], + "module": "CommonJS", + "moduleResolution": "node", + "noUnusedLocals": false, + "pretty": true, + "removeComments": false, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": false, + "strictFunctionTypes": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "target": "ES2015", + "outDir": "./", + "emitDeclarationOnly": true, + "types": ["node"] + }, + "include": ["./index.js"], + "exclude": [] +}