{"version":3,"sources":["webpack:////workdir/node_modules/browserify-aes/modes/cbc.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:////workdir/node_modules/browserify-des/index.js","webpack:////workdir/node_modules/browserify-aes/modes/cfb.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js","webpack:////workdir/node_modules/browserify-sign/browser/sign.js","webpack:////workdir/node_modules/browserify-aes/decrypter.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","webpack:////workdir/node_modules/browserify-aes/encrypter.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","webpack:////workdir/node_modules/browserify-rsa/index.js","webpack:////workdir/node_modules/browserify-aes/authCipher.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:////workdir/node_modules/browserify-sign/browser/index.js","webpack:////workdir/node_modules/browserify-des/modes.js","webpack:////workdir/node_modules/browserify-aes/modes/index.js","webpack:////workdir/node_modules/browserify-aes/browser.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:////workdir/node_modules/browserify-aes/modes/ofb.js","webpack:////workdir/node_modules/browserify-aes/modes/cfb8.js","webpack:////workdir/node_modules/browserify-sign/algos.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","webpack:////workdir/node_modules/browserify-aes/incr32.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:////workdir/node_modules/browserify-aes/streamCipher.js","webpack:////workdir/node_modules/browserify-aes/ghash.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js","webpack:////workdir/node_modules/browserify-aes/modes/ctr.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js","webpack:////workdir/node_modules/browserify-aes/modes/cfb1.js","webpack:////workdir/node_modules/browserify-aes/aes.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:////workdir/node_modules/browserify-cipher/browser.js","webpack:////workdir/node_modules/browserify-aes/modes/ecb.js","webpack:////workdir/node_modules/browserify-sign/browser/verify.js","webpack:////workdir/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js"],"names":["xor","exports","encrypt","self","block","data","_prev","_cipher","encryptBlock","decrypt","pad","out","decryptBlock","eos","once","callback","called","apply","arguments","_require$codes","codes","ERR_MISSING_ARGS","ERR_STREAM_DESTROYED","noop","err","isRequest","stream","setHeader","abort","destroyer","reading","writing","closed","on","undefined","readable","writable","destroyed","destroy","call","fn","pipe","from","to","popCallback","streams","length","pop","pipeline","_len","Array","_key","error","isArray","destroys","map","i","forEach","reduce","module","CipherBase","des","inherits","Buffer","modes","CBC","instantiate","EDE","DES","opts","this","type","modeName","mode","toLowerCase","key","isBuffer","concat","slice","iv","_des","create","des3","prototype","_update","update","_final","final","encryptStart","len","_cache","allocUnsafe","ERR_INVALID_OPT_VALUE","highWaterMarkFrom","options","isDuplex","duplexKey","highWaterMark","getHighWaterMark","state","hwm","isFinite","Math","floor","name","objectMode","createHmac","crt","EC","ec","BN","parseKeys","curves","sign","hash","hashType","signType","tag","priv","curve","Error","ecSign","dsaSign","modulus","byteLength","push","curveId","join","keyFromPrivate","privateKey","toDER","algo","k","x","params","priv_key","p","q","g","r","H","bits2int","mod","s","kv","getKey","makeKey","makeR","invm","imul","add","mul","cmpn","toArray","total","res","zeros","alloc","hlen","hbits","bits2octets","v","fill","digest","obits","bits","shift","bitLength","ishrn","t","cmp","toRed","mont","redPow","fromRed","AuthCipher","MODES","StreamCipher","Transform","aes","ebtk","Decipher","Splitter","_last","AES","_mode","_autopadding","cache","unpad","last","padded","createDecipheriv","suite","password","config","TypeError","createDecipher","keys","chunk","thing","get","flush","setAutoPadding","setTo","autoPadding","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","Duplex","afterTransform","er","ts","_transformState","transforming","cb","writecb","emit","writechunk","rs","_readableState","needReadable","_read","bind","needTransform","writeencoding","sync","transform","_transform","_flush","prefinish","_this","done","_writableState","encoding","_write","n","_destroy","err2","Cipher","PADDING","createCipheriv","createCipher","scrub","equals","padBuff","writeUInt8","CorkedRequest","next","entry","finish","onCorkedFinish","Writable","WritableState","internalUtil","deprecate","Stream","OurUint8Array","global","Uint8Array","_uint8ArrayToBuffer","_isUint8Array","obj","realHasInstance","destroyImpl","_require","ERR_INVALID_ARG_TYPE","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","errorOrDestroy","nop","writableObjectMode","finalCalled","needDrain","ending","ended","finished","noDecode","decodeStrings","defaultEncoding","corked","bufferProcessing","onwrite","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","errorEmitted","emitClose","autoDestroy","bufferedRequestCount","corkedRequestsFree","write","writev","_writev","writeAfterEnd","process","nextTick","validChunk","decodeChunk","writeOrBuffer","isBuf","newChunk","ret","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","l","buffer","holder","count","allBuffers","callFinal","need","rState","endEmitted","endWritable","corkReq","getBuffer","current","Object","defineProperty","_","Symbol","hasInstance","Function","value","object","cork","uncork","setDefaultEncoding","indexOf","enumerable","end","set","_undestroy","undestroy","randomBytes","blind","getr","blinder","publicExponent","unblinder","umod","prime1","prime2","msg","blinds","blinded","c1","c2","qinv","coefficient","m1","exponent1","m2","exponent2","h","isub","iadd","toArrayLike","GHASH","incr32","xorTest","a","b","min","calcIv","ck","_finID","ghash","toPad","ivBits","tail","writeUIntBE","_ghash","_secCache","_decrypt","_alen","_authTag","_called","rump","getAuthTag","setAuthTag","setAAD","buf","createHash","verify","algorithms","Sign","algorithm","_hashType","_hash","_tag","id","_signType","Verify","createSign","createVerify","enc","sig","toString","modeModules","ECB","CFB","CFB8","CFB1","OFB","CTR","GCM","ciphers","deciphers","getCiphers","Cipheriv","Decipheriv","listCiphers","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","wState","PassThrough","getBlock","encryptByte","byteParam","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread","target","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","configurable","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_require2","inspect","custom","copyBuffer","src","offset","copy","BufferList","head","hasStrings","_getString","_getBuffer","c","str","nb","depth","customInspect","Readable","item","readUInt8","objectKeys","method","allowHalfOpen","onend","onEndNT","EventEmitter","ZEROES","readUInt32BE","fromArray","writeUInt32BE","_multiply","j","xi","lsbVi","Vi","Zi","abl","bl","ReadableState","EElistenerCount","emitter","listeners","debug","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","ERR_STREAM_PUSH_AFTER_EOF","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","kProxyEvents","prependListener","event","_events","unshift","readableObjectMode","pipes","pipesCount","flowing","emittedReadable","readableListening","resumeScheduled","paused","awaitDrain","readingMore","decoder","read","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","chunkInvalid","getPrototypeOf","addChunk","maybeReadMore","emitReadable","isPaused","setEncoding","content","clear","MAX_HWM","computeNewHighWaterMark","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","first","consume","endReadable","endReadableNT","xs","parseInt","nOrig","doRead","dest","pipeOpts","doEnd","stdout","stderr","endFn","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanup","ondrain","cleanedUp","removeListener","onclose","onfinish","onerror","ondata","pause","dests","index","splice","ev","addListener","removeAllListeners","wrap","asyncIterator","_fromList","iterable","encryptBlockRaw","blockSize","chunkNum","ceil","start","_inheritsLoose","subClass","superClass","constructor","__proto__","createErrorType","code","message","Base","getMessage","arg1","arg2","arg3","NodeError","_Base","oneOf","expected","String","startsWith","search","pos","substr","endsWith","this_len","substring","includes","actual","determiner","replace","arg","bit","shiftIn","asUInt32Array","scrubVec","cryptBlock","M","keySchedule","SUB_MIX","SBOX","nRounds","t0","t1","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","round","RCON","G","d","INV_SBOX","INV_SUB_MIX","sx","x2","x4","x8","_reset","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","ERR_STREAM_PREMATURE_CLOSE","args","onlegacyfinish","writableEnded","readableEnded","onrequest","req","aesModes","desModes","keyLen","ivLen","pub","ecVerify","dsaVerify","padNum","red","pubkey","subjectPrivateKey","y","pub_key","unpacked","signature","decode","checkValue","montp","w","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","resolve","onReadable","wrapForNext","lastPromise","reject","then","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","setPrototypeOf","Promise","promise","_this2","_Object$create","iterator"],"mappings":"mGAAA,IAAIA,EAAM,EAAQ,QAElBC,EAAQC,QAAU,SAAUC,EAAMC,GAChC,IAAIC,EAAOL,EAAII,EAAOD,EAAKG,OAG3B,OADAH,EAAKG,MAAQH,EAAKI,QAAQC,aAAaH,GAChCF,EAAKG,OAGdL,EAAQQ,QAAU,SAAUN,EAAMC,GAChC,IAAIM,EAAMP,EAAKG,MAEfH,EAAKG,MAAQF,EACb,IAAIO,EAAMR,EAAKI,QAAQK,aAAaR,GAEpC,OAAOJ,EAAIW,EAAKD,K,kCCXlB,IAAIG,EAEJ,SAASC,EAAKC,GACZ,IAAIC,GAAS,EACb,OAAO,WACDA,IACJA,GAAS,EACTD,EAASE,WAAM,EAAQC,aAI3B,IAAIC,EAAiB,EAAQ,QAAmBC,MAC5CC,EAAmBF,EAAeE,iBAClCC,EAAuBH,EAAeG,qBAE1C,SAASC,EAAKC,GAEZ,GAAIA,EAAK,MAAMA,EAGjB,SAASC,EAAUC,GACjB,OAAOA,EAAOC,WAAqC,oBAAjBD,EAAOE,MAG3C,SAASC,EAAUH,EAAQI,EAASC,EAAShB,GAC3CA,EAAWD,EAAKC,GAChB,IAAIiB,GAAS,EACbN,EAAOO,GAAG,SAAS,WACjBD,GAAS,UAECE,IAARrB,IAAmBA,EAAM,EAAQ,SACrCA,EAAIa,EAAQ,CACVS,SAAUL,EACVM,SAAUL,IACT,SAAUP,GACX,GAAIA,EAAK,OAAOT,EAASS,GACzBQ,GAAS,EACTjB,OAEF,IAAIsB,GAAY,EAChB,OAAO,SAAUb,GACf,IAAIQ,IACAK,EAGJ,OAFAA,GAAY,EAERZ,EAAUC,GAAgBA,EAAOE,QACP,oBAAnBF,EAAOY,QAA+BZ,EAAOY,eACxDvB,EAASS,GAAO,IAAIF,EAAqB,UAI7C,SAASiB,EAAKC,GACZA,IAGF,SAASC,EAAKC,EAAMC,GAClB,OAAOD,EAAKD,KAAKE,GAGnB,SAASC,EAAYC,GACnB,OAAKA,EAAQC,OAC8B,oBAAhCD,EAAQA,EAAQC,OAAS,GAA0BvB,EACvDsB,EAAQE,MAFaxB,EAK9B,SAASyB,IACP,IAAK,IAAIC,EAAO/B,UAAU4B,OAAQD,EAAU,IAAIK,MAAMD,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAClFN,EAAQM,GAAQjC,UAAUiC,GAG5B,IAOIC,EAPArC,EAAW6B,EAAYC,GAG3B,GAFIK,MAAMG,QAAQR,EAAQ,MAAKA,EAAUA,EAAQ,IAE7CA,EAAQC,OAAS,EACnB,MAAM,IAAIzB,EAAiB,WAI7B,IAAIiC,EAAWT,EAAQU,KAAI,SAAU7B,EAAQ8B,GAC3C,IAAI1B,EAAU0B,EAAIX,EAAQC,OAAS,EAC/Bf,EAAUyB,EAAI,EAClB,OAAO3B,EAAUH,EAAQI,EAASC,GAAS,SAAUP,GAC9C4B,IAAOA,EAAQ5B,GAChBA,GAAK8B,EAASG,QAAQlB,GACtBT,IACJwB,EAASG,QAAQlB,GACjBxB,EAASqC,UAGb,OAAOP,EAAQa,OAAOjB,GAGxBkB,EAAO1D,QAAU+C,G,0mEChGjB,IAAIY,EAAa,EAAQ,QACrBC,EAAM,EAAQ,QACdC,EAAW,EAAQ,QACnBC,EAAS,EAAQ,QAAeA,OAEhCC,EAAQ,CACV,eAAgBH,EAAII,IAAIC,YAAYL,EAAIM,KACxC,WAAYN,EAAIM,IAChB,cAAeN,EAAII,IAAIC,YAAYL,EAAIM,KACvC,UAAWN,EAAIM,IACf,UAAWN,EAAII,IAAIC,YAAYL,EAAIO,KACnC,UAAWP,EAAIO,KAMjB,SAASA,EAAKC,GACZT,EAAWrB,KAAK+B,MAChB,IAEIC,EAFAC,EAAWH,EAAKI,KAAKC,cACrBD,EAAOT,EAAMQ,GAGfD,EADEF,EAAK5D,QACA,UAEA,UAET,IAAIkE,EAAMN,EAAKM,IACVZ,EAAOa,SAASD,KACnBA,EAAMZ,EAAOrB,KAAKiC,IAEH,YAAbH,GAAuC,gBAAbA,IAC5BG,EAAMZ,EAAOc,OAAO,CAACF,EAAKA,EAAIG,MAAM,EAAG,MAEzC,IAAIC,EAAKV,EAAKU,GACThB,EAAOa,SAASG,KACnBA,EAAKhB,EAAOrB,KAAKqC,IAEnBT,KAAKU,KAAOP,EAAKQ,OAAO,CACtBN,IAAKA,EACLI,GAAIA,EACJR,KAAMA,IA5BVP,EAAMH,IAAMG,EAAM,WAClBA,EAAMkB,KAAOlB,EAAM,gBACnBL,EAAO1D,QAAUmE,EACjBN,EAASM,EAAKR,GA4BdQ,EAAIe,UAAUC,QAAU,SAAU/E,GAChC,OAAO0D,EAAOrB,KAAK4B,KAAKU,KAAKK,OAAOhF,KAEtC+D,EAAIe,UAAUG,OAAS,WACrB,OAAOvB,EAAOrB,KAAK4B,KAAKU,KAAKO,W,qBChD/B,IAAIxB,EAAS,EAAQ,QAAeA,OAChC/D,EAAM,EAAQ,QAElB,SAASwF,EAAcrF,EAAME,EAAMI,GACjC,IAAIgF,EAAMpF,EAAKyC,OACXnC,EAAMX,EAAIK,EAAMF,EAAKuF,QAGzB,OAFAvF,EAAKuF,OAASvF,EAAKuF,OAAOZ,MAAMW,GAChCtF,EAAKG,MAAQyD,EAAOc,OAAO,CAAC1E,EAAKG,MAAOG,EAAUJ,EAAOM,IAClDA,EAGTV,EAAQC,QAAU,SAAUC,EAAME,EAAMI,GACtC,IACIgF,EADA9E,EAAMoD,EAAO4B,YAAY,GAG7B,MAAOtF,EAAKyC,OAAQ,CAMlB,GAL2B,IAAvB3C,EAAKuF,OAAO5C,SACd3C,EAAKuF,OAASvF,EAAKI,QAAQC,aAAaL,EAAKG,OAC7CH,EAAKG,MAAQyD,EAAO4B,YAAY,MAG9BxF,EAAKuF,OAAO5C,QAAUzC,EAAKyC,QAIxB,CACLnC,EAAMoD,EAAOc,OAAO,CAAClE,EAAK6E,EAAarF,EAAME,EAAMI,KACnD,MALAgF,EAAMtF,EAAKuF,OAAO5C,OAClBnC,EAAMoD,EAAOc,OAAO,CAAClE,EAAK6E,EAAarF,EAAME,EAAKyE,MAAM,EAAGW,GAAMhF,KACjEJ,EAAOA,EAAKyE,MAAMW,GAOtB,OAAO9E,I,oCC7BT,IAAIiF,EAAwB,EAAQ,QAAmBxE,MAAMwE,sBAE7D,SAASC,EAAkBC,EAASC,EAAUC,GAC5C,OAAgC,MAAzBF,EAAQG,cAAwBH,EAAQG,cAAgBF,EAAWD,EAAQE,GAAa,KAGjG,SAASE,EAAiBC,EAAOL,EAASE,EAAWD,GACnD,IAAIK,EAAMP,EAAkBC,EAASC,EAAUC,GAE/C,GAAW,MAAPI,EAAa,CACf,IAAMC,SAASD,IAAQE,KAAKC,MAAMH,KAASA,GAAQA,EAAM,EAAG,CAC1D,IAAII,EAAOT,EAAWC,EAAY,gBAClC,MAAM,IAAIJ,EAAsBY,EAAMJ,GAGxC,OAAOE,KAAKC,MAAMH,GAIpB,OAAOD,EAAMM,WAAa,GAAK,MAGjC9C,EAAO1D,QAAU,CACfiG,iBAAkBA,I,uBCxBpB,IAAInC,EAAS,EAAQ,QAAeA,OAChC2C,EAAa,EAAQ,QACrBC,EAAM,EAAQ,QACdC,EAAK,EAAQ,QAAYC,GACzBC,EAAK,EAAQ,QACbC,EAAY,EAAQ,QACpBC,EAAS,EAAQ,QAErB,SAASC,EAAMC,EAAMvC,EAAKwC,EAAUC,EAAUC,GAC5C,IAAIC,EAAOP,EAAUpC,GACrB,GAAI2C,EAAKC,MAAO,CAEd,GAAiB,UAAbH,GAAqC,cAAbA,EAA0B,MAAM,IAAII,MAAM,0BACtE,OAAOC,EAAOP,EAAMI,GACf,GAAkB,QAAdA,EAAK/C,KAAgB,CAC9B,GAAiB,QAAb6C,EAAoB,MAAM,IAAII,MAAM,0BACxC,OAAOE,EAAQR,EAAMI,EAAMH,GAE3B,GAAiB,QAAbC,GAAmC,cAAbA,EAA0B,MAAM,IAAII,MAAM,0BAEtEN,EAAOnD,EAAOc,OAAO,CAACwC,EAAKH,IAC3B,IAAIzB,EAAM6B,EAAKK,QAAQC,aACnBlH,EAAM,CAAC,EAAG,GACd,MAAOwG,EAAKpE,OAASpC,EAAIoC,OAAS,EAAI2C,EAAK/E,EAAImH,KAAK,KACpDnH,EAAImH,KAAK,GACT,IAAIrE,GAAK,EACT,QAASA,EAAI0D,EAAKpE,OAAQpC,EAAImH,KAAKX,EAAK1D,IAExC,IAAI7C,EAAMgG,EAAIjG,EAAK4G,GACnB,OAAO3G,EAGT,SAAS8G,EAAQP,EAAMI,GACrB,IAAIQ,EAAUd,EAAOM,EAAKC,MAAMQ,KAAK,MACrC,IAAKD,EAAS,MAAM,IAAIN,MAAM,iBAAmBF,EAAKC,MAAMQ,KAAK,MAEjE,IAAIR,EAAQ,IAAIX,EAAGkB,GACfnD,EAAM4C,EAAMS,eAAeV,EAAKW,YAChCtH,EAAMgE,EAAIsC,KAAKC,GAEnB,OAAOnD,EAAOrB,KAAK/B,EAAIuH,SAGzB,SAASR,EAASR,EAAMI,EAAMa,GAC5B,IAKIC,EALAC,EAAIf,EAAKgB,OAAOC,SAChBC,EAAIlB,EAAKgB,OAAOE,EAChBC,EAAInB,EAAKgB,OAAOG,EAChBC,EAAIpB,EAAKgB,OAAOI,EAChBC,EAAI,IAAI7B,EAAG,GAEX8B,EAAIC,EAAS3B,EAAMuB,GAAGK,IAAIL,GAC1BM,GAAI,EACJC,EAAKC,EAAOZ,EAAGI,EAAGvB,EAAMiB,GAC5B,OAAa,IAANY,EACLX,EAAIc,EAAQT,EAAGO,EAAIb,GACnBQ,EAAIQ,EAAMT,EAAGN,EAAGI,EAAGC,GACnBM,EAAIX,EAAEgB,KAAKX,GAAGY,KAAKT,EAAEU,IAAIjB,EAAEkB,IAAIZ,KAAKG,IAAIL,GACtB,IAAdM,EAAES,KAAK,KACTT,GAAI,EACJJ,EAAI,IAAI7B,EAAG,IAGf,OAAOoB,EAAMS,EAAGI,GAGlB,SAASb,EAAOS,EAAGI,GACjBJ,EAAIA,EAAEc,UACNV,EAAIA,EAAEU,UAGK,IAAPd,EAAE,KAAWA,EAAI,CAAC,GAAG9D,OAAO8D,IACrB,IAAPI,EAAE,KAAWA,EAAI,CAAC,GAAGlE,OAAOkE,IAEhC,IAAIW,EAAQf,EAAE7F,OAASiG,EAAEjG,OAAS,EAC9B6G,EAAM,CAAC,GAAMD,EAAO,EAAMf,EAAE7F,QAEhC,OADA6G,EAAMA,EAAI9E,OAAO8D,EAAG,CAAC,EAAMI,EAAEjG,QAASiG,GAC/BhF,EAAOrB,KAAKiH,GAGrB,SAASV,EAAQZ,EAAGI,EAAGvB,EAAMiB,GAE3B,GADAE,EAAItE,EAAOrB,KAAK2F,EAAEoB,WACdpB,EAAEvF,OAAS2F,EAAEb,aAAc,CAC7B,IAAIgC,EAAQ7F,EAAO8F,MAAMpB,EAAEb,aAAeS,EAAEvF,QAC5CuF,EAAItE,EAAOc,OAAO,CAAC+E,EAAOvB,IAE5B,IAAIyB,EAAO5C,EAAKpE,OACZiH,EAAQC,EAAY9C,EAAMuB,GAC1BwB,EAAIlG,EAAO8F,MAAMC,GACrBG,EAAEC,KAAK,GACP,IAAI9B,EAAIrE,EAAO8F,MAAMC,GAKrB,OAJA1B,EAAI1B,EAAWyB,EAAMC,GAAG/C,OAAO4E,GAAG5E,OAAOtB,EAAOrB,KAAK,CAAC,KAAK2C,OAAOgD,GAAGhD,OAAO0E,GAAOI,SACnFF,EAAIvD,EAAWyB,EAAMC,GAAG/C,OAAO4E,GAAGE,SAClC/B,EAAI1B,EAAWyB,EAAMC,GAAG/C,OAAO4E,GAAG5E,OAAOtB,EAAOrB,KAAK,CAAC,KAAK2C,OAAOgD,GAAGhD,OAAO0E,GAAOI,SACnFF,EAAIvD,EAAWyB,EAAMC,GAAG/C,OAAO4E,GAAGE,SAC3B,CAAE/B,EAAGA,EAAG6B,EAAGA,GAGpB,SAASpB,EAAUuB,EAAO3B,GACxB,IAAI4B,EAAO,IAAIvD,EAAGsD,GACdE,GAASF,EAAMtH,QAAU,GAAK2F,EAAE8B,YAEpC,OADID,EAAQ,GAAGD,EAAKG,MAAMF,GACnBD,EAGT,SAASL,EAAaK,EAAM5B,GAC1B4B,EAAOxB,EAASwB,EAAM5B,GACtB4B,EAAOA,EAAKvB,IAAIL,GAChB,IAAI9H,EAAMoD,EAAOrB,KAAK2H,EAAKZ,WAC3B,GAAI9I,EAAImC,OAAS2F,EAAEb,aAAc,CAC/B,IAAIgC,EAAQ7F,EAAO8F,MAAMpB,EAAEb,aAAejH,EAAImC,QAC9CnC,EAAMoD,EAAOc,OAAO,CAAC+E,EAAOjJ,IAE9B,OAAOA,EAGT,SAASuI,EAAST,EAAGO,EAAIb,GACvB,IAAIsC,EACArC,EAEJ,EAAG,CACDqC,EAAI1G,EAAO8F,MAAM,GAEjB,MAAkB,EAAXY,EAAE3H,OAAa2F,EAAE8B,YACtBvB,EAAGiB,EAAIvD,EAAWyB,EAAMa,EAAGZ,GAAG/C,OAAO2D,EAAGiB,GAAGE,SAC3CM,EAAI1G,EAAOc,OAAO,CAAC4F,EAAGzB,EAAGiB,IAG3B7B,EAAIS,EAAS4B,EAAGhC,GAChBO,EAAGZ,EAAI1B,EAAWyB,EAAMa,EAAGZ,GAAG/C,OAAO2D,EAAGiB,GAAG5E,OAAOtB,EAAOrB,KAAK,CAAC,KAAKyH,SACpEnB,EAAGiB,EAAIvD,EAAWyB,EAAMa,EAAGZ,GAAG/C,OAAO2D,EAAGiB,GAAGE,gBACtB,IAAd/B,EAAEsC,IAAIjC,IAEf,OAAOL,EAGT,SAASe,EAAOT,EAAGN,EAAGI,EAAGC,GACvB,OAAOC,EAAEiC,MAAM7D,EAAG8D,KAAKpC,IAAIqC,OAAOzC,GAAG0C,UAAUhC,IAAIL,GAGrD9E,EAAO1D,QAAUgH,EACjBtD,EAAO1D,QAAQgJ,OAASA,EACxBtF,EAAO1D,QAAQiJ,QAAUA,G,uBC9IzB,IAAI6B,EAAa,EAAQ,QACrBhH,EAAS,EAAQ,QAAeA,OAChCiH,EAAQ,EAAQ,QAChBC,EAAe,EAAQ,QACvBC,EAAY,EAAQ,QACpBC,EAAM,EAAQ,QACdC,EAAO,EAAQ,QACftH,EAAW,EAAQ,QAEvB,SAASuH,EAAU5G,EAAME,EAAKI,GAC5BmG,EAAU3I,KAAK+B,MAEfA,KAAKoB,OAAS,IAAI4F,EAClBhH,KAAKiH,WAAQ,EACbjH,KAAK/D,QAAU,IAAI4K,EAAIK,IAAI7G,GAC3BL,KAAKhE,MAAQyD,EAAOrB,KAAKqC,GACzBT,KAAKmH,MAAQhH,EACbH,KAAKoH,cAAe,EA+BtB,SAASJ,IACPhH,KAAKqH,MAAQ5H,EAAO4B,YAAY,GA8BlC,SAASiG,EAAOC,GACd,IAAIC,EAASD,EAAK,IAClB,GAAIC,EAAS,GAAKA,EAAS,GACzB,MAAM,IAAItE,MAAM,0BAElB,IAAIhE,GAAK,EACT,QAASA,EAAIsI,EACX,GAAID,EAAMrI,GAAK,GAAKsI,MAAcA,EAChC,MAAM,IAAItE,MAAM,0BAGpB,GAAe,KAAXsE,EAEJ,OAAOD,EAAK/G,MAAM,EAAG,GAAKgH,GAG5B,SAASC,EAAkBC,EAAOC,EAAUlH,GAC1C,IAAImH,EAASlB,EAAMgB,EAAMtH,eACzB,IAAKwH,EAAQ,MAAM,IAAIC,UAAU,sBAGjC,GADkB,kBAAPpH,IAAiBA,EAAKhB,EAAOrB,KAAKqC,IACzB,QAAhBmH,EAAOzH,MAAkBM,EAAGjC,SAAWoJ,EAAOnH,GAAI,MAAM,IAAIoH,UAAU,qBAAuBpH,EAAGjC,QAGpG,GADwB,kBAAbmJ,IAAuBA,EAAWlI,EAAOrB,KAAKuJ,IACrDA,EAASnJ,SAAWoJ,EAAOvH,IAAM,EAAG,MAAM,IAAIwH,UAAU,sBAAwBF,EAASnJ,QAE7F,MAAoB,WAAhBoJ,EAAO3H,KACF,IAAI0G,EAAaiB,EAAOvI,OAAQsI,EAAUlH,GAAI,GAC5B,SAAhBmH,EAAO3H,KACT,IAAIwG,EAAWmB,EAAOvI,OAAQsI,EAAUlH,GAAI,GAG9C,IAAIsG,EAASa,EAAOvI,OAAQsI,EAAUlH,GAG/C,SAASqH,EAAgBJ,EAAOC,GAC9B,IAAIC,EAASlB,EAAMgB,EAAMtH,eACzB,IAAKwH,EAAQ,MAAM,IAAIC,UAAU,sBAEjC,IAAIE,EAAOjB,EAAKa,GAAU,EAAOC,EAAOvH,IAAKuH,EAAOnH,IACpD,OAAOgH,EAAiBC,EAAOK,EAAK1H,IAAK0H,EAAKtH,IAnGhDjB,EAASuH,EAAUH,GAEnBG,EAASlG,UAAUC,QAAU,SAAU/E,GAErC,IAAIiM,EACAC,EAFJjI,KAAKoB,OAAO4D,IAAIjJ,GAGhB,IAAIM,EAAM,GACV,MAAQ2L,EAAQhI,KAAKoB,OAAO8G,IAAIlI,KAAKoH,cACnCa,EAAQjI,KAAKmH,MAAMhL,QAAQ6D,KAAMgI,GACjC3L,EAAIkH,KAAK0E,GAEX,OAAOxI,EAAOc,OAAOlE,IAGvB0K,EAASlG,UAAUG,OAAS,WAC1B,IAAIgH,EAAQhI,KAAKoB,OAAO+G,QACxB,GAAInI,KAAKoH,aACP,OAAOE,EAAMtH,KAAKmH,MAAMhL,QAAQ6D,KAAMgI,IACjC,GAAIA,EACT,MAAM,IAAI9E,MAAM,sCAIpB6D,EAASlG,UAAUuH,eAAiB,SAAUC,GAE5C,OADArI,KAAKoH,eAAiBiB,EACfrI,MAOTgH,EAASnG,UAAUmE,IAAM,SAAUjJ,GACjCiE,KAAKqH,MAAQ5H,EAAOc,OAAO,CAACP,KAAKqH,MAAOtL,KAG1CiL,EAASnG,UAAUqH,IAAM,SAAUI,GACjC,IAAIjM,EACJ,GAAIiM,GACF,GAAItI,KAAKqH,MAAM7I,OAAS,GAGtB,OAFAnC,EAAM2D,KAAKqH,MAAM7G,MAAM,EAAG,IAC1BR,KAAKqH,MAAQrH,KAAKqH,MAAM7G,MAAM,IACvBnE,OAGT,GAAI2D,KAAKqH,MAAM7I,QAAU,GAGvB,OAFAnC,EAAM2D,KAAKqH,MAAM7G,MAAM,EAAG,IAC1BR,KAAKqH,MAAQrH,KAAKqH,MAAM7G,MAAM,IACvBnE,EAIX,OAAO,MAGT2K,EAASnG,UAAUsH,MAAQ,WACzB,GAAInI,KAAKqH,MAAM7I,OAAQ,OAAOwB,KAAKqH,OA8CrC1L,EAAQmM,eAAiBA,EACzBnM,EAAQ8L,iBAAmBA,G,oCC5D3BpI,EAAO1D,QAAUiL,EAEjB,IAAI/J,EAAiB,EAAQ,QAAaC,MACtCyL,EAA6B1L,EAAe0L,2BAC5CC,EAAwB3L,EAAe2L,sBACvCC,EAAqC5L,EAAe4L,mCACpDC,EAA8B7L,EAAe6L,4BAE7CC,EAAS,EAAQ,QAIrB,SAASC,EAAeC,EAAI9M,GAC1B,IAAI+M,EAAK9I,KAAK+I,gBACdD,EAAGE,cAAe,EAClB,IAAIC,EAAKH,EAAGI,QAEZ,GAAW,OAAPD,EACF,OAAOjJ,KAAKmJ,KAAK,QAAS,IAAIX,GAGhCM,EAAGM,WAAa,KAChBN,EAAGI,QAAU,KACD,MAARnN,GACFiE,KAAKuD,KAAKxH,GACZkN,EAAGJ,GACH,IAAIQ,EAAKrJ,KAAKsJ,eACdD,EAAG7L,SAAU,GAET6L,EAAGE,cAAgBF,EAAG7K,OAAS6K,EAAG1H,gBACpC3B,KAAKwJ,MAAMH,EAAG1H,eAIlB,SAASiF,EAAUpF,GACjB,KAAMxB,gBAAgB4G,GAAY,OAAO,IAAIA,EAAUpF,GACvDmH,EAAO1K,KAAK+B,KAAMwB,GAClBxB,KAAK+I,gBAAkB,CACrBH,eAAgBA,EAAea,KAAKzJ,MACpC0J,eAAe,EACfV,cAAc,EACdE,QAAS,KACTE,WAAY,KACZO,cAAe,MAGjB3J,KAAKsJ,eAAeC,cAAe,EAInCvJ,KAAKsJ,eAAeM,MAAO,EAEvBpI,IAC+B,oBAAtBA,EAAQqI,YAA0B7J,KAAK8J,WAAatI,EAAQqI,WAC1C,oBAAlBrI,EAAQ2G,QAAsBnI,KAAK+J,OAASvI,EAAQ2G,QAIjEnI,KAAKrC,GAAG,YAAaqM,GAGvB,SAASA,IACP,IAAIC,EAAQjK,KAEe,oBAAhBA,KAAK+J,QAA0B/J,KAAKsJ,eAAevL,UAK5DmM,EAAKlK,KAAM,KAAM,MAJjBA,KAAK+J,QAAO,SAAUlB,EAAI9M,GACxBmO,EAAKD,EAAOpB,EAAI9M,MA6DtB,SAASmO,EAAK9M,EAAQyL,EAAI9M,GACxB,GAAI8M,EAAI,OAAOzL,EAAO+L,KAAK,QAASN,GAMpC,GALY,MAAR9M,GACFqB,EAAOmG,KAAKxH,GAIVqB,EAAO+M,eAAe3L,OAAQ,MAAM,IAAIkK,EAC5C,GAAItL,EAAO2L,gBAAgBC,aAAc,MAAM,IAAIP,EACnD,OAAOrL,EAAOmG,KAAK,MA9HrB,EAAQ,OAAR,CAAoBqD,EAAW+B,GA+D/B/B,EAAU/F,UAAU0C,KAAO,SAAUyE,EAAOoC,GAE1C,OADApK,KAAK+I,gBAAgBW,eAAgB,EAC9Bf,EAAO9H,UAAU0C,KAAKtF,KAAK+B,KAAMgI,EAAOoC,IAajDxD,EAAU/F,UAAUiJ,WAAa,SAAU9B,EAAOoC,EAAUnB,GAC1DA,EAAG,IAAIV,EAA2B,kBAGpC3B,EAAU/F,UAAUwJ,OAAS,SAAUrC,EAAOoC,EAAUnB,GACtD,IAAIH,EAAK9I,KAAK+I,gBAKd,GAJAD,EAAGI,QAAUD,EACbH,EAAGM,WAAapB,EAChBc,EAAGa,cAAgBS,GAEdtB,EAAGE,aAAc,CACpB,IAAIK,EAAKrJ,KAAKsJ,gBACVR,EAAGY,eAAiBL,EAAGE,cAAgBF,EAAG7K,OAAS6K,EAAG1H,gBAAe3B,KAAKwJ,MAAMH,EAAG1H,iBAO3FiF,EAAU/F,UAAU2I,MAAQ,SAAUc,GACpC,IAAIxB,EAAK9I,KAAK+I,gBAEQ,OAAlBD,EAAGM,YAAwBN,EAAGE,aAOhCF,EAAGY,eAAgB,GANnBZ,EAAGE,cAAe,EAElBhJ,KAAK8J,WAAWhB,EAAGM,WAAYN,EAAGa,cAAeb,EAAGF,kBAQxDhC,EAAU/F,UAAU0J,SAAW,SAAUrN,EAAK+L,GAC5CN,EAAO9H,UAAU0J,SAAStM,KAAK+B,KAAM9C,GAAK,SAAUsN,GAClDvB,EAAGuB,Q,uBC1LP,IAAI9D,EAAQ,EAAQ,QAChBD,EAAa,EAAQ,QACrBhH,EAAS,EAAQ,QAAeA,OAChCkH,EAAe,EAAQ,QACvBC,EAAY,EAAQ,QACpBC,EAAM,EAAQ,QACdC,EAAO,EAAQ,QACftH,EAAW,EAAQ,QAEvB,SAASiL,EAAQtK,EAAME,EAAKI,GAC1BmG,EAAU3I,KAAK+B,MAEfA,KAAKoB,OAAS,IAAI4F,EAClBhH,KAAK/D,QAAU,IAAI4K,EAAIK,IAAI7G,GAC3BL,KAAKhE,MAAQyD,EAAOrB,KAAKqC,GACzBT,KAAKmH,MAAQhH,EACbH,KAAKoH,cAAe,EAGtB5H,EAASiL,EAAQ7D,GAEjB6D,EAAO5J,UAAUC,QAAU,SAAU/E,GAEnC,IAAIiM,EACAC,EAFJjI,KAAKoB,OAAO4D,IAAIjJ,GAGhB,IAAIM,EAAM,GAEV,MAAQ2L,EAAQhI,KAAKoB,OAAO8G,MAC1BD,EAAQjI,KAAKmH,MAAMvL,QAAQoE,KAAMgI,GACjC3L,EAAIkH,KAAK0E,GAGX,OAAOxI,EAAOc,OAAOlE,IAGvB,IAAIqO,EAAUjL,EAAO8F,MAAM,GAAI,IAqB/B,SAASyB,IACPhH,KAAKqH,MAAQ5H,EAAO4B,YAAY,GA4BlC,SAASsJ,EAAgBjD,EAAOC,EAAUlH,GACxC,IAAImH,EAASlB,EAAMgB,EAAMtH,eACzB,IAAKwH,EAAQ,MAAM,IAAIC,UAAU,sBAGjC,GADwB,kBAAbF,IAAuBA,EAAWlI,EAAOrB,KAAKuJ,IACrDA,EAASnJ,SAAWoJ,EAAOvH,IAAM,EAAG,MAAM,IAAIwH,UAAU,sBAAwBF,EAASnJ,QAG7F,GADkB,kBAAPiC,IAAiBA,EAAKhB,EAAOrB,KAAKqC,IACzB,QAAhBmH,EAAOzH,MAAkBM,EAAGjC,SAAWoJ,EAAOnH,GAAI,MAAM,IAAIoH,UAAU,qBAAuBpH,EAAGjC,QAEpG,MAAoB,WAAhBoJ,EAAO3H,KACF,IAAI0G,EAAaiB,EAAOvI,OAAQsI,EAAUlH,GACxB,SAAhBmH,EAAO3H,KACT,IAAIwG,EAAWmB,EAAOvI,OAAQsI,EAAUlH,GAG1C,IAAIgK,EAAO7C,EAAOvI,OAAQsI,EAAUlH,GAG7C,SAASmK,EAAclD,EAAOC,GAC5B,IAAIC,EAASlB,EAAMgB,EAAMtH,eACzB,IAAKwH,EAAQ,MAAM,IAAIC,UAAU,sBAEjC,IAAIE,EAAOjB,EAAKa,GAAU,EAAOC,EAAOvH,IAAKuH,EAAOnH,IACpD,OAAOkK,EAAejD,EAAOK,EAAK1H,IAAK0H,EAAKtH,IAxE9CgK,EAAO5J,UAAUG,OAAS,WACxB,IAAIgH,EAAQhI,KAAKoB,OAAO+G,QACxB,GAAInI,KAAKoH,aAGP,OAFAY,EAAQhI,KAAKmH,MAAMvL,QAAQoE,KAAMgI,GACjChI,KAAK/D,QAAQ4O,QACN7C,EAGT,IAAKA,EAAM8C,OAAOJ,GAEhB,MADA1K,KAAK/D,QAAQ4O,QACP,IAAI3H,MAAM,sCAIpBuH,EAAO5J,UAAUuH,eAAiB,SAAUC,GAE1C,OADArI,KAAKoH,eAAiBiB,EACfrI,MAOTgH,EAASnG,UAAUmE,IAAM,SAAUjJ,GACjCiE,KAAKqH,MAAQ5H,EAAOc,OAAO,CAACP,KAAKqH,MAAOtL,KAG1CiL,EAASnG,UAAUqH,IAAM,WACvB,GAAIlI,KAAKqH,MAAM7I,OAAS,GAAI,CAC1B,IAAInC,EAAM2D,KAAKqH,MAAM7G,MAAM,EAAG,IAE9B,OADAR,KAAKqH,MAAQrH,KAAKqH,MAAM7G,MAAM,IACvBnE,EAET,OAAO,MAGT2K,EAASnG,UAAUsH,MAAQ,WACzB,IAAIhH,EAAM,GAAKnB,KAAKqH,MAAM7I,OACtBuM,EAAUtL,EAAO4B,YAAYF,GAE7BjC,GAAK,EACT,QAASA,EAAIiC,EACX4J,EAAQC,WAAW7J,EAAKjC,GAG1B,OAAOO,EAAOc,OAAO,CAACP,KAAKqH,MAAO0D,KA8BpCpP,EAAQgP,eAAiBA,EACzBhP,EAAQiP,aAAeA,G,qCCjHvB,cAqCA,SAASK,EAAcpJ,GACrB,IAAIoI,EAAQjK,KAEZA,KAAKkL,KAAO,KACZlL,KAAKmL,MAAQ,KAEbnL,KAAKoL,OAAS,WACZC,EAAepB,EAAOpI,IAQ1B,IAAI8G,EA3BJtJ,EAAO1D,QAAU2P,EA8BjBA,EAASC,cAAgBA,EAGzB,IAAIC,EAAe,CACjBC,UAAW,EAAQ,SAMjBC,EAAS,EAAQ,QAIjBjM,EAAS,EAAQ,QAAUA,OAE3BkM,EAAgBC,EAAOC,YAAc,aAEzC,SAASC,EAAoB9D,GAC3B,OAAOvI,EAAOrB,KAAK4J,GAGrB,SAAS+D,EAAcC,GACrB,OAAOvM,EAAOa,SAAS0L,IAAQA,aAAeL,EAGhD,IAkIIM,EAlIAC,EAAc,EAAQ,QAEtBC,EAAW,EAAQ,QACnBvK,EAAmBuK,EAASvK,iBAE5B/E,EAAiB,EAAQ,QAAaC,MACtCsP,EAAuBvP,EAAeuP,qBACtC7D,EAA6B1L,EAAe0L,2BAC5CC,EAAwB3L,EAAe2L,sBACvC6D,EAAyBxP,EAAewP,uBACxCrP,EAAuBH,EAAeG,qBACtCsP,EAAyBzP,EAAeyP,uBACxCC,EAA6B1P,EAAe0P,2BAC5CC,EAAuB3P,EAAe2P,qBAEtCC,EAAiBP,EAAYO,eAIjC,SAASC,KAET,SAASnB,EAAc/J,EAASpE,EAAQqE,GACtCkH,EAASA,GAAU,EAAQ,QAC3BnH,EAAUA,GAAW,GAMG,mBAAbC,IAAwBA,EAAWrE,aAAkBuL,GAGhE3I,KAAKmC,aAAeX,EAAQW,WACxBV,IAAUzB,KAAKmC,WAAanC,KAAKmC,cAAgBX,EAAQmL,oBAI7D3M,KAAK2B,cAAgBC,EAAiB5B,KAAMwB,EAAS,wBAAyBC,GAE9EzB,KAAK4M,aAAc,EAEnB5M,KAAK6M,WAAY,EAEjB7M,KAAK8M,QAAS,EAEd9M,KAAK+M,OAAQ,EAEb/M,KAAKgN,UAAW,EAEhBhN,KAAKjC,WAAY,EAIjB,IAAIkP,GAAqC,IAA1BzL,EAAQ0L,cACvBlN,KAAKkN,eAAiBD,EAItBjN,KAAKmN,gBAAkB3L,EAAQ2L,iBAAmB,OAIlDnN,KAAKxB,OAAS,EAEdwB,KAAKvC,SAAU,EAEfuC,KAAKoN,OAAS,EAKdpN,KAAK4J,MAAO,EAIZ5J,KAAKqN,kBAAmB,EAExBrN,KAAKsN,QAAU,SAAUzE,GACvByE,EAAQlQ,EAAQyL,IAIlB7I,KAAKkJ,QAAU,KAEflJ,KAAKuN,SAAW,EAChBvN,KAAKwN,gBAAkB,KACvBxN,KAAKyN,oBAAsB,KAG3BzN,KAAK0N,UAAY,EAGjB1N,KAAK2N,aAAc,EAEnB3N,KAAK4N,cAAe,EAEpB5N,KAAK6N,WAAkC,IAAtBrM,EAAQqM,UAEzB7N,KAAK8N,cAAgBtM,EAAQsM,YAE7B9N,KAAK+N,qBAAuB,EAG5B/N,KAAKgO,mBAAqB,IAAI/C,EAAcjL,MA4C9C,SAASsL,EAAS9J,GAChBmH,EAASA,GAAU,EAAQ,QAS3B,IAAIlH,EAAWzB,gBAAgB2I,EAC/B,IAAKlH,IAAawK,EAAgBhO,KAAKqN,EAAUtL,MAAO,OAAO,IAAIsL,EAAS9J,GAC5ExB,KAAKmK,eAAiB,IAAIoB,EAAc/J,EAASxB,KAAMyB,GAEvDzB,KAAKlC,UAAW,EAEZ0D,IAC2B,oBAAlBA,EAAQyM,QAAsBjO,KAAKqK,OAAS7I,EAAQyM,OACjC,oBAAnBzM,EAAQ0M,SAAuBlO,KAAKmO,QAAU3M,EAAQ0M,QAClC,oBAApB1M,EAAQxD,UAAwBgC,KAAKuK,SAAW/I,EAAQxD,SACtC,oBAAlBwD,EAAQP,QAAsBjB,KAAKgB,OAASQ,EAAQP,QAGjEyK,EAAOzN,KAAK+B,MAQd,SAASoO,EAAchR,EAAQ6L,GAC7B,IAAIJ,EAAK,IAAI0D,EAEbE,EAAerP,EAAQyL,GACvBwF,EAAQC,SAASrF,EAAIJ,GAMvB,SAAS0F,EAAWnR,EAAQyE,EAAOmG,EAAOiB,GACxC,IAAIJ,EAQJ,OANc,OAAVb,EACFa,EAAK,IAAIyD,EACiB,kBAAVtE,GAAuBnG,EAAMM,aAC7C0G,EAAK,IAAIuD,EAAqB,QAAS,CAAC,SAAU,UAAWpE,KAG3Da,IACF4D,EAAerP,EAAQyL,GACvBwF,EAAQC,SAASrF,EAAIJ,IACd,GA6DX,SAAS2F,EAAY3M,EAAOmG,EAAOoC,GAKjC,OAJKvI,EAAMM,aAAsC,IAAxBN,EAAMqL,eAA4C,kBAAVlF,IAC/DA,EAAQvI,EAAOrB,KAAK4J,EAAOoC,IAGtBpC,EAeT,SAASyG,EAAcrR,EAAQyE,EAAO6M,EAAO1G,EAAOoC,EAAUnB,GAC5D,IAAKyF,EAAO,CACV,IAAIC,EAAWH,EAAY3M,EAAOmG,EAAOoC,GAErCpC,IAAU2G,IACZD,GAAQ,EACRtE,EAAW,SACXpC,EAAQ2G,GAIZ,IAAIxN,EAAMU,EAAMM,WAAa,EAAI6F,EAAMxJ,OACvCqD,EAAMrD,QAAU2C,EAChB,IAAIyN,EAAM/M,EAAMrD,OAASqD,EAAMF,cAI/B,GAFKiN,IAAK/M,EAAMgL,WAAY,GAExBhL,EAAMpE,SAAWoE,EAAMuL,OAAQ,CACjC,IAAI7F,EAAO1F,EAAM4L,oBACjB5L,EAAM4L,oBAAsB,CAC1BzF,MAAOA,EACPoC,SAAUA,EACVsE,MAAOA,EACPjS,SAAUwM,EACViC,KAAM,MAGJ3D,EACFA,EAAK2D,KAAOrJ,EAAM4L,oBAElB5L,EAAM2L,gBAAkB3L,EAAM4L,oBAGhC5L,EAAMkM,sBAAwB,OAE9Bc,EAAQzR,EAAQyE,GAAO,EAAOV,EAAK6G,EAAOoC,EAAUnB,GAGtD,OAAO2F,EAGT,SAASC,EAAQzR,EAAQyE,EAAOqM,EAAQ/M,EAAK6G,EAAOoC,EAAUnB,GAC5DpH,EAAM0L,SAAWpM,EACjBU,EAAMqH,QAAUD,EAChBpH,EAAMpE,SAAU,EAChBoE,EAAM+H,MAAO,EACT/H,EAAM9D,UAAW8D,EAAMyL,QAAQ,IAAItQ,EAAqB,UAAmBkR,EAAQ9Q,EAAO+Q,QAAQnG,EAAOnG,EAAMyL,SAAclQ,EAAOiN,OAAOrC,EAAOoC,EAAUvI,EAAMyL,SACtKzL,EAAM+H,MAAO,EAGf,SAASkF,EAAa1R,EAAQyE,EAAO+H,EAAMf,EAAII,KAC3CpH,EAAM6L,UAEJ9D,GAGFyE,EAAQC,SAASrF,EAAIJ,GAGrBwF,EAAQC,SAASS,EAAa3R,EAAQyE,GACtCzE,EAAO+M,eAAeyD,cAAe,EACrCnB,EAAerP,EAAQyL,KAIvBI,EAAGJ,GACHzL,EAAO+M,eAAeyD,cAAe,EACrCnB,EAAerP,EAAQyL,GAGvBkG,EAAY3R,EAAQyE,IAIxB,SAASmN,EAAmBnN,GAC1BA,EAAMpE,SAAU,EAChBoE,EAAMqH,QAAU,KAChBrH,EAAMrD,QAAUqD,EAAM0L,SACtB1L,EAAM0L,SAAW,EAGnB,SAASD,EAAQlQ,EAAQyL,GACvB,IAAIhH,EAAQzE,EAAO+M,eACfP,EAAO/H,EAAM+H,KACbX,EAAKpH,EAAMqH,QACf,GAAkB,oBAAPD,EAAmB,MAAM,IAAIT,EAExC,GADAwG,EAAmBnN,GACfgH,EAAIiG,EAAa1R,EAAQyE,EAAO+H,EAAMf,EAAII,OAAS,CAErD,IAAI+D,EAAWiC,EAAWpN,IAAUzE,EAAOW,UAEtCiP,GAAanL,EAAMuL,QAAWvL,EAAMwL,mBAAoBxL,EAAM2L,iBACjE0B,EAAY9R,EAAQyE,GAGlB+H,EACFyE,EAAQC,SAASa,EAAY/R,EAAQyE,EAAOmL,EAAU/D,GAEtDkG,EAAW/R,EAAQyE,EAAOmL,EAAU/D,IAK1C,SAASkG,EAAW/R,EAAQyE,EAAOmL,EAAU/D,GACtC+D,GAAUoC,EAAahS,EAAQyE,GACpCA,EAAM6L,YACNzE,IACA8F,EAAY3R,EAAQyE,GAMtB,SAASuN,EAAahS,EAAQyE,GACP,IAAjBA,EAAMrD,QAAgBqD,EAAMgL,YAC9BhL,EAAMgL,WAAY,EAClBzP,EAAO+L,KAAK,UAKhB,SAAS+F,EAAY9R,EAAQyE,GAC3BA,EAAMwL,kBAAmB,EACzB,IAAIlC,EAAQtJ,EAAM2L,gBAElB,GAAIpQ,EAAO+Q,SAAWhD,GAASA,EAAMD,KAAM,CAEzC,IAAImE,EAAIxN,EAAMkM,qBACVuB,EAAS,IAAI1Q,MAAMyQ,GACnBE,EAAS1N,EAAMmM,mBACnBuB,EAAOpE,MAAQA,EACf,IAAIqE,EAAQ,EACRC,GAAa,EAEjB,MAAOtE,EACLmE,EAAOE,GAASrE,EACXA,EAAMuD,QAAOe,GAAa,GAC/BtE,EAAQA,EAAMD,KACdsE,GAAS,EAGXF,EAAOG,WAAaA,EACpBZ,EAAQzR,EAAQyE,GAAO,EAAMA,EAAMrD,OAAQ8Q,EAAQ,GAAIC,EAAOnE,QAG9DvJ,EAAM6L,YACN7L,EAAM4L,oBAAsB,KAExB8B,EAAOrE,MACTrJ,EAAMmM,mBAAqBuB,EAAOrE,KAClCqE,EAAOrE,KAAO,MAEdrJ,EAAMmM,mBAAqB,IAAI/C,EAAcpJ,GAG/CA,EAAMkM,qBAAuB,MACxB,CAEL,MAAO5C,EAAO,CACZ,IAAInD,EAAQmD,EAAMnD,MACdoC,EAAWe,EAAMf,SACjBnB,EAAKkC,EAAM1O,SACX0E,EAAMU,EAAMM,WAAa,EAAI6F,EAAMxJ,OAQvC,GAPAqQ,EAAQzR,EAAQyE,GAAO,EAAOV,EAAK6G,EAAOoC,EAAUnB,GACpDkC,EAAQA,EAAMD,KACdrJ,EAAMkM,uBAKFlM,EAAMpE,QACR,MAIU,OAAV0N,IAAgBtJ,EAAM4L,oBAAsB,MAGlD5L,EAAM2L,gBAAkBrC,EACxBtJ,EAAMwL,kBAAmB,EA2C3B,SAAS4B,EAAWpN,GAClB,OAAOA,EAAMiL,QAA2B,IAAjBjL,EAAMrD,QAA0C,OAA1BqD,EAAM2L,kBAA6B3L,EAAMmL,WAAanL,EAAMpE,QAG3G,SAASiS,EAAUtS,EAAQyE,GACzBzE,EAAO4D,QAAO,SAAU9D,GACtB2E,EAAM6L,YAEFxQ,GACFuP,EAAerP,EAAQF,GAGzB2E,EAAM8L,aAAc,EACpBvQ,EAAO+L,KAAK,aACZ4F,EAAY3R,EAAQyE,MAIxB,SAASmI,EAAU5M,EAAQyE,GACpBA,EAAM8L,aAAgB9L,EAAM+K,cACF,oBAAlBxP,EAAO4D,QAA0Ba,EAAM9D,WAKhD8D,EAAM8L,aAAc,EACpBvQ,EAAO+L,KAAK,eALZtH,EAAM6L,YACN7L,EAAM+K,aAAc,EACpByB,EAAQC,SAASoB,EAAWtS,EAAQyE,KAQ1C,SAASkN,EAAY3R,EAAQyE,GAC3B,IAAI8N,EAAOV,EAAWpN,GAEtB,GAAI8N,IACF3F,EAAU5M,EAAQyE,GAEM,IAApBA,EAAM6L,YACR7L,EAAMmL,UAAW,EACjB5P,EAAO+L,KAAK,UAERtH,EAAMiM,cAAa,CAGrB,IAAI8B,EAASxS,EAAOkM,iBAEfsG,GAAUA,EAAO9B,aAAe8B,EAAOC,aAC1CzS,EAAOY,UAMf,OAAO2R,EAGT,SAASG,EAAY1S,EAAQyE,EAAOoH,GAClCpH,EAAMiL,QAAS,EACfiC,EAAY3R,EAAQyE,GAEhBoH,IACEpH,EAAMmL,SAAUqB,EAAQC,SAASrF,GAAS7L,EAAOZ,KAAK,SAAUyM,IAGtEpH,EAAMkL,OAAQ,EACd3P,EAAOU,UAAW,EAGpB,SAASuN,EAAe0E,EAASlO,EAAO3E,GACtC,IAAIiO,EAAQ4E,EAAQ5E,MACpB4E,EAAQ5E,MAAQ,KAEhB,MAAOA,EAAO,CACZ,IAAIlC,EAAKkC,EAAM1O,SACfoF,EAAM6L,YACNzE,EAAG/L,GACHiO,EAAQA,EAAMD,KAIhBrJ,EAAMmM,mBAAmB9C,KAAO6E,EAtjBlC,EAAQ,OAAR,CAAoBzE,EAAUI,GAyF9BH,EAAc1K,UAAUmP,UAAY,WAClC,IAAIC,EAAUjQ,KAAKwN,gBACfnR,EAAM,GAEV,MAAO4T,EACL5T,EAAIkH,KAAK0M,GACTA,EAAUA,EAAQ/E,KAGpB,OAAO7O,GAGT,WACE,IACE6T,OAAOC,eAAe5E,EAAc1K,UAAW,SAAU,CACvDqH,IAAKsD,EAAaC,WAAU,WAC1B,OAAOzL,KAAKgQ,cACX,6EAAmF,aAExF,MAAOI,KAPX,GAcsB,oBAAXC,QAAyBA,OAAOC,aAAiE,oBAA3CC,SAAS1P,UAAUwP,OAAOC,cACzFrE,EAAkBsE,SAAS1P,UAAUwP,OAAOC,aAC5CJ,OAAOC,eAAe7E,EAAU+E,OAAOC,YAAa,CAClDE,MAAO,SAAeC,GACpB,QAAIxE,EAAgBhO,KAAK+B,KAAMyQ,IAC3BzQ,OAASsL,IACNmF,GAAUA,EAAOtG,0BAA0BoB,OAItDU,EAAkB,SAAyBwE,GACzC,OAAOA,aAAkBzQ,MA+B7BsL,EAASzK,UAAU1C,KAAO,WACxBsO,EAAezM,KAAM,IAAIqM,IA+B3Bf,EAASzK,UAAUoN,MAAQ,SAAUjG,EAAOoC,EAAUnB,GACpD,IAAIpH,EAAQ7B,KAAKmK,eACbyE,GAAM,EAENF,GAAS7M,EAAMM,YAAc4J,EAAc/D,GAiB/C,OAfI0G,IAAUjP,EAAOa,SAAS0H,KAC5BA,EAAQ8D,EAAoB9D,IAGN,oBAAboC,IACTnB,EAAKmB,EACLA,EAAW,MAGTsE,EAAOtE,EAAW,SAAmBA,IAAUA,EAAWvI,EAAMsL,iBAClD,oBAAPlE,IAAmBA,EAAKyD,GAC/B7K,EAAMiL,OAAQsB,EAAcpO,KAAMiJ,IAAayF,GAASH,EAAWvO,KAAM6B,EAAOmG,EAAOiB,MACzFpH,EAAM6L,YACNkB,EAAMH,EAAczO,KAAM6B,EAAO6M,EAAO1G,EAAOoC,EAAUnB,IAEpD2F,GAGTtD,EAASzK,UAAU6P,KAAO,WACxB1Q,KAAKmK,eAAeiD,UAGtB9B,EAASzK,UAAU8P,OAAS,WAC1B,IAAI9O,EAAQ7B,KAAKmK,eAEbtI,EAAMuL,SACRvL,EAAMuL,SACDvL,EAAMpE,SAAYoE,EAAMuL,QAAWvL,EAAMwL,mBAAoBxL,EAAM2L,iBAAiB0B,EAAYlP,KAAM6B,KAI/GyJ,EAASzK,UAAU+P,mBAAqB,SAA4BxG,GAGlE,GADwB,kBAAbA,IAAuBA,EAAWA,EAAShK,iBAChD,CAAC,MAAO,OAAQ,QAAS,QAAS,SAAU,SAAU,OAAQ,QAAS,UAAW,WAAY,OAAOyQ,SAASzG,EAAW,IAAIhK,gBAAkB,GAAI,MAAM,IAAIoM,EAAqBpC,GAExL,OADApK,KAAKmK,eAAegD,gBAAkB/C,EAC/BpK,MAGTkQ,OAAOC,eAAe7E,EAASzK,UAAW,iBAAkB,CAI1DiQ,YAAY,EACZ5I,IAAK,WACH,OAAOlI,KAAKmK,gBAAkBnK,KAAKmK,eAAe6F,eAYtDE,OAAOC,eAAe7E,EAASzK,UAAW,wBAAyB,CAIjEiQ,YAAY,EACZ5I,IAAK,WACH,OAAOlI,KAAKmK,eAAexI,iBA4L/B2J,EAASzK,UAAUwJ,OAAS,SAAUrC,EAAOoC,EAAUnB,GACrDA,EAAG,IAAIV,EAA2B,cAGpC+C,EAASzK,UAAUsN,QAAU,KAE7B7C,EAASzK,UAAUkQ,IAAM,SAAU/I,EAAOoC,EAAUnB,GAClD,IAAIpH,EAAQ7B,KAAKmK,eAoBjB,MAlBqB,oBAAVnC,GACTiB,EAAKjB,EACLA,EAAQ,KACRoC,EAAW,MACkB,oBAAbA,IAChBnB,EAAKmB,EACLA,EAAW,MAGC,OAAVpC,QAA4BpK,IAAVoK,GAAqBhI,KAAKiO,MAAMjG,EAAOoC,GAEzDvI,EAAMuL,SACRvL,EAAMuL,OAAS,EACfpN,KAAK2Q,UAIF9O,EAAMiL,QAAQgD,EAAY9P,KAAM6B,EAAOoH,GACrCjJ,MAGTkQ,OAAOC,eAAe7E,EAASzK,UAAW,iBAAkB,CAI1DiQ,YAAY,EACZ5I,IAAK,WACH,OAAOlI,KAAKmK,eAAe3L,UAuF/B0R,OAAOC,eAAe7E,EAASzK,UAAW,YAAa,CAIrDiQ,YAAY,EACZ5I,IAAK,WACH,YAA4BtK,IAAxBoC,KAAKmK,gBAIFnK,KAAKmK,eAAepM,WAE7BiT,IAAK,SAAaR,GAGXxQ,KAAKmK,iBAMVnK,KAAKmK,eAAepM,UAAYyS,MAGpClF,EAASzK,UAAU7C,QAAUkO,EAAYlO,QACzCsN,EAASzK,UAAUoQ,WAAa/E,EAAYgF,UAE5C5F,EAASzK,UAAU0J,SAAW,SAAUrN,EAAK+L,GAC3CA,EAAG/L,M,wDCvrBL,kBAAS,EAAQ,QACbiU,EAAc,EAAQ,QAE1B,SAASC,EAAOpO,GACd,IAAIqB,EAAIgN,EAAKrO,GACTsO,EAAUjN,EAAEgC,MAAM7D,EAAG8D,KAAKtD,EAAKK,UAAUkD,OAAO,IAAI/D,EAAGQ,EAAKuO,iBAAiB/K,UACjF,MAAO,CAAE8K,QAASA,EAASE,UAAWnN,EAAES,KAAK9B,EAAKK,UAGpD,SAASgO,EAAMrO,GACb,IACIqB,EADAlD,EAAM6B,EAAKK,QAAQC,aAEvB,GACEe,EAAI,IAAI7B,EAAG2O,EAAYhQ,UAChBkD,EAAE+B,IAAIpD,EAAKK,UAAY,IAAMgB,EAAEoN,KAAKzO,EAAK0O,UAAYrN,EAAEoN,KAAKzO,EAAK2O,SAC1E,OAAOtN,EAGT,SAAShC,EAAKuP,EAAK5O,GACjB,IAAI6O,EAAST,EAAMpO,GACf7B,EAAM6B,EAAKK,QAAQC,aACnBwO,EAAU,IAAItP,EAAGoP,GAAK3M,IAAI4M,EAAOP,SAASG,KAAKzO,EAAKK,SACpD0O,EAAKD,EAAQzL,MAAM7D,EAAG8D,KAAKtD,EAAK0O,SAChCM,EAAKF,EAAQzL,MAAM7D,EAAG8D,KAAKtD,EAAK2O,SAChCM,EAAOjP,EAAKkP,YACZhO,EAAIlB,EAAK0O,OACTvN,EAAInB,EAAK2O,OACTQ,EAAKJ,EAAGxL,OAAOvD,EAAKoP,WAAW5L,UAC/B6L,EAAKL,EAAGzL,OAAOvD,EAAKsP,WAAW9L,UAC/B+L,EAAIJ,EAAGK,KAAKH,GAAItN,KAAKkN,GAAMR,KAAKvN,GAAGa,KAAKZ,GAC5C,OAAOkO,EAAGI,KAAKF,GAAGxN,KAAK8M,EAAOL,WAAWC,KAAKzO,EAAKK,SAASqP,YAAYjT,EAAQ,KAAM0B,GAExFkB,EAAIgP,KAAOA,EAEXhS,EAAO1D,QAAU0G,I,oDClCjB,IAAIwE,EAAM,EAAQ,QACdpH,EAAS,EAAQ,QAAeA,OAChCmH,EAAY,EAAQ,QACpBpH,EAAW,EAAQ,QACnBmT,EAAQ,EAAQ,QAChBjX,EAAM,EAAQ,QACdkX,EAAS,EAAQ,QAErB,SAASC,EAASC,EAAGC,GACnB,IAAI1W,EAAM,EACNyW,EAAEtU,SAAWuU,EAAEvU,QAAQnC,IAG3B,IADA,IAAI8E,EAAMa,KAAKgR,IAAIF,EAAEtU,OAAQuU,EAAEvU,QACtBU,EAAI,EAAGA,EAAIiC,IAAOjC,EACzB7C,GAAQyW,EAAE5T,GAAK6T,EAAE7T,GAGnB,OAAO7C,EAGT,SAAS4W,EAAQpX,EAAM4E,EAAIyS,GACzB,GAAkB,KAAdzS,EAAGjC,OAEL,OADA3C,EAAKsX,OAAS1T,EAAOc,OAAO,CAACE,EAAIhB,EAAOrB,KAAK,CAAC,EAAG,EAAG,EAAG,MAChDqB,EAAOc,OAAO,CAACE,EAAIhB,EAAOrB,KAAK,CAAC,EAAG,EAAG,EAAG,MAElD,IAAIgV,EAAQ,IAAIT,EAAMO,GAClB/R,EAAMV,EAAGjC,OACT6U,EAAQlS,EAAM,GAClBiS,EAAMrS,OAAON,GACT4S,IACFA,EAAQ,GAAKA,EACbD,EAAMrS,OAAOtB,EAAO8F,MAAM8N,EAAO,KAEnCD,EAAMrS,OAAOtB,EAAO8F,MAAM,EAAG,IAC7B,IAAI+N,EAAe,EAANnS,EACToS,EAAO9T,EAAO8F,MAAM,GACxBgO,EAAKC,YAAYF,EAAQ,EAAG,GAC5BF,EAAMrS,OAAOwS,GACb1X,EAAKsX,OAASC,EAAMvR,MACpB,IAAIxF,EAAMoD,EAAOrB,KAAKvC,EAAKsX,QAE3B,OADAP,EAAOvW,GACAA,EAET,SAASsK,EAAcxG,EAAME,EAAKI,EAAItE,GACpCyK,EAAU3I,KAAK+B,MAEf,IAAIuS,EAAI9S,EAAO8F,MAAM,EAAG,GAExBvF,KAAK/D,QAAU,IAAI4K,EAAIK,IAAI7G,GAC3B,IAAI6S,EAAKlT,KAAK/D,QAAQC,aAAaqW,GACnCvS,KAAKyT,OAAS,IAAId,EAAMO,GACxBzS,EAAKwS,EAAOjT,KAAMS,EAAIyS,GAEtBlT,KAAKhE,MAAQyD,EAAOrB,KAAKqC,GACzBT,KAAKoB,OAAS3B,EAAO4B,YAAY,GACjCrB,KAAK0T,UAAYjU,EAAO4B,YAAY,GACpCrB,KAAK2T,SAAWxX,EAChB6D,KAAK4T,MAAQ,EACb5T,KAAKrB,KAAO,EACZqB,KAAKmH,MAAQhH,EAEbH,KAAK6T,SAAW,KAChB7T,KAAK8T,SAAU,EAGjBtU,EAASmH,EAAcC,GAEvBD,EAAa9F,UAAUC,QAAU,SAAUkH,GACzC,IAAKhI,KAAK8T,SAAW9T,KAAK4T,MAAO,CAC/B,IAAIG,EAAO,GAAM/T,KAAK4T,MAAQ,GAC1BG,EAAO,KACTA,EAAOtU,EAAO8F,MAAMwO,EAAM,GAC1B/T,KAAKyT,OAAO1S,OAAOgT,IAIvB/T,KAAK8T,SAAU,EACf,IAAIzX,EAAM2D,KAAKmH,MAAMvL,QAAQoE,KAAMgI,GAOnC,OANIhI,KAAK2T,SACP3T,KAAKyT,OAAO1S,OAAOiH,GAEnBhI,KAAKyT,OAAO1S,OAAO1E,GAErB2D,KAAKrB,MAAQqJ,EAAMxJ,OACZnC,GAGTsK,EAAa9F,UAAUG,OAAS,WAC9B,GAAIhB,KAAK2T,WAAa3T,KAAK6T,SAAU,MAAM,IAAI3Q,MAAM,oDAErD,IAAIH,EAAMrH,EAAIsE,KAAKyT,OAAOxS,MAAmB,EAAbjB,KAAK4T,MAAuB,EAAZ5T,KAAKrB,MAAWqB,KAAK/D,QAAQC,aAAa8D,KAAKmT,SAC/F,GAAInT,KAAK2T,UAAYd,EAAQ9P,EAAK/C,KAAK6T,UAAW,MAAM,IAAI3Q,MAAM,oDAElElD,KAAK6T,SAAW9Q,EAChB/C,KAAK/D,QAAQ4O,SAGflE,EAAa9F,UAAUmT,WAAa,WAClC,GAAIhU,KAAK2T,WAAalU,EAAOa,SAASN,KAAK6T,UAAW,MAAM,IAAI3Q,MAAM,mDAEtE,OAAOlD,KAAK6T,UAGdlN,EAAa9F,UAAUoT,WAAa,SAAqBlR,GACvD,IAAK/C,KAAK2T,SAAU,MAAM,IAAIzQ,MAAM,mDAEpClD,KAAK6T,SAAW9Q,GAGlB4D,EAAa9F,UAAUqT,OAAS,SAAiBC,GAC/C,GAAInU,KAAK8T,QAAS,MAAM,IAAI5Q,MAAM,8CAElClD,KAAKyT,OAAO1S,OAAOoT,GACnBnU,KAAK4T,OAASO,EAAI3V,QAGpBa,EAAO1D,QAAUgL,G,qBCpHjBtH,EAAO1D,QAAU,WACf,MAAM,IAAIuH,MAAM,mD,qBCDlB,IAAIzD,EAAS,EAAQ,QAAeA,OAChC2U,EAAa,EAAQ,QACrBhX,EAAS,EAAQ,QACjBoC,EAAW,EAAQ,QACnBmD,EAAO,EAAQ,QACf0R,EAAS,EAAQ,QAEjBC,EAAa,EAAQ,QAMzB,SAASC,EAAMC,GACbpX,EAAOkO,SAASrN,KAAK+B,MAErB,IAAIjE,EAAOuY,EAAWE,GACtB,IAAKzY,EAAM,MAAM,IAAImH,MAAM,0BAE3BlD,KAAKyU,UAAY1Y,EAAK6G,KACtB5C,KAAK0U,MAAQN,EAAWrY,EAAK6G,MAC7B5C,KAAK2U,KAAO5Y,EAAK6Y,GACjB5U,KAAK6U,UAAY9Y,EAAK4G,KAwBxB,SAASmS,EAAQN,GACfpX,EAAOkO,SAASrN,KAAK+B,MAErB,IAAIjE,EAAOuY,EAAWE,GACtB,IAAKzY,EAAM,MAAM,IAAImH,MAAM,0BAE3BlD,KAAK0U,MAAQN,EAAWrY,EAAK6G,MAC7B5C,KAAK2U,KAAO5Y,EAAK6Y,GACjB5U,KAAK6U,UAAY9Y,EAAK4G,KAwBxB,SAASoS,EAAYP,GACnB,OAAO,IAAID,EAAKC,GAGlB,SAASQ,EAAcR,GACrB,OAAO,IAAIM,EAAON,GA3EpBtE,OAAOnI,KAAKuM,GAAYnV,SAAQ,SAAUkB,GACxCiU,EAAWjU,GAAKuU,GAAKnV,EAAOrB,KAAKkW,EAAWjU,GAAKuU,GAAI,OACrDN,EAAWjU,EAAID,eAAiBkU,EAAWjU,MAc7Cb,EAAS+U,EAAMnX,EAAOkO,UAEtBiJ,EAAK1T,UAAUwJ,OAAS,SAAiBtO,EAAMqU,EAAGlG,GAChDlK,KAAK0U,MAAM3T,OAAOhF,GAClBmO,KAGFqK,EAAK1T,UAAUE,OAAS,SAAiBhF,EAAMkZ,GAI7C,MAHoB,kBAATlZ,IAAmBA,EAAO0D,EAAOrB,KAAKrC,EAAMkZ,IAEvDjV,KAAK0U,MAAM3T,OAAOhF,GACXiE,MAGTuU,EAAK1T,UAAU8B,KAAO,SAAqBtC,EAAK4U,GAC9CjV,KAAK+Q,MACL,IAAInO,EAAO5C,KAAK0U,MAAM7O,SAClBqP,EAAMvS,EAAKC,EAAMvC,EAAKL,KAAKyU,UAAWzU,KAAK6U,UAAW7U,KAAK2U,MAE/D,OAAOM,EAAMC,EAAIC,SAASF,GAAOC,GAanC1V,EAASsV,EAAQ1X,EAAOkO,UAExBwJ,EAAOjU,UAAUwJ,OAAS,SAAiBtO,EAAMqU,EAAGlG,GAClDlK,KAAK0U,MAAM3T,OAAOhF,GAClBmO,KAGF4K,EAAOjU,UAAUE,OAAS,SAAiBhF,EAAMkZ,GAI/C,MAHoB,kBAATlZ,IAAmBA,EAAO0D,EAAOrB,KAAKrC,EAAMkZ,IAEvDjV,KAAK0U,MAAM3T,OAAOhF,GACXiE,MAGT8U,EAAOjU,UAAUwT,OAAS,SAAuBhU,EAAK6U,EAAKD,GACtC,kBAARC,IAAkBA,EAAMzV,EAAOrB,KAAK8W,EAAKD,IAEpDjV,KAAK+Q,MACL,IAAInO,EAAO5C,KAAK0U,MAAM7O,SACtB,OAAOwO,EAAOa,EAAKtS,EAAMvC,EAAKL,KAAK6U,UAAW7U,KAAK2U,OAWrDtV,EAAO1D,QAAU,CACf4Y,KAAMQ,EACND,OAAQE,EACRD,WAAYA,EACZC,aAAcA,I,qBC1FhBrZ,EAAQ,WAAa,CACnB0E,IAAK,EACLI,GAAI,GAEN9E,EAAQ,WAAaA,EAAQ4D,IAAM,CACjCc,IAAK,EACLI,GAAI,GAEN9E,EAAQ,gBAAkBA,EAAQiF,KAAO,CACvCP,IAAK,GACLI,GAAI,GAEN9E,EAAQ,YAAc,CACpB0E,IAAK,GACLI,GAAI,GAEN9E,EAAQ,eAAiB,CACvB0E,IAAK,GACLI,GAAI,GAEN9E,EAAQ,WAAa,CACnB0E,IAAK,GACLI,GAAI,I,qBCtBN,IAAI2U,EAAc,CAChBC,IAAK,EAAQ,QACb1V,IAAK,EAAQ,QACb2V,IAAK,EAAQ,QACbC,KAAM,EAAQ,QACdC,KAAM,EAAQ,QACdC,IAAK,EAAQ,QACbC,IAAK,EAAQ,QACbC,IAAK,EAAQ,SAGXjW,EAAQ,EAAQ,QAEpB,IAAK,IAAIW,KAAOX,EACdA,EAAMW,GAAKhB,OAAS+V,EAAY1V,EAAMW,GAAKF,MAG7Cd,EAAO1D,QAAU+D,G,4NCjBjB,IAAIkW,EAAU,EAAQ,QAClBC,EAAY,EAAQ,QACpBnW,EAAQ,EAAQ,QAEpB,SAASoW,IACP,OAAO5F,OAAOnI,KAAKrI,GAGrB/D,EAAQiP,aAAejP,EAAQ8O,OAASmL,EAAQhL,aAChDjP,EAAQgP,eAAiBhP,EAAQoa,SAAWH,EAAQjL,eACpDhP,EAAQmM,eAAiBnM,EAAQoL,SAAW8O,EAAU/N,eACtDnM,EAAQ8L,iBAAmB9L,EAAQqa,WAAaH,EAAUpO,iBAC1D9L,EAAQsa,YAActa,EAAQma,WAAaA,G,mCCZ3C,YAEA,SAAS9X,EAAQd,EAAK+L,GACpB,IAAIgB,EAAQjK,KAERkW,EAAoBlW,KAAKsJ,gBAAkBtJ,KAAKsJ,eAAevL,UAC/DoY,EAAoBnW,KAAKmK,gBAAkBnK,KAAKmK,eAAepM,UAEnE,OAAImY,GAAqBC,GACnBlN,EACFA,EAAG/L,GACMA,IACJ8C,KAAKmK,eAEEnK,KAAKmK,eAAeyD,eAC9B5N,KAAKmK,eAAeyD,cAAe,EACnCS,EAAQC,SAAS8H,EAAapW,KAAM9C,IAHpCmR,EAAQC,SAAS8H,EAAapW,KAAM9C,IAOjC8C,OAKLA,KAAKsJ,iBACPtJ,KAAKsJ,eAAevL,WAAY,GAI9BiC,KAAKmK,iBACPnK,KAAKmK,eAAepM,WAAY,GAGlCiC,KAAKuK,SAASrN,GAAO,MAAM,SAAUA,IAC9B+L,GAAM/L,EACJ+M,EAAME,eAECF,EAAME,eAAeyD,aAI/BS,EAAQC,SAAS+H,EAAapM,IAH9BA,EAAME,eAAeyD,cAAe,EACpCS,EAAQC,SAASgI,EAAqBrM,EAAO/M,IAH7CmR,EAAQC,SAASgI,EAAqBrM,EAAO/M,GAOtC+L,GACToF,EAAQC,SAAS+H,EAAapM,GAC9BhB,EAAG/L,IAEHmR,EAAQC,SAAS+H,EAAapM,MAI3BjK,MAGT,SAASsW,EAAoBza,EAAMqB,GACjCkZ,EAAYva,EAAMqB,GAClBmZ,EAAYxa,GAGd,SAASwa,EAAYxa,GACfA,EAAKsO,iBAAmBtO,EAAKsO,eAAe0D,WAC5ChS,EAAKyN,iBAAmBzN,EAAKyN,eAAeuE,WAChDhS,EAAKsN,KAAK,SAGZ,SAAS+H,IACHlR,KAAKsJ,iBACPtJ,KAAKsJ,eAAevL,WAAY,EAChCiC,KAAKsJ,eAAe9L,SAAU,EAC9BwC,KAAKsJ,eAAeyD,OAAQ,EAC5B/M,KAAKsJ,eAAeuG,YAAa,GAG/B7P,KAAKmK,iBACPnK,KAAKmK,eAAepM,WAAY,EAChCiC,KAAKmK,eAAe4C,OAAQ,EAC5B/M,KAAKmK,eAAe2C,QAAS,EAC7B9M,KAAKmK,eAAeyC,aAAc,EAClC5M,KAAKmK,eAAewD,aAAc,EAClC3N,KAAKmK,eAAe6C,UAAW,EAC/BhN,KAAKmK,eAAeyD,cAAe,GAIvC,SAASwI,EAAYva,EAAMqB,GACzBrB,EAAKsN,KAAK,QAASjM,GAGrB,SAASuP,EAAerP,EAAQF,GAM9B,IAAI0S,EAASxS,EAAOkM,eAChBiN,EAASnZ,EAAO+M,eAChByF,GAAUA,EAAO9B,aAAeyI,GAAUA,EAAOzI,YAAa1Q,EAAOY,QAAQd,GAAUE,EAAO+L,KAAK,QAASjM,GAGlHmC,EAAO1D,QAAU,CACfqC,QAASA,EACTkT,UAAWA,EACXzE,eAAgBA,K,0DC9ElBpN,EAAO1D,QAAU6a,EAEjB,IAAI5P,EAAY,EAAQ,QAIxB,SAAS4P,EAAYhV,GACnB,KAAMxB,gBAAgBwW,GAAc,OAAO,IAAIA,EAAYhV,GAC3DoF,EAAU3I,KAAK+B,KAAMwB,GAJvB,EAAQ,OAAR,CAAoBgV,EAAa5P,GAOjC4P,EAAY3V,UAAUiJ,WAAa,SAAU9B,EAAOoC,EAAUnB,GAC5DA,EAAG,KAAMjB,K,wBCrCX,kBAAU,EAAQ,QAElB,SAASyO,EAAU5a,GAEjB,OADAA,EAAKG,MAAQH,EAAKI,QAAQC,aAAaL,EAAKG,OACrCH,EAAKG,MAGdL,EAAQC,QAAU,SAAUC,EAAMmM,GAChC,MAAOnM,EAAKuF,OAAO5C,OAASwJ,EAAMxJ,OAChC3C,EAAKuF,OAAS3B,EAAOc,OAAO,CAAC1E,EAAKuF,OAAQqV,EAAS5a,KAGrD,IAAIO,EAAMP,EAAKuF,OAAOZ,MAAM,EAAGwH,EAAMxJ,QAErC,OADA3C,EAAKuF,OAASvF,EAAKuF,OAAOZ,MAAMwH,EAAMxJ,QAC/B9C,EAAIsM,EAAO5L,M,oDCdpB,IAAIqD,EAAS,EAAQ,QAAeA,OAEpC,SAASiX,EAAa7a,EAAM8a,EAAWxa,GACrC,IAAIC,EAAMP,EAAKI,QAAQC,aAAaL,EAAKG,OACrCK,EAAMD,EAAI,GAAKua,EAOnB,OALA9a,EAAKG,MAAQyD,EAAOc,OAAO,CACzB1E,EAAKG,MAAMwE,MAAM,GACjBf,EAAOrB,KAAK,CAACjC,EAAUwa,EAAYta,MAG9BA,EAGTV,EAAQC,QAAU,SAAUC,EAAMmM,EAAO7L,GACvC,IAAIgF,EAAM6G,EAAMxJ,OACZnC,EAAMoD,EAAO4B,YAAYF,GACzBjC,GAAK,EAET,QAASA,EAAIiC,EACX9E,EAAI6C,GAAKwX,EAAY7a,EAAMmM,EAAM9I,GAAI/C,GAGvC,OAAOE,I,qBCvBTgD,EAAO1D,QAAU,EAAQ,S,kCCEzB,SAASib,EAAQnG,EAAQoG,GAAkB,IAAI9O,EAAOmI,OAAOnI,KAAK0I,GAAS,GAAIP,OAAO4G,sBAAuB,CAAE,IAAIC,EAAU7G,OAAO4G,sBAAsBrG,GAAaoG,IAAgBE,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAO/G,OAAOgH,yBAAyBzG,EAAQwG,GAAKnG,eAAgB/I,EAAKxE,KAAK5G,MAAMoL,EAAMgP,GAAY,OAAOhP,EAE9U,SAASoP,EAAcC,GAAU,IAAK,IAAIlY,EAAI,EAAGA,EAAItC,UAAU4B,OAAQU,IAAK,CAAE,IAAImY,EAAyB,MAAhBza,UAAUsC,GAAatC,UAAUsC,GAAK,GAAQA,EAAI,EAAK0X,EAAQ1G,OAAOmH,IAAS,GAAMlY,SAAQ,SAAUkB,GAAOiX,EAAgBF,EAAQ/W,EAAKgX,EAAOhX,OAAsB6P,OAAOqH,0BAA6BrH,OAAOsH,iBAAiBJ,EAAQlH,OAAOqH,0BAA0BF,IAAmBT,EAAQ1G,OAAOmH,IAASlY,SAAQ,SAAUkB,GAAO6P,OAAOC,eAAeiH,EAAQ/W,EAAK6P,OAAOgH,yBAAyBG,EAAQhX,OAAe,OAAO+W,EAE7gB,SAASE,EAAgBtL,EAAK3L,EAAKmQ,GAAiK,OAApJnQ,KAAO2L,EAAOkE,OAAOC,eAAenE,EAAK3L,EAAK,CAAEmQ,MAAOA,EAAOM,YAAY,EAAM2G,cAAc,EAAM3Z,UAAU,IAAkBkO,EAAI3L,GAAOmQ,EAAgBxE,EAE3M,SAAS0L,EAAgBC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI/P,UAAU,qCAEhH,SAASgQ,EAAkBT,EAAQU,GAAS,IAAK,IAAI5Y,EAAI,EAAGA,EAAI4Y,EAAMtZ,OAAQU,IAAK,CAAE,IAAI6Y,EAAaD,EAAM5Y,GAAI6Y,EAAWjH,WAAaiH,EAAWjH,aAAc,EAAOiH,EAAWN,cAAe,EAAU,UAAWM,IAAYA,EAAWja,UAAW,GAAMoS,OAAOC,eAAeiH,EAAQW,EAAW1X,IAAK0X,IAE7S,SAASC,EAAaJ,EAAaK,EAAYC,GAAmJ,OAAhID,GAAYJ,EAAkBD,EAAY/W,UAAWoX,GAAiBC,GAAaL,EAAkBD,EAAaM,GAAqBN,EAEzM,IAAIzL,EAAW,EAAQ,QACnB1M,EAAS0M,EAAS1M,OAElB0Y,EAAY,EAAQ,GACpBC,EAAUD,EAAUC,QAEpBC,EAASD,GAAWA,EAAQC,QAAU,UAE1C,SAASC,EAAWC,EAAKnB,EAAQoB,GAC/B/Y,EAAOoB,UAAU4X,KAAKxa,KAAKsa,EAAKnB,EAAQoB,GAG1CnZ,EAAO1D,QAEP,WACE,SAAS+c,IACPhB,EAAgB1X,KAAM0Y,GAEtB1Y,KAAK2Y,KAAO,KACZ3Y,KAAKuT,KAAO,KACZvT,KAAKxB,OAAS,EA8KhB,OA3KAwZ,EAAaU,EAAY,CAAC,CACxBrY,IAAK,OACLmQ,MAAO,SAAc7K,GACnB,IAAIwF,EAAQ,CACVpP,KAAM4J,EACNuF,KAAM,MAEJlL,KAAKxB,OAAS,EAAGwB,KAAKuT,KAAKrI,KAAOC,EAAWnL,KAAK2Y,KAAOxN,EAC7DnL,KAAKuT,KAAOpI,IACVnL,KAAKxB,SAER,CACD6B,IAAK,UACLmQ,MAAO,SAAiB7K,GACtB,IAAIwF,EAAQ,CACVpP,KAAM4J,EACNuF,KAAMlL,KAAK2Y,MAEO,IAAhB3Y,KAAKxB,SAAcwB,KAAKuT,KAAOpI,GACnCnL,KAAK2Y,KAAOxN,IACVnL,KAAKxB,SAER,CACD6B,IAAK,QACLmQ,MAAO,WACL,GAAoB,IAAhBxQ,KAAKxB,OAAT,CACA,IAAIoQ,EAAM5O,KAAK2Y,KAAK5c,KAGpB,OAFoB,IAAhBiE,KAAKxB,OAAcwB,KAAK2Y,KAAO3Y,KAAKuT,KAAO,KAAUvT,KAAK2Y,KAAO3Y,KAAK2Y,KAAKzN,OAC7ElL,KAAKxB,OACAoQ,KAER,CACDvO,IAAK,QACLmQ,MAAO,WACLxQ,KAAK2Y,KAAO3Y,KAAKuT,KAAO,KACxBvT,KAAKxB,OAAS,IAEf,CACD6B,IAAK,OACLmQ,MAAO,SAAc/L,GACnB,GAAoB,IAAhBzE,KAAKxB,OAAc,MAAO,GAC9B,IAAI0F,EAAIlE,KAAK2Y,KACT/J,EAAM,GAAK1K,EAAEnI,KAEjB,MAAOmI,EAAIA,EAAEgH,KACX0D,GAAOnK,EAAIP,EAAEnI,KAGf,OAAO6S,IAER,CACDvO,IAAK,SACLmQ,MAAO,SAAgBlG,GACrB,GAAoB,IAAhBtK,KAAKxB,OAAc,OAAOiB,EAAO8F,MAAM,GAC3C,IAAIqJ,EAAMnP,EAAO4B,YAAYiJ,IAAM,GAC/BpG,EAAIlE,KAAK2Y,KACTzZ,EAAI,EAER,MAAOgF,EACLoU,EAAWpU,EAAEnI,KAAM6S,EAAK1P,GACxBA,GAAKgF,EAAEnI,KAAKyC,OACZ0F,EAAIA,EAAEgH,KAGR,OAAO0D,IAGR,CACDvO,IAAK,UACLmQ,MAAO,SAAiBlG,EAAGsO,GACzB,IAAIhK,EAcJ,OAZItE,EAAItK,KAAK2Y,KAAK5c,KAAKyC,QAErBoQ,EAAM5O,KAAK2Y,KAAK5c,KAAKyE,MAAM,EAAG8J,GAC9BtK,KAAK2Y,KAAK5c,KAAOiE,KAAK2Y,KAAK5c,KAAKyE,MAAM8J,IAGtCsE,EAFStE,IAAMtK,KAAK2Y,KAAK5c,KAAKyC,OAExBwB,KAAKgG,QAGL4S,EAAa5Y,KAAK6Y,WAAWvO,GAAKtK,KAAK8Y,WAAWxO,GAGnDsE,IAER,CACDvO,IAAK,QACLmQ,MAAO,WACL,OAAOxQ,KAAK2Y,KAAK5c,OAGlB,CACDsE,IAAK,aACLmQ,MAAO,SAAoBlG,GACzB,IAAIpG,EAAIlE,KAAK2Y,KACTI,EAAI,EACJnK,EAAM1K,EAAEnI,KACZuO,GAAKsE,EAAIpQ,OAET,MAAO0F,EAAIA,EAAEgH,KAAM,CACjB,IAAI8N,EAAM9U,EAAEnI,KACRkd,EAAK3O,EAAI0O,EAAIxa,OAASwa,EAAIxa,OAAS8L,EAIvC,GAHI2O,IAAOD,EAAIxa,OAAQoQ,GAAOoK,EAASpK,GAAOoK,EAAIxY,MAAM,EAAG8J,GAC3DA,GAAK2O,EAEK,IAAN3O,EAAS,CACP2O,IAAOD,EAAIxa,UACXua,EACE7U,EAAEgH,KAAMlL,KAAK2Y,KAAOzU,EAAEgH,KAAUlL,KAAK2Y,KAAO3Y,KAAKuT,KAAO,OAE5DvT,KAAK2Y,KAAOzU,EACZA,EAAEnI,KAAOid,EAAIxY,MAAMyY,IAGrB,QAGAF,EAIJ,OADA/Y,KAAKxB,QAAUua,EACRnK,IAGR,CACDvO,IAAK,aACLmQ,MAAO,SAAoBlG,GACzB,IAAIsE,EAAMnP,EAAO4B,YAAYiJ,GACzBpG,EAAIlE,KAAK2Y,KACTI,EAAI,EACR7U,EAAEnI,KAAK0c,KAAK7J,GACZtE,GAAKpG,EAAEnI,KAAKyC,OAEZ,MAAO0F,EAAIA,EAAEgH,KAAM,CACjB,IAAIiJ,EAAMjQ,EAAEnI,KACRkd,EAAK3O,EAAI6J,EAAI3V,OAAS2V,EAAI3V,OAAS8L,EAIvC,GAHA6J,EAAIsE,KAAK7J,EAAKA,EAAIpQ,OAAS8L,EAAG,EAAG2O,GACjC3O,GAAK2O,EAEK,IAAN3O,EAAS,CACP2O,IAAO9E,EAAI3V,UACXua,EACE7U,EAAEgH,KAAMlL,KAAK2Y,KAAOzU,EAAEgH,KAAUlL,KAAK2Y,KAAO3Y,KAAKuT,KAAO,OAE5DvT,KAAK2Y,KAAOzU,EACZA,EAAEnI,KAAOoY,EAAI3T,MAAMyY,IAGrB,QAGAF,EAIJ,OADA/Y,KAAKxB,QAAUua,EACRnK,IAGR,CACDvO,IAAKgY,EACL7H,MAAO,SAAeJ,EAAG5O,GACvB,OAAO4W,EAAQpY,KAAMmX,EAAc,GAAI3V,EAAS,CAE9C0X,MAAO,EAEPC,eAAe,SAKdT,EApLT,I,qBC5BA/c,EAAU0D,EAAO1D,QAAU,EAAQ,QACnCA,EAAQ+P,OAAS/P,EACjBA,EAAQyd,SAAWzd,EACnBA,EAAQ2P,SAAW,EAAQ,QAC3B3P,EAAQgN,OAAS,EAAQ,QACzBhN,EAAQiL,UAAY,EAAQ,QAC5BjL,EAAQ6a,YAAc,EAAQ,QAC9B7a,EAAQqR,SAAW,EAAQ,QAC3BrR,EAAQ+C,SAAW,EAAQ,S,mBCR3B,SAASkU,EAAQnS,GACf,IACI4Y,EADAlY,EAAMV,EAAGjC,OAEb,MAAO2C,IAAO,CAEZ,GADAkY,EAAO5Y,EAAG6Y,UAAUnY,GACP,MAATkY,EAEG,CACLA,IACA5Y,EAAGuK,WAAWqO,EAAMlY,GACpB,MAJAV,EAAGuK,WAAW,EAAG7J,IAQvB9B,EAAO1D,QAAUiX,G,mCCdjB,YA2BA,IAAI2G,EAAarJ,OAAOnI,MAAQ,SAAUiE,GACxC,IAAIjE,EAAO,GAEX,IAAK,IAAI1H,KAAO2L,EACdjE,EAAKxE,KAAKlD,GAGZ,OAAO0H,GAKT1I,EAAO1D,QAAUgN,EAEjB,IAAIyQ,EAAW,EAAQ,QAEnB9N,EAAW,EAAQ,QAEvB,EAAQ,OAAR,CAAoB3C,EAAQyQ,GAM1B,IAFA,IAAIrR,EAAOwR,EAAWjO,EAASzK,WAEtB8E,EAAI,EAAGA,EAAIoC,EAAKvJ,OAAQmH,IAAK,CACpC,IAAI6T,EAASzR,EAAKpC,GACbgD,EAAO9H,UAAU2Y,KAAS7Q,EAAO9H,UAAU2Y,GAAUlO,EAASzK,UAAU2Y,IAIjF,SAAS7Q,EAAOnH,GACd,KAAMxB,gBAAgB2I,GAAS,OAAO,IAAIA,EAAOnH,GACjD4X,EAASnb,KAAK+B,KAAMwB,GACpB8J,EAASrN,KAAK+B,KAAMwB,GACpBxB,KAAKyZ,eAAgB,EAEjBjY,KACuB,IAArBA,EAAQ3D,WAAoBmC,KAAKnC,UAAW,IACvB,IAArB2D,EAAQ1D,WAAoBkC,KAAKlC,UAAW,IAElB,IAA1B0D,EAAQiY,gBACVzZ,KAAKyZ,eAAgB,EACrBzZ,KAAKxD,KAAK,MAAOkd,KAiCvB,SAASA,IAEH1Z,KAAKmK,eAAe4C,OAGxBsB,EAAQC,SAASqL,EAAS3Z,MAG5B,SAAS2Z,EAAQ9d,GACfA,EAAKkV,MArCPb,OAAOC,eAAexH,EAAO9H,UAAW,wBAAyB,CAI/DiQ,YAAY,EACZ5I,IAAK,WACH,OAAOlI,KAAKmK,eAAexI,iBAG/BuO,OAAOC,eAAexH,EAAO9H,UAAW,iBAAkB,CAIxDiQ,YAAY,EACZ5I,IAAK,WACH,OAAOlI,KAAKmK,gBAAkBnK,KAAKmK,eAAe6F,eAGtDE,OAAOC,eAAexH,EAAO9H,UAAW,iBAAkB,CAIxDiQ,YAAY,EACZ5I,IAAK,WACH,OAAOlI,KAAKmK,eAAe3L,UAgB/B0R,OAAOC,eAAexH,EAAO9H,UAAW,YAAa,CAInDiQ,YAAY,EACZ5I,IAAK,WACH,YAA4BtK,IAAxBoC,KAAKsJ,qBAAwD1L,IAAxBoC,KAAKmK,iBAIvCnK,KAAKsJ,eAAevL,WAAaiC,KAAKmK,eAAepM,YAE9DiT,IAAK,SAAaR,QAGY5S,IAAxBoC,KAAKsJ,qBAAwD1L,IAAxBoC,KAAKmK,iBAM9CnK,KAAKsJ,eAAevL,UAAYyS,EAChCxQ,KAAKmK,eAAepM,UAAYyS,Q,2CCxIpCnR,EAAO1D,QAAU,EAAQ,QAAUie,c,qBCAnC,IAAI/S,EAAM,EAAQ,QACdpH,EAAS,EAAQ,QAAeA,OAChCmH,EAAY,EAAQ,QACpBpH,EAAW,EAAQ,QAEvB,SAASmH,EAAcxG,EAAME,EAAKI,EAAItE,GACpCyK,EAAU3I,KAAK+B,MAEfA,KAAK/D,QAAU,IAAI4K,EAAIK,IAAI7G,GAC3BL,KAAKhE,MAAQyD,EAAOrB,KAAKqC,GACzBT,KAAKoB,OAAS3B,EAAO4B,YAAY,GACjCrB,KAAK0T,UAAYjU,EAAO4B,YAAY,GACpCrB,KAAK2T,SAAWxX,EAChB6D,KAAKmH,MAAQhH,EAGfX,EAASmH,EAAcC,GAEvBD,EAAa9F,UAAUC,QAAU,SAAUkH,GACzC,OAAOhI,KAAKmH,MAAMvL,QAAQoE,KAAMgI,EAAOhI,KAAK2T,WAG9ChN,EAAa9F,UAAUG,OAAS,WAC9BhB,KAAK/D,QAAQ4O,SAGfxL,EAAO1D,QAAUgL,G,qBC1BjB,IAAIlH,EAAS,EAAQ,QAAeA,OAChCoa,EAASpa,EAAO8F,MAAM,GAAI,GAE9B,SAASJ,EAASgP,GAChB,MAAO,CACLA,EAAI2F,aAAa,GACjB3F,EAAI2F,aAAa,GACjB3F,EAAI2F,aAAa,GACjB3F,EAAI2F,aAAa,KAIrB,SAASC,EAAW1d,GAClB,IAAI8X,EAAM1U,EAAO4B,YAAY,IAK7B,OAJA8S,EAAI6F,cAAc3d,EAAI,KAAO,EAAG,GAChC8X,EAAI6F,cAAc3d,EAAI,KAAO,EAAG,GAChC8X,EAAI6F,cAAc3d,EAAI,KAAO,EAAG,GAChC8X,EAAI6F,cAAc3d,EAAI,KAAO,EAAG,IACzB8X,EAGT,SAASxB,EAAOtS,GACdL,KAAKuS,EAAIlS,EACTL,KAAK6B,MAAQpC,EAAO8F,MAAM,GAAI,GAC9BvF,KAAKqH,MAAQ5H,EAAO4B,YAAY,GAKlCsR,EAAM9R,UAAUuS,MAAQ,SAAUtX,GAChC,IAAIoD,GAAK,EACT,QAASA,EAAIpD,EAAM0C,OACjBwB,KAAK6B,MAAM3C,IAAMpD,EAAMoD,GAEzBc,KAAKia,aAGPtH,EAAM9R,UAAUoZ,UAAY,WAC1B,IAEIC,EAAGC,EAAIC,EAFPC,EAAKlV,EAAQnF,KAAKuS,GAClB+H,EAAK,CAAC,EAAG,EAAG,EAAG,GAEfpb,GAAK,EACT,QAASA,EAAI,IAAK,CAchB,IAbAib,EAAwD,KAAlDna,KAAK6B,SAAS3C,EAAI,IAAO,GAAM,EAAKA,EAAI,GAC1Cib,IAEFG,EAAG,IAAMD,EAAG,GACZC,EAAG,IAAMD,EAAG,GACZC,EAAG,IAAMD,EAAG,GACZC,EAAG,IAAMD,EAAG,IAIdD,EAAwB,KAAP,EAARC,EAAG,IAGPH,EAAI,EAAGA,EAAI,EAAGA,IACjBG,EAAGH,GAAMG,EAAGH,KAAO,GAAmB,EAAZG,EAAGH,EAAI,KAAW,GAE9CG,EAAG,GAAKA,EAAG,KAAO,EAGdD,IACFC,EAAG,GAAKA,EAAG,GAAM,KAAQ,IAG7Bra,KAAK6B,MAAQkY,EAAUO,IAGzB3H,EAAM9R,UAAUE,OAAS,SAAUoT,GAEjC,IAAInM,EADJhI,KAAKqH,MAAQ5H,EAAOc,OAAO,CAACP,KAAKqH,MAAO8M,IAExC,MAAOnU,KAAKqH,MAAM7I,QAAU,GAC1BwJ,EAAQhI,KAAKqH,MAAM7G,MAAM,EAAG,IAC5BR,KAAKqH,MAAQrH,KAAKqH,MAAM7G,MAAM,IAC9BR,KAAKoT,MAAMpL,IAIf2K,EAAM9R,UAAUI,MAAQ,SAAUsZ,EAAKC,GAMrC,OALIxa,KAAKqH,MAAM7I,QACbwB,KAAKoT,MAAM3T,EAAOc,OAAO,CAACP,KAAKqH,MAAOwS,GAAS,KAGjD7Z,KAAKoT,MAAM2G,EAAU,CAAC,EAAGQ,EAAK,EAAGC,KAC1Bxa,KAAK6B,OAGdxC,EAAO1D,QAAUgX,G,mCCxFjB,cAyBA,IAAIhK,EAHJtJ,EAAO1D,QAAUyd,EAMjBA,EAASqB,cAAgBA,EAGhB,EAAQ,QAAUb,aAA3B,IAEIc,EAAkB,SAAyBC,EAAS1a,GACtD,OAAO0a,EAAQC,UAAU3a,GAAMzB,QAO7BkN,EAAS,EAAQ,QAIjBjM,EAAS,EAAQ,QAAUA,OAE3BkM,EAAgBC,EAAOC,YAAc,aAEzC,SAASC,EAAoB9D,GAC3B,OAAOvI,EAAOrB,KAAK4J,GAGrB,SAAS+D,EAAcC,GACrB,OAAOvM,EAAOa,SAAS0L,IAAQA,aAAeL,EAKhD,IAEIkP,EAFAC,EAAY,EAAQ,GAKtBD,EADEC,GAAaA,EAAUC,SACjBD,EAAUC,SAAS,UAEnB,aAKV,IAcIC,EACAC,EACA7c,EAhBAsa,EAAa,EAAQ,QAErBxM,EAAc,EAAQ,QAEtBC,EAAW,EAAQ,QACnBvK,EAAmBuK,EAASvK,iBAE5B/E,EAAiB,EAAQ,QAAaC,MACtCsP,EAAuBvP,EAAeuP,qBACtC8O,EAA4Bre,EAAeqe,0BAC3C3S,EAA6B1L,EAAe0L,2BAC5C4S,EAAqCte,EAAese,mCAOxD,EAAQ,OAAR,CAAoB/B,EAAU1N,GAE9B,IAAIe,EAAiBP,EAAYO,eAC7B2O,EAAe,CAAC,QAAS,QAAS,UAAW,QAAS,UAE1D,SAASC,EAAgBV,EAASW,EAAOpd,GAGvC,GAAuC,oBAA5Byc,EAAQU,gBAAgC,OAAOV,EAAQU,gBAAgBC,EAAOpd,GAKpFyc,EAAQY,SAAYZ,EAAQY,QAAQD,GAAuC1c,MAAMG,QAAQ4b,EAAQY,QAAQD,IAASX,EAAQY,QAAQD,GAAOE,QAAQtd,GAASyc,EAAQY,QAAQD,GAAS,CAACpd,EAAIyc,EAAQY,QAAQD,IAA5JX,EAAQhd,GAAG2d,EAAOpd,GAGrE,SAASuc,EAAcjZ,EAASpE,EAAQqE,GACtCkH,EAASA,GAAU,EAAQ,QAC3BnH,EAAUA,GAAW,GAMG,mBAAbC,IAAwBA,EAAWrE,aAAkBuL,GAGhE3I,KAAKmC,aAAeX,EAAQW,WACxBV,IAAUzB,KAAKmC,WAAanC,KAAKmC,cAAgBX,EAAQia,oBAG7Dzb,KAAK2B,cAAgBC,EAAiB5B,KAAMwB,EAAS,wBAAyBC,GAI9EzB,KAAKsP,OAAS,IAAIoJ,EAClB1Y,KAAKxB,OAAS,EACdwB,KAAK0b,MAAQ,KACb1b,KAAK2b,WAAa,EAClB3b,KAAK4b,QAAU,KACf5b,KAAK+M,OAAQ,EACb/M,KAAK6P,YAAa,EAClB7P,KAAKxC,SAAU,EAKfwC,KAAK4J,MAAO,EAGZ5J,KAAKuJ,cAAe,EACpBvJ,KAAK6b,iBAAkB,EACvB7b,KAAK8b,mBAAoB,EACzB9b,KAAK+b,iBAAkB,EACvB/b,KAAKgc,QAAS,EAEdhc,KAAK6N,WAAkC,IAAtBrM,EAAQqM,UAEzB7N,KAAK8N,cAAgBtM,EAAQsM,YAE7B9N,KAAKjC,WAAY,EAIjBiC,KAAKmN,gBAAkB3L,EAAQ2L,iBAAmB,OAElDnN,KAAKic,WAAa,EAElBjc,KAAKkc,aAAc,EACnBlc,KAAKmc,QAAU,KACfnc,KAAKoK,SAAW,KAEZ5I,EAAQ4I,WACL4Q,IAAeA,EAAgB,EAAQ,QAAmBA,eAC/Dhb,KAAKmc,QAAU,IAAInB,EAAcxZ,EAAQ4I,UACzCpK,KAAKoK,SAAW5I,EAAQ4I,UAI5B,SAASgP,EAAS5X,GAEhB,GADAmH,EAASA,GAAU,EAAQ,UACrB3I,gBAAgBoZ,GAAW,OAAO,IAAIA,EAAS5X,GAGrD,IAAIC,EAAWzB,gBAAgB2I,EAC/B3I,KAAKsJ,eAAiB,IAAImR,EAAcjZ,EAASxB,KAAMyB,GAEvDzB,KAAKnC,UAAW,EAEZ2D,IAC0B,oBAAjBA,EAAQ4a,OAAqBpc,KAAKwJ,MAAQhI,EAAQ4a,MAC9B,oBAApB5a,EAAQxD,UAAwBgC,KAAKuK,SAAW/I,EAAQxD,UAGrE0N,EAAOzN,KAAK+B,MAiEd,SAASqc,EAAiBjf,EAAQ4K,EAAOoC,EAAUkS,EAAYC,GAC7D1B,EAAM,mBAAoB7S,GAC1B,IAMMa,EANFhH,EAAQzE,EAAOkM,eAEnB,GAAc,OAAVtB,EACFnG,EAAMrE,SAAU,EAChBgf,EAAWpf,EAAQyE,QAKnB,GAFK0a,IAAgB1T,EAAK4T,EAAa5a,EAAOmG,IAE1Ca,EACF4D,EAAerP,EAAQyL,QAClB,GAAIhH,EAAMM,YAAc6F,GAASA,EAAMxJ,OAAS,EAKrD,GAJqB,kBAAVwJ,GAAuBnG,EAAMM,YAAc+N,OAAOwM,eAAe1U,KAAWvI,EAAOoB,YAC5FmH,EAAQ8D,EAAoB9D,IAG1BsU,EACEza,EAAMgO,WAAYpD,EAAerP,EAAQ,IAAI+d,GAA2CwB,EAASvf,EAAQyE,EAAOmG,GAAO,QACtH,GAAInG,EAAMkL,MACfN,EAAerP,EAAQ,IAAI8d,OACtB,IAAIrZ,EAAM9D,UACf,OAAO,EAEP8D,EAAMrE,SAAU,EAEZqE,EAAMsa,UAAY/R,GACpBpC,EAAQnG,EAAMsa,QAAQlO,MAAMjG,GACxBnG,EAAMM,YAA+B,IAAjB6F,EAAMxJ,OAAcme,EAASvf,EAAQyE,EAAOmG,GAAO,GAAY4U,EAAcxf,EAAQyE,IAE7G8a,EAASvf,EAAQyE,EAAOmG,GAAO,QAGzBsU,IACVza,EAAMrE,SAAU,EAChBof,EAAcxf,EAAQyE,IAO1B,OAAQA,EAAMkL,QAAUlL,EAAMrD,OAASqD,EAAMF,eAAkC,IAAjBE,EAAMrD,QAGtE,SAASme,EAASvf,EAAQyE,EAAOmG,EAAOsU,GAClCza,EAAM+Z,SAA4B,IAAjB/Z,EAAMrD,SAAiBqD,EAAM+H,MAChD/H,EAAMoa,WAAa,EACnB7e,EAAO+L,KAAK,OAAQnB,KAGpBnG,EAAMrD,QAAUqD,EAAMM,WAAa,EAAI6F,EAAMxJ,OACzC8d,EAAYza,EAAMyN,OAAOkM,QAAQxT,GAAYnG,EAAMyN,OAAO/L,KAAKyE,GAC/DnG,EAAM0H,cAAcsT,EAAazf,IAGvCwf,EAAcxf,EAAQyE,GAGxB,SAAS4a,EAAa5a,EAAOmG,GAC3B,IAAIa,EAMJ,OAJKkD,EAAc/D,IAA2B,kBAAVA,QAAgCpK,IAAVoK,GAAwBnG,EAAMM,aACtF0G,EAAK,IAAIuD,EAAqB,QAAS,CAAC,SAAU,SAAU,cAAepE,IAGtEa,EAjITqH,OAAOC,eAAeiJ,EAASvY,UAAW,YAAa,CAIrDiQ,YAAY,EACZ5I,IAAK,WACH,YAA4BtK,IAAxBoC,KAAKsJ,gBAIFtJ,KAAKsJ,eAAevL,WAE7BiT,IAAK,SAAaR,GAGXxQ,KAAKsJ,iBAMVtJ,KAAKsJ,eAAevL,UAAYyS,MAGpC4I,EAASvY,UAAU7C,QAAUkO,EAAYlO,QACzCob,EAASvY,UAAUoQ,WAAa/E,EAAYgF,UAE5CkI,EAASvY,UAAU0J,SAAW,SAAUrN,EAAK+L,GAC3CA,EAAG/L,IAOLkc,EAASvY,UAAU0C,KAAO,SAAUyE,EAAOoC,GACzC,IACImS,EADA1a,EAAQ7B,KAAKsJ,eAkBjB,OAfKzH,EAAMM,WAYToa,GAAiB,EAXI,kBAAVvU,IACToC,EAAWA,GAAYvI,EAAMsL,gBAEzB/C,IAAavI,EAAMuI,WACrBpC,EAAQvI,EAAOrB,KAAK4J,EAAOoC,GAC3BA,EAAW,IAGbmS,GAAiB,GAMdF,EAAiBrc,KAAMgI,EAAOoC,GAAU,EAAOmS,IAIxDnD,EAASvY,UAAU2a,QAAU,SAAUxT,GACrC,OAAOqU,EAAiBrc,KAAMgI,EAAO,MAAM,GAAM,IAyEnDoR,EAASvY,UAAUic,SAAW,WAC5B,OAAuC,IAAhC9c,KAAKsJ,eAAesS,SAI7BxC,EAASvY,UAAUkc,YAAc,SAAU9H,GACpC+F,IAAeA,EAAgB,EAAQ,QAAmBA,eAC/D,IAAImB,EAAU,IAAInB,EAAc/F,GAChCjV,KAAKsJ,eAAe6S,QAAUA,EAE9Bnc,KAAKsJ,eAAec,SAAWpK,KAAKsJ,eAAe6S,QAAQ/R,SAE3D,IAAIlG,EAAIlE,KAAKsJ,eAAegG,OAAOqJ,KAC/BqE,EAAU,GAEd,MAAa,OAAN9Y,EACL8Y,GAAWb,EAAQlO,MAAM/J,EAAEnI,MAC3BmI,EAAIA,EAAEgH,KAOR,OAJAlL,KAAKsJ,eAAegG,OAAO2N,QAEX,KAAZD,GAAgBhd,KAAKsJ,eAAegG,OAAO/L,KAAKyZ,GACpDhd,KAAKsJ,eAAe9K,OAASwe,EAAQxe,OAC9BwB,MAIT,IAAIkd,EAAU,WAEd,SAASC,EAAwB7S,GAgB/B,OAfIA,GAAK4S,EAEP5S,EAAI4S,GAIJ5S,IACAA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,GACXA,KAGKA,EAKT,SAAS8S,EAAc9S,EAAGzI,GACxB,OAAIyI,GAAK,GAAsB,IAAjBzI,EAAMrD,QAAgBqD,EAAMkL,MAAc,EACpDlL,EAAMM,WAAmB,EAEzBmI,IAAMA,EAEJzI,EAAM+Z,SAAW/Z,EAAMrD,OAAeqD,EAAMyN,OAAOqJ,KAAK5c,KAAKyC,OAAmBqD,EAAMrD,QAIxF8L,EAAIzI,EAAMF,gBAAeE,EAAMF,cAAgBwb,EAAwB7S,IACvEA,GAAKzI,EAAMrD,OAAe8L,EAEzBzI,EAAMkL,MAKJlL,EAAMrD,QAJXqD,EAAM0H,cAAe,EACd,IAsGX,SAASiT,EAAWpf,EAAQyE,GAE1B,GADAgZ,EAAM,eACFhZ,EAAMkL,MAAV,CAEA,GAAIlL,EAAMsa,QAAS,CACjB,IAAInU,EAAQnG,EAAMsa,QAAQpL,MAEtB/I,GAASA,EAAMxJ,SACjBqD,EAAMyN,OAAO/L,KAAKyE,GAClBnG,EAAMrD,QAAUqD,EAAMM,WAAa,EAAI6F,EAAMxJ,QAIjDqD,EAAMkL,OAAQ,EAEVlL,EAAM+H,KAIRiT,EAAazf,IAGbyE,EAAM0H,cAAe,EAEhB1H,EAAMga,kBACTha,EAAMga,iBAAkB,EACxBwB,EAAcjgB,MAQpB,SAASyf,EAAazf,GACpB,IAAIyE,EAAQzE,EAAOkM,eACnBuR,EAAM,eAAgBhZ,EAAM0H,aAAc1H,EAAMga,iBAChDha,EAAM0H,cAAe,EAEhB1H,EAAMga,kBACThB,EAAM,eAAgBhZ,EAAM+Z,SAC5B/Z,EAAMga,iBAAkB,EACxBxN,EAAQC,SAAS+O,EAAejgB,IAIpC,SAASigB,EAAcjgB,GACrB,IAAIyE,EAAQzE,EAAOkM,eACnBuR,EAAM,gBAAiBhZ,EAAM9D,UAAW8D,EAAMrD,OAAQqD,EAAMkL,OAEvDlL,EAAM9D,YAAc8D,EAAMrD,SAAUqD,EAAMkL,QAC7C3P,EAAO+L,KAAK,YACZtH,EAAMga,iBAAkB,GAS1Bha,EAAM0H,cAAgB1H,EAAM+Z,UAAY/Z,EAAMkL,OAASlL,EAAMrD,QAAUqD,EAAMF,cAC7E2b,EAAKlgB,GASP,SAASwf,EAAcxf,EAAQyE,GACxBA,EAAMqa,cACTra,EAAMqa,aAAc,EACpB7N,EAAQC,SAASiP,EAAgBngB,EAAQyE,IAI7C,SAAS0b,EAAengB,EAAQyE,GAwB9B,OAAQA,EAAMrE,UAAYqE,EAAMkL,QAAUlL,EAAMrD,OAASqD,EAAMF,eAAiBE,EAAM+Z,SAA4B,IAAjB/Z,EAAMrD,QAAe,CACpH,IAAI2C,EAAMU,EAAMrD,OAGhB,GAFAqc,EAAM,wBACNzd,EAAOgf,KAAK,GACRjb,IAAQU,EAAMrD,OAChB,MAGJqD,EAAMqa,aAAc,EAgJtB,SAASsB,EAAYjF,GACnB,OAAO,WACL,IAAI1W,EAAQ0W,EAAIjP,eAChBuR,EAAM,cAAehZ,EAAMoa,YACvBpa,EAAMoa,YAAYpa,EAAMoa,aAEH,IAArBpa,EAAMoa,YAAoBvB,EAAgBnC,EAAK,UACjD1W,EAAM+Z,SAAU,EAChB0B,EAAK/E,KAqHX,SAASkF,EAAwB5hB,GAC/B,IAAIgG,EAAQhG,EAAKyN,eACjBzH,EAAMia,kBAAoBjgB,EAAK6hB,cAAc,YAAc,EAEvD7b,EAAMka,kBAAoBla,EAAMma,OAGlCna,EAAM+Z,SAAU,EACP/f,EAAK6hB,cAAc,QAAU,GACtC7hB,EAAK8hB,SAIT,SAASC,EAAiB/hB,GACxBgf,EAAM,4BACNhf,EAAKugB,KAAK,GAqBZ,SAASuB,EAAOvgB,EAAQyE,GACjBA,EAAMka,kBACTla,EAAMka,iBAAkB,EACxB1N,EAAQC,SAASuP,EAASzgB,EAAQyE,IAItC,SAASgc,EAAQzgB,EAAQyE,GACvBgZ,EAAM,SAAUhZ,EAAMrE,SAEjBqE,EAAMrE,SACTJ,EAAOgf,KAAK,GAGdva,EAAMka,iBAAkB,EACxB3e,EAAO+L,KAAK,UACZmU,EAAKlgB,GACDyE,EAAM+Z,UAAY/Z,EAAMrE,SAASJ,EAAOgf,KAAK,GAgBnD,SAASkB,EAAKlgB,GACZ,IAAIyE,EAAQzE,EAAOkM,eACnBuR,EAAM,OAAQhZ,EAAM+Z,SAEpB,MAAO/Z,EAAM+Z,SAA6B,OAAlBxe,EAAOgf,SA4HjC,SAAS0B,EAASxT,EAAGzI,GAEnB,OAAqB,IAAjBA,EAAMrD,OAAqB,MAE3BqD,EAAMM,WAAYyM,EAAM/M,EAAMyN,OAAOtJ,SAAkBsE,GAAKA,GAAKzI,EAAMrD,QAEtDoQ,EAAf/M,EAAMsa,QAAeta,EAAMyN,OAAO7L,KAAK,IAAqC,IAAxB5B,EAAMyN,OAAO9Q,OAAoBqD,EAAMyN,OAAOyO,QAAmBlc,EAAMyN,OAAO/O,OAAOsB,EAAMrD,QACnJqD,EAAMyN,OAAO2N,SAGbrO,EAAM/M,EAAMyN,OAAO0O,QAAQ1T,EAAGzI,EAAMsa,SAE/BvN,GATP,IAAIA,EAYN,SAASqP,EAAY7gB,GACnB,IAAIyE,EAAQzE,EAAOkM,eACnBuR,EAAM,cAAehZ,EAAMgO,YAEtBhO,EAAMgO,aACThO,EAAMkL,OAAQ,EACdsB,EAAQC,SAAS4P,EAAerc,EAAOzE,IAI3C,SAAS8gB,EAAcrc,EAAOzE,GAG5B,GAFAyd,EAAM,gBAAiBhZ,EAAMgO,WAAYhO,EAAMrD,SAE1CqD,EAAMgO,YAA+B,IAAjBhO,EAAMrD,SAC7BqD,EAAMgO,YAAa,EACnBzS,EAAOS,UAAW,EAClBT,EAAO+L,KAAK,OAERtH,EAAMiM,aAAa,CAGrB,IAAIyI,EAASnZ,EAAO+M,iBAEfoM,GAAUA,EAAOzI,aAAeyI,EAAOvJ,WAC1C5P,EAAOY,WAgBf,SAAS6S,EAAQsN,EAAIpa,GACnB,IAAK,IAAI7E,EAAI,EAAGmQ,EAAI8O,EAAG3f,OAAQU,EAAImQ,EAAGnQ,IACpC,GAAIif,EAAGjf,KAAO6E,EAAG,OAAO7E,EAG1B,OAAQ,EA3tBVka,EAASvY,UAAUub,KAAO,SAAU9R,GAClCuQ,EAAM,OAAQvQ,GACdA,EAAI8T,SAAS9T,EAAG,IAChB,IAAIzI,EAAQ7B,KAAKsJ,eACb+U,EAAQ/T,EAKZ,GAJU,IAANA,IAASzI,EAAMga,iBAAkB,GAI3B,IAANvR,GAAWzI,EAAM0H,gBAA0C,IAAxB1H,EAAMF,cAAsBE,EAAMrD,QAAUqD,EAAMF,cAAgBE,EAAMrD,OAAS,IAAMqD,EAAMkL,OAGlI,OAFA8N,EAAM,qBAAsBhZ,EAAMrD,OAAQqD,EAAMkL,OAC3B,IAAjBlL,EAAMrD,QAAgBqD,EAAMkL,MAAOkR,EAAYje,MAAW6c,EAAa7c,MACpE,KAKT,GAFAsK,EAAI8S,EAAc9S,EAAGzI,GAEX,IAANyI,GAAWzI,EAAMkL,MAEnB,OADqB,IAAjBlL,EAAMrD,QAAcyf,EAAYje,MAC7B,KAyBT,IA4BI4O,EA5BA0P,EAASzc,EAAM0H,aAgDnB,OA/CAsR,EAAM,gBAAiByD,IAEF,IAAjBzc,EAAMrD,QAAgBqD,EAAMrD,OAAS8L,EAAIzI,EAAMF,iBACjD2c,GAAS,EACTzD,EAAM,6BAA8ByD,IAKlCzc,EAAMkL,OAASlL,EAAMrE,SACvB8gB,GAAS,EACTzD,EAAM,mBAAoByD,IACjBA,IACTzD,EAAM,WACNhZ,EAAMrE,SAAU,EAChBqE,EAAM+H,MAAO,EAEQ,IAAjB/H,EAAMrD,SAAcqD,EAAM0H,cAAe,GAE7CvJ,KAAKwJ,MAAM3H,EAAMF,eAEjBE,EAAM+H,MAAO,EAGR/H,EAAMrE,UAAS8M,EAAI8S,EAAciB,EAAOxc,KAIpC+M,EAAPtE,EAAI,EAASwT,EAASxT,EAAGzI,GAAkB,KAEnC,OAAR+M,GACF/M,EAAM0H,aAAe1H,EAAMrD,QAAUqD,EAAMF,cAC3C2I,EAAI,IAEJzI,EAAMrD,QAAU8L,EAChBzI,EAAMoa,WAAa,GAGA,IAAjBpa,EAAMrD,SAGHqD,EAAMkL,QAAOlL,EAAM0H,cAAe,GAEnC8U,IAAU/T,GAAKzI,EAAMkL,OAAOkR,EAAYje,OAGlC,OAAR4O,GAAc5O,KAAKmJ,KAAK,OAAQyF,GAC7BA,GAwHTwK,EAASvY,UAAU2I,MAAQ,SAAUc,GACnCmC,EAAezM,KAAM,IAAIuI,EAA2B,aAGtD6Q,EAASvY,UAAU1C,KAAO,SAAUogB,EAAMC,GACxC,IAAIjG,EAAMvY,KACN6B,EAAQ7B,KAAKsJ,eAEjB,OAAQzH,EAAM8Z,YACZ,KAAK,EACH9Z,EAAM6Z,MAAQ6C,EACd,MAEF,KAAK,EACH1c,EAAM6Z,MAAQ,CAAC7Z,EAAM6Z,MAAO6C,GAC5B,MAEF,QACE1c,EAAM6Z,MAAMnY,KAAKgb,GACjB,MAGJ1c,EAAM8Z,YAAc,EACpBd,EAAM,wBAAyBhZ,EAAM8Z,WAAY6C,GACjD,IAAIC,IAAUD,IAA6B,IAAjBA,EAASzN,MAAkBwN,IAASlQ,EAAQqQ,QAAUH,IAASlQ,EAAQsQ,OAC7FC,EAAQH,EAAQ/E,EAAQmF,EAI5B,SAASC,EAASjhB,EAAUkhB,GAC1BlE,EAAM,YAEFhd,IAAa0a,GACXwG,IAAwC,IAA1BA,EAAWC,aAC3BD,EAAWC,YAAa,EACxBC,KAKN,SAASvF,IACPmB,EAAM,SACN0D,EAAKxN,MAhBHlP,EAAMgO,WAAYxB,EAAQC,SAASsQ,GAAYrG,EAAI/b,KAAK,MAAOoiB,GACnEL,EAAK5gB,GAAG,SAAUmhB,GAsBlB,IAAII,EAAU1B,EAAYjF,GAC1BgG,EAAK5gB,GAAG,QAASuhB,GACjB,IAAIC,GAAY,EAEhB,SAASF,IACPpE,EAAM,WAEN0D,EAAKa,eAAe,QAASC,GAC7Bd,EAAKa,eAAe,SAAUE,GAC9Bf,EAAKa,eAAe,QAASF,GAC7BX,EAAKa,eAAe,QAASG,GAC7BhB,EAAKa,eAAe,SAAUN,GAC9BvG,EAAI6G,eAAe,MAAO1F,GAC1BnB,EAAI6G,eAAe,MAAOP,GAC1BtG,EAAI6G,eAAe,OAAQI,GAC3BL,GAAY,GAMRtd,EAAMoa,YAAgBsC,EAAKpU,iBAAkBoU,EAAKpU,eAAe0C,WAAYqS,IAKnF,SAASM,EAAOxX,GACd6S,EAAM,UACN,IAAIjM,EAAM2P,EAAKtQ,MAAMjG,GACrB6S,EAAM,aAAcjM,IAER,IAARA,KAKwB,IAArB/M,EAAM8Z,YAAoB9Z,EAAM6Z,QAAU6C,GAAQ1c,EAAM8Z,WAAa,IAAqC,IAAhC9K,EAAQhP,EAAM6Z,MAAO6C,MAAkBY,IACpHtE,EAAM,8BAA+BhZ,EAAMoa,YAC3Cpa,EAAMoa,cAGR1D,EAAIkH,SAMR,SAASF,EAAQ1W,GACfgS,EAAM,UAAWhS,GACjBgW,IACAN,EAAKa,eAAe,QAASG,GACU,IAAnC7E,EAAgB6D,EAAM,UAAgB9R,EAAe8R,EAAM1V,GAMjE,SAASwW,IACPd,EAAKa,eAAe,SAAUE,GAC9BT,IAKF,SAASS,IACPzE,EAAM,YACN0D,EAAKa,eAAe,QAASC,GAC7BR,IAKF,SAASA,IACPhE,EAAM,UACNtC,EAAIsG,OAAON,GAWb,OA7DAhG,EAAI5a,GAAG,OAAQ6hB,GA+BfnE,EAAgBkD,EAAM,QAASgB,GAO/BhB,EAAK/hB,KAAK,QAAS6iB,GAQnBd,EAAK/hB,KAAK,SAAU8iB,GAQpBf,EAAKpV,KAAK,OAAQoP,GAEb1W,EAAM+Z,UACTf,EAAM,eACNtC,EAAIoF,UAGCY,GAgBTnF,EAASvY,UAAUge,OAAS,SAAUN,GACpC,IAAI1c,EAAQ7B,KAAKsJ,eACbyV,EAAa,CACfC,YAAY,GAGd,GAAyB,IAArBnd,EAAM8Z,WAAkB,OAAO3b,KAEnC,GAAyB,IAArB6B,EAAM8Z,WAER,OAAI4C,GAAQA,IAAS1c,EAAM6Z,QACtB6C,IAAMA,EAAO1c,EAAM6Z,OAExB7Z,EAAM6Z,MAAQ,KACd7Z,EAAM8Z,WAAa,EACnB9Z,EAAM+Z,SAAU,EACZ2C,GAAMA,EAAKpV,KAAK,SAAUnJ,KAAM+e,IANK/e,KAW3C,IAAKue,EAAM,CAET,IAAImB,EAAQ7d,EAAM6Z,MACdva,EAAMU,EAAM8Z,WAChB9Z,EAAM6Z,MAAQ,KACd7Z,EAAM8Z,WAAa,EACnB9Z,EAAM+Z,SAAU,EAEhB,IAAK,IAAI1c,EAAI,EAAGA,EAAIiC,EAAKjC,IACvBwgB,EAAMxgB,GAAGiK,KAAK,SAAUnJ,KAAM,CAC5Bgf,YAAY,IAIhB,OAAOhf,KAIT,IAAI2f,EAAQ9O,EAAQhP,EAAM6Z,MAAO6C,GACjC,OAAe,IAAXoB,IACJ9d,EAAM6Z,MAAMkE,OAAOD,EAAO,GAC1B9d,EAAM8Z,YAAc,EACK,IAArB9Z,EAAM8Z,aAAkB9Z,EAAM6Z,MAAQ7Z,EAAM6Z,MAAM,IACtD6C,EAAKpV,KAAK,SAAUnJ,KAAM+e,IAJD/e,MAU3BoZ,EAASvY,UAAUlD,GAAK,SAAUkiB,EAAI3hB,GACpC,IAAImH,EAAMqG,EAAO7K,UAAUlD,GAAGM,KAAK+B,KAAM6f,EAAI3hB,GACzC2D,EAAQ7B,KAAKsJ,eAuBjB,MArBW,SAAPuW,GAGFhe,EAAMia,kBAAoB9b,KAAK0d,cAAc,YAAc,GAErC,IAAlB7b,EAAM+Z,SAAmB5b,KAAK2d,UAClB,aAAPkC,IACJhe,EAAMgO,YAAehO,EAAMia,oBAC9Bja,EAAMia,kBAAoBja,EAAM0H,cAAe,EAC/C1H,EAAM+Z,SAAU,EAChB/Z,EAAMga,iBAAkB,EACxBhB,EAAM,cAAehZ,EAAMrD,OAAQqD,EAAMrE,SAErCqE,EAAMrD,OACRqe,EAAa7c,MACH6B,EAAMrE,SAChB6Q,EAAQC,SAASsP,EAAkB5d,QAKlCqF,GAGT+T,EAASvY,UAAUif,YAAc1G,EAASvY,UAAUlD,GAEpDyb,EAASvY,UAAUue,eAAiB,SAAUS,EAAI3hB,GAChD,IAAImH,EAAMqG,EAAO7K,UAAUue,eAAenhB,KAAK+B,KAAM6f,EAAI3hB,GAYzD,MAVW,aAAP2hB,GAOFxR,EAAQC,SAASmP,EAAyBzd,MAGrCqF,GAGT+T,EAASvY,UAAUkf,mBAAqB,SAAUF,GAChD,IAAIxa,EAAMqG,EAAO7K,UAAUkf,mBAAmBpjB,MAAMqD,KAAMpD,WAY1D,MAVW,aAAPijB,QAA4BjiB,IAAPiiB,GAOvBxR,EAAQC,SAASmP,EAAyBzd,MAGrCqF,GAuBT+T,EAASvY,UAAU8c,OAAS,WAC1B,IAAI9b,EAAQ7B,KAAKsJ,eAYjB,OAVKzH,EAAM+Z,UACTf,EAAM,UAINhZ,EAAM+Z,SAAW/Z,EAAMia,kBACvB6B,EAAO3d,KAAM6B,IAGfA,EAAMma,QAAS,EACRhc,MAuBToZ,EAASvY,UAAU4e,MAAQ,WAUzB,OATA5E,EAAM,wBAAyB7a,KAAKsJ,eAAesS,UAEf,IAAhC5b,KAAKsJ,eAAesS,UACtBf,EAAM,SACN7a,KAAKsJ,eAAesS,SAAU,EAC9B5b,KAAKmJ,KAAK,UAGZnJ,KAAKsJ,eAAe0S,QAAS,EACtBhc,MAeToZ,EAASvY,UAAUmf,KAAO,SAAU5iB,GAClC,IAAI6M,EAAQjK,KAER6B,EAAQ7B,KAAKsJ,eACb0S,GAAS,EA0Bb,IAAK,IAAI9c,KAzBT9B,EAAOO,GAAG,OAAO,WAGf,GAFAkd,EAAM,eAEFhZ,EAAMsa,UAAYta,EAAMkL,MAAO,CACjC,IAAI/E,EAAQnG,EAAMsa,QAAQpL,MACtB/I,GAASA,EAAMxJ,QAAQyL,EAAM1G,KAAKyE,GAGxCiC,EAAM1G,KAAK,SAEbnG,EAAOO,GAAG,QAAQ,SAAUqK,GAI1B,GAHA6S,EAAM,gBACFhZ,EAAMsa,UAASnU,EAAQnG,EAAMsa,QAAQlO,MAAMjG,MAE3CnG,EAAMM,YAAyB,OAAV6F,QAA4BpK,IAAVoK,KAAuCnG,EAAMM,YAAgB6F,GAAUA,EAAMxJ,QAA3C,CAE7E,IAAIoQ,EAAM3E,EAAM1G,KAAKyE,GAEhB4G,IACHoN,GAAS,EACT5e,EAAOqiB,aAKGriB,OACIQ,IAAZoC,KAAKd,IAAyC,oBAAd9B,EAAO8B,KACzCc,KAAKd,GAAK,SAAoBsa,GAC5B,OAAO,WACL,OAAOpc,EAAOoc,GAAQ7c,MAAMS,EAAQR,YAF9B,CAIRsC,IAKN,IAAK,IAAIoL,EAAI,EAAGA,EAAI8Q,EAAa5c,OAAQ8L,IACvClN,EAAOO,GAAGyd,EAAa9Q,GAAItK,KAAKmJ,KAAKM,KAAKzJ,KAAMob,EAAa9Q,KAc/D,OATAtK,KAAKwJ,MAAQ,SAAUc,GACrBuQ,EAAM,gBAAiBvQ,GAEnB0R,IACFA,GAAS,EACT5e,EAAOugB,WAIJ3d,MAGa,oBAAXqQ,SACT+I,EAASvY,UAAUwP,OAAO4P,eAAiB,WAKzC,YAJ0CriB,IAAtCqd,IACFA,EAAoC,EAAQ,SAGvCA,EAAkCjb,QAI7CkQ,OAAOC,eAAeiJ,EAASvY,UAAW,wBAAyB,CAIjEiQ,YAAY,EACZ5I,IAAK,WACH,OAAOlI,KAAKsJ,eAAe3H,iBAG/BuO,OAAOC,eAAeiJ,EAASvY,UAAW,iBAAkB,CAI1DiQ,YAAY,EACZ5I,IAAK,WACH,OAAOlI,KAAKsJ,gBAAkBtJ,KAAKsJ,eAAegG,UAGtDY,OAAOC,eAAeiJ,EAASvY,UAAW,kBAAmB,CAI3DiQ,YAAY,EACZ5I,IAAK,WACH,OAAOlI,KAAKsJ,eAAesS,SAE7B5K,IAAK,SAAanP,GACZ7B,KAAKsJ,iBACPtJ,KAAKsJ,eAAesS,QAAU/Z,MAKpCuX,EAAS8G,UAAYpC,EACrB5N,OAAOC,eAAeiJ,EAASvY,UAAW,iBAAkB,CAI1DiQ,YAAY,EACZ5I,IAAK,WACH,OAAOlI,KAAKsJ,eAAe9K,UAoDT,oBAAX6R,SACT+I,EAAShb,KAAO,SAAU+hB,EAAUpgB,GAKlC,YAJanC,IAATQ,IACFA,EAAO,EAAQ,SAGVA,EAAKgb,EAAU+G,EAAUpgB,O,qDCzlCpC,IAAIrE,EAAM,EAAQ,QACd+D,EAAS,EAAQ,QAAeA,OAChCmT,EAAS,EAAQ,QAErB,SAAS6D,EAAU5a,GACjB,IAAIQ,EAAMR,EAAKI,QAAQmkB,gBAAgBvkB,EAAKG,OAE5C,OADA4W,EAAO/W,EAAKG,OACLK,EAGT,IAAIgkB,EAAY,GAChB1kB,EAAQC,QAAU,SAAUC,EAAMmM,GAChC,IAAIsY,EAAWte,KAAKue,KAAKvY,EAAMxJ,OAAS6hB,GACpCG,EAAQ3kB,EAAKuF,OAAO5C,OACxB3C,EAAKuF,OAAS3B,EAAOc,OAAO,CAC1B1E,EAAKuF,OACL3B,EAAO4B,YAAYif,EAAWD,KAEhC,IAAK,IAAInhB,EAAI,EAAGA,EAAIohB,EAAUphB,IAAK,CACjC,IAAI7C,EAAMoa,EAAS5a,GACf2c,EAASgI,EAAQthB,EAAImhB,EACzBxkB,EAAKuF,OAAO4Y,cAAc3d,EAAI,GAAImc,EAAS,GAC3C3c,EAAKuF,OAAO4Y,cAAc3d,EAAI,GAAImc,EAAS,GAC3C3c,EAAKuF,OAAO4Y,cAAc3d,EAAI,GAAImc,EAAS,GAC3C3c,EAAKuF,OAAO4Y,cAAc3d,EAAI,GAAImc,EAAS,IAE7C,IAAIpc,EAAMP,EAAKuF,OAAOZ,MAAM,EAAGwH,EAAMxJ,QAErC,OADA3C,EAAKuF,OAASvF,EAAKuF,OAAOZ,MAAMwH,EAAMxJ,QAC/B9C,EAAIsM,EAAO5L,K,kCC1BpB,SAASqkB,EAAeC,EAAUC,GAAcD,EAAS7f,UAAYqP,OAAOvP,OAAOggB,EAAW9f,WAAY6f,EAAS7f,UAAU+f,YAAcF,EAAUA,EAASG,UAAYF,EAE1K,IAAI7jB,EAAQ,GAEZ,SAASgkB,EAAgBC,EAAMC,EAASC,GAKtC,SAASC,EAAWC,EAAMC,EAAMC,GAC9B,MAAuB,kBAAZL,EACFA,EAEAA,EAAQG,EAAMC,EAAMC,GAR1BJ,IACHA,EAAO/d,OAWT,IAAIoe,EAEJ,SAAUC,GAGR,SAASD,EAAUH,EAAMC,EAAMC,GAC7B,OAAOE,EAAMtjB,KAAK+B,KAAMkhB,EAAWC,EAAMC,EAAMC,KAAUrhB,KAG3D,OANAygB,EAAea,EAAWC,GAMnBD,EAPT,CAQEL,GAEFK,EAAUzgB,UAAUqB,KAAO+e,EAAK/e,KAChCof,EAAUzgB,UAAUkgB,KAAOA,EAC3BjkB,EAAMikB,GAAQO,EAIhB,SAASE,EAAMC,EAAUxZ,GACvB,GAAIrJ,MAAMG,QAAQ0iB,GAAW,CAC3B,IAAItgB,EAAMsgB,EAASjjB,OAKnB,OAJAijB,EAAWA,EAASxiB,KAAI,SAAUC,GAChC,OAAOwiB,OAAOxiB,MAGZiC,EAAM,EACD,UAAUZ,OAAO0H,EAAO,KAAK1H,OAAOkhB,EAASjhB,MAAM,EAAGW,EAAM,GAAGsC,KAAK,MAAO,SAAWge,EAAStgB,EAAM,GAC3F,IAARA,EACF,UAAUZ,OAAO0H,EAAO,KAAK1H,OAAOkhB,EAAS,GAAI,QAAQlhB,OAAOkhB,EAAS,IAEzE,MAAMlhB,OAAO0H,EAAO,KAAK1H,OAAOkhB,EAAS,IAGlD,MAAO,MAAMlhB,OAAO0H,EAAO,KAAK1H,OAAOmhB,OAAOD,IAKlD,SAASE,EAAW3I,EAAK4I,EAAQC,GAC/B,OAAO7I,EAAI8I,QAAQD,GAAOA,EAAM,EAAI,GAAKA,EAAKD,EAAOpjB,UAAYojB,EAInE,SAASG,EAAS/I,EAAK4I,EAAQI,GAK7B,YAJiBpkB,IAAbokB,GAA0BA,EAAWhJ,EAAIxa,UAC3CwjB,EAAWhJ,EAAIxa,QAGVwa,EAAIiJ,UAAUD,EAAWJ,EAAOpjB,OAAQwjB,KAAcJ,EAI/D,SAASM,EAASlJ,EAAK4I,EAAQpB,GAK7B,MAJqB,kBAAVA,IACTA,EAAQ,KAGNA,EAAQoB,EAAOpjB,OAASwa,EAAIxa,UAGS,IAAhCwa,EAAInI,QAAQ+Q,EAAQpB,GAI/BM,EAAgB,yBAAyB,SAAU5e,EAAMsO,GACvD,MAAO,cAAgBA,EAAQ,4BAA8BtO,EAAO,MACnE2F,WACHiZ,EAAgB,wBAAwB,SAAU5e,EAAMuf,EAAUU,GAEhE,IAAIC,EASAxQ,EAEJ,GATwB,kBAAb6P,GAAyBE,EAAWF,EAAU,SACvDW,EAAa,cACbX,EAAWA,EAASY,QAAQ,QAAS,KAErCD,EAAa,UAKXL,EAAS7f,EAAM,aAEjB0P,EAAM,OAAOrR,OAAO2B,EAAM,KAAK3B,OAAO6hB,EAAY,KAAK7hB,OAAOihB,EAAMC,EAAU,aACzE,CACL,IAAIxhB,EAAOiiB,EAAShgB,EAAM,KAAO,WAAa,WAC9C0P,EAAM,QAASrR,OAAO2B,EAAM,MAAO3B,OAAON,EAAM,KAAKM,OAAO6hB,EAAY,KAAK7hB,OAAOihB,EAAMC,EAAU,SAItG,OADA7P,GAAO,mBAAmBrR,cAAc4hB,GACjCvQ,IACN/J,WACHiZ,EAAgB,4BAA6B,2BAC7CA,EAAgB,8BAA8B,SAAU5e,GACtD,MAAO,OAASA,EAAO,gCAEzB4e,EAAgB,6BAA8B,mBAC9CA,EAAgB,wBAAwB,SAAU5e,GAChD,MAAO,eAAiBA,EAAO,mCAEjC4e,EAAgB,wBAAyB,kCACzCA,EAAgB,yBAA0B,6BAC1CA,EAAgB,6BAA8B,mBAC9CA,EAAgB,yBAA0B,sCAAuCjZ,WACjFiZ,EAAgB,wBAAwB,SAAUwB,GAChD,MAAO,qBAAuBA,IAC7Bza,WACHiZ,EAAgB,qCAAsC,oCACtDzhB,EAAO1D,QAAQmB,MAAQA,G,qBC9HvB,IAAI2C,EAAS,EAAQ,QAAeA,OAEpC,SAASiX,EAAa7a,EAAM8a,EAAWxa,GACrC,IAAIC,EAIAmmB,EAAK/R,EAHLtR,GAAK,EACLiC,EAAM,EACN9E,EAAM,EAEV,QAAS6C,EAAIiC,EACX/E,EAAMP,EAAKI,QAAQC,aAAaL,EAAKG,OACrCumB,EAAO5L,EAAa,GAAM,EAAIzX,EAAO,IAAO,EAC5CsR,EAAQpU,EAAI,GAAKmmB,EACjBlmB,IAAiB,IAARmU,IAAkBtR,EAAI,EAC/BrD,EAAKG,MAAQwmB,EAAQ3mB,EAAKG,MAAOG,EAAUomB,EAAM/R,GAEnD,OAAOnU,EAGT,SAASmmB,EAASlT,EAAQkB,GACxB,IAAIrP,EAAMmO,EAAO9Q,OACbU,GAAK,EACL7C,EAAMoD,EAAO4B,YAAYiO,EAAO9Q,QACpC8Q,EAAS7P,EAAOc,OAAO,CAAC+O,EAAQ7P,EAAOrB,KAAK,CAACoS,MAE7C,QAAStR,EAAIiC,EACX9E,EAAI6C,GAAKoQ,EAAOpQ,IAAM,EAAIoQ,EAAOpQ,EAAI,IAAM,EAG7C,OAAO7C,EAGTV,EAAQC,QAAU,SAAUC,EAAMmM,EAAO7L,GACvC,IAAIgF,EAAM6G,EAAMxJ,OACZnC,EAAMoD,EAAO4B,YAAYF,GACzBjC,GAAK,EAET,QAASA,EAAIiC,EACX9E,EAAI6C,GAAKwX,EAAY7a,EAAMmM,EAAM9I,GAAI/C,GAGvC,OAAOE,I,+nECnCT,IAAIoD,EAAS,EAAQ,QAAeA,OAEpC,SAASgjB,EAAetO,GACjB1U,EAAOa,SAAS6T,KAAMA,EAAM1U,EAAOrB,KAAK+V,IAK7C,IAHA,IAAIhT,EAAOgT,EAAI3V,OAAS,EAAK,EACzBnC,EAAM,IAAIuC,MAAMuC,GAEXjC,EAAI,EAAGA,EAAIiC,EAAKjC,IACvB7C,EAAI6C,GAAKiV,EAAI2F,aAAiB,EAAJ5a,GAG5B,OAAO7C,EAGT,SAASqmB,EAAU/c,GACjB,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAEnH,OAAQmH,IAC5BA,EAAEzG,GAAK,EAIX,SAASyjB,EAAYC,EAAGC,EAAaC,EAASC,EAAMC,GAalD,IAZA,IASIC,EAAIC,EAAIC,EAAIC,EATZC,EAAWP,EAAQ,GACnBQ,EAAWR,EAAQ,GACnBS,EAAWT,EAAQ,GACnBU,EAAWV,EAAQ,GAEnBW,EAAKb,EAAE,GAAKC,EAAY,GACxBa,EAAKd,EAAE,GAAKC,EAAY,GACxBc,EAAKf,EAAE,GAAKC,EAAY,GACxBe,EAAKhB,EAAE,GAAKC,EAAY,GAExBgB,EAAQ,EAEHC,EAAQ,EAAGA,EAAQd,EAASc,IACnCb,EAAKI,EAASI,IAAO,IAAMH,EAAUI,IAAO,GAAM,KAAQH,EAAUI,IAAO,EAAK,KAAQH,EAAc,IAALI,GAAaf,EAAYgB,KAC1HX,EAAKG,EAASK,IAAO,IAAMJ,EAAUK,IAAO,GAAM,KAAQJ,EAAUK,IAAO,EAAK,KAAQJ,EAAc,IAALC,GAAaZ,EAAYgB,KAC1HV,EAAKE,EAASM,IAAO,IAAML,EAAUM,IAAO,GAAM,KAAQL,EAAUE,IAAO,EAAK,KAAQD,EAAc,IAALE,GAAab,EAAYgB,KAC1HT,EAAKC,EAASO,IAAO,IAAMN,EAAUG,IAAO,GAAM,KAAQF,EAAUG,IAAO,EAAK,KAAQF,EAAc,IAALG,GAAad,EAAYgB,KAC1HJ,EAAKR,EACLS,EAAKR,EACLS,EAAKR,EACLS,EAAKR,EAYP,OATAH,GAAOF,EAAKU,IAAO,KAAO,GAAOV,EAAMW,IAAO,GAAM,MAAS,GAAOX,EAAMY,IAAO,EAAK,MAAS,EAAKZ,EAAU,IAALa,IAAcf,EAAYgB,KACnIX,GAAOH,EAAKW,IAAO,KAAO,GAAOX,EAAMY,IAAO,GAAM,MAAS,GAAOZ,EAAMa,IAAO,EAAK,MAAS,EAAKb,EAAU,IAALU,IAAcZ,EAAYgB,KACnIV,GAAOJ,EAAKY,IAAO,KAAO,GAAOZ,EAAMa,IAAO,GAAM,MAAS,GAAOb,EAAMU,IAAO,EAAK,MAAS,EAAKV,EAAU,IAALW,IAAcb,EAAYgB,KACnIT,GAAOL,EAAKa,IAAO,KAAO,GAAOb,EAAMU,IAAO,GAAM,MAAS,GAAOV,EAAMW,IAAO,EAAK,MAAS,EAAKX,EAAU,IAALY,IAAcd,EAAYgB,KACnIZ,KAAY,EACZC,KAAY,EACZC,KAAY,EACZC,KAAY,EAEL,CAACH,EAAIC,EAAIC,EAAIC,GAItB,IAAIW,EAAO,CAAC,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IACpEC,EAAI,WAGN,IADA,IAAIC,EAAI,IAAIrlB,MAAM,KACTsb,EAAI,EAAGA,EAAI,IAAKA,IAErB+J,EAAE/J,GADAA,EAAI,IACCA,GAAK,EAEJA,GAAK,EAAK,IAYtB,IARA,IAAI6I,EAAO,GACPmB,EAAW,GACXpB,EAAU,CAAC,GAAI,GAAI,GAAI,IACvBqB,EAAc,CAAC,GAAI,GAAI,GAAI,IAG3BpgB,EAAI,EACJoW,EAAK,EACAjb,EAAI,EAAGA,EAAI,MAAOA,EAAG,CAE5B,IAAIklB,EAAKjK,EAAMA,GAAM,EAAMA,GAAM,EAAMA,GAAM,EAAMA,GAAM,EACzDiK,EAAMA,IAAO,EAAW,IAALA,EAAa,GAChCrB,EAAKhf,GAAKqgB,EACVF,EAASE,GAAMrgB,EAGf,IAAIsgB,EAAKJ,EAAElgB,GACPugB,EAAKL,EAAEI,GACPE,EAAKN,EAAEK,GAGPne,EAAa,IAAR8d,EAAEG,GAAqB,SAALA,EAC3BtB,EAAQ,GAAG/e,GAAMoC,GAAK,GAAOA,IAAM,EACnC2c,EAAQ,GAAG/e,GAAMoC,GAAK,GAAOA,IAAM,GACnC2c,EAAQ,GAAG/e,GAAMoC,GAAK,EAAMA,IAAM,GAClC2c,EAAQ,GAAG/e,GAAKoC,EAGhBA,EAAU,SAALoe,EAAwB,MAALD,EAAsB,IAALD,EAAmB,SAAJtgB,EACxDogB,EAAY,GAAGC,GAAOje,GAAK,GAAOA,IAAM,EACxCge,EAAY,GAAGC,GAAOje,GAAK,GAAOA,IAAM,GACxCge,EAAY,GAAGC,GAAOje,GAAK,EAAMA,IAAM,GACvCge,EAAY,GAAGC,GAAMje,EAEX,IAANpC,EACFA,EAAIoW,EAAK,GAETpW,EAAIsgB,EAAKJ,EAAEA,EAAEA,EAAEM,EAAKF,KACpBlK,GAAM8J,EAAEA,EAAE9J,KAId,MAAO,CACL4I,KAAMA,EACNmB,SAAUA,EACVpB,QAASA,EACTqB,YAAaA,GAzDT,GA6DR,SAASjd,EAAK7G,GACZL,KAAKnB,KAAO4jB,EAAcpiB,GAC1BL,KAAKwkB,SAGPtd,EAAImZ,UAAY,GAChBnZ,EAAIud,QAAU,GACdvd,EAAIrG,UAAUwf,UAAYnZ,EAAImZ,UAC9BnZ,EAAIrG,UAAU4jB,QAAUvd,EAAIud,QAC5Bvd,EAAIrG,UAAU2jB,OAAS,WAOrB,IANA,IAAIE,EAAW1kB,KAAKnB,KAChB4lB,EAAUC,EAASlmB,OACnBwkB,EAAUyB,EAAU,EACpBE,EAAyB,GAAf3B,EAAU,GAEpBH,EAAc,GACT/e,EAAI,EAAGA,EAAI2gB,EAAS3gB,IAC3B+e,EAAY/e,GAAK4gB,EAAS5gB,GAG5B,IAAKA,EAAI2gB,EAAS3gB,EAAI6gB,EAAQ7gB,IAAK,CACjC,IAAIqC,EAAI0c,EAAY/e,EAAI,GAEpBA,EAAI2gB,IAAY,GAClBte,EAAKA,GAAK,EAAMA,IAAM,GACtBA,EACG6d,EAAEjB,KAAK5c,IAAM,KAAO,GACpB6d,EAAEjB,KAAM5c,IAAM,GAAM,MAAS,GAC7B6d,EAAEjB,KAAM5c,IAAM,EAAK,MAAS,EAC5B6d,EAAEjB,KAAS,IAAJ5c,GAEVA,GAAK4d,EAAMjgB,EAAI2gB,EAAW,IAAM,IACvBA,EAAU,GAAK3gB,EAAI2gB,IAAY,IACxCte,EACG6d,EAAEjB,KAAK5c,IAAM,KAAO,GACpB6d,EAAEjB,KAAM5c,IAAM,GAAM,MAAS,GAC7B6d,EAAEjB,KAAM5c,IAAM,EAAK,MAAS,EAC5B6d,EAAEjB,KAAS,IAAJ5c,IAGZ0c,EAAY/e,GAAK+e,EAAY/e,EAAI2gB,GAAWte,EAI9C,IADA,IAAIye,EAAiB,GACZC,EAAK,EAAGA,EAAKF,EAAQE,IAAM,CAClC,IAAIC,EAAMH,EAASE,EACfE,EAAKlC,EAAYiC,GAAOD,EAAK,EAAI,EAAI,IAGvCD,EAAeC,GADbA,EAAK,GAAKC,GAAO,EACEC,EAGnBf,EAAEG,YAAY,GAAGH,EAAEjB,KAAKgC,IAAO,KAC/Bf,EAAEG,YAAY,GAAGH,EAAEjB,KAAMgC,IAAO,GAAM,MACtCf,EAAEG,YAAY,GAAGH,EAAEjB,KAAMgC,IAAO,EAAK,MACrCf,EAAEG,YAAY,GAAGH,EAAEjB,KAAU,IAALgC,IAI9B/kB,KAAKglB,SAAWhC,EAChBhjB,KAAKilB,aAAepC,EACpB7iB,KAAKklB,gBAAkBN,GAGzB1d,EAAIrG,UAAUuf,gBAAkB,SAAUwC,GAExC,OADAA,EAAIH,EAAcG,GACXD,EAAWC,EAAG5iB,KAAKilB,aAAcjB,EAAElB,QAASkB,EAAEjB,KAAM/iB,KAAKglB,WAGlE9d,EAAIrG,UAAU3E,aAAe,SAAU0mB,GACrC,IAAIvmB,EAAM2D,KAAKogB,gBAAgBwC,GAC3BzO,EAAM1U,EAAO4B,YAAY,IAK7B,OAJA8S,EAAI6F,cAAc3d,EAAI,GAAI,GAC1B8X,EAAI6F,cAAc3d,EAAI,GAAI,GAC1B8X,EAAI6F,cAAc3d,EAAI,GAAI,GAC1B8X,EAAI6F,cAAc3d,EAAI,GAAI,IACnB8X,GAGTjN,EAAIrG,UAAUvE,aAAe,SAAUsmB,GACrCA,EAAIH,EAAcG,GAGlB,IAAIzQ,EAAKyQ,EAAE,GACXA,EAAE,GAAKA,EAAE,GACTA,EAAE,GAAKzQ,EAEP,IAAI9V,EAAMsmB,EAAWC,EAAG5iB,KAAKklB,gBAAiBlB,EAAEG,YAAaH,EAAEE,SAAUlkB,KAAKglB,UAC1E7Q,EAAM1U,EAAO4B,YAAY,IAK7B,OAJA8S,EAAI6F,cAAc3d,EAAI,GAAI,GAC1B8X,EAAI6F,cAAc3d,EAAI,GAAI,GAC1B8X,EAAI6F,cAAc3d,EAAI,GAAI,GAC1B8X,EAAI6F,cAAc3d,EAAI,GAAI,IACnB8X,GAGTjN,EAAIrG,UAAUgK,MAAQ,WACpB6X,EAAS1iB,KAAKilB,cACdvC,EAAS1iB,KAAKklB,iBACdxC,EAAS1iB,KAAKnB,OAGhBQ,EAAO1D,QAAQuL,IAAMA,G,kCC/NrB,IAAIie,EAA6B,EAAQ,QAAmBroB,MAAMqoB,2BAElE,SAAS3oB,EAAKC,GACZ,IAAIC,GAAS,EACb,OAAO,WACL,IAAIA,EAAJ,CACAA,GAAS,EAET,IAAK,IAAIiC,EAAO/B,UAAU4B,OAAQ4mB,EAAO,IAAIxmB,MAAMD,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EumB,EAAKvmB,GAAQjC,UAAUiC,GAGzBpC,EAASE,MAAMqD,KAAMolB,KAIzB,SAASnoB,KAET,SAASE,EAAUC,GACjB,OAAOA,EAAOC,WAAqC,oBAAjBD,EAAOE,MAG3C,SAASf,EAAIa,EAAQ2C,EAAMtD,GACzB,GAAoB,oBAATsD,EAAqB,OAAOxD,EAAIa,EAAQ,KAAM2C,GACpDA,IAAMA,EAAO,IAClBtD,EAAWD,EAAKC,GAAYQ,GAC5B,IAAIY,EAAWkC,EAAKlC,WAA8B,IAAlBkC,EAAKlC,UAAsBT,EAAOS,SAC9DC,EAAWiC,EAAKjC,WAA8B,IAAlBiC,EAAKjC,UAAsBV,EAAOU,SAE9DunB,EAAiB,WACdjoB,EAAOU,UAAUwhB,KAGpBgG,EAAgBloB,EAAO+M,gBAAkB/M,EAAO+M,eAAe6C,SAE/DsS,EAAW,WACbxhB,GAAW,EACXwnB,GAAgB,EACXznB,GAAUpB,EAASwB,KAAKb,IAG3BmoB,EAAgBnoB,EAAOkM,gBAAkBlM,EAAOkM,eAAeuG,WAE/D6J,EAAQ,WACV7b,GAAW,EACX0nB,GAAgB,EACXznB,GAAUrB,EAASwB,KAAKb,IAG3BmiB,EAAU,SAAiBriB,GAC7BT,EAASwB,KAAKb,EAAQF,IAGpBmiB,EAAU,WACZ,IAAIniB,EAEJ,OAAIW,IAAa0nB,GACVnoB,EAAOkM,gBAAmBlM,EAAOkM,eAAeyD,QAAO7P,EAAM,IAAIioB,GAC/D1oB,EAASwB,KAAKb,EAAQF,IAG3BY,IAAawnB,GACVloB,EAAO+M,gBAAmB/M,EAAO+M,eAAe4C,QAAO7P,EAAM,IAAIioB,GAC/D1oB,EAASwB,KAAKb,EAAQF,SAF/B,GAMEsoB,EAAY,WACdpoB,EAAOqoB,IAAI9nB,GAAG,SAAU2hB,IAiB1B,OAdIniB,EAAUC,IACZA,EAAOO,GAAG,WAAY2hB,GACtBliB,EAAOO,GAAG,QAAS0hB,GACfjiB,EAAOqoB,IAAKD,IAAiBpoB,EAAOO,GAAG,UAAW6nB,IAC7C1nB,IAAaV,EAAO+M,iBAE7B/M,EAAOO,GAAG,MAAO0nB,GACjBjoB,EAAOO,GAAG,QAAS0nB,IAGrBjoB,EAAOO,GAAG,MAAO+b,GACjBtc,EAAOO,GAAG,SAAU2hB,IACD,IAAfvf,EAAKjB,OAAiB1B,EAAOO,GAAG,QAAS4hB,GAC7CniB,EAAOO,GAAG,QAAS0hB,GACZ,WACLjiB,EAAOgiB,eAAe,WAAYE,GAClCliB,EAAOgiB,eAAe,QAASC,GAC/BjiB,EAAOgiB,eAAe,UAAWoG,GAC7BpoB,EAAOqoB,KAAKroB,EAAOqoB,IAAIrG,eAAe,SAAUE,GACpDliB,EAAOgiB,eAAe,MAAOiG,GAC7BjoB,EAAOgiB,eAAe,QAASiG,GAC/BjoB,EAAOgiB,eAAe,SAAUE,GAChCliB,EAAOgiB,eAAe,MAAO1F,GAC7Btc,EAAOgiB,eAAe,QAASG,GAC/BniB,EAAOgiB,eAAe,QAASC,IAInChgB,EAAO1D,QAAUY,G,qBCvGjB,IAAIuD,EAAM,EAAQ,QACd+G,EAAM,EAAQ,QACd6e,EAAW,EAAQ,QACnBC,EAAW,EAAQ,QACnB7e,EAAO,EAAQ,QAEnB,SAAS8D,EAAclD,EAAOC,GAG5B,IAAIie,EAAQC,EACZ,GAHAne,EAAQA,EAAMtH,cAGVslB,EAAShe,GACXke,EAASF,EAAShe,GAAOrH,IACzBwlB,EAAQH,EAAShe,GAAOjH,OACnB,KAAIklB,EAASje,GAIlB,MAAM,IAAIG,UAAU,sBAHpB+d,EAA+B,EAAtBD,EAASje,GAAOrH,IACzBwlB,EAAQF,EAASje,GAAOjH,GAK1B,IAAIsH,EAAOjB,EAAKa,GAAU,EAAOie,EAAQC,GACzC,OAAOlb,EAAejD,EAAOK,EAAK1H,IAAK0H,EAAKtH,IAG9C,SAASqH,EAAgBJ,EAAOC,GAG9B,IAAIie,EAAQC,EACZ,GAHAne,EAAQA,EAAMtH,cAGVslB,EAAShe,GACXke,EAASF,EAAShe,GAAOrH,IACzBwlB,EAAQH,EAAShe,GAAOjH,OACnB,KAAIklB,EAASje,GAIlB,MAAM,IAAIG,UAAU,sBAHpB+d,EAA+B,EAAtBD,EAASje,GAAOrH,IACzBwlB,EAAQF,EAASje,GAAOjH,GAK1B,IAAIsH,EAAOjB,EAAKa,GAAU,EAAOie,EAAQC,GACzC,OAAOpe,EAAiBC,EAAOK,EAAK1H,IAAK0H,EAAKtH,IAGhD,SAASkK,EAAgBjD,EAAOrH,EAAKI,GAEnC,GADAiH,EAAQA,EAAMtH,cACVslB,EAAShe,GAAQ,OAAOb,EAAI8D,eAAejD,EAAOrH,EAAKI,GAC3D,GAAIklB,EAASje,GAAQ,OAAO,IAAI5H,EAAI,CAAEO,IAAKA,EAAKI,GAAIA,EAAIN,KAAMuH,IAE9D,MAAM,IAAIG,UAAU,sBAGtB,SAASJ,EAAkBC,EAAOrH,EAAKI,GAErC,GADAiH,EAAQA,EAAMtH,cACVslB,EAAShe,GAAQ,OAAOb,EAAIY,iBAAiBC,EAAOrH,EAAKI,GAC7D,GAAIklB,EAASje,GAAQ,OAAO,IAAI5H,EAAI,CAAEO,IAAKA,EAAKI,GAAIA,EAAIN,KAAMuH,EAAOvL,SAAS,IAE9E,MAAM,IAAI0L,UAAU,sBAGtB,SAASiO,IACP,OAAO5F,OAAOnI,KAAK4d,GAAUplB,OAAOsG,EAAIiP,cAG1Cna,EAAQiP,aAAejP,EAAQ8O,OAASG,EACxCjP,EAAQgP,eAAiBhP,EAAQoa,SAAWpL,EAC5ChP,EAAQmM,eAAiBnM,EAAQoL,SAAWe,EAC5CnM,EAAQ8L,iBAAmB9L,EAAQqa,WAAavO,EAChD9L,EAAQsa,YAActa,EAAQma,WAAaA,G,mBClE3Cna,EAAQC,QAAU,SAAUC,EAAMC,GAChC,OAAOD,EAAKI,QAAQC,aAAaJ,IAGnCH,EAAQQ,QAAU,SAAUN,EAAMC,GAChC,OAAOD,EAAKI,QAAQK,aAAaR,K,qBCJnC,IAAI2D,EAAS,EAAQ,QAAeA,OAChC+C,EAAK,EAAQ,QACbF,EAAK,EAAQ,QAAYC,GACzBE,EAAY,EAAQ,QACpBC,EAAS,EAAQ,QAErB,SAAS2R,EAAQa,EAAKtS,EAAMvC,EAAKyC,EAAUC,GACzC,IAAI+iB,EAAMrjB,EAAUpC,GACpB,GAAiB,OAAbylB,EAAI7lB,KAAe,CAErB,GAAiB,UAAb6C,GAAqC,cAAbA,EAA0B,MAAM,IAAII,MAAM,yBACtE,OAAO6iB,EAAS7Q,EAAKtS,EAAMkjB,GACtB,GAAiB,QAAbA,EAAI7lB,KAAgB,CAC7B,GAAiB,QAAb6C,EAAoB,MAAM,IAAII,MAAM,yBACxC,OAAO8iB,EAAU9Q,EAAKtS,EAAMkjB,GAE5B,GAAiB,QAAbhjB,GAAmC,cAAbA,EAA0B,MAAM,IAAII,MAAM,yBAEtEN,EAAOnD,EAAOc,OAAO,CAACwC,EAAKH,IAC3B,IAAIzB,EAAM2kB,EAAIziB,QAAQC,aAClBlH,EAAM,CAAC,GACP6pB,EAAS,EACb,MAAOrjB,EAAKpE,OAASpC,EAAIoC,OAAS,EAAI2C,EACpC/E,EAAImH,KAAK,KACT0iB,IAEF7pB,EAAImH,KAAK,GACT,IAAIrE,GAAK,EACT,QAASA,EAAI0D,EAAKpE,OAChBpC,EAAImH,KAAKX,EAAK1D,IAEhB9C,EAAMqD,EAAOrB,KAAKhC,GAClB,IAAI8pB,EAAM1jB,EAAG8D,KAAKwf,EAAIziB,SACtB6R,EAAM,IAAI1S,EAAG0S,GAAK7O,MAAM6f,GAExBhR,EAAMA,EAAI3O,OAAO,IAAI/D,EAAGsjB,EAAIvU,iBAC5B2D,EAAMzV,EAAOrB,KAAK8W,EAAI1O,UAAUrB,WAChC,IAAI9I,EAAM4pB,EAAS,EAAI,EAAI,EAC3B9kB,EAAMa,KAAKgR,IAAIkC,EAAI1W,OAAQpC,EAAIoC,QAC3B0W,EAAI1W,SAAWpC,EAAIoC,SAAQnC,EAAM,GAErC6C,GAAK,EACL,QAASA,EAAIiC,EAAK9E,GAAO6Y,EAAIhW,GAAK9C,EAAI8C,GACtC,OAAe,IAAR7C,EAGT,SAAS0pB,EAAU7Q,EAAKtS,EAAMkjB,GAC5B,IAAItiB,EAAUd,EAAOojB,EAAI/pB,KAAKyY,UAAUvR,MAAMQ,KAAK,MACnD,IAAKD,EAAS,MAAM,IAAIN,MAAM,iBAAmB4iB,EAAI/pB,KAAKyY,UAAUvR,MAAMQ,KAAK,MAE/E,IAAIR,EAAQ,IAAIX,EAAGkB,GACf2iB,EAASL,EAAI/pB,KAAKqqB,kBAAkBrqB,KAExC,OAAOkH,EAAMoR,OAAOzR,EAAMsS,EAAKiR,GAGjC,SAASH,EAAW9Q,EAAKtS,EAAMkjB,GAC7B,IAAI5hB,EAAI4hB,EAAI/pB,KAAKmI,EACbC,EAAI2hB,EAAI/pB,KAAKoI,EACbC,EAAI0hB,EAAI/pB,KAAKqI,EACbiiB,EAAIP,EAAI/pB,KAAKuqB,QACbC,EAAW9jB,EAAU+jB,UAAUC,OAAOvR,EAAK,OAC3CzQ,EAAI8hB,EAAS9hB,EACbJ,EAAIkiB,EAASliB,EACjBqiB,EAAWjiB,EAAGN,GACduiB,EAAWriB,EAAGF,GACd,IAAIwiB,EAAQnkB,EAAG8D,KAAKpC,GAChB0iB,EAAIniB,EAAEK,KAAKX,GACXwB,EAAIvB,EAAEiC,MAAMsgB,GACbpgB,OAAO,IAAI/D,EAAGI,GAAMqC,IAAI2hB,GAAGpiB,IAAIL,IAC/BqC,UACAvB,IAAIohB,EAAEhgB,MAAMsgB,GAAOpgB,OAAOlC,EAAEY,IAAI2hB,GAAGpiB,IAAIL,IAAIqC,WAC3ChC,IAAIN,GACJM,IAAIL,GACP,OAAoB,IAAbwB,EAAES,IAAI/B,GAGf,SAASqiB,EAAY3T,EAAG5O,GACtB,GAAI4O,EAAE7N,KAAK,IAAM,EAAG,MAAM,IAAIhC,MAAM,eACpC,GAAI6P,EAAE3M,IAAIjC,IAAMA,EAAG,MAAM,IAAIjB,MAAM,eAGrC7D,EAAO1D,QAAU0Y,G,mCCnFjB,YAEA,IAAIwS,EAEJ,SAASvP,EAAgBtL,EAAK3L,EAAKmQ,GAAiK,OAApJnQ,KAAO2L,EAAOkE,OAAOC,eAAenE,EAAK3L,EAAK,CAAEmQ,MAAOA,EAAOM,YAAY,EAAM2G,cAAc,EAAM3Z,UAAU,IAAkBkO,EAAI3L,GAAOmQ,EAAgBxE,EAE3M,IAAIgB,EAAW,EAAQ,QAEnB8Z,EAAezW,OAAO,eACtB0W,EAAc1W,OAAO,cACrB2W,EAAS3W,OAAO,SAChB4W,EAAS5W,OAAO,SAChB6W,EAAe7W,OAAO,eACtB8W,EAAiB9W,OAAO,iBACxB+W,EAAU/W,OAAO,UAErB,SAASgX,EAAiB7W,EAAOtG,GAC/B,MAAO,CACLsG,MAAOA,EACPtG,KAAMA,GAIV,SAASod,EAAeC,GACtB,IAAIC,EAAUD,EAAKT,GAEnB,GAAgB,OAAZU,EAAkB,CACpB,IAAIzrB,EAAOwrB,EAAKH,GAAShL,OAIZ,OAATrgB,IACFwrB,EAAKL,GAAgB,KACrBK,EAAKT,GAAgB,KACrBS,EAAKR,GAAe,KACpBS,EAAQH,EAAiBtrB,GAAM,MAKrC,SAAS0rB,EAAWF,GAGlBlZ,EAAQC,SAASgZ,EAAgBC,GAGnC,SAASG,EAAYC,EAAaJ,GAChC,OAAO,SAAUC,EAASI,GACxBD,EAAYE,MAAK,WACXN,EAAKN,GACPO,EAAQH,OAAiBzpB,GAAW,IAItC2pB,EAAKJ,GAAgBK,EAASI,KAC7BA,IAIP,IAAIE,EAAyB5X,OAAOwM,gBAAe,eAC/CqL,EAAuC7X,OAAO8X,gBAAgBnB,EAAwB,CACxF,aACE,OAAO7mB,KAAKonB,IAGdlc,KAAM,WACJ,IAAIjB,EAAQjK,KAIRlB,EAAQkB,KAAKgnB,GAEjB,GAAc,OAAVloB,EACF,OAAOmpB,QAAQL,OAAO9oB,GAGxB,GAAIkB,KAAKinB,GACP,OAAOgB,QAAQT,QAAQH,OAAiBzpB,GAAW,IAGrD,GAAIoC,KAAKonB,GAASrpB,UAKhB,OAAO,IAAIkqB,SAAQ,SAAUT,EAASI,GACpCvZ,EAAQC,UAAS,WACXrE,EAAM+c,GACRY,EAAO3d,EAAM+c,IAEbQ,EAAQH,OAAiBzpB,GAAW,UAU5C,IACIsqB,EADAP,EAAc3nB,KAAKknB,GAGvB,GAAIS,EACFO,EAAU,IAAID,QAAQP,EAAYC,EAAa3nB,WAC1C,CAGL,IAAIjE,EAAOiE,KAAKonB,GAAShL,OAEzB,GAAa,OAATrgB,EACF,OAAOksB,QAAQT,QAAQH,EAAiBtrB,GAAM,IAGhDmsB,EAAU,IAAID,QAAQjoB,KAAKmnB,IAI7B,OADAnnB,KAAKknB,GAAgBgB,EACdA,IAER5Q,EAAgBuP,EAAuBxW,OAAO4P,eAAe,WAC9D,OAAOjgB,QACLsX,EAAgBuP,EAAuB,UAAU,WACnD,IAAIsB,EAASnoB,KAKb,OAAO,IAAIioB,SAAQ,SAAUT,EAASI,GACpCO,EAAOf,GAASppB,QAAQ,MAAM,SAAUd,GAClCA,EACF0qB,EAAO1qB,GAITsqB,EAAQH,OAAiBzpB,GAAW,aAGtCipB,GAAwBiB,GAExB7M,EAAoC,SAA2C7d,GACjF,IAAIgrB,EAEAC,EAAWnY,OAAOvP,OAAOonB,GAAuCK,EAAiB,GAAI9Q,EAAgB8Q,EAAgBhB,EAAS,CAChI5W,MAAOpT,EACPU,UAAU,IACRwZ,EAAgB8Q,EAAgBtB,EAAc,CAChDtW,MAAO,KACP1S,UAAU,IACRwZ,EAAgB8Q,EAAgBrB,EAAa,CAC/CvW,MAAO,KACP1S,UAAU,IACRwZ,EAAgB8Q,EAAgBpB,EAAQ,CAC1CxW,MAAO,KACP1S,UAAU,IACRwZ,EAAgB8Q,EAAgBnB,EAAQ,CAC1CzW,MAAOpT,EAAOkM,eAAeuG,WAC7B/R,UAAU,IACRwZ,EAAgB8Q,EAAgBjB,EAAgB,CAClD3W,MAAO,SAAegX,EAASI,GAC7B,IAAI7rB,EAAOssB,EAASjB,GAAShL,OAEzBrgB,GACFssB,EAASnB,GAAgB,KACzBmB,EAASvB,GAAgB,KACzBuB,EAAStB,GAAe,KACxBS,EAAQH,EAAiBtrB,GAAM,MAE/BssB,EAASvB,GAAgBU,EACzBa,EAAStB,GAAea,IAG5B9pB,UAAU,IACRsqB,IA8BJ,OA7BAC,EAASnB,GAAgB,KACzBla,EAAS5P,GAAQ,SAAUF,GACzB,GAAIA,GAAoB,+BAAbA,EAAI6jB,KAAuC,CACpD,IAAI6G,EAASS,EAAStB,GAWtB,OARe,OAAXa,IACFS,EAASnB,GAAgB,KACzBmB,EAASvB,GAAgB,KACzBuB,EAAStB,GAAe,KACxBa,EAAO1qB,SAGTmrB,EAASrB,GAAU9pB,GAIrB,IAAIsqB,EAAUa,EAASvB,GAEP,OAAZU,IACFa,EAASnB,GAAgB,KACzBmB,EAASvB,GAAgB,KACzBuB,EAAStB,GAAe,KACxBS,EAAQH,OAAiBzpB,GAAW,KAGtCyqB,EAASpB,IAAU,KAErB7pB,EAAOO,GAAG,WAAY8pB,EAAWhe,KAAK,KAAM4e,IACrCA,GAGThpB,EAAO1D,QAAUsf,I","file":"static/js/app-e313b76e.js","sourcesContent":["var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\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;","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\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};","// 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","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\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}","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\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};","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\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['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\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};","// 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};","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","module.exports = require('./browser/algorithms.json')\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}();","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","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\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});","module.exports = require('events').EventEmitter;\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\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'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}","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\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;","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\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","'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;"],"sourceRoot":""}