{"version":3,"sources":["webpack:///./node_modules/node-libs-browser/node_modules/buffer/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/node-libs-browser/node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./src/features/SwapAssets/helpers.ts","webpack:///./node_modules/util/util.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/readable-stream/node_modules/safe-buffer/index.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/node-libs-browser/node_modules/events/events.js"],"names":["base64","ieee754","isArray","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","length","RangeError","Uint8Array","__proto__","prototype","arg","encodingOrOffset","this","Error","allocUnsafe","from","value","TypeError","ArrayBuffer","array","byteOffset","byteLength","undefined","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","write","slice","fromString","obj","isBuffer","len","checked","copy","buffer","val","type","data","fromObject","assertSize","size","i","toString","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","n","m","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","indexOf","call","lastIndexOf","arr","indexSize","arrLength","valLength","String","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","push","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","c","hi","lo","utf16leToBytes","fromByteArray","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","apply","decodeCodePointsArray","exports","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","e","typedArraySupport","poolSize","_augment","Symbol","species","Object","defineProperty","configurable","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","swap16","swap32","swap64","arguments","equals","inspect","max","match","join","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","Array","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","replace","stringtrim","base64clean","src","dst","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","len2","encodeChunk","lookup","num","output","util","module","BufferList","instance","Constructor","_classCallCheck","head","tail","v","entry","next","unshift","shift","clear","s","p","custom","constructor","name","setImmediate","registerImmediate","html","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","document","attachTo","getPrototypeOf","setTimeout","process","handle","nextTick","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","event","port2","createElement","documentElement","script","onreadystatechange","removeChild","appendChild","random","source","addEventListener","attachEvent","callback","Function","args","task","clearImmediate","run","self","PassThrough","Transform","create","options","inherits","_transform","chunk","cb","ctor","superCtor","super_","enumerable","writable","TempCtor","objectToString","o","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","re","isObject","isDate","d","isError","isFunction","isPrimitive","Stream","Readable","Writable","Duplex","StringDecoder","nb","enc","nenc","retried","_normalizeEncoding","normalizeEncoding","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","r","utf8CheckExtraBytes","total","utf8CheckIncomplete","pna","objectKeys","keys","key","method","readable","allowHalfOpen","once","onend","_writableState","ended","onEndNT","get","highWaterMark","_readableState","destroyed","_destroy","err","copyProps","SafeBuffer","assets","transaction","account","fromAsset","fromAmount","address","network","baseAsset","getAssetByUUID","asset","getAssetByTicker","ticker","amount","receiverAddress","senderAccount","networkId","id","rawTransaction","assign","chainId","tradeGasLimit","approvalGasLimit","baseAssetRate","gas","estimate","maxFeePerGas","avgFee","calculateMinMaxFee","baseFee","gasLimit","bigify","plus","toFixed","gasPrice","totalTxFeeToString","inputGasPriceToHex","accounts","baseAssetUuid","baseAssetAmount","filter","acc","WALLET_STEPS","wallet","uuid","weiToFloat","balance","decimal","lt","baseAssetUsed","toTokenBase","DEFAULT_ASSET_DECIMAL","toAsset","getOwnPropertyDescriptors","descriptors","getOwnPropertyDescriptor","formatRegExp","format","f","objects","JSON","stringify","_","deprecate","fn","msg","noDeprecation","warned","throwDeprecation","traceDeprecation","console","trace","error","debugEnviron","debugs","opts","ctx","seen","stylize","stylizeNoColor","depth","colors","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","style","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","hash","forEach","idx","arrayToHash","getOwnPropertyNames","formatError","RegExp","Date","base","braces","toUTCString","l","hasOwnProperty","formatProperty","formatArray","map","pop","reduce","prev","cur","numLinesEst","reduceToSingleString","desc","split","line","ar","pad","debuglog","env","NODE_DEBUG","toUpperCase","test","pid","months","timestamp","time","getHours","getMinutes","getSeconds","getDate","getMonth","prop","log","origin","add","kCustomPromisifiedSymbol","callbackifyOnRejected","reason","newReason","promisify","original","promiseResolve","promiseReject","promise","Promise","resolve","reject","setPrototypeOf","defineProperties","callbackify","callbackified","maybeCb","then","rej","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","marker","runClearTimeout","Item","noop","title","browser","argv","version","versions","on","addListener","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","arg1","arg2","arg3","g","window","config","localStorage","warn","CorkedRequest","state","_this","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","WritableState","internalUtil","OurUint8Array","realHasInstance","destroyImpl","nop","stream","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","er","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","destroy","final","_final","doWrite","onwriteDrain","holder","count","allBuffers","isBuf","callFinal","need","prefinish","getBuffer","current","hasInstance","object","pipe","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","Timeout","clearFn","_id","_clearFn","scope","setInterval","clearInterval","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","ReadableState","EventEmitter","EElistenerCount","emitter","debugUtil","debug","kProxyEvents","readableObjectMode","readableHwm","readableHighWaterMark","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","decoder","_read","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","addChunk","maybeReadMore","needMoreData","isPaused","setEncoding","howMuchToRead","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","hasStrings","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","xs","nOrig","doRead","dest","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","onerror","ondata","cleanedUp","pipeOnDrain","increasedAwaitDrain","pause","_events","resume","dests","index","splice","ev","wrap","paused","bind","_fromList","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","LN2","emitErrorNT","readableDestroyed","writableDestroyed","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","transform","flush","_flush","done","_this2","err2","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","ownKeys","getOwnPropertySymbols","NumberIsNaN","init","eventListener","errorListener","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","prepend","events","existing","warning","newListener","w","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","setMaxListeners","getMaxListeners","doError","message","context","handler","position","originalListener","spliceOne","rawListeners","eventNames"],"mappings":"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","file":"src.bundle.55279193398fbb401974.js","sourcesContent":["/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\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 '<Buffer ' + str + '>'\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","'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 getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\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// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\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// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\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'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\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// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","import BigNumber from 'bignumber.js';\n\nimport { WALLET_STEPS } from '@components';\nimport { DEFAULT_ASSET_DECIMAL } from '@config';\nimport { getAssetByTicker, getAssetByUUID, UniversalGasEstimationResult } from '@services';\nimport {\n ISwapAsset,\n ITxConfig,\n ITxGasLimit,\n ITxObject,\n StoreAccount,\n StoreAsset,\n TUuid\n} from '@types';\nimport {\n bigify,\n calculateMinMaxFee,\n inputGasPriceToHex,\n totalTxFeeToString,\n toTokenBase,\n weiToFloat\n} from '@utils';\n\nexport const makeSwapTxConfig = (assets: StoreAsset[]) => (\n transaction: ITxObject,\n account: StoreAccount,\n fromAsset: ISwapAsset,\n fromAmount: string\n): ITxConfig => {\n const { address, network } = account;\n const baseAsset = getAssetByUUID(assets)(network.baseAsset)!;\n const asset = getAssetByTicker(assets)(fromAsset.ticker) ?? baseAsset;\n\n const txConfig: ITxConfig = {\n from: address,\n amount: fromAmount,\n receiverAddress: address,\n senderAccount: account,\n networkId: network.id,\n asset,\n baseAsset,\n rawTransaction: Object.assign({}, transaction, { chainId: network.chainId })\n };\n\n return txConfig;\n};\n\nexport const getEstimatedGasFee = ({\n tradeGasLimit,\n approvalGasLimit,\n baseAssetRate,\n gas\n}: {\n tradeGasLimit?: ITxGasLimit;\n approvalGasLimit?: ITxGasLimit;\n baseAssetRate?: number;\n gas?: { estimate: UniversalGasEstimationResult; baseFee?: BigNumber };\n}) => {\n if (tradeGasLimit && gas?.estimate.maxFeePerGas) {\n const { avgFee } = calculateMinMaxFee({\n baseFee: gas.baseFee,\n ...gas.estimate,\n gasLimit:\n tradeGasLimit &&\n bigify(tradeGasLimit)\n .plus(approvalGasLimit ? approvalGasLimit : 0)\n .toString(),\n baseAssetRate\n });\n\n return avgFee.toFixed(6);\n }\n\n return (\n gas?.estimate.gasPrice &&\n tradeGasLimit &&\n totalTxFeeToString(\n inputGasPriceToHex(gas.estimate.gasPrice),\n bigify(tradeGasLimit).plus(approvalGasLimit ? approvalGasLimit : 0)\n )\n );\n};\n\n// filter accounts based on wallet type and sufficient balance\nexport const getAccountsWithAssetBalance = (\n accounts: StoreAccount[],\n fromAsset: ISwapAsset,\n fromAmount: string,\n baseAssetUuid?: TUuid,\n baseAssetAmount?: string\n) =>\n accounts.filter((acc) => {\n if (!WALLET_STEPS[acc.wallet]) {\n return false;\n }\n\n const asset = getAssetByUUID(acc.assets)(fromAsset.uuid) as StoreAsset;\n if (!asset) {\n return false;\n }\n\n const assetBalance = weiToFloat(asset.balance, asset.decimal);\n if (assetBalance.lt(fromAmount)) {\n return false;\n }\n\n if (!baseAssetUuid || !baseAssetAmount) {\n return true;\n }\n\n const baseAsset = getAssetByUUID(acc.assets)(baseAssetUuid) as StoreAsset;\n if (!baseAsset) {\n return false;\n }\n\n const baseAssetUsed =\n asset.uuid === baseAssetUuid\n ? toTokenBase(fromAmount, asset.decimal ?? DEFAULT_ASSET_DECIMAL)\n : 0;\n\n const baseAssetBalance = weiToFloat(\n baseAsset.balance.sub(baseAssetUsed.toString()),\n baseAsset.decimal\n );\n if (baseAssetBalance.lt(baseAssetAmount)) {\n return false;\n }\n\n return true;\n });\n\nexport const getUnselectedAssets = (\n assets: ISwapAsset[],\n fromAsset: ISwapAsset,\n toAsset: ISwapAsset\n) =>\n !toAsset || !fromAsset\n ? assets\n : assets.filter((x) => fromAsset.uuid !== x.uuid && toAsset.uuid !== x.uuid);\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\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\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// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\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'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\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// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\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'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n var errorListener;\n\n // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\n}\n"],"sourceRoot":""}