{"version":3,"sources":["webpack:///./node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/bl/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/bl/bl.js","webpack:///./node_modules/bl/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/bl/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///./node_modules/bl/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/bl/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/bl/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/bl/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./node_modules/bl/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/bl/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/bl/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js"],"names":["Duplex","module","exports","Readable","ReadableState","EventEmitter","EElistenerCount","emitter","type","listeners","length","Stream","Buffer","OurUint8Array","global","window","self","Uint8Array","_uint8ArrayToBuffer","chunk","from","_isUint8Array","obj","isBuffer","debug","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","_require","getHighWaterMark","_require$codes","codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","prependListener","event","fn","_events","Array","isArray","unshift","on","options","stream","isDuplex","this","objectMode","readableObjectMode","highWaterMark","buffer","pipes","pipesCount","flowing","ended","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","destroyed","defaultEncoding","awaitDrain","readingMore","decoder","encoding","_readableState","readable","read","_read","destroy","_destroy","call","readableAddChunk","addToFront","skipChunkCheck","er","state","onEofChunk","chunkInvalid","Object","getPrototypeOf","prototype","addChunk","write","maybeReadMore","emit","push","emitReadable","undefined","defineProperty","enumerable","get","set","value","_undestroy","undestroy","err","cb","isPaused","setEncoding","enc","p","head","content","data","next","clear","MAX_HWM","computeNewHighWaterMark","n","howMuchToRead","end","emitReadable_","process","nextTick","flow","maybeReadMore_","len","pipeOnDrain","src","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","ret","shift","join","first","concat","consume","endReadable","endReadableNT","wState","_writableState","finished","indexOf","xs","x","i","l","parseInt","nOrig","doRead","pipe","dest","pipeOpts","doEnd","stdout","stderr","endFn","onend","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanup","once","ondrain","cleanedUp","removeListener","onclose","onfinish","onerror","ondata","needDrain","pause","dests","index","splice","ev","res","addListener","removeAllListeners","apply","arguments","wrap","_this","method","bind","Symbol","asyncIterator","_fromList","iterable","opts","eos","callback","called","ERR_MISSING_ARGS","ERR_STREAM_DESTROYED","noop","isRequest","setHeader","abort","destroyer","writing","closed","writable","to","popCallback","streams","pop","pipeline","_len","_key","error","destroys","map","forEach","reduce","DuplexStream","inherits","BufferListStream","_callback","piper","_init","assign","_new","_write","buf","_appendBuffer","size","Math","min","slice","_bufs","_isBufferList","b","isBufferList","_Object$setPrototypeO","_defineProperty","key","_toPropertyKey","configurable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","TypeError","Number","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","done","readAndResolve","iter","resolve","onReadable","wrapForNext","lastPromise","reject","then","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","setPrototypeOf","Promise","promise","_this2","_Object$create","iterator","create","code","ERR_INVALID_OPT_VALUE","highWaterMarkFrom","duplexKey","hwm","isFinite","floor","name","_inheritsLoose","subClass","superClass","constructor","__proto__","createErrorType","message","Base","getMessage","arg1","arg2","arg3","Error","NodeError","_Base","oneOf","expected","thing","startsWith","str","search","pos","substr","endsWith","this_len","substring","includes","start","actual","determiner","msg","replace","PassThrough","Transform","_transform","objectKeys","keys","Writable","v","allowHalfOpen","onEndNT","getBuffer","base64","ieee754","typedArraySupport","arr","foo","subarray","byteLength","e","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","encodingOrOffset","allocUnsafe","ArrayBuffer","fromArrayBuffer","fromString","fromObject","assertSize","alloc","fill","checked","string","isEncoding","fromArrayLike","array","byteOffset","copy","isnan","toString","SlowBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","m","bidirectionalIndexOf","val","dir","isNaN","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","j","hexWrite","offset","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","a","y","list","swap16","swap32","swap64","equals","inspect","max","match","target","thisStart","thisEnd","thisCopy","targetCopy","toJSON","_arr","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","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","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","charCodeAt","INVALID_BASE64_RE","base64clean","stringtrim","trim","units","Infinity","leadSurrogate","byteArray","c","hi","lo","toByteArray","dst","ERR_STREAM_PREMATURE_CLOSE","args","onlegacyfinish","writableEnded","readableEnded","onrequest","req","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread","source","getOwnPropertyDescriptors","defineProperties","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_require2","custom","copyBuffer","tail","entry","s","hasStrings","_getString","_getBuffer","nb","_","depth","customInspect","readableDestroyed","writableDestroyed","errorEmitted","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","ending","finalCalled","prefinished","rState","CorkedRequest","finish","onCorkedFinish","WritableState","internalUtil","deprecate","realHasInstance","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","noDecode","decodeStrings","corked","bufferProcessing","onwrite","writecb","writelen","bufferedRequest","lastBufferedRequest","pendingcb","bufferedRequestCount","corkedRequestsFree","writev","_writev","final","_final","writeAfterEnd","validChunk","decodeChunk","writeOrBuffer","isBuf","newChunk","last","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","holder","count","allBuffers","callFinal","prefinish","need","endWritable","corkReq","current","hasInstance","Function","cork","uncork","setDefaultEncoding","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","transform","flush","_flush","err2"],"mappings":"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","file":"js/chunk-vendors~33a18b39.6667589c.js","sourcesContent":["// 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\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).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/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\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 (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\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 if (typeof isDuplex !== 'boolean') 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 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 this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\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 this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\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 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}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\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 get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(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});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\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 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 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};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\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 errorOrDestroy(stream, 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 if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\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 maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\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 if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\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 var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\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 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.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || 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 = 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 var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\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 if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\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 if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\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 debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\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 process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\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 errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\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 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\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 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 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 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 src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\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', state.awaitDrain);\n state.awaitDrain++;\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) errorOrDestroy(dest, 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 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 return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\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}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\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 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 for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\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 state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\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 var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\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 // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\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 var state = this._readableState;\n var paused = false;\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 _this.push(null);\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 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 methodWrap(method) {\n return function methodWrapReturnFunction() {\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 return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(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 get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\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 get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\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 get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\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 get() {\n return this._readableState.length;\n }\n});\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 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.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\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 if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\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}","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict'\n\nconst DuplexStream = require('readable-stream').Duplex\nconst inherits = require('inherits')\nconst BufferList = require('./BufferList')\n\nfunction BufferListStream (callback) {\n if (!(this instanceof BufferListStream)) {\n return new BufferListStream(callback)\n }\n\n if (typeof callback === 'function') {\n this._callback = callback\n\n const piper = function piper (err) {\n if (this._callback) {\n this._callback(err)\n this._callback = null\n }\n }.bind(this)\n\n this.on('pipe', function onPipe (src) {\n src.on('error', piper)\n })\n this.on('unpipe', function onUnpipe (src) {\n src.removeListener('error', piper)\n })\n\n callback = null\n }\n\n BufferList._init.call(this, callback)\n DuplexStream.call(this)\n}\n\ninherits(BufferListStream, DuplexStream)\nObject.assign(BufferListStream.prototype, BufferList.prototype)\n\nBufferListStream.prototype._new = function _new (callback) {\n return new BufferListStream(callback)\n}\n\nBufferListStream.prototype._write = function _write (buf, encoding, callback) {\n this._appendBuffer(buf)\n\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nBufferListStream.prototype._read = function _read (size) {\n if (!this.length) {\n return this.push(null)\n }\n\n size = Math.min(size, this.length)\n this.push(this.slice(0, size))\n this.consume(size)\n}\n\nBufferListStream.prototype.end = function end (chunk) {\n DuplexStream.prototype.end.call(this, chunk)\n\n if (this._callback) {\n this._callback(null, this.slice())\n this._callback = null\n }\n}\n\nBufferListStream.prototype._destroy = function _destroy (err, cb) {\n this._bufs.length = 0\n this.length = 0\n cb(err)\n}\n\nBufferListStream.prototype._isBufferList = function _isBufferList (b) {\n return b instanceof BufferListStream || b instanceof BufferList || BufferListStream.isBufferList(b)\n}\n\nBufferListStream.isBufferList = BufferList.isBufferList\n\nmodule.exports = BufferListStream\nmodule.exports.BufferListStream = BufferListStream\nmodule.exports.BufferList = BufferList\n","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\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;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\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/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\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}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\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 get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\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 get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\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 get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\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 get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(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});","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","module.exports = require('events').EventEmitter;\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: 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 key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\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 // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.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) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.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) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\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');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\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 this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\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 if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\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\nmodule.exports = Writable;\n\n/* */\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 this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\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 // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') 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 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 this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\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 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 // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\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}\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(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\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 value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\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\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.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 er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\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 if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) 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 return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\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 ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\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 get() {\n return this._writableState && this._writableState.getBuffer();\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}\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 get() {\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 state.length += len;\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 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 return ret;\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 (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, 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 errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\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) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\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 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 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 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 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 if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\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 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) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\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 get() {\n return this._writableState.length;\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 errorOrDestroy(stream, 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' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\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 if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\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\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\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 get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(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});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\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;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\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 if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\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}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\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 cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\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 if (ts.writechunk !== null && !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};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\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 ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}"],"sourceRoot":""}