{"version":3,"sources":["../node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/browserify-sign/node_modules/bn.js/lib/bn.js","../node_modules/browserify-sign/algos.js","../node_modules/browserify-sign/browser/index.js","../node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/browserify-sign/browser/sign.js","../node_modules/browserify-sign/browser/verify.js"],"names":["codes","createErrorType","code","message","Base","Error","NodeError","_Base","subClass","superClass","arg1","arg2","arg3","call","this","getMessage","prototype","Object","create","constructor","__proto__","name","oneOf","expected","thing","Array","isArray","len","length","map","i","String","concat","slice","join","value","TypeError","actual","determiner","search","pos","msg","substr","replace","str","this_len","undefined","substring","endsWith","type","start","indexOf","includes","arg","module","exports","objectKeys","keys","obj","key","push","Duplex","Readable","require","Writable","v","method","options","allowHalfOpen","readable","writable","once","onend","_writableState","ended","process","nextTick","onEndNT","self","end","defineProperty","enumerable","get","highWaterMark","getBuffer","_readableState","destroyed","set","ERR_STREAM_PREMATURE_CLOSE","noop","eos","stream","opts","callback","called","_len","arguments","args","_key","apply","onlegacyfinish","onfinish","writableEnded","finished","readableEnded","endEmitted","onerror","err","onclose","onrequest","req","on","setHeader","abort","isRequest","error","removeListener","ReadableState","EventEmitter","EElistenerCount","emitter","listeners","Stream","Buffer","OurUint8Array","global","Uint8Array","debug","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","from","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","buffer","pipes","pipesCount","flowing","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","decoder","encoding","read","_read","destroy","_destroy","readableAddChunk","chunk","addToFront","skipChunkCheck","er","state","emitReadable","emitReadable_","onEofChunk","isBuffer","chunkInvalid","getPrototypeOf","_uint8ArrayToBuffer","addChunk","write","maybeReadMore","emit","unshift","_undestroy","undestroy","cb","isPaused","setEncoding","enc","p","head","content","data","next","clear","MAX_HWM","howMuchToRead","n","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","ret","shift","first","consume","endReadable","endReadableNT","wState","xs","x","l","parseInt","nOrig","doRead","pipe","dest","pipeOpts","src","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","pause","event","fn","prependListener","_events","dests","index","splice","ev","res","addListener","removeAllListeners","wrap","_this","bind","Symbol","asyncIterator","_fromList","iterable","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","errorEmitted","ending","finalCalled","prefinished","rState","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","isFinite","Math","floor","CorkedRequest","entry","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","WritableState","internalUtil","deprecate","realHasInstance","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","bufferedRequestCount","_write","writev","_writev","final","_final","doWrite","onwriteDrain","holder","count","allBuffers","isBuf","callFinal","need","prefinish","current","out","_","hasInstance","Function","object","writeAfterEnd","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","toLowerCase","endWritable","Transform","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","transform","_transform","flush","_flush","done","err2","assert","val","inherits","ctor","superCtor","super_","TempCtor","BN","number","base","endian","isBN","negative","words","red","_init","wordSize","window","e","parseHex4Bits","string","c","charCodeAt","parseHexByte","lowerBound","r","parseBase","mul","b","min","move","num","max","left","right","cmp","_initNumber","_initArray","toString","_parseHex","_parseBase","toArray","ceil","j","w","off","_strip","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","copy","_move","clone","_expand","size","_normSign","for","inspect","zeros","groupSizes","groupBases","padding","carry","groupSize","groupBase","isZero","modrn","idivn","toNumber","toJSON","toBuffer","toArrayLike","smallMulTo","a","lo","k","ncarry","rword","maxJ","ArrayType","byteLength","reqLength","allocUnsafe","allocate","_toArrayLikeLE","position","_toArrayLikeBE","clz32","_countBits","t","_zeroBits","bitLength","hi","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","add","sub","comb10MulTo","mid","o","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","FFTM","y","mulTo","makeRBT","N","revBin","rb","permute","rbt","rws","iws","rtws","itws","s","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","m","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","mulp","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","isNegNum","muln","sqr","isqr","toBitArray","q","iushln","bits","carryMask","newCarry","ishln","iushrn","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","andln","acc","modn","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","strip","input","output","outLen","prev","mod3","one","nOne","lpow","z","inv","wnd","currentLen","mont","u","createHash","sign","verify","algorithms","Sign","algorithm","_hashType","hash","_hash","_tag","id","_signType","Verify","createSign","createVerify","forEach","update","digest","sig","PassThrough","pipeline","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_defineProperty","configurable","_defineProperties","target","props","descriptor","custom","instance","Constructor","_classCallCheck","tail","protoProps","staticProps","alloc","offset","hasStrings","_getString","_getBuffer","nb","buf","source","getOwnPropertyDescriptors","defineProperties","_objectSpread","depth","customInspect","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","resolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","setPrototypeOf","Promise","reject","promise","lastPromise","then","wrapForNext","_this2","_Object$create","iterator","ERR_MISSING_ARGS","destroyer","closed","to","popCallback","streams","pop","destroys","reduce","createHmac","crt","EC","ec","parseKeys","curves","getKey","algo","hlen","hbits","bits2int","bits2octets","fill","obits","makeKey","kv","makeR","hashType","signType","tag","priv","curve","curveId","keyFromPrivate","privateKey","toDER","ecSign","params","priv_key","H","dsaSign","modulus","pad","checkValue","pub","pubkey","subjectPrivateKey","ecVerify","pub_key","unpacked","signature","decode","montp","dsaVerify","padNum","publicExponent"],"mappings":"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","file":"static/js/browserify-sign.9e5623fe.chunk.js","sourcesContent":["'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// 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'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\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}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\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\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 } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\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\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\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\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\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\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\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}\n\nmodule.exports = eos;","// 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'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\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; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // 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\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}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // 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\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // 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\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // 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\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; // 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\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // 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\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\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\n Stream.call(this);\n}\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\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 } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\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.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\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\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\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\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 } // 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\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\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\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\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\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\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\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\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 } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\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; // 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\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 n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\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 // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\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; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // 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\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\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\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\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\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\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.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\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) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\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.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\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\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // 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\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\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; // 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\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\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\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\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 } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\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\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\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; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\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}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\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; // Try start flowing on next tick if stream isn't explicitly paused\n\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\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\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\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\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\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\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; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\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.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\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 } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\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}); // exposed for testing purposes only.\n\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}); // 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.\n\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}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\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\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\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\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\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\n return this;\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\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\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\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\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}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\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 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}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\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\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\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// 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'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} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\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/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\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;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // 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\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // 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\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // 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\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // 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\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // 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\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // 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\n this.sync = true; // 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\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\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})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\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}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // 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 // 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 // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\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); // legacy.\n\n this.writable = true;\n\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\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\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.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\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\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n 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};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\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});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\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.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (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}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\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); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n 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\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // 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.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\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--; // 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\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\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});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\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}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\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\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\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\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 } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\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// 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'use strict';\n\nmodule.exports = Transform;\n\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;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // 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\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n 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 }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // 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\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\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}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\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.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\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}; // 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.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // 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\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}","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","module.exports = require('./browser/algorithms.json')\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\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, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\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\n while (p = p.next) {\n ret += s + p.data;\n }\n\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\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\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\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\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\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\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\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\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\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\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\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\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');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\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}\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\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\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 } // 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\n\n var lastPromise = this[kLastPromise];\n var promise;\n\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\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\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\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\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\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\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]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\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}\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;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\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; // request.destroy just do .end - .abort is what we want\n\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}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\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}\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\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\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}\n\nmodule.exports = pipeline;","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n"],"sourceRoot":""}