diff --git a/bin/asc.js b/bin/asc.js index a15bcc2b..d61169bf 100644 --- a/bin/asc.js +++ b/bin/asc.js @@ -19,7 +19,7 @@ try { assemblyscript = require("../src"); isDev = true; } catch (e) { - // last resort: browser bundle under node (relative to 'dist/') + // last resort: same directory CommonJS assemblyscript = require("./assemblyscript"); isDev = false; } diff --git a/dist/asc.js b/dist/asc.js index 2049355a..4940d3e2 100644 --- a/dist/asc.js +++ b/dist/asc.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("./assemblyscript"),function(){try{return require("assemblyscript")}catch(e){}}()):"function"==typeof define&&define.amd?define([,"assemblyscript"],n):"object"==typeof exports?exports.asc=n(require("./assemblyscript"),function(){try{return require("assemblyscript")}catch(e){}}()):e.asc=n(e[void 0],e._)}(window,function(e,n){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=15)}([function(e,n,t){var r,i;n.nextTick=function(e){setTimeout(e,0)},n.platform=n.arch=n.execPath=n.title="browser",n.pid=1,n.browser=!0,n.env={},n.argv=[],n.binding=function(e){throw new Error("No such module. (Possibly not yet loaded)")},i="/",n.cwd=function(){return i},n.chdir=function(e){r||(r=t(2)),i=r.resolve(e,i)},n.exit=n.kill=n.umask=n.dlopen=n.uptime=n.memoryUsage=n.uvCounters=function(){},n.features={}},function(e,n){var t;t=function(){return this}();try{t=t||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,n,t){(function(e){function t(e,n){for(var t=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),t++):t&&(e.splice(r,1),t--)}if(n)for(;t--;t)e.unshift("..");return e}var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,i=function(e){return r.exec(e).slice(1)};function o(e,n){if(e.filter)return e.filter(n);for(var t=[],r=0;r=-1&&!r;i--){var s=i>=0?arguments[i]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(n=s+"/"+n,r="/"===s.charAt(0))}return n=t(o(n.split("/"),function(e){return!!e}),!r).join("/"),(r?"/":"")+n||"."},n.normalize=function(e){var r=n.isAbsolute(e),i="/"===s(e,-1);return(e=t(o(e.split("/"),function(e){return!!e}),!r).join("/"))||r||(e="."),e&&i&&(e+="/"),(r?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(o(e,function(e,n){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var n=0;n=0&&""===e[t];t--);return n>t?[]:e.slice(n,t-n+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),o=r(t.split("/")),s=Math.min(i.length,o.length),a=s,l=0;l>1,c=-7,f=t?i-1:0,h=t?-1:1,d=e[n+f];for(f+=h,o=d&(1<<-c)-1,d>>=-c,c+=a;c>0;o=256*o+e[n+f],f+=h,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=r;c>0;s=256*s+e[n+f],f+=h,c-=8);if(0===o)o=1-u;else{if(o===l)return s?NaN:1/0*(d?-1:1);s+=Math.pow(2,r),o-=u}return(d?-1:1)*s*Math.pow(2,o-r)},n.write=function(e,n,t,r,i,o){var s,a,l,u=8*o-i-1,c=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:o-1,p=r?1:-1,m=n<0||0===n&&1/n<0?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(a=isNaN(n)?1:0,s=c):(s=Math.floor(Math.log(n)/Math.LN2),n*(l=Math.pow(2,-s))<1&&(s--,l*=2),(n+=s+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(s++,l/=2),s+f>=c?(a=0,s=c):s+f>=1?(a=(n*l-1)*Math.pow(2,i),s+=f):(a=n*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;e[t+d]=255&a,d+=p,a/=256,i-=8);for(s=s<0;e[t+d]=255&s,d+=p,s/=256,u-=8);e[t+d-p]|=128*m}},function(e,n,t){"use strict";n.byteLength=function(e){return 3*e.length/4-u(e)},n.toByteArray=function(e){var n,t,r,s,a,l=e.length;s=u(e),a=new o(3*l/4-s),t=s>0?l-4:l;var c=0;for(n=0;n>16&255,a[c++]=r>>8&255,a[c++]=255&r;2===s?(r=i[e.charCodeAt(n)]<<2|i[e.charCodeAt(n+1)]>>4,a[c++]=255&r):1===s&&(r=i[e.charCodeAt(n)]<<10|i[e.charCodeAt(n+1)]<<4|i[e.charCodeAt(n+2)]>>2,a[c++]=r>>8&255,a[c++]=255&r);return a},n.fromByteArray=function(e){for(var n,t=e.length,i=t%3,o="",s=[],a=0,l=t-i;al?l:a+16383));1===i?(n=e[t-1],o+=r[n>>2],o+=r[n<<4&63],o+="=="):2===i&&(n=(e[t-2]<<8)+e[t-1],o+=r[n>>10],o+=r[n>>4&63],o+=r[n<<2&63],o+="=");return s.push(o),s.join("")};for(var r=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,l=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[n-2]?2:"="===e[n-1]?1:0}function c(e,n,t){for(var i,o,s=[],a=n;a>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(e,n,t){"use strict";(function(e){var r=t(12),i=t(11),o=t(10);function s(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,n){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function p(e,n){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var t=e.length;if(0===t)return 0;for(var r=!1;;)switch(n){case"ascii":case"latin1":case"binary":return t;case"utf8":case"utf-8":case void 0:return D(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*t;case"hex":return t>>>1;case"base64":return V(e).length;default:if(r)return D(e).length;n=(""+n).toLowerCase(),r=!0}}function m(e,n,t){var r=e[n];e[n]=e[t],e[t]=r}function g(e,n,t,r,i){if(0===e.length)return-1;if("string"==typeof t?(r=t,t=0):t>2147483647?t=2147483647:t<-2147483648&&(t=-2147483648),t=+t,isNaN(t)&&(t=i?0:e.length-1),t<0&&(t=e.length+t),t>=e.length){if(i)return-1;t=e.length-1}else if(t<0){if(!i)return-1;t=0}if("string"==typeof n&&(n=l.from(n,r)),l.isBuffer(n))return 0===n.length?-1:y(e,n,t,r,i);if("number"==typeof n)return n&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,n,t):Uint8Array.prototype.lastIndexOf.call(e,n,t):y(e,[n],t,r,i);throw new TypeError("val must be string, number or Buffer")}function y(e,n,t,r,i){var o,s=1,a=e.length,l=n.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||n.length<2)return-1;s=2,a/=2,l/=2,t/=2}function u(e,n){return 1===s?e[n]:e.readUInt16BE(n*s)}if(i){var c=-1;for(o=t;oa&&(t=a-l),o=t;o>=0;o--){for(var f=!0,h=0;hi&&(r=i):r=i;var o=n.length;if(o%2!=0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var s=0;s>8,i=t%256,o.push(i),o.push(r);return o}(n,e.length-t),e,t,r)}function A(e,n,t){return 0===n&&t===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(n,t))}function x(e,n,t){t=Math.min(e.length,t);for(var r=[],i=n;i239?4:u>223?3:u>191?2:1;if(i+f<=t)switch(f){case 1:u<128&&(c=u);break;case 2:128==(192&(o=e[i+1]))&&(l=(31&u)<<6|63&o)>127&&(c=l);break;case 3:o=e[i+1],s=e[i+2],128==(192&o)&&128==(192&s)&&(l=(15&u)<<12|(63&o)<<6|63&s)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:o=e[i+1],s=e[i+2],a=e[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(l=(15&u)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&l<1114112&&(c=l)}null===c?(c=65533,f=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),i+=f}return function(e){var n=e.length;if(n<=w)return String.fromCharCode.apply(String,e);var t="",r=0;for(;rthis.length)return"";if((void 0===t||t>this.length)&&(t=this.length),t<=0)return"";if((t>>>=0)<=(n>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return L(this,n,t);case"utf8":case"utf-8":return x(this,n,t);case"ascii":return S(this,n,t);case"latin1":case"binary":return I(this,n,t);case"base64":return A(this,n,t);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,n,t);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",t=n.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},l.prototype.compare=function(e,n,t,r,i){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===n&&(n=0),void 0===t&&(t=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),n<0||t>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&n>=t)return 0;if(r>=i)return-1;if(n>=t)return 1;if(n>>>=0,t>>>=0,r>>>=0,i>>>=0,this===e)return 0;for(var o=i-r,s=t-n,a=Math.min(o,s),u=this.slice(r,i),c=e.slice(n,t),f=0;fi)&&(t=i),e.length>0&&(t<0||n<0)||n>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return b(this,e,n,t);case"utf8":case"utf-8":return v(this,e,n,t);case"ascii":return _(this,e,n,t);case"latin1":case"binary":return T(this,e,n,t);case"base64":return z(this,e,n,t);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,n,t);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var w=4096;function S(e,n,t){var r="";t=Math.min(e.length,t);for(var i=n;ir)&&(t=r);for(var i="",o=n;ot)throw new RangeError("Trying to access beyond buffer length")}function F(e,n,t,r,i,o){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(n>i||ne.length)throw new RangeError("Index out of range")}function C(e,n,t,r){n<0&&(n=65535+n+1);for(var i=0,o=Math.min(e.length-t,2);i>>8*(r?i:1-i)}function B(e,n,t,r){n<0&&(n=4294967295+n+1);for(var i=0,o=Math.min(e.length-t,4);i>>8*(r?i:3-i)&255}function N(e,n,t,r,i,o){if(t+r>e.length)throw new RangeError("Index out of range");if(t<0)throw new RangeError("Index out of range")}function R(e,n,t,r,o){return o||N(e,0,t,4),i.write(e,n,t,r,23,4),t+4}function O(e,n,t,r,o){return o||N(e,0,t,8),i.write(e,n,t,r,52,8),t+8}l.prototype.slice=function(e,n){var t,r=this.length;if(e=~~e,n=void 0===n?r:~~n,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),n<0?(n+=r)<0&&(n=0):n>r&&(n=r),n0&&(i*=256);)r+=this[e+--n]*i;return r},l.prototype.readUInt8=function(e,n){return n||M(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,n){return n||M(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,n){return n||M(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,n){return n||M(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,n){return n||M(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,n,t){e|=0,n|=0,t||M(e,n,this.length);for(var r=this[e],i=1,o=0;++o=(i*=128)&&(r-=Math.pow(2,8*n)),r},l.prototype.readIntBE=function(e,n,t){e|=0,n|=0,t||M(e,n,this.length);for(var r=n,i=1,o=this[e+--r];r>0&&(i*=256);)o+=this[e+--r]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*n)),o},l.prototype.readInt8=function(e,n){return n||M(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,n){n||M(e,2,this.length);var t=this[e]|this[e+1]<<8;return 32768&t?4294901760|t:t},l.prototype.readInt16BE=function(e,n){n||M(e,2,this.length);var t=this[e+1]|this[e]<<8;return 32768&t?4294901760|t:t},l.prototype.readInt32LE=function(e,n){return n||M(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,n){return n||M(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,n){return n||M(e,4,this.length),i.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,n){return n||M(e,4,this.length),i.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,n){return n||M(e,8,this.length),i.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,n){return n||M(e,8,this.length),i.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,n,t,r){(e=+e,n|=0,t|=0,r)||F(this,e,n,t,Math.pow(2,8*t)-1,0);var i=1,o=0;for(this[n]=255&e;++o=0&&(o*=256);)this[n+i]=e/o&255;return n+t},l.prototype.writeUInt8=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[n]=255&e,n+1},l.prototype.writeUInt16LE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8):C(this,e,n,!0),n+2},l.prototype.writeUInt16BE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=255&e):C(this,e,n,!1),n+2},l.prototype.writeUInt32LE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[n+3]=e>>>24,this[n+2]=e>>>16,this[n+1]=e>>>8,this[n]=255&e):B(this,e,n,!0),n+4},l.prototype.writeUInt32BE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=255&e):B(this,e,n,!1),n+4},l.prototype.writeIntLE=function(e,n,t,r){if(e=+e,n|=0,!r){var i=Math.pow(2,8*t-1);F(this,e,n,t,i-1,-i)}var o=0,s=1,a=0;for(this[n]=255&e;++o>0)-a&255;return n+t},l.prototype.writeIntBE=function(e,n,t,r){if(e=+e,n|=0,!r){var i=Math.pow(2,8*t-1);F(this,e,n,t,i-1,-i)}var o=t-1,s=1,a=0;for(this[n+o]=255&e;--o>=0&&(s*=256);)e<0&&0===a&&0!==this[n+o+1]&&(a=1),this[n+o]=(e/s>>0)-a&255;return n+t},l.prototype.writeInt8=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[n]=255&e,n+1},l.prototype.writeInt16LE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8):C(this,e,n,!0),n+2},l.prototype.writeInt16BE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=255&e):C(this,e,n,!1),n+2},l.prototype.writeInt32LE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8,this[n+2]=e>>>16,this[n+3]=e>>>24):B(this,e,n,!0),n+4},l.prototype.writeInt32BE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=255&e):B(this,e,n,!1),n+4},l.prototype.writeFloatLE=function(e,n,t){return R(this,e,n,!0,t)},l.prototype.writeFloatBE=function(e,n,t){return R(this,e,n,!1,t)},l.prototype.writeDoubleLE=function(e,n,t){return O(this,e,n,!0,t)},l.prototype.writeDoubleBE=function(e,n,t){return O(this,e,n,!1,t)},l.prototype.copy=function(e,n,t,r){if(t||(t=0),r||0===r||(r=this.length),n>=e.length&&(n=e.length),n||(n=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-n=0;--i)e[i+n]=this[i+t];else if(o<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,t=void 0===t?this.length:t>>>0,e||(e=0),"number"==typeof e)for(o=n;o55295&&t<57344){if(!i){if(t>56319){(n-=3)>-1&&o.push(239,191,189);continue}if(s+1===r){(n-=3)>-1&&o.push(239,191,189);continue}i=t;continue}if(t<56320){(n-=3)>-1&&o.push(239,191,189),i=t;continue}t=65536+(i-55296<<10|t-56320)}else i&&(n-=3)>-1&&o.push(239,191,189);if(i=null,t<128){if((n-=1)<0)break;o.push(t)}else if(t<2048){if((n-=2)<0)break;o.push(t>>6|192,63&t|128)}else if(t<65536){if((n-=3)<0)break;o.push(t>>12|224,t>>6&63|128,63&t|128)}else{if(!(t<1114112))throw new Error("Invalid code point");if((n-=4)<0)break;o.push(t>>18|240,t>>12&63|128,t>>6&63|128,63&t|128)}}return o}function V(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(P,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function j(e,n,t,r){for(var i=0;i=n.length||i>=e.length);++i)n[i+t]=e[i];return i}}).call(this,t(1))},function(e,n,t){(function(e,r){const i=t(9),o=t(2),s=t(8);var a,l;try{a=t(7),l=!1;try{t(!function(){var e=new Error('Cannot find module "source-map-support"');throw e.code="MODULE_NOT_FOUND",e}()).install()}catch(e){}}catch(e){try{t(!function(){var e=new Error('Cannot find module "ts-node"');throw e.code="MODULE_NOT_FOUND",e}()).register({project:o.join(".","..","src","tsconfig.json")}),t(!function(){var e=new Error('Cannot find module "../src/glue/js"');throw e.code="MODULE_NOT_FOUND",e}()),a=t(!function(){var e=new Error('Cannot find module "../src"');throw e.code="MODULE_NOT_FOUND",e}()),l=!0}catch(e){a=t(6),l=!1}}function u(e){const r={};return Object.keys(n.options).forEach(e=>{const t=n.options[e];t.aliases&&((r.alias||(r.alias={}))[e]=t.aliases),void 0!==t.default&&((r.default||(r.default={}))[e]=t.default),"string"===t.type?(r.string||(r.string=[])).push(e):"boolean"===t.type&&(r.boolean||(r.boolean=[])).push(e)}),t(4)(e,r)}function c(e,n){for(var t,r=!1;null!=(t=a.nextDiagnostic(e));)n.write(a.formatDiagnostic(t,n.isTTY,!0)+s.EOL+s.EOL),a.isError(t)&&(r=!0);return r}function f(){return{readTime:0,readCount:0,writeTime:0,writeCount:0,parseTime:0,parseCount:0,compileTime:0,compileCount:0,emitTime:0,emitCount:0,validateTime:0,validateCount:0,optimizeTime:0,optimizeCount:0}}function h(n){const t=e.hrtime();n();const r=e.hrtime(t);return 1e9*r[0]+r[1]}function d(n,t){function r(e,n){return e?(e/1e6).toFixed(3)+" ms":"N/A"}(t||e.stdout).write(["I/O Read : "+r(n.readTime,n.readCount),"I/O Write : "+r(n.writeTime,n.writeCount),"Parse : "+r(n.parseTime,n.parseCount),"Compile : "+r(n.compileTime,n.compileCount),"Emit : "+r(n.emitTime,n.emitCount),"Validate : "+r(n.validateTime,n.validateCount),"Optimize : "+r(n.optimizeTime,n.optimizeCount)].join(s.EOL)+s.EOL)}n.isBundle=!0,n.isDev=l,n.version=n.isBundle?"0.5.0":t(!function(){var e=new Error('Cannot find module "../package.json"');throw e.code="MODULE_NOT_FOUND",e}()).version,n.options=t(5),n.sourceMapRoot="assemblyscript:///",n.libraryPrefix=a.LIBRARY_PREFIX,n.defaultOptimizeLevel=2,n.defaultShrinkLevel=1,n.libraryFiles=n.isBundle?Object({"(lib)/allocator/arena":"/////////////// A simple yet effective Arena Memory Allocator /////////////////\n\n// Provides a `reset_memory` function to reset the heap to its initial state. A\n// user has to make sure that there are no more references to cleared memory\n// afterwards. Always aligns to 8 bytes.\n\nconst ALIGN_LOG2: usize = 3;\nconst ALIGN_SIZE: usize = 1 << ALIGN_LOG2;\nconst ALIGN_MASK: usize = ALIGN_SIZE - 1;\n\nvar HEAP_OFFSET: usize = HEAP_BASE;\n\n@global\nexport function allocate_memory(size: usize): usize {\n if (!size) return 0;\n var ptr = HEAP_OFFSET;\n var off = (ptr + size + ALIGN_MASK) & ~ALIGN_MASK;\n var avail = current_memory() << 16;\n if (off > avail && grow_memory(\n max(\n (((off + 0xffff) & ~0xffff) - avail) >> 16, // minimum required pages\n avail >> 16 // at least double memory\n )\n ) < 0) unreachable(); // out of memory\n HEAP_OFFSET = off;\n return ptr;\n}\n\n@global\nexport function free_memory(ptr: usize): void {\n // nop\n}\n\n@global\nexport function reset_memory(): void {\n HEAP_OFFSET = HEAP_BASE;\n}\n","(lib)/allocator/emscripten":"///////////////////////// Emscripten Memory Allocator //////////////////////////\n\n// Uses Emscripten's exported _malloc and _free implementations, i.e., when\n// linking with Emscripten-compiled programs that already provide these.\n// Differs from 'system' in that their names are prefixed with an underscore.\n\ndeclare function _malloc(size: usize): usize;\ndeclare function _free(ptr: usize): void;\n\n@global\nexport function allocate_memory(size: usize): usize {\n return _malloc(size);\n}\n\n@global\nexport function free_memory(ptr: usize): void {\n _free(ptr);\n}\n\n@global\nexport { reset_memory } from \"./none\";\n","(lib)/allocator/none":'export function allocate_memory(size: usize): usize {\n throw new Error("not supported");\n}\n\nexport function free_memory(ptr: usize): void {\n throw new Error("not supported");\n}\n\nexport function reset_memory(): void {\n throw new Error("not supported");\n}\n',"(lib)/allocator/system":'/////////////////////////// System Memory Allocator ////////////////////////////\n\n// Uses the environment\'s malloc and free implementations, i.e., when linking\n// with other C-like programs that already provide these.\n\ndeclare function malloc(size: usize): usize;\ndeclare function free(ptr: usize): void;\n\n@global\nexport function allocate_memory(size: usize): usize {\n return malloc(size);\n}\n\n@global\nexport function free_memory(ptr: usize): void {\n free(ptr);\n}\n\n@global\nexport { reset_memory } from "./none";\n',"(lib)/allocator/tlsf":"////////////// TLSF (Two-Level Segregate Fit) Memory Allocator ////////////////\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─┴─╫─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴─────────╨─────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\nconst AL_BITS: u32 = sizeof() == sizeof() ? 2 : 3;\nconst AL_SIZE: usize = 1 << AL_BITS;\nconst AL_MASK: usize = AL_SIZE - 1;\n\nconst SL_BITS: u32 = 5;\nconst SL_SIZE: usize = 1 << SL_BITS;\n\nconst SB_BITS: usize = (SL_BITS + AL_BITS);\nconst SB_SIZE: usize = 1 << SB_BITS;\n\nconst FL_BITS: u32 = (sizeof() == sizeof()\n ? 30 // ^= up to 1GB per block\n : 32 // ^= up to 4GB per block\n) - SB_BITS;\n\n// ╒════════════════ Block structure layout (32-bit) ══════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┤\n// │ size │L│F│ ◄─┐\n// ╞═══════════════════════════════════════════════════════════╧═╧═╡ │ ┐\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... unused free space >= 0 ... │ │ = 0\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ │\n// │ if free: jump ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ MIN SIZE ┘\n// F: FREE, L: LEFT_FREE\n\n/** Tag indicating that this block is free. */\nconst FREE: usize = 1 << 0;\n/** Tag indicating that this block's left block is free. */\nconst LEFT_FREE: usize = 1 << 1;\n/** Mask to obtain all tags. */\nconst TAGS: usize = FREE | LEFT_FREE;\n\nassert(AL_BITS >= 2); // alignment must be large enough to store all tags\n\n/** Block structure. */\n@unmanaged\nclass Block {\n\n /** Info field holding this block's size and tags. */\n info: usize;\n\n /** End offset of the {@link Block#info} field. User data starts here. */\n static readonly INFO: usize = sizeof();\n\n /** Previous free block, if any. Only valid if free. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free. */\n next: Block | null;\n\n /** Minimum size of a block, excluding {@link Block#info}. */\n static readonly MIN_SIZE: usize = 3 * sizeof(); // prev + next + jump\n\n /** Maximum size of a used block, excluding {@link Block#info}. */\n static readonly MAX_SIZE: usize = 1 << (FL_BITS + SB_BITS);\n\n /** Gets this block's left (free) block in memory. */\n get left(): Block {\n assert(this.info & LEFT_FREE); // must be free to contain a jump\n return assert(\n load(changetype(this) - sizeof())\n ); // can't be null\n }\n\n /** Gets this block's right block in memory. */\n get right(): Block {\n assert(this.info & ~TAGS); // can't skip beyond the tail block\n return assert(\n changetype(\n changetype(this) + Block.INFO + (this.info & ~TAGS)\n )\n ); // can't be null\n }\n}\n\n// ╒════════════════ Root structure layout (32-bit) ═══════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ ... │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[22] P │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[736] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tailRef │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map, P: Possibly padded if 64-bit\n\nassert((1 << SL_BITS) <= 32); // second level must fit into 32 bits\n\n/** Root structure. */\n@unmanaged\nclass Root {\n\n /** First level bitmap. */\n flMap: usize = 0;\n\n /** Start offset of second level maps. */\n private static readonly SL_START: usize = sizeof();\n\n // Using *one* SL map per *FL bit*\n\n /** Gets the second level map for the specified first level. */\n getSLMap(fl: usize): u32 {\n assert(fl < FL_BITS); // fl out of range\n return load(changetype(this) + fl * 4, Root.SL_START);\n }\n\n /** Sets the second level map for the specified first level. */\n setSLMap(fl: usize, value: u32): void {\n assert(fl < FL_BITS); // fl out of range\n store(changetype(this) + fl * 4, value, Root.SL_START);\n }\n\n /** End offset of second level maps. */\n private static readonly SL_END: usize = Root.SL_START + FL_BITS * 4;\n\n // Using *number bits per SL* heads per *FL bit*\n\n /** Start offset of FL/SL heads. */\n private static readonly HL_START: usize = (Root.SL_END + AL_MASK) & ~AL_MASK;\n\n /** Gets the head of the specified first and second level index. */\n getHead(fl: usize, sl: u32): Block | null {\n assert(fl < FL_BITS); // fl out of range\n assert(sl < SL_SIZE); // sl out of range\n return changetype(load(\n changetype(this) + (fl * SL_SIZE + sl) * sizeof()\n , Root.HL_START));\n }\n\n /** Sets the head of the specified first and second level index. */\n setHead(fl: usize, sl: u32, value: Block | null): void {\n assert(fl < FL_BITS); // fl out of range\n assert(sl < SL_SIZE); // sl out of range\n store(\n changetype(this) + (fl * SL_SIZE + sl) * sizeof()\n , changetype(value)\n , Root.HL_START);\n }\n\n /** End offset of FL/SL heads. */\n private static readonly HL_END: usize = (\n Root.HL_START + FL_BITS * SL_SIZE * sizeof()\n );\n\n get tailRef(): usize { return load(0, Root.HL_END); }\n set tailRef(value: usize) { store(0, value, Root.HL_END); }\n\n /** Total size of the {@link Root} structure. */\n static readonly SIZE: usize = Root.HL_END + sizeof();\n\n /** Inserts a previously used block back into the free list. */\n insert(block: Block): void {\n // check as much as possible here to prevent invalid free blocks\n assert(block); // cannot be null\n var blockInfo = block.info;\n assert(blockInfo & FREE); // must be free\n var size: usize;\n assert(\n (size = block.info & ~TAGS) >= Block.MIN_SIZE && size < Block.MAX_SIZE\n ); // must be valid, not necessary to compute yet if noAssert=true\n\n var right: Block = assert(block.right); // can't be null\n var rightInfo = right.info;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n this.remove(right);\n block.info = (blockInfo += Block.INFO + (rightInfo & ~TAGS));\n right = block.right;\n rightInfo = right.info;\n // jump is set below\n }\n\n // merge with left block if also free\n if (blockInfo & LEFT_FREE) {\n var left: Block = assert(block.left); // can't be null\n var leftInfo = left.info;\n assert(leftInfo & FREE); // must be free according to tags\n this.remove(left);\n left.info = (leftInfo += Block.INFO + (blockInfo & ~TAGS));\n block = left;\n blockInfo = leftInfo;\n // jump is set below\n }\n\n right.info = rightInfo | LEFT_FREE;\n this.setJump(block, right);\n // right is no longer used now, hence rightInfo is not synced\n\n size = blockInfo & ~TAGS;\n assert(size >= Block.MIN_SIZE && size < Block.MAX_SIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size / AL_SIZE);\n } else {\n fl = fls(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n\n // perform insertion\n var head = this.getHead(fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n this.setHead(fl, sl, block);\n\n // update first and second level maps\n this.flMap |= (1 << fl);\n this.setSLMap(fl, this.getSLMap(fl) | (1 << sl));\n }\n\n /**\n * Removes a free block from FL/SL maps. Does not alter left/jump because it\n * is likely that splitting is performed afterwards, invalidating any changes\n * again.\n */\n private remove(block: Block): void {\n var blockInfo = block.info;\n assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS;\n assert(size >= Block.MIN_SIZE && size < Block.MAX_SIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size / AL_SIZE);\n } else {\n fl = fls(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == this.getHead(fl, sl)) {\n this.setHead(fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n var slMap = this.getSLMap(fl);\n this.setSLMap(fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) this.flMap &= ~(1 << fl);\n }\n }\n }\n\n /** Searches for a free block of at least the specified size. */\n search(size: usize): Block | null {\n assert(size >= Block.MIN_SIZE && size < Block.MAX_SIZE);\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size / AL_SIZE);\n } else {\n // (*) size += (1 << (fls(size) - SL_BITS)) - 1;\n fl = fls(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n // (*) instead of rounding up, use next second level list for better fit\n if (sl < SL_SIZE - 1) ++sl;\n else ++fl, sl = 0;\n }\n\n // search second level\n var slMap = this.getSLMap(fl) & (~0 << sl);\n var head: Block | null;\n if (!slMap) {\n // search next larger first level\n var flMap = this.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ffs(flMap);\n slMap = assert(this.getSLMap(fl)); // can't be zero if fl points here\n head = this.getHead(fl, ffs(slMap));\n }\n } else {\n head = this.getHead(fl, ffs(slMap));\n }\n return head;\n }\n\n /** Links a free left with its right block in memory. */\n private setJump(left: Block, right: Block): void {\n assert(left.info & FREE); // must be free\n assert(left.right == right); // right block must match\n assert(right.info & LEFT_FREE); // right block must be tagged as LEFT_FREE\n store(\n changetype(right) - sizeof()\n , left); // last word in left block's (free) data region\n }\n\n /**\n * Uses the specified free block, removing it from internal maps and\n * splitting it if possible, and returns its data pointer.\n */\n use(block: Block, size: usize): usize {\n var blockInfo = block.info;\n assert(blockInfo & FREE); // must be free so we can use it\n assert(size >= Block.MIN_SIZE && size < Block.MAX_SIZE); // must be valid\n assert(!(size & AL_MASK)); // size must be aligned so the new block is\n\n this.remove(block);\n\n // split if the block can hold another MIN_SIZE block\n var remaining = (blockInfo & ~TAGS) - size;\n if (remaining >= Block.INFO + Block.MIN_SIZE) {\n block.info = size | (blockInfo & LEFT_FREE); // also discards FREE\n\n var spare = changetype(\n changetype(block) + Block.INFO + size\n );\n spare.info = (remaining - Block.INFO) | FREE; // not LEFT_FREE\n this.insert(spare); // also sets jump\n\n // otherwise tag block as no longer FREE and right as no longer LEFT_FREE\n } else {\n block.info = blockInfo & ~FREE;\n var right: Block = assert(block.right); // can't be null (tail)\n right.info &= ~LEFT_FREE;\n }\n\n return changetype(block) + Block.INFO;\n }\n\n /** Adds more memory to the pool. */\n addMemory(start: usize, end: usize): bool {\n assert(start <= end);\n assert(!(start & AL_MASK)); // must be aligned\n assert(!(end & AL_MASK)); // must be aligned\n\n var tailRef = this.tailRef;\n var tailInfo: usize = 0;\n if (tailRef) {\n assert(start >= tailRef + sizeof()); // starts after tail\n\n // merge with current tail if adjacent\n if (start - Block.INFO == tailRef) {\n start -= Block.INFO;\n tailInfo = changetype(tailRef).info;\n }\n\n } else {\n assert(start >= changetype(this) + Root.SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < Block.INFO + Block.MIN_SIZE + Block.INFO) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - 2 * Block.INFO;\n var left = changetype(start);\n left.info = leftSize | FREE | (tailInfo & LEFT_FREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n var tail = changetype(start + size - Block.INFO);\n tail.info = 0 | LEFT_FREE;\n this.tailRef = changetype(tail);\n\n this.insert(left); // also merges with free left before tail / sets jump\n\n return true;\n }\n}\n\n/** Determines the first (LSB to MSB) set bit's index of a word. */\nfunction ffs(word: T): T {\n assert(word != 0); // word cannot be 0\n return ctz(word); // differs from ffs only for 0\n}\n\n/** Determines the last (LSB to MSB) set bit's index of a word. */\nfunction fls(word: T): T {\n assert(word != 0); // word cannot be 0\n const inv: T = (sizeof() << 3) - 1;\n return inv - clz(word);\n}\n\n/** Reference to the initialized {@link Root} structure, once initialized. */\nvar ROOT: Root = changetype(0);\n\n// External interface\n\n/** Allocates a chunk of memory. */\n@global\nexport function allocate_memory(size: usize): usize {\n\n // initialize if necessary\n var root = ROOT;\n if (!root) {\n var rootOffset = (HEAP_BASE + AL_MASK) & ~AL_MASK;\n ROOT = root = changetype(rootOffset);\n root.tailRef = 0;\n root.flMap = 0;\n for (var fl: usize = 0; fl < FL_BITS; ++fl) {\n root.setSLMap(fl, 0);\n for (var sl: u32 = 0; sl < SL_SIZE; ++sl) {\n root.setHead(fl, sl, null);\n }\n }\n root.addMemory(rootOffset + Root.SIZE, current_memory() << 16);\n }\n\n // search for a suitable block\n var data: usize = 0;\n if (size && size < Block.MAX_SIZE) {\n size = max((size + AL_MASK) & ~AL_MASK, Block.MIN_SIZE);\n\n var block = root.search(size);\n if (!block) {\n\n // request more memory\n var pagesBefore = current_memory();\n var pagesNeeded = ((size + 0xffff) & ~0xffff) >>> 16;\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (grow_memory(pagesWanted) < 0) {\n if (grow_memory(pagesNeeded) < 0) {\n unreachable(); // out of memory\n }\n }\n var pagesAfter = current_memory();\n root.addMemory(pagesBefore << 16, pagesAfter << 16);\n block = assert(root.search(size)); // must be found now\n }\n\n assert((block.info & ~TAGS) >= size);\n data = root.use(block, size);\n }\n\n return data;\n}\n\n/** Frees the chunk of memory at the specified address. */\n@global\nexport function free_memory(data: usize): void {\n if (data) {\n var root = ROOT;\n if (root) {\n var block = changetype(data - Block.INFO);\n var blockInfo = block.info;\n assert(!(blockInfo & FREE)); // must be used\n block.info = blockInfo | FREE;\n root.insert(changetype(data - Block.INFO));\n }\n }\n}\n\nexport { reset_memory } from \"./none\";\n","(lib)/array":'export class Array {\n\n private __memory: usize;\n private __capacity: i32; // capped to [0, 0x7fffffff]\n private __length: i32; // capped to [0, __capacity]\n\n private __grow(newCapacity: i32): void {\n assert(newCapacity > this.__capacity);\n var newMemory = allocate_memory(newCapacity * sizeof());\n if (this.__memory) {\n move_memory(newMemory, this.__memory, this.__capacity * sizeof());\n free_memory(this.__memory);\n }\n this.__memory = newMemory;\n this.__capacity = newCapacity;\n }\n\n constructor(capacity: i32 = 0) {\n if (capacity < 0) {\n throw new RangeError("Invalid array length");\n }\n this.__memory = capacity\n ? allocate_memory(capacity * sizeof())\n : 0;\n this.__capacity = this.__length = capacity;\n }\n\n get length(): i32 {\n return this.__length;\n }\n\n set length(length: i32) {\n if (length < 0) {\n throw new RangeError("Invalid array length");\n }\n if (length > this.__capacity) {\n this.__grow(max(length, this.__capacity << 1));\n }\n this.__length = length;\n }\n\n @operator("[]")\n private __get(index: i32): T {\n if (index >= this.__capacity) {\n throw new Error("Index out of bounds"); // return changetype(0) ?\n }\n return load(this.__memory + index * sizeof());\n }\n\n @operator("[]=")\n private __set(index: i32, value: T): void {\n if (index < 0) {\n throw new Error("Index out of bounds");\n }\n if (index >= this.__capacity) {\n this.__grow(max(index + 1, this.__capacity << 1));\n }\n store(this.__memory + index * sizeof(), value);\n }\n\n indexOf(searchElement: T, fromIndex: i32 = 0): i32 {\n if (fromIndex < 0) {\n fromIndex = this.__length + fromIndex;\n }\n while (fromIndex < this.__length) {\n if (load(this.__memory + fromIndex * sizeof()) == searchElement) {\n return fromIndex;\n }\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(searchElement: T, fromIndex: i32 = 0): i32 {\n if (fromIndex < 0) {\n fromIndex = this.__length + fromIndex;\n } else if (fromIndex >= this.__length) {\n fromIndex = this.__length - 1;\n }\n while (fromIndex >= 0) {\n if (load(this.__memory + fromIndex * sizeof()) == searchElement) {\n return fromIndex;\n }\n --fromIndex;\n }\n return -1;\n }\n\n push(element: T): i32 {\n if (this.__length == this.__capacity) {\n this.__grow(this.__capacity ? this.__capacity << 1 : 1);\n }\n store(this.__memory + this.__length * sizeof(), element);\n return ++this.__length;\n }\n\n pop(): T {\n if (this.__length < 1) {\n throw new RangeError("Array is empty"); // return changetype(0) ?\n }\n return load(this.__memory + --this.__length * sizeof());\n }\n\n shift(): T {\n if (this.__length < 1) {\n throw new RangeError("Array is empty"); // return changetype(0) ?\n }\n var element = load(this.__memory);\n move_memory(\n this.__memory,\n this.__memory + sizeof(),\n (this.__capacity - 1) * sizeof()\n );\n set_memory(\n this.__memory + (this.__capacity - 1) * sizeof(),\n 0,\n sizeof()\n );\n --this.__length;\n return element;\n }\n\n unshift(element: T): i32 {\n var oldCapacity = this.__capacity;\n if (this.__length == oldCapacity) {\n // inlined __grow (avoids moving twice)\n var newCapacity: i32 = oldCapacity ? oldCapacity << 1 : 1;\n assert(newCapacity > this.__capacity);\n var newMemory = allocate_memory(newCapacity * sizeof());\n if (this.__memory) {\n move_memory(\n newMemory + sizeof(),\n this.__memory,\n oldCapacity * sizeof()\n );\n free_memory(this.__memory);\n }\n this.__memory = newMemory;\n this.__capacity = newCapacity;\n } else {\n move_memory(\n this.__memory + sizeof(),\n this.__memory,\n oldCapacity * sizeof()\n );\n }\n store(this.__memory, element);\n return ++this.__length;\n }\n\n slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n if (begin < 0) {\n begin = this.__length + begin;\n if (begin < 0) {\n begin = 0;\n }\n } else if (begin > this.__length) {\n begin = this.__length;\n }\n if (end < 0) {\n end = this.__length + end;\n } else if (end > this.__length) {\n end = this.__length;\n }\n if (end < begin) {\n end = begin;\n }\n var capacity = end - begin;\n assert(capacity >= 0);\n var sliced = new Array(capacity);\n if (capacity) {\n move_memory(\n sliced.__memory,\n this.__memory + begin * sizeof(),\n capacity * sizeof()\n );\n }\n return sliced;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): void {\n if (deleteCount < 1) {\n return;\n }\n if (start < 0) {\n start = this.__length + start;\n if (start < 0) {\n start = 0;\n } else if (start >= this.__length) {\n return;\n }\n } else if (start >= this.__length) {\n return;\n }\n deleteCount = min(deleteCount, this.__length - start);\n move_memory(\n this.__memory + start * sizeof(),\n this.__memory + (start + deleteCount) * sizeof(),\n deleteCount * sizeof()\n );\n this.__length -= deleteCount;\n }\n\n reverse(): Array {\n for (var front: usize = 0, back: usize = this.__length - 1; front < back; ++front, --back) {\n var temp = load(this.__memory + front * sizeof());\n store(this.__memory + front * sizeof(), load(this.__memory + back * sizeof()));\n store(this.__memory + back * sizeof(), temp);\n }\n return this;\n }\n}\n\n@unmanaged\nexport class CArray {\n\n private constructor() {}\n\n @operator("[]")\n private __get(index: i32): T {\n if (index < 0) {\n throw new RangeError("Index out of range");\n }\n return load(changetype(this) + index * sizeof());\n }\n\n @operator("[]=")\n private __set(index: i32, value: T): void {\n if (index < 0) {\n throw new RangeError("Index out of range");\n }\n store(changetype(this) + index * sizeof(), value);\n }\n}\n',"(lib)/builtins":"@builtin\nexport declare const NaN: f64; // | f32\n\n@builtin\nexport declare const Infinity: f64; // | f32\n\n@builtin\nexport declare function isNaN(value: T): bool;\n\n@builtin\nexport declare function isFinite(value: T): bool;\n\n@builtin\nexport declare function clz(value: T): T;\n\n@builtin\nexport declare function ctz(value: T): T;\n\n@builtin\nexport declare function popcnt(value: T): T;\n\n@builtin\nexport declare function rotl(value: T, shift: T): T;\n\n@builtin\nexport declare function rotr(value: T, shift: T): T;\n\n@builtin\nexport declare function abs(value: T): T;\n\n@builtin\nexport declare function max(left: T, right: T): T;\n\n@builtin\nexport declare function min(left: T, right: T): T;\n\n@builtin\nexport declare function ceil(value: T): T;\n\n@builtin\nexport declare function floor(value: T): T;\n\n@builtin\nexport declare function copysign(left: T, right: T): T;\n\n@builtin\nexport declare function nearest(left: T, right: T): T;\n\n@builtin\nexport declare function reinterpret(value: void): T;\n\n@builtin\nexport declare function sqrt(value: T): T;\n\n@builtin\nexport declare function trunc(value: T): T;\n\n@builtin\nexport declare function load(offset: usize, constantOffset?: usize): T;\n\n@builtin\nexport declare function store(offset: usize, value: void, constantOffset?: usize): T;\n\n@builtin\nexport declare function sizeof(): usize;\n\n@builtin\nexport declare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n\n@builtin\nexport declare function unreachable(): void;\n\n@builtin\nexport declare function current_memory(): i32;\n\n@builtin\nexport declare function grow_memory(pages: i32): i32;\n\n// @builtin\n// export declare function move_memory(dest: usize, src: usize: n: usize): void;\n\n// @builtin\n// export declare function set_memory(dest: usize, value: u32, n: usize): void;\n\n@builtin\nexport declare function changetype(value: void): T;\n\n@builtin\nexport declare function assert(isTrueish: T, message?: string): T;\n\n@builtin\nexport declare function abort(\n message?: string | null,\n fileName?: string | null,\n lineNumber?: u32,\n columnNumber?: u32\n): void;\n\n@builtin\ndeclare function i8(value: void): i8;\nnamespace i8 {\n export const MIN_VALUE: i8 = -128;\n export const MAX_VALUE: i8 = 127;\n}\nexport { i8 };\n\n@builtin\ndeclare function i16(value: void): i16;\nnamespace i16 {\n export const MIN_VALUE: i16 = -32768;\n export const MAX_VALUE: i16 = 32767;\n}\nexport { i16 };\n\n@builtin\ndeclare function i32(value: void): i32;\nnamespace i32 {\n export const MIN_VALUE: i32 = -2147483648;\n export const MAX_VALUE: i32 = 2147483647;\n}\nexport { i32 };\n\n@builtin\ndeclare function i64(value: void): i64;\nnamespace i64 {\n export const MIN_VALUE: i64 = -9223372036854775808;\n export const MAX_VALUE: i64 = 9223372036854775807;\n}\nexport { i64 };\n\n@builtin\ndeclare function isize(value: void): isize;\nnamespace isize {\n export const MIN_VALUE: isize = sizeof() == sizeof()\n ? -2147483648\n : -9223372036854775808;\n export const MAX_VALUE: isize = sizeof() == sizeof()\n ? 2147483647\n : 9223372036854775807;\n}\nexport { isize };\n\n@builtin\ndeclare function u8(value: void): u8;\nnamespace u8 {\n export const MIN_VALUE: u8 = 0;\n export const MAX_VALUE: u8 = 255;\n}\nexport { u8 };\n\n@builtin\ndeclare function u16(value: void): u16;\nnamespace u16 {\n export const MIN_VALUE: u16 = 0;\n export const MAX_VALUE: u16 = 65535;\n}\nexport { u16 };\n\n@builtin\ndeclare function u32(value: void): u32;\nnamespace u32 {\n export const MIN_VALUE: u32 = 0;\n export const MAX_VALUE: u32 = 4294967295;\n}\nexport { u32 };\n\n@builtin\ndeclare function u64(value: void): u64;\nnamespace u64 {\n export const MIN_VALUE: u64 = 0;\n export const MAX_VALUE: u64 = 18446744073709551615;\n}\nexport { u64 };\n\n@builtin\ndeclare function usize(value: void): usize;\nnamespace usize {\n export const MIN_VALUE: usize = 0;\n export const MAX_VALUE: usize = sizeof() == sizeof()\n ? 4294967295\n : 18446744073709551615;\n}\nexport { usize };\n\n@builtin\ndeclare function bool(value: void): bool;\nnamespace bool {\n export const MIN_VALUE: bool = false;\n export const MAX_VALUE: bool = true;\n}\nexport { bool };\n\n@builtin\ndeclare function f32(value: void): f32;\nnamespace f32 {\n export const MIN_VALUE: f32 = -3.40282347e+38;\n export const MAX_VALUE: f32 = 3.40282347e+38;\n export const MIN_SAFE_INTEGER: f32 = -16777215;\n export const MAX_SAFE_INTEGER: f32 = 16777215;\n export const EPSILON: f32 = 1.19209290e-07;\n}\nexport { f32 };\n\n@builtin\ndeclare function f64(value: void): f64;\nnamespace f64 {\n export const MIN_VALUE: f64 = -1.7976931348623157e+308;\n export const MAX_VALUE: f64 = 1.7976931348623157e+308;\n export const MIN_SAFE_INTEGER: f64 = -9007199254740991;\n export const MAX_SAFE_INTEGER: f64 = 9007199254740991;\n export const EPSILON: f64 = 2.2204460492503131e-16;\n}\nexport{ f64 };\n\n@builtin\nexport declare const HEAP_BASE: usize;\n\n@builtin\nexport declare function start(): void;\n","(lib)/error":'export class Error {\n\n name: string = "Error";\n message: string;\n stack: string = ""; // TODO\n\n constructor(message: string = "") {\n this.message = message;\n }\n}\n\nexport class RangeError extends Error {\n name: string = "RangeError";\n}\n\nexport class TypeError extends Error {\n name: string = "TypeError";\n}\n',"(lib)/iterator":"// export abstract class Iterator {\n// abstract get done(): bool;\n// abstract next(): T;\n// }\n","(lib)/map":"export class Map {\n\n private __keys: K[] = [];\n private __values: V[] = [];\n\n // FIXME: not a proper map implementation, just a filler\n\n get size(): i32 {\n return this.__keys.length;\n }\n\n get(key: K): V | null {\n var keys = this.__keys;\n for (var i = 0, k = keys.length; i < k; ++i) {\n if (keys[i] == key) {\n return this.__values[i];\n }\n }\n return null;\n }\n\n has(key: K): bool {\n var keys = this.__keys;\n for (var i = 0, k = keys.length; i < k; ++i) {\n if (keys[i] == key) {\n return true;\n }\n }\n return false;\n }\n\n set(key: K, value: V): void {\n this.__keys.push(key);\n this.__values.push(value);\n }\n\n clear(): void {\n this.__keys.length = 0;\n this.__values.length = 0;\n }\n}\n","(lib)/memory":"function copy_memory(dest: usize, src: usize, n: usize): void {\n // based on musl's implementation of memcpy\n // not a future instruction and sufficiently covered by the upcoming move_memory intrinsic\n\n var w: u32, x: u32;\n\n // copy 1 byte each until src is aligned to 4 bytes\n while (n && (src & 3)) {\n store(dest++, load(src++));\n n--;\n }\n\n // if dst is aligned to 4 bytes as well, copy 4 bytes each\n if ((dest & 3) == 0) {\n while (n >= 16) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n store(dest + 8, load(src + 8));\n store(dest + 12, load(src + 12));\n src += 16; dest += 16; n -= 16;\n }\n if (n & 8) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n dest += 8; src += 8;\n }\n if (n & 4) {\n store(dest, load(src));\n dest += 4; src += 4;\n }\n if (n & 2) { // drop to 2 bytes each\n store(dest, load(src));\n dest += 2; src += 2;\n }\n if (n & 1) { // drop to 1 byte\n store(dest++, load(src++));\n }\n return;\n }\n\n // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each\n // doing shifts if faster when copying enough bytes (here: 32 or more)\n if (n >= 32) {\n switch (dest & 3) {\n // known to be != 0\n case 1:\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 3;\n while (n >= 17) {\n x = load(src + 1);\n store(dest, w >> 24 | x << 8);\n w = load(src + 5);\n store(dest + 4, x >> 24 | w << 8);\n x = load(src + 9);\n store(dest + 8, w >> 24 | x << 8);\n w = load(src + 13);\n store(dest + 12, x >> 24 | w << 8);\n src += 16; dest += 16; n -= 16;\n }\n break;\n case 2:\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 2;\n while (n >= 18) {\n x = load(src + 2);\n store(dest, w >> 16 | x << 16);\n w = load(src + 6);\n store(dest + 4, x >> 16 | w << 16);\n x = load(src + 10);\n store(dest + 8, w >> 16 | x << 16);\n w = load(src + 14);\n store(dest + 12, x >> 16 | w << 16);\n src += 16; dest += 16; n -= 16;\n }\n break;\n case 3:\n w = load(src);\n store(dest++, load(src++));\n n -= 1;\n while (n >= 19) {\n x = load(src + 3);\n store(dest, w >> 8 | x << 24);\n w = load(src + 7);\n store(dest + 4, x >> 8 | w << 24);\n x = load(src + 11);\n store(dest + 8, w >> 8 | x << 24);\n w = load(src + 15);\n store(dest + 12, x >> 8 | w << 24);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n }\n\n // copy remaining bytes one by one\n if (n & 16) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 8) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 4) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 2) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 1) {\n store(dest++, load(src++));\n }\n}\n\nexport function move_memory(dest: usize, src: usize, n: usize): void {\n // based on musl's implementation of memmove\n // becomes obsolete once https://github.com/WebAssembly/bulk-memory-operations lands\n\n if (dest == src) return;\n if (src + n <= dest || dest + n <= src) {\n copy_memory(dest, src, n);\n return;\n }\n if (dest < src) {\n if ((src & 7) == (dest & 7)) {\n while (dest & 7) {\n if (!n) return;\n --n;\n store(dest++, load(src++));\n }\n while (n >= 8) {\n store(dest, load(src));\n n -= 8;\n dest += 8;\n src += 8;\n }\n }\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n if ((src & 7) == (dest & 7)) {\n while ((dest + n) & 7) {\n if (!n) return;\n store(dest + --n, load(src + n));\n }\n while (n >= 8) {\n n -= 8;\n store(dest + n, load(src + n));\n }\n }\n while (n) {\n store(dest + --n, load(src + n));\n }\n }\n}\n\nexport function set_memory(dest: usize, c: u8, n: usize): void {\n // based on musl's implementation of memset\n // becomes obsolete once https://github.com/WebAssembly/bulk-memory-operations lands\n\n // fill head and tail with minimal branching\n if (!n) return;\n store(dest, c);\n store(dest + n - 1, c);\n if (n <= 2) return;\n\n store(dest + 1, c);\n store(dest + 2, c);\n store(dest + n - 2, c);\n store(dest + n - 3, c);\n if (n <= 6) return;\n store(dest + 3, c);\n store(dest + n - 4, c);\n if (n <= 8) return;\n\n // advance pointer to align it at 4-byte boundary\n var k: usize = -dest & 3;\n dest += k;\n n -= k;\n n &= -4;\n\n var c32: u32 = -1 / 255 * c;\n\n // fill head/tail up to 28 bytes each in preparation\n store(dest, c32);\n store(dest + n - 4, c32);\n if (n <= 8) return;\n store(dest + 4, c32);\n store(dest + 8, c32);\n store(dest + n - 12, c32);\n store(dest + n - 8, c32);\n if (n <= 24) return;\n store(dest + 12, c32);\n store(dest + 16, c32);\n store(dest + 20, c32);\n store(dest + 24, c32);\n store(dest + n - 28, c32);\n store(dest + n - 24, c32);\n store(dest + n - 20, c32);\n store(dest + n - 16, c32);\n\n // align to a multiple of 8\n k = 24 + (dest & 4);\n dest += k;\n n -= k;\n\n // copy 32 bytes each\n var c64: u64 = c32 | (c32 << 32);\n while (n >= 32) {\n store(dest, c64);\n store(dest + 8, c64);\n store(dest + 16, c64);\n store(dest + 24, c64);\n n -= 32;\n dest += 32;\n }\n}\n\nexport function compare_memory(vl: usize, vr: usize, n: usize): i32 {\n // based on musl's implementation of memcmp\n // provided because there's no proposed alternative\n if (vl == vr) return 0;\n while (n && load(vl) == load(vr)) {\n n--;\n vl++;\n vr++;\n }\n return n ? load(vl) - load(vr) : 0;\n}\n","(lib)/polyfills":"export function bswap(value: T): T {\n assert(sizeof() == 1 || sizeof() == 2 || sizeof() == 4 || sizeof() == 8);\n\n if (sizeof() == 2) {\n return bswap16(value);\n } else if (sizeof() == 4) {\n return (\n rotl(value & 0xFF00FF00, 8) |\n rotr(value & 0x00FF00FF, 8)\n );\n } else if (sizeof() == 8) {\n var a: u64 = (value >> 8) & 0x00FF00FF00FF00FF;\n var b: u64 = (value & 0x00FF00FF00FF00FF) << 8;\n var v: u64 = a | b;\n\n a = (v >> 16) & 0x0000FFFF0000FFFF;\n b = (v & 0x0000FFFF0000FFFF) << 16;\n\n return rotr(a | b, 32);\n }\n return value;\n}\n\nexport function bswap16(value: T): T {\n assert(sizeof() == 1 || sizeof() == 2 || sizeof() == 4);\n\n if (sizeof() == 2 || sizeof() == 4) {\n return (((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000));\n }\n return value;\n}\n","(lib)/regexp":'export class RegExp {\n\n // @binding(CALL_NEW, [ STRING, STRING], OBJECT_HANDLE)\n constructor(pattern: string, flags: string = "") { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [ STRING ], PASS_THRU)\n test(search: string): bool { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [], STRING)\n toString(): string { throw new Error("unreachable"); }\n\n}\n',"(lib)/set":'// const prime1: u32 = 73;\n// const prime2: u32 = 5009;\n\nexport class Set {\n\n private __memory: usize;\n private __capacity: u32;\n private __size: u32;\n\n constructor() {\n this.__memory = 0;\n this.__capacity = this.__size = 0;\n }\n\n get size(): i32 {\n return this.__size;\n }\n\n // FIXME: not a proper set implementation, just a filler\n\n has(value: T): bool {\n assert(this != null);\n\n for (var index: usize = 0, limit: usize = this.__size; index < limit; ++index) {\n if (load(this.__memory + index * sizeof()) == value) {\n return true;\n }\n }\n return false;\n }\n\n add(value: T): Set {\n assert(this != null);\n\n if (this.__size >= this.__capacity) {\n var newCapacity = max(this.__capacity << 1, 8);\n var newMemory = allocate_memory(newCapacity * sizeof());\n if (this.__memory) {\n move_memory(newMemory, this.__memory, this.__capacity * sizeof());\n free_memory(this.__memory);\n }\n this.__capacity = newCapacity;\n this.__memory = newMemory;\n }\n store(this.__memory + this.__size * sizeof(), value);\n ++this.__size;\n return this;\n }\n\n delete(value: T): bool {\n assert(this != null);\n\n for (var index: usize = 0, limit: usize = this.__size; index < limit; ++index) {\n if (load(this.__memory + index * sizeof()) == value) {\n if (index + 1 < limit) {\n move_memory(\n this.__memory + index * sizeof(),\n this.__memory + (index + 1) * sizeof(),\n limit - index - 1\n );\n }\n --this.__size;\n return true;\n }\n }\n return false;\n }\n\n clear(): void {\n assert(this != null);\n\n this.__size = 0;\n }\n\n // TODO: think about iterators\n}\n\n// class SetIterator extends Iterator {\n\n// get done(): bool {\n// throw new Error("not implemented");\n// }\n\n// next(): T {\n// throw new Error("not implemented");\n// }\n// }\n',"(lib)/string":'// singleton empty string\nconst EMPTY: String = changetype("");\n\n// number of bytes preceeding string data\nconst HEAD: usize = 4;\n\nfunction allocate(length: i32): String {\n assert(length > 0); // 0 -> EMPTY\n var ptr = allocate_memory(HEAD + (length << 1));\n store(ptr, length);\n return changetype(ptr);\n}\n\nexport class String {\n\n readonly length: i32; // capped to [0, 0x7fffffff]\n\n @operator("[]")\n charAt(pos: i32): String {\n assert(this != null);\n\n if (pos >= this.length) {\n return EMPTY;\n }\n\n var out = allocate(1);\n store(\n changetype(out),\n load(\n changetype(this) + (pos << 1),\n HEAD\n ),\n HEAD\n );\n return out;\n }\n\n charCodeAt(pos: i32): i32 {\n assert(this != null);\n if (pos >= this.length) {\n return -1; // (NaN)\n }\n return load(\n changetype(this) + (pos << 1),\n HEAD\n );\n }\n\n codePointAt(pos: i32): i32 {\n assert(this != null);\n if (pos >= this.length) {\n return -1; // (undefined)\n }\n var first = load(\n changetype(this) + (pos << 1),\n HEAD\n );\n if (first < 0xD800 || first > 0xDBFF || pos + 1 == this.length) {\n return first;\n }\n var second = load(\n changetype(this) + ((pos + 1) << 1),\n HEAD\n );\n if (second < 0xDC00 || second > 0xDFFF) {\n return first;\n }\n return ((first - 0xD800) << 10) + (second - 0xDC00) + 0x10000;\n }\n\n @operator("+")\n private static __concat(left: String, right: String): String {\n if (left == null) {\n left = changetype("null");\n }\n return left.concat(right);\n }\n\n concat(other: String): String {\n assert(this != null);\n if (other == null) {\n other = changetype("null");\n }\n var thisLen: isize = this.length;\n var otherLen: isize = other.length;\n var outLen: usize = thisLen + otherLen;\n if (outLen == 0) {\n return EMPTY;\n }\n var out = allocate(outLen);\n move_memory(\n changetype(out) + HEAD,\n changetype(this) + HEAD,\n thisLen << 1\n );\n move_memory(\n changetype(out) + HEAD + (thisLen << 1),\n changetype(other) + HEAD,\n otherLen << 1\n );\n return out;\n }\n\n endsWith(searchString: String, endPosition: i32 = 0x7fffffff): bool {\n assert(this != null);\n if (searchString == null) {\n return false;\n }\n var end: isize = min(max(endPosition, 0), this.length);\n var searchLength: isize = searchString.length;\n var start: isize = end - searchLength;\n if (start < 0) {\n return false;\n }\n return !compare_memory(\n changetype(this) + HEAD + (start << 1),\n changetype(searchString) + HEAD,\n searchLength << 1\n );\n }\n\n @operator("==")\n private static __eq(left: String, right: String): bool {\n if (left == null) {\n return right == null;\n } else if (right == null) {\n return false;\n }\n var leftLength = left.length;\n if (leftLength != right.length) {\n return false;\n }\n return !compare_memory(\n changetype(left) + HEAD,\n changetype(right) + HEAD,\n (leftLength << 1)\n );\n }\n\n includes(searchString: String, position: i32 = 0): bool {\n return this.indexOf(searchString, position) != -1;\n }\n\n indexOf(searchString: String, position: i32 = 0): i32 {\n assert(this != null);\n if (searchString == null) {\n searchString = changetype("null");\n }\n var pos: isize = position;\n var len: isize = this.length;\n var start: isize = min(max(pos, 0), len);\n var searchLen: isize = searchString.length;\n\n // TODO: two-way, multiple char codes\n for (var k: usize = start; k + searchLen <= len; ++k) {\n if (!compare_memory(\n changetype(this) + HEAD + (k << 1),\n changetype(searchString) + HEAD,\n searchLen << 1)\n ) {\n return k;\n }\n }\n return -1;\n }\n\n startsWith(searchString: String, position: i32 = 0): bool {\n assert(this != null);\n if (searchString == null) {\n searchString = changetype("null");\n }\n var pos: isize = position;\n var len: isize = this.length;\n var start: isize = min(max(pos, 0), len);\n var searchLength: isize = searchString.length;\n if (searchLength + start > len) {\n return false;\n }\n return !compare_memory(\n changetype(this) + HEAD + (start << 1),\n changetype(searchString) + HEAD,\n searchLength << 1\n );\n }\n\n substr(start: i32, length: i32 = i32.MAX_VALUE): String {\n assert(this != null);\n var intStart: isize = start;\n var end: isize = length;\n var size: isize = this.length;\n if (intStart < 0) {\n intStart = max(size + intStart, 0);\n }\n var resultLength: isize = min(max(end, 0), size - intStart);\n if (resultLength <= 0) {\n return EMPTY;\n }\n var out = allocate(resultLength);\n move_memory(\n changetype(out) + HEAD,\n changetype(this) + HEAD + (intStart << 1),\n resultLength << 1\n );\n return out;\n }\n\n substring(start: i32, end: i32 = i32.MAX_VALUE): String {\n assert(this != null);\n var len = this.length;\n var finalStart = min(max(start, 0), len);\n var finalEnd = min(max(end, 0), len);\n var from = min(finalStart, finalEnd);\n var to = max(finalStart, finalEnd);\n len = to - from;\n if (!len) {\n return EMPTY;\n }\n if (!from && to == this.length) {\n return this;\n }\n var out = allocate(len);\n move_memory(\n changetype(out) + HEAD,\n changetype(this) + HEAD + (from << 1),\n len << 1\n );\n return out;\n }\n\n trim(): String {\n assert(this != null);\n var length: usize = this.length;\n while (\n length &&\n isWhiteSpaceOrLineTerminator(\n load(changetype(this) + (length << 1), HEAD)\n )\n ) {\n --length;\n }\n var start: usize = 0;\n while (\n start < length &&\n isWhiteSpaceOrLineTerminator(\n load(changetype(this) + (start << 1), HEAD)\n )\n ) {\n ++start, --length;\n }\n if (!length) {\n return EMPTY;\n }\n if (!start && length == this.length) {\n return this;\n }\n var out = allocate(length);\n move_memory(\n changetype(out) + HEAD,\n changetype(this) + HEAD + (start << 1),\n length << 1\n );\n return out;\n }\n\n trimLeft(): String {\n assert(this != null);\n var start: isize = 0;\n var len: isize = this.length;\n while (\n start < len &&\n isWhiteSpaceOrLineTerminator(\n load(changetype(this) + (start << 1), HEAD)\n )\n ) {\n ++start;\n }\n if (!start) {\n return this;\n }\n var outLen = len - start;\n if (!outLen) {\n return EMPTY;\n }\n var out = allocate(outLen);\n move_memory(\n changetype(out) + HEAD,\n changetype(this) + HEAD + (start << 1),\n outLen << 1\n );\n return out;\n }\n\n trimRight(): String {\n assert(this != null);\n var len: isize = this.length;\n while (\n len > 0 &&\n isWhiteSpaceOrLineTerminator(\n load(changetype(this) + (len << 1), HEAD)\n )\n ) {\n --len;\n }\n if (len <= 0) {\n return EMPTY;\n }\n if (len == this.length) {\n return this;\n }\n var out = allocate(len);\n move_memory(\n changetype(out) + HEAD,\n changetype(this) + HEAD,\n len << 1\n );\n return out;\n }\n}\n\nfunction isWhiteSpaceOrLineTerminator(c: u16): bool {\n switch (c) {\n case 10: // \n case 13: // \n case 8232: // \n case 8233: // \n case 9: // \n case 11: // \n case 12: // \n case 32: // \n case 160: // \n case 65279: // \n return true;\n default:\n return false;\n }\n}\n\nconst enum CharCode {\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n O = 0x4F,\n X = 0x58,\n Z = 0x5a,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n o = 0x6F,\n x = 0x78,\n z = 0x7A\n}\n\nexport function parseInt(str: String, radix: i32 = 0): f64 {\n return parse(str, radix);\n}\n\nexport function parseI32(str: String, radix: i32 = 0): i32 {\n return parse(str, radix);\n}\n\nexport function parseI64(str: String, radix: i32 = 0): i64 {\n return parse(str, radix);\n}\n\nfunction parse(str: String, radix: i32 = 0): T {\n var len: i32 = str.length;\n if (!len) {\n return NaN;\n }\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr, HEAD);\n\n // determine sign\n var sign: T;\n if (code == CharCode.MINUS) {\n if (!--len) {\n return NaN;\n }\n code = load(ptr += 2, HEAD);\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) {\n return NaN;\n }\n code = load(ptr += 2, HEAD);\n sign = 1;\n } else {\n sign = 1;\n }\n\n // determine radix\n if (!radix) {\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr + 2, HEAD)) {\n\n case CharCode.B:\n case CharCode.b:\n ptr += 4; len -= 2;\n radix = 2;\n break;\n\n case CharCode.O:\n case CharCode.o:\n ptr += 4; len -= 2;\n radix = 8;\n break;\n\n case CharCode.X:\n case CharCode.x:\n ptr += 4; len -= 2;\n radix = 16;\n break;\n\n default:\n radix = 10;\n }\n } else radix = 10;\n } else if (radix < 2 || radix > 36) {\n return NaN;\n }\n\n // calculate value\n var num: T = 0;\n while (len--) {\n code = load(ptr, HEAD);\n if (code >= CharCode._0 && code <= CharCode._9) {\n code -= CharCode._0;\n } else if (code >= CharCode.A && code <= CharCode.Z) {\n code -= CharCode.A - 10;\n } else if (code >= CharCode.a && code <= CharCode.z) {\n code -= CharCode.a - 10;\n } else {\n break;\n }\n if (code >= radix) {\n break;\n }\n num = (num * radix) + code;\n ptr += 2;\n }\n return sign * num;\n}\n\nexport function parseFloat(str: String): f64 {\n var len: i32 = str.length;\n if (!len) {\n return NaN;\n }\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr, HEAD);\n\n // determine sign\n var sign: f64;\n if (code == CharCode.MINUS) {\n if (!--len) {\n return NaN;\n }\n code = load(ptr += 2, HEAD);\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) {\n return NaN;\n }\n code = load(ptr += 2, HEAD);\n sign = 1;\n } else {\n sign = 1;\n }\n\n // calculate value\n var num: f64 = 0;\n while (len--) {\n code = load(ptr, HEAD);\n if (code == CharCode.DOT) {\n ptr += 2;\n var fac: f64 = 0.1; // precision :(\n while (len--) {\n code = load(ptr, HEAD);\n if (code == CharCode.E || code == CharCode.e) {\n assert(false); // TODO\n }\n code -= CharCode._0;\n if (code > 9) {\n break;\n }\n num += code * fac;\n fac *= 0.1;\n ptr += 2;\n }\n break;\n }\n code -= CharCode._0;\n if (code >= 10) {\n break;\n }\n num = (num * 10) + code;\n ptr += 2;\n }\n return sign * num;\n}\n'}):{},n.definitionFiles=n.isBundle?Object({assembly:'// Definitions for the "AssemblyScript" subset.\n\n// Types\n\n/** An 8-bit signed integer. */\ndeclare type i8 = number;\n/** A 16-bit signed integer. */\ndeclare type i16 = number;\n/** A 32-bit signed integer. */\ndeclare type i32 = number;\n/** A 64-bit signed integer. */\ndeclare type i64 = number;\n/** A 32-bit signed integer when targeting 32-bit WebAssembly or a 64-bit signed integer when targeting 64-bit WebAssembly. */\ndeclare type isize = number;\n/** An 8-bit unsigned integer. */\ndeclare type u8 = number;\n/** A 16-bit unsigned integer. */\ndeclare type u16 = number;\n/** A 32-bit unsigned integer. */\ndeclare type u32 = number;\n/** A 64-bit unsigned integer. */\ndeclare type u64 = number;\n/** A 32-bit unsigned integer when targeting 32-bit WebAssembly or a 64-bit unsigned integer when targeting 64-bit WebAssembly. */\ndeclare type usize = number;\n/** A 1-bit unsigned integer. */\ndeclare type bool = any; // sic\n/** A 32-bit float. */\ndeclare type f32 = number;\n/** A 64-bit float. */\ndeclare type f64 = number;\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i8;\ndeclare namespace i8 {\n export const MIN_VALUE: i8;\n export const MAX_VALUE: i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i8;\ndeclare namespace i16 {\n export const MIN_VALUE: i16;\n export const MAX_VALUE: i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i32;\ndeclare namespace i32 {\n export const MIN_VALUE: i32;\n export const MAX_VALUE: i32;\n}\n/** Converts any other numeric value to a 64-bit signed integer. */\ndeclare function i64(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i64;\ndeclare namespace i64 {\n export const MIN_VALUE: i64;\n export const MAX_VALUE: i64;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare function isize(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): isize;\ndeclare namespace isize {\n export const MIN_VALUE: isize;\n export const MAX_VALUE: isize;\n}\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i8;\ndeclare namespace u8 {\n export const MIN_VALUE: u8;\n export const MAX_VALUE: u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i8;\ndeclare namespace u16 {\n export const MIN_VALUE: u16;\n export const MAX_VALUE: u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i32;\ndeclare namespace u32 {\n export const MIN_VALUE: u32;\n export const MAX_VALUE: u32;\n}\n/** Converts any other numeric value to a 64-bit unsigned integer. */\ndeclare function u64(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i64;\ndeclare namespace u64 {\n export const MIN_VALUE: u64;\n export const MAX_VALUE: u64;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare function usize(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): isize;\ndeclare namespace usize {\n export const MIN_VALUE: usize;\n export const MAX_VALUE: usize;\n}\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): bool;\ndeclare namespace bool {\n export const MIN_VALUE: bool;\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): f32;\ndeclare namespace f32 {\n export const MIN_VALUE: f32;\n export const MAX_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): f64;\ndeclare namespace f64 {\n export const MIN_VALUE: f64;\n export const MAX_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n}\n\n// Built-ins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit or 64-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit or 64-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit or 64-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Reinterprets the bits of the specified value as type `T`. Valid reinterpretations are u32/i32 to/from f32 and u64/i64 to/from f64. */\ndeclare function reinterpret(value: number): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Equivalent to dereferncing a pointer in other languages. */\ndeclare function load(ptr: usize, constantOffset?: usize): T;\n/** Stores a value of the specified type to memory. Equivalent to dereferencing a pointer in other languages when assigning a value. */\ndeclare function store(ptr: usize, value: any, constantOffset?: usize): void;\n/** Returns the current memory size in units of pages. One page is 64kb. */\ndeclare function current_memory(): i32;\n/** Grows linear memory by a given unsigned delta of pages. One page is 64kb. Returns the previous memory size in units of pages or `-1` on failure. */\ndeclare function grow_memory(value: i32): i32;\n/** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\ndeclare function move_memory(destination: usize, source: usize, n: usize): void;\n/** Sets n bytes beginning at the specified destination in memory to the specified byte value. */\ndeclare function set_memory(destination: usize, value: u8, count: usize): void;\n/** Compares two chunks of memory. Returns `0` if equal, otherwise the difference of the first differing bytes. */\ndeclare function compare_memory(vl: usize, vr: usize, n: usize): i32;\n/** Allocates a chunk of memory of the specified size and returns a pointer to it. */\ndeclare function allocate_memory(size: usize): usize;\n/** Disposes a chunk of memory by its pointer. */\ndeclare function free_memory(ptr: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. Both a statement and an expression of any type. */\ndeclare function unreachable(): any; // sic\n\n/** [Polyfill] Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** [Polyfill] Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Heap base offset. */\ndeclare const HEAP_BASE: usize;\n/** Determines the byte size of the specified core or class type. Compiles to a constant. */\ndeclare function sizeof(): usize;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the (non-nullable) value. */\ndeclare function assert(isTrueish: T, message?: string): T & object; // any better way to model `: T != null`?\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses an integer string to a 32-bit integer. */\ndeclare function parseI32(str: string, radix?: i32): i32;\n/** Parses an integer string to a 64-bit integer. */\ndeclare function parseI64(str: string, radix?: i32): i64;\n/** Parses a string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n\n// Standard library (not yet implemented)\n\n/** Class representing a sequence of values of type `T`. */\ndeclare class Array {\n [key: number]: T;\n /** Current length of the array. */\n length: i32;\n /** Constructs a new array. */\n constructor(capacity?: i32);\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): void;\n pop(): T;\n shift(): T;\n unshift(element: T): i32;\n slice(from: i32, to?: i32): T[];\n splice(start: i32, deleteCount?: i32): void;\n reverse(): T[];\n}\n\n/** Class representing a C-like array of values of type `T` with limited capabilities. */\ndeclare class CArray {\n [key: number]: T;\n private constructor();\n}\n\n/** Class representing a sequence of characters. */\ndeclare class String {\n\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(cp: i32): string;\n static fromCodePoints(arr: i32[]): string;\n\n readonly length: u32;\n\n charAt(index: u32): string;\n charCodeAt(index: u32): u16;\n concat(other: string): string;\n endsWith(other: string): bool;\n indexOf(other: string): u32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n substr(start: u32, length?: u32): string;\n substring(start: u32, end?: u32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\ninterface Boolean {}\ninterface Function {}\ninterface IArguments {}\ninterface Number {}\ninterface Object {}\ninterface RegExp {}\n\ndeclare class Set {\n readonly size: i32;\n has(value: T): bool;\n add(value: T): void;\n delete(value: T): bool;\n clear(): void;\n}\n\n// Internal decorators\n\n/** Annotates an element as a program global. */\ndeclare function global(target: Function, propertyKey: string, descriptor: any): void;\n\n/** Annotates a method as an operator overload. */\ndeclare function operator(token: string): (target: any, propertyKey: string, descriptor: any) => void;\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(target: Function): any;\n\n/** Annotates a class field with an explicit offset. */\ndeclare function offset(offset: usize): any;\n\n/** Annotates an element as begin built-in. */\ndeclare function builtin(target: Function): any;\n',portable:'// Definitions for the "portable AssemblyScript" subset.\n\n// Portable types\n\n// Note that semantic differences require additional explicit conversions for full compatibility.\n// For example, when casting an i32 to an u8, doing `(someI32 & 0xff)` will yield the same\n// result when compiling to WebAssembly or JS while `someI32` alone does nothing in JS.\n\n// Note that i64\'s are not portable (JS numbers are IEEE754 doubles with a maximum safe integer value\n// of 2^53-1) and instead require a compatibility layer to work in JS as well. See: src/util/i64.ts\n\ndeclare type i8 = number;\ndeclare type i16 = number;\ndeclare type i32 = number;\ndeclare type isize = number;\ndeclare type u8 = number;\ndeclare type u16 = number;\ndeclare type u32 = number;\ndeclare type bool = boolean;\ndeclare type usize = number;\ndeclare type f32 = number;\ndeclare type f64 = number;\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): i8;\ndeclare namespace i8 {\n export const MIN_VALUE: i8;\n export const MAX_VALUE: i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): i8;\ndeclare namespace i16 {\n export const MIN_VALUE: i16;\n export const MAX_VALUE: i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): i32;\ndeclare namespace i32 {\n export const MIN_VALUE: i32;\n export const MAX_VALUE: i32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare function isize(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): isize;\ndeclare namespace isize {\n export const MIN_VALUE: isize;\n export const MAX_VALUE: isize;\n}\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): i8;\ndeclare namespace u8 {\n export const MIN_VALUE: u8;\n export const MAX_VALUE: u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): i8;\ndeclare namespace u16 {\n export const MIN_VALUE: u16;\n export const MAX_VALUE: u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): i32;\ndeclare namespace u32 {\n export const MIN_VALUE: u32;\n export const MAX_VALUE: u32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare function usize(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): isize;\ndeclare namespace usize {\n export const MIN_VALUE: usize;\n export const MAX_VALUE: usize;\n}\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): bool;\ndeclare namespace bool {\n export const MIN_VALUE: bool;\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): f32;\ndeclare namespace f32 {\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): f64;\ndeclare namespace f64 {\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n}\n\n// Portable built-ins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Allocates a chunk of memory of the specified size and returns a pointer to it. */\ndeclare function allocate_memory(size: usize): usize;\n/** Disposes a chunk of memory by its pointer. */\ndeclare function free_memory(ptr: usize): void;\n/** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\ndeclare function move_memory(destination: usize, source: usize, n: usize): void;\n/** Loads a value of the specified type from memory. Type must be `u8`. */\ndeclare function load(ptr: usize, constantOffset?: usize): T;\n/** Stores a value of the specified type to memory. Type must be `u8`. */\ndeclare function store(ptr: usize, value: T, constantOffset?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. */\ndeclare function unreachable(): any; // sic\n\n/** [Polyfill] Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** [Polyfill] Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Traps if the specified value is not true-ish, otherwise returns the value. */\ndeclare function assert(isTrueish: T, message?: string): T & object; // any better way to model `: T != null`?\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses an integer string to a 32-bit integer. */\ndeclare function parseI32(str: string, radix?: i32): i32;\n/** Parses a floating point string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n\n// Portable standard library\n// Everything marked @deprecated is a temporary filler. Do not use.\n\ndeclare const NaN: f32 | f64;\ndeclare const Infinity: f32 | f64;\n\ndeclare class Array {\n [key: number]: T;\n length: i32;\n constructor(capacity?: i32);\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): void;\n pop(): T;\n shift(): T;\n unshift(element: T): i32;\n slice(from: i32, to?: i32): T[];\n splice(start: i32, deleteCount?: i32): void;\n reverse(): T[];\n\n join(delim: string): string;\n}\n\ndeclare class Uint8Array extends Array {}\ndeclare class Uint16Array extends Array {}\ndeclare class Uint32Array extends Array {}\ndeclare class Int8Array extends Array {}\ndeclare class Int16Array extends Array {}\ndeclare class Int32Array extends Array {}\ndeclare class Float32Array extends Array {}\ndeclare class Float64Array extends Array {}\n\ndeclare class String {\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(cp: i32): string;\n static fromCodePoints(arr: i32[]): string;\n readonly length: i32;\n private constructor();\n indexOf(subject: string, position?: i32): i32;\n includes(other: string): bool;\n lastIndexOf(subject: string, position?: i32): i32;\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n substring(from: i32, to?: i32): string;\n startsWith(subject: string): bool;\n endsWith(subject: string): bool;\n replace(search: string, replacement: string): string;\n toString(): string;\n}\n\ninterface Boolean {}\n\ndeclare class Number {\n private constructor();\n toString(radix?: i32): string;\n}\n\ninterface Object {}\n\ninterface Function {}\n\ninterface RegExp {}\n\ninterface IArguments {}\n\ndeclare class Error {\n constructor(message: string);\n message: string;\n stack: string | null;\n}\n\ndeclare class Symbol {\n private constructor();\n static readonly iterator: symbol;\n}\n\ndeclare class Set {\n constructor(entries?: T[]);\n has(value: T): bool;\n add(value: T): void;\n delete(value: T): bool;\n clear(): void;\n [Symbol.iterator](): Iterator;\n}\n\ndeclare class Map {\n constructor(entries?: [K, V][]);\n readonly size: i32;\n set(key: K, value: V): void;\n has(key: K): bool;\n get(key: K): V | null;\n clear(): void;\n entries(): Iterable<[K, V]>;\n keys(): Iterable;\n values(): Iterable;\n [Symbol.iterator](): Iterator<[K,V]>;\n}\n\ninterface Iterable {\n [Symbol.iterator](): Iterator;\n}\n\ninterface Iterator {}\n\ndeclare namespace console {\n /** @deprecated */\n function log(message: string): void;\n}\n'}):{},n.main=function(r,f,p){"function"==typeof f?(p=f,f={}):f||(f={});const m=f.stdout||e.stdout,g=f.stderr||e.stderr,y=f.readFile||C,b=f.writeFile||B,v=f.listFiles||N,_=f.stats||{readTime:0,readCount:0,writeTime:0,writeCount:0,parseTime:0,parseCount:0,compileTime:0,compileCount:0,emitTime:0,emitCount:0,validateTime:0,validateCount:0,optimizeTime:0,optimizeCount:0};if(!m)throw Error("'options.stdout' must be specified");if(!g)throw Error("'options.stderr' must be specified");if(!i.readFileSync){if(y===C)throw Error("'options.readFile' must be specified");if(b===B)throw Error("'options.writeFile' must be specified");if(v===N)throw Error("'options.listFiles' must be specified")}const T=u(r);if(p||(p=function(e){var n=0;return e&&(g.write(e.stack+s.EOL),n=1),n}),T.version)return m.write("Version "+n.version+(l?"-dev":"")+s.EOL),p(null);if(T.help||T._.length<1){const e=[];return Object.keys(n.options).forEach(t=>{var r=n.options[t],i=" ";for(i+="--"+t,r.aliases&&1===r.aliases[0].length&&(i+=", -"+r.aliases[0]);i.length<24;)i+=" ";Array.isArray(r.desc)?e.push(i+r.desc[0]+r.desc.slice(1).map(e=>{for(let n=0;n<24;++n)e=" "+e;return s.EOL+e}).join("")):e.push(i+r.desc)}),(T.help?m:g).write(["Version "+n.version+(l?"-dev":""),"Syntax: asc [entryFile ...] [options]","","Examples: asc hello.ts"," asc hello.ts -b hello.wasm -t hello.wat"," asc hello1.ts hello2.ts -b -O > hello.wasm","","Options:"].concat(e).join(s.EOL)+s.EOL),p(null)}const z=T.baseDir?o.resolve(T.baseDir):e.cwd(),E=o.join(".","..","std","assembly"),A=T.noLib?[]:[E];T.lib&&("string"==typeof T.lib&&(T.lib=T.lib.split(",")),Array.prototype.push.apply(A,T.lib.map(trim)));var x=null;for(let e=0,t=T._.length;e{x=a.parseFile(r,t,!0,x)});null!=(t=x.nextFile());){if(t.startsWith(n.libraryPrefix)){for(let e=0,i=A.length;e{a.parseFile(r,t,!1,x)})}if(c(x,g))return p(Error("Parse error"))}var w=!1;T.noLib||Object.keys(n.libraryFiles).forEach(e=>{e.lastIndexOf("/")>=n.libraryPrefix.length||(_.parseCount++,_.parseTime+=h(()=>{x=a.parseFile(n.libraryFiles[e],e+".ts",!1,x)}),w=!0)});for(let e=0,t=A.length;e{x=a.parseFile(s,n.libraryPrefix+i,!1,x)})}}const S=a.createOptions();var I;a.setTarget(S,0),a.setNoTreeShaking(S,!!T.noTreeShaking),a.setNoAssert(S,!!T.noAssert),a.setNoMemory(S,!!T.noMemory),a.setImportMemory(S,!!T.importMemory),a.setMemoryBase(S,T.memoryBase>>>0),a.setSourceMap(S,null!=T.sourceMap),_.compileCount++;try{_.compileTime+=h(()=>{I=a.compile(x,S)})}catch(e){return p(e)}if(c(x,g))return I&&I.dispose(),p(Error("Compile error"));if(T.validate&&(_.validateCount++,_.validateTime+=h(()=>{if(!I.validate())return I.dispose(),p(Error("Validate error"))})),"clamp"===T.trapMode)_.optimizeCount++,_.optimizeTime+=h(()=>{I.runPasses(["trap-mode-clamp"])});else if("js"===T.trapMode)_.optimizeCount++,_.optimizeTime+=h(()=>{I.runPasses(["trap-mode-js"])});else if("allow"!==T.trapMode)return I.dispose(),p(Error("Unsupported trap mode"));var L=-1,k=0,M=!T.noDebug;!1!==T.optimize&&("number"==typeof T.optimize?L=T.optimize:T[0]?L=0:T[1]?L=1:T[2]?L=2:T[3]?L=3:!0===T.optimize?(L=n.defaultOptimizeLevel,k=n.defaultShrinkLevel):L=0),T.s?k=1:T.z&&(k=2),"number"==typeof T.optimizeLevel&&(L=T.optimizeLevel),"number"==typeof T.shrinkLevel?k=T.shrinkLevel:"s"===T.shrinkLevel?k=1:"z"===T.shrinkLevel&&(k=2),I.setOptimizeLevel(L>0?L:0),I.setShrinkLevel(k),I.setDebugInfo(M);var F=[];if(T.runPasses&&("string"==typeof T.runPasses&&(T.runPasses=T.runPasses.split(",")),T.runPasses.length&&T.runPasses.forEach(e=>{F.indexOf(e)<0&&F.push(e)})),L>=0&&(_.optimizeCount++,_.optimizeTime+=h(()=>{I.optimize()})),F.length&&(_.optimizeCount++,_.optimizeTime+=h(()=>{I.runPasses(F.map(e=>e.trim()))})),!T.noEmit){let e=!1;if(null!=T.outFile&&(/\.was?t$/.test(T.outFile)&&null==T.textFile?T.textFile=T.outFile:/\.js$/.test(T.outFile)&&null==T.asmjsFile?T.asmjsFile=T.outFile:null==T.binaryFile&&(T.binaryFile=T.outFile)),null!=T.binaryFile){let t,r=null!=T.sourceMap?T.sourceMap.length?T.sourceMap:o.basename(T.binaryFile)+".map":null;if(_.emitCount++,_.emitTime+=h(()=>{t=I.toBinary(r)}),T.binaryFile.length?b(o.join(z,T.binaryFile),t.output):(R(t.output),e=!0),null!=t.sourceMap)if(T.binaryFile.length){let e=JSON.parse(t.sourceMap);e.sourceRoot=n.sourceMapRoot,e.sources.forEach((t,r)=>{let i=null;if(t.startsWith(n.libraryPrefix))for(let e=0,r=A.length;e{n=I.toText()}),b(o.join(z,T.textFile),n)):e||(_.emitCount++,_.emitTime+=h(()=>{n=I.toText()}),R(n),e=!0)}if(null!=T.asmjsFile){let n;T.asmjsFile.length?(_.emitCount++,_.emitTime+=h(()=>{n=I.toAsmjs()}),b(o.join(z,T.asmjsFile),n)):e||(_.emitCount++,_.emitTime+=h(()=>{n=I.toAsmjs()}),R(n),e=!0)}}return I.dispose(),T.measure&&d(_,g),p(null);function C(e){try{var n;return _.readCount++,_.readTime+=h(()=>{n=i.readFileSync(e,{encoding:"utf8"})}),n}catch(e){return null}}function B(e,n){try{return _.writeCount++,_.writeTime+=h(()=>{"string"==typeof n?i.writeFileSync(e,n,{encoding:"utf8"}):i.writeFileSync(e,n)}),!0}catch(e){return!1}}function N(e){var n;try{return _.readTime+=h(()=>{n=t(!function(){var e=new Error('Cannot find module "glob"');throw e.code="MODULE_NOT_FOUND",e}()).sync("*.ts",{cwd:e})}),n}catch(e){return[]}}function R(e){R.used||(_.writeCount++,R.used=!0),_.writeTime+=h(()=>{"string"==typeof e?m.write(e,{encoding:"utf8"}):m.write(e)})}},n.parseArguments=u,n.checkDiagnostics=c,n.createStats=f,e.hrtime||(e.hrtime=t(3)),n.measure=h,n.printStats=d,n.createMemoryStream=function(e){var n=[];return n.write=function(n){"string"==typeof n?this.push(r.from(n,"utf8")):this.push(n),e&&e(n)},n.toBuffer=function(){return r.concat(this)},n.toString=function(){return this.toBuffer().toString("utf8")},n},n.tscOptions={alwaysStrict:!0,noImplicitAny:!0,noImplicitReturns:!0,noImplicitThis:!0,noEmitOnError:!0,strictNullChecks:!0,experimentalDecorators:!0,target:"esnext",module:"commonjs",noLib:!0,types:[],allowJs:!1}}).call(this,t(0),t(13).Buffer)},function(e,n,t){e.exports=t(14)}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(function(){try{return require("assemblyscript")}catch(e){}}()):"function"==typeof define&&define.amd?define(["assemblyscript"],n):"object"==typeof exports?exports.asc=n(function(){try{return require("assemblyscript")}catch(e){}}()):e.asc=n(e._)}(window,function(e){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=14)}([function(e,n,t){var r,i;n.nextTick=function(e){setTimeout(e,0)},n.platform=n.arch=n.execPath=n.title="browser",n.pid=1,n.browser=!0,n.env={},n.argv=[],n.binding=function(e){throw new Error("No such module. (Possibly not yet loaded)")},i="/",n.cwd=function(){return i},n.chdir=function(e){r||(r=t(2)),i=r.resolve(e,i)},n.exit=n.kill=n.umask=n.dlopen=n.uptime=n.memoryUsage=n.uvCounters=function(){},n.features={}},function(e,n){var t;t=function(){return this}();try{t=t||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,n,t){(function(e){function t(e,n){for(var t=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),t++):t&&(e.splice(r,1),t--)}if(n)for(;t--;t)e.unshift("..");return e}var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,i=function(e){return r.exec(e).slice(1)};function o(e,n){if(e.filter)return e.filter(n);for(var t=[],r=0;r=-1&&!r;i--){var s=i>=0?arguments[i]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(n=s+"/"+n,r="/"===s.charAt(0))}return n=t(o(n.split("/"),function(e){return!!e}),!r).join("/"),(r?"/":"")+n||"."},n.normalize=function(e){var r=n.isAbsolute(e),i="/"===s(e,-1);return(e=t(o(e.split("/"),function(e){return!!e}),!r).join("/"))||r||(e="."),e&&i&&(e+="/"),(r?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(o(e,function(e,n){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var n=0;n=0&&""===e[t];t--);return n>t?[]:e.slice(n,t-n+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),o=r(t.split("/")),s=Math.min(i.length,o.length),a=s,l=0;l>1,c=-7,f=t?i-1:0,h=t?-1:1,d=e[n+f];for(f+=h,o=d&(1<<-c)-1,d>>=-c,c+=a;c>0;o=256*o+e[n+f],f+=h,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=r;c>0;s=256*s+e[n+f],f+=h,c-=8);if(0===o)o=1-u;else{if(o===l)return s?NaN:1/0*(d?-1:1);s+=Math.pow(2,r),o-=u}return(d?-1:1)*s*Math.pow(2,o-r)},n.write=function(e,n,t,r,i,o){var s,a,l,u=8*o-i-1,c=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:o-1,p=r?1:-1,m=n<0||0===n&&1/n<0?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(a=isNaN(n)?1:0,s=c):(s=Math.floor(Math.log(n)/Math.LN2),n*(l=Math.pow(2,-s))<1&&(s--,l*=2),(n+=s+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(s++,l/=2),s+f>=c?(a=0,s=c):s+f>=1?(a=(n*l-1)*Math.pow(2,i),s+=f):(a=n*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;e[t+d]=255&a,d+=p,a/=256,i-=8);for(s=s<0;e[t+d]=255&s,d+=p,s/=256,u-=8);e[t+d-p]|=128*m}},function(e,n,t){"use strict";n.byteLength=function(e){return 3*e.length/4-u(e)},n.toByteArray=function(e){var n,t,r,s,a,l=e.length;s=u(e),a=new o(3*l/4-s),t=s>0?l-4:l;var c=0;for(n=0;n>16&255,a[c++]=r>>8&255,a[c++]=255&r;2===s?(r=i[e.charCodeAt(n)]<<2|i[e.charCodeAt(n+1)]>>4,a[c++]=255&r):1===s&&(r=i[e.charCodeAt(n)]<<10|i[e.charCodeAt(n+1)]<<4|i[e.charCodeAt(n+2)]>>2,a[c++]=r>>8&255,a[c++]=255&r);return a},n.fromByteArray=function(e){for(var n,t=e.length,i=t%3,o="",s=[],a=0,l=t-i;al?l:a+16383));1===i?(n=e[t-1],o+=r[n>>2],o+=r[n<<4&63],o+="=="):2===i&&(n=(e[t-2]<<8)+e[t-1],o+=r[n>>10],o+=r[n>>4&63],o+=r[n<<2&63],o+="=");return s.push(o),s.join("")};for(var r=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,l=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[n-2]?2:"="===e[n-1]?1:0}function c(e,n,t){for(var i,o,s=[],a=n;a>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(e,n,t){"use strict";(function(e){var r=t(11),i=t(10),o=t(9);function s(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,n){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function p(e,n){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var t=e.length;if(0===t)return 0;for(var r=!1;;)switch(n){case"ascii":case"latin1":case"binary":return t;case"utf8":case"utf-8":case void 0:return D(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*t;case"hex":return t>>>1;case"base64":return V(e).length;default:if(r)return D(e).length;n=(""+n).toLowerCase(),r=!0}}function m(e,n,t){var r=e[n];e[n]=e[t],e[t]=r}function g(e,n,t,r,i){if(0===e.length)return-1;if("string"==typeof t?(r=t,t=0):t>2147483647?t=2147483647:t<-2147483648&&(t=-2147483648),t=+t,isNaN(t)&&(t=i?0:e.length-1),t<0&&(t=e.length+t),t>=e.length){if(i)return-1;t=e.length-1}else if(t<0){if(!i)return-1;t=0}if("string"==typeof n&&(n=l.from(n,r)),l.isBuffer(n))return 0===n.length?-1:y(e,n,t,r,i);if("number"==typeof n)return n&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,n,t):Uint8Array.prototype.lastIndexOf.call(e,n,t):y(e,[n],t,r,i);throw new TypeError("val must be string, number or Buffer")}function y(e,n,t,r,i){var o,s=1,a=e.length,l=n.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||n.length<2)return-1;s=2,a/=2,l/=2,t/=2}function u(e,n){return 1===s?e[n]:e.readUInt16BE(n*s)}if(i){var c=-1;for(o=t;oa&&(t=a-l),o=t;o>=0;o--){for(var f=!0,h=0;hi&&(r=i):r=i;var o=n.length;if(o%2!=0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var s=0;s>8,i=t%256,o.push(i),o.push(r);return o}(n,e.length-t),e,t,r)}function A(e,n,t){return 0===n&&t===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(n,t))}function x(e,n,t){t=Math.min(e.length,t);for(var r=[],i=n;i239?4:u>223?3:u>191?2:1;if(i+f<=t)switch(f){case 1:u<128&&(c=u);break;case 2:128==(192&(o=e[i+1]))&&(l=(31&u)<<6|63&o)>127&&(c=l);break;case 3:o=e[i+1],s=e[i+2],128==(192&o)&&128==(192&s)&&(l=(15&u)<<12|(63&o)<<6|63&s)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:o=e[i+1],s=e[i+2],a=e[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(l=(15&u)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&l<1114112&&(c=l)}null===c?(c=65533,f=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),i+=f}return function(e){var n=e.length;if(n<=w)return String.fromCharCode.apply(String,e);var t="",r=0;for(;rthis.length)return"";if((void 0===t||t>this.length)&&(t=this.length),t<=0)return"";if((t>>>=0)<=(n>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return L(this,n,t);case"utf8":case"utf-8":return x(this,n,t);case"ascii":return S(this,n,t);case"latin1":case"binary":return I(this,n,t);case"base64":return A(this,n,t);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,n,t);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",t=n.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},l.prototype.compare=function(e,n,t,r,i){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===n&&(n=0),void 0===t&&(t=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),n<0||t>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&n>=t)return 0;if(r>=i)return-1;if(n>=t)return 1;if(n>>>=0,t>>>=0,r>>>=0,i>>>=0,this===e)return 0;for(var o=i-r,s=t-n,a=Math.min(o,s),u=this.slice(r,i),c=e.slice(n,t),f=0;fi)&&(t=i),e.length>0&&(t<0||n<0)||n>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return b(this,e,n,t);case"utf8":case"utf-8":return v(this,e,n,t);case"ascii":return _(this,e,n,t);case"latin1":case"binary":return T(this,e,n,t);case"base64":return z(this,e,n,t);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,n,t);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var w=4096;function S(e,n,t){var r="";t=Math.min(e.length,t);for(var i=n;ir)&&(t=r);for(var i="",o=n;ot)throw new RangeError("Trying to access beyond buffer length")}function F(e,n,t,r,i,o){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(n>i||ne.length)throw new RangeError("Index out of range")}function C(e,n,t,r){n<0&&(n=65535+n+1);for(var i=0,o=Math.min(e.length-t,2);i>>8*(r?i:1-i)}function B(e,n,t,r){n<0&&(n=4294967295+n+1);for(var i=0,o=Math.min(e.length-t,4);i>>8*(r?i:3-i)&255}function N(e,n,t,r,i,o){if(t+r>e.length)throw new RangeError("Index out of range");if(t<0)throw new RangeError("Index out of range")}function R(e,n,t,r,o){return o||N(e,0,t,4),i.write(e,n,t,r,23,4),t+4}function O(e,n,t,r,o){return o||N(e,0,t,8),i.write(e,n,t,r,52,8),t+8}l.prototype.slice=function(e,n){var t,r=this.length;if(e=~~e,n=void 0===n?r:~~n,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),n<0?(n+=r)<0&&(n=0):n>r&&(n=r),n0&&(i*=256);)r+=this[e+--n]*i;return r},l.prototype.readUInt8=function(e,n){return n||M(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,n){return n||M(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,n){return n||M(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,n){return n||M(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,n){return n||M(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,n,t){e|=0,n|=0,t||M(e,n,this.length);for(var r=this[e],i=1,o=0;++o=(i*=128)&&(r-=Math.pow(2,8*n)),r},l.prototype.readIntBE=function(e,n,t){e|=0,n|=0,t||M(e,n,this.length);for(var r=n,i=1,o=this[e+--r];r>0&&(i*=256);)o+=this[e+--r]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*n)),o},l.prototype.readInt8=function(e,n){return n||M(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,n){n||M(e,2,this.length);var t=this[e]|this[e+1]<<8;return 32768&t?4294901760|t:t},l.prototype.readInt16BE=function(e,n){n||M(e,2,this.length);var t=this[e+1]|this[e]<<8;return 32768&t?4294901760|t:t},l.prototype.readInt32LE=function(e,n){return n||M(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,n){return n||M(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,n){return n||M(e,4,this.length),i.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,n){return n||M(e,4,this.length),i.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,n){return n||M(e,8,this.length),i.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,n){return n||M(e,8,this.length),i.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,n,t,r){(e=+e,n|=0,t|=0,r)||F(this,e,n,t,Math.pow(2,8*t)-1,0);var i=1,o=0;for(this[n]=255&e;++o=0&&(o*=256);)this[n+i]=e/o&255;return n+t},l.prototype.writeUInt8=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[n]=255&e,n+1},l.prototype.writeUInt16LE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8):C(this,e,n,!0),n+2},l.prototype.writeUInt16BE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=255&e):C(this,e,n,!1),n+2},l.prototype.writeUInt32LE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[n+3]=e>>>24,this[n+2]=e>>>16,this[n+1]=e>>>8,this[n]=255&e):B(this,e,n,!0),n+4},l.prototype.writeUInt32BE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=255&e):B(this,e,n,!1),n+4},l.prototype.writeIntLE=function(e,n,t,r){if(e=+e,n|=0,!r){var i=Math.pow(2,8*t-1);F(this,e,n,t,i-1,-i)}var o=0,s=1,a=0;for(this[n]=255&e;++o>0)-a&255;return n+t},l.prototype.writeIntBE=function(e,n,t,r){if(e=+e,n|=0,!r){var i=Math.pow(2,8*t-1);F(this,e,n,t,i-1,-i)}var o=t-1,s=1,a=0;for(this[n+o]=255&e;--o>=0&&(s*=256);)e<0&&0===a&&0!==this[n+o+1]&&(a=1),this[n+o]=(e/s>>0)-a&255;return n+t},l.prototype.writeInt8=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[n]=255&e,n+1},l.prototype.writeInt16LE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8):C(this,e,n,!0),n+2},l.prototype.writeInt16BE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=255&e):C(this,e,n,!1),n+2},l.prototype.writeInt32LE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8,this[n+2]=e>>>16,this[n+3]=e>>>24):B(this,e,n,!0),n+4},l.prototype.writeInt32BE=function(e,n,t){return e=+e,n|=0,t||F(this,e,n,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=255&e):B(this,e,n,!1),n+4},l.prototype.writeFloatLE=function(e,n,t){return R(this,e,n,!0,t)},l.prototype.writeFloatBE=function(e,n,t){return R(this,e,n,!1,t)},l.prototype.writeDoubleLE=function(e,n,t){return O(this,e,n,!0,t)},l.prototype.writeDoubleBE=function(e,n,t){return O(this,e,n,!1,t)},l.prototype.copy=function(e,n,t,r){if(t||(t=0),r||0===r||(r=this.length),n>=e.length&&(n=e.length),n||(n=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-n=0;--i)e[i+n]=this[i+t];else if(o<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,t=void 0===t?this.length:t>>>0,e||(e=0),"number"==typeof e)for(o=n;o55295&&t<57344){if(!i){if(t>56319){(n-=3)>-1&&o.push(239,191,189);continue}if(s+1===r){(n-=3)>-1&&o.push(239,191,189);continue}i=t;continue}if(t<56320){(n-=3)>-1&&o.push(239,191,189),i=t;continue}t=65536+(i-55296<<10|t-56320)}else i&&(n-=3)>-1&&o.push(239,191,189);if(i=null,t<128){if((n-=1)<0)break;o.push(t)}else if(t<2048){if((n-=2)<0)break;o.push(t>>6|192,63&t|128)}else if(t<65536){if((n-=3)<0)break;o.push(t>>12|224,t>>6&63|128,63&t|128)}else{if(!(t<1114112))throw new Error("Invalid code point");if((n-=4)<0)break;o.push(t>>18|240,t>>12&63|128,t>>6&63|128,63&t|128)}}return o}function V(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(P,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function j(e,n,t,r){for(var i=0;i=n.length||i>=e.length);++i)n[i+t]=e[i];return i}}).call(this,t(1))},function(e,n,t){(function(e,r){const i=t(8),o=t(2),s=t(7);var a,l;try{a=t(6),l=!1;try{t(!function(){var e=new Error('Cannot find module "source-map-support"');throw e.code="MODULE_NOT_FOUND",e}()).install()}catch(e){}}catch(e){try{t(!function(){var e=new Error('Cannot find module "ts-node"');throw e.code="MODULE_NOT_FOUND",e}()).register({project:o.join(".","..","src","tsconfig.json")}),t(!function(){var e=new Error('Cannot find module "../src/glue/js"');throw e.code="MODULE_NOT_FOUND",e}()),a=t(!function(){var e=new Error('Cannot find module "../src"');throw e.code="MODULE_NOT_FOUND",e}()),l=!0}catch(e){a=t(!function(){var e=new Error('Cannot find module "./assemblyscript"');throw e.code="MODULE_NOT_FOUND",e}()),l=!1}}function u(e){const r={};return Object.keys(n.options).forEach(e=>{const t=n.options[e];t.aliases&&((r.alias||(r.alias={}))[e]=t.aliases),void 0!==t.default&&((r.default||(r.default={}))[e]=t.default),"string"===t.type?(r.string||(r.string=[])).push(e):"boolean"===t.type&&(r.boolean||(r.boolean=[])).push(e)}),t(4)(e,r)}function c(e,n){for(var t,r=!1;null!=(t=a.nextDiagnostic(e));)n.write(a.formatDiagnostic(t,n.isTTY,!0)+s.EOL+s.EOL),a.isError(t)&&(r=!0);return r}function f(){return{readTime:0,readCount:0,writeTime:0,writeCount:0,parseTime:0,parseCount:0,compileTime:0,compileCount:0,emitTime:0,emitCount:0,validateTime:0,validateCount:0,optimizeTime:0,optimizeCount:0}}function h(n){const t=e.hrtime();n();const r=e.hrtime(t);return 1e9*r[0]+r[1]}function d(n,t){function r(e,n){return e?(e/1e6).toFixed(3)+" ms":"N/A"}(t||e.stdout).write(["I/O Read : "+r(n.readTime,n.readCount),"I/O Write : "+r(n.writeTime,n.writeCount),"Parse : "+r(n.parseTime,n.parseCount),"Compile : "+r(n.compileTime,n.compileCount),"Emit : "+r(n.emitTime,n.emitCount),"Validate : "+r(n.validateTime,n.validateCount),"Optimize : "+r(n.optimizeTime,n.optimizeCount)].join(s.EOL)+s.EOL)}n.isBundle=!0,n.isDev=l,n.version=n.isBundle?"0.5.0":t(!function(){var e=new Error('Cannot find module "../package.json"');throw e.code="MODULE_NOT_FOUND",e}()).version,n.options=t(5),n.sourceMapRoot="assemblyscript:///",n.libraryPrefix=a.LIBRARY_PREFIX,n.defaultOptimizeLevel=2,n.defaultShrinkLevel=1,n.libraryFiles=n.isBundle?Object({"(lib)/allocator/arena":"/////////////// A simple yet effective Arena Memory Allocator /////////////////\n\n// Provides a `reset_memory` function to reset the heap to its initial state. A\n// user has to make sure that there are no more references to cleared memory\n// afterwards. Always aligns to 8 bytes.\n\nconst ALIGN_LOG2: usize = 3;\nconst ALIGN_SIZE: usize = 1 << ALIGN_LOG2;\nconst ALIGN_MASK: usize = ALIGN_SIZE - 1;\n\nvar HEAP_OFFSET: usize = HEAP_BASE;\n\n@global\nexport function allocate_memory(size: usize): usize {\n if (!size) return 0;\n var ptr = HEAP_OFFSET;\n var off = (ptr + size + ALIGN_MASK) & ~ALIGN_MASK;\n var avail = current_memory() << 16;\n if (off > avail && grow_memory(\n max(\n (((off + 0xffff) & ~0xffff) - avail) >> 16, // minimum required pages\n avail >> 16 // at least double memory\n )\n ) < 0) unreachable(); // out of memory\n HEAP_OFFSET = off;\n return ptr;\n}\n\n@global\nexport function free_memory(ptr: usize): void {\n // nop\n}\n\n@global\nexport function reset_memory(): void {\n HEAP_OFFSET = HEAP_BASE;\n}\n","(lib)/allocator/emscripten":"///////////////////////// Emscripten Memory Allocator //////////////////////////\n\n// Uses Emscripten's exported _malloc and _free implementations, i.e., when\n// linking with Emscripten-compiled programs that already provide these.\n// Differs from 'system' in that their names are prefixed with an underscore.\n\ndeclare function _malloc(size: usize): usize;\ndeclare function _free(ptr: usize): void;\n\n@global\nexport function allocate_memory(size: usize): usize {\n return _malloc(size);\n}\n\n@global\nexport function free_memory(ptr: usize): void {\n _free(ptr);\n}\n\n@global\nexport { reset_memory } from \"./none\";\n","(lib)/allocator/none":'export function allocate_memory(size: usize): usize {\n throw new Error("not supported");\n}\n\nexport function free_memory(ptr: usize): void {\n throw new Error("not supported");\n}\n\nexport function reset_memory(): void {\n throw new Error("not supported");\n}\n',"(lib)/allocator/system":'/////////////////////////// System Memory Allocator ////////////////////////////\n\n// Uses the environment\'s malloc and free implementations, i.e., when linking\n// with other C-like programs that already provide these.\n\ndeclare function malloc(size: usize): usize;\ndeclare function free(ptr: usize): void;\n\n@global\nexport function allocate_memory(size: usize): usize {\n return malloc(size);\n}\n\n@global\nexport function free_memory(ptr: usize): void {\n free(ptr);\n}\n\n@global\nexport { reset_memory } from "./none";\n',"(lib)/allocator/tlsf":"////////////// TLSF (Two-Level Segregate Fit) Memory Allocator ////////////////\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─┴─╫─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴─────────╨─────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\nconst AL_BITS: u32 = sizeof() == sizeof() ? 2 : 3;\nconst AL_SIZE: usize = 1 << AL_BITS;\nconst AL_MASK: usize = AL_SIZE - 1;\n\nconst SL_BITS: u32 = 5;\nconst SL_SIZE: usize = 1 << SL_BITS;\n\nconst SB_BITS: usize = (SL_BITS + AL_BITS);\nconst SB_SIZE: usize = 1 << SB_BITS;\n\nconst FL_BITS: u32 = (sizeof() == sizeof()\n ? 30 // ^= up to 1GB per block\n : 32 // ^= up to 4GB per block\n) - SB_BITS;\n\n// ╒════════════════ Block structure layout (32-bit) ══════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┤\n// │ size │L│F│ ◄─┐\n// ╞═══════════════════════════════════════════════════════════╧═╧═╡ │ ┐\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... unused free space >= 0 ... │ │ = 0\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ │\n// │ if free: jump ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ MIN SIZE ┘\n// F: FREE, L: LEFT_FREE\n\n/** Tag indicating that this block is free. */\nconst FREE: usize = 1 << 0;\n/** Tag indicating that this block's left block is free. */\nconst LEFT_FREE: usize = 1 << 1;\n/** Mask to obtain all tags. */\nconst TAGS: usize = FREE | LEFT_FREE;\n\nassert(AL_BITS >= 2); // alignment must be large enough to store all tags\n\n/** Block structure. */\n@unmanaged\nclass Block {\n\n /** Info field holding this block's size and tags. */\n info: usize;\n\n /** End offset of the {@link Block#info} field. User data starts here. */\n static readonly INFO: usize = sizeof();\n\n /** Previous free block, if any. Only valid if free. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free. */\n next: Block | null;\n\n /** Minimum size of a block, excluding {@link Block#info}. */\n static readonly MIN_SIZE: usize = 3 * sizeof(); // prev + next + jump\n\n /** Maximum size of a used block, excluding {@link Block#info}. */\n static readonly MAX_SIZE: usize = 1 << (FL_BITS + SB_BITS);\n\n /** Gets this block's left (free) block in memory. */\n get left(): Block {\n assert(this.info & LEFT_FREE); // must be free to contain a jump\n return assert(\n load(changetype(this) - sizeof())\n ); // can't be null\n }\n\n /** Gets this block's right block in memory. */\n get right(): Block {\n assert(this.info & ~TAGS); // can't skip beyond the tail block\n return assert(\n changetype(\n changetype(this) + Block.INFO + (this.info & ~TAGS)\n )\n ); // can't be null\n }\n}\n\n// ╒════════════════ Root structure layout (32-bit) ═══════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ ... │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[22] P │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[736] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tailRef │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map, P: Possibly padded if 64-bit\n\nassert((1 << SL_BITS) <= 32); // second level must fit into 32 bits\n\n/** Root structure. */\n@unmanaged\nclass Root {\n\n /** First level bitmap. */\n flMap: usize = 0;\n\n /** Start offset of second level maps. */\n private static readonly SL_START: usize = sizeof();\n\n // Using *one* SL map per *FL bit*\n\n /** Gets the second level map for the specified first level. */\n getSLMap(fl: usize): u32 {\n assert(fl < FL_BITS); // fl out of range\n return load(changetype(this) + fl * 4, Root.SL_START);\n }\n\n /** Sets the second level map for the specified first level. */\n setSLMap(fl: usize, value: u32): void {\n assert(fl < FL_BITS); // fl out of range\n store(changetype(this) + fl * 4, value, Root.SL_START);\n }\n\n /** End offset of second level maps. */\n private static readonly SL_END: usize = Root.SL_START + FL_BITS * 4;\n\n // Using *number bits per SL* heads per *FL bit*\n\n /** Start offset of FL/SL heads. */\n private static readonly HL_START: usize = (Root.SL_END + AL_MASK) & ~AL_MASK;\n\n /** Gets the head of the specified first and second level index. */\n getHead(fl: usize, sl: u32): Block | null {\n assert(fl < FL_BITS); // fl out of range\n assert(sl < SL_SIZE); // sl out of range\n return changetype(load(\n changetype(this) + (fl * SL_SIZE + sl) * sizeof()\n , Root.HL_START));\n }\n\n /** Sets the head of the specified first and second level index. */\n setHead(fl: usize, sl: u32, value: Block | null): void {\n assert(fl < FL_BITS); // fl out of range\n assert(sl < SL_SIZE); // sl out of range\n store(\n changetype(this) + (fl * SL_SIZE + sl) * sizeof()\n , changetype(value)\n , Root.HL_START);\n }\n\n /** End offset of FL/SL heads. */\n private static readonly HL_END: usize = (\n Root.HL_START + FL_BITS * SL_SIZE * sizeof()\n );\n\n get tailRef(): usize { return load(0, Root.HL_END); }\n set tailRef(value: usize) { store(0, value, Root.HL_END); }\n\n /** Total size of the {@link Root} structure. */\n static readonly SIZE: usize = Root.HL_END + sizeof();\n\n /** Inserts a previously used block back into the free list. */\n insert(block: Block): void {\n // check as much as possible here to prevent invalid free blocks\n assert(block); // cannot be null\n var blockInfo = block.info;\n assert(blockInfo & FREE); // must be free\n var size: usize;\n assert(\n (size = block.info & ~TAGS) >= Block.MIN_SIZE && size < Block.MAX_SIZE\n ); // must be valid, not necessary to compute yet if noAssert=true\n\n var right: Block = assert(block.right); // can't be null\n var rightInfo = right.info;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n this.remove(right);\n block.info = (blockInfo += Block.INFO + (rightInfo & ~TAGS));\n right = block.right;\n rightInfo = right.info;\n // jump is set below\n }\n\n // merge with left block if also free\n if (blockInfo & LEFT_FREE) {\n var left: Block = assert(block.left); // can't be null\n var leftInfo = left.info;\n assert(leftInfo & FREE); // must be free according to tags\n this.remove(left);\n left.info = (leftInfo += Block.INFO + (blockInfo & ~TAGS));\n block = left;\n blockInfo = leftInfo;\n // jump is set below\n }\n\n right.info = rightInfo | LEFT_FREE;\n this.setJump(block, right);\n // right is no longer used now, hence rightInfo is not synced\n\n size = blockInfo & ~TAGS;\n assert(size >= Block.MIN_SIZE && size < Block.MAX_SIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size / AL_SIZE);\n } else {\n fl = fls(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n\n // perform insertion\n var head = this.getHead(fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n this.setHead(fl, sl, block);\n\n // update first and second level maps\n this.flMap |= (1 << fl);\n this.setSLMap(fl, this.getSLMap(fl) | (1 << sl));\n }\n\n /**\n * Removes a free block from FL/SL maps. Does not alter left/jump because it\n * is likely that splitting is performed afterwards, invalidating any changes\n * again.\n */\n private remove(block: Block): void {\n var blockInfo = block.info;\n assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS;\n assert(size >= Block.MIN_SIZE && size < Block.MAX_SIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size / AL_SIZE);\n } else {\n fl = fls(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == this.getHead(fl, sl)) {\n this.setHead(fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n var slMap = this.getSLMap(fl);\n this.setSLMap(fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) this.flMap &= ~(1 << fl);\n }\n }\n }\n\n /** Searches for a free block of at least the specified size. */\n search(size: usize): Block | null {\n assert(size >= Block.MIN_SIZE && size < Block.MAX_SIZE);\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size / AL_SIZE);\n } else {\n // (*) size += (1 << (fls(size) - SL_BITS)) - 1;\n fl = fls(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n // (*) instead of rounding up, use next second level list for better fit\n if (sl < SL_SIZE - 1) ++sl;\n else ++fl, sl = 0;\n }\n\n // search second level\n var slMap = this.getSLMap(fl) & (~0 << sl);\n var head: Block | null;\n if (!slMap) {\n // search next larger first level\n var flMap = this.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ffs(flMap);\n slMap = assert(this.getSLMap(fl)); // can't be zero if fl points here\n head = this.getHead(fl, ffs(slMap));\n }\n } else {\n head = this.getHead(fl, ffs(slMap));\n }\n return head;\n }\n\n /** Links a free left with its right block in memory. */\n private setJump(left: Block, right: Block): void {\n assert(left.info & FREE); // must be free\n assert(left.right == right); // right block must match\n assert(right.info & LEFT_FREE); // right block must be tagged as LEFT_FREE\n store(\n changetype(right) - sizeof()\n , left); // last word in left block's (free) data region\n }\n\n /**\n * Uses the specified free block, removing it from internal maps and\n * splitting it if possible, and returns its data pointer.\n */\n use(block: Block, size: usize): usize {\n var blockInfo = block.info;\n assert(blockInfo & FREE); // must be free so we can use it\n assert(size >= Block.MIN_SIZE && size < Block.MAX_SIZE); // must be valid\n assert(!(size & AL_MASK)); // size must be aligned so the new block is\n\n this.remove(block);\n\n // split if the block can hold another MIN_SIZE block\n var remaining = (blockInfo & ~TAGS) - size;\n if (remaining >= Block.INFO + Block.MIN_SIZE) {\n block.info = size | (blockInfo & LEFT_FREE); // also discards FREE\n\n var spare = changetype(\n changetype(block) + Block.INFO + size\n );\n spare.info = (remaining - Block.INFO) | FREE; // not LEFT_FREE\n this.insert(spare); // also sets jump\n\n // otherwise tag block as no longer FREE and right as no longer LEFT_FREE\n } else {\n block.info = blockInfo & ~FREE;\n var right: Block = assert(block.right); // can't be null (tail)\n right.info &= ~LEFT_FREE;\n }\n\n return changetype(block) + Block.INFO;\n }\n\n /** Adds more memory to the pool. */\n addMemory(start: usize, end: usize): bool {\n assert(start <= end);\n assert(!(start & AL_MASK)); // must be aligned\n assert(!(end & AL_MASK)); // must be aligned\n\n var tailRef = this.tailRef;\n var tailInfo: usize = 0;\n if (tailRef) {\n assert(start >= tailRef + sizeof()); // starts after tail\n\n // merge with current tail if adjacent\n if (start - Block.INFO == tailRef) {\n start -= Block.INFO;\n tailInfo = changetype(tailRef).info;\n }\n\n } else {\n assert(start >= changetype(this) + Root.SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < Block.INFO + Block.MIN_SIZE + Block.INFO) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - 2 * Block.INFO;\n var left = changetype(start);\n left.info = leftSize | FREE | (tailInfo & LEFT_FREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n var tail = changetype(start + size - Block.INFO);\n tail.info = 0 | LEFT_FREE;\n this.tailRef = changetype(tail);\n\n this.insert(left); // also merges with free left before tail / sets jump\n\n return true;\n }\n}\n\n/** Determines the first (LSB to MSB) set bit's index of a word. */\nfunction ffs(word: T): T {\n assert(word != 0); // word cannot be 0\n return ctz(word); // differs from ffs only for 0\n}\n\n/** Determines the last (LSB to MSB) set bit's index of a word. */\nfunction fls(word: T): T {\n assert(word != 0); // word cannot be 0\n const inv: T = (sizeof() << 3) - 1;\n return inv - clz(word);\n}\n\n/** Reference to the initialized {@link Root} structure, once initialized. */\nvar ROOT: Root = changetype(0);\n\n// External interface\n\n/** Allocates a chunk of memory. */\n@global\nexport function allocate_memory(size: usize): usize {\n\n // initialize if necessary\n var root = ROOT;\n if (!root) {\n var rootOffset = (HEAP_BASE + AL_MASK) & ~AL_MASK;\n ROOT = root = changetype(rootOffset);\n root.tailRef = 0;\n root.flMap = 0;\n for (var fl: usize = 0; fl < FL_BITS; ++fl) {\n root.setSLMap(fl, 0);\n for (var sl: u32 = 0; sl < SL_SIZE; ++sl) {\n root.setHead(fl, sl, null);\n }\n }\n root.addMemory(rootOffset + Root.SIZE, current_memory() << 16);\n }\n\n // search for a suitable block\n var data: usize = 0;\n if (size && size < Block.MAX_SIZE) {\n size = max((size + AL_MASK) & ~AL_MASK, Block.MIN_SIZE);\n\n var block = root.search(size);\n if (!block) {\n\n // request more memory\n var pagesBefore = current_memory();\n var pagesNeeded = ((size + 0xffff) & ~0xffff) >>> 16;\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (grow_memory(pagesWanted) < 0) {\n if (grow_memory(pagesNeeded) < 0) {\n unreachable(); // out of memory\n }\n }\n var pagesAfter = current_memory();\n root.addMemory(pagesBefore << 16, pagesAfter << 16);\n block = assert(root.search(size)); // must be found now\n }\n\n assert((block.info & ~TAGS) >= size);\n data = root.use(block, size);\n }\n\n return data;\n}\n\n/** Frees the chunk of memory at the specified address. */\n@global\nexport function free_memory(data: usize): void {\n if (data) {\n var root = ROOT;\n if (root) {\n var block = changetype(data - Block.INFO);\n var blockInfo = block.info;\n assert(!(blockInfo & FREE)); // must be used\n block.info = blockInfo | FREE;\n root.insert(changetype(data - Block.INFO));\n }\n }\n}\n\nexport { reset_memory } from \"./none\";\n","(lib)/array":'export class Array {\n\n private __memory: usize;\n private __capacity: i32; // capped to [0, 0x7fffffff]\n private __length: i32; // capped to [0, __capacity]\n\n private __grow(newCapacity: i32): void {\n assert(newCapacity > this.__capacity);\n var newMemory = allocate_memory(newCapacity * sizeof());\n if (this.__memory) {\n move_memory(newMemory, this.__memory, this.__capacity * sizeof());\n free_memory(this.__memory);\n }\n this.__memory = newMemory;\n this.__capacity = newCapacity;\n }\n\n constructor(capacity: i32 = 0) {\n if (capacity < 0) {\n throw new RangeError("Invalid array length");\n }\n this.__memory = capacity\n ? allocate_memory(capacity * sizeof())\n : 0;\n this.__capacity = this.__length = capacity;\n }\n\n get length(): i32 {\n return this.__length;\n }\n\n set length(length: i32) {\n if (length < 0) {\n throw new RangeError("Invalid array length");\n }\n if (length > this.__capacity) {\n this.__grow(max(length, this.__capacity << 1));\n }\n this.__length = length;\n }\n\n @operator("[]")\n private __get(index: i32): T {\n if (index >= this.__capacity) {\n throw new Error("Index out of bounds"); // return changetype(0) ?\n }\n return load(this.__memory + index * sizeof());\n }\n\n @operator("[]=")\n private __set(index: i32, value: T): void {\n if (index < 0) {\n throw new Error("Index out of bounds");\n }\n if (index >= this.__capacity) {\n this.__grow(max(index + 1, this.__capacity << 1));\n }\n store(this.__memory + index * sizeof(), value);\n }\n\n indexOf(searchElement: T, fromIndex: i32 = 0): i32 {\n if (fromIndex < 0) {\n fromIndex = this.__length + fromIndex;\n }\n while (fromIndex < this.__length) {\n if (load(this.__memory + fromIndex * sizeof()) == searchElement) {\n return fromIndex;\n }\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(searchElement: T, fromIndex: i32 = 0): i32 {\n if (fromIndex < 0) {\n fromIndex = this.__length + fromIndex;\n } else if (fromIndex >= this.__length) {\n fromIndex = this.__length - 1;\n }\n while (fromIndex >= 0) {\n if (load(this.__memory + fromIndex * sizeof()) == searchElement) {\n return fromIndex;\n }\n --fromIndex;\n }\n return -1;\n }\n\n push(element: T): i32 {\n if (this.__length == this.__capacity) {\n this.__grow(this.__capacity ? this.__capacity << 1 : 1);\n }\n store(this.__memory + this.__length * sizeof(), element);\n return ++this.__length;\n }\n\n pop(): T {\n if (this.__length < 1) {\n throw new RangeError("Array is empty"); // return changetype(0) ?\n }\n return load(this.__memory + --this.__length * sizeof());\n }\n\n shift(): T {\n if (this.__length < 1) {\n throw new RangeError("Array is empty"); // return changetype(0) ?\n }\n var element = load(this.__memory);\n move_memory(\n this.__memory,\n this.__memory + sizeof(),\n (this.__capacity - 1) * sizeof()\n );\n set_memory(\n this.__memory + (this.__capacity - 1) * sizeof(),\n 0,\n sizeof()\n );\n --this.__length;\n return element;\n }\n\n unshift(element: T): i32 {\n var oldCapacity = this.__capacity;\n if (this.__length == oldCapacity) {\n // inlined __grow (avoids moving twice)\n var newCapacity: i32 = oldCapacity ? oldCapacity << 1 : 1;\n assert(newCapacity > this.__capacity);\n var newMemory = allocate_memory(newCapacity * sizeof());\n if (this.__memory) {\n move_memory(\n newMemory + sizeof(),\n this.__memory,\n oldCapacity * sizeof()\n );\n free_memory(this.__memory);\n }\n this.__memory = newMemory;\n this.__capacity = newCapacity;\n } else {\n move_memory(\n this.__memory + sizeof(),\n this.__memory,\n oldCapacity * sizeof()\n );\n }\n store(this.__memory, element);\n return ++this.__length;\n }\n\n slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n if (begin < 0) {\n begin = this.__length + begin;\n if (begin < 0) {\n begin = 0;\n }\n } else if (begin > this.__length) {\n begin = this.__length;\n }\n if (end < 0) {\n end = this.__length + end;\n } else if (end > this.__length) {\n end = this.__length;\n }\n if (end < begin) {\n end = begin;\n }\n var capacity = end - begin;\n assert(capacity >= 0);\n var sliced = new Array(capacity);\n if (capacity) {\n move_memory(\n sliced.__memory,\n this.__memory + begin * sizeof(),\n capacity * sizeof()\n );\n }\n return sliced;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): void {\n if (deleteCount < 1) {\n return;\n }\n if (start < 0) {\n start = this.__length + start;\n if (start < 0) {\n start = 0;\n } else if (start >= this.__length) {\n return;\n }\n } else if (start >= this.__length) {\n return;\n }\n deleteCount = min(deleteCount, this.__length - start);\n move_memory(\n this.__memory + start * sizeof(),\n this.__memory + (start + deleteCount) * sizeof(),\n deleteCount * sizeof()\n );\n this.__length -= deleteCount;\n }\n\n reverse(): Array {\n for (var front: usize = 0, back: usize = this.__length - 1; front < back; ++front, --back) {\n var temp = load(this.__memory + front * sizeof());\n store(this.__memory + front * sizeof(), load(this.__memory + back * sizeof()));\n store(this.__memory + back * sizeof(), temp);\n }\n return this;\n }\n}\n\n@unmanaged\nexport class CArray {\n\n private constructor() {}\n\n @operator("[]")\n private __get(index: i32): T {\n if (index < 0) {\n throw new RangeError("Index out of range");\n }\n return load(changetype(this) + index * sizeof());\n }\n\n @operator("[]=")\n private __set(index: i32, value: T): void {\n if (index < 0) {\n throw new RangeError("Index out of range");\n }\n store(changetype(this) + index * sizeof(), value);\n }\n}\n',"(lib)/builtins":"@builtin\nexport declare const NaN: f64; // | f32\n\n@builtin\nexport declare const Infinity: f64; // | f32\n\n@builtin\nexport declare function isNaN(value: T): bool;\n\n@builtin\nexport declare function isFinite(value: T): bool;\n\n@builtin\nexport declare function clz(value: T): T;\n\n@builtin\nexport declare function ctz(value: T): T;\n\n@builtin\nexport declare function popcnt(value: T): T;\n\n@builtin\nexport declare function rotl(value: T, shift: T): T;\n\n@builtin\nexport declare function rotr(value: T, shift: T): T;\n\n@builtin\nexport declare function abs(value: T): T;\n\n@builtin\nexport declare function max(left: T, right: T): T;\n\n@builtin\nexport declare function min(left: T, right: T): T;\n\n@builtin\nexport declare function ceil(value: T): T;\n\n@builtin\nexport declare function floor(value: T): T;\n\n@builtin\nexport declare function copysign(left: T, right: T): T;\n\n@builtin\nexport declare function nearest(left: T, right: T): T;\n\n@builtin\nexport declare function reinterpret(value: void): T;\n\n@builtin\nexport declare function sqrt(value: T): T;\n\n@builtin\nexport declare function trunc(value: T): T;\n\n@builtin\nexport declare function load(offset: usize, constantOffset?: usize): T;\n\n@builtin\nexport declare function store(offset: usize, value: void, constantOffset?: usize): T;\n\n@builtin\nexport declare function sizeof(): usize;\n\n@builtin\nexport declare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n\n@builtin\nexport declare function unreachable(): void;\n\n@builtin\nexport declare function current_memory(): i32;\n\n@builtin\nexport declare function grow_memory(pages: i32): i32;\n\n// @builtin\n// export declare function move_memory(dest: usize, src: usize: n: usize): void;\n\n// @builtin\n// export declare function set_memory(dest: usize, value: u32, n: usize): void;\n\n@builtin\nexport declare function changetype(value: void): T;\n\n@builtin\nexport declare function assert(isTrueish: T, message?: string): T;\n\n@builtin\nexport declare function abort(\n message?: string | null,\n fileName?: string | null,\n lineNumber?: u32,\n columnNumber?: u32\n): void;\n\n@builtin\ndeclare function i8(value: void): i8;\nnamespace i8 {\n export const MIN_VALUE: i8 = -128;\n export const MAX_VALUE: i8 = 127;\n}\nexport { i8 };\n\n@builtin\ndeclare function i16(value: void): i16;\nnamespace i16 {\n export const MIN_VALUE: i16 = -32768;\n export const MAX_VALUE: i16 = 32767;\n}\nexport { i16 };\n\n@builtin\ndeclare function i32(value: void): i32;\nnamespace i32 {\n export const MIN_VALUE: i32 = -2147483648;\n export const MAX_VALUE: i32 = 2147483647;\n}\nexport { i32 };\n\n@builtin\ndeclare function i64(value: void): i64;\nnamespace i64 {\n export const MIN_VALUE: i64 = -9223372036854775808;\n export const MAX_VALUE: i64 = 9223372036854775807;\n}\nexport { i64 };\n\n@builtin\ndeclare function isize(value: void): isize;\nnamespace isize {\n export const MIN_VALUE: isize = sizeof() == sizeof()\n ? -2147483648\n : -9223372036854775808;\n export const MAX_VALUE: isize = sizeof() == sizeof()\n ? 2147483647\n : 9223372036854775807;\n}\nexport { isize };\n\n@builtin\ndeclare function u8(value: void): u8;\nnamespace u8 {\n export const MIN_VALUE: u8 = 0;\n export const MAX_VALUE: u8 = 255;\n}\nexport { u8 };\n\n@builtin\ndeclare function u16(value: void): u16;\nnamespace u16 {\n export const MIN_VALUE: u16 = 0;\n export const MAX_VALUE: u16 = 65535;\n}\nexport { u16 };\n\n@builtin\ndeclare function u32(value: void): u32;\nnamespace u32 {\n export const MIN_VALUE: u32 = 0;\n export const MAX_VALUE: u32 = 4294967295;\n}\nexport { u32 };\n\n@builtin\ndeclare function u64(value: void): u64;\nnamespace u64 {\n export const MIN_VALUE: u64 = 0;\n export const MAX_VALUE: u64 = 18446744073709551615;\n}\nexport { u64 };\n\n@builtin\ndeclare function usize(value: void): usize;\nnamespace usize {\n export const MIN_VALUE: usize = 0;\n export const MAX_VALUE: usize = sizeof() == sizeof()\n ? 4294967295\n : 18446744073709551615;\n}\nexport { usize };\n\n@builtin\ndeclare function bool(value: void): bool;\nnamespace bool {\n export const MIN_VALUE: bool = false;\n export const MAX_VALUE: bool = true;\n}\nexport { bool };\n\n@builtin\ndeclare function f32(value: void): f32;\nnamespace f32 {\n export const MIN_VALUE: f32 = -3.40282347e+38;\n export const MAX_VALUE: f32 = 3.40282347e+38;\n export const MIN_SAFE_INTEGER: f32 = -16777215;\n export const MAX_SAFE_INTEGER: f32 = 16777215;\n export const EPSILON: f32 = 1.19209290e-07;\n}\nexport { f32 };\n\n@builtin\ndeclare function f64(value: void): f64;\nnamespace f64 {\n export const MIN_VALUE: f64 = -1.7976931348623157e+308;\n export const MAX_VALUE: f64 = 1.7976931348623157e+308;\n export const MIN_SAFE_INTEGER: f64 = -9007199254740991;\n export const MAX_SAFE_INTEGER: f64 = 9007199254740991;\n export const EPSILON: f64 = 2.2204460492503131e-16;\n}\nexport{ f64 };\n\n@builtin\nexport declare const HEAP_BASE: usize;\n\n@builtin\nexport declare function start(): void;\n","(lib)/error":'export class Error {\n\n name: string = "Error";\n message: string;\n stack: string = ""; // TODO\n\n constructor(message: string = "") {\n this.message = message;\n }\n}\n\nexport class RangeError extends Error {\n name: string = "RangeError";\n}\n\nexport class TypeError extends Error {\n name: string = "TypeError";\n}\n',"(lib)/iterator":"// export abstract class Iterator {\n// abstract get done(): bool;\n// abstract next(): T;\n// }\n","(lib)/map":"export class Map {\n\n private __keys: K[] = [];\n private __values: V[] = [];\n\n // FIXME: not a proper map implementation, just a filler\n\n get size(): i32 {\n return this.__keys.length;\n }\n\n get(key: K): V | null {\n var keys = this.__keys;\n for (var i = 0, k = keys.length; i < k; ++i) {\n if (keys[i] == key) {\n return this.__values[i];\n }\n }\n return null;\n }\n\n has(key: K): bool {\n var keys = this.__keys;\n for (var i = 0, k = keys.length; i < k; ++i) {\n if (keys[i] == key) {\n return true;\n }\n }\n return false;\n }\n\n set(key: K, value: V): void {\n this.__keys.push(key);\n this.__values.push(value);\n }\n\n clear(): void {\n this.__keys.length = 0;\n this.__values.length = 0;\n }\n}\n","(lib)/memory":"function copy_memory(dest: usize, src: usize, n: usize): void {\n // based on musl's implementation of memcpy\n // not a future instruction and sufficiently covered by the upcoming move_memory intrinsic\n\n var w: u32, x: u32;\n\n // copy 1 byte each until src is aligned to 4 bytes\n while (n && (src & 3)) {\n store(dest++, load(src++));\n n--;\n }\n\n // if dst is aligned to 4 bytes as well, copy 4 bytes each\n if ((dest & 3) == 0) {\n while (n >= 16) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n store(dest + 8, load(src + 8));\n store(dest + 12, load(src + 12));\n src += 16; dest += 16; n -= 16;\n }\n if (n & 8) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n dest += 8; src += 8;\n }\n if (n & 4) {\n store(dest, load(src));\n dest += 4; src += 4;\n }\n if (n & 2) { // drop to 2 bytes each\n store(dest, load(src));\n dest += 2; src += 2;\n }\n if (n & 1) { // drop to 1 byte\n store(dest++, load(src++));\n }\n return;\n }\n\n // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each\n // doing shifts if faster when copying enough bytes (here: 32 or more)\n if (n >= 32) {\n switch (dest & 3) {\n // known to be != 0\n case 1:\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 3;\n while (n >= 17) {\n x = load(src + 1);\n store(dest, w >> 24 | x << 8);\n w = load(src + 5);\n store(dest + 4, x >> 24 | w << 8);\n x = load(src + 9);\n store(dest + 8, w >> 24 | x << 8);\n w = load(src + 13);\n store(dest + 12, x >> 24 | w << 8);\n src += 16; dest += 16; n -= 16;\n }\n break;\n case 2:\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 2;\n while (n >= 18) {\n x = load(src + 2);\n store(dest, w >> 16 | x << 16);\n w = load(src + 6);\n store(dest + 4, x >> 16 | w << 16);\n x = load(src + 10);\n store(dest + 8, w >> 16 | x << 16);\n w = load(src + 14);\n store(dest + 12, x >> 16 | w << 16);\n src += 16; dest += 16; n -= 16;\n }\n break;\n case 3:\n w = load(src);\n store(dest++, load(src++));\n n -= 1;\n while (n >= 19) {\n x = load(src + 3);\n store(dest, w >> 8 | x << 24);\n w = load(src + 7);\n store(dest + 4, x >> 8 | w << 24);\n x = load(src + 11);\n store(dest + 8, w >> 8 | x << 24);\n w = load(src + 15);\n store(dest + 12, x >> 8 | w << 24);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n }\n\n // copy remaining bytes one by one\n if (n & 16) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 8) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 4) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 2) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 1) {\n store(dest++, load(src++));\n }\n}\n\nexport function move_memory(dest: usize, src: usize, n: usize): void {\n // based on musl's implementation of memmove\n // becomes obsolete once https://github.com/WebAssembly/bulk-memory-operations lands\n\n if (dest == src) return;\n if (src + n <= dest || dest + n <= src) {\n copy_memory(dest, src, n);\n return;\n }\n if (dest < src) {\n if ((src & 7) == (dest & 7)) {\n while (dest & 7) {\n if (!n) return;\n --n;\n store(dest++, load(src++));\n }\n while (n >= 8) {\n store(dest, load(src));\n n -= 8;\n dest += 8;\n src += 8;\n }\n }\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n if ((src & 7) == (dest & 7)) {\n while ((dest + n) & 7) {\n if (!n) return;\n store(dest + --n, load(src + n));\n }\n while (n >= 8) {\n n -= 8;\n store(dest + n, load(src + n));\n }\n }\n while (n) {\n store(dest + --n, load(src + n));\n }\n }\n}\n\nexport function set_memory(dest: usize, c: u8, n: usize): void {\n // based on musl's implementation of memset\n // becomes obsolete once https://github.com/WebAssembly/bulk-memory-operations lands\n\n // fill head and tail with minimal branching\n if (!n) return;\n store(dest, c);\n store(dest + n - 1, c);\n if (n <= 2) return;\n\n store(dest + 1, c);\n store(dest + 2, c);\n store(dest + n - 2, c);\n store(dest + n - 3, c);\n if (n <= 6) return;\n store(dest + 3, c);\n store(dest + n - 4, c);\n if (n <= 8) return;\n\n // advance pointer to align it at 4-byte boundary\n var k: usize = -dest & 3;\n dest += k;\n n -= k;\n n &= -4;\n\n var c32: u32 = -1 / 255 * c;\n\n // fill head/tail up to 28 bytes each in preparation\n store(dest, c32);\n store(dest + n - 4, c32);\n if (n <= 8) return;\n store(dest + 4, c32);\n store(dest + 8, c32);\n store(dest + n - 12, c32);\n store(dest + n - 8, c32);\n if (n <= 24) return;\n store(dest + 12, c32);\n store(dest + 16, c32);\n store(dest + 20, c32);\n store(dest + 24, c32);\n store(dest + n - 28, c32);\n store(dest + n - 24, c32);\n store(dest + n - 20, c32);\n store(dest + n - 16, c32);\n\n // align to a multiple of 8\n k = 24 + (dest & 4);\n dest += k;\n n -= k;\n\n // copy 32 bytes each\n var c64: u64 = c32 | (c32 << 32);\n while (n >= 32) {\n store(dest, c64);\n store(dest + 8, c64);\n store(dest + 16, c64);\n store(dest + 24, c64);\n n -= 32;\n dest += 32;\n }\n}\n\nexport function compare_memory(vl: usize, vr: usize, n: usize): i32 {\n // based on musl's implementation of memcmp\n // provided because there's no proposed alternative\n if (vl == vr) return 0;\n while (n && load(vl) == load(vr)) {\n n--;\n vl++;\n vr++;\n }\n return n ? load(vl) - load(vr) : 0;\n}\n","(lib)/polyfills":"export function bswap(value: T): T {\n assert(sizeof() == 1 || sizeof() == 2 || sizeof() == 4 || sizeof() == 8);\n\n if (sizeof() == 2) {\n return bswap16(value);\n } else if (sizeof() == 4) {\n return (\n rotl(value & 0xFF00FF00, 8) |\n rotr(value & 0x00FF00FF, 8)\n );\n } else if (sizeof() == 8) {\n var a: u64 = (value >> 8) & 0x00FF00FF00FF00FF;\n var b: u64 = (value & 0x00FF00FF00FF00FF) << 8;\n var v: u64 = a | b;\n\n a = (v >> 16) & 0x0000FFFF0000FFFF;\n b = (v & 0x0000FFFF0000FFFF) << 16;\n\n return rotr(a | b, 32);\n }\n return value;\n}\n\nexport function bswap16(value: T): T {\n assert(sizeof() == 1 || sizeof() == 2 || sizeof() == 4);\n\n if (sizeof() == 2 || sizeof() == 4) {\n return (((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000));\n }\n return value;\n}\n","(lib)/regexp":'export class RegExp {\n\n // @binding(CALL_NEW, [ STRING, STRING], OBJECT_HANDLE)\n constructor(pattern: string, flags: string = "") { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [ STRING ], PASS_THRU)\n test(search: string): bool { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [], STRING)\n toString(): string { throw new Error("unreachable"); }\n\n}\n',"(lib)/set":'// const prime1: u32 = 73;\n// const prime2: u32 = 5009;\n\nexport class Set {\n\n private __memory: usize;\n private __capacity: u32;\n private __size: u32;\n\n constructor() {\n this.__memory = 0;\n this.__capacity = this.__size = 0;\n }\n\n get size(): i32 {\n return this.__size;\n }\n\n // FIXME: not a proper set implementation, just a filler\n\n has(value: T): bool {\n assert(this != null);\n\n for (var index: usize = 0, limit: usize = this.__size; index < limit; ++index) {\n if (load(this.__memory + index * sizeof()) == value) {\n return true;\n }\n }\n return false;\n }\n\n add(value: T): Set {\n assert(this != null);\n\n if (this.__size >= this.__capacity) {\n var newCapacity = max(this.__capacity << 1, 8);\n var newMemory = allocate_memory(newCapacity * sizeof());\n if (this.__memory) {\n move_memory(newMemory, this.__memory, this.__capacity * sizeof());\n free_memory(this.__memory);\n }\n this.__capacity = newCapacity;\n this.__memory = newMemory;\n }\n store(this.__memory + this.__size * sizeof(), value);\n ++this.__size;\n return this;\n }\n\n delete(value: T): bool {\n assert(this != null);\n\n for (var index: usize = 0, limit: usize = this.__size; index < limit; ++index) {\n if (load(this.__memory + index * sizeof()) == value) {\n if (index + 1 < limit) {\n move_memory(\n this.__memory + index * sizeof(),\n this.__memory + (index + 1) * sizeof(),\n limit - index - 1\n );\n }\n --this.__size;\n return true;\n }\n }\n return false;\n }\n\n clear(): void {\n assert(this != null);\n\n this.__size = 0;\n }\n\n // TODO: think about iterators\n}\n\n// class SetIterator extends Iterator {\n\n// get done(): bool {\n// throw new Error("not implemented");\n// }\n\n// next(): T {\n// throw new Error("not implemented");\n// }\n// }\n',"(lib)/string":'// singleton empty string\nconst EMPTY: String = changetype("");\n\n// number of bytes preceeding string data\nconst HEAD: usize = 4;\n\nfunction allocate(length: i32): String {\n assert(length > 0); // 0 -> EMPTY\n var ptr = allocate_memory(HEAD + (length << 1));\n store(ptr, length);\n return changetype(ptr);\n}\n\nexport class String {\n\n readonly length: i32; // capped to [0, 0x7fffffff]\n\n @operator("[]")\n charAt(pos: i32): String {\n assert(this != null);\n\n if (pos >= this.length) {\n return EMPTY;\n }\n\n var out = allocate(1);\n store(\n changetype(out),\n load(\n changetype(this) + (pos << 1),\n HEAD\n ),\n HEAD\n );\n return out;\n }\n\n charCodeAt(pos: i32): i32 {\n assert(this != null);\n if (pos >= this.length) {\n return -1; // (NaN)\n }\n return load(\n changetype(this) + (pos << 1),\n HEAD\n );\n }\n\n codePointAt(pos: i32): i32 {\n assert(this != null);\n if (pos >= this.length) {\n return -1; // (undefined)\n }\n var first = load(\n changetype(this) + (pos << 1),\n HEAD\n );\n if (first < 0xD800 || first > 0xDBFF || pos + 1 == this.length) {\n return first;\n }\n var second = load(\n changetype(this) + ((pos + 1) << 1),\n HEAD\n );\n if (second < 0xDC00 || second > 0xDFFF) {\n return first;\n }\n return ((first - 0xD800) << 10) + (second - 0xDC00) + 0x10000;\n }\n\n @operator("+")\n private static __concat(left: String, right: String): String {\n if (left == null) {\n left = changetype("null");\n }\n return left.concat(right);\n }\n\n concat(other: String): String {\n assert(this != null);\n if (other == null) {\n other = changetype("null");\n }\n var thisLen: isize = this.length;\n var otherLen: isize = other.length;\n var outLen: usize = thisLen + otherLen;\n if (outLen == 0) {\n return EMPTY;\n }\n var out = allocate(outLen);\n move_memory(\n changetype(out) + HEAD,\n changetype(this) + HEAD,\n thisLen << 1\n );\n move_memory(\n changetype(out) + HEAD + (thisLen << 1),\n changetype(other) + HEAD,\n otherLen << 1\n );\n return out;\n }\n\n endsWith(searchString: String, endPosition: i32 = 0x7fffffff): bool {\n assert(this != null);\n if (searchString == null) {\n return false;\n }\n var end: isize = min(max(endPosition, 0), this.length);\n var searchLength: isize = searchString.length;\n var start: isize = end - searchLength;\n if (start < 0) {\n return false;\n }\n return !compare_memory(\n changetype(this) + HEAD + (start << 1),\n changetype(searchString) + HEAD,\n searchLength << 1\n );\n }\n\n @operator("==")\n private static __eq(left: String, right: String): bool {\n if (left == null) {\n return right == null;\n } else if (right == null) {\n return false;\n }\n var leftLength = left.length;\n if (leftLength != right.length) {\n return false;\n }\n return !compare_memory(\n changetype(left) + HEAD,\n changetype(right) + HEAD,\n (leftLength << 1)\n );\n }\n\n includes(searchString: String, position: i32 = 0): bool {\n return this.indexOf(searchString, position) != -1;\n }\n\n indexOf(searchString: String, position: i32 = 0): i32 {\n assert(this != null);\n if (searchString == null) {\n searchString = changetype("null");\n }\n var pos: isize = position;\n var len: isize = this.length;\n var start: isize = min(max(pos, 0), len);\n var searchLen: isize = searchString.length;\n\n // TODO: two-way, multiple char codes\n for (var k: usize = start; k + searchLen <= len; ++k) {\n if (!compare_memory(\n changetype(this) + HEAD + (k << 1),\n changetype(searchString) + HEAD,\n searchLen << 1)\n ) {\n return k;\n }\n }\n return -1;\n }\n\n startsWith(searchString: String, position: i32 = 0): bool {\n assert(this != null);\n if (searchString == null) {\n searchString = changetype("null");\n }\n var pos: isize = position;\n var len: isize = this.length;\n var start: isize = min(max(pos, 0), len);\n var searchLength: isize = searchString.length;\n if (searchLength + start > len) {\n return false;\n }\n return !compare_memory(\n changetype(this) + HEAD + (start << 1),\n changetype(searchString) + HEAD,\n searchLength << 1\n );\n }\n\n substr(start: i32, length: i32 = i32.MAX_VALUE): String {\n assert(this != null);\n var intStart: isize = start;\n var end: isize = length;\n var size: isize = this.length;\n if (intStart < 0) {\n intStart = max(size + intStart, 0);\n }\n var resultLength: isize = min(max(end, 0), size - intStart);\n if (resultLength <= 0) {\n return EMPTY;\n }\n var out = allocate(resultLength);\n move_memory(\n changetype(out) + HEAD,\n changetype(this) + HEAD + (intStart << 1),\n resultLength << 1\n );\n return out;\n }\n\n substring(start: i32, end: i32 = i32.MAX_VALUE): String {\n assert(this != null);\n var len = this.length;\n var finalStart = min(max(start, 0), len);\n var finalEnd = min(max(end, 0), len);\n var from = min(finalStart, finalEnd);\n var to = max(finalStart, finalEnd);\n len = to - from;\n if (!len) {\n return EMPTY;\n }\n if (!from && to == this.length) {\n return this;\n }\n var out = allocate(len);\n move_memory(\n changetype(out) + HEAD,\n changetype(this) + HEAD + (from << 1),\n len << 1\n );\n return out;\n }\n\n trim(): String {\n assert(this != null);\n var length: usize = this.length;\n while (\n length &&\n isWhiteSpaceOrLineTerminator(\n load(changetype(this) + (length << 1), HEAD)\n )\n ) {\n --length;\n }\n var start: usize = 0;\n while (\n start < length &&\n isWhiteSpaceOrLineTerminator(\n load(changetype(this) + (start << 1), HEAD)\n )\n ) {\n ++start, --length;\n }\n if (!length) {\n return EMPTY;\n }\n if (!start && length == this.length) {\n return this;\n }\n var out = allocate(length);\n move_memory(\n changetype(out) + HEAD,\n changetype(this) + HEAD + (start << 1),\n length << 1\n );\n return out;\n }\n\n trimLeft(): String {\n assert(this != null);\n var start: isize = 0;\n var len: isize = this.length;\n while (\n start < len &&\n isWhiteSpaceOrLineTerminator(\n load(changetype(this) + (start << 1), HEAD)\n )\n ) {\n ++start;\n }\n if (!start) {\n return this;\n }\n var outLen = len - start;\n if (!outLen) {\n return EMPTY;\n }\n var out = allocate(outLen);\n move_memory(\n changetype(out) + HEAD,\n changetype(this) + HEAD + (start << 1),\n outLen << 1\n );\n return out;\n }\n\n trimRight(): String {\n assert(this != null);\n var len: isize = this.length;\n while (\n len > 0 &&\n isWhiteSpaceOrLineTerminator(\n load(changetype(this) + (len << 1), HEAD)\n )\n ) {\n --len;\n }\n if (len <= 0) {\n return EMPTY;\n }\n if (len == this.length) {\n return this;\n }\n var out = allocate(len);\n move_memory(\n changetype(out) + HEAD,\n changetype(this) + HEAD,\n len << 1\n );\n return out;\n }\n}\n\nfunction isWhiteSpaceOrLineTerminator(c: u16): bool {\n switch (c) {\n case 10: // \n case 13: // \n case 8232: // \n case 8233: // \n case 9: // \n case 11: // \n case 12: // \n case 32: // \n case 160: // \n case 65279: // \n return true;\n default:\n return false;\n }\n}\n\nconst enum CharCode {\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n O = 0x4F,\n X = 0x58,\n Z = 0x5a,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n o = 0x6F,\n x = 0x78,\n z = 0x7A\n}\n\nexport function parseInt(str: String, radix: i32 = 0): f64 {\n return parse(str, radix);\n}\n\nexport function parseI32(str: String, radix: i32 = 0): i32 {\n return parse(str, radix);\n}\n\nexport function parseI64(str: String, radix: i32 = 0): i64 {\n return parse(str, radix);\n}\n\nfunction parse(str: String, radix: i32 = 0): T {\n var len: i32 = str.length;\n if (!len) {\n return NaN;\n }\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr, HEAD);\n\n // determine sign\n var sign: T;\n if (code == CharCode.MINUS) {\n if (!--len) {\n return NaN;\n }\n code = load(ptr += 2, HEAD);\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) {\n return NaN;\n }\n code = load(ptr += 2, HEAD);\n sign = 1;\n } else {\n sign = 1;\n }\n\n // determine radix\n if (!radix) {\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr + 2, HEAD)) {\n\n case CharCode.B:\n case CharCode.b:\n ptr += 4; len -= 2;\n radix = 2;\n break;\n\n case CharCode.O:\n case CharCode.o:\n ptr += 4; len -= 2;\n radix = 8;\n break;\n\n case CharCode.X:\n case CharCode.x:\n ptr += 4; len -= 2;\n radix = 16;\n break;\n\n default:\n radix = 10;\n }\n } else radix = 10;\n } else if (radix < 2 || radix > 36) {\n return NaN;\n }\n\n // calculate value\n var num: T = 0;\n while (len--) {\n code = load(ptr, HEAD);\n if (code >= CharCode._0 && code <= CharCode._9) {\n code -= CharCode._0;\n } else if (code >= CharCode.A && code <= CharCode.Z) {\n code -= CharCode.A - 10;\n } else if (code >= CharCode.a && code <= CharCode.z) {\n code -= CharCode.a - 10;\n } else {\n break;\n }\n if (code >= radix) {\n break;\n }\n num = (num * radix) + code;\n ptr += 2;\n }\n return sign * num;\n}\n\nexport function parseFloat(str: String): f64 {\n var len: i32 = str.length;\n if (!len) {\n return NaN;\n }\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr, HEAD);\n\n // determine sign\n var sign: f64;\n if (code == CharCode.MINUS) {\n if (!--len) {\n return NaN;\n }\n code = load(ptr += 2, HEAD);\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) {\n return NaN;\n }\n code = load(ptr += 2, HEAD);\n sign = 1;\n } else {\n sign = 1;\n }\n\n // calculate value\n var num: f64 = 0;\n while (len--) {\n code = load(ptr, HEAD);\n if (code == CharCode.DOT) {\n ptr += 2;\n var fac: f64 = 0.1; // precision :(\n while (len--) {\n code = load(ptr, HEAD);\n if (code == CharCode.E || code == CharCode.e) {\n assert(false); // TODO\n }\n code -= CharCode._0;\n if (code > 9) {\n break;\n }\n num += code * fac;\n fac *= 0.1;\n ptr += 2;\n }\n break;\n }\n code -= CharCode._0;\n if (code >= 10) {\n break;\n }\n num = (num * 10) + code;\n ptr += 2;\n }\n return sign * num;\n}\n'}):{},n.definitionFiles=n.isBundle?Object({assembly:'// Definitions for the "AssemblyScript" subset.\n\n// Types\n\n/** An 8-bit signed integer. */\ndeclare type i8 = number;\n/** A 16-bit signed integer. */\ndeclare type i16 = number;\n/** A 32-bit signed integer. */\ndeclare type i32 = number;\n/** A 64-bit signed integer. */\ndeclare type i64 = number;\n/** A 32-bit signed integer when targeting 32-bit WebAssembly or a 64-bit signed integer when targeting 64-bit WebAssembly. */\ndeclare type isize = number;\n/** An 8-bit unsigned integer. */\ndeclare type u8 = number;\n/** A 16-bit unsigned integer. */\ndeclare type u16 = number;\n/** A 32-bit unsigned integer. */\ndeclare type u32 = number;\n/** A 64-bit unsigned integer. */\ndeclare type u64 = number;\n/** A 32-bit unsigned integer when targeting 32-bit WebAssembly or a 64-bit unsigned integer when targeting 64-bit WebAssembly. */\ndeclare type usize = number;\n/** A 1-bit unsigned integer. */\ndeclare type bool = any; // sic\n/** A 32-bit float. */\ndeclare type f32 = number;\n/** A 64-bit float. */\ndeclare type f64 = number;\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i8;\ndeclare namespace i8 {\n export const MIN_VALUE: i8;\n export const MAX_VALUE: i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i8;\ndeclare namespace i16 {\n export const MIN_VALUE: i16;\n export const MAX_VALUE: i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i32;\ndeclare namespace i32 {\n export const MIN_VALUE: i32;\n export const MAX_VALUE: i32;\n}\n/** Converts any other numeric value to a 64-bit signed integer. */\ndeclare function i64(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i64;\ndeclare namespace i64 {\n export const MIN_VALUE: i64;\n export const MAX_VALUE: i64;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare function isize(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): isize;\ndeclare namespace isize {\n export const MIN_VALUE: isize;\n export const MAX_VALUE: isize;\n}\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i8;\ndeclare namespace u8 {\n export const MIN_VALUE: u8;\n export const MAX_VALUE: u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i8;\ndeclare namespace u16 {\n export const MIN_VALUE: u16;\n export const MAX_VALUE: u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i32;\ndeclare namespace u32 {\n export const MIN_VALUE: u32;\n export const MAX_VALUE: u32;\n}\n/** Converts any other numeric value to a 64-bit unsigned integer. */\ndeclare function u64(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): i64;\ndeclare namespace u64 {\n export const MIN_VALUE: u64;\n export const MAX_VALUE: u64;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare function usize(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): isize;\ndeclare namespace usize {\n export const MIN_VALUE: usize;\n export const MAX_VALUE: usize;\n}\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): bool;\ndeclare namespace bool {\n export const MIN_VALUE: bool;\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): f32;\ndeclare namespace f32 {\n export const MIN_VALUE: f32;\n export const MAX_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: i8 | i16 | i32 | i64 | isize | u8 | u16 | u32 | u64 | usize | bool | f32 | f64): f64;\ndeclare namespace f64 {\n export const MIN_VALUE: f64;\n export const MAX_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n}\n\n// Built-ins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit or 64-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit or 64-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit or 64-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Reinterprets the bits of the specified value as type `T`. Valid reinterpretations are u32/i32 to/from f32 and u64/i64 to/from f64. */\ndeclare function reinterpret(value: number): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Equivalent to dereferncing a pointer in other languages. */\ndeclare function load(ptr: usize, constantOffset?: usize): T;\n/** Stores a value of the specified type to memory. Equivalent to dereferencing a pointer in other languages when assigning a value. */\ndeclare function store(ptr: usize, value: any, constantOffset?: usize): void;\n/** Returns the current memory size in units of pages. One page is 64kb. */\ndeclare function current_memory(): i32;\n/** Grows linear memory by a given unsigned delta of pages. One page is 64kb. Returns the previous memory size in units of pages or `-1` on failure. */\ndeclare function grow_memory(value: i32): i32;\n/** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\ndeclare function move_memory(destination: usize, source: usize, n: usize): void;\n/** Sets n bytes beginning at the specified destination in memory to the specified byte value. */\ndeclare function set_memory(destination: usize, value: u8, count: usize): void;\n/** Compares two chunks of memory. Returns `0` if equal, otherwise the difference of the first differing bytes. */\ndeclare function compare_memory(vl: usize, vr: usize, n: usize): i32;\n/** Allocates a chunk of memory of the specified size and returns a pointer to it. */\ndeclare function allocate_memory(size: usize): usize;\n/** Disposes a chunk of memory by its pointer. */\ndeclare function free_memory(ptr: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. Both a statement and an expression of any type. */\ndeclare function unreachable(): any; // sic\n\n/** [Polyfill] Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** [Polyfill] Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Heap base offset. */\ndeclare const HEAP_BASE: usize;\n/** Determines the byte size of the specified core or class type. Compiles to a constant. */\ndeclare function sizeof(): usize;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the (non-nullable) value. */\ndeclare function assert(isTrueish: T, message?: string): T & object; // any better way to model `: T != null`?\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses an integer string to a 32-bit integer. */\ndeclare function parseI32(str: string, radix?: i32): i32;\n/** Parses an integer string to a 64-bit integer. */\ndeclare function parseI64(str: string, radix?: i32): i64;\n/** Parses a string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n\n// Standard library (not yet implemented)\n\n/** Class representing a sequence of values of type `T`. */\ndeclare class Array {\n [key: number]: T;\n /** Current length of the array. */\n length: i32;\n /** Constructs a new array. */\n constructor(capacity?: i32);\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): void;\n pop(): T;\n shift(): T;\n unshift(element: T): i32;\n slice(from: i32, to?: i32): T[];\n splice(start: i32, deleteCount?: i32): void;\n reverse(): T[];\n}\n\n/** Class representing a C-like array of values of type `T` with limited capabilities. */\ndeclare class CArray {\n [key: number]: T;\n private constructor();\n}\n\n/** Class representing a sequence of characters. */\ndeclare class String {\n\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(cp: i32): string;\n static fromCodePoints(arr: i32[]): string;\n\n readonly length: u32;\n\n charAt(index: u32): string;\n charCodeAt(index: u32): u16;\n concat(other: string): string;\n endsWith(other: string): bool;\n indexOf(other: string): u32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n substr(start: u32, length?: u32): string;\n substring(start: u32, end?: u32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\ninterface Boolean {}\ninterface Function {}\ninterface IArguments {}\ninterface Number {}\ninterface Object {}\ninterface RegExp {}\n\ndeclare class Set {\n readonly size: i32;\n has(value: T): bool;\n add(value: T): void;\n delete(value: T): bool;\n clear(): void;\n}\n\n// Internal decorators\n\n/** Annotates an element as a program global. */\ndeclare function global(target: Function, propertyKey: string, descriptor: any): void;\n\n/** Annotates a method as an operator overload. */\ndeclare function operator(token: string): (target: any, propertyKey: string, descriptor: any) => void;\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(target: Function): any;\n\n/** Annotates a class field with an explicit offset. */\ndeclare function offset(offset: usize): any;\n\n/** Annotates an element as begin built-in. */\ndeclare function builtin(target: Function): any;\n',portable:'// Definitions for the "portable AssemblyScript" subset.\n\n// Portable types\n\n// Note that semantic differences require additional explicit conversions for full compatibility.\n// For example, when casting an i32 to an u8, doing `(someI32 & 0xff)` will yield the same\n// result when compiling to WebAssembly or JS while `someI32` alone does nothing in JS.\n\n// Note that i64\'s are not portable (JS numbers are IEEE754 doubles with a maximum safe integer value\n// of 2^53-1) and instead require a compatibility layer to work in JS as well. See: src/util/i64.ts\n\ndeclare type i8 = number;\ndeclare type i16 = number;\ndeclare type i32 = number;\ndeclare type isize = number;\ndeclare type u8 = number;\ndeclare type u16 = number;\ndeclare type u32 = number;\ndeclare type bool = boolean;\ndeclare type usize = number;\ndeclare type f32 = number;\ndeclare type f64 = number;\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): i8;\ndeclare namespace i8 {\n export const MIN_VALUE: i8;\n export const MAX_VALUE: i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): i8;\ndeclare namespace i16 {\n export const MIN_VALUE: i16;\n export const MAX_VALUE: i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): i32;\ndeclare namespace i32 {\n export const MIN_VALUE: i32;\n export const MAX_VALUE: i32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare function isize(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): isize;\ndeclare namespace isize {\n export const MIN_VALUE: isize;\n export const MAX_VALUE: isize;\n}\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): i8;\ndeclare namespace u8 {\n export const MIN_VALUE: u8;\n export const MAX_VALUE: u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): i8;\ndeclare namespace u16 {\n export const MIN_VALUE: u16;\n export const MAX_VALUE: u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): i32;\ndeclare namespace u32 {\n export const MIN_VALUE: u32;\n export const MAX_VALUE: u32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare function usize(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): isize;\ndeclare namespace usize {\n export const MIN_VALUE: usize;\n export const MAX_VALUE: usize;\n}\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): bool;\ndeclare namespace bool {\n export const MIN_VALUE: bool;\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): f32;\ndeclare namespace f32 {\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: i8 | i16 | i32 | isize | u8 | u16 | u32 | usize | bool | f32 | f64): f64;\ndeclare namespace f64 {\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n}\n\n// Portable built-ins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Allocates a chunk of memory of the specified size and returns a pointer to it. */\ndeclare function allocate_memory(size: usize): usize;\n/** Disposes a chunk of memory by its pointer. */\ndeclare function free_memory(ptr: usize): void;\n/** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\ndeclare function move_memory(destination: usize, source: usize, n: usize): void;\n/** Loads a value of the specified type from memory. Type must be `u8`. */\ndeclare function load(ptr: usize, constantOffset?: usize): T;\n/** Stores a value of the specified type to memory. Type must be `u8`. */\ndeclare function store(ptr: usize, value: T, constantOffset?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. */\ndeclare function unreachable(): any; // sic\n\n/** [Polyfill] Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** [Polyfill] Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Traps if the specified value is not true-ish, otherwise returns the value. */\ndeclare function assert(isTrueish: T, message?: string): T & object; // any better way to model `: T != null`?\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses an integer string to a 32-bit integer. */\ndeclare function parseI32(str: string, radix?: i32): i32;\n/** Parses a floating point string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n\n// Portable standard library\n// Everything marked @deprecated is a temporary filler. Do not use.\n\ndeclare const NaN: f32 | f64;\ndeclare const Infinity: f32 | f64;\n\ndeclare class Array {\n [key: number]: T;\n length: i32;\n constructor(capacity?: i32);\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): void;\n pop(): T;\n shift(): T;\n unshift(element: T): i32;\n slice(from: i32, to?: i32): T[];\n splice(start: i32, deleteCount?: i32): void;\n reverse(): T[];\n\n join(delim: string): string;\n}\n\ndeclare class Uint8Array extends Array {}\ndeclare class Uint16Array extends Array {}\ndeclare class Uint32Array extends Array {}\ndeclare class Int8Array extends Array {}\ndeclare class Int16Array extends Array {}\ndeclare class Int32Array extends Array {}\ndeclare class Float32Array extends Array {}\ndeclare class Float64Array extends Array {}\n\ndeclare class String {\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(cp: i32): string;\n static fromCodePoints(arr: i32[]): string;\n readonly length: i32;\n private constructor();\n indexOf(subject: string, position?: i32): i32;\n includes(other: string): bool;\n lastIndexOf(subject: string, position?: i32): i32;\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n substring(from: i32, to?: i32): string;\n startsWith(subject: string): bool;\n endsWith(subject: string): bool;\n replace(search: string, replacement: string): string;\n toString(): string;\n}\n\ninterface Boolean {}\n\ndeclare class Number {\n private constructor();\n toString(radix?: i32): string;\n}\n\ninterface Object {}\n\ninterface Function {}\n\ninterface RegExp {}\n\ninterface IArguments {}\n\ndeclare class Error {\n constructor(message: string);\n message: string;\n stack: string | null;\n}\n\ndeclare class Symbol {\n private constructor();\n static readonly iterator: symbol;\n}\n\ndeclare class Set {\n constructor(entries?: T[]);\n has(value: T): bool;\n add(value: T): void;\n delete(value: T): bool;\n clear(): void;\n [Symbol.iterator](): Iterator;\n}\n\ndeclare class Map {\n constructor(entries?: [K, V][]);\n readonly size: i32;\n set(key: K, value: V): void;\n has(key: K): bool;\n get(key: K): V | null;\n clear(): void;\n entries(): Iterable<[K, V]>;\n keys(): Iterable;\n values(): Iterable;\n [Symbol.iterator](): Iterator<[K,V]>;\n}\n\ninterface Iterable {\n [Symbol.iterator](): Iterator;\n}\n\ninterface Iterator {}\n\ndeclare namespace console {\n /** @deprecated */\n function log(message: string): void;\n}\n'}):{},n.main=function(r,f,p){"function"==typeof f?(p=f,f={}):f||(f={});const m=f.stdout||e.stdout,g=f.stderr||e.stderr,y=f.readFile||C,b=f.writeFile||B,v=f.listFiles||N,_=f.stats||{readTime:0,readCount:0,writeTime:0,writeCount:0,parseTime:0,parseCount:0,compileTime:0,compileCount:0,emitTime:0,emitCount:0,validateTime:0,validateCount:0,optimizeTime:0,optimizeCount:0};if(!m)throw Error("'options.stdout' must be specified");if(!g)throw Error("'options.stderr' must be specified");if(!i.readFileSync){if(y===C)throw Error("'options.readFile' must be specified");if(b===B)throw Error("'options.writeFile' must be specified");if(v===N)throw Error("'options.listFiles' must be specified")}const T=u(r);if(p||(p=function(e){var n=0;return e&&(g.write(e.stack+s.EOL),n=1),n}),T.version)return m.write("Version "+n.version+(l?"-dev":"")+s.EOL),p(null);if(T.help||T._.length<1){const e=[];return Object.keys(n.options).forEach(t=>{var r=n.options[t],i=" ";for(i+="--"+t,r.aliases&&1===r.aliases[0].length&&(i+=", -"+r.aliases[0]);i.length<24;)i+=" ";Array.isArray(r.desc)?e.push(i+r.desc[0]+r.desc.slice(1).map(e=>{for(let n=0;n<24;++n)e=" "+e;return s.EOL+e}).join("")):e.push(i+r.desc)}),(T.help?m:g).write(["Version "+n.version+(l?"-dev":""),"Syntax: asc [entryFile ...] [options]","","Examples: asc hello.ts"," asc hello.ts -b hello.wasm -t hello.wat"," asc hello1.ts hello2.ts -b -O > hello.wasm","","Options:"].concat(e).join(s.EOL)+s.EOL),p(null)}const z=T.baseDir?o.resolve(T.baseDir):e.cwd(),E=o.join(".","..","std","assembly"),A=T.noLib?[]:[E];T.lib&&("string"==typeof T.lib&&(T.lib=T.lib.split(",")),Array.prototype.push.apply(A,T.lib.map(trim)));var x=null;for(let e=0,t=T._.length;e{x=a.parseFile(r,t,!0,x)});null!=(t=x.nextFile());){if(t.startsWith(n.libraryPrefix)){for(let e=0,i=A.length;e{a.parseFile(r,t,!1,x)})}if(c(x,g))return p(Error("Parse error"))}var w=!1;T.noLib||Object.keys(n.libraryFiles).forEach(e=>{e.lastIndexOf("/")>=n.libraryPrefix.length||(_.parseCount++,_.parseTime+=h(()=>{x=a.parseFile(n.libraryFiles[e],e+".ts",!1,x)}),w=!0)});for(let e=0,t=A.length;e{x=a.parseFile(s,n.libraryPrefix+i,!1,x)})}}const S=a.createOptions();var I;a.setTarget(S,0),a.setNoTreeShaking(S,!!T.noTreeShaking),a.setNoAssert(S,!!T.noAssert),a.setNoMemory(S,!!T.noMemory),a.setImportMemory(S,!!T.importMemory),a.setMemoryBase(S,T.memoryBase>>>0),a.setSourceMap(S,null!=T.sourceMap),_.compileCount++;try{_.compileTime+=h(()=>{I=a.compile(x,S)})}catch(e){return p(e)}if(c(x,g))return I&&I.dispose(),p(Error("Compile error"));if(T.validate&&(_.validateCount++,_.validateTime+=h(()=>{if(!I.validate())return I.dispose(),p(Error("Validate error"))})),"clamp"===T.trapMode)_.optimizeCount++,_.optimizeTime+=h(()=>{I.runPasses(["trap-mode-clamp"])});else if("js"===T.trapMode)_.optimizeCount++,_.optimizeTime+=h(()=>{I.runPasses(["trap-mode-js"])});else if("allow"!==T.trapMode)return I.dispose(),p(Error("Unsupported trap mode"));var L=-1,k=0,M=!T.noDebug;!1!==T.optimize&&("number"==typeof T.optimize?L=T.optimize:T[0]?L=0:T[1]?L=1:T[2]?L=2:T[3]?L=3:!0===T.optimize?(L=n.defaultOptimizeLevel,k=n.defaultShrinkLevel):L=0),T.s?k=1:T.z&&(k=2),"number"==typeof T.optimizeLevel&&(L=T.optimizeLevel),"number"==typeof T.shrinkLevel?k=T.shrinkLevel:"s"===T.shrinkLevel?k=1:"z"===T.shrinkLevel&&(k=2),I.setOptimizeLevel(L>0?L:0),I.setShrinkLevel(k),I.setDebugInfo(M);var F=[];if(T.runPasses&&("string"==typeof T.runPasses&&(T.runPasses=T.runPasses.split(",")),T.runPasses.length&&T.runPasses.forEach(e=>{F.indexOf(e)<0&&F.push(e)})),L>=0&&(_.optimizeCount++,_.optimizeTime+=h(()=>{I.optimize()})),F.length&&(_.optimizeCount++,_.optimizeTime+=h(()=>{I.runPasses(F.map(e=>e.trim()))})),!T.noEmit){let e=!1;if(null!=T.outFile&&(/\.was?t$/.test(T.outFile)&&null==T.textFile?T.textFile=T.outFile:/\.js$/.test(T.outFile)&&null==T.asmjsFile?T.asmjsFile=T.outFile:null==T.binaryFile&&(T.binaryFile=T.outFile)),null!=T.binaryFile){let t,r=null!=T.sourceMap?T.sourceMap.length?T.sourceMap:o.basename(T.binaryFile)+".map":null;if(_.emitCount++,_.emitTime+=h(()=>{t=I.toBinary(r)}),T.binaryFile.length?b(o.join(z,T.binaryFile),t.output):(R(t.output),e=!0),null!=t.sourceMap)if(T.binaryFile.length){let e=JSON.parse(t.sourceMap);e.sourceRoot=n.sourceMapRoot,e.sources.forEach((t,r)=>{let i=null;if(t.startsWith(n.libraryPrefix))for(let e=0,r=A.length;e{n=I.toText()}),b(o.join(z,T.textFile),n)):e||(_.emitCount++,_.emitTime+=h(()=>{n=I.toText()}),R(n),e=!0)}if(null!=T.asmjsFile){let n;T.asmjsFile.length?(_.emitCount++,_.emitTime+=h(()=>{n=I.toAsmjs()}),b(o.join(z,T.asmjsFile),n)):e||(_.emitCount++,_.emitTime+=h(()=>{n=I.toAsmjs()}),R(n),e=!0)}}return I.dispose(),T.measure&&d(_,g),p(null);function C(e){try{var n;return _.readCount++,_.readTime+=h(()=>{n=i.readFileSync(e,{encoding:"utf8"})}),n}catch(e){return null}}function B(e,n){try{return _.writeCount++,_.writeTime+=h(()=>{"string"==typeof n?i.writeFileSync(e,n,{encoding:"utf8"}):i.writeFileSync(e,n)}),!0}catch(e){return!1}}function N(e){var n;try{return _.readTime+=h(()=>{n=t(!function(){var e=new Error('Cannot find module "glob"');throw e.code="MODULE_NOT_FOUND",e}()).sync("*.ts",{cwd:e})}),n}catch(e){return[]}}function R(e){R.used||(_.writeCount++,R.used=!0),_.writeTime+=h(()=>{"string"==typeof e?m.write(e,{encoding:"utf8"}):m.write(e)})}},n.parseArguments=u,n.checkDiagnostics=c,n.createStats=f,e.hrtime||(e.hrtime=t(3)),n.measure=h,n.printStats=d,n.createMemoryStream=function(e){var n=[];return n.write=function(n){"string"==typeof n?this.push(r.from(n,"utf8")):this.push(n),e&&e(n)},n.toBuffer=function(){return r.concat(this)},n.toString=function(){return this.toBuffer().toString("utf8")},n},n.tscOptions={alwaysStrict:!0,noImplicitAny:!0,noImplicitReturns:!0,noImplicitThis:!0,noEmitOnError:!0,strictNullChecks:!0,experimentalDecorators:!0,target:"esnext",module:"commonjs",noLib:!0,types:[],allowJs:!1}}).call(this,t(0),t(12).Buffer)},function(e,n,t){e.exports=t(13)}])}); //# sourceMappingURL=asc.js.map \ No newline at end of file diff --git a/dist/asc.js.map b/dist/asc.js.map index ab3b65da..1aba77a5 100644 --- a/dist/asc.js.map +++ b/dist/asc.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://asc/webpack/universalModuleDefinition","webpack://asc/webpack/bootstrap","webpack://asc/../node_modules/node-libs-browser/mock/process.js","webpack://asc/../node_modules/webpack/buildin/global.js","webpack://asc/../node_modules/path-browserify/index.js","webpack://asc/../node_modules/browser-process-hrtime/index.js","webpack://asc/../node_modules/minimist/index.js","webpack://asc/external {\"commonjs\":\"./assemblyscript\",\"commonjs2\":\"./assemblyscript\"}","webpack://asc/external {\"commonjs\":\"assemblyscript\",\"commonjs2\":\"assemblyscript\",\"amd\":\"assemblyscript\",\"root\":\"_\"}","webpack://asc/../node_modules/os-browserify/browser.js","webpack://asc/../node_modules/isarray/index.js","webpack://asc/../node_modules/ieee754/index.js","webpack://asc/../node_modules/base64-js/index.js","webpack://asc/../node_modules/buffer/index.js","webpack://asc/./asc.js"],"names":["root","factory","exports","module","require","e","define","amd","undefined","window","__WEBPACK_EXTERNAL_MODULE__6__","__WEBPACK_EXTERNAL_MODULE__7__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","path","cwd","nextTick","fn","setTimeout","platform","arch","execPath","title","pid","browser","env","argv","binding","Error","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","g","this","Function","eval","process","normalizeArray","parts","allowAboveRoot","up","length","last","splice","unshift","splitPathRe","splitPath","filename","exec","slice","filter","xs","f","res","push","resolvedPath","resolvedAbsolute","arguments","TypeError","charAt","split","join","normalize","isAbsolute","trailingSlash","substr","paths","Array","index","relative","from","to","trim","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","sep","delimiter","dirname","result","basename","ext","extname","str","len","global","hrtime","previousTimestamp","clocktime","performanceNow","performance","seconds","floor","nanoseconds","now","mozNow","msNow","oNow","webkitNow","Date","getTime","isNumber","x","test","args","opts","flags","bools","strings","unknownFn","allBools","Boolean","forEach","key","aliases","keys","alias","y","string","defaults","_","setArg","notFlags","val","arg","argDefined","Number","setKey","obj","isArray","aliasIsBoolean","some","indexOf","match","next","letters","broken","j","stopEarly","apply","code","endianness","hostname","location","loadavg","freemem","MAX_VALUE","totalmem","cpus","type","release","navigator","appVersion","networkInterfaces","getNetworkInterfaces","tmpdir","tmpDir","EOL","homedir","toString","read","buffer","offset","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","Infinity","pow","write","rt","abs","isNaN","log","LN2","byteLength","b64","placeHoldersCount","toByteArray","tmp","placeHolders","Arr","L","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","output","len2","encodeChunk","lookup","Uint8Array","num","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","__proto__","encodingOrOffset","allocUnsafe","ArrayBuffer","array","byteOffset","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","isBuffer","checked","copy","data","fromObject","assertSize","size","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","swap","b","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","String","buf","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","parseInt","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64Slice","utf8Slice","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","Symbol","species","fill","allocUnsafeSlow","_isBuffer","compare","a","list","pos","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","equals","inspect","max","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","toHex","bytes","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","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","set","INVALID_BASE64_RE","leadSurrogate","replace","stringtrim","base64clean","src","dst","fs","os","assemblyscript","isDev","install","register","project","parseArguments","options","opt","default","boolean","checkDiagnostics","emitter","stderr","diagnostic","hasErrors","nextDiagnostic","formatDiagnostic","isTTY","isError","createStats","readTime","readCount","writeTime","writeCount","parseTime","parseCount","compileTime","compileCount","emitTime","emitCount","validateTime","validateCount","optimizeTime","optimizeCount","measure","times","printStats","stats","format","time","count","toFixed","stdout","isBundle","version","sourceMapRoot","libraryPrefix","LIBRARY_PREFIX","defaultOptimizeLevel","defaultShrinkLevel","libraryFiles","(lib)/allocator/arena","(lib)/allocator/emscripten","(lib)/allocator/none","(lib)/allocator/system","(lib)/allocator/tlsf","(lib)/array","(lib)/builtins","(lib)/error","(lib)/iterator","(lib)/map","(lib)/memory","(lib)/polyfills","(lib)/regexp","(lib)/set","(lib)/string","definitionFiles","assembly","portable","main","callback","readFile","readFileNode","writeFile","writeFileNode","listFiles","listFilesNode","readFileSync","err","stack","help","option","text","desc","map","line","baseDir","stdLibDir","libDirs","noLib","lib","parser","k","sourcePath","sourceText","parseFile","nextFile","startsWith","substring","hasBundledLibrary","libPath","libDir","libFiles","libText","compilerOptions","createOptions","setTarget","setNoTreeShaking","noTreeShaking","setNoAssert","setNoMemory","noMemory","setImportMemory","importMemory","setMemoryBase","memoryBase","setSourceMap","sourceMap","compile","dispose","validate","trapMode","runPasses","optimizeLevel","shrinkLevel","debugInfo","noDebug","optimize","setOptimizeLevel","setShrinkLevel","setDebugInfo","pass","noEmit","hasStdout","outFile","textFile","asmjsFile","binaryFile","binary","sourceMapURL","toBinary","writeStdout","JSON","parse","sourceRoot","sources","sourceContents","stringify","toText","asm","toAsmjs","contents","writeFileSync","files","sync","used","createMemoryStream","stream","chunk","toBuffer","tscOptions","alwaysStrict","noImplicitAny","noImplicitReturns","noImplicitThis","noEmitOnError","strictNullChecks","experimentalDecorators","types","allowJs"],"mappings":"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","file":"asc.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"./assemblyscript\"), (function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([, \"assemblyscript\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"asc\"] = factory(require(\"./assemblyscript\"), (function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse\n\t\troot[\"asc\"] = factory(root[undefined], root[\"_\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__6__, __WEBPACK_EXTERNAL_MODULE__7__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 15);\n","exports.nextTick = function nextTick(fn) {\n\tsetTimeout(fn, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","module.exports = process.hrtime || hrtime\n\n// polyfil for window.performance.now\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}","module.exports = function (args, opts) {\n if (!opts) opts = {};\n \n var flags = { bools : {}, strings : {}, unknownFn: null };\n\n if (typeof opts['unknown'] === 'function') {\n flags.unknownFn = opts['unknown'];\n }\n\n if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {\n flags.allBools = true;\n } else {\n [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {\n flags.bools[key] = true;\n });\n }\n \n var aliases = {};\n Object.keys(opts.alias || {}).forEach(function (key) {\n aliases[key] = [].concat(opts.alias[key]);\n aliases[key].forEach(function (x) {\n aliases[x] = [key].concat(aliases[key].filter(function (y) {\n return x !== y;\n }));\n });\n });\n\n [].concat(opts.string).filter(Boolean).forEach(function (key) {\n flags.strings[key] = true;\n if (aliases[key]) {\n flags.strings[aliases[key]] = true;\n }\n });\n\n var defaults = opts['default'] || {};\n \n var argv = { _ : [] };\n Object.keys(flags.bools).forEach(function (key) {\n setArg(key, defaults[key] === undefined ? false : defaults[key]);\n });\n \n var notFlags = [];\n\n if (args.indexOf('--') !== -1) {\n notFlags = args.slice(args.indexOf('--')+1);\n args = args.slice(0, args.indexOf('--'));\n }\n\n function argDefined(key, arg) {\n return (flags.allBools && /^--[^=]+$/.test(arg)) ||\n flags.strings[key] || flags.bools[key] || aliases[key];\n }\n\n function setArg (key, val, arg) {\n if (arg && flags.unknownFn && !argDefined(key, arg)) {\n if (flags.unknownFn(arg) === false) return;\n }\n\n var value = !flags.strings[key] && isNumber(val)\n ? Number(val) : val\n ;\n setKey(argv, key.split('.'), value);\n \n (aliases[key] || []).forEach(function (x) {\n setKey(argv, x.split('.'), value);\n });\n }\n\n function setKey (obj, keys, value) {\n var o = obj;\n keys.slice(0,-1).forEach(function (key) {\n if (o[key] === undefined) o[key] = {};\n o = o[key];\n });\n\n var key = keys[keys.length - 1];\n if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {\n o[key] = value;\n }\n else if (Array.isArray(o[key])) {\n o[key].push(value);\n }\n else {\n o[key] = [ o[key], value ];\n }\n }\n \n function aliasIsBoolean(key) {\n return aliases[key].some(function (x) {\n return flags.bools[x];\n });\n }\n\n for (var i = 0; i < args.length; i++) {\n var arg = args[i];\n \n if (/^--.+=/.test(arg)) {\n // Using [\\s\\S] instead of . because js doesn't support the\n // 'dotall' regex modifier. See:\n // http://stackoverflow.com/a/1068308/13216\n var m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n var key = m[1];\n var value = m[2];\n if (flags.bools[key]) {\n value = value !== 'false';\n }\n setArg(key, value, arg);\n }\n else if (/^--no-.+/.test(arg)) {\n var key = arg.match(/^--no-(.+)/)[1];\n setArg(key, false, arg);\n }\n else if (/^--.+/.test(arg)) {\n var key = arg.match(/^--(.+)/)[1];\n var next = args[i + 1];\n if (next !== undefined && !/^-/.test(next)\n && !flags.bools[key]\n && !flags.allBools\n && (aliases[key] ? !aliasIsBoolean(key) : true)) {\n setArg(key, next, arg);\n i++;\n }\n else if (/^(true|false)$/.test(next)) {\n setArg(key, next === 'true', arg);\n i++;\n }\n else {\n setArg(key, flags.strings[key] ? '' : true, arg);\n }\n }\n else if (/^-[^-]+/.test(arg)) {\n var letters = arg.slice(1,-1).split('');\n \n var broken = false;\n for (var j = 0; j < letters.length; j++) {\n var next = arg.slice(j+2);\n \n if (next === '-') {\n setArg(letters[j], next, arg)\n continue;\n }\n \n if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {\n setArg(letters[j], next.split('=')[1], arg);\n broken = true;\n break;\n }\n \n if (/[A-Za-z]/.test(letters[j])\n && /-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next)) {\n setArg(letters[j], next, arg);\n broken = true;\n break;\n }\n \n if (letters[j+1] && letters[j+1].match(/\\W/)) {\n setArg(letters[j], arg.slice(j+2), arg);\n broken = true;\n break;\n }\n else {\n setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n }\n }\n \n var key = arg.slice(-1)[0];\n if (!broken && key !== '-') {\n if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])\n && !flags.bools[key]\n && (aliases[key] ? !aliasIsBoolean(key) : true)) {\n setArg(key, args[i+1], arg);\n i++;\n }\n else if (args[i+1] && /true|false/.test(args[i+1])) {\n setArg(key, args[i+1] === 'true', arg);\n i++;\n }\n else {\n setArg(key, flags.strings[key] ? '' : true, arg);\n }\n }\n }\n else {\n if (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n argv._.push(\n flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)\n );\n }\n if (opts.stopEarly) {\n argv._.push.apply(argv._, args.slice(i + 1));\n break;\n }\n }\n }\n \n Object.keys(defaults).forEach(function (key) {\n if (!hasKey(argv, key.split('.'))) {\n setKey(argv, key.split('.'), defaults[key]);\n \n (aliases[key] || []).forEach(function (x) {\n setKey(argv, x.split('.'), defaults[key]);\n });\n }\n });\n \n if (opts['--']) {\n argv['--'] = new Array();\n notFlags.forEach(function(key) {\n argv['--'].push(key);\n });\n }\n else {\n notFlags.forEach(function(key) {\n argv._.push(key);\n });\n }\n\n return argv;\n};\n\nfunction hasKey (obj, keys) {\n var o = obj;\n keys.slice(0,-1).forEach(function (key) {\n o = (o[key] || {});\n });\n\n var key = keys[keys.length - 1];\n return key in o;\n}\n\nfunction isNumber (x) {\n if (typeof x === 'number') return true;\n if (/^0x[0-9a-f]+$/i.test(x)) return true;\n return /^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/.test(x);\n}\n\n","module.exports = __WEBPACK_EXTERNAL_MODULE__6__;","if(typeof __WEBPACK_EXTERNAL_MODULE__7__ === 'undefined') {var e = new Error(\"Cannot find module \\\"undefined\\\"\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__7__;","exports.endianness = function () { return 'LE' };\n\nexports.hostname = function () {\n if (typeof location !== 'undefined') {\n return location.hostname\n }\n else return '';\n};\n\nexports.loadavg = function () { return [] };\n\nexports.uptime = function () { return 0 };\n\nexports.freemem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.totalmem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.cpus = function () { return [] };\n\nexports.type = function () { return 'Browser' };\n\nexports.release = function () {\n if (typeof navigator !== 'undefined') {\n return navigator.appVersion;\n }\n return '';\n};\n\nexports.networkInterfaces\n= exports.getNetworkInterfaces\n= function () { return {} };\n\nexports.arch = function () { return 'javascript' };\n\nexports.platform = function () { return 'browser' };\n\nexports.tmpdir = exports.tmpDir = function () {\n return '/tmp';\n};\n\nexports.EOL = '\\n';\n\nexports.homedir = function () {\n\treturn '/'\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\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'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return (b64.length * 3 / 4) - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr((len * 3 / 4) - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0; i < l; i += 4) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + 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 = ((uint8[i] << 16) & 0xFF0000) + ((uint8[i + 1] << 8) & 0xFF00) + (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 output = ''\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 output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\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 isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object 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 * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\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 if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\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(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, 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(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, 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(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\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(null, 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(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.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 that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().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)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\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 (!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 (!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 (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (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 case undefined:\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) return utf8ToBytes(string).length // assume utf8\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// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\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 | 0\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.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 if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\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 (isNaN(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 (Buffer.TYPED_ARRAY_SUPPORT &&\n 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 // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\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 (isNaN(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 // legacy write(string, encoding, offset, length) - remove in v0.13\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\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\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 if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\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 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 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 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 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 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 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 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 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 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 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 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 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 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\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 (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\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 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 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 (!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('sourceStart out of bounds')\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 var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\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 (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\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 } 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 : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\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 strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).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 stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\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\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","//////////////////////// Compiler frontend for node.js /////////////////////////\r\n\r\nconst fs = require(\"fs\");\r\nconst path = require(\"path\");\r\nconst os = require(\"os\");\r\n\r\n// Use distribution files if present, otherwise run the sources directly\r\nvar assemblyscript, isDev;\r\ntry {\r\n assemblyscript = require(\"../dist/assemblyscript.js\");\r\n isDev = false;\r\n try { require(\"source-map-support\").install(); } catch (e) {} // optional\r\n} catch (e) {\r\n try {\r\n require(\"ts-node\").register({\r\n project: path.join(__dirname, \"..\", \"src\", \"tsconfig.json\")\r\n });\r\n require(\"../src/glue/js\");\r\n assemblyscript = require(\"../src\");\r\n isDev = true;\r\n } catch (e) {\r\n // last resort: browser bundle under node (relative to 'dist/')\r\n assemblyscript = require(\"./assemblyscript\");\r\n isDev = false;\r\n }\r\n}\r\n\r\n/** Whether this is a webpack bundle or not. */\r\nexports.isBundle = typeof BUNDLE_VERSION === \"string\";\r\n\r\n/** Whether asc runs the sources directly or not. */\r\nexports.isDev = isDev;\r\n\r\n/** AssemblyScript veresion. */\r\nexports.version = exports.isBundle ? BUNDLE_VERSION\r\n : require(\"../package.json\").version;\r\n\r\n/** Available options. */\r\nexports.options = require(\"./asc.json\");\r\n\r\n/** Common root used in source maps. */\r\nexports.sourceMapRoot = \"assemblyscript:///\";\r\n\r\n/** Prefix used for library files. */\r\nexports.libraryPrefix = assemblyscript.LIBRARY_PREFIX;\r\n\r\n/** Default Binaryen optimization level. */\r\nexports.defaultOptimizeLevel = 2;\r\n\r\n/** Default Binaryen shrink level. */\r\nexports.defaultShrinkLevel = 1;\r\n\r\n/** Bundled library files, if any. */\r\nexports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : {};\r\n\r\n/** Bundled definition files, if any. */\r\nexports.definitionFiles = exports.isBundle ? BUNDLE_DEFINITIONS : {};\r\n\r\n/** Runs the command line utility using the specified arguments array. */\r\nexports.main = function main(argv, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n const stdout = options.stdout || process.stdout;\r\n const stderr = options.stderr || process.stderr;\r\n const readFile = options.readFile || readFileNode;\r\n const writeFile = options.writeFile || writeFileNode;\r\n const listFiles = options.listFiles || listFilesNode;\r\n const stats = options.stats || createStats();\r\n\r\n // All of the above must be specified in browser environments\r\n if (!stdout)\r\n throw Error(\"'options.stdout' must be specified\");\r\n if (!stderr)\r\n throw Error(\"'options.stderr' must be specified\");\r\n if (!fs.readFileSync) {\r\n if (readFile === readFileNode)\r\n throw Error(\"'options.readFile' must be specified\");\r\n if (writeFile === writeFileNode)\r\n throw Error(\"'options.writeFile' must be specified\");\r\n if (listFiles === listFilesNode)\r\n throw Error(\"'options.listFiles' must be specified\");\r\n }\r\n\r\n const args = parseArguments(argv);\r\n const indent = 24;\r\n\r\n // Use default callback if none is provided\r\n if (!callback) callback = function defaultCallback(err) {\r\n var code = 0;\r\n if (err) {\r\n stderr.write(err.stack + os.EOL);\r\n code = 1;\r\n }\r\n return code;\r\n };\r\n\r\n // Just print the version if requested\r\n if (args.version) {\r\n stdout.write(\"Version \" + exports.version + (isDev ? \"-dev\" : \"\") + os.EOL);\r\n return callback(null);\r\n }\r\n // Print the help message if requested or no source files are provided\r\n if (args.help || args._.length < 1) {\r\n const opts = [];\r\n Object.keys(exports.options).forEach(name => {\r\n var option = exports.options[name];\r\n var text = \" \";\r\n text += \"--\" + name;\r\n if (option.aliases && option.aliases[0].length === 1)\r\n text += \", -\" + option.aliases[0];\r\n while (text.length < indent)\r\n text += \" \";\r\n if (Array.isArray(option.desc)) {\r\n opts.push(text + option.desc[0] + option.desc.slice(1).map(line => {\r\n for (let i = 0; i < indent; ++i)\r\n line = \" \" + line;\r\n return os.EOL + line;\r\n }).join(\"\"));\r\n } else\r\n opts.push(text + option.desc);\r\n });\r\n\r\n (args.help ? stdout : stderr).write([\r\n \"Version \" + exports.version + (isDev ? \"-dev\" : \"\"),\r\n \"Syntax: asc [entryFile ...] [options]\",\r\n \"\",\r\n \"Examples: asc hello.ts\",\r\n \" asc hello.ts -b hello.wasm -t hello.wat\",\r\n \" asc hello1.ts hello2.ts -b -O > hello.wasm\",\r\n \"\",\r\n \"Options:\"\r\n ].concat(opts).join(os.EOL) + os.EOL);\r\n return callback(null);\r\n }\r\n\r\n // Set up base directory\r\n const baseDir = args.baseDir ? path.resolve(args.baseDir) : process.cwd();\r\n\r\n // Include standard library if --noLib isn't set\r\n const stdLibDir = path.join(__dirname, \"..\", \"std\", \"assembly\");\r\n const libDirs = args.noLib ? [] : [ stdLibDir ];\r\n\r\n // Include custom library components (with or without stdlib)\r\n if (args.lib) {\r\n if (typeof args.lib === \"string\")\r\n args.lib = args.lib.split(\",\");\r\n Array.prototype.push.apply(libDirs, args.lib.map(trim));\r\n }\r\n\r\n // Begin parsing\r\n var parser = null;\r\n\r\n // Include entry files\r\n for (let i = 0, k = args._.length; i < k; ++i) {\r\n const filename = args._[i];\r\n\r\n let sourcePath = filename.replace(/\\\\/g, \"/\").replace(/(\\.ts|\\/)$/, \"\");\r\n\r\n // Try entryPath.ts, then entryPath/index.ts\r\n let sourceText = readFile(path.join(baseDir, sourcePath) + \".ts\");\r\n if (sourceText === null) {\r\n sourceText = readFile(path.join(baseDir, sourcePath, \"index.ts\"));\r\n if (sourceText === null)\r\n return callback(Error(\"Entry file '\" + sourcePath + \".ts' not found.\"));\r\n else\r\n sourcePath += \"/index.ts\";\r\n } else\r\n sourcePath += \".ts\";\r\n\r\n stats.parseCount++;\r\n stats.parseTime += measure(() => {\r\n parser = assemblyscript.parseFile(sourceText, sourcePath, true, parser);\r\n });\r\n\r\n while ((sourcePath = parser.nextFile()) != null) {\r\n let found = false;\r\n\r\n // Load library file if explicitly requested\r\n if (sourcePath.startsWith(exports.libraryPrefix)) {\r\n for (let i = 0, k = libDirs.length; i < k; ++i) {\r\n if (exports.libraryFiles.hasOwnProperty(sourcePath))\r\n sourceText = exports.libraryFiles[sourcePath];\r\n else {\r\n sourceText = readFile(path.join(\r\n libDirs[i],\r\n sourcePath.substring(exports.libraryPrefix.length) + \".ts\")\r\n );\r\n if (sourceText !== null) {\r\n sourcePath += \".ts\";\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Otherwise try nextFile.ts, nextFile/index.ts, (lib)/nextFile.ts\r\n } else {\r\n sourceText = readFile(path.join(baseDir, sourcePath + \".ts\"));\r\n if (sourceText === null) {\r\n sourceText = readFile(path.join(baseDir, sourcePath, \"index.ts\"));\r\n if (sourceText === null) {\r\n for (let i = 0, k = libDirs.length; i < k; ++i) {\r\n const dir = libDirs[i];\r\n const key = exports.libraryPrefix + sourcePath;\r\n if (exports.libraryFiles.hasOwnProperty(key))\r\n sourceText = exports.libraryFiles[key];\r\n else {\r\n sourceText = readFile(path.join(dir, sourcePath + \".ts\"));\r\n if (sourceText !== null) {\r\n sourcePath = exports.libraryPrefix + sourcePath + \".ts\";\r\n break;\r\n }\r\n }\r\n }\r\n if (sourceText === null)\r\n return callback(\r\n Error(\"Import file '\" + sourcePath + \".ts' not found.\")\r\n );\r\n } else\r\n sourcePath += \"/index.ts\";\r\n } else\r\n sourcePath += \".ts\";\r\n }\r\n stats.parseCount++;\r\n stats.parseTime += measure(() => {\r\n assemblyscript.parseFile(sourceText, sourcePath, false, parser);\r\n });\r\n }\r\n if (checkDiagnostics(parser, stderr))\r\n return callback(Error(\"Parse error\"));\r\n }\r\n\r\n // Include (other) library components\r\n var hasBundledLibrary = false;\r\n if (!args.noLib)\r\n Object.keys(exports.libraryFiles).forEach(libPath => {\r\n if (libPath.lastIndexOf(\"/\") >= exports.libraryPrefix.length)\r\n return;\r\n stats.parseCount++;\r\n stats.parseTime += measure(() => {\r\n parser = assemblyscript.parseFile(\r\n exports.libraryFiles[libPath],\r\n libPath + \".ts\",\r\n false,\r\n parser\r\n );\r\n });\r\n hasBundledLibrary = true;\r\n });\r\n for (let i = 0, k = libDirs.length; i < k; ++i) {\r\n if (i === 0 && hasBundledLibrary) continue;\r\n let libDir = libDirs[i];\r\n let libFiles = listFiles(libDir);\r\n for (let j = 0, l = libFiles.length; j < l; ++j) {\r\n let libPath = libFiles[j];\r\n let libText = readFile(path.join(libDir, libPath));\r\n if (libText === null)\r\n return callback(Error(\"Library file '\" + libPath + \"' not found.\"));\r\n stats.parseCount++;\r\n stats.parseTime += measure(() => {\r\n parser = assemblyscript.parseFile(\r\n libText,\r\n exports.libraryPrefix + libPath,\r\n false,\r\n parser\r\n );\r\n });\r\n }\r\n }\r\n\r\n // Begin compilation\r\n const compilerOptions = assemblyscript.createOptions();\r\n assemblyscript.setTarget(compilerOptions, 0);\r\n assemblyscript.setNoTreeShaking(compilerOptions, !!args.noTreeShaking);\r\n assemblyscript.setNoAssert(compilerOptions, !!args.noAssert);\r\n assemblyscript.setNoMemory(compilerOptions, !!args.noMemory);\r\n assemblyscript.setImportMemory(compilerOptions, !!args.importMemory);\r\n assemblyscript.setMemoryBase(compilerOptions, args.memoryBase >>> 0);\r\n assemblyscript.setSourceMap(compilerOptions, args.sourceMap != null);\r\n\r\n var module;\r\n stats.compileCount++;\r\n try {\r\n stats.compileTime += measure(() => {\r\n module = assemblyscript.compile(parser, compilerOptions);\r\n });\r\n } catch (e) {\r\n return callback(e);\r\n }\r\n if (checkDiagnostics(parser, stderr)) {\r\n if (module) module.dispose();\r\n return callback(Error(\"Compile error\"));\r\n }\r\n\r\n // Validate the module if requested\r\n if (args.validate) {\r\n stats.validateCount++;\r\n stats.validateTime += measure(() => {\r\n if (!module.validate()) {\r\n module.dispose();\r\n return callback(Error(\"Validate error\"));\r\n }\r\n });\r\n }\r\n\r\n // Set Binaryen-specific options\r\n if (args.trapMode === \"clamp\") {\r\n stats.optimizeCount++;\r\n stats.optimizeTime += measure(() => {\r\n module.runPasses([ \"trap-mode-clamp\" ]);\r\n });\r\n } else if (args.trapMode === \"js\") {\r\n stats.optimizeCount++;\r\n stats.optimizeTime += measure(() => {\r\n module.runPasses([ \"trap-mode-js\" ]);\r\n });\r\n } else if (args.trapMode !== \"allow\") {\r\n module.dispose();\r\n return callback(Error(\"Unsupported trap mode\"));\r\n }\r\n\r\n var optimizeLevel = -1;\r\n var shrinkLevel = 0;\r\n var debugInfo = !args.noDebug;\r\n\r\n if (args.optimize !== false) {\r\n if (typeof args.optimize === \"number\")\r\n optimizeLevel = args.optimize;\r\n else if (args[\"0\"])\r\n optimizeLevel = 0;\r\n else if (args[\"1\"])\r\n optimizeLevel = 1;\r\n else if (args[\"2\"])\r\n optimizeLevel = 2;\r\n else if (args[\"3\"])\r\n optimizeLevel = 3;\r\n else if (args.optimize === true) {\r\n optimizeLevel = exports.defaultOptimizeLevel;\r\n shrinkLevel = exports.defaultShrinkLevel;\r\n } else\r\n optimizeLevel = 0;\r\n }\r\n if (args[\"s\"])\r\n shrinkLevel = 1;\r\n else if (args[\"z\"])\r\n shrinkLevel = 2;\r\n\r\n if (typeof args.optimizeLevel === \"number\")\r\n optimizeLevel = args.optimizeLevel;\r\n if (typeof args.shrinkLevel === \"number\")\r\n shrinkLevel = args.shrinkLevel;\r\n else if (args.shrinkLevel === \"s\")\r\n shrinkLevel = 1;\r\n else if (args.shrinkLevel === \"z\")\r\n shrinkLevel = 2;\r\n\r\n module.setOptimizeLevel(optimizeLevel > 0 ? optimizeLevel : 0);\r\n module.setShrinkLevel(shrinkLevel);\r\n module.setDebugInfo(debugInfo);\r\n\r\n var runPasses = [];\r\n if (args.runPasses) {\r\n if (typeof args.runPasses === \"string\")\r\n args.runPasses = args.runPasses.split(\",\");\r\n if (args.runPasses.length)\r\n args.runPasses.forEach(pass => {\r\n if (runPasses.indexOf(pass) < 0)\r\n runPasses.push(pass);\r\n });\r\n }\r\n\r\n // Optimize the module if requested\r\n if (optimizeLevel >= 0) {\r\n stats.optimizeCount++;\r\n stats.optimizeTime += measure(() => {\r\n module.optimize();\r\n });\r\n }\r\n\r\n // Run additional passes if requested\r\n if (runPasses.length) {\r\n stats.optimizeCount++;\r\n stats.optimizeTime += measure(() => {\r\n module.runPasses(runPasses.map(pass => pass.trim()));\r\n });\r\n }\r\n\r\n // Prepare output\r\n if (!args.noEmit) {\r\n let hasStdout = false;\r\n\r\n if (args.outFile != null) {\r\n if (/\\.was?t$/.test(args.outFile) && args.textFile == null)\r\n args.textFile = args.outFile;\r\n else if (/\\.js$/.test(args.outFile) && args.asmjsFile == null)\r\n args.asmjsFile = args.outFile;\r\n else if (args.binaryFile == null)\r\n args.binaryFile = args.outFile;\r\n }\r\n\r\n // Write binary\r\n if (args.binaryFile != null) {\r\n let sourceMapURL = args.sourceMap != null\r\n ? args.sourceMap.length\r\n ? args.sourceMap\r\n : path.basename(args.binaryFile) + \".map\"\r\n : null;\r\n\r\n let binary;\r\n stats.emitCount++;\r\n stats.emitTime += measure(() => {\r\n binary = module.toBinary(sourceMapURL)\r\n });\r\n\r\n if (args.binaryFile.length) {\r\n writeFile(path.join(baseDir, args.binaryFile), binary.output);\r\n } else {\r\n writeStdout(binary.output);\r\n hasStdout = true;\r\n }\r\n\r\n // Post-process source map\r\n if (binary.sourceMap != null) {\r\n if (args.binaryFile.length) {\r\n let sourceMap = JSON.parse(binary.sourceMap);\r\n sourceMap.sourceRoot = exports.sourceMapRoot;\r\n sourceMap.sources.forEach((name, index) => {\r\n let text = null;\r\n if (name.startsWith(exports.libraryPrefix)) {\r\n for (let i = 0, k = libDirs.length; i < k; ++i) {\r\n text = readFile(path.join(\r\n libDirs[i],\r\n name.substring(exports.libraryPrefix.length))\r\n );\r\n if (text !== null) break;\r\n }\r\n } else\r\n text = readFile(path.join(baseDir, name));\r\n if (text === null)\r\n return callback(Error(\"Source file '\" + name + \"' not found.\"));\r\n if (!sourceMap.sourceContents)\r\n sourceMap.sourceContents = [];\r\n sourceMap.sourceContents[index] = text;\r\n });\r\n writeFile(path.join(\r\n baseDir,\r\n path.dirname(args.binaryFile),\r\n path.basename(sourceMapURL)\r\n ), JSON.stringify(sourceMap));\r\n } else {\r\n stderr.write(\"Skipped source map (stdout already occupied)\" + os.EOL);\r\n }\r\n }\r\n }\r\n\r\n // Write text\r\n if (\r\n args.textFile != null || (\r\n args.binaryFile == null &&\r\n args.asmjsFile == null\r\n )\r\n ) {\r\n let text;\r\n if (args.textFile && args.textFile.length) {\r\n stats.emitCount++;\r\n stats.emitTime += measure(() => {\r\n text = module.toText();\r\n });\r\n writeFile(path.join(baseDir, args.textFile), text);\r\n } else if (!hasStdout) {\r\n stats.emitCount++;\r\n stats.emitTime += measure(() => {\r\n text = module.toText()\r\n });\r\n writeStdout(text);\r\n hasStdout = true;\r\n }\r\n }\r\n\r\n // Write asm.js\r\n if (args.asmjsFile != null) {\r\n let asm;\r\n if (args.asmjsFile.length) {\r\n stats.emitCount++;\r\n stats.emitTime += measure(() => {\r\n asm = module.toAsmjs();\r\n });\r\n writeFile(path.join(baseDir, args.asmjsFile), asm);\r\n } else if (!hasStdout) {\r\n stats.emitCount++;\r\n stats.emitTime += measure(() => {\r\n asm = module.toAsmjs();\r\n });\r\n writeStdout(asm);\r\n hasStdout = true;\r\n }\r\n }\r\n }\r\n\r\n module.dispose();\r\n if (args.measure)\r\n printStats(stats, stderr);\r\n return callback(null);\r\n\r\n function readFileNode(filename) {\r\n try {\r\n var text;\r\n stats.readCount++;\r\n stats.readTime += measure(() => {\r\n text = fs.readFileSync(filename, { encoding: \"utf8\" });\r\n });\r\n return text;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n function writeFileNode(filename, contents) {\r\n try {\r\n stats.writeCount++;\r\n stats.writeTime += measure(() => {\r\n if (typeof contents === \"string\")\r\n fs.writeFileSync(filename, contents, { encoding: \"utf8\" } );\r\n else\r\n fs.writeFileSync(filename, contents);\r\n });\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n function listFilesNode(dirname) {\r\n var files;\r\n try {\r\n stats.readTime += measure(() => {\r\n files = require(\"glob\").sync(\"*.ts\", { cwd: dirname });\r\n });\r\n return files;\r\n } catch (e) {\r\n return [];\r\n }\r\n }\r\n\r\n function writeStdout(contents) {\r\n if (!writeStdout.used) {\r\n stats.writeCount++;\r\n writeStdout.used = true;\r\n }\r\n stats.writeTime += measure(() => {\r\n if (typeof contents === \"string\")\r\n stdout.write(contents, { encoding: \"utf8\" });\r\n else\r\n stdout.write(contents);\r\n });\r\n }\r\n}\r\n\r\n/** Parses the specified command line arguments. */\r\nfunction parseArguments(argv) {\r\n const opts = {};\r\n Object.keys(exports.options).forEach(key => {\r\n const opt = exports.options[key];\r\n if (opt.aliases)\r\n (opts.alias || (opts.alias = {}))[key] = opt.aliases;\r\n if (opt.default !== undefined)\r\n (opts.default || (opts.default = {}))[key] = opt.default;\r\n if (opt.type === \"string\")\r\n (opts.string || (opts.string = [])).push(key);\r\n else if (opt.type === \"boolean\")\r\n (opts.boolean || (opts.boolean = [])).push(key);\r\n });\r\n return require(\"minimist\")(argv, opts);\r\n}\r\n\r\nexports.parseArguments = parseArguments;\r\n\r\n/** Checks diagnostics emitted so far for errors. */\r\nfunction checkDiagnostics(emitter, stderr) {\r\n var diagnostic;\r\n var hasErrors = false;\r\n while ((diagnostic = assemblyscript.nextDiagnostic(emitter)) != null) {\r\n stderr.write(\r\n assemblyscript.formatDiagnostic(diagnostic, stderr.isTTY, true) +\r\n os.EOL + os.EOL\r\n );\r\n if (assemblyscript.isError(diagnostic))\r\n hasErrors = true;\r\n }\r\n return hasErrors;\r\n}\r\n\r\nexports.checkDiagnostics = checkDiagnostics;\r\n\r\n/** Creates an empty set of stats. */\r\nfunction createStats() {\r\n return {\r\n readTime: 0,\r\n readCount: 0,\r\n writeTime: 0,\r\n writeCount: 0,\r\n parseTime: 0,\r\n parseCount: 0,\r\n compileTime: 0,\r\n compileCount: 0,\r\n emitTime: 0,\r\n emitCount: 0,\r\n validateTime: 0,\r\n validateCount: 0,\r\n optimizeTime: 0,\r\n optimizeCount: 0\r\n };\r\n}\r\n\r\nexports.createStats = createStats;\r\n\r\nif (!process.hrtime)\r\n process.hrtime = require(\"browser-process-hrtime\");\r\n\r\n/** Measures the execution time of the specified function. */\r\nfunction measure(fn) {\r\n const start = process.hrtime();\r\n fn();\r\n const times = process.hrtime(start);\r\n return times[0] * 1e9 + times[1];\r\n}\r\n\r\nexports.measure = measure;\r\n\r\n/** Formats and prints out the contents of a set of stats. */\r\nfunction printStats(stats, output) {\r\n function format(time, count) {\r\n return time ? (time / 1e6).toFixed(3) + \" ms\" : \"N/A\";\r\n }\r\n (output || process.stdout).write([\r\n \"I/O Read : \" + format(stats.readTime, stats.readCount),\r\n \"I/O Write : \" + format(stats.writeTime, stats.writeCount),\r\n \"Parse : \" + format(stats.parseTime, stats.parseCount),\r\n \"Compile : \" + format(stats.compileTime, stats.compileCount),\r\n \"Emit : \" + format(stats.emitTime, stats.emitCount),\r\n \"Validate : \" + format(stats.validateTime, stats.validateCount),\r\n \"Optimize : \" + format(stats.optimizeTime, stats.optimizeCount)\r\n ].join(os.EOL) + os.EOL);\r\n}\r\n\r\nexports.printStats = printStats;\r\n\r\n/** Creates a memory stream that can be used in place of stdout/stderr. */\r\nfunction createMemoryStream(fn) {\r\n var stream = [];\r\n stream.write = function(chunk) {\r\n if (typeof chunk === \"string\") {\r\n this.push(Buffer.from(chunk, \"utf8\"));\r\n } else {\r\n this.push(chunk);\r\n }\r\n if (fn) fn(chunk);\r\n };\r\n stream.toBuffer = function() {\r\n return Buffer.concat(this);\r\n };\r\n stream.toString = function() {\r\n return this.toBuffer().toString(\"utf8\");\r\n };\r\n return stream;\r\n}\r\n\r\nexports.createMemoryStream = createMemoryStream;\r\n\r\n/** Compatible TypeScript compiler options. */\r\nexports.tscOptions = {\r\n alwaysStrict: true,\r\n noImplicitAny: true,\r\n noImplicitReturns: true,\r\n noImplicitThis: true,\r\n noEmitOnError: true,\r\n strictNullChecks: true,\r\n experimentalDecorators: true,\r\n target: \"esnext\",\r\n module: \"commonjs\",\r\n noLib: true,\r\n types: [],\r\n allowJs: false\r\n};\r\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://asc/webpack/universalModuleDefinition","webpack://asc/webpack/bootstrap","webpack://asc/../node_modules/node-libs-browser/mock/process.js","webpack://asc/../node_modules/webpack/buildin/global.js","webpack://asc/../node_modules/path-browserify/index.js","webpack://asc/../node_modules/browser-process-hrtime/index.js","webpack://asc/../node_modules/minimist/index.js","webpack://asc/external {\"commonjs\":\"assemblyscript\",\"commonjs2\":\"assemblyscript\",\"amd\":\"assemblyscript\",\"root\":\"_\"}","webpack://asc/../node_modules/os-browserify/browser.js","webpack://asc/../node_modules/isarray/index.js","webpack://asc/../node_modules/ieee754/index.js","webpack://asc/../node_modules/base64-js/index.js","webpack://asc/../node_modules/buffer/index.js","webpack://asc/./asc.js"],"names":["root","factory","exports","module","require","e","define","amd","window","__WEBPACK_EXTERNAL_MODULE__6__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","path","cwd","nextTick","fn","setTimeout","platform","arch","execPath","title","pid","browser","env","argv","binding","Error","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","g","this","Function","eval","process","normalizeArray","parts","allowAboveRoot","up","length","last","splice","unshift","splitPathRe","splitPath","filename","exec","slice","filter","xs","f","res","push","resolvedPath","resolvedAbsolute","arguments","TypeError","charAt","split","join","normalize","isAbsolute","trailingSlash","substr","paths","Array","index","relative","from","to","trim","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","sep","delimiter","dirname","result","basename","ext","extname","str","len","global","hrtime","previousTimestamp","clocktime","performanceNow","performance","seconds","floor","nanoseconds","now","mozNow","msNow","oNow","webkitNow","Date","getTime","isNumber","x","test","args","opts","flags","bools","strings","unknownFn","allBools","Boolean","forEach","key","aliases","keys","alias","y","string","defaults","_","setArg","undefined","notFlags","val","arg","argDefined","Number","setKey","obj","isArray","aliasIsBoolean","some","indexOf","match","next","letters","broken","j","stopEarly","apply","code","endianness","hostname","location","loadavg","freemem","MAX_VALUE","totalmem","cpus","type","release","navigator","appVersion","networkInterfaces","getNetworkInterfaces","tmpdir","tmpDir","EOL","homedir","toString","read","buffer","offset","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","Infinity","pow","write","rt","abs","isNaN","log","LN2","byteLength","b64","placeHoldersCount","toByteArray","tmp","placeHolders","Arr","L","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","output","len2","encodeChunk","lookup","Uint8Array","num","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","__proto__","encodingOrOffset","allocUnsafe","ArrayBuffer","array","byteOffset","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","isBuffer","checked","copy","data","fromObject","assertSize","size","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","swap","b","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","String","buf","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","parseInt","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64Slice","utf8Slice","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","Symbol","species","fill","allocUnsafeSlow","_isBuffer","compare","a","list","pos","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","equals","inspect","max","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","toHex","bytes","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","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","set","INVALID_BASE64_RE","leadSurrogate","replace","stringtrim","base64clean","src","dst","fs","os","assemblyscript","isDev","install","register","project","parseArguments","options","opt","default","boolean","checkDiagnostics","emitter","stderr","diagnostic","hasErrors","nextDiagnostic","formatDiagnostic","isTTY","isError","createStats","readTime","readCount","writeTime","writeCount","parseTime","parseCount","compileTime","compileCount","emitTime","emitCount","validateTime","validateCount","optimizeTime","optimizeCount","measure","times","printStats","stats","format","time","count","toFixed","stdout","isBundle","version","sourceMapRoot","libraryPrefix","LIBRARY_PREFIX","defaultOptimizeLevel","defaultShrinkLevel","libraryFiles","(lib)/allocator/arena","(lib)/allocator/emscripten","(lib)/allocator/none","(lib)/allocator/system","(lib)/allocator/tlsf","(lib)/array","(lib)/builtins","(lib)/error","(lib)/iterator","(lib)/map","(lib)/memory","(lib)/polyfills","(lib)/regexp","(lib)/set","(lib)/string","definitionFiles","assembly","portable","main","callback","readFile","readFileNode","writeFile","writeFileNode","listFiles","listFilesNode","readFileSync","err","stack","help","option","text","desc","map","line","baseDir","stdLibDir","libDirs","noLib","lib","parser","k","sourcePath","sourceText","parseFile","nextFile","startsWith","substring","hasBundledLibrary","libPath","libDir","libFiles","libText","compilerOptions","createOptions","setTarget","setNoTreeShaking","noTreeShaking","setNoAssert","setNoMemory","noMemory","setImportMemory","importMemory","setMemoryBase","memoryBase","setSourceMap","sourceMap","compile","dispose","validate","trapMode","runPasses","optimizeLevel","shrinkLevel","debugInfo","noDebug","optimize","setOptimizeLevel","setShrinkLevel","setDebugInfo","pass","noEmit","hasStdout","outFile","textFile","asmjsFile","binaryFile","binary","sourceMapURL","toBinary","writeStdout","JSON","parse","sourceRoot","sources","sourceContents","stringify","toText","asm","toAsmjs","contents","writeFileSync","files","sync","used","createMemoryStream","stream","chunk","toBuffer","tscOptions","alwaysStrict","noImplicitAny","noImplicitReturns","noImplicitThis","noEmitOnError","strictNullChecks","experimentalDecorators","types","allowJs"],"mappings":"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","file":"asc.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"assemblyscript\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"asc\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse\n\t\troot[\"asc\"] = factory(root[\"_\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__6__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 14);\n","exports.nextTick = function nextTick(fn) {\n\tsetTimeout(fn, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","module.exports = process.hrtime || hrtime\n\n// polyfil for window.performance.now\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}","module.exports = function (args, opts) {\n if (!opts) opts = {};\n \n var flags = { bools : {}, strings : {}, unknownFn: null };\n\n if (typeof opts['unknown'] === 'function') {\n flags.unknownFn = opts['unknown'];\n }\n\n if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {\n flags.allBools = true;\n } else {\n [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {\n flags.bools[key] = true;\n });\n }\n \n var aliases = {};\n Object.keys(opts.alias || {}).forEach(function (key) {\n aliases[key] = [].concat(opts.alias[key]);\n aliases[key].forEach(function (x) {\n aliases[x] = [key].concat(aliases[key].filter(function (y) {\n return x !== y;\n }));\n });\n });\n\n [].concat(opts.string).filter(Boolean).forEach(function (key) {\n flags.strings[key] = true;\n if (aliases[key]) {\n flags.strings[aliases[key]] = true;\n }\n });\n\n var defaults = opts['default'] || {};\n \n var argv = { _ : [] };\n Object.keys(flags.bools).forEach(function (key) {\n setArg(key, defaults[key] === undefined ? false : defaults[key]);\n });\n \n var notFlags = [];\n\n if (args.indexOf('--') !== -1) {\n notFlags = args.slice(args.indexOf('--')+1);\n args = args.slice(0, args.indexOf('--'));\n }\n\n function argDefined(key, arg) {\n return (flags.allBools && /^--[^=]+$/.test(arg)) ||\n flags.strings[key] || flags.bools[key] || aliases[key];\n }\n\n function setArg (key, val, arg) {\n if (arg && flags.unknownFn && !argDefined(key, arg)) {\n if (flags.unknownFn(arg) === false) return;\n }\n\n var value = !flags.strings[key] && isNumber(val)\n ? Number(val) : val\n ;\n setKey(argv, key.split('.'), value);\n \n (aliases[key] || []).forEach(function (x) {\n setKey(argv, x.split('.'), value);\n });\n }\n\n function setKey (obj, keys, value) {\n var o = obj;\n keys.slice(0,-1).forEach(function (key) {\n if (o[key] === undefined) o[key] = {};\n o = o[key];\n });\n\n var key = keys[keys.length - 1];\n if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {\n o[key] = value;\n }\n else if (Array.isArray(o[key])) {\n o[key].push(value);\n }\n else {\n o[key] = [ o[key], value ];\n }\n }\n \n function aliasIsBoolean(key) {\n return aliases[key].some(function (x) {\n return flags.bools[x];\n });\n }\n\n for (var i = 0; i < args.length; i++) {\n var arg = args[i];\n \n if (/^--.+=/.test(arg)) {\n // Using [\\s\\S] instead of . because js doesn't support the\n // 'dotall' regex modifier. See:\n // http://stackoverflow.com/a/1068308/13216\n var m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n var key = m[1];\n var value = m[2];\n if (flags.bools[key]) {\n value = value !== 'false';\n }\n setArg(key, value, arg);\n }\n else if (/^--no-.+/.test(arg)) {\n var key = arg.match(/^--no-(.+)/)[1];\n setArg(key, false, arg);\n }\n else if (/^--.+/.test(arg)) {\n var key = arg.match(/^--(.+)/)[1];\n var next = args[i + 1];\n if (next !== undefined && !/^-/.test(next)\n && !flags.bools[key]\n && !flags.allBools\n && (aliases[key] ? !aliasIsBoolean(key) : true)) {\n setArg(key, next, arg);\n i++;\n }\n else if (/^(true|false)$/.test(next)) {\n setArg(key, next === 'true', arg);\n i++;\n }\n else {\n setArg(key, flags.strings[key] ? '' : true, arg);\n }\n }\n else if (/^-[^-]+/.test(arg)) {\n var letters = arg.slice(1,-1).split('');\n \n var broken = false;\n for (var j = 0; j < letters.length; j++) {\n var next = arg.slice(j+2);\n \n if (next === '-') {\n setArg(letters[j], next, arg)\n continue;\n }\n \n if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {\n setArg(letters[j], next.split('=')[1], arg);\n broken = true;\n break;\n }\n \n if (/[A-Za-z]/.test(letters[j])\n && /-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next)) {\n setArg(letters[j], next, arg);\n broken = true;\n break;\n }\n \n if (letters[j+1] && letters[j+1].match(/\\W/)) {\n setArg(letters[j], arg.slice(j+2), arg);\n broken = true;\n break;\n }\n else {\n setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n }\n }\n \n var key = arg.slice(-1)[0];\n if (!broken && key !== '-') {\n if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])\n && !flags.bools[key]\n && (aliases[key] ? !aliasIsBoolean(key) : true)) {\n setArg(key, args[i+1], arg);\n i++;\n }\n else if (args[i+1] && /true|false/.test(args[i+1])) {\n setArg(key, args[i+1] === 'true', arg);\n i++;\n }\n else {\n setArg(key, flags.strings[key] ? '' : true, arg);\n }\n }\n }\n else {\n if (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n argv._.push(\n flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)\n );\n }\n if (opts.stopEarly) {\n argv._.push.apply(argv._, args.slice(i + 1));\n break;\n }\n }\n }\n \n Object.keys(defaults).forEach(function (key) {\n if (!hasKey(argv, key.split('.'))) {\n setKey(argv, key.split('.'), defaults[key]);\n \n (aliases[key] || []).forEach(function (x) {\n setKey(argv, x.split('.'), defaults[key]);\n });\n }\n });\n \n if (opts['--']) {\n argv['--'] = new Array();\n notFlags.forEach(function(key) {\n argv['--'].push(key);\n });\n }\n else {\n notFlags.forEach(function(key) {\n argv._.push(key);\n });\n }\n\n return argv;\n};\n\nfunction hasKey (obj, keys) {\n var o = obj;\n keys.slice(0,-1).forEach(function (key) {\n o = (o[key] || {});\n });\n\n var key = keys[keys.length - 1];\n return key in o;\n}\n\nfunction isNumber (x) {\n if (typeof x === 'number') return true;\n if (/^0x[0-9a-f]+$/i.test(x)) return true;\n return /^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/.test(x);\n}\n\n","if(typeof __WEBPACK_EXTERNAL_MODULE__6__ === 'undefined') {var e = new Error(\"Cannot find module \\\"undefined\\\"\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__6__;","exports.endianness = function () { return 'LE' };\n\nexports.hostname = function () {\n if (typeof location !== 'undefined') {\n return location.hostname\n }\n else return '';\n};\n\nexports.loadavg = function () { return [] };\n\nexports.uptime = function () { return 0 };\n\nexports.freemem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.totalmem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.cpus = function () { return [] };\n\nexports.type = function () { return 'Browser' };\n\nexports.release = function () {\n if (typeof navigator !== 'undefined') {\n return navigator.appVersion;\n }\n return '';\n};\n\nexports.networkInterfaces\n= exports.getNetworkInterfaces\n= function () { return {} };\n\nexports.arch = function () { return 'javascript' };\n\nexports.platform = function () { return 'browser' };\n\nexports.tmpdir = exports.tmpDir = function () {\n return '/tmp';\n};\n\nexports.EOL = '\\n';\n\nexports.homedir = function () {\n\treturn '/'\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\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'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return (b64.length * 3 / 4) - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr((len * 3 / 4) - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0; i < l; i += 4) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + 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 = ((uint8[i] << 16) & 0xFF0000) + ((uint8[i + 1] << 8) & 0xFF00) + (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 output = ''\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 output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\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 isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object 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 * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\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 if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\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(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, 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(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, 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(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\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(null, 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(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.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 that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().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)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\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 (!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 (!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 (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (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 case undefined:\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) return utf8ToBytes(string).length // assume utf8\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// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\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 | 0\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.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 if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\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 (isNaN(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 (Buffer.TYPED_ARRAY_SUPPORT &&\n 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 // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\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 (isNaN(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 // legacy write(string, encoding, offset, length) - remove in v0.13\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\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\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 if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\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 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 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 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 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 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 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 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 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 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 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 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 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 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\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 (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\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 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 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 (!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('sourceStart out of bounds')\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 var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\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 (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\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 } 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 : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\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 strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).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 stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\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\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","//////////////////////// Compiler frontend for node.js /////////////////////////\r\n\r\nconst fs = require(\"fs\");\r\nconst path = require(\"path\");\r\nconst os = require(\"os\");\r\n\r\n// Use distribution files if present, otherwise run the sources directly\r\nvar assemblyscript, isDev;\r\ntry {\r\n assemblyscript = require(\"../dist/assemblyscript.js\");\r\n isDev = false;\r\n try { require(\"source-map-support\").install(); } catch (e) {} // optional\r\n} catch (e) {\r\n try {\r\n require(\"ts-node\").register({\r\n project: path.join(__dirname, \"..\", \"src\", \"tsconfig.json\")\r\n });\r\n require(\"../src/glue/js\");\r\n assemblyscript = require(\"../src\");\r\n isDev = true;\r\n } catch (e) {\r\n // last resort: same directory CommonJS\r\n assemblyscript = require(\"./assemblyscript\");\r\n isDev = false;\r\n }\r\n}\r\n\r\n/** Whether this is a webpack bundle or not. */\r\nexports.isBundle = typeof BUNDLE_VERSION === \"string\";\r\n\r\n/** Whether asc runs the sources directly or not. */\r\nexports.isDev = isDev;\r\n\r\n/** AssemblyScript veresion. */\r\nexports.version = exports.isBundle ? BUNDLE_VERSION\r\n : require(\"../package.json\").version;\r\n\r\n/** Available options. */\r\nexports.options = require(\"./asc.json\");\r\n\r\n/** Common root used in source maps. */\r\nexports.sourceMapRoot = \"assemblyscript:///\";\r\n\r\n/** Prefix used for library files. */\r\nexports.libraryPrefix = assemblyscript.LIBRARY_PREFIX;\r\n\r\n/** Default Binaryen optimization level. */\r\nexports.defaultOptimizeLevel = 2;\r\n\r\n/** Default Binaryen shrink level. */\r\nexports.defaultShrinkLevel = 1;\r\n\r\n/** Bundled library files, if any. */\r\nexports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : {};\r\n\r\n/** Bundled definition files, if any. */\r\nexports.definitionFiles = exports.isBundle ? BUNDLE_DEFINITIONS : {};\r\n\r\n/** Runs the command line utility using the specified arguments array. */\r\nexports.main = function main(argv, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n const stdout = options.stdout || process.stdout;\r\n const stderr = options.stderr || process.stderr;\r\n const readFile = options.readFile || readFileNode;\r\n const writeFile = options.writeFile || writeFileNode;\r\n const listFiles = options.listFiles || listFilesNode;\r\n const stats = options.stats || createStats();\r\n\r\n // All of the above must be specified in browser environments\r\n if (!stdout)\r\n throw Error(\"'options.stdout' must be specified\");\r\n if (!stderr)\r\n throw Error(\"'options.stderr' must be specified\");\r\n if (!fs.readFileSync) {\r\n if (readFile === readFileNode)\r\n throw Error(\"'options.readFile' must be specified\");\r\n if (writeFile === writeFileNode)\r\n throw Error(\"'options.writeFile' must be specified\");\r\n if (listFiles === listFilesNode)\r\n throw Error(\"'options.listFiles' must be specified\");\r\n }\r\n\r\n const args = parseArguments(argv);\r\n const indent = 24;\r\n\r\n // Use default callback if none is provided\r\n if (!callback) callback = function defaultCallback(err) {\r\n var code = 0;\r\n if (err) {\r\n stderr.write(err.stack + os.EOL);\r\n code = 1;\r\n }\r\n return code;\r\n };\r\n\r\n // Just print the version if requested\r\n if (args.version) {\r\n stdout.write(\"Version \" + exports.version + (isDev ? \"-dev\" : \"\") + os.EOL);\r\n return callback(null);\r\n }\r\n // Print the help message if requested or no source files are provided\r\n if (args.help || args._.length < 1) {\r\n const opts = [];\r\n Object.keys(exports.options).forEach(name => {\r\n var option = exports.options[name];\r\n var text = \" \";\r\n text += \"--\" + name;\r\n if (option.aliases && option.aliases[0].length === 1)\r\n text += \", -\" + option.aliases[0];\r\n while (text.length < indent)\r\n text += \" \";\r\n if (Array.isArray(option.desc)) {\r\n opts.push(text + option.desc[0] + option.desc.slice(1).map(line => {\r\n for (let i = 0; i < indent; ++i)\r\n line = \" \" + line;\r\n return os.EOL + line;\r\n }).join(\"\"));\r\n } else\r\n opts.push(text + option.desc);\r\n });\r\n\r\n (args.help ? stdout : stderr).write([\r\n \"Version \" + exports.version + (isDev ? \"-dev\" : \"\"),\r\n \"Syntax: asc [entryFile ...] [options]\",\r\n \"\",\r\n \"Examples: asc hello.ts\",\r\n \" asc hello.ts -b hello.wasm -t hello.wat\",\r\n \" asc hello1.ts hello2.ts -b -O > hello.wasm\",\r\n \"\",\r\n \"Options:\"\r\n ].concat(opts).join(os.EOL) + os.EOL);\r\n return callback(null);\r\n }\r\n\r\n // Set up base directory\r\n const baseDir = args.baseDir ? path.resolve(args.baseDir) : process.cwd();\r\n\r\n // Include standard library if --noLib isn't set\r\n const stdLibDir = path.join(__dirname, \"..\", \"std\", \"assembly\");\r\n const libDirs = args.noLib ? [] : [ stdLibDir ];\r\n\r\n // Include custom library components (with or without stdlib)\r\n if (args.lib) {\r\n if (typeof args.lib === \"string\")\r\n args.lib = args.lib.split(\",\");\r\n Array.prototype.push.apply(libDirs, args.lib.map(trim));\r\n }\r\n\r\n // Begin parsing\r\n var parser = null;\r\n\r\n // Include entry files\r\n for (let i = 0, k = args._.length; i < k; ++i) {\r\n const filename = args._[i];\r\n\r\n let sourcePath = filename.replace(/\\\\/g, \"/\").replace(/(\\.ts|\\/)$/, \"\");\r\n\r\n // Try entryPath.ts, then entryPath/index.ts\r\n let sourceText = readFile(path.join(baseDir, sourcePath) + \".ts\");\r\n if (sourceText === null) {\r\n sourceText = readFile(path.join(baseDir, sourcePath, \"index.ts\"));\r\n if (sourceText === null)\r\n return callback(Error(\"Entry file '\" + sourcePath + \".ts' not found.\"));\r\n else\r\n sourcePath += \"/index.ts\";\r\n } else\r\n sourcePath += \".ts\";\r\n\r\n stats.parseCount++;\r\n stats.parseTime += measure(() => {\r\n parser = assemblyscript.parseFile(sourceText, sourcePath, true, parser);\r\n });\r\n\r\n while ((sourcePath = parser.nextFile()) != null) {\r\n let found = false;\r\n\r\n // Load library file if explicitly requested\r\n if (sourcePath.startsWith(exports.libraryPrefix)) {\r\n for (let i = 0, k = libDirs.length; i < k; ++i) {\r\n if (exports.libraryFiles.hasOwnProperty(sourcePath))\r\n sourceText = exports.libraryFiles[sourcePath];\r\n else {\r\n sourceText = readFile(path.join(\r\n libDirs[i],\r\n sourcePath.substring(exports.libraryPrefix.length) + \".ts\")\r\n );\r\n if (sourceText !== null) {\r\n sourcePath += \".ts\";\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Otherwise try nextFile.ts, nextFile/index.ts, (lib)/nextFile.ts\r\n } else {\r\n sourceText = readFile(path.join(baseDir, sourcePath + \".ts\"));\r\n if (sourceText === null) {\r\n sourceText = readFile(path.join(baseDir, sourcePath, \"index.ts\"));\r\n if (sourceText === null) {\r\n for (let i = 0, k = libDirs.length; i < k; ++i) {\r\n const dir = libDirs[i];\r\n const key = exports.libraryPrefix + sourcePath;\r\n if (exports.libraryFiles.hasOwnProperty(key))\r\n sourceText = exports.libraryFiles[key];\r\n else {\r\n sourceText = readFile(path.join(dir, sourcePath + \".ts\"));\r\n if (sourceText !== null) {\r\n sourcePath = exports.libraryPrefix + sourcePath + \".ts\";\r\n break;\r\n }\r\n }\r\n }\r\n if (sourceText === null)\r\n return callback(\r\n Error(\"Import file '\" + sourcePath + \".ts' not found.\")\r\n );\r\n } else\r\n sourcePath += \"/index.ts\";\r\n } else\r\n sourcePath += \".ts\";\r\n }\r\n stats.parseCount++;\r\n stats.parseTime += measure(() => {\r\n assemblyscript.parseFile(sourceText, sourcePath, false, parser);\r\n });\r\n }\r\n if (checkDiagnostics(parser, stderr))\r\n return callback(Error(\"Parse error\"));\r\n }\r\n\r\n // Include (other) library components\r\n var hasBundledLibrary = false;\r\n if (!args.noLib)\r\n Object.keys(exports.libraryFiles).forEach(libPath => {\r\n if (libPath.lastIndexOf(\"/\") >= exports.libraryPrefix.length)\r\n return;\r\n stats.parseCount++;\r\n stats.parseTime += measure(() => {\r\n parser = assemblyscript.parseFile(\r\n exports.libraryFiles[libPath],\r\n libPath + \".ts\",\r\n false,\r\n parser\r\n );\r\n });\r\n hasBundledLibrary = true;\r\n });\r\n for (let i = 0, k = libDirs.length; i < k; ++i) {\r\n if (i === 0 && hasBundledLibrary) continue;\r\n let libDir = libDirs[i];\r\n let libFiles = listFiles(libDir);\r\n for (let j = 0, l = libFiles.length; j < l; ++j) {\r\n let libPath = libFiles[j];\r\n let libText = readFile(path.join(libDir, libPath));\r\n if (libText === null)\r\n return callback(Error(\"Library file '\" + libPath + \"' not found.\"));\r\n stats.parseCount++;\r\n stats.parseTime += measure(() => {\r\n parser = assemblyscript.parseFile(\r\n libText,\r\n exports.libraryPrefix + libPath,\r\n false,\r\n parser\r\n );\r\n });\r\n }\r\n }\r\n\r\n // Begin compilation\r\n const compilerOptions = assemblyscript.createOptions();\r\n assemblyscript.setTarget(compilerOptions, 0);\r\n assemblyscript.setNoTreeShaking(compilerOptions, !!args.noTreeShaking);\r\n assemblyscript.setNoAssert(compilerOptions, !!args.noAssert);\r\n assemblyscript.setNoMemory(compilerOptions, !!args.noMemory);\r\n assemblyscript.setImportMemory(compilerOptions, !!args.importMemory);\r\n assemblyscript.setMemoryBase(compilerOptions, args.memoryBase >>> 0);\r\n assemblyscript.setSourceMap(compilerOptions, args.sourceMap != null);\r\n\r\n var module;\r\n stats.compileCount++;\r\n try {\r\n stats.compileTime += measure(() => {\r\n module = assemblyscript.compile(parser, compilerOptions);\r\n });\r\n } catch (e) {\r\n return callback(e);\r\n }\r\n if (checkDiagnostics(parser, stderr)) {\r\n if (module) module.dispose();\r\n return callback(Error(\"Compile error\"));\r\n }\r\n\r\n // Validate the module if requested\r\n if (args.validate) {\r\n stats.validateCount++;\r\n stats.validateTime += measure(() => {\r\n if (!module.validate()) {\r\n module.dispose();\r\n return callback(Error(\"Validate error\"));\r\n }\r\n });\r\n }\r\n\r\n // Set Binaryen-specific options\r\n if (args.trapMode === \"clamp\") {\r\n stats.optimizeCount++;\r\n stats.optimizeTime += measure(() => {\r\n module.runPasses([ \"trap-mode-clamp\" ]);\r\n });\r\n } else if (args.trapMode === \"js\") {\r\n stats.optimizeCount++;\r\n stats.optimizeTime += measure(() => {\r\n module.runPasses([ \"trap-mode-js\" ]);\r\n });\r\n } else if (args.trapMode !== \"allow\") {\r\n module.dispose();\r\n return callback(Error(\"Unsupported trap mode\"));\r\n }\r\n\r\n var optimizeLevel = -1;\r\n var shrinkLevel = 0;\r\n var debugInfo = !args.noDebug;\r\n\r\n if (args.optimize !== false) {\r\n if (typeof args.optimize === \"number\")\r\n optimizeLevel = args.optimize;\r\n else if (args[\"0\"])\r\n optimizeLevel = 0;\r\n else if (args[\"1\"])\r\n optimizeLevel = 1;\r\n else if (args[\"2\"])\r\n optimizeLevel = 2;\r\n else if (args[\"3\"])\r\n optimizeLevel = 3;\r\n else if (args.optimize === true) {\r\n optimizeLevel = exports.defaultOptimizeLevel;\r\n shrinkLevel = exports.defaultShrinkLevel;\r\n } else\r\n optimizeLevel = 0;\r\n }\r\n if (args[\"s\"])\r\n shrinkLevel = 1;\r\n else if (args[\"z\"])\r\n shrinkLevel = 2;\r\n\r\n if (typeof args.optimizeLevel === \"number\")\r\n optimizeLevel = args.optimizeLevel;\r\n if (typeof args.shrinkLevel === \"number\")\r\n shrinkLevel = args.shrinkLevel;\r\n else if (args.shrinkLevel === \"s\")\r\n shrinkLevel = 1;\r\n else if (args.shrinkLevel === \"z\")\r\n shrinkLevel = 2;\r\n\r\n module.setOptimizeLevel(optimizeLevel > 0 ? optimizeLevel : 0);\r\n module.setShrinkLevel(shrinkLevel);\r\n module.setDebugInfo(debugInfo);\r\n\r\n var runPasses = [];\r\n if (args.runPasses) {\r\n if (typeof args.runPasses === \"string\")\r\n args.runPasses = args.runPasses.split(\",\");\r\n if (args.runPasses.length)\r\n args.runPasses.forEach(pass => {\r\n if (runPasses.indexOf(pass) < 0)\r\n runPasses.push(pass);\r\n });\r\n }\r\n\r\n // Optimize the module if requested\r\n if (optimizeLevel >= 0) {\r\n stats.optimizeCount++;\r\n stats.optimizeTime += measure(() => {\r\n module.optimize();\r\n });\r\n }\r\n\r\n // Run additional passes if requested\r\n if (runPasses.length) {\r\n stats.optimizeCount++;\r\n stats.optimizeTime += measure(() => {\r\n module.runPasses(runPasses.map(pass => pass.trim()));\r\n });\r\n }\r\n\r\n // Prepare output\r\n if (!args.noEmit) {\r\n let hasStdout = false;\r\n\r\n if (args.outFile != null) {\r\n if (/\\.was?t$/.test(args.outFile) && args.textFile == null)\r\n args.textFile = args.outFile;\r\n else if (/\\.js$/.test(args.outFile) && args.asmjsFile == null)\r\n args.asmjsFile = args.outFile;\r\n else if (args.binaryFile == null)\r\n args.binaryFile = args.outFile;\r\n }\r\n\r\n // Write binary\r\n if (args.binaryFile != null) {\r\n let sourceMapURL = args.sourceMap != null\r\n ? args.sourceMap.length\r\n ? args.sourceMap\r\n : path.basename(args.binaryFile) + \".map\"\r\n : null;\r\n\r\n let binary;\r\n stats.emitCount++;\r\n stats.emitTime += measure(() => {\r\n binary = module.toBinary(sourceMapURL)\r\n });\r\n\r\n if (args.binaryFile.length) {\r\n writeFile(path.join(baseDir, args.binaryFile), binary.output);\r\n } else {\r\n writeStdout(binary.output);\r\n hasStdout = true;\r\n }\r\n\r\n // Post-process source map\r\n if (binary.sourceMap != null) {\r\n if (args.binaryFile.length) {\r\n let sourceMap = JSON.parse(binary.sourceMap);\r\n sourceMap.sourceRoot = exports.sourceMapRoot;\r\n sourceMap.sources.forEach((name, index) => {\r\n let text = null;\r\n if (name.startsWith(exports.libraryPrefix)) {\r\n for (let i = 0, k = libDirs.length; i < k; ++i) {\r\n text = readFile(path.join(\r\n libDirs[i],\r\n name.substring(exports.libraryPrefix.length))\r\n );\r\n if (text !== null) break;\r\n }\r\n } else\r\n text = readFile(path.join(baseDir, name));\r\n if (text === null)\r\n return callback(Error(\"Source file '\" + name + \"' not found.\"));\r\n if (!sourceMap.sourceContents)\r\n sourceMap.sourceContents = [];\r\n sourceMap.sourceContents[index] = text;\r\n });\r\n writeFile(path.join(\r\n baseDir,\r\n path.dirname(args.binaryFile),\r\n path.basename(sourceMapURL)\r\n ), JSON.stringify(sourceMap));\r\n } else {\r\n stderr.write(\"Skipped source map (stdout already occupied)\" + os.EOL);\r\n }\r\n }\r\n }\r\n\r\n // Write text\r\n if (\r\n args.textFile != null || (\r\n args.binaryFile == null &&\r\n args.asmjsFile == null\r\n )\r\n ) {\r\n let text;\r\n if (args.textFile && args.textFile.length) {\r\n stats.emitCount++;\r\n stats.emitTime += measure(() => {\r\n text = module.toText();\r\n });\r\n writeFile(path.join(baseDir, args.textFile), text);\r\n } else if (!hasStdout) {\r\n stats.emitCount++;\r\n stats.emitTime += measure(() => {\r\n text = module.toText()\r\n });\r\n writeStdout(text);\r\n hasStdout = true;\r\n }\r\n }\r\n\r\n // Write asm.js\r\n if (args.asmjsFile != null) {\r\n let asm;\r\n if (args.asmjsFile.length) {\r\n stats.emitCount++;\r\n stats.emitTime += measure(() => {\r\n asm = module.toAsmjs();\r\n });\r\n writeFile(path.join(baseDir, args.asmjsFile), asm);\r\n } else if (!hasStdout) {\r\n stats.emitCount++;\r\n stats.emitTime += measure(() => {\r\n asm = module.toAsmjs();\r\n });\r\n writeStdout(asm);\r\n hasStdout = true;\r\n }\r\n }\r\n }\r\n\r\n module.dispose();\r\n if (args.measure)\r\n printStats(stats, stderr);\r\n return callback(null);\r\n\r\n function readFileNode(filename) {\r\n try {\r\n var text;\r\n stats.readCount++;\r\n stats.readTime += measure(() => {\r\n text = fs.readFileSync(filename, { encoding: \"utf8\" });\r\n });\r\n return text;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n function writeFileNode(filename, contents) {\r\n try {\r\n stats.writeCount++;\r\n stats.writeTime += measure(() => {\r\n if (typeof contents === \"string\")\r\n fs.writeFileSync(filename, contents, { encoding: \"utf8\" } );\r\n else\r\n fs.writeFileSync(filename, contents);\r\n });\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n function listFilesNode(dirname) {\r\n var files;\r\n try {\r\n stats.readTime += measure(() => {\r\n files = require(\"glob\").sync(\"*.ts\", { cwd: dirname });\r\n });\r\n return files;\r\n } catch (e) {\r\n return [];\r\n }\r\n }\r\n\r\n function writeStdout(contents) {\r\n if (!writeStdout.used) {\r\n stats.writeCount++;\r\n writeStdout.used = true;\r\n }\r\n stats.writeTime += measure(() => {\r\n if (typeof contents === \"string\")\r\n stdout.write(contents, { encoding: \"utf8\" });\r\n else\r\n stdout.write(contents);\r\n });\r\n }\r\n}\r\n\r\n/** Parses the specified command line arguments. */\r\nfunction parseArguments(argv) {\r\n const opts = {};\r\n Object.keys(exports.options).forEach(key => {\r\n const opt = exports.options[key];\r\n if (opt.aliases)\r\n (opts.alias || (opts.alias = {}))[key] = opt.aliases;\r\n if (opt.default !== undefined)\r\n (opts.default || (opts.default = {}))[key] = opt.default;\r\n if (opt.type === \"string\")\r\n (opts.string || (opts.string = [])).push(key);\r\n else if (opt.type === \"boolean\")\r\n (opts.boolean || (opts.boolean = [])).push(key);\r\n });\r\n return require(\"minimist\")(argv, opts);\r\n}\r\n\r\nexports.parseArguments = parseArguments;\r\n\r\n/** Checks diagnostics emitted so far for errors. */\r\nfunction checkDiagnostics(emitter, stderr) {\r\n var diagnostic;\r\n var hasErrors = false;\r\n while ((diagnostic = assemblyscript.nextDiagnostic(emitter)) != null) {\r\n stderr.write(\r\n assemblyscript.formatDiagnostic(diagnostic, stderr.isTTY, true) +\r\n os.EOL + os.EOL\r\n );\r\n if (assemblyscript.isError(diagnostic))\r\n hasErrors = true;\r\n }\r\n return hasErrors;\r\n}\r\n\r\nexports.checkDiagnostics = checkDiagnostics;\r\n\r\n/** Creates an empty set of stats. */\r\nfunction createStats() {\r\n return {\r\n readTime: 0,\r\n readCount: 0,\r\n writeTime: 0,\r\n writeCount: 0,\r\n parseTime: 0,\r\n parseCount: 0,\r\n compileTime: 0,\r\n compileCount: 0,\r\n emitTime: 0,\r\n emitCount: 0,\r\n validateTime: 0,\r\n validateCount: 0,\r\n optimizeTime: 0,\r\n optimizeCount: 0\r\n };\r\n}\r\n\r\nexports.createStats = createStats;\r\n\r\nif (!process.hrtime)\r\n process.hrtime = require(\"browser-process-hrtime\");\r\n\r\n/** Measures the execution time of the specified function. */\r\nfunction measure(fn) {\r\n const start = process.hrtime();\r\n fn();\r\n const times = process.hrtime(start);\r\n return times[0] * 1e9 + times[1];\r\n}\r\n\r\nexports.measure = measure;\r\n\r\n/** Formats and prints out the contents of a set of stats. */\r\nfunction printStats(stats, output) {\r\n function format(time, count) {\r\n return time ? (time / 1e6).toFixed(3) + \" ms\" : \"N/A\";\r\n }\r\n (output || process.stdout).write([\r\n \"I/O Read : \" + format(stats.readTime, stats.readCount),\r\n \"I/O Write : \" + format(stats.writeTime, stats.writeCount),\r\n \"Parse : \" + format(stats.parseTime, stats.parseCount),\r\n \"Compile : \" + format(stats.compileTime, stats.compileCount),\r\n \"Emit : \" + format(stats.emitTime, stats.emitCount),\r\n \"Validate : \" + format(stats.validateTime, stats.validateCount),\r\n \"Optimize : \" + format(stats.optimizeTime, stats.optimizeCount)\r\n ].join(os.EOL) + os.EOL);\r\n}\r\n\r\nexports.printStats = printStats;\r\n\r\n/** Creates a memory stream that can be used in place of stdout/stderr. */\r\nfunction createMemoryStream(fn) {\r\n var stream = [];\r\n stream.write = function(chunk) {\r\n if (typeof chunk === \"string\") {\r\n this.push(Buffer.from(chunk, \"utf8\"));\r\n } else {\r\n this.push(chunk);\r\n }\r\n if (fn) fn(chunk);\r\n };\r\n stream.toBuffer = function() {\r\n return Buffer.concat(this);\r\n };\r\n stream.toString = function() {\r\n return this.toBuffer().toString(\"utf8\");\r\n };\r\n return stream;\r\n}\r\n\r\nexports.createMemoryStream = createMemoryStream;\r\n\r\n/** Compatible TypeScript compiler options. */\r\nexports.tscOptions = {\r\n alwaysStrict: true,\r\n noImplicitAny: true,\r\n noImplicitReturns: true,\r\n noImplicitThis: true,\r\n noEmitOnError: true,\r\n strictNullChecks: true,\r\n experimentalDecorators: true,\r\n target: \"esnext\",\r\n module: \"commonjs\",\r\n noLib: true,\r\n types: [],\r\n allowJs: false\r\n};\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index 81a55487..7dca2046 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -45,10 +45,6 @@ const bin = { commonjs2: "assemblyscript", amd: "assemblyscript", root: "_" - }, - "./assemblyscript": { - commonjs: "./assemblyscript", - commonjs2: "./assemblyscript" } }], node: { @@ -83,7 +79,7 @@ const bin = { }, __dirname: JSON.stringify(".") }), - new webpack.IgnorePlugin(/\.\/src|package\.json|^(ts\-node|glob|source\-map\-support)$/), + new webpack.IgnorePlugin(/\.\/src|package\.json|^(\.\/assemblyscript|ts\-node|glob|source\-map\-support)$/), ] };