{"version":3,"file":"build/bundle.js","mappings":"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AA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAgG,GAEAC,GAEAC,GAEAC,GAEAmC,GACAA,GACAA,GACAlC,GAEAnG,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAoG,GAEAC,GAEAC,GAEAC,GAEA8B,GACAA,GACAA,GACA7B,GAEAvG,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAwG,GAEAC,GAEAC,GAEAC,GACAyB,GACAA,GACAA,GAEAxB,GAEAC,GAEAA,GAEAA,GAEAA,GAEAA,GAEAA,GAEAK,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAA,GACAA,GACAA,GAEAI,GACAC,GACAC,GACAC,GACAW,GACAA,GACAA,GACAA,GAEAV,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAC,GAEAC,GAEAC,GAEAC,GAEAC,GAEAC,GAEAE,GAEAC,GACAC,GACAA,GACAA,GAEAtG,IAKF,MAAO,CACL9qE,MAAOA,+CCpzCX,MAAM,OAAEpE,GAAW,EAAQ,KACrB4jE,EAAU,EAAQ,KAClBiJ,EAAY,kBAEZ4I,EAAS,EAAQ,MACjBnqD,EAAQ,EAAQ,MAChBj2B,EAAI,EAAQ,MACZqgF,EAAS,EAAQ,MACjBC,EAAS,EAAQ,MACjB,IAAEC,GAAQ,EAAQ,MAKxB,MAAMC,EAKJx4F,YAAa0hD,KACXA,EAAOA,GAAQ,IAELhP,MAAQgP,EAAKhP,KAAO,MAC5BgP,EAAKhP,KAAO,M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,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINL,IAAK,CACHp8B,IAAK,EACLy8B,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE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AK5pF,IAAI,GASlB82J,IADA92J,GADAoqE,IADApqE,GADAq3J,IADAr3J,GADAi3J,IADAj3J,EAAI82J,EAAK1sF,EAAK,IACL,EAAIpqE,IAAI,IACR82J,EAAK,IACJ,EAAI92J,IAAI,IACRi3J,EAAK,IACN,GAAKj3J,IAAI,IACTq3J,EAAM,IACN,GAAKr3J,IAAI,GASlBk3J,IADAl3J,GADA+2J,IADA/2J,GADAqqE,IADArqE,GADAs3J,IADAt3J,EAAIk3J,EAAMH,EAAK,IACL,EAAI/2J,IAAI,IACRk3J,EAAM,IACP,EAAIl3J,IAAI,IACRs3J,EAAM,IACN,GAAKt3J,IAAI,IACTqqE,EAAK,IACJ,GAAKrqE,IAAI,GASnBu3J,IADAv3J,GADAm3J,IADAn3J,GADAg3J,IADAh3J,GADAkoG,IADAloG,EAAIu3J,EAAMJ,EAAM,IACP,EAAIn3J,IAAI,IACRu3J,EAAM,IACN,EAAIv3J,IAAI,IACRkoG,EAAK,IACJ,GAAKloG,IAAI,IACTg3J,EAAK,IACL,GAAKh3J,IAAI,GASnB62J,IADA72J,GADAkoG,IADAloG,GADAqqE,IADArqE,GADAoqE,IADApqE,EAAI62J,EAAK3uD,EAAK,IACL,EAAIloG,IAAI,IACR62J,EAAK,IACL,EAAI72J,IAAI,IACRoqE,EAAK,IACL,GAAKpqE,IAAI,IACTqqE,EAAK,IACL,GAAKrqE,IAAI,GASlB82J,IADA92J,GADA2pF,IADA3pF,GADAg3J,IADAh3J,GADA+2J,IADA/2J,EAAI82J,EAAKntE,EAAK,IACL,EAAI3pF,IAAI,IACR82J,EAAK,IACL,EAAI92J,IAAI,IACR+2J,EAAK,IACL,GAAK/2J,IAAI,IACTg3J,EAAK,IACL,GAAKh3J,IAAI,GASlBk3J,IADAl3J,GADAi3J,IADAj3J,GADA4pF,IADA5pF,GADAm3J,IADAn3J,EAAIk3J,EAAMD,EAAK,IACL,EAAIj3J,IAAI,IACRk3J,EAAM,IACP,EAAIl3J,IAAI,IACRm3J,EAAM,IACN,GAAKn3J,IAAI,IACT4pF,EAAK,IACJ,GAAK5pF,IAAI,GASnBu3J,IADA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","sources":["webpack://svelte-app/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://svelte-app/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://svelte-app/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://svelte-app/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://svelte-app/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://svelte-app/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://svelte-app/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://svelte-app/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://svelte-app/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://svelte-app/./node_modules/@babel/runtime/helpers/typeof.js","webpack://svelte-app/./node_modules/@bloks/constants/dist/constants.esm.js","webpack://svelte-app/./node_modules/@proton/browser-transport/dist/browser-transport.cjs.production.min.js","webpack://svelte-app/./node_modules/@proton/browser-transport/dist/index.js","webpack://svelte-app/./node_modules/@proton/js/dist/index.js","webpack://svelte-app/./node_modules/@proton/js/dist/js.cjs.production.min.js","webpack://svelte-app/./node_modules/@proton/link/dist/index.js","webpack://svelte-app/./node_modules/@proton/link/dist/link.cjs.production.min.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/index.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/deflate.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/inflate.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/utils/common.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/utils/strings.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/zlib/adler32.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/zlib/constants.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/zlib/crc32.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/zlib/deflate.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/zlib/gzheader.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/zlib/inffast.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/zlib/inflate.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/zlib/inftrees.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/zlib/messages.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/zlib/trees.js","webpack://svelte-app/./node_modules/@proton/link/node_modules/pako/lib/zlib/zstream.js","webpack://svelte-app/./node_modules/@proton/signing-request/dist/index.js","webpack://svelte-app/./node_modules/@proton/signing-request/dist/signing-request.cjs.production.min.js","webpack://svelte-app/./node_modules/@proton/web-sdk/dist/index.js","webpack://svelte-app/./node_modules/@proton/web-sdk/dist/web-sdk.cjs.production.min.js","webpack://svelte-app/./node_modules/assert/build/assert.js","webpack://svelte-app/./node_modules/assert/build/internal/assert/assertion_error.js","webpack://svelte-app/./node_modules/assert/build/internal/errors.js","webpack://svelte-app/./node_modules/assert/build/internal/util/comparisons.js","webpack://svelte-app/./node_modules/base-x/src/index.js","webpack://svelte-app/./node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","webpack://svelte-app/./node_modules/base64-js/index.js","webpack://svelte-app/./node_modules/bigi/lib/bigi.js","webpack://svelte-app/./node_modules/bigi/lib/convert.js","webpack://svelte-app/./node_modules/bigi/lib/index.js","webpack://svelte-app/./node_modules/bignumber.js/bignumber.js","webpack://svelte-app/./node_modules/bn.js/lib/bn.js","webpack://svelte-app/./node_modules/borc/node_modules/buffer/index.js","webpack://svelte-app/./node_modules/borc/src/constants.js","webpack://svelte-app/./node_modules/borc/src/decoder.asm.js","webpack://svelte-app/./node_modules/borc/src/decoder.js","webpack://svelte-app/./node_modules/borc/src/diagnose.js","webpack://svelte-app/./node_modules/borc/src/encoder.js","webpack://svelte-app/./node_modules/borc/src/index.js","webpack://svelte-app/./node_modules/borc/src/simple.js","webpack://svelte-app/./node_modules/borc/src/tagged.js","webpack://svelte-app/./node_modules/borc/src/utils.js","webpack://svelte-app/./node_modules/brorand/index.js","webpack://svelte-app/./node_modules/browserify-aes/aes.js","webpack://svelte-app/./node_modules/browserify-aes/authCipher.js","webpack://svelte-app/./node_modules/browserify-aes/browser.js","webpack://svelte-app/./node_modules/browserify-aes/decrypter.js","webpack://svelte-app/./node_modules/browserify-aes/encrypter.js","webpack://svelte-app/./node_modules/browserify-aes/ghash.js","webpack://svelte-app/./node_modules/browserify-aes/modes.js","webpack://svelte-app/./node_modules/browserify-aes/modes/cbc.js","webpack://svelte-app/./node_modules/browserify-aes/modes/cfb.js","webpack://svelte-app/./node_modules/browserify-aes/modes/cfb1.js","webpack://svelte-app/./node_modules/browserify-aes/modes/cfb8.js","webpack://svelte-app/./node_modules/browserify-aes/modes/ctr.js","webpack://svelte-app/./node_modules/browserify-aes/modes/ecb.js","webpack://svelte-app/./node_modules/browserify-aes/modes/ofb.js","webpack://svelte-app/./node_modules/browserify-aes/streamCipher.js","webpack://svelte-app/./node_modules/bs58/index.js","webpack://svelte-app/./node_modules/buffer-xor/index.js","webpack://svelte-app/./node_modules/buffer/index.js","webpack://svelte-app/./node_modules/bytebuffer/dist/bytebuffer.js","webpack://svelte-app/./node_modules/call-bind/callBound.js","webpack://svelte-app/./node_modules/call-bind/index.js","webpack://svelte-app/./node_modules/cipher-base/index.js","webpack://svelte-app/./node_modules/console-browserify/index.js","webpack://svelte-app/./node_modules/create-hash/browser.js","webpack://svelte-app/./node_modules/create-hash/make-hash.js","webpack://svelte-app/./node_modules/create-hash/md5.js","webpack://svelte-app/./node_modules/create-hmac/browser.js","webpack://svelte-app/./node_modules/create-hmac/legacy.js","webpack://svelte-app/./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://svelte-app/./node_modules/define-properties/index.js","webpack://svelte-app/./node_modules/dijkstrajs/dijkstra.js","webpack://svelte-app/./node_modules/ecurve/lib/curve.js","webpack://svelte-app/./node_modules/ecurve/lib/index.js","webpack://svelte-app/./node_modules/ecurve/lib/names.js","webpack://svelte-app/./node_modules/ecurve/lib/point.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic/curve/base.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic/curve/index.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic/curve/short.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic/curves.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic/ec/index.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic/ec/key.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack://svelte-app/./node_modules/elliptic/lib/elliptic/utils.js","webpack://svelte-app/./node_modules/encode-utf8/index.js","webpack://svelte-app/./node_modules/eosjs-ecc/lib/aes.js","webpack://svelte-app/./node_modules/eosjs-ecc/lib/api_common.js","webpack://svelte-app/./node_modules/eosjs-ecc/lib/api_object.js","webpack://svelte-app/./node_modules/eosjs-ecc/lib/ecdsa.js","webpack://svelte-app/./node_modules/eosjs-ecc/lib/ecsignature.js","webpack://svelte-app/./node_modules/eosjs-ecc/lib/enforce_types.js","webpack://svelte-app/./node_modules/eosjs-ecc/lib/hash.js","webpack://svelte-app/./node_modules/eosjs-ecc/lib/index.js","webpack://svelte-app/./node_modules/eosjs-ecc/lib/key_private.js","webpack://svelte-app/./node_modules/eosjs-ecc/lib/key_public.js","webpack://svelte-app/./node_modules/eosjs-ecc/lib/key_utils.js","webpack://svelte-app/./node_modules/eosjs-ecc/lib/promise-async.js","webpack://svelte-app/./node_modules/eosjs-ecc/lib/signature.js","webpack://svelte-app/./node_modules/eosjs/dist/eosjs-api-interfaces.js","webpack://svelte-app/./node_modules/eosjs/dist/eosjs-api.js","webpack://svelte-app/./node_modules/eosjs/dist/eosjs-jsonrpc.js","webpack://svelte-app/./node_modules/eosjs/dist/eosjs-numeric.js","webpack://svelte-app/./node_modules/eosjs/dist/eosjs-rpc-interfaces.js","webpack://svelte-app/./node_modules/eosjs/dist/eosjs-rpcerror.js","webpack://svelte-app/./node_modules/eosjs/dist/eosjs-serialize.js","webpack://svelte-app/./node_modules/eosjs/dist/index.js","webpack://svelte-app/./node_modules/eosjs/dist/ripemd.js","webpack://svelte-app/./node_modules/es6-object-assign/index.js","webpack://svelte-app/./node_modules/events/events.js","webpack://svelte-app/./node_modules/evp_bytestokey/index.js","webpack://svelte-app/./node_modules/fast-sha256/sha256.js","webpack://svelte-app/./node_modules/fast-text-encoding/text.min.js","webpack://svelte-app/./node_modules/foreach/index.js","webpack://svelte-app/./node_modules/function-bind/implementation.js","webpack://svelte-app/./node_modules/function-bind/index.js","webpack://svelte-app/./node_modules/get-intrinsic/index.js","webpack://svelte-app/./node_modules/has-symbols/index.js","webpack://svelte-app/./node_modules/has-symbols/shams.js","webpack://svelte-app/./node_modules/has-tostringtag/shams.js","webpack://svelte-app/./node_modules/has/src/index.js","webpack://svelte-app/./node_modules/hash-base/index.js","webpack://svelte-app/./node_modules/hash.js/lib/hash.js","webpack://svelte-app/./node_modules/hash.js/lib/hash/common.js","webpack://svelte-app/./node_modules/hash.js/lib/hash/hmac.js","webpack://svelte-app/./node_modules/hash.js/lib/hash/ripemd.js","webpack://svelte-app/./node_modules/hash.js/lib/hash/sha.js","webpack://svelte-app/./node_modules/hash.js/lib/hash/sha/1.js","webpack://svelte-app/./node_modules/hash.js/lib/hash/sha/224.js","webpack://svelte-app/./node_modules/hash.js/lib/hash/sha/256.js","webpack://svelte-app/./node_modules/hash.js/lib/hash/sha/384.js","webpack://svelte-app/./node_modules/hash.js/lib/hash/sha/512.js","webpack://svelte-app/./node_modules/hash.js/lib/hash/sha/common.js","webpack://svelte-app/./node_modules/hash.js/lib/hash/utils.js","webpack://svelte-app/./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack://svelte-app/./node_modules/ieee754/index.js","webpack://svelte-app/./node_modules/inherits/inherits_browser.js","webpack://svelte-app/./node_modules/is-arguments/index.js","webpack://svelte-app/./node_modules/is-generator-function/index.js","webpack://svelte-app/./node_modules/is-nan/implementation.js","webpack://svelte-app/./node_modules/is-nan/index.js","webpack://svelte-app/./node_modules/is-nan/polyfill.js","webpack://svelte-app/./node_modules/is-nan/shim.js","webpack://svelte-app/./node_modules/is-typed-array/index.js","webpack://svelte-app/./node_modules/iso-url/index.js","webpack://svelte-app/./node_modules/iso-url/src/relative.js","webpack://svelte-app/./node_modules/iso-url/src/url-browser.js","webpack://svelte-app/./node_modules/isomorphic-ws/browser.js","webpack://svelte-app/./node_modules/js-sha256/src/sha256.js","webpack://svelte-app/./node_modules/long/dist/long.js","webpack://svelte-app/./node_modules/md5.js/index.js","webpack://svelte-app/./node_modules/minimalistic-assert/index.js","webpack://svelte-app/./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack://svelte-app/./node_modules/object-is/implementation.js","webpack://svelte-app/./node_modules/object-is/index.js","webpack://svelte-app/./node_modules/object-is/polyfill.js","webpack://svelte-app/./node_modules/object-is/shim.js","webpack://svelte-app/./node_modules/object-keys/implementation.js","webpack://svelte-app/./node_modules/object-keys/index.js","webpack://svelte-app/./node_modules/object-keys/isArguments.js","webpack://svelte-app/./node_modules/pako/index.js","webpack://svelte-app/./node_modules/pako/lib/deflate.js","webpack://svelte-app/./node_modules/pako/lib/inflate.js","webpack://svelte-app/./node_modules/pako/lib/utils/common.js","webpack://svelte-app/./node_modules/pako/lib/utils/strings.js","webpack://svelte-app/./node_modules/pako/lib/zlib/adler32.js","webpack://svelte-app/./node_modules/pako/lib/zlib/constants.js","webpack://svelte-app/./node_modules/pako/lib/zlib/crc32.js","webpack://svelte-app/./node_modules/pako/lib/zlib/deflate.js","webpack://svelte-app/./node_modules/pako/lib/zlib/gzheader.js","webpack://svelte-app/./node_modules/pako/lib/zlib/inffast.js","webpack://svelte-app/./node_modules/pako/lib/zlib/inflate.js","webpack://svelte-app/./node_modules/pako/lib/zlib/inftrees.js","webpack://svelte-app/./node_modules/pako/lib/zlib/messages.js","webpack://svelte-app/./node_modules/pako/lib/zlib/trees.js","webpack://svelte-app/./node_modules/pako/lib/zlib/zstream.js","webpack://svelte-app/./node_modules/process/browser.js","webpack://svelte-app/./node_modules/qrcode/lib/browser.js","webpack://svelte-app/./node_modules/qrcode/lib/can-promise.js","webpack://svelte-app/./node_modules/qrcode/lib/core/alignment-pattern.js","webpack://svelte-app/./node_modules/qrcode/lib/core/alphanumeric-data.js","webpack://svelte-app/./node_modules/qrcode/lib/core/bit-buffer.js","webpack://svelte-app/./node_modules/qrcode/lib/core/bit-matrix.js","webpack://svelte-app/./node_modules/qrcode/lib/core/byte-data.js","webpack://svelte-app/./node_modules/qrcode/lib/core/error-correction-code.js","webpack://svelte-app/./node_modules/qrcode/lib/core/error-correction-level.js","webpack://svelte-app/./node_modules/qrcode/lib/core/finder-pattern.js","webpack://svelte-app/./node_modules/qrcode/lib/core/format-info.js","webpack://svelte-app/./node_modules/qrcode/lib/core/galois-field.js","webpack://svelte-app/./node_modules/qrcode/lib/core/kanji-data.js","webpack://svelte-app/./node_modules/qrcode/lib/core/mask-pattern.js","webpack://svelte-app/./node_modules/qrcode/lib/core/mode.js","webpack://svelte-app/./node_modules/qrcode/lib/core/numeric-data.js","webpack://svelte-app/./node_modules/qrcode/lib/core/polynomial.js","webpack://svelte-app/./node_modules/qrcode/lib/core/qrcode.js","webpack://svelte-app/./node_modules/qrcode/lib/core/reed-solomon-encoder.js","webpack://svelte-app/./node_modules/qrcode/lib/core/regex.js","webpack://svelte-app/./node_modules/qrcode/lib/core/segments.js","webpack://svelte-app/./node_modules/qrcode/lib/core/utils.js","webpack://svelte-app/./node_modules/qrcode/lib/core/version-check.js","webpack://svelte-app/./node_modules/qrcode/lib/core/version.js","webpack://svelte-app/./node_modules/qrcode/lib/renderer/canvas.js","webpack://svelte-app/./node_modules/qrcode/lib/renderer/svg-tag.js","webpack://svelte-app/./node_modules/qrcode/lib/renderer/utils.js","webpack://svelte-app/./node_modules/randombytes/browser.js","webpack://svelte-app/./node_modules/readable-stream/errors-browser.js","webpack://svelte-app/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://svelte-app/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://svelte-app/./node_modules/readable-stream/lib/_stream_readable.js","webpack://svelte-app/./node_modules/readable-stream/lib/_stream_transform.js","webpack://svelte-app/./node_modules/readable-stream/lib/_stream_writable.js","webpack://svelte-app/./node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://svelte-app/./node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://svelte-app/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://svelte-app/./node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://svelte-app/./node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://svelte-app/./node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://svelte-app/./node_modules/readable-stream/lib/internal/streams/state.js","webpack://svelte-app/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://svelte-app/./node_modules/readable-stream/readable-browser.js","webpack://svelte-app/./node_modules/ripemd-ts/dist/ripemd-ts.es5.js","webpack://svelte-app/./node_modules/ripemd160/index.js","webpack://svelte-app/./node_modules/safe-buffer/index.js","webpack://svelte-app/./node_modules/secp256k1/elliptic.js","webpack://svelte-app/./node_modules/secp256k1/lib/elliptic.js","webpack://svelte-app/./node_modules/secp256k1/lib/index.js","webpack://svelte-app/./node_modules/sha.js/hash.js","webpack://svelte-app/./node_modules/sha.js/index.js","webpack://svelte-app/./node_modules/sha.js/sha.js","webpack://svelte-app/./node_modules/sha.js/sha1.js","webpack://svelte-app/./node_modules/sha.js/sha224.js","webpack://svelte-app/./node_modules/sha.js/sha256.js","webpack://svelte-app/./node_modules/sha.js/sha384.js","webpack://svelte-app/./node_modules/sha.js/sha512.js","webpack://svelte-app/./node_modules/simple-cbor/src/index.js","webpack://svelte-app/./node_modules/simple-cbor/src/serializer.js","webpack://svelte-app/./node_modules/simple-cbor/src/value.js","webpack://svelte-app/./node_modules/stream-browserify/index.js","webpack://svelte-app/./node_modules/string_decoder/lib/string_decoder.js","webpack://svelte-app/./node_modules/tweetnacl/nacl-fast.js","webpack://svelte-app/./node_modules/util-deprecate/browser.js","webpack://svelte-app/./node_modules/util/support/isBufferBrowser.js","webpack://svelte-app/./node_modules/util/support/types.js","webpack://svelte-app/./node_modules/util/util.js","webpack://svelte-app/./node_modules/uuid/dist/esm-browser/rng.js","webpack://svelte-app/./node_modules/uuid/dist/esm-browser/regex.js","webpack://svelte-app/./node_modules/uuid/dist/esm-browser/validate.js","webpack://svelte-app/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://svelte-app/./node_modules/uuid/dist/esm-browser/v1.js","webpack://svelte-app/./node_modules/uuid/dist/esm-browser/parse.js","webpack://svelte-app/./node_modules/uuid/dist/esm-browser/v35.js","webpack://svelte-app/./node_modules/uuid/dist/esm-browser/md5.js","webpack://svelte-app/./node_modules/uuid/dist/esm-browser/v3.js","webpack://svelte-app/./node_modules/uuid/dist/esm-browser/v4.js","webpack://svelte-app/./node_modules/uuid/dist/esm-browser/sha1.js","webpack://svelte-app/./node_modules/uuid/dist/esm-browser/v5.js","webpack://svelte-app/./node_modules/uuid/dist/esm-browser/nil.js","webpack://svelte-app/./node_modules/uuid/dist/esm-browser/version.js","webpack://svelte-app/./node_modules/which-typed-array/index.js","webpack://svelte-app/./node_modules/zod/lib/src/ZodError.js","webpack://svelte-app/./node_modules/zod/lib/src/codegen.js","webpack://svelte-app/./node_modules/zod/lib/src/defaultErrorMap.js","webpack://svelte-app/./node_modules/zod/lib/src/helpers/errorUtil.js","webpack://svelte-app/./node_modules/zod/lib/src/helpers/objectUtil.js","webpack://svelte-app/./node_modules/zod/lib/src/helpers/util.js","webpack://svelte-app/./node_modules/zod/lib/src/index.js","webpack://svelte-app/./node_modules/zod/lib/src/isScalar.js","webpack://svelte-app/./node_modules/zod/lib/src/parser.js","webpack://svelte-app/./node_modules/zod/lib/src/types/any.js","webpack://svelte-app/./node_modules/zod/lib/src/types/array.js","webpack://svelte-app/./node_modules/zod/lib/src/types/base.js","webpack://svelte-app/./node_modules/zod/lib/src/types/bigint.js","webpack://svelte-app/./node_modules/zod/lib/src/types/boolean.js","webpack://svelte-app/./node_modules/zod/lib/src/types/date.js","webpack://svelte-app/./node_modules/zod/lib/src/types/enum.js","webpack://svelte-app/./node_modules/zod/lib/src/types/function.js","webpack://svelte-app/./node_modules/zod/lib/src/types/intersection.js","webpack://svelte-app/./node_modules/zod/lib/src/types/keyof.js","webpack://svelte-app/./node_modules/zod/lib/src/types/lazy.js","webpack://svelte-app/./node_modules/zod/lib/src/types/literal.js","webpack://svelte-app/./node_modules/zod/lib/src/types/nativeEnum.js","webpack://svelte-app/./node_modules/zod/lib/src/types/null.js","webpack://svelte-app/./node_modules/zod/lib/src/types/number.js","webpack://svelte-app/./node_modules/zod/lib/src/types/object.js","webpack://svelte-app/./node_modules/zod/lib/src/types/promise.js","webpack://svelte-app/./node_modules/zod/lib/src/types/record.js","webpack://svelte-app/./node_modules/zod/lib/src/types/string.js","webpack://svelte-app/./node_modules/zod/lib/src/types/tuple.js","webpack://svelte-app/./node_modules/zod/lib/src/types/undefined.js","webpack://svelte-app/./node_modules/zod/lib/src/types/union.js","webpack://svelte-app/./node_modules/zod/lib/src/types/unknown.js","webpack://svelte-app/./node_modules/zod/lib/src/types/void.js","webpack://svelte-app/./node_modules/available-typed-arrays/index.js","webpack://svelte-app/./node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js","webpack://svelte-app/webpack/bootstrap","webpack://svelte-app/webpack/runtime/amd options","webpack://svelte-app/webpack/runtime/compat get default export","webpack://svelte-app/webpack/runtime/define property getters","webpack://svelte-app/webpack/runtime/global","webpack://svelte-app/webpack/runtime/hasOwnProperty shorthand","webpack://svelte-app/webpack/runtime/make namespace object","webpack://svelte-app/webpack/runtime/node module decorator","webpack://svelte-app/./node_modules/svelte/internal/index.mjs","webpack://svelte-app/./node_modules/tslib/tslib.es6.js","webpack://svelte-app/./node_modules/@greymass/eosio/lib/eosio-core.m.js","webpack://svelte-app/SvelteTable.svelte","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/agent/api.js","webpack://svelte-app/./node_modules/@dfinity/principal/lib/esm/utils/base32.js","webpack://svelte-app/./node_modules/@dfinity/principal/lib/esm/utils/getCrc.js","webpack://svelte-app/./node_modules/@dfinity/principal/lib/esm/index.js","webpack://svelte-app/./node_modules/@dfinity/principal/lib/esm/utils/sha224.js","webpack://svelte-app/./node_modules/@dfinity/candid/lib/esm/utils/buffer.js","webpack://svelte-app/./node_modules/@dfinity/candid/lib/esm/utils/hash.js","webpack://svelte-app/./node_modules/@dfinity/candid/lib/esm/utils/leb128.js","webpack://svelte-app/./node_modules/@dfinity/candid/lib/esm/idl.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/utils/buffer.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/request_id.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/auth.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/cbor.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/agent/http/types.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/agent/http/transforms.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/agent/http/index.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/agent/proxy.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/agent/index.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/canisters/management_idl.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/canisters/management.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/errors.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/vendor/bls/bls.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/utils/bls.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/certificate.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/polling/index.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/actor.js","webpack://svelte-app/./node_modules/@dfinity/agent/lib/esm/polling/strategy.js","webpack://svelte-app/./node_modules/@dfinity/identity/lib/esm/buffer.js","webpack://svelte-app/./node_modules/@dfinity/identity/lib/esm/identity/der.js","webpack://svelte-app/./node_modules/@dfinity/identity/lib/esm/identity/ed25519.js","webpack://svelte-app/./node_modules/@dfinity/identity/lib/esm/identity/delegation.js","webpack://svelte-app/./node_modules/@dfinity/identity/lib/esm/identity/webauthn.js","webpack://svelte-app/./node_modules/@dfinity/auth-client/lib/esm/index.js","webpack://svelte-app/./node_modules/@dfinity/authentication/lib/esm/index.js","webpack://svelte-app/./src/declarations/spda/spda.did.js","webpack://svelte-app/./src/declarations/spda/index.js","webpack://svelte-app/App.svelte","webpack://svelte-app/./src/main.js"],"sourcesContent":["function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar runtime_1 = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined$1; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined$1) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined$1;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined$1;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined$1;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined$1, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined$1;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined$1;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined$1;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined$1;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined$1;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n module.exports \n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n});\n\nvar DEFAULT_SYMBOL = 'EOS';\nvar DEFAULT_SYSTEM_DOMAIN = 'eosio';\nvar DEFAULT_CHAIN = 'eos';\n\nvar getContractConstants = function getContractConstants(chain, systemDomain) {\n if (chain === void 0) {\n chain = DEFAULT_CHAIN;\n }\n\n if (systemDomain === void 0) {\n systemDomain = DEFAULT_SYSTEM_DOMAIN;\n }\n\n // Proxy Information Account\n var proxyInfo;\n\n if (['eos', 'bos', 'wax'].includes(chain)) {\n proxyInfo = 'regproxyinfo';\n } else if (chain === 'telos') {\n proxyInfo = 'tlsproxyinfo';\n }\n\n return {\n // Accounts\n EOSIO: systemDomain,\n EOSIO_TOKEN: !['fio', 'fio-test'].includes(chain) ? systemDomain + \".token\" : 'fio.token',\n ACCOUNT_INFO: 'account.info',\n PROXY_INFO_ACCOUNT: proxyInfo,\n EOSIO_MSIG: systemDomain + \".msig\",\n EOSIO_RAM: systemDomain + \".ram\",\n EOSIO_STAKE: systemDomain + \".stake\",\n EOSIO_PRODS: systemDomain + \".prods\",\n EOSIO_NULL: systemDomain + \".null\",\n EOSIO_RAMFEE: systemDomain + \".ramfee\",\n EOSIO_VPAY: systemDomain + \".vpay\",\n EOSIO_BPAY: systemDomain + \".bpay\",\n EOSIO_REX: systemDomain + \".rex\",\n // Params\n NEWACCOUNT_NAME_PARAM: chain.indexOf('bos') === -1 ? 'name' : 'newact',\n // Tables\n EOSIO_MSIG_APPROVALS_TABLE: 'approvals2',\n EOSIO_MSIG_PROPOSALS_TABLE: 'proposal',\n // Actions\n TRANSFER_ACTION: 'transfer',\n DELEGATE_BW_ACTION: 'delegatebw',\n UNDELEGATE_BW_ACTION: 'undelegatebw',\n VOTE_PRODUCER_ACTION: 'voteproducer',\n BUY_RAM_ACTION: 'buyram',\n BUY_RAM_BYTES_ACTION: 'buyrambyes',\n SELL_RAM_ACTION: 'sellram'\n };\n};\n\nvar dapps = [{\n name: 'Equilibrium EOSDT',\n description: 'EOSDT is the #1 decentralized stablecoin on EOS. Lock EOS or BTC collateral and get dollar-pegged EOSDT stablecoins at affordable APR.',\n shortDescription: 'Lock EOS or BTC collateral and get dollar-pegged EOSDT stablecoins at affordable APR.',\n symbol: 'EOSDT',\n partner: true,\n statistics: true,\n accounts: ['eosdtcntract', 'eosdtnutoken', 'eosdtsttoken', 'eosdtorclize', 'eosdtliqdatr', 'eosdtgovernc', 'eosdtpbtcpos', 'eosdtpbtcliq'],\n logo: 'https://bloks.io/img/dapps/EOSDT.png',\n website: 'https://www.eosdt.com/',\n app: 'https://gateway.eosdt.com/',\n telegram: 'https://t.me/equilibrium_eosdt_official',\n medium: 'https://medium.com/equilibrium-eosdt',\n twitter: 'https://twitter.com/eosdt',\n github: 'https://github.com/equilibrium-eosdt',\n chains: ['eos']\n}, {\n name: 'Alcor.exchange',\n description: 'The first self-listing DEX. With Alcor you can trade any EOS.IO tokens for system EOS tokens, atomically, without the participation of third parties! Create markets in one click, list your dapp token for one click, trade whatever you want.',\n shortDescription: 'The first self-listing DEX. With Alcor you can trade any EOS.IO tokens for system EOS tokens.',\n symbol: '',\n statistics: true,\n accounts: ['eostokensdex'],\n logo: 'https://i.ibb.co/dKDYDMc/vectorpaint.png',\n website: 'https://alcor.exchange/',\n app: 'https://alcor.exchange/',\n telegram: 'https://t.me/alcorexchange',\n medium: 'https://medium.com/@avral',\n twitter: 'https://twitter.com/avral_pro',\n github: 'https://github.com/avral/alcor-ui',\n chains: ['eos', 'wax', 'telos']\n}, {\n name: 'SX',\n description: 'Building secure & reliable financial blockchain instruments',\n shortDescription: 'DeFi Swap & Flashloan',\n symbol: 'SX',\n accounts: ['swap.sx', 'vigor.sx', 'stable.sx', 'flash.sx', 'push.sx', 'network.sx', 'registry.sx', 'miner.sx', 'cross.sx', 'nav.sx', 'fee.sx', 'trade.sx', 'vaults.sx', 'proxy.sx', 'dust.sx', 'curve.sx'],\n logo: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/sx.png',\n website: 'https://github.com/stableex',\n app: 'https://xnation.io',\n telegram: 'https://t.me/xnationio',\n medium: '',\n twitter: '',\n github: 'https://github.com/stableex',\n chains: ['eos']\n}, {\n name: 'EOSNameService',\n description: 'EOS Name Service is the most comprehensive platform to register premium/base EOS/WAX account names.',\n shortDescription: 'EOS/WAX Name Service',\n symbol: '',\n partner: false,\n accounts: ['names'],\n logo: 'https://avatars1.githubusercontent.com/u/73891041',\n website: 'http://eosnameservice.io',\n app: 'http://eosnameservice.io',\n telegram: 'https://t.me/eosnameservice',\n medium: '',\n twitter: 'https://twitter.com/eosnameservice',\n github: 'https://github.com/eosnameservice',\n chains: ['eos', 'wax']\n}, {\n name: 'Prospectors',\n description: 'Massive Multiplayer Online Real-Time Economic Strategy Game MINE GOLD - BUILD YOUR WORLD',\n shortDescription: 'Massive Multiplayer Online Real-Time Economic Strategy Game',\n symbol: '',\n accounts: ['prospectorsc'],\n logo: 'https://bloks.io/img/dapps/prospectors.png',\n website: 'https://prospectors.io',\n app: 'https://prospectors.io',\n telegram: 'https://t.me/prospectorsgame',\n medium: 'https://medium.com/@prospectorsgame',\n twitter: 'https://twitter.com/prospectorsgame',\n github: 'https://github.com/prospectors/public/issues',\n chains: ['eos']\n}, {\n name: 'APPICS',\n description: 'APPICS is the most engaged social media dApp that makes it easy to get rewarded with cryptocurrency for your social media activity like creating & curating content. The mobile interface is intuitive to use without any prior blockchain knowledge. Get rewarded for your passion!',\n shortDescription: 'APPICS is the most engaged social media dApp - earn APX Tokens for posting, commenting, and up-voting photos & videos!',\n symbol: 'APX',\n statistics: true,\n accounts: ['appicsappics'],\n logo: 'https://i.imgur.com/Ts9CNN5.png',\n website: 'https://appics.com',\n app: 'https://appics.com',\n telegram: 'https://t.me/appics_official',\n medium: 'https://medium.com/@appics',\n twitter: 'https://twitter.com/appics_official',\n github: 'https://github.com/phenom-company/appics_eos_token',\n chains: ['eos']\n}, {\n name: 'Boid',\n description: 'Contribute your excess computing resources towards important causes while earning rewards. Join a team and rank up on the social leaderboards.',\n shortDescription: 'The Social Supercomputer. Contribute your excess computing resources towards important causes.',\n symbol: '',\n accounts: ['boidcomtoken', 'boidcompower', 'boidcommint1', 'boidcompromo'],\n logo: 'https://raw.githubusercontent.com/boid-com/assets/master/boidLogo-lg.png',\n website: 'https://boid.com',\n app: 'https://app.boid.com',\n telegram: 'https://t.me/Boidcom_official',\n medium: 'https://medium.com/@boidcom',\n twitter: 'https://twitter.com/boidcom',\n github: 'https://github.com/boid-com',\n chains: ['eos']\n}, {\n name: 'The Billionaire Token',\n description: 'Most other coins or tokens have some sort of mining system. Billionaire Token has the exact opposite: It features a deflationary mechanism that destroys 30% of the gambled coins. Thus the tokens become more and more rare as more and more people gamble.',\n shortDescription: 'Billionaire Token has the opposite of a mining system: It features a deflationary mechanism that destroys 30% of the gambled coins.',\n symbol: 'XBL',\n accounts: ['billionairet', 'billionraffl', 'billionburnr', 'billionbot11', 'billionbot12', 'billionbot13', 'billionbot14'],\n app: 'https://BillionaireToken.com/',\n logo: 'https://BillionaireToken.com/images/logo_big.png',\n website: 'https://BillionaireToken.com/',\n telegram: 'https://t.me/BillionaireToken',\n medium: 'https://medium.com/@billionaire_3373',\n twitter: 'https://twitter.com/BillionaireTkn',\n github: 'https://github.com/BillionaireToken',\n chains: ['eos']\n}, {\n name: 'Crypto Sword & Magic',\n description: 'Crypto Sword & Magic is the first blockbuster RPG on EOS blockchain, traditional turn-based RPG raising heroes to challenge new dungeons. Game assets are recorded on Blockchain and transactions run on smart contracts',\n shortDescription: 'Crypto Sword & Magic is the first blockbuster RPG on EOS blockchain.',\n symbol: 'CSM',\n accounts: ['swordnmagicm'],\n app: 'https://www.cryptoswordandmagic.com',\n logo: 'https://bloks.io/img/dapps/cryptosnm.png',\n website: 'https://www.cryptoswordandmagic.com',\n telegram: 'https://t.me/cryptosnm_comm_en',\n medium: 'https://medium.com/@cryptoswordandmagic',\n twitter: 'https://twitter.com/sword_and_magic',\n github: '',\n chains: ['eos']\n}, {\n name: 'dmail',\n description: 'Welcome to dmail Beta! We are so excited to have you participate as we launch our Beta platform. In the early stages we are covering the simplest of functionality, which is sending and receiving messages. In the very near future, we will be adding a bunch of new features which we know the community is going to ask for.',\n shortDescription: 'dmail is the first decentralized email on the blockchain',\n symbol: 'MAIL',\n statistics: true,\n accounts: ['dmaildotcobp'],\n logo: 'https://www.dmail.co/logosym_256.png',\n website: 'https://dmail.co',\n app: '',\n telegram: 'https://t.me/dmailcommunity',\n medium: 'https://medium.com/@dmail',\n twitter: 'https://twitter.com/dmaildotco',\n github: '',\n chains: ['eos', 'telos']\n}, {\n name: 'Murmur',\n description: 'Murmur is a new age decentralized microblogging platform on EOS that is censorship-resistant, spam-proof and rewarding to use.',\n shortDescription: 'Murmur is a new age decentralized microblogging platform on EOS that is censorship-resistant, spam-proof and rewarding to use.',\n symbol: 'MUR',\n partner: true,\n accounts: ['murmurdappco', 'murmurtokens', 'murmurfreeac'],\n app: 'https://play.google.com/store/apps/details?id=com.murmurdapp',\n logo: 'https://bloks.io/img/dapps/murmur.png',\n website: 'http://murmurdapp.com',\n telegram: 'http://t.me/murmurdapp',\n medium: '',\n twitter: 'http://twitter.com/murmurdapp',\n github: '',\n chains: ['eos']\n}, {\n name: 'Emanate',\n description: 'Emanate is EOS for the music industry. An automated, realtime music collaboration and monetisation platform.',\n shortDescription: 'Emanate is decentralised technology for the future of music',\n symbol: 'EMT',\n partner: true,\n accounts: ['emanateoneos', 'emanateissue'],\n app: 'https://emanate.live/',\n logo: 'https://bloks.io/img/dapps/emanate.png',\n website: 'https://emanate.live',\n telegram: 'https://t.me/emanateofficial',\n medium: '',\n twitter: 'https://twitter.com/emanateofficial',\n github: '',\n chains: ['eos']\n}, {\n name: 'pixEOS',\n description: 'pixEOS is the first tokenized smart economy for gamers, artists and art enthusiasts.',\n shortDescription: 'pixEOS is the first tokenized smart economy for gamers, artists and art enthusiasts.',\n symbol: 'PIXEOS',\n partner: true,\n accounts: ['pixeos1token', 'pixeos1admin', 'pixeos1start'],\n app: 'https://pixeos.io',\n logo: 'https://bloks.io/img/dapps/pixeos.png',\n website: 'https://pixeos.io',\n telegram: 'https://t.me/PIXEOS',\n medium: '',\n twitter: 'https://twitter.com/eos_pix',\n github: '',\n chains: ['eos']\n}, {\n name: 'Everipedia',\n description: 'The Everipedia team plans to build a modern, convenient and decentralized new encyclopedia website, and this goal will be realized with the development of blockchain technology. The new version of Everipedia under development will be based on the EOS network, which will have features such as community autonomy, shielding preventation, and contribution incentives compared to the current version of Everipedia. Founded in 2014, the business network encyclopedia Everipedia, whose name derives from the English words Everything and Encyclopedia, is owned by Everipedia.Inc and has not yet adopted blockchain technology. As of December 2017, Everipedia is the largest English encyclopedia with more than six million entries, including all English entries of Wikipedia. Everipedias requirements for attention are more relaxed, so it has more entries than Wikipedia.',\n shortDescription: 'The Everipedia team plans to build a modern, convenient and decentralized new encyclopedia.',\n symbol: 'IQ',\n partner: true,\n statistics: false,\n accounts: ['everipediaiq', 'eparticlectr'],\n logo: 'https://bloks.io/img/dapps/everipedia.jpg',\n website: '',\n app: 'https://everipedia.org',\n telegram: 'https://t.me/everipedia',\n medium: '',\n twitter: '',\n github: '',\n chains: ['eos']\n}, {\n name: 'eosDAC',\n description: 'eosDAC is a Community Owned Blockproducer and a DAC enabler, born out of Dan Larimers concept of Decentralized Autonomous Communities or DACs, around which Block.one developed EOS software. The vision of eosDAC is that EOS.IO block production should be open for everyone to contribute and benefit. To realize this vision, eosDAC is an evolving Decentralised Autonomous Community (DAC) focused on EOS.IO Block Production serving the EOS communities worldwide. In doing this, eosDAC is creating the tools and smart contracts it needs to function. It will share these with the EOS communities to help other DACs thrive on the EOS.IO blockchains. In order to function as a DAC, eosDAC is creating open source tools and will be sharing them as a DAC Toolkit, that anyone can use, modify to setup and run a DAC.',\n shortDescription: 'eosDAC is creating open source tools and will be sharing them as a DAC Toolkit to enable DACs',\n symbol: 'EOSDAC',\n partner: false,\n statistics: false,\n accounts: ['eosdactokens', 'eosdacserver', 'eosdacthedac', 'daccustodian'],\n logo: 'https://raw.githubusercontent.com/eoscafe/eos-dapps/master/logos/eosdac.png',\n website: '',\n app: 'members.eosdac.io',\n discord: 'https://discord.io/eosdac',\n telegram: 'https://t.me/eosdacio',\n medium: '',\n twitter: '',\n github: 'https://github.com/eosdac',\n chains: ['eos']\n}, {\n name: 'DEOS Games',\n description: 'Deos Games are casino games built on EOS blockchain. Play zero edge games with our DEOS token and participate in bankroll staking.',\n shortDescription: 'Deos Games are casino games built on the EOS blockchain. Play zero edge games with DEOS token.',\n symbol: 'DEOS',\n statistics: false,\n accounts: ['thedeosgames', 'deosgameissu'],\n logo: 'https://bloks.io/img/dapps/deosgames.png',\n website: 'https://deosgames.com',\n app: 'https://app.deosgames.com',\n telegram: 'https://t.me/deosgameschat',\n medium: 'https://medium.com/deos-games',\n twitter: '',\n github: '',\n chains: ['eos']\n}, {\n name: 'Chintai',\n description: 'Chintai is a community-owned, feeless, 100% on-chain, multisig decentralized token leasing platform where users can lend their EOS on the market to earn interest from other users to borrow who need access to CPU/NET bandwidth.',\n shortDescription: 'Chintai is a community-owned, feeless, 100% on-chain, multisig decentralized token leasing platform.',\n symbol: '',\n statistics: false,\n accounts: ['chintailease', 'chintaiproxy', 'bidchextoken', 'chexchexchex'],\n logo: 'https://bloks.io/img/dapps/chintai.png',\n website: 'http://chintai.io',\n app: 'https://eos.chintai.io/exchange/EOS28D',\n telegram: 'https://t.me/ChintaiEOS',\n medium: 'https://medium.com/@ChintaiEOS',\n twitter: 'https://twitter.com/chintaieos',\n github: 'https://github.com/chintai-platform',\n chains: ['eos']\n}, {\n name: 'Newdex',\n description: 'Newdex is the first EOS based decentralized exchange in the world, upholding the characteristics of safe, fast and transparent, devoting to create a new-generation platform for digital assets exchange, leading the industry into an ideal new era.',\n shortDescription: 'Newdex is the first EOS based decentralized exchange in the world.',\n symbol: '',\n accounts: ['newdexpocket'],\n logo: 'https://bloks.io/img/dapps/newdex.png',\n website: 'https://newdex.io',\n app: 'https://newdex.io',\n telegram: '',\n medium: '',\n twitter: 'https://twitter.com/NewdexOfficial',\n github: '',\n chains: ['eos']\n}, {\n name: 'EOS Name Swaps',\n description: 'An open-source EOS account exchange that puts the security of its users first.',\n shortDescription: 'An open-source EOS account exchange that puts the security of its users first.',\n symbol: '',\n statistics: false,\n accounts: ['eosnameswaps'],\n logo: 'https://bloks.io/img/dapps/eosnameswaps.png',\n website: 'https://www.eosnameswaps.com/',\n app: 'https://www.eosnameswaps.com/',\n telegram: 'https://t.me/eosnameswaps',\n medium: '',\n twitter: 'https://twitter.com/Starry3017Night',\n github: 'https://github.com/StarryJapanNight/eosnameswaps',\n chains: ['eos']\n}];\n\nvar exchanges = {\n 'Bithumb': {\n 'name': 'Bithumb',\n 'description': '비트코인, 이더리움, 비트코인캐시, 리플, 라이트코인, 대시, 모네로, 비트코인골드, 이오스, 이더리움클래식, 퀀텀, 제트캐시, 실시간 시세, 쉽고 안전한 거래.',\n 'accounts': ['bithumbshiny'],\n 'logo': 'https://raw.githubusercontent.com/eoscafe/eos-dapps/master/logos/placeholder.png',\n 'website': 'https://www.bithumb.com/'\n },\n 'OKEx': {\n 'name': 'OKEx',\n 'description': 'OKEx is the leading global bitcoin exchange. Secured with bank-level SSL encryption and cold storage.',\n 'accounts': ['okexoffiline'],\n 'logo': 'https://raw.githubusercontent.com/eoscafe/eos-dapps/master/logos/placeholder.png',\n 'website': 'https://www.okex.com/'\n },\n 'Bitfinex': {\n 'name': 'Bitfinex',\n 'description': 'Bitfinex is a full-featured spot trading platform for major digital assets & cryptocurrencies, including Bitcoin, Ethereum, EOS, Litecoin, Ripple, NEO, Monero and many more.',\n 'accounts': ['bitfinexcw55', 'bitfinexcw13', 'bitfinexcw11', 'bitfinexcw24', 'bitfinexcw15', 'bitfinexcw32', 'bitfinexcw21', 'bitfinexcw31', 'bitfinexcw25', 'bitfinexcw23', 'bitfinexcw33', 'bitfinexcw22', 'bitfinexcw12', 'bitfinexcw14'],\n 'logo': 'https://raw.githubusercontent.com/eoscafe/eos-dapps/master/logos/placeholder.png',\n 'website': 'https://bitfinex.com/'\n },\n 'Gate.io': {\n 'name': 'Gate.io',\n 'description': 'Gate.io is a bitcoin exchange platform which supports BTC, LTC, Ethereum, Qtum and more blockchain assets trading.',\n 'accounts': ['gateiowallet'],\n 'logo': 'https://raw.githubusercontent.com/eoscafe/eos-dapps/master/logos/placeholder.png',\n 'website': 'https://www.gate.io/'\n },\n 'Kraken': {\n 'name': 'Kraken',\n 'description': 'Buy, sell and margin trade Bitcoin (BTC) and Etherum (ETH) in exchange with EUR, USD, CAD, GBP, and JPY.',\n 'accounts': ['krakenkraken'],\n 'logo': 'https://raw.githubusercontent.com/eoscafe/eos-dapps/master/logos/placeholder.png',\n 'website': 'https://www.kraken.com/'\n },\n 'Newdex': {\n 'name': 'Newdex',\n 'description': 'The first EOS based decentralized exchange in the world.',\n 'accounts': ['newdexpocket'],\n 'logo': '/img/exchanges/newdex.png',\n 'website': 'https://newdex.io/',\n linkGenerator: function linkGenerator(token, pair) {\n return \"https://newdex.io/trade/\" + token.account + \"-\" + pair.pair_base.toLowerCase() + \"-\" + pair.pair_quote.toLowerCase();\n }\n },\n 'DefiBox': {\n 'name': 'DefiBox',\n 'description': 'One-stop DeFi application platform on EOS..',\n 'accounts': ['token.defi', 'swap.defi'],\n 'logo': 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/token.defi-box.png',\n 'website': 'https://defibox.io/',\n linkGenerator: function linkGenerator(_, __) {\n return \"https://defibox.io/\";\n }\n },\n 'Chaince': {\n 'name': 'Chaince',\n 'description': 'A Superior Blockchain Asset Trading Platform Focusing on EOS Projects',\n 'accounts': ['chainceoneos'],\n 'logo': '/img/exchanges/chaince.png',\n 'website': 'https://chaince.com/',\n linkGenerator: function linkGenerator(_, pair) {\n return \"https://chaince.com/trade/\" + pair.pair_base.toLowerCase() + pair.pair_quote.toLowerCase();\n }\n },\n 'Dexeos': {\n 'name': 'Dexeos',\n 'description': 'The World\\'s First EOS-based Decentralized Exchange',\n 'accounts': ['dexeoswallet'],\n 'logo': '/img/exchanges/dexeos.svg',\n 'website': 'https://dexeos.io/',\n linkGenerator: function linkGenerator(_, pair) {\n return \"https://dexeos.io/trade/\" + pair.pair_base.toUpperCase();\n }\n },\n 'Hoo': {\n 'name': 'Hoo',\n 'description': 'One-stop blockchain asset service platform',\n 'accounts': ['hoo.com'],\n 'logo': '/img/exchanges/hoo.jpg',\n 'website': 'https://hoo.com/',\n linkGenerator: function linkGenerator(_, pair) {\n return \"https://hoo.com/trade/\" + pair.pair_base.toLowerCase() + \"-\" + pair.pair_quote.toLowerCase();\n }\n },\n 'Whaleex': {\n 'name': 'Whaleex',\n 'description': '#1 Decentralized Exchange in the World',\n 'accounts': ['whaleextrust'],\n 'logo': '/img/exchanges/whaleex.png',\n 'website': 'https://www.whaleex.com',\n linkGenerator: function linkGenerator(_, pair) {\n return \"https://www.whaleex.com/trade/\" + pair.pair_base + \"_\" + pair.pair_quote;\n }\n },\n 'Chainrift': {\n 'name': 'Chainrift',\n 'description': 'A marketplace for digital currencies',\n 'accounts': [],\n 'logo': '/img/exchanges/chainrift.png',\n 'website': 'https://www.chainrift.com/',\n linkGenerator: function linkGenerator(_, pair) {\n return \"https://www.chainrift.com/trading?coinpair=\" + pair.pair_base + \"/\" + pair.pair_quote;\n }\n },\n 'Eosdaq': {\n 'name': 'EOSDAQ',\n 'description': 'A Standard of On-Chain DEX',\n 'accounts': [],\n 'logo': '/img/exchanges/eosdaq.png',\n 'website': 'https://www.eosdaq.com/',\n linkGenerator: function linkGenerator(_, pair) {\n return \"https://eosdaq.com/exchange/\" + pair.pair_base + \"_\" + pair.pair_quote;\n }\n },\n 'BigONE': {\n 'name': 'BigONE',\n 'description': 'A Standard of On-Chain DEX',\n 'accounts': [],\n 'logo': '/img/exchanges/bigONE.jpg',\n 'website': 'https://big.one',\n linkGenerator: function linkGenerator(_, pair) {\n return \"https://big.one/trade/\" + pair.pair_base + \"-\" + pair.pair_quote;\n }\n },\n 'YOLO': {\n 'name': 'YOLO',\n 'description': 'Instant Token Swaps on EOS',\n 'accounts': [],\n 'logo': '/img/exchanges/yolo.png',\n 'website': 'https://yoloswap.com',\n linkGenerator: function linkGenerator(_, pair) {\n return \"https://yoloswap.com/swap/\" + pair.pair_quote.toLowerCase() + \"-\" + pair.pair_base.toLowerCase();\n }\n },\n 'Bancor': {\n 'name': 'Bancor',\n 'description': 'Instant Liquidity.',\n 'accounts': [],\n 'logo': '/img/exchanges/bancor.png',\n 'website': 'https://bancor.network',\n linkGenerator: function linkGenerator(_, pair) {\n return \"https://www.bancor.network/token/\" + pair.pair_base;\n }\n },\n 'Alcor': {\n 'name': 'Alcor',\n 'description': 'The first self-listing decentralized exchange',\n 'accounts': [],\n 'logo': '/img/exchanges/alcor.png',\n 'website': 'https://alcor.exchange',\n linkGenerator: function linkGenerator(_, __) {\n return \"https://www.alcor.exchange/markets\";\n }\n },\n 'Defis.Network': {\n 'name': 'Defis.Network',\n 'description': 'An open finance network that integrates a series of DeFi protocols',\n 'accounts': [],\n 'logo': '/img/exchanges/defis-uncache.png',\n 'website': 'https://defis.network',\n linkGenerator: function linkGenerator(_, __) {\n return \"https://apps.defis.network/\";\n }\n },\n 'DolphinSwap': {\n 'name': 'DolphinSwap',\n 'description': 'DolphinSwap',\n 'accounts': [],\n 'logo': '/img/exchanges/dolphinswap.png',\n 'website': 'https://dolphinswap.io/exchange',\n linkGenerator: function linkGenerator(_, __) {\n return 'https://dolphinswap.io/exchange';\n }\n },\n 'Proton': {\n 'name': 'ProtonSwap',\n 'description': 'ProtonSwap',\n 'accounts': [],\n 'logo': '/img/exchanges/protonswap.png',\n 'website': 'https://protonswap.com',\n linkGenerator: function linkGenerator(_, __) {\n return 'https://protonswap.com';\n }\n }\n};\n\nvar SCATTER_DESKTOP = 'ScatterSockets';\nvar SCATTER_DESKTOP_MANUAL = 'ScatterSocketsManual';\nvar SCATTER_EXTENSION = 'ScatterExtension';\nvar LEDGER = 'ledger';\nvar LEDGER_USB = 'TransportU2F';\nvar LEDGER_BLE = 'TransportWebBLE';\nvar LEDGER_WEBUSB = 'TransportWebusb';\nvar LEDGER_WEBHID = 'TransportWebHID';\nvar LYNX = 'lynx';\nvar PROTON = 'proton';\nvar ANCHOR = 'anchor';\nvar SIMPLEOS = 'simpleos';\nvar EOSAUTH = 'eosauth';\nvar CLEOS = 'cleos';\nvar EOSC = 'eosc';\nvar CLIO = 'clio';\nvar KEYCAT = 'keycat';\nvar TREZOR = 'trezor';\nvar SQRL = 'sqrl';\nvar WOMBAT = 'wombat';\nvar WAX_CLOUD_WALLET = 'WaxCW';\n\nvar historyTypesFeatures = {\n \"native\": {\n name: 'native',\n actionFilter: false,\n tokenFilter: false,\n dateFilter: false,\n contractActionFilter: false,\n total: 0\n },\n dfuse: {\n name: 'dfuse',\n actionFilter: true,\n tokenFilter: true,\n dateFilter: true,\n contractActionFilter: true,\n total: 4\n },\n hyperion: {\n name: 'hyperion',\n actionFilter: true,\n tokenFilter: true,\n dateFilter: true,\n contractActionFilter: true,\n total: 3\n }\n};\n\nvar _chainInfo;\n\nvar chainInfo = (_chainInfo = {\n local: {\n key: 'local',\n text: 'Local Testnet',\n value: 'https://local.bloks.io',\n image: '/img/chains/local.png',\n testnet: true\n }\n}, _chainInfo['proton-test'] = {\n key: 'proton-test',\n text: 'Proton Testnet',\n value: 'https://proton-test.bloks.io',\n image: '/img/chains/proton.png',\n testnet: true\n}, _chainInfo['wax-test'] = {\n key: 'wax-test',\n text: 'WAX Testnet',\n value: 'https://wax-test.bloks.io',\n image: '/img/chains/wax.png',\n testnet: true\n}, _chainInfo['telos-test'] = {\n key: 'telos-test',\n text: 'Telos Testnet',\n value: 'https://telos-test.bloks.io',\n image: '/img/chains/telos.png',\n testnet: true\n}, _chainInfo['fio-test'] = {\n key: 'fio-test',\n text: 'FIO Testnet',\n value: 'https://fio-test.bloks.io',\n image: '/img/chains/fio.png',\n testnet: true\n}, _chainInfo['bos-test'] = {\n key: 'bos-test',\n text: 'BOS Testnet',\n value: 'https://bos-test.bloks.io',\n image: '/img/chains/bos.png',\n testnet: true\n}, _chainInfo.jungle = {\n key: 'jungle',\n text: 'Jungle Testnet',\n value: 'https://jungle.bloks.io',\n image: '/img/chains/jungle.png',\n testnet: true\n}, _chainInfo.jungle3 = {\n key: 'jungle3',\n text: 'Jungle3 Testnet',\n value: 'https://jungle3.bloks.io',\n image: '/img/chains/jungle.png',\n testnet: true\n}, _chainInfo.kylin = {\n key: 'kylin',\n text: 'Kylin Testnet',\n value: 'https://kylin.bloks.io',\n image: '/img/chains/kylin.png',\n testnet: true\n}, _chainInfo.eos = {\n key: 'eos',\n text: 'EOS',\n value: 'https://bloks.io',\n image: '/img/chains/eos.png'\n}, _chainInfo.proton = {\n key: 'proton',\n text: 'Proton',\n value: 'https://proton.bloks.io',\n image: '/img/chains/proton.png'\n}, _chainInfo.wax = {\n key: 'wax',\n text: 'WAX',\n value: 'https://wax.bloks.io',\n image: '/img/chains/wax.png'\n}, _chainInfo.telos = {\n key: 'telos',\n text: 'Telos',\n value: 'https://telos.bloks.io',\n image: '/img/chains/telos.png'\n}, _chainInfo.fio = {\n key: 'fio',\n text: 'FIO',\n value: 'https://fio.bloks.io',\n image: '/img/chains/fio.png'\n}, _chainInfo.bos = {\n key: 'bos',\n text: 'BOS',\n value: 'https://bos.bloks.io',\n image: '/img/chains/bos.png'\n}, _chainInfo.xec = {\n key: 'xec',\n text: 'Europechain',\n value: 'https://xec.bloks.io',\n image: '/img/chains/xec.png'\n}, _chainInfo.coffe = {\n key: 'coffe',\n text: 'COFFE',\n value: 'https://coffe.bloks.io',\n image: '/img/chains/coffe.png'\n}, _chainInfo.remme = {\n key: 'remme',\n text: 'Remme',\n value: 'https://remme.bloks.io',\n image: '/img/chains/remme.svg'\n}, _chainInfo);\n\nvar getCommonConstants = function getCommonConstants(chain) {\n return {\n MAX_RPC_SYNC_SECONDS_BEHIND: 20,\n IMAGE_PROXY: 'https://www.api.bloks.io/image-proxy',\n WRAP_CONTRACT: 'proton.wrap',\n BLOKS_API: 'https://www.api.bloks.io',\n PROTON_API: 'https://api.protonchain.com',\n METAL_PROTON_ENDPOINT: chain === 'proton' ? 'https://api.protonchain.com' : 'https://api-dev.protonchain.com',\n SWAP_URL: chain === 'proton' ? 'https://otc.protonswap.com' : 'https://otc-test.protonswap.com',\n WRAP_SERVER_URL: chain === 'proton' ? 'https://www.api.bloks.io/proton-wrap-public' : 'https://www.api.bloks.io/proton-wrap-testnet-public'\n };\n};\n\nvar generateProviderEndpoints = function generateProviderEndpoints(chainId, actionEndpoints) {\n return [{\n chainId: chainId,\n port: 443,\n protocol: 'https',\n host: actionEndpoints[0].substr(8),\n httpEndpoint: actionEndpoints[0],\n blockchain: 'eos'\n }];\n};\n\nvar DEFAULT_ENDPOINTS = ['https://eos.greymass.com', 'https://eos.eoscafeblock.com', 'https://api.main.alohaeos.com', 'https://api.eossweden.org'];\nvar ACTIONS_ENDPOINTS = ['https://eos.greymass.com'];\nvar TRANSACTIONS_ENDPOINTS = ['https://eos.greymass.com', 'https://api.eossweden.org'];\nvar ALOHA_PROXY_URL = 'https://www.alohaeos.com/vote/proxy';\nvar API_URL = 'https://www.api.bloks.io';\nvar ATOMICASSETS_API = 'https://eos.api.atomicassets.io';\nvar BLOKS_PROXY = 'bloksioproxy';\nvar CHAIN = 'eos';\nvar CHAIN_ID = 'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906';\nvar CHAIN_START_DATE = /*#__PURE__*/new Date('2018-06-08');\nvar CORE_PRECISION = 4;\nvar CORE_SYMBOL = 'EOS';\nvar DISPLAY_CHAIN = 'EOS';\nvar DOMAIN_TITLE = 'EOS Bloks.io';\nvar HISTORY_TYPES = ['native', 'hyperion'];\nvar HYPERION_URL = 'https://eos.hyperion.eosrio.io';\nvar KEY_PREFIX = 'EOS';\nvar LIGHT_API = 'https://api.light.xeos.me';\nvar NFTS_ENABLED = true;\nvar PROVIDER_ENDPOINTS = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID, ACTIONS_ENDPOINTS);\nvar REX_ENABLED = true;\nvar SIMPLEASSETS_API = 'https://eos.api.simpleassets.io';\nvar SUPPORTS_FREE_CPU = true;\nvar SUPPORTS_RENTBW = true;\nvar VOTING_ENABLED = true;\nvar constants = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS,\n ALOHA_PROXY_URL: ALOHA_PROXY_URL,\n API_URL: API_URL,\n ATOMICASSETS_API: ATOMICASSETS_API,\n BLOKS_PROXY: BLOKS_PROXY,\n CHAIN: CHAIN,\n CHAIN_ID: CHAIN_ID,\n CHAIN_START_DATE: CHAIN_START_DATE,\n CORE_PRECISION: CORE_PRECISION,\n CORE_SYMBOL: CORE_SYMBOL,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS,\n DISPLAY_CHAIN: DISPLAY_CHAIN,\n DOMAIN_TITLE: DOMAIN_TITLE,\n HISTORY_TYPES: HISTORY_TYPES,\n HYPERION_URL: HYPERION_URL,\n KEY_PREFIX: KEY_PREFIX,\n LIGHT_API: LIGHT_API,\n NFTS_ENABLED: NFTS_ENABLED,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS,\n REX_ENABLED: REX_ENABLED,\n SIMPLEASSETS_API: SIMPLEASSETS_API,\n SUPPORTS_FREE_CPU: SUPPORTS_FREE_CPU,\n SUPPORTS_RENTBW: SUPPORTS_RENTBW,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS,\n VOTING_ENABLED: VOTING_ENABLED\n};\n\nvar DEFAULT_ENDPOINTS$1 = ['https://api.bossweden.org', 'https://api.boscore.io'];\nvar TRANSACTIONS_ENDPOINTS$1 = ['https://api.bossweden.org', 'https://api.boscore.io'];\nvar ACTIONS_ENDPOINTS$1 = ['https://api.bossweden.org', 'https://api.boscore.io'];\nvar ALOHA_PROXY_URL$1 = 'https://www.alohaeos.com/vote/proxy/bosmain';\nvar API_URL$1 = 'https://www.api.bloks.io/bos';\nvar BLOKS_PROXY$1 = 'blokspartner';\nvar CHAIN$1 = 'bos';\nvar CHAIN_ID$1 = 'd5a3d18fbb3c084e3b1f3fa98c21014b5f3db536cc15d08f9f6479517c6a3d86';\nvar CHAIN_START_DATE$1 = /*#__PURE__*/new Date('Dec 31, 2018');\nvar CORE_PRECISION$1 = 4;\nvar CORE_SYMBOL$1 = 'BOS';\nvar DISPLAY_CHAIN$1 = 'BOS';\nvar DOMAIN_TITLE$1 = 'BOS Bloks.io';\nvar HISTORY_TYPES$1 = ['native', 'hyperion'];\nvar HYPERION_URL$1 = 'https://api.bossweden.org';\nvar KEY_PREFIX$1 = 'EOS';\nvar LIGHT_API$1 = 'https://lightapi.eosamsterdam.net';\nvar PROVIDER_ENDPOINTS$1 = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$1, ACTIONS_ENDPOINTS$1);\nvar REX_ENABLED$1 = true;\nvar VOTING_ENABLED$1 = true;\nvar constants$1 = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$1,\n ALOHA_PROXY_URL: ALOHA_PROXY_URL$1,\n API_URL: API_URL$1,\n BLOKS_PROXY: BLOKS_PROXY$1,\n CHAIN: CHAIN$1,\n CHAIN_ID: CHAIN_ID$1,\n CHAIN_START_DATE: CHAIN_START_DATE$1,\n CORE_PRECISION: CORE_PRECISION$1,\n CORE_SYMBOL: CORE_SYMBOL$1,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$1,\n DISPLAY_CHAIN: DISPLAY_CHAIN$1,\n DOMAIN_TITLE: DOMAIN_TITLE$1,\n HISTORY_TYPES: HISTORY_TYPES$1,\n HYPERION_URL: HYPERION_URL$1,\n KEY_PREFIX: KEY_PREFIX$1,\n LIGHT_API: LIGHT_API$1,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$1,\n REX_ENABLED: REX_ENABLED$1,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$1,\n VOTING_ENABLED: VOTING_ENABLED$1\n};\n\nvar DEFAULT_ENDPOINTS$2 = ['https://wax.greymass.com', 'https://wax.eoscafeblock.com', 'https://api.waxsweden.org', 'https://chain.wax.io', 'https://wax.eosrio.io'];\nvar ACTIONS_ENDPOINTS$2 = ['https://wax.greymass.com', 'https://api.waxsweden.org', 'https://wax.eosrio.io', 'https://chain.wax.io'];\nvar TRANSACTIONS_ENDPOINTS$2 = ['https://wax.greymass.com', 'https://api.waxsweden.org', 'https://wax.eosrio.io', 'https://chain.wax.io'];\nvar ALOHA_PROXY_URL$2 = 'https://www.alohaeos.com/vote/proxy/waxmain';\nvar API_URL$2 = 'https://www.api.bloks.io/wax';\nvar ATOMICASSETS_API$1 = 'https://wax.api.atomicassets.io';\nvar BLOKS_PROXY$2 = 'bloksioproxy';\nvar CHAIN$2 = 'wax';\nvar CHAIN_ID$2 = '1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4';\nvar CHAIN_START_DATE$2 = /*#__PURE__*/new Date('2019-06-24');\nvar CORE_PRECISION$2 = 8;\nvar CORE_SYMBOL$2 = 'WAX';\nvar DISPLAY_CHAIN$2 = 'WAX';\nvar DOMAIN_TITLE$2 = 'WAX | Bloks.io';\nvar HISTORY_TYPES$2 = ['native', 'hyperion'];\nvar HYPERION_URL$2 = 'https://wax.eosrio.io';\nvar KEY_PREFIX$2 = 'EOS';\nvar LIGHT_API$2 = 'https://lightapi.eosamsterdam.net';\nvar NFTS_ENABLED$1 = true;\nvar PROVIDER_ENDPOINTS$2 = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$2, ACTIONS_ENDPOINTS$2);\nvar SIMPLEASSETS_API$1 = 'https://wax.api.simpleassets.io';\nvar VOTING_ENABLED$2 = true;\nvar constants$2 = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$2,\n ALOHA_PROXY_URL: ALOHA_PROXY_URL$2,\n API_URL: API_URL$2,\n ATOMICASSETS_API: ATOMICASSETS_API$1,\n BLOKS_PROXY: BLOKS_PROXY$2,\n CHAIN: CHAIN$2,\n CHAIN_ID: CHAIN_ID$2,\n CHAIN_START_DATE: CHAIN_START_DATE$2,\n CORE_PRECISION: CORE_PRECISION$2,\n CORE_SYMBOL: CORE_SYMBOL$2,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$2,\n DISPLAY_CHAIN: DISPLAY_CHAIN$2,\n DOMAIN_TITLE: DOMAIN_TITLE$2,\n HISTORY_TYPES: HISTORY_TYPES$2,\n HYPERION_URL: HYPERION_URL$2,\n KEY_PREFIX: KEY_PREFIX$2,\n LIGHT_API: LIGHT_API$2,\n NFTS_ENABLED: NFTS_ENABLED$1,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$2,\n SIMPLEASSETS_API: SIMPLEASSETS_API$1,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$2,\n VOTING_ENABLED: VOTING_ENABLED$2\n};\n\nvar DEFAULT_ENDPOINTS$3 = ['https://telos.greymass.com', 'https://telos.caleos.io', 'https://api.rpc.miami', 'https://telosapi.eosmetal.io', 'https://api.tlos.goodblock.io', 'https://mainnet.telosusa.io'];\nvar ACTIONS_ENDPOINTS$3 = ['https://telos.greymass.com', 'https://api.rpc.miami', 'https://telos.caleos.io', 'https://api.tlos.goodblock.io', 'https://telosapi.eosmetal.io'];\nvar TRANSACTIONS_ENDPOINTS$3 = ['https://telos.greymass.com', 'https://api.rpc.miami', 'https://telos.caleos.io', 'https://api.tlos.goodblock.io', 'https://telosapi.eosmetal.io'];\nvar ALOHA_PROXY_URL$3 = 'https://www.alohaeos.com/vote/proxy/tlosmain';\nvar API_URL$3 = 'https://www.api.bloks.io/telos';\nvar BLOKS_PROXY$3 = 'bloksioproxy';\nvar CHAIN$3 = 'telos';\nvar CHAIN_ID$3 = '4667b205c6838ef70ff7988f6e8257e8be0e1284a2f59699054a018f743b1d11';\nvar CHAIN_START_DATE$3 = /*#__PURE__*/new Date('2018-12-12');\nvar CORE_PRECISION$3 = 4;\nvar CORE_SYMBOL$3 = 'TLOS';\nvar DISPLAY_CHAIN$3 = 'Telos';\nvar DOMAIN_TITLE$3 = 'Telos Bloks.io';\nvar HISTORY_TYPES$3 = ['hyperion', 'native'];\nvar HYPERION_URL$3 = 'https://telos.caleos.io';\nvar KEY_PREFIX$3 = 'EOS';\nvar LIGHT_API$3 = 'https://api.light.xeos.me';\nvar NFTS_ENABLED$2 = true;\nvar PROVIDER_ENDPOINTS$3 = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$3, ACTIONS_ENDPOINTS$3);\nvar REX_ENABLED$2 = true;\nvar VOTING_ENABLED$3 = true;\nvar constants$3 = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$3,\n ALOHA_PROXY_URL: ALOHA_PROXY_URL$3,\n API_URL: API_URL$3,\n BLOKS_PROXY: BLOKS_PROXY$3,\n CHAIN: CHAIN$3,\n CHAIN_ID: CHAIN_ID$3,\n CHAIN_START_DATE: CHAIN_START_DATE$3,\n CORE_PRECISION: CORE_PRECISION$3,\n CORE_SYMBOL: CORE_SYMBOL$3,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$3,\n DISPLAY_CHAIN: DISPLAY_CHAIN$3,\n DOMAIN_TITLE: DOMAIN_TITLE$3,\n HISTORY_TYPES: HISTORY_TYPES$3,\n HYPERION_URL: HYPERION_URL$3,\n KEY_PREFIX: KEY_PREFIX$3,\n LIGHT_API: LIGHT_API$3,\n NFTS_ENABLED: NFTS_ENABLED$2,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$3,\n REX_ENABLED: REX_ENABLED$2,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$3,\n VOTING_ENABLED: VOTING_ENABLED$3\n};\n\nvar DEFAULT_ENDPOINTS$4 = ['https://proton.cryptolions.io', 'https://proton.eosusa.news'];\nvar TRANSACTIONS_ENDPOINTS$4 = ['https://proton.greymass.com', 'https://proton.cryptolions.io', 'https://proton.eosusa.news'];\nvar ACTIONS_ENDPOINTS$4 = ['https://proton.greymass.com', 'https://proton.cryptolions.io', 'https://proton.eosusa.news'];\nvar API_URL$4 = 'https://www.api.bloks.io/proton';\nvar ATOMICASSETS_API$2 = 'https://proton.api.atomicassets.io';\nvar CHAIN$4 = 'proton';\nvar CHAIN_ID$4 = '384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0';\nvar CHAIN_START_DATE$4 = /*#__PURE__*/new Date('Apr 22, 2020');\nvar CORE_PRECISION$4 = 4;\nvar CORE_SYMBOL$4 = 'XPR';\nvar DISPLAY_CHAIN$4 = 'Proton';\nvar DOMAIN_TITLE$4 = 'Proton Bloks.io';\nvar HISTORY_TYPES$4 = ['native', 'hyperion'];\nvar HYPERION_URL$4 = 'https://proton.pink.gg';\nvar KEY_PREFIX$4 = 'EOS';\nvar LIGHT_API$4 = 'https://lightapi.eosamsterdam.net';\nvar MAX_VOTES = 4;\nvar NFTS_ENABLED$3 = true;\nvar PROVIDER_ENDPOINTS$4 = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$4, ACTIONS_ENDPOINTS$4);\nvar VOTING_ENABLED$4 = true;\nvar constants$4 = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$4,\n API_URL: API_URL$4,\n ATOMICASSETS_API: ATOMICASSETS_API$2,\n CHAIN: CHAIN$4,\n CHAIN_ID: CHAIN_ID$4,\n CHAIN_START_DATE: CHAIN_START_DATE$4,\n CORE_PRECISION: CORE_PRECISION$4,\n CORE_SYMBOL: CORE_SYMBOL$4,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$4,\n DISPLAY_CHAIN: DISPLAY_CHAIN$4,\n DOMAIN_TITLE: DOMAIN_TITLE$4,\n HISTORY_TYPES: HISTORY_TYPES$4,\n HYPERION_URL: HYPERION_URL$4,\n KEY_PREFIX: KEY_PREFIX$4,\n LIGHT_API: LIGHT_API$4,\n MAX_VOTES: MAX_VOTES,\n NFTS_ENABLED: NFTS_ENABLED$3,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$4,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$4,\n VOTING_ENABLED: VOTING_ENABLED$4\n};\n\nvar DEFAULT_ENDPOINTS$5 = ['https://api.europechain.io', 'https://api.xec.cryptolions.io', 'https://xec.eosdublin.io', 'https://europe.rpc.barcelona'];\nvar ACTIONS_ENDPOINTS$5 = ['https://api.europechain.io'];\nvar TRANSACTIONS_ENDPOINTS$5 = ['https://api.europechain.io'];\nvar API_URL$5 = 'https://www.api.bloks.io/xec';\nvar CHAIN$5 = 'xec';\nvar CHAIN_ID$5 = 'f778f7d2f124b110e0a71245b310c1d0ac1a0edd21f131c5ecb2e2bc03e8fe2e';\nvar CHAIN_START_DATE$5 = /*#__PURE__*/new Date('Jul 08, 2019');\nvar CORE_PRECISION$5 = 4;\nvar CORE_SYMBOL$5 = 'XEC';\nvar DISPLAY_CHAIN$5 = 'XEC';\nvar DOMAIN_TITLE$5 = 'XEC Bloks.io';\nvar HISTORY_TYPES$5 = ['hyperion'];\nvar HYPERION_URL$5 = 'https://history.europechain.io';\nvar KEY_PREFIX$5 = 'EOS';\nvar LIGHT_API$5 = 'https://lightapi.eosamsterdam.net';\nvar PROVIDER_ENDPOINTS$5 = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$5, ACTIONS_ENDPOINTS$5);\nvar VOTING_ENABLED$5 = true;\nvar constants$5 = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$5,\n API_URL: API_URL$5,\n CHAIN: CHAIN$5,\n CHAIN_ID: CHAIN_ID$5,\n CHAIN_START_DATE: CHAIN_START_DATE$5,\n CORE_PRECISION: CORE_PRECISION$5,\n CORE_SYMBOL: CORE_SYMBOL$5,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$5,\n DISPLAY_CHAIN: DISPLAY_CHAIN$5,\n DOMAIN_TITLE: DOMAIN_TITLE$5,\n HISTORY_TYPES: HISTORY_TYPES$5,\n HYPERION_URL: HYPERION_URL$5,\n KEY_PREFIX: KEY_PREFIX$5,\n LIGHT_API: LIGHT_API$5,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$5,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$5,\n VOTING_ENABLED: VOTING_ENABLED$5\n};\n\nvar DEFAULT_ENDPOINTS$6 = ['https://remchain.remme.io'];\nvar ACTIONS_ENDPOINTS$6 = ['https://remchain.remme.io'];\nvar TRANSACTIONS_ENDPOINTS$6 = ['https://remchain.remme.io'];\nvar API_URL$6 = 'https://www.api.bloks.io/remme';\nvar CHAIN$6 = 'remme';\nvar CHAIN_ID$6 = '9f485317b61a19e956c822866cc57a64bbed2196e1cf178e80f847a139a20916';\nvar CHAIN_START_DATE$6 = /*#__PURE__*/new Date('2019-12-17');\nvar CORE_PRECISION$6 = 4;\nvar CORE_SYMBOL$6 = 'REM';\nvar DISPLAY_CHAIN$6 = 'Remme';\nvar DOMAIN_TITLE$6 = 'Remme Bloks.io';\nvar HISTORY_TYPES$6 = ['native'];\nvar KEY_PREFIX$6 = 'EOS';\nvar PROVIDER_ENDPOINTS$6 = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$6, ACTIONS_ENDPOINTS$6);\nvar SYSTEM_DOMAIN = 'rem';\nvar VOTING_ENABLED$6 = true;\nvar constants$6 = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$6,\n API_URL: API_URL$6,\n CHAIN: CHAIN$6,\n CHAIN_ID: CHAIN_ID$6,\n CHAIN_START_DATE: CHAIN_START_DATE$6,\n CORE_PRECISION: CORE_PRECISION$6,\n CORE_SYMBOL: CORE_SYMBOL$6,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$6,\n DISPLAY_CHAIN: DISPLAY_CHAIN$6,\n DOMAIN_TITLE: DOMAIN_TITLE$6,\n HISTORY_TYPES: HISTORY_TYPES$6,\n KEY_PREFIX: KEY_PREFIX$6,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$6,\n SYSTEM_DOMAIN: SYSTEM_DOMAIN,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$6,\n VOTING_ENABLED: VOTING_ENABLED$6\n};\n\nvar DEFAULT_ENDPOINTS$7 = ['https://coffe.io:8888', 'https://blockproducer.info', 'https://coffe-bar.fun', 'https://seva455.ru', 'https://vorovskiy.info', 'https://vorovskiy2.info', 'https://vorovskiy3.info'];\nvar ACTIONS_ENDPOINTS$7 = ['https://coffe.io:8888', 'https://blockproducer.info', 'https://coffe-bar.fun', 'https://seva455.ru', 'https://vorovskiy.info', 'https://vorovskiy2.info', 'https://vorovskiy3.info'];\nvar TRANSACTIONS_ENDPOINTS$7 = ['https://coffe.io:8888', 'https://blockproducer.info', 'https://coffe-bar.fun', 'https://seva455.ru', 'https://vorovskiy.info', 'https://vorovskiy2.info', 'https://vorovskiy3.info'];\nvar API_URL$7 = 'https://www.api.bloks.io/coffe';\nvar BLOKS_PROXY$4 = 'bloksioproxy';\nvar CHAIN$7 = 'coffe';\nvar CHAIN_ID$7 = '1ca925bc8fbc1cec262dedd10fd19d9357a1cc8de0bd92e5b61577740af9a3f2';\nvar CHAIN_START_DATE$7 = /*#__PURE__*/new Date('2019-11-06');\nvar CORE_PRECISION$7 = 4;\nvar CORE_SYMBOL$7 = 'CFF';\nvar DISPLAY_CHAIN$7 = 'CFF';\nvar DOMAIN_TITLE$7 = 'Coffe Bloks.io';\nvar HISTORY_TYPES$7 = ['hyperion'];\nvar HYPERION_URL$6 = 'https://hyperion.coffe.io';\nvar KEY_PREFIX$7 = 'EOS';\nvar LIGHT_API$6 = 'https://hyperion.coffe.io'; // https://coffe.io:5001'\n\nvar PROVIDER_ENDPOINTS$7 = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$7, ACTIONS_ENDPOINTS$7);\nvar REX_ENABLED$3 = true;\nvar VOTING_ENABLED$7 = true;\nvar constants$7 = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$7,\n API_URL: API_URL$7,\n BLOKS_PROXY: BLOKS_PROXY$4,\n CHAIN: CHAIN$7,\n CHAIN_ID: CHAIN_ID$7,\n CHAIN_START_DATE: CHAIN_START_DATE$7,\n CORE_PRECISION: CORE_PRECISION$7,\n CORE_SYMBOL: CORE_SYMBOL$7,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$7,\n DISPLAY_CHAIN: DISPLAY_CHAIN$7,\n DOMAIN_TITLE: DOMAIN_TITLE$7,\n HISTORY_TYPES: HISTORY_TYPES$7,\n HYPERION_URL: HYPERION_URL$6,\n KEY_PREFIX: KEY_PREFIX$7,\n LIGHT_API: LIGHT_API$6,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$7,\n REX_ENABLED: REX_ENABLED$3,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$7,\n VOTING_ENABLED: VOTING_ENABLED$7\n};\n\nvar DEFAULT_ENDPOINTS$8 = ['https://fio.greymass.com', 'https://fio.eossweden.org', 'https://fio.eosusa.news'];\nvar TRANSACTIONS_ENDPOINTS$8 = ['https://fio.greymass.com', 'https://fio.eossweden.org', 'https://fio.eosusa.news'];\nvar ACTIONS_ENDPOINTS$8 = ['https://fio.greymass.com', 'https://fio.eossweden.org', 'https://fio.eosusa.news'];\nvar ALOHA_PROXY_URL$4 = 'https://www.alohaeos.com/vote/proxy/fiomain';\nvar API_URL$8 = 'https://www.api.bloks.io/fio';\nvar CHAIN$8 = 'fio';\nvar CHAIN_ID$8 = '21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c';\nvar CHAIN_START_DATE$8 = /*#__PURE__*/new Date('Mar 24, 2020');\nvar CORE_PRECISION$8 = 9;\nvar CORE_SYMBOL$8 = 'FIO';\nvar DISABLE_MEMO = true;\nvar DISPLAY_CHAIN$8 = 'FIO';\nvar DOMAIN_TITLE$8 = 'FIO Bloks.io';\nvar FIO_FEES_ACCOUNT = 'fees@bloks';\nvar HISTORY_TYPES$8 = ['native', 'hyperion'];\nvar HYPERION_URL$7 = 'https://fio.eossweden.org';\nvar KEY_PREFIX$8 = 'FIO';\nvar PROVIDER_ENDPOINTS$8 = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$8, ACTIONS_ENDPOINTS$8);\nvar VOTING_ENABLED$8 = true;\nvar constants$8 = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$8,\n ALOHA_PROXY_URL: ALOHA_PROXY_URL$4,\n API_URL: API_URL$8,\n CHAIN: CHAIN$8,\n CHAIN_ID: CHAIN_ID$8,\n CHAIN_START_DATE: CHAIN_START_DATE$8,\n CORE_PRECISION: CORE_PRECISION$8,\n CORE_SYMBOL: CORE_SYMBOL$8,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$8,\n DISABLE_MEMO: DISABLE_MEMO,\n DISPLAY_CHAIN: DISPLAY_CHAIN$8,\n DOMAIN_TITLE: DOMAIN_TITLE$8,\n FIO_FEES_ACCOUNT: FIO_FEES_ACCOUNT,\n HISTORY_TYPES: HISTORY_TYPES$8,\n HYPERION_URL: HYPERION_URL$7,\n KEY_PREFIX: KEY_PREFIX$8,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$8,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$8,\n VOTING_ENABLED: VOTING_ENABLED$8\n};\n\nvar DEFAULT_ENDPOINTS$9 = [];\nvar ACTIONS_ENDPOINTS$9 = [];\nvar TRANSACTIONS_ENDPOINTS$9 = [];\nvar API_URL$9 = '';\nvar CHAIN$9 = 'local';\nvar CHAIN_ID$9 = '';\nvar CHAIN_START_DATE$9 = undefined;\nvar CORE_PRECISION$9 = 4;\nvar CORE_SYMBOL$9 = 'EOS';\nvar DISPLAY_CHAIN$9 = 'Local';\nvar DOMAIN_TITLE$9 = 'Local Bloks.io';\nvar HISTORY_TYPES$9 = ['native'];\nvar KEY_PREFIX$9 = 'EOS';\nvar PROVIDER_ENDPOINTS$9 = [];\nvar VOTING_ENABLED$9 = true;\nvar constants$9 = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$9,\n API_URL: API_URL$9,\n CHAIN: CHAIN$9,\n CHAIN_ID: CHAIN_ID$9,\n CHAIN_START_DATE: CHAIN_START_DATE$9,\n CORE_PRECISION: CORE_PRECISION$9,\n CORE_SYMBOL: CORE_SYMBOL$9,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$9,\n DISPLAY_CHAIN: DISPLAY_CHAIN$9,\n DOMAIN_TITLE: DOMAIN_TITLE$9,\n HISTORY_TYPES: HISTORY_TYPES$9,\n KEY_PREFIX: KEY_PREFIX$9,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$9,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$9,\n VOTING_ENABLED: VOTING_ENABLED$9\n};\n\nvar DEFAULT_ENDPOINTS$a = [// 'https://jungleapi.eossweden.org',\n'https://api.jungle.alohaeos.com', 'https://jungle2.cryptolions.io', 'https://jungle.eosphere.io', 'https://eos-jungle.eosblocksmith.io'];\nvar ACTIONS_ENDPOINTS$a = ['https://jungle.eossweden.org'];\nvar TRANSACTIONS_ENDPOINTS$a = ['https://jungle.eossweden.org'];\nvar API_URL$a = 'https://www.api.bloks.io/jungle';\nvar BLOKS_PROXY$5 = 'blokspartner';\nvar CHAIN$a = 'jungle';\nvar CHAIN_ID$a = 'e70aaab8997e1dfce58fbfac80cbbb8fecec7b99cf982a9444273cbc64c41473';\nvar CHAIN_START_DATE$a = /*#__PURE__*/new Date('Nov 23, 2018');\nvar CORE_PRECISION$a = 4;\nvar CORE_SYMBOL$a = 'EOS';\nvar DISPLAY_CHAIN$a = 'Jungle';\nvar DOMAIN_TITLE$a = 'Jungle Bloks.io';\nvar HISTORY_TYPES$a = ['hyperion', 'native'];\nvar HYPERION_URL$8 = 'https://jungle2.cryptolions.io';\nvar KEY_PREFIX$a = 'EOS';\nvar LIGHT_API$7 = 'https://lightapi.eosgeneva.io';\nvar NFTS_ENABLED$4 = true;\nvar PROVIDER_ENDPOINTS$a = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$a, ACTIONS_ENDPOINTS$a);\nvar REX_ENABLED$4 = true;\nvar VOTING_ENABLED$a = true;\nvar constants$a = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$a,\n API_URL: API_URL$a,\n BLOKS_PROXY: BLOKS_PROXY$5,\n CHAIN: CHAIN$a,\n CHAIN_ID: CHAIN_ID$a,\n CHAIN_START_DATE: CHAIN_START_DATE$a,\n CORE_PRECISION: CORE_PRECISION$a,\n CORE_SYMBOL: CORE_SYMBOL$a,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$a,\n DISPLAY_CHAIN: DISPLAY_CHAIN$a,\n DOMAIN_TITLE: DOMAIN_TITLE$a,\n HISTORY_TYPES: HISTORY_TYPES$a,\n HYPERION_URL: HYPERION_URL$8,\n KEY_PREFIX: KEY_PREFIX$a,\n LIGHT_API: LIGHT_API$7,\n NFTS_ENABLED: NFTS_ENABLED$4,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$a,\n REX_ENABLED: REX_ENABLED$4,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$a,\n VOTING_ENABLED: VOTING_ENABLED$a\n};\n\nvar DEFAULT_ENDPOINTS$b = ['https://api.jungle3.alohaeos.com', 'https://jungle3.eosusa.news'];\nvar ACTIONS_ENDPOINTS$b = ['https://jungle3history.cryptolions.io', 'https://jungle3.eosusa.news'];\nvar TRANSACTIONS_ENDPOINTS$b = ['https://jungle3history.cryptolions.io', 'https://jungle3.eosusa.news'];\nvar API_URL$b = 'https://www.api.bloks.io/jungle3';\nvar CHAIN$b = 'jungle3';\nvar CHAIN_ID$b = '2a02a0053e5a8cf73a56ba0fda11e4d92e0238a4a2aa74fccf46d5a910746840';\nvar CHAIN_START_DATE$b = /*#__PURE__*/new Date('Feb 19, 2020');\nvar CORE_PRECISION$b = 4;\nvar CORE_SYMBOL$b = 'EOS';\nvar DISPLAY_CHAIN$b = 'Jungle 3';\nvar DOMAIN_TITLE$b = 'Jungle 3 Bloks.io';\nvar HISTORY_TYPES$b = ['hyperion'];\nvar HYPERION_URL$9 = 'https://jungle.cryptolions.io';\nvar KEY_PREFIX$b = 'EOS';\nvar PROVIDER_ENDPOINTS$b = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$b, ACTIONS_ENDPOINTS$b);\nvar REX_ENABLED$5 = true;\nvar SUPPORTS_RENTBW$1 = true;\nvar VOTING_ENABLED$b = true;\nvar constants$b = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$b,\n API_URL: API_URL$b,\n CHAIN: CHAIN$b,\n CHAIN_ID: CHAIN_ID$b,\n CHAIN_START_DATE: CHAIN_START_DATE$b,\n CORE_PRECISION: CORE_PRECISION$b,\n CORE_SYMBOL: CORE_SYMBOL$b,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$b,\n DISPLAY_CHAIN: DISPLAY_CHAIN$b,\n DOMAIN_TITLE: DOMAIN_TITLE$b,\n HISTORY_TYPES: HISTORY_TYPES$b,\n HYPERION_URL: HYPERION_URL$9,\n KEY_PREFIX: KEY_PREFIX$b,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$b,\n REX_ENABLED: REX_ENABLED$5,\n SUPPORTS_RENTBW: SUPPORTS_RENTBW$1,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$b,\n VOTING_ENABLED: VOTING_ENABLED$b\n};\n\nvar DEFAULT_ENDPOINTS$c = ['https://kylin.eosn.io'];\nvar ACTIONS_ENDPOINTS$c = ['https://kylin.eosn.io'];\nvar TRANSACTIONS_ENDPOINTS$c = ['https://kylin.eosn.io'];\nvar API_URL$c = 'https://www.api.bloks.io/kylin';\nvar BLOKS_PROXY$6 = 'blokspartner';\nvar CHAIN$c = 'kylin';\nvar CHAIN_ID$c = '5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191';\nvar CHAIN_START_DATE$c = /*#__PURE__*/new Date('Jul 10, 2018');\nvar CORE_PRECISION$c = 4;\nvar CORE_SYMBOL$c = 'EOS';\nvar DISPLAY_CHAIN$c = 'Kylin';\nvar DOMAIN_TITLE$c = 'Kylin Bloks.io';\nvar HISTORY_TYPES$c = ['dfuse', 'hyperion', 'native'];\nvar HYPERION_URL$a = 'https://kylin.eossweden.org';\nvar KEY_PREFIX$c = 'EOS';\nvar PROVIDER_ENDPOINTS$c = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$c, ACTIONS_ENDPOINTS$c);\nvar VOTING_ENABLED$c = true;\nvar constants$c = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$c,\n API_URL: API_URL$c,\n BLOKS_PROXY: BLOKS_PROXY$6,\n CHAIN: CHAIN$c,\n CHAIN_ID: CHAIN_ID$c,\n CHAIN_START_DATE: CHAIN_START_DATE$c,\n CORE_PRECISION: CORE_PRECISION$c,\n CORE_SYMBOL: CORE_SYMBOL$c,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$c,\n DISPLAY_CHAIN: DISPLAY_CHAIN$c,\n DOMAIN_TITLE: DOMAIN_TITLE$c,\n HISTORY_TYPES: HISTORY_TYPES$c,\n HYPERION_URL: HYPERION_URL$a,\n KEY_PREFIX: KEY_PREFIX$c,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$c,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$c,\n VOTING_ENABLED: VOTING_ENABLED$c\n};\n\nvar DEFAULT_ENDPOINTS$d = ['https://www.api.bloks.io/eos-test-node'];\nvar ACTIONS_ENDPOINTS$d = ['https://www.api.bloks.io/eos-test-node'];\nvar TRANSACTIONS_ENDPOINTS$d = ['https://www.api.bloks.io/eos-test-node'];\nvar API_URL$d = 'https://www.api.bloks.io/eos-test';\nvar CHAIN$d = 'eos-test';\nvar CHAIN_ID$d = '0db13ab9b321c37c0ba8481cb4681c2788b622c3abfd1f12f0e5353d44ba6e72';\nvar CHAIN_START_DATE$d = /*#__PURE__*/new Date('2020-01-14');\nvar CORE_PRECISION$d = 4;\nvar CORE_SYMBOL$d = 'TNT';\nvar DISPLAY_CHAIN$d = 'EOSIO Test';\nvar DOMAIN_TITLE$d = 'Bloks.io';\nvar HISTORY_TYPES$d = ['native'];\nvar KEY_PREFIX$d = 'EOS';\nvar PROVIDER_ENDPOINTS$d = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$d, ACTIONS_ENDPOINTS$d);\nvar constants$d = {\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$d,\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$d,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$d,\n API_URL: API_URL$d,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$d,\n CORE_SYMBOL: CORE_SYMBOL$d,\n CHAIN: CHAIN$d,\n DISPLAY_CHAIN: DISPLAY_CHAIN$d,\n HISTORY_TYPES: HISTORY_TYPES$d,\n CHAIN_ID: CHAIN_ID$d,\n DOMAIN_TITLE: DOMAIN_TITLE$d,\n CHAIN_START_DATE: CHAIN_START_DATE$d,\n KEY_PREFIX: KEY_PREFIX$d,\n CORE_PRECISION: CORE_PRECISION$d\n};\n\nvar DEFAULT_ENDPOINTS$e = ['https://bostest.eosn.io', 'https://api-bostest.blockzone.net', 'https://bos-test.eospacex.com'];\nvar TRANSACTIONS_ENDPOINTS$e = ['https://api-bostest.blockzone.net', 'https://bos-test.eospacex.com'];\nvar ACTIONS_ENDPOINTS$e = ['https://api-bostest.blockzone.net', 'https://bos-test.eospacex.com'];\nvar API_URL$e = 'https://www.api.bloks.io/bos-test';\nvar BLOKS_PROXY$7 = 'blokspartner';\nvar CHAIN$e = 'bos-test';\nvar CHAIN_ID$e = '33cc2426f1b258ef8c798c34c0360b31732ea27a2d7e35a65797850a86d1ba85';\nvar CHAIN_START_DATE$e = /*#__PURE__*/new Date('Dec 13, 2018');\nvar CORE_PRECISION$e = 4;\nvar CORE_SYMBOL$e = 'BOS';\nvar DISPLAY_CHAIN$e = 'BOS Test';\nvar DOMAIN_TITLE$e = 'BOS Testnet Bloks.io';\nvar HISTORY_TYPES$e = ['hyperion'];\nvar HYPERION_URL$b = 'https://api-bostest.blockzone.net';\nvar KEY_PREFIX$e = 'EOS';\nvar PROVIDER_ENDPOINTS$e = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$e, ACTIONS_ENDPOINTS$e);\nvar VOTING_ENABLED$d = true;\nvar constants$e = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$e,\n API_URL: API_URL$e,\n BLOKS_PROXY: BLOKS_PROXY$7,\n CHAIN: CHAIN$e,\n CHAIN_ID: CHAIN_ID$e,\n CHAIN_START_DATE: CHAIN_START_DATE$e,\n CORE_PRECISION: CORE_PRECISION$e,\n CORE_SYMBOL: CORE_SYMBOL$e,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$e,\n DISPLAY_CHAIN: DISPLAY_CHAIN$e,\n DOMAIN_TITLE: DOMAIN_TITLE$e,\n HISTORY_TYPES: HISTORY_TYPES$e,\n HYPERION_URL: HYPERION_URL$b,\n KEY_PREFIX: KEY_PREFIX$e,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$e,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$e,\n VOTING_ENABLED: VOTING_ENABLED$d\n};\n\nvar DEFAULT_ENDPOINTS$f = ['https://testnet.telos.caleos.io', 'https://testnet.telosusa.io'];\nvar TRANSACTIONS_ENDPOINTS$f = ['https://testnet.telos.caleos.io', 'https://testnet.telosusa.io'];\nvar ACTIONS_ENDPOINTS$f = ['https://testnet.telos.caleos.io', 'https://testnet.telosusa.io'];\nvar API_URL$f = 'https://www.api.bloks.io/telos-test';\nvar CHAIN$f = 'telos-test';\nvar CHAIN_ID$f = '1eaa0824707c8c16bd25145493bf062aecddfeb56c736f6ba6397f3195f33c9f';\nvar CHAIN_START_DATE$f = /*#__PURE__*/new Date('Dec 08, 2018');\nvar CORE_PRECISION$f = 4;\nvar CORE_SYMBOL$f = 'TLOS';\nvar DISPLAY_CHAIN$f = 'Telos Test';\nvar DOMAIN_TITLE$f = 'Telos Testnet Bloks.io';\nvar HISTORY_TYPES$f = ['hyperion', 'native'];\nvar HYPERION_URL$c = 'https://testnet.telos.caleos.io';\nvar KEY_PREFIX$f = 'EOS';\nvar PROVIDER_ENDPOINTS$f = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$f, ACTIONS_ENDPOINTS$f);\nvar VOTING_ENABLED$e = true;\nvar constants$f = {\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$f,\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$f,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$f,\n API_URL: API_URL$f,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$f,\n CORE_SYMBOL: CORE_SYMBOL$f,\n CHAIN: CHAIN$f,\n DISPLAY_CHAIN: DISPLAY_CHAIN$f,\n HISTORY_TYPES: HISTORY_TYPES$f,\n HYPERION_URL: HYPERION_URL$c,\n CHAIN_ID: CHAIN_ID$f,\n DOMAIN_TITLE: DOMAIN_TITLE$f,\n CHAIN_START_DATE: CHAIN_START_DATE$f,\n KEY_PREFIX: KEY_PREFIX$f,\n VOTING_ENABLED: VOTING_ENABLED$e,\n CORE_PRECISION: CORE_PRECISION$f\n};\n\nvar DEFAULT_ENDPOINTS$g = ['https://proton-testnet.eoscafeblock.com', 'https://protontestnet.greymass.com', 'https://testnet.protonchain.com', 'https://test.proton.eosusa.news'];\nvar TRANSACTIONS_ENDPOINTS$g = ['https://protontestnet.greymass.com', 'https://testnet.protonchain.com', 'https://test.proton.eosusa.news'];\nvar ACTIONS_ENDPOINTS$g = ['https://protontestnet.greymass.com', 'https://testnet.protonchain.com', 'https://test.proton.eosusa.news'];\nvar API_URL$g = 'https://www.api.bloks.io/proton-test';\nvar ATOMICASSETS_API$3 = 'https://test.proton.api.atomicassets.io';\nvar CHAIN$g = 'proton-test';\nvar CHAIN_ID$g = '71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd';\nvar CHAIN_START_DATE$g = /*#__PURE__*/new Date('April 3, 2020');\nvar CORE_PRECISION$g = 4;\nvar CORE_SYMBOL$g = 'XPR';\nvar DISPLAY_CHAIN$g = 'Proton-T';\nvar DOMAIN_TITLE$g = 'Proton Testnet Bloks.io';\nvar HISTORY_TYPES$g = ['hyperion', 'native'];\nvar HYPERION_URL$d = 'https://testnet.proton.pink.gg';\nvar KEY_PREFIX$g = 'EOS';\nvar MAX_VOTES$1 = 4;\nvar PROVIDER_ENDPOINTS$g = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$g, ACTIONS_ENDPOINTS$g);\nvar VOTING_ENABLED$f = true;\nvar constants$g = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$g,\n API_URL: API_URL$g,\n ATOMICASSETS_API: ATOMICASSETS_API$3,\n CHAIN: CHAIN$g,\n CHAIN_ID: CHAIN_ID$g,\n CHAIN_START_DATE: CHAIN_START_DATE$g,\n CORE_PRECISION: CORE_PRECISION$g,\n CORE_SYMBOL: CORE_SYMBOL$g,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$g,\n DISPLAY_CHAIN: DISPLAY_CHAIN$g,\n DOMAIN_TITLE: DOMAIN_TITLE$g,\n HISTORY_TYPES: HISTORY_TYPES$g,\n HYPERION_URL: HYPERION_URL$d,\n KEY_PREFIX: KEY_PREFIX$g,\n MAX_VOTES: MAX_VOTES$1,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$g,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$g,\n VOTING_ENABLED: VOTING_ENABLED$f\n};\n\nvar DEFAULT_ENDPOINTS$h = ['https://testnet.waxsweden.org'];\nvar TRANSACTIONS_ENDPOINTS$h = ['https://testnet.waxsweden.org'];\nvar ACTIONS_ENDPOINTS$h = ['https://testnet.waxsweden.org'];\nvar API_URL$h = 'https://www.api.bloks.io/wax-test';\nvar ATOMICASSETS_API$4 = 'https://test.wax.api.atomicassets.io';\nvar CHAIN$h = 'wax-test';\nvar CHAIN_ID$h = 'f16b1833c747c43682f4386fca9cbb327929334a762755ebec17f6f23c9b8a12';\nvar CHAIN_START_DATE$h = /*#__PURE__*/new Date('Dec 5, 2019');\nvar CORE_PRECISION$h = 8;\nvar CORE_SYMBOL$h = 'WAX';\nvar DISPLAY_CHAIN$h = 'WAX-T';\nvar DOMAIN_TITLE$h = 'WAX Testnet Bloks.io';\nvar HISTORY_TYPES$h = ['native', 'hyperion'];\nvar HYPERION_URL$e = 'https://testnet.waxsweden.org';\nvar KEY_PREFIX$h = 'EOS';\nvar LIGHT_API$8 = 'https://testnet-lightapi.eosams.xeos.me';\nvar PROVIDER_ENDPOINTS$h = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$h, ACTIONS_ENDPOINTS$h);\nvar constants$h = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$h,\n API_URL: API_URL$h,\n ATOMICASSETS_API: ATOMICASSETS_API$4,\n CHAIN: CHAIN$h,\n CHAIN_ID: CHAIN_ID$h,\n CHAIN_START_DATE: CHAIN_START_DATE$h,\n CORE_PRECISION: CORE_PRECISION$h,\n CORE_SYMBOL: CORE_SYMBOL$h,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$h,\n DISPLAY_CHAIN: DISPLAY_CHAIN$h,\n DOMAIN_TITLE: DOMAIN_TITLE$h,\n HISTORY_TYPES: HISTORY_TYPES$h,\n HYPERION_URL: HYPERION_URL$e,\n KEY_PREFIX: KEY_PREFIX$h,\n LIGHT_API: LIGHT_API$8,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$h,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$h\n};\n\nvar DEFAULT_ENDPOINTS$i = ['https://fiotestnet.greymass.com', 'https://test.fio.eosusa.news'];\nvar TRANSACTIONS_ENDPOINTS$i = ['https://fiotestnet.greymass.com', 'https://test.fio.eosusa.news'];\nvar ACTIONS_ENDPOINTS$i = ['https://fiotestnet.greymass.com', 'https://test.fio.eosusa.news'];\nvar API_URL$i = 'https://www.api.bloks.io/fio-test';\nvar CHAIN$i = 'fio-test';\nvar CHAIN_ID$i = 'b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e';\nvar CHAIN_START_DATE$i = /*#__PURE__*/new Date('Mar 10, 2020');\nvar CORE_PRECISION$i = 9;\nvar CORE_SYMBOL$i = 'FIO';\nvar DISABLE_MEMO$1 = true;\nvar DISPLAY_CHAIN$i = 'FIO Test';\nvar DOMAIN_TITLE$i = 'FIO Test Bloks.io';\nvar HISTORY_TYPES$i = ['native', 'hyperion'];\nvar HYPERION_URL$f = 'https://test.fio.eosusa.news';\nvar KEY_PREFIX$i = 'FIO';\nvar PROVIDER_ENDPOINTS$i = /*#__PURE__*/generateProviderEndpoints(CHAIN_ID$i, ACTIONS_ENDPOINTS$i);\nvar VOTING_ENABLED$g = true;\nvar constants$i = {\n ACTIONS_ENDPOINTS: ACTIONS_ENDPOINTS$i,\n API_URL: API_URL$i,\n CHAIN: CHAIN$i,\n CHAIN_ID: CHAIN_ID$i,\n CHAIN_START_DATE: CHAIN_START_DATE$i,\n CORE_PRECISION: CORE_PRECISION$i,\n CORE_SYMBOL: CORE_SYMBOL$i,\n DEFAULT_ENDPOINTS: DEFAULT_ENDPOINTS$i,\n DISABLE_MEMO: DISABLE_MEMO$1,\n DISPLAY_CHAIN: DISPLAY_CHAIN$i,\n DOMAIN_TITLE: DOMAIN_TITLE$i,\n HISTORY_TYPES: HISTORY_TYPES$i,\n HYPERION_URL: HYPERION_URL$f,\n KEY_PREFIX: KEY_PREFIX$i,\n PROVIDER_ENDPOINTS: PROVIDER_ENDPOINTS$i,\n TRANSACTIONS_ENDPOINTS: TRANSACTIONS_ENDPOINTS$i,\n VOTING_ENABLED: VOTING_ENABLED$g\n};\n\nvar _chainToNetworkConsta;\n\nvar chainToNetworkConstantsMap = (_chainToNetworkConsta = {\n eos: constants,\n bos: constants$1,\n wax: constants$2,\n telos: constants$3,\n proton: constants$4,\n local: constants$9,\n xec: constants$5,\n coffe: constants$7,\n jungle: constants$a,\n jungle3: constants$b,\n kylin: constants$c,\n remme: constants$6,\n fio: constants$8\n}, _chainToNetworkConsta['eos-test'] = constants$d, _chainToNetworkConsta['bos-test'] = constants$e, _chainToNetworkConsta['telos-test'] = constants$f, _chainToNetworkConsta['proton-test'] = constants$g, _chainToNetworkConsta['wax-test'] = constants$h, _chainToNetworkConsta['fio-test'] = constants$i, _chainToNetworkConsta);\n\nvar Constants = /*#__PURE__*/function () {\n function Constants() {\n if (!!Constants.instance) {\n return Constants.instance;\n }\n }\n\n var _proto = Constants.prototype;\n\n _proto.initialize = /*#__PURE__*/function () {\n var _initialize = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(chain) {\n return runtime_1.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!chain || !chainToNetworkConstantsMap[chain]) {\n chain = DEFAULT_CHAIN;\n }\n\n this.setNetwork(chain);\n this.setCommon(chain);\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function initialize(_x) {\n return _initialize.apply(this, arguments);\n }\n\n return initialize;\n }();\n\n _proto.setNetwork = /*#__PURE__*/function () {\n var _setNetwork = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(chain) {\n var networkConstants;\n return runtime_1.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // const networkConstants = await import(`'./networks/${chain}`)\n networkConstants = chainToNetworkConstantsMap[chain];\n this.setConstants(networkConstants);\n this.setContract(chain, networkConstants.SYSTEM_DOMAIN);\n\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function setNetwork(_x2) {\n return _setNetwork.apply(this, arguments);\n }\n\n return setNetwork;\n }();\n\n _proto.setCommon = function setCommon(chain) {\n var commonConstants = getCommonConstants(chain);\n this.setConstants(commonConstants);\n };\n\n _proto.setContract = function setContract(chain, systemDomain) {\n if (systemDomain === void 0) {\n systemDomain = DEFAULT_SYSTEM_DOMAIN;\n }\n\n var contractConstants = getContractConstants(chain, systemDomain);\n this.setConstants(contractConstants);\n };\n\n _proto.setConstants = function setConstants(newConstants) {\n for (var _i = 0, _Object$entries = Object.entries(newConstants); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = _Object$entries[_i],\n key = _Object$entries$_i[0],\n value = _Object$entries$_i[1];\n this[key] = value;\n }\n };\n\n return Constants;\n}();\n\nvar constants$j = /*#__PURE__*/new Constants();\n\nexport { ANCHOR, CLEOS, CLIO, DEFAULT_CHAIN, DEFAULT_SYMBOL, DEFAULT_SYSTEM_DOMAIN, EOSAUTH, EOSC, KEYCAT, LEDGER, LEDGER_BLE, LEDGER_USB, LEDGER_WEBHID, LEDGER_WEBUSB, LYNX, PROTON, SCATTER_DESKTOP, SCATTER_DESKTOP_MANUAL, SCATTER_EXTENSION, SIMPLEOS, SQRL, TREZOR, WAX_CLOUD_WALLET, WOMBAT, chainInfo, chainToNetworkConstantsMap, constants$j as constants, dapps, exchanges, getContractConstants, historyTypesFeatures };\n//# sourceMappingURL=constants.esm.js.map\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var t=require(\"qrcode\");function e(t,e,n,r,i,a,o){try{var s=t[a](o),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(r,i)}function n(t){return function(){var n=this,r=arguments;return new Promise((function(i,a){var o=t.apply(n,r);function s(t){e(o,i,a,s,l,\"next\",t)}function l(t){e(o,i,a,s,l,\"throw\",t)}s(void 0)}))}}function r(t,e){return t(e={exports:{}},e.exports),e.exports}var i=r((function(t){var e=function(t){var e=Object.prototype,n=e.hasOwnProperty,r=\"function\"==typeof Symbol?Symbol:{},i=r.iterator||\"@@iterator\",a=r.asyncIterator||\"@@asyncIterator\",o=r.toStringTag||\"@@toStringTag\";function s(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},\"\")}catch(t){s=function(t,e,n){return t[e]=n}}function l(t,e,n,r){var i=Object.create((e&&e.prototype instanceof h?e:h).prototype),a=new y(r||[]);return i._invoke=function(t,e,n){var r=\"suspendedStart\";return function(i,a){if(\"executing\"===r)throw new Error(\"Generator is already running\");if(\"completed\"===r){if(\"throw\"===i)throw a;return{value:void 0,done:!0}}for(n.method=i,n.arg=a;;){var o=n.delegate;if(o){var s=w(o,n);if(s){if(s===p)continue;return s}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(\"suspendedStart\"===r)throw r=\"completed\",n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);r=\"executing\";var l=c(t,e,n);if(\"normal\"===l.type){if(r=n.done?\"completed\":\"suspendedYield\",l.arg===p)continue;return{value:l.arg,done:n.done}}\"throw\"===l.type&&(r=\"completed\",n.method=\"throw\",n.arg=l.arg)}}}(t,n,a),i}function c(t,e,n){try{return{type:\"normal\",arg:t.call(e,n)}}catch(t){return{type:\"throw\",arg:t}}}t.wrap=l;var p={};function h(){}function u(){}function d(){}var g={};g[i]=function(){return this};var f=Object.getPrototypeOf,v=f&&f(f(k([])));v&&v!==e&&n.call(v,i)&&(g=v);var m=d.prototype=h.prototype=Object.create(g);function x(t){[\"next\",\"throw\",\"return\"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function E(t,e){var r;this._invoke=function(i,a){function o(){return new e((function(r,o){!function r(i,a,o,s){var l=c(t[i],t,a);if(\"throw\"!==l.type){var p=l.arg,h=p.value;return h&&\"object\"==typeof h&&n.call(h,\"__await\")?e.resolve(h.__await).then((function(t){r(\"next\",t,o,s)}),(function(t){r(\"throw\",t,o,s)})):e.resolve(h).then((function(t){p.value=t,o(p)}),(function(t){return r(\"throw\",t,o,s)}))}s(l.arg)}(i,a,r,o)}))}return r=r?r.then(o,o):o()}}function w(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,\"throw\"===e.method){if(t.iterator.return&&(e.method=\"return\",e.arg=void 0,w(t,e),\"throw\"===e.method))return p;e.method=\"throw\",e.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return p}var r=c(n,t.iterator,e.arg);if(\"throw\"===r.type)return e.method=\"throw\",e.arg=r.arg,e.delegate=null,p;var i=r.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,\"return\"!==e.method&&(e.method=\"next\",e.arg=void 0),e.delegate=null,p):i:(e.method=\"throw\",e.arg=new TypeError(\"iterator result is not an object\"),e.delegate=null,p)}function b(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function C(t){var e=t.completion||{};e.type=\"normal\",delete e.arg,t.completion=e}function y(t){this.tryEntries=[{tryLoc:\"root\"}],t.forEach(b,this),this.reset(!0)}function k(t){if(t){var e=t[i];if(e)return e.call(t);if(\"function\"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,a=function e(){for(;++r=0;--i){var a=this.tryEntries[i],o=a.completion;if(\"root\"===a.tryLoc)return r(\"end\");if(a.tryLoc<=this.prev){var s=n.call(a,\"catchLoc\"),l=n.call(a,\"finallyLoc\");if(s&&l){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,\"finallyLoc\")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),C(n),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if(\"throw\"===r.type){var i=r.arg;C(n)}return i}}throw new Error(\"illegal catch attempt\")},delegateYield:function(t,e,n){return this.delegate={iterator:k(t),resultName:e,nextLoc:n},\"next\"===this.method&&(this.arg=void 0),p}},t}(t.exports);try{regeneratorRuntime=e}catch(t){Function(\"r\",\"regeneratorRuntime = r\")(e)}})),a={anchor:{logo:'url(\"data:image/png;base64,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\")',backgroundColor:\"rgb(54, 80, 162)\"},proton:{logo:\"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='49' viewBox='0 0 160 49'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23FFF'%3E%3Cg%3E%3Cpath fill-rule='nonzero' d='M58.895 32.064V27.53h3.547c1.361 0 2.547-.224 3.557-.673 1.01-.449 1.785-1.096 2.323-1.942.539-.845.808-1.836.808-2.974 0-1.152-.269-2.147-.808-2.985-.538-.838-1.313-1.481-2.323-1.93-1.01-.449-2.196-.673-3.557-.673h-6.464v15.711h2.917zm3.412-7.003h-3.412v-6.24h3.412c1.272 0 2.237.27 2.895.809.659.538.988 1.309.988 2.311 0 1.003-.33 1.774-.988 2.312-.658.539-1.623.808-2.895.808zm13.942 7.003v-4.579h3.633c.226-.001.4-.009.519-.022l3.21 4.601h3.142l-3.614-5.162c1.077-.42 1.904-1.055 2.48-1.908.576-.853.864-1.87.864-3.053 0-1.152-.269-2.147-.808-2.985-.538-.838-1.313-1.481-2.323-1.93-1.01-.449-2.195-.673-3.557-.673H73.33v15.711h2.918zm3.411-6.98H76.25v-6.262h3.411c1.272 0 2.237.269 2.896.808.658.538.987 1.309.987 2.311 0 1.003-.329 1.777-.987 2.324-.659.546-1.624.819-2.896.819zm18.7 7.205c1.601 0 3.045-.348 4.332-1.044 1.287-.696 2.297-1.657 3.03-2.884.733-1.227 1.1-2.611 1.1-4.153 0-1.54-.367-2.925-1.1-4.152-.733-1.227-1.743-2.188-3.03-2.884-1.287-.696-2.73-1.044-4.332-1.044-1.601 0-3.045.348-4.332 1.044-1.287.696-2.297 1.66-3.03 2.895-.733 1.235-1.1 2.615-1.1 4.141 0 1.527.367 2.907 1.1 4.141.733 1.235 1.743 2.2 3.03 2.896 1.287.696 2.73 1.044 4.332 1.044zm0-2.56c-1.047 0-1.99-.235-2.828-.706-.838-.471-1.496-1.13-1.975-1.975-.479-.846-.718-1.792-.718-2.84 0-1.047.239-1.993.718-2.839.479-.845 1.137-1.504 1.975-1.975.838-.471 1.78-.707 2.828-.707 1.047 0 1.99.236 2.828.707.838.471 1.496 1.13 1.975 1.975.479.846.718 1.792.718 2.84 0 1.047-.239 1.993-.718 2.839-.479.845-1.137 1.504-1.975 1.975-.838.471-1.78.707-2.828.707zm18.722 2.335V18.822h5.207v-2.47h-13.332v2.47h5.207v13.242h2.918zm15.805.225c1.6 0 3.045-.348 4.332-1.044 1.286-.696 2.296-1.657 3.03-2.884.733-1.227 1.1-2.611 1.1-4.153 0-1.54-.367-2.925-1.1-4.152-.734-1.227-1.744-2.188-3.03-2.884-1.287-.696-2.731-1.044-4.332-1.044s-3.045.348-4.332 1.044c-1.287.696-2.297 1.66-3.03 2.895-.733 1.235-1.1 2.615-1.1 4.141 0 1.527.367 2.907 1.1 4.141.733 1.235 1.743 2.2 3.03 2.896 1.287.696 2.73 1.044 4.332 1.044zm0-2.56c-1.048 0-1.99-.235-2.828-.706-.838-.471-1.497-1.13-1.976-1.975-.478-.846-.718-1.792-.718-2.84 0-1.047.24-1.993.718-2.839.48-.845 1.138-1.504 1.976-1.975.838-.471 1.78-.707 2.828-.707 1.047 0 1.99.236 2.828.707.838.471 1.496 1.13 1.975 1.975.479.846.718 1.792.718 2.84 0 1.047-.24 1.993-.718 2.839-.479.845-1.137 1.504-1.975 1.975-.838.471-1.78.707-2.828.707zm15.737 2.335V21.425l8.663 10.64h2.402V16.352h-2.895v10.639l-8.664-10.64h-2.402v15.712h2.896z' transform='translate(-432 -207) translate(432 207)'/%3E%3Cg%3E%3Cpath d='M21.582 0c3.104 0 5.782 3.222 7.545 8.459-.712.198-1.44.42-2.174.666-1.465-4.331-3.476-6.88-5.37-6.88-2.136 0-4.415 3.232-5.899 8.606.58.187 1.165.386 1.762.606 1.346.495 2.735 1.078 4.15 1.74.081-.038.162-.078.243-.115.907-.417 1.808-.801 2.7-1.154l.32-.125c2.671-1.033 5.252-1.773 7.616-2.165 5.088-.846 8.666.03 10.07 2.466 1.409 2.437.38 5.974-2.898 9.956-.189.228-.38.459-.583.686-.488-.542-1.007-1.083-1.561-1.625 2.891-3.354 4.03-6.285 3.1-7.895-.879-1.523-3.777-2.036-7.76-1.375-.85.142-1.735.333-2.643.57.13.596.25 1.205.357 1.835.246 1.41.436 2.903.57 4.458.7.492 1.384.991 2.04 1.5 2.572 1.99 4.78 4.078 6.48 6.143 3.277 3.982 4.307 7.519 2.899 9.956-1.055 1.83-3.338 2.78-6.567 2.78-1.067 0-2.238-.103-3.504-.315-.328-.054-.661-.115-.997-.182.201-.696.388-1.424.557-2.178.273.055.542.103.808.148 3.98.66 6.881.147 7.76-1.376 1.068-1.85-.6-5.449-4.522-9.428-.391.357-.794.713-1.21 1.066-.062.051-.126.106-.187.154-1.11.93-2.302 1.842-3.561 2.728-.06.704-.13 1.4-.213 2.075-1.225 9.863-4.829 16.632-9.328 16.632-3.097 0-5.771-3.213-7.535-8.436.709-.193 1.434-.417 2.175-.667 1.465 4.319 3.469 6.858 5.36 6.858 2.136 0 4.42-3.243 5.907-8.631-.583-.186-1.17-.383-1.764-.603-1.355-.494-2.738-1.07-4.13-1.716l-.09.042c-.785.366-1.558.706-2.321 1.02-.119.048-.234.096-.35.138-4.392 1.77-8.404 2.687-11.594 2.687-3.177 0-5.534-.911-6.624-2.796-1.559-2.7-.084-6.654 3.607-10.822l1.568 1.654c-2.985 3.419-4.172 6.413-3.23 8.045 1.067 1.849 5.006 2.206 10.402.805-.127-.595-.248-1.202-.355-1.83-.244-1.41-.433-2.898-.569-4.45-.703-.491-1.387-.988-2.035-1.486C3.752 23.42 0 18.312 0 14.51c0-.879.202-1.687.616-2.405C2.168 9.42 6.288 8.712 11.697 9.796c-.205.705-.394 1.442-.564 2.206-4.448-.879-7.632-.408-8.571 1.224-1.067 1.848.594 5.44 4.504 9.413.502-.455 1.022-.907 1.569-1.355 1.053-.871 2.194-1.736 3.407-2.586.061-.706.13-1.403.216-2.08C13.483 6.767 17.087 0 21.582 0zm7.103 31.336c-.54.342-1.087.68-1.645 1.01-.19.113-.379.222-.568.33-.664.382-1.327.75-1.985 1.097-.097.052-.194.1-.29.152.681.288 1.358.558 2.028.807.605.225 1.202.431 1.794.625.132-.615.254-1.248.364-1.904.115-.681.212-1.393.302-2.117zm-14.212-.003c.094.76.203 1.5.325 2.212.105.624.224 1.224.35 1.81.363-.118.73-.24 1.102-.373.112-.039.228-.08.34-.122.766-.276 1.552-.58 2.353-.923l.023-.01c-.759-.397-1.518-.814-2.273-1.25-.039-.023-.08-.045-.12-.071-.72-.418-1.418-.844-2.1-1.273zm7.11-15.65c-.767.373-1.537.765-2.306 1.183-.487.263-.975.535-1.462.817-1.277.738-2.48 1.495-3.615 2.261-.046.654-.086 1.316-.111 1.997-.029.741-.042 1.498-.042 2.267 0 1.476.054 2.897.151 4.263.655.443 1.329.882 2.033 1.313.516.321 1.042.638 1.584.95 1.254.724 2.515 1.39 3.77 2 .08-.04.16-.075.241-.115.834-.41 1.677-.853 2.533-1.328.33-.18.66-.365.99-.558 1.278-.736 2.481-1.493 3.615-2.26.047-.654.087-1.317.112-1.998.029-.74.041-1.497.041-2.267 0-1.475-.054-2.895-.15-4.262-.653-.44-1.326-.88-2.03-1.314-.516-.32-1.045-.634-1.587-.949-1.277-.737-2.535-1.4-3.767-2zm0 5.64c1.593 0 2.885 1.292 2.885 2.885 0 1.594-1.292 2.886-2.886 2.886-1.593 0-2.885-1.292-2.885-2.886 0-1.593 1.292-2.885 2.885-2.885zm9.729.3c.033.847.05 1.71.05 2.585 0 .212 0 .424-.003.635-.007.663-.027 1.315-.052 1.96.578-.436 1.132-.874 1.661-1.312.068-.055.132-.106.196-.16.449-.376.878-.75 1.29-1.123-.378-.34-.77-.683-1.178-1.026-.619-.522-1.278-1.042-1.964-1.56zm-19.454-.006c-.52.392-1.021.785-1.501 1.177-.579.47-1.127.943-1.649 1.416.379.341.771.684 1.18 1.028.62.52 1.279 1.039 1.966 1.557-.034-.847-.051-1.71-.051-2.587 0-.211 0-.423.006-.631.005-.662.024-1.314.049-1.96zm16.158-8.556c-.3.097-.6.198-.903.303-.891.308-1.795.658-2.712 1.042l-.195.084c.75.396 1.507.812 2.266 1.25.039.023.08.045.119.07.717.414 1.414.842 2.1 1.277-.093-.762-.202-1.502-.324-2.216-.107-.623-.226-1.224-.351-1.81zm-12.87 0c-.13.613-.251 1.246-.361 1.9-.117.682-.215 1.391-.305 2.115.684-.432 1.387-.859 2.11-1.278l.103-.058c.757-.437 1.517-.853 2.276-1.25-.688-.29-1.364-.56-2.026-.805-.613-.23-1.21-.435-1.796-.624z' transform='translate(-432 -207) translate(432 207)'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\\\")\",backgroundColor:\"rgb(117, 46, 235)\"}},o={proton:\"https://protonchain.com/wallet\",anchor:\"https://greymass.com/en/anchor/\"};function s(t){for(;t.firstChild;)t.removeChild(t.firstChild)}var l=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\",c=l.length;function p(){for(var t=window.location.href.split(\"#\")[0]+\"#\",e=0;e<8;e++)t+=l.charAt(Math.floor(Math.random()*c));return t}function h(){return/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(navigator.userAgent)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(navigator.userAgent.substr(0,4))}exports.default=function(){function e(t){void 0===t&&(t={}),this.options=t,this.classPrefix=t.classPrefix||\"proton-link\",this.injectStyles=!(!1===t.injectStyles),this.requestStatus=!(!1===t.requestStatus),this.requestAccount=t.requestAccount||\"\",this.walletType=t.walletType||\"proton\",this.backButton=!(!1===t.backButton)}var r=e.prototype;return r.closeModal=function(){this.hide(),this.activeCancel&&(this.activeRequest=void 0,this.activeCancel(\"Modal closed\"),this.activeCancel=void 0)},r.setupElements=function(t){var e,n=this;if(void 0===t&&(t=\"\"),this.injectStyles&&!this.styleEl){this.font=document.createElement(\"link\"),this.font.href=\"https://fonts.cdnfonts.com/css/circular-std-book\",this.font.rel=\"stylesheet\",this.styleEl=document.createElement(\"style\"),this.styleEl.type=\"text/css\";var r=(e=this.walletType,\"\\n/* Anchor Link Modal */\\n\\n.%prefix% * {\\n box-sizing: border-box;\\n line-height: 1;\\n}\\n\\n.%prefix% {\\n font-family: 'Circular Std Book', -apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',\\n Arial, sans-serif;\\n font-size: 13px;\\n background: rgba(0, 0, 0, 0.65);\\n position: fixed;\\n top: 0px;\\n left: 0px;\\n width: 100%;\\n height: 100%;\\n z-index: 2147483647;\\n display: none;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.%prefix%-active {\\n display: flex;\\n}\\n\\n.%prefix%-inner {\\n background: \"+a[e].backgroundColor+\";\\n color: white;\\n margin: 20px;\\n position: relative;\\n border-radius: 20px;\\n position: relative;\\n box-shadow: 0px 4px 100px rgba(0, 0, 0, .5);\\n width: 360px;\\n transition-property: all;\\n transition-duration: .5s;\\n transition-timing-function: ease-in-out;\\n}\\n\\n.%prefix%-nav {\\n height: 55px;\\n display: flex;\\n position: relative;\\n border-radius: 20px 20px 0px 0px;\\n justify-content: center;\\n align-items: center;\\n padding: 0px 16px;\\n background-color: rgba(0,0,0,0.2);\\n}\\n\\n.%prefix%-back {\\n width: 16px;\\n height: 16px;\\n position: absolute;\\n left: 16px;\\n background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg%3E%3Cg%3E%3Cg%3E%3Cpath d='M0 0L24 0 24 24 0 24z' transform='translate(-348 -152) translate(332 136) translate(16 16)'/%3E%3Cpath fill='rgba(255,255,255, 0.8)' fill-rule='nonzero' d='M16.41 5.791L14.619 4 7 11.619 14.619 19.239 16.41 17.448 10.594 11.619z' transform='translate(-348 -152) translate(332 136) translate(16 16)'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\\\");\\n background-size: 20px;\\n background-repeat: no-repeat;\\n background-position: 50%;\\n border-radius: 100%;\\n cursor: pointer;\\n}\\n\\n.%prefix%-back:hover {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg%3E%3Cg%3E%3Cg%3E%3Cpath d='M0 0L24 0 24 24 0 24z' transform='translate(-348 -152) translate(332 136) translate(16 16)'/%3E%3Cpath fill='rgba(255,255,255, 1)' fill-rule='nonzero' d='M16.41 5.791L14.619 4 7 11.619 14.619 19.239 16.41 17.448 10.594 11.619z' transform='translate(-348 -152) translate(332 136) translate(16 16)'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\\\");\\n}\\n\\n.%prefix%-header {\\n font-family: 'Circular Std Book', sans-serif;\\n font-size: 16px;\\n line-height: 24px;\\n}\\n\\n.%prefix%-close {\\n width: 16px;\\n height: 16px;\\n position: absolute;\\n right: 16px;\\n background-image: url(\\\"data:image/svg+xml,%3Csvg width='12' height='12' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9.66 10.987L6 7.327l-3.66 3.66A1.035 1.035 0 11.876 9.523l3.66-3.66-3.66-3.66A1.035 1.035 0 012.34.737L6 4.398 9.66.739a1.035 1.035 0 111.464 1.464l-3.66 3.66 3.66 3.661a1.035 1.035 0 11-1.464 1.464z' fill='rgba(255,255,255, 0.8)' fill-rule='nonzero'/%3E%3C/svg%3E\\\");\\n background-size: 14px;\\n background-repeat: no-repeat;\\n background-position: 50%;\\n border-radius: 100%;\\n cursor: pointer;\\n}\\n\\n.%prefix%-close:hover {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg width='12' height='12' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9.66 10.987L6 7.327l-3.66 3.66A1.035 1.035 0 11.876 9.523l3.66-3.66-3.66-3.66A1.035 1.035 0 012.34.737L6 4.398 9.66.739a1.035 1.035 0 111.464 1.464l-3.66 3.66 3.66 3.661a1.035 1.035 0 11-1.464 1.464z' fill='rgba(255,255,255,1)' fill-rule='nonzero'/%3E%3C/svg%3E\\\");\\n}\\n\\n.%prefix%-logo {\\n width: 100%;\\n height: 50px;\\n background-image: \"+a[e].logo+\";\\n background-size: 165px;\\n background-repeat: no-repeat;\\n background-position: 50%;\\n margin-bottom: 20px;\\n}\\n\\n.%prefix%-logo.loading {\\n border-radius: 100%;\\n background-image: url(\\\"data:image/svg+xml,%3Csvg viewBox='0.5 0.5 45 45' xmlns='http://www.w3.org/2000/svg' stroke='%23fff'%3E%3Cg fill='none' fill-rule='evenodd' transform='translate(1 1)' stroke-width='2'%3E%3Ccircle cx='22' cy='22' r='6' stroke-opacity='0'%3E%3Canimate attributeName='r' begin='1.5s' dur='3s' values='6;22' calcMode='linear' repeatCount='indefinite' /%3E%3Canimate attributeName='stroke-opacity' begin='1.5s' dur='3s' values='1;0' calcMode='linear' repeatCount='indefinite' /%3E%3Canimate attributeName='stroke-width' begin='1.5s' dur='3s' values='2;0' calcMode='linear' repeatCount='indefinite' /%3E%3C/circle%3E%3Ccircle cx='22' cy='22' r='6' stroke-opacity='0'%3E%3Canimate attributeName='r' begin='3s' dur='3s' values='6;22' calcMode='linear' repeatCount='indefinite' /%3E%3Canimate attributeName='stroke-opacity' begin='3s' dur='3s' values='1;0' calcMode='linear' repeatCount='indefinite' /%3E%3Canimate attributeName='stroke-width' begin='3s' dur='3s' values='2;0' calcMode='linear' repeatCount='indefinite' /%3E%3C/circle%3E%3Ccircle cx='22' cy='22' r='8'%3E%3Canimate attributeName='r' begin='0s' dur='1.5s' values='6;1;2;3;4;5;6' calcMode='linear' repeatCount='indefinite' /%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\\\");\\n width: 104px;\\n height: 104px;\\n margin: 35px auto 35px;\\n background-size: initial;\\n}\\n\\n.%prefix%-logo.error {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='38' viewBox='0 0 12 38'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23F94E6C' fill-rule='nonzero'%3E%3Cg%3E%3Cpath d='M11.227 35.73c0 .385-.131.708-.392.97-.26.261-.57.391-.929.391H1.981c-.358 0-.667-.13-.929-.392-.261-.261-.392-.584-.392-.97v-7.842c0-.385.131-.708.392-.97.262-.261.57-.391.929-.391h7.925c.358 0 .668.13.929.392.26.26.392.584.392.969v7.843zM11.145 20.293c-.028.275-.173.501-.434.68-.261.18-.585.268-.97.268H2.104c-.385 0-.715-.09-.99-.268-.276-.18-.413-.405-.413-.681L0 1.428C0 1.043.137.754.412.562.77.259 1.1.108 1.403.108h9.081c.303 0 .633.15.991.454.275.192.412.454.412.784l-.742 18.947z' transform='translate(-506 -305) translate(506 305)'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\\\"); width: 104px;\\n height: 104px;\\n margin: 60px auto 35px;\\n border-radius: 100%;\\n background-color: white;\\n background-size: initial;\\n}\\n\\n.%prefix%-logo.success {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='35' height='26' viewBox='0 0 35 26'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%2312C9A0' fill-rule='nonzero'%3E%3Cpath d='M528.59 316.077c0 .548-.22 1.095-.614 1.489l-18.821 18.821c-.394.394-.941.613-1.488.613s-1.095-.219-1.489-.613l-10.899-10.899c-.393-.394-.612-.94-.612-1.488 0-.547.219-1.094.612-1.488l2.977-2.977c.394-.394.941-.612 1.488-.612s1.094.218 1.488.612l6.435 6.457 14.357-14.38c.394-.393.94-.612 1.488-.612.547 0 1.094.219 1.488.613l2.976 2.976c.394.394.613.941.613 1.488z' transform='translate(-494 -311)'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\\\");\\n width: 104px;\\n height: 104px;\\n margin: 60px auto 35px;\\n border-radius: 100%;\\n background-color: white;\\n background-size: initial;\\n}\\n\\n.%prefix%-countdown {\\n width: 104px;\\n height: 104px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin: 60px auto 35px;\\n border-radius: 100%;\\n background-color: white;\\n color: \"+a[e].backgroundColor+\";\\n font-size: 28px;\\n line-height: 40px;\\n}\\n\\n.%prefix%-info {\\n text-align: center;\\n}\\n\\n.%prefix%-title {\\n font-size: 28px;\\n line-height: 40px;\\n display: block;\\n}\\n\\n.%prefix%-subtitle {\\n font-size: 16px;\\n line-height: 24px;\\n display: block;\\n margin-top: 10px;\\n}\\n\\n.%prefix%-request {\\n padding: 20px 55px 40px 55px;\\n border-radius: 20px;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n}\\n\\n.%prefix%-separator {\\n margin-top: 20px;\\n width: 100%;\\n font-size: 12px;\\n display: flex;\\n align-items: center;\\n text-align: center;\\n color: white;\\n}\\n\\n.%prefix%-separator::before,\\n.%prefix%-separator::after {\\n content: '';\\n flex: 1;\\n opacity: 0.2;\\n border-bottom: 1px solid #d8d8d8;\\n}\\n\\n.%prefix%-separator::before {\\n margin-right: .5em;\\n}\\n\\n.%prefix%-separator::after {\\n margin-left: .5em;\\n}\\n\\n.%prefix%-actions {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n position: relative;\\n}\\n\\n.%prefix%-uri {\\n width: 100%;\\n padding: 20px 0px 0px 0px;\\n}\\n\\n.%prefix%-background {\\n width: 250px;\\n height: 250px;\\n border-radius: 10px;\\n box-shadow: 0 4px 8px -2px rgba(141, 141, 148, 0.28), 0 0 2px 0 rgba(141, 141, 148, 0.16);\\n background-color: #ffffff;\\n position: relative;\\n z-index: 10;\\n}\\n\\n.%prefix%-qr {\\n width: 210px;\\n position: absolute;\\n z-index: 5;\\n top: 20px;\\n left: 20px;\\n}\\n\\n.%prefix%-qr svg {\\n width: 100%;\\n fill: #010c2c;\\n}\\n\\n.%prefix%-footnote {\\n font-family: 'Circular Std Book', sans-serif;\\n font-size: 16px;\\n text-align: center;\\n width: 100%;\\n position: absolute;\\n bottom: -30px;\\n left: 0;\\n color: white;\\n}\\n\\n.%prefix%-footnote a {\\n color: white;\\n}\\n\\n.%prefix%-wskeepalive {\\n display: none;\\n}\\n\\n.%prefix%-uri a {\\n width: 100%;\\n background-color: rgba(255, 255, 255, 0.3);\\n font-family: 'Circular Std Book', sans-serif;\\n font-size: 16px;\\n font-weight: 500;\\n text-align: center;\\n color: #ffffff;\\n text-decoration: none;\\n flex-grow: 1;\\n flex: 1;\\n padding: 18px 0px 16px 0px;\\n display: block;\\n border-radius: 10px;\\n}\\n\\n.%prefix%-uri a:hover {\\n background-color: rgba(255, 255, 255, 0.25);\\n transition: 0.2s ease;\\n}\\n\").replace(/%prefix%/g,this.classPrefix);this.styleEl.appendChild(document.createTextNode(r)),this.styleEl.appendChild(this.font),document.head.appendChild(this.styleEl)}if(this.containerEl||(this.clearDuplicateContainers(),this.containerEl=this.createEl(),this.containerEl.className=this.classPrefix,this.containerEl.onclick=function(t){t.target===n.containerEl&&(t.stopPropagation(),n.closeModal())},document.body.appendChild(this.containerEl)),!this.requestEl){var i=this.createEl({class:\"inner\"}),o=this.createEl({class:\"nav\"}),s=this.createEl({class:\"header\",tag:\"span\",text:\"\"});if(this.backButton){var l=this.createEl({class:\"back\"});l.onclick=function(t){t.stopPropagation(),n.closeModal(),document.dispatchEvent(new CustomEvent(\"backToSelector\"))},o.appendChild(l)}var c=this.createEl({class:\"close\"});c.onclick=function(t){t.stopPropagation(),n.closeModal()},this.requestEl=this.createEl({class:\"request\"}),o.appendChild(s),o.appendChild(c),i.appendChild(o),i.appendChild(this.requestEl),this.containerEl.appendChild(i)}document.getElementsByClassName(this.classPrefix+\"-header\")[0].textContent=t},r.clearDuplicateContainers=function(){for(var t=document.getElementsByClassName(this.classPrefix);t.length>0;)t[0].remove()},r.createEl=function(t){t||(t={});var e=document.createElement(t.tag||\"div\");if(t)for(var n=0,r=Object.keys(t);n0&&(n.setInfoKey(\"req_account\",this.requestAccount),r.setInfoKey(\"req_account\",this.requestAccount)),a=r.encode(!0,!1),l=n.encode(!0,!1),c=this.createEl({class:\"logo\"}),u=this.createEl({class:\"qr\"}),e.prev=9,e.next=12,t.toString(l,{margin:0,errorCorrectionLevel:\"L\"});case 12:u.innerHTML=e.sent,e.next=18;break;case 15:e.prev=15,e.t0=e.catch(9),console.warn(\"Unable to generate QR code\",e.t0);case 18:d=this.createEl({class:\"uri\"}),(g=this.createEl({tag:\"a\",href:l,text:\"Open \"+this.walletType.replace(/\\b[a-z]/g,(function(t){return t.toUpperCase()}))+\" Wallet\"})).addEventListener(\"click\",(function(t){t.preventDefault(),window.location.href=a})),d.appendChild(g),f=this.createEl({class:\"wskeepalive\",src:\"about:blank\",tag:\"iframe\"}),d.appendChild(f),v=this.createEl({class:\"background\"}),m=this.createEl({class:\"separator\",text:\"OR\"}),(x=this.createEl({class:\"actions\"})).appendChild(v),(h()||\"anchor\"==this.walletType)&&(x.appendChild(m),x.appendChild(d)),v.appendChild(u),E=this.createEl({class:\"footnote\"}),n.isIdentity()&&(E=this.createEl({class:\"footnote\",text:\"Don't have \"+this.walletType.replace(/\\b[a-z]/g,(function(t){return t.toUpperCase()}))+\" Wallet? \"}),w=this.createEl({tag:\"a\",target:\"_blank\",href:o[this.walletType],text:\"Download it here\"}),E.appendChild(w)),s(this.requestEl),this.requestEl.appendChild(c),this.requestEl.appendChild(x),this.requestEl.appendChild(E),this.show();case 38:case\"end\":return e.stop()}}),e,this,[[9,15]])})));return function(t){return e.apply(this,arguments)}}(),r.showLoading=function(){var t=n(i.mark((function t(){var e,n,r,a;return i.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this.setupElements(),s(this.requestEl),e=this.createEl({class:\"info\"}),n=this.createEl({class:\"title\",tag:\"span\",text:\"Loading\"}),r=this.createEl({class:\"subtitle\",tag:\"span\",text:\"Preparing request...\"}),e.appendChild(n),e.appendChild(r),a=this.createEl({class:\"logo loading\"}),this.requestEl.appendChild(a),this.requestEl.appendChild(e),this.show();case 11:case\"end\":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),r.onRequest=function(t,e){this.activeRequest=t,this.activeCancel=e,this.displayRequest(t).catch(e)},r.onSessionRequest=function(t,e,n){if(t.metadata.sameDevice&&(e.setInfoKey(\"same_device\",!0),e.setInfoKey(\"return_path\",p())),\"fallback\"===t.type)return this.onRequest(e,n),void(t.metadata.sameDevice&&(window.location.href=e.encode()));this.activeRequest=e,this.activeCancel=n,this.setupElements(\"Pending...\");var r=t.metadata.timeout||12e4,i=t.metadata.name,a=Date.now(),o=this.createEl({class:\"countdown\",tag:\"span\",text:\"\"}),l=function(){var t=r+a-Date.now(),e=t>0?new Date(t).toISOString().substr(14,5):\"00:00\";o.textContent=\"\"+e};this.countdownTimer=global.setInterval(l,500),l();var c=this.createEl({class:\"info\"}),u=this.createEl({class:\"title\",tag:\"span\",text:\"Confirm request\"});c.appendChild(u);var d=this.createEl({class:\"subtitle\",tag:\"span\",text:i&&i.length>0?\"Please open on “\"+i+\"” to review and sign the transaction.\":\"Please review and sign the transaction in the linked wallet.\"});if(c.appendChild(d),s(this.requestEl),this.requestEl.appendChild(o),this.requestEl.appendChild(c),this.show(),h()&&t.metadata.sameDevice){var g=e.getScheme();window.location.href=g+\"://link\"}},r.clearTimers=function(){this.closeTimer&&(clearTimeout(this.closeTimer),this.closeTimer=void 0),this.countdownTimer&&(clearTimeout(this.countdownTimer),this.countdownTimer=void 0)},r.onSuccess=function(t){var e=this;if(t===this.activeRequest)if(this.clearTimers(),this.requestStatus){this.setupElements(\"Success\");var n=this.createEl({class:\"info\"}),r=this.createEl({class:\"logo\"});r.classList.add(\"success\");var i=t.isIdentity()?\"Your wallet was successfully linked\":\"Your transaction was successfully signed\",a=this.createEl({class:\"title\",tag:\"span\",text:i});n.appendChild(a),s(this.requestEl),this.requestEl.appendChild(r),this.requestEl.appendChild(n),this.show(),this.closeTimer=global.setTimeout((function(){e.hide()}),1500)}else this.hide()},r.onFailure=function(t,e){if(t===this.activeRequest&&\"E_CANCEL\"!==e.code)if(this.clearTimers(),this.requestStatus){this.setupElements(\"Transaction Failed\");var n=this.createEl({class:\"info\"}),r=this.createEl({class:\"logo\"});r.classList.add(\"error\");var i=this.createEl({class:\"title\",tag:\"span\",text:\"Transaction error\"}),a=this.createEl({class:\"subtitle\",tag:\"span\",text:e.message||String(e)});n.appendChild(i),n.appendChild(a),s(this.requestEl),this.requestEl.appendChild(r),this.requestEl.appendChild(n),this.show()}else this.hide()},e}();\n//# sourceMappingURL=browser-transport.cjs.production.min.js.map\n","\n'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./browser-transport.cjs.production.min.js')\n} else {\n module.exports = require('./browser-transport.cjs.development.js')\n}\n","\n'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./js.cjs.production.min.js')\n} else {\n module.exports = require('./js.cjs.development.js')\n}\n","\"use strict\";function e(e){return e&&\"object\"==typeof e&&\"default\"in e?e.default:e}Object.defineProperty(exports,\"__esModule\",{value:!0});var t=require(\"pako\"),r=require(\"hash.js\"),n=e(require(\"ripemd-ts\")),a=require(\"bs58\");require(\"fast-text-encoding\");var i=require(\"elliptic\"),s=require(\"@bloks/constants\"),o=require(\"zod\"),u=e(require(\"cross-fetch\"));function c(e,t,r,n,a,i,s){try{var o=e[i](s),u=o.value}catch(e){return void r(e)}o.done?t(u):Promise.resolve(u).then(n,a)}function l(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function s(e){c(i,n,a,s,o,\"next\",e)}function o(e){c(i,n,a,s,o,\"throw\",e)}s(void 0)}))}}function f(e){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function y(e,t,r){return(y=h()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var a=new(Function.bind.apply(e,n));return r&&p(a,r.prototype),a}).apply(null,arguments)}function d(e){var t=\"function\"==typeof Map?new Map:void 0;return(d=function(e){if(null===e||-1===Function.toString.call(e).indexOf(\"[native code]\"))return e;if(\"function\"!=typeof e)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return y(e,arguments,f(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),p(r,e)})(e)}function v(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}return(r=e[Symbol.iterator]()).next.bind(r)}var b,x,k=(function(e){var t=function(e){var t=Object.prototype,r=t.hasOwnProperty,n=\"function\"==typeof Symbol?Symbol:{},a=n.iterator||\"@@iterator\",i=n.asyncIterator||\"@@asyncIterator\",s=n.toStringTag||\"@@toStringTag\";function o(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{o({},\"\")}catch(e){o=function(e,t,r){return e[t]=r}}function u(e,t,r,n){var a=Object.create((t&&t.prototype instanceof f?t:f).prototype),i=new _(n||[]);return a._invoke=function(e,t,r){var n=\"suspendedStart\";return function(a,i){if(\"executing\"===n)throw new Error(\"Generator is already running\");if(\"completed\"===n){if(\"throw\"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var s=r.delegate;if(s){var o=x(s,r);if(o){if(o===l)continue;return o}}if(\"next\"===r.method)r.sent=r._sent=r.arg;else if(\"throw\"===r.method){if(\"suspendedStart\"===n)throw n=\"completed\",r.arg;r.dispatchException(r.arg)}else\"return\"===r.method&&r.abrupt(\"return\",r.arg);n=\"executing\";var u=c(e,t,r);if(\"normal\"===u.type){if(n=r.done?\"completed\":\"suspendedYield\",u.arg===l)continue;return{value:u.arg,done:r.done}}\"throw\"===u.type&&(n=\"completed\",r.method=\"throw\",r.arg=u.arg)}}}(e,r,i),a}function c(e,t,r){try{return{type:\"normal\",arg:e.call(t,r)}}catch(e){return{type:\"throw\",arg:e}}}e.wrap=u;var l={};function f(){}function p(){}function h(){}var y={};y[a]=function(){return this};var d=Object.getPrototypeOf,v=d&&d(d(A([])));v&&v!==t&&r.call(v,a)&&(y=v);var g=h.prototype=f.prototype=Object.create(y);function m(e){[\"next\",\"throw\",\"return\"].forEach((function(t){o(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var n;this._invoke=function(a,i){function s(){return new t((function(n,s){!function n(a,i,s,o){var u=c(e[a],e,i);if(\"throw\"!==u.type){var l=u.arg,f=l.value;return f&&\"object\"==typeof f&&r.call(f,\"__await\")?t.resolve(f.__await).then((function(e){n(\"next\",e,s,o)}),(function(e){n(\"throw\",e,s,o)})):t.resolve(f).then((function(e){l.value=e,s(l)}),(function(e){return n(\"throw\",e,s,o)}))}o(u.arg)}(a,i,n,s)}))}return n=n?n.then(s,s):s()}}function x(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,\"throw\"===t.method){if(e.iterator.return&&(t.method=\"return\",t.arg=void 0,x(e,t),\"throw\"===t.method))return l;t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return l}var n=c(r,e.iterator,t.arg);if(\"throw\"===n.type)return t.method=\"throw\",t.arg=n.arg,t.delegate=null,l;var a=n.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=void 0),t.delegate=null,l):a:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,l)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[a];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n=0;--a){var i=this.tryEntries[a],s=i.completion;if(\"root\"===i.tryLoc)return n(\"end\");if(i.tryLoc<=this.prev){var o=r.call(i,\"catchLoc\"),u=r.call(i,\"finallyLoc\");if(o&&u){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,\"finallyLoc\")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),w(r),l}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(\"throw\"===n.type){var a=n.arg;w(r)}return a}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,r){return this.delegate={iterator:A(e),resultName:t,nextLoc:r},\"next\"===this.method&&(this.arg=void 0),l}},e}(e.exports);try{regeneratorRuntime=t}catch(e){Function(\"r\",\"regeneratorRuntime = r\")(t)}}(x={exports:{}}),x.exports),w=n.hash,_=\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\",A=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",S=function(){for(var e=Array(256).fill(-1),t=0;t<_.length;++t)e[_.charCodeAt(t)]=t;return e}(),z=function(){for(var e=Array(256).fill(-1),t=0;t>8}},P=function(e,t){for(var r=new Uint8Array(e),n=0;n\"9\".charCodeAt(0))throw new Error(\"invalid number\");for(var i=a-\"0\".charCodeAt(0),s=0;s>8}if(i)throw new Error(\"number is out of range\")}return r},T=function(e,t){var r=\"-\"===t[0];r&&(t=t.substr(1));var n=P(e,t);if(r){if(N(n),!E(n))throw new Error(\"number is out of range\")}else if(E(n))throw new Error(\"number is out of range\");return n},C=function(e,t){void 0===t&&(t=1);for(var r=Array(t).fill(\"0\".charCodeAt(0)),n=e.length-1;n>=0;--n){for(var a=e[n],i=0;i>8}n&&t.push(n)}for(var s,o=m(e);!(s=o()).done&&\"1\"===s.value;)t.push(0);return t.reverse(),new Uint8Array(t)}(t);for(var r=new Uint8Array(e),n=0;n>8}if(a)throw new Error(\"base-58 value is out of range\")}return r.reverse(),r},O=function(e){for(var t,r=[],n=m(e);!(t=n()).done;){for(var a=t.value,i=0;i>2,n=3*r;t>0&&\"=\"===e[t-1]&&(n-=\"=\"===e[t-2]?2:1);for(var a=new Uint8Array(n),i=0;i>4,3*i+1>2),3*i+2t;)t=Math.ceil(1.5*t);var r=new Uint8Array(t);r.set(this.array),this.array=r}},t.haveReadData=function(){return this.readPosthis.length)throw new Error(\"Read past end of buffer\");var t=new Uint8Array(this.array.buffer,this.array.byteOffset+this.readPos,e);return this.readPos+=e,t},t.skip=function(e){if(this.readPos+e>this.length)throw new Error(\"Read past end of buffer\");this.readPos+=e},t.pushUint16=function(e){this.push(e>>0&255,e>>8&255)},t.getUint16=function(){var e=0;return(e|=this.get()<<0)|this.get()<<8},t.pushUint32=function(e){this.push(e>>0&255,e>>8&255,e>>16&255,e>>24&255)},t.getUint32=function(){var e=0;return e|=this.get()<<0,e|=this.get()<<8,e|=this.get()<<16,(e|=this.get()<<24)>>>0},t.pushNumberAsUint64=function(e){this.pushUint32(e>>>0),this.pushUint32(Math.floor(e/4294967296)>>>0)},t.getUint64AsNumber=function(){var e=this.getUint32();return 4294967296*(this.getUint32()>>>0)+(e>>>0)},t.pushVaruint32=function(e){for(;;){if(!(e>>>7)){this.push(e);break}this.push(128|127&e),e>>>=7}},t.getVaruint32=function(){for(var e=0,t=0;;){var r=this.get();if(e|=(127&r)<>>0},t.pushVarint32=function(e){this.pushVaruint32(e<<1^e>>31)},t.getVarint32=function(){var e=this.getVaruint32();return 1&e?~e>>1|2147483648:e>>>1},t.pushFloat32=function(e){this.pushArray(new Uint8Array(new Float32Array([e]).buffer))},t.getFloat32=function(){return new Float32Array(this.getUint8Array(4).slice().buffer)[0]},t.pushFloat64=function(e){this.pushArray(new Uint8Array(new Float64Array([e]).buffer))},t.getFloat64=function(){return new Float64Array(this.getUint8Array(8).slice().buffer)[0]},t.pushName=function(e){if(\"string\"!=typeof e)throw new Error(\"Expected string containing name\");if(!new RegExp(/^[.1-5a-z]{0,12}[.1-5a-j]?$/).test(e))throw new Error(\"Name should be less than 13 characters, or less than 14 if last character is between 1-5 or a-j, and only contain the following symbols .12345abcdefghijklmnopqrstuvwxyz\");for(var t=function(e){return e>=\"a\".charCodeAt(0)&&e<=\"z\".charCodeAt(0)?e-\"a\".charCodeAt(0)+6:e>=\"1\".charCodeAt(0)&&e<=\"5\".charCodeAt(0)?e-\"1\".charCodeAt(0)+1:0},r=new Uint8Array(8),n=63,a=0;a=0;--s)n>=0&&(r[Math.floor(n/8)]|=(i>>s&1)<=0;){for(var n=0,a=0;a<5;++a)r>=0&&(n=n<<1|e[Math.floor(r/8)]>>r%8&1,--r);t+=n>=6?String.fromCharCode(n+\"a\".charCodeAt(0)-6):n>=1?String.fromCharCode(n+\"1\".charCodeAt(0)-1):\".\"}for(;t.endsWith(\".\");)t=t.substr(0,t.length-1);return t},t.pushBytes=function(e){this.pushVaruint32(e.length),this.pushArray(e)},t.getBytes=function(){return this.getUint8Array(this.getVaruint32())},t.pushString=function(e){this.pushBytes(this.textEncoder.encode(e))},t.getString=function(){return this.textDecoder.decode(this.getBytes())},t.pushSymbolCode=function(e){if(\"string\"!=typeof e)throw new Error(\"Expected string containing symbol_code\");var t=[];for(t.push.apply(t,this.textEncoder.encode(e));t.length<8;)t.push(0);this.pushArray(t.slice(0,8))},t.getSymbolCode=function(){var e,t=this.getUint8Array(8);for(e=0;e=\"0\".charCodeAt(0)&&e.charCodeAt(t)<=\"9\".charCodeAt(0);)a=!0,r+=e[t],++t;if(!a)throw new Error(\"Asset must begin with a number\");if(\".\"===e[t])for(++t;t=\"0\".charCodeAt(0)&&e.charCodeAt(t)<=\"9\".charCodeAt(0);)r+=e[t],++n,++t;var i=e.substr(t).trim();this.pushArray(T(8,r)),this.pushSymbol({name:i,precision:n})},t.getAsset=function(){var e=this.getUint8Array(8),t=this.getSymbol(),r=t.name,n=t.precision,a=U(e,n+1);return n&&(a=a.substr(0,a.length-n)+\".\"+a.substr(a.length-n)),a+\" \"+r},t.pushPublicKey=function(e){var t=F(e);this.push(t.type),this.pushArray(t.data)},t.getPublicKey=function(){var e,t=this.get();if(t===b.wa){var r=this.readPos;this.skip(34),this.skip(this.getVaruint32()),e=new Uint8Array(this.array.buffer,this.array.byteOffset+r,this.readPos-r)}else e=this.getUint8Array(33);return L({type:t,data:e})},t.pushPrivateKey=function(e){var t=V(e);this.push(t.type),this.pushArray(t.data)},t.getPrivateKey=function(){var e=this.get(),t=this.getUint8Array(32);return H({type:e,data:t})},t.pushSignature=function(e){var t=q(e);this.push(t.type),this.pushArray(t.data)},t.getSignature=function(){var e,t=this.get();if(t===b.wa){var r=this.readPos;this.skip(65),this.skip(this.getVaruint32()),this.skip(this.getVaruint32()),e=new Uint8Array(this.array.buffer,this.array.byteOffset+r,this.readPos-r)}else e=this.getUint8Array(65);return Y({type:t,data:e})},e}(),X=function(e){return e.startsWith(\"eosio::abi/1.\")},$=function(e){var t=Date.parse(e);if(Number.isNaN(t))throw new Error(\"Invalid time format\");return t},ee=function(e){return Math.round(1e3*$(e+\"Z\"))},te=function(e){var t=new Date(e/1e3).toISOString();return t.substr(0,t.length-1)},re=function(e){return Math.round($(e+\"Z\")/1e3)},ne=function(e){var t=new Date(1e3*e).toISOString();return t.substr(0,t.length-1)},ae=function(e){return Math.round(($(e+\"Z\")-9466848e5)/500)},ie=function(e){var t=new Date(500*e+9466848e5).toISOString();return t.substr(0,t.length-1)},se=function(e){if(\"string\"!=typeof e)throw new Error(\"Expected string containing symbol\");var t=e.match(/^([0-9]+),([A-Z]+)$/);if(!t)throw new Error(\"Invalid symbol\");return{name:t[2],precision:+t[1]}},oe=function(e){return e.precision+\",\"+e.name},ue=function(e){for(var t,r=\"\",n=m(e);!(t=n()).done;)r+=(\"00\"+t.value.toString(16)).slice(-2);return r.toUpperCase()},ce=function(e){if(\"string\"!=typeof e)throw new Error(\"Expected string containing hex digits\");if(e.length%2)throw new Error(\"Odd number of hex digits\");for(var t=e.length/2,r=new Uint8Array(t),n=0;n=this.fields.length)throw new Error(\"type index \"+n+\" is not valid for variant\");var a=this.fields[n];return[a.name,a.type.deserialize(e,t,r)]}function ve(e,t,r){e.pushVaruint32(t.length);for(var n,a=m(t);!(n=a()).done;)this.arrayOf.serialize(e,n.value,r,!1)}function ge(e,t){for(var r=e.getVaruint32(),n=[],a=0;a\",aliasOfName:\"\",arrayOf:void 0,optionalOf:void 0,extensionOf:void 0,baseName:\"\",base:void 0,fields:[],serialize:le,deserialize:fe},e)},ze=function(e,t){if(Number.isNaN(+e)||Number.isNaN(+t)||\"number\"!=typeof e&&\"string\"!=typeof e)throw new Error(\"Expected number\");if(+e!=+t)throw new Error(\"Number is out of range\");return+e},Ee=function(){var e=new Map(Object.entries({bool:Se({name:\"bool\",serialize:function(e,t){if(\"boolean\"!=typeof t&&(\"number\"!=typeof t||1!==t&&0!==t))throw new Error(\"Expected boolean or number equal to 1 or 0\");e.push(t?1:0)},deserialize:function(e){return!!e.get()}}),uint8:Se({name:\"uint8\",serialize:function(e,t){e.push(ze(t,255&t))},deserialize:function(e){return e.get()}}),int8:Se({name:\"int8\",serialize:function(e,t){e.push(ze(t,t<<24>>24))},deserialize:function(e){return e.get()<<24>>24}}),uint16:Se({name:\"uint16\",serialize:function(e,t){e.pushUint16(ze(t,65535&t))},deserialize:function(e){return e.getUint16()}}),int16:Se({name:\"int16\",serialize:function(e,t){e.pushUint16(ze(t,t<<16>>16))},deserialize:function(e){return e.getUint16()<<16>>16}}),uint32:Se({name:\"uint32\",serialize:function(e,t){e.pushUint32(ze(t,t>>>0))},deserialize:function(e){return e.getUint32()}}),uint64:Se({name:\"uint64\",serialize:function(e,t){e.pushArray(P(8,\"\"+t))},deserialize:function(e){return C(e.getUint8Array(8))}}),int64:Se({name:\"int64\",serialize:function(e,t){e.pushArray(T(8,\"\"+t))},deserialize:function(e){return U(e.getUint8Array(8))}}),int32:Se({name:\"int32\",serialize:function(e,t){e.pushUint32(ze(t,0|t))},deserialize:function(e){return 0|e.getUint32()}}),varuint32:Se({name:\"varuint32\",serialize:function(e,t){e.pushVaruint32(ze(t,t>>>0))},deserialize:function(e){return e.getVaruint32()}}),varint32:Se({name:\"varint32\",serialize:function(e,t){e.pushVarint32(ze(t,0|t))},deserialize:function(e){return e.getVarint32()}}),uint128:Se({name:\"uint128\",serialize:function(e,t){e.pushArray(P(16,\"\"+t))},deserialize:function(e){return C(e.getUint8Array(16))}}),int128:Se({name:\"int128\",serialize:function(e,t){e.pushArray(T(16,\"\"+t))},deserialize:function(e){return U(e.getUint8Array(16))}}),float32:Se({name:\"float32\",serialize:function(e,t){e.pushFloat32(t)},deserialize:function(e){return e.getFloat32()}}),float64:Se({name:\"float64\",serialize:function(e,t){e.pushFloat64(t)},deserialize:function(e){return e.getFloat64()}}),float128:Se({name:\"float128\",serialize:function(e,t){e.pushUint8ArrayChecked(ce(t),16)},deserialize:function(e){return ue(e.getUint8Array(16))}}),bytes:Se({name:\"bytes\",serialize:function(e,t){t instanceof Uint8Array||Array.isArray(t)?e.pushBytes(t):e.pushBytes(ce(t))},deserialize:function(e,t){return t&&t.options.bytesAsUint8Array?e.getBytes():ue(e.getBytes())}}),string:Se({name:\"string\",serialize:function(e,t){e.pushString(t)},deserialize:function(e){return e.getString()}}),name:Se({name:\"name\",serialize:function(e,t){e.pushName(t)},deserialize:function(e){return e.getName()}}),time_point:Se({name:\"time_point\",serialize:function(e,t){e.pushNumberAsUint64(ee(t))},deserialize:function(e){return te(e.getUint64AsNumber())}}),time_point_sec:Se({name:\"time_point_sec\",serialize:function(e,t){e.pushUint32(re(t))},deserialize:function(e){return ne(e.getUint32())}}),block_timestamp_type:Se({name:\"block_timestamp_type\",serialize:function(e,t){e.pushUint32(ae(t))},deserialize:function(e){return ie(e.getUint32())}}),symbol_code:Se({name:\"symbol_code\",serialize:function(e,t){e.pushSymbolCode(t)},deserialize:function(e){return e.getSymbolCode()}}),symbol:Se({name:\"symbol\",serialize:function(e,t){e.pushSymbol(se(t))},deserialize:function(e){return oe(e.getSymbol())}}),asset:Se({name:\"asset\",serialize:function(e,t){e.pushAsset(t)},deserialize:function(e){return e.getAsset()}}),checksum160:Se({name:\"checksum160\",serialize:function(e,t){e.pushUint8ArrayChecked(ce(t),20)},deserialize:function(e){return ue(e.getUint8Array(20))}}),checksum256:Se({name:\"checksum256\",serialize:function(e,t){e.pushUint8ArrayChecked(ce(t),32)},deserialize:function(e){return ue(e.getUint8Array(32))}}),checksum512:Se({name:\"checksum512\",serialize:function(e,t){e.pushUint8ArrayChecked(ce(t),64)},deserialize:function(e){return ue(e.getUint8Array(64))}}),public_key:Se({name:\"public_key\",serialize:function(e,t){e.pushPublicKey(t)},deserialize:function(e){return e.getPublicKey()}}),private_key:Se({name:\"private_key\",serialize:function(e,t){e.pushPrivateKey(t)},deserialize:function(e){return e.getPrivateKey()}}),signature:Se({name:\"signature\",serialize:function(e,t){e.pushSignature(t)},deserialize:function(e){return e.getSignature()}})}));return e.set(\"extended_asset\",Se({name:\"extended_asset\",baseName:\"\",fields:[{name:\"quantity\",typeName:\"asset\",type:e.get(\"asset\")},{name:\"contract\",typeName:\"name\",type:e.get(\"name\")}],serialize:pe,deserialize:he})),e},Ne=function(){var e=Ee();return e.set(\"extensions_entry\",Se({name:\"extensions_entry\",baseName:\"\",fields:[{name:\"tag\",typeName:\"uint16\",type:void 0},{name:\"value\",typeName:\"bytes\",type:void 0}],serialize:pe,deserialize:he})),e.set(\"type_def\",Se({name:\"type_def\",baseName:\"\",fields:[{name:\"new_type_name\",typeName:\"string\",type:void 0},{name:\"type\",typeName:\"string\",type:void 0}],serialize:pe,deserialize:he})),e.set(\"field_def\",Se({name:\"field_def\",baseName:\"\",fields:[{name:\"name\",typeName:\"string\",type:void 0},{name:\"type\",typeName:\"string\",type:void 0}],serialize:pe,deserialize:he})),e.set(\"struct_def\",Se({name:\"struct_def\",baseName:\"\",fields:[{name:\"name\",typeName:\"string\",type:void 0},{name:\"base\",typeName:\"string\",type:void 0},{name:\"fields\",typeName:\"field_def[]\",type:void 0}],serialize:pe,deserialize:he})),e.set(\"action_def\",Se({name:\"action_def\",baseName:\"\",fields:[{name:\"name\",typeName:\"name\",type:void 0},{name:\"type\",typeName:\"string\",type:void 0},{name:\"ricardian_contract\",typeName:\"string\",type:void 0}],serialize:pe,deserialize:he})),e.set(\"table_def\",Se({name:\"table_def\",baseName:\"\",fields:[{name:\"name\",typeName:\"name\",type:void 0},{name:\"index_type\",typeName:\"string\",type:void 0},{name:\"key_names\",typeName:\"string[]\",type:void 0},{name:\"key_types\",typeName:\"string[]\",type:void 0},{name:\"type\",typeName:\"string\",type:void 0}],serialize:pe,deserialize:he})),e.set(\"clause_pair\",Se({name:\"clause_pair\",baseName:\"\",fields:[{name:\"id\",typeName:\"string\",type:void 0},{name:\"body\",typeName:\"string\",type:void 0}],serialize:pe,deserialize:he})),e.set(\"error_message\",Se({name:\"error_message\",baseName:\"\",fields:[{name:\"error_code\",typeName:\"uint64\",type:void 0},{name:\"error_msg\",typeName:\"string\",type:void 0}],serialize:pe,deserialize:he})),e.set(\"variant_def\",Se({name:\"variant_def\",baseName:\"\",fields:[{name:\"name\",typeName:\"string\",type:void 0},{name:\"types\",typeName:\"string[]\",type:void 0}],serialize:pe,deserialize:he})),e.set(\"action_result\",Se({name:\"action_result\",baseName:\"\",fields:[{name:\"name\",typeName:\"name\",type:void 0},{name:\"result_type\",typeName:\"string\",type:void 0}],serialize:pe,deserialize:he})),e.set(\"primary_key_index_def\",Se({name:\"primary_key_index_def\",baseName:\"\",fields:[{name:\"name\",typeName:\"name\",type:void 0},{name:\"type\",typeName:\"string\",type:void 0}],serialize:pe,deserialize:he})),e.set(\"secondary_index_def\",Se({name:\"secondary_index_def\",baseName:\"\",fields:[{name:\"type\",typeName:\"string\",type:void 0}],serialize:pe,deserialize:he})),e.set(\"secondary_indices\",Se({name:\"secondary_indices\",baseName:\"\",fields:[{name:\"name\",typeName:\"name\",type:void 0},{name:\"secondary_index_def\",typeName:\"secondary_index_def\",type:void 0}],serialize:we,deserialize:_e})),e.set(\"kv_table_entry_def\",Se({name:\"kv_table_entry_def\",baseName:\"\",fields:[{name:\"type\",typeName:\"string\",type:void 0},{name:\"primary_index\",typeName:\"primary_key_index_def\",type:void 0},{name:\"secondary_indices\",typeName:\"secondary_indices\",type:void 0}],serialize:pe,deserialize:he})),e.set(\"kv_table\",Se({name:\"kv_table\",baseName:\"\",fields:[{name:\"name\",typeName:\"name\",type:void 0},{name:\"kv_table_entry_def\",typeName:\"kv_table_entry_def\",type:void 0}],serialize:we,deserialize:_e})),e.set(\"abi_def\",Se({name:\"abi_def\",baseName:\"\",fields:[{name:\"version\",typeName:\"string\",type:void 0},{name:\"types\",typeName:\"type_def[]\",type:void 0},{name:\"structs\",typeName:\"struct_def[]\",type:void 0},{name:\"actions\",typeName:\"action_def[]\",type:void 0},{name:\"tables\",typeName:\"table_def[]\",type:void 0},{name:\"ricardian_clauses\",typeName:\"clause_pair[]\",type:void 0},{name:\"error_messages\",typeName:\"error_message[]\",type:void 0},{name:\"abi_extensions\",typeName:\"extensions_entry[]\",type:void 0},{name:\"variants\",typeName:\"variant_def[]$\",type:void 0},{name:\"action_results\",typeName:\"action_result[]$\",type:void 0},{name:\"kv_tables\",typeName:\"kv_table$\",type:void 0}],serialize:pe,deserialize:he})),e},Pe=function e(t,r){var n=t.get(r);if(n&&n.aliasOfName)return e(t,n.aliasOfName);if(n)return n;if(r.endsWith(\"[]\"))return Se({name:r,arrayOf:e(t,r.substr(0,r.length-2)),serialize:ve,deserialize:ge});if(r.endsWith(\"?\"))return Se({name:r,optionalOf:e(t,r.substr(0,r.length-1)),serialize:me,deserialize:be});if(r.endsWith(\"$\"))return Se({name:r,extensionOf:e(t,r.substr(0,r.length-1)),serialize:xe,deserialize:ke});throw new Error(\"Unknown type: \"+r)},Te=function(e,t){var r=new Map(e);if(t&&t.types)for(var n,a=m(t.types);!(n=a()).done;){var i=n.value,s=i.new_type_name;r.set(s,Se({name:s,aliasOfName:i.type}))}if(t&&t.structs)for(var o,u=m(t.structs);!(o=u()).done;){var c=o.value,l=c.name;r.set(l,Se({name:l,baseName:c.base,fields:c.fields.map((function(e){return{name:e.name,typeName:e.type,type:void 0}})),serialize:pe,deserialize:he}))}if(t&&t.variants)for(var f,p=m(t.variants);!(f=p()).done;){var h=f.value,y=h.name;r.set(y,Se({name:y,fields:h.types.map((function(e){return{name:e,typeName:e,type:void 0}})),serialize:ye,deserialize:de}))}for(var d,v=m(r);!(d=v()).done;){var g=d.value[1];g.baseName&&(g.base=Pe(r,g.baseName));for(var b,x=m(g.fields);!(b=x()).done;){var k=b.value;k.type=Pe(r,k.typeName)}}return r},Ce=function(e,t){var r,n=e.header?e.header.timestamp:e.timestamp,a=parseInt((r=e.id.substr(16,8)).substr(6,2)+r.substr(4,2)+r.substr(2,2)+r.substr(0,2),16);return{expiration:ne(re(n)+t),ref_block_num:65535&e.block_num,ref_block_prefix:a}},Ue=function(e,t,r,n){var a=e.actions.get(r);if(!a)throw new Error(\"Unknown action \"+r+\" in contract \"+t);var i=new Q;return a.serialize(i,n),ue(i.asUint8Array())},Ke=function(e,t,r,n,a){return{account:t,name:r,authorization:n,data:Ue(e,t,r,a)}},Oe=function(e,t,r,n){var a=e.actions.get(r);if(\"string\"==typeof n&&(n=ce(n)),!a)throw new Error(\"Unknown action \"+r+\" in contract \"+t);var i=new Q;return i.pushArray(n),a.deserialize(i)},Be=function(e,t,r,n,a){return{account:t,name:r,authorization:n,data:Oe(e,t,r,a)}},Ie=function(e,t){var r,n;if(null===t){var a=[Ve.null_t,t];r=a[0],n=a[1]}else if(\"string\"==typeof t){var i=[Ve.string,t];r=i[0],n=i[1]}else if(\"number\"==typeof t){var s=[Ve.int32,t];r=s[0],n=s[1]}else if(t instanceof Uint8Array){var o=[Ve.bytes,t];r=o[0],n=o[1]}else if(Array.isArray(t)){var u=[Ve.any_array,t];r=u[0],n=u[1]}else if(2===Object.keys(t).length&&t.hasOwnProperty(\"type\")&&t.hasOwnProperty(\"value\")){var c=[Ve[t.type],t.value];r=c[0],n=c[1]}else{var l=[Ve.any_object,t];r=l[0],n=l[1]}e.pushVaruint32(r.index),r.type.serialize(e,n)},Me=function(e,t){var r=e.getVaruint32();if(r>=We.length)throw new Error(\"Tried to deserialize unknown anyvar type\");var n=We[r],a=n.type.deserialize(e,t);return t&&t.options.useShortForm||n.useShortForm?a:{type:n.type.name,value:a}},Re=function(e){return Me(e,new J({useShortForm:!0}))},Fe=function(e,t){var r=Object.entries(t);e.pushVaruint32(r.length);for(var n=0,a=r;n3&&(e-=4):e=this.signature.type===b.wa?this.signature.data[0]:0,{r:t,s:r,recoveryParam:3&e}},t.toString=function(){return Y(this.signature)},t.toBinary=function(){return this.signature.data},t.getType=function(){return this.signature.type},t.verify=function(e,t,r,n){void 0===r&&(r=!0),void 0===n&&(n=\"utf8\"),r&&(\"string\"==typeof e&&(e=Buffer.from(e,n)),e=this.ec.hash().update(e).digest());var a=this.toElliptic(),i=t.toElliptic();return this.ec.verify(e,a,i,n)},t.recover=function(e,t,r){void 0===t&&(t=!0),void 0===r&&(r=\"utf8\"),t&&(\"string\"==typeof e&&(e=Buffer.from(e,r)),e=this.ec.hash().update(e).digest());var n=this.toElliptic(),a=this.ec.recoverPubKey(e,n,n.recoveryParam,r),i=this.ec.keyFromPublic(a);return Je.fromElliptic(i,this.getType(),this.ec)},e}(),$e=function(){function e(e,t){this.key=e,this.ec=t}e.fromElliptic=function(t,r,n){return n||(n=Ye(r)),new e({type:r,data:t.getPrivate().toArrayLike(Buffer,\"be\",32)},n)},e.fromString=function(t,r){var n=V(t);return r||(r=Ye(n.type)),new e(n,r)};var t=e.prototype;return t.toElliptic=function(){return this.ec.keyFromPrivate(this.key.data)},t.toLegacyString=function(){return W(this.key)},t.toString=function(){return H(this.key)},t.getType=function(){return this.key.type},t.getPublicKey=function(){var e=this.toElliptic();return Je.fromElliptic(e,this.getType(),this.ec)},t.sign=function(e,t,r){var n=this;void 0===t&&(t=!0),void 0===r&&(r=\"utf8\"),t&&(\"string\"==typeof e&&(e=Buffer.from(e,r)),e=this.ec.hash().update(e).digest());var a,i,s=0,o=function(t){var r=n.toElliptic().sign(e,t);return Xe.fromElliptic(r,n.getType(),n.ec)};if(this.key.type===b.k1)do{a=o({canonical:!0,pers:[++s]})}while(128&(i=a.toBinary())[1]||0===i[1]&&!(128&i[2])||128&i[33]||!(0!==i[33]||128&i[34]));else a=o({canonical:!0});return a},t.isValid=function(){try{return this.toElliptic().validate().result}catch(e){return!1}},e}(),et={__proto__:null,generateKeyPair:function(e,t){if(void 0===t&&(t={}),!t.secureEnv)throw new Error(\"Key generation is completely INSECURE in production environments in the browser. If you are absolutely certain this does NOT describe your environment, set `secureEnv` in your options to `true`. If this does describe your environment and you set `secureEnv` to `true`, YOU DO SO AT YOUR OWN RISK AND THE RISK OF YOUR USERS.\");var r,n=(r=new i.ec(e===b.k1?\"secp256k1\":\"p256\")).genKeyPair(t.ecOptions);return{publicKey:Je.fromElliptic(n,e,r),privateKey:$e.fromElliptic(n,e,r)}},PrivateKey:$e,PublicKey:Je,Signature:Xe,constructElliptic:Ye},tt=new i.ec(\"secp256k1\"),rt=function(e,t,r,n){void 0===n&&(n=tt);var a=Buffer.concat([Buffer.from(e,\"hex\"),Buffer.from(t),Buffer.from(r?new Uint8Array(n.hash().update(r).digest()):new Uint8Array(32))]);return n.hash().update(a).digest()},nt=function(){function e(e){this.keys=new Map,this.availableKeys=[];for(var t,r=m(e);!(t=r()).done;){var n=$e.fromString(t.value),a=n.toElliptic(),i=n.getPublicKey().toString();this.keys.set(i,a),this.availableKeys.push(i)}}var t=e.prototype;return t.getAvailableKeys=function(){var e=l(k.mark((function e(){return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",this.availableKeys);case 1:case\"end\":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.sign=function(){var e=l(k.mark((function e(t){var r,n,a,i,s,o,u,c,l,f,p,h;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(r=t.requiredKeys,i=rt(t.chainId,n=t.serializedTransaction,a=t.serializedContextFreeData,tt),s=[],o=m(r);!(u=o()).done;)l=Je.fromString(c=u.value),(f=this.keys.get(D(c)))&&(p=$e.fromElliptic(f,l.getType()),h=p.sign(i,!1),s.push(h.toString()));return e.abrupt(\"return\",{signatures:s,serializedTransaction:n,serializedContextFreeData:a});case 5:case\"end\":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),e}(),at={version:\"eosio::abi/1.0\",types:[{new_type_name:\"account_name\",type:\"name\"},{new_type_name:\"action_name\",type:\"name\"},{new_type_name:\"permission_name\",type:\"name\"}],structs:[{name:\"permission_level\",base:\"\",fields:[{name:\"actor\",type:\"account_name\"},{name:\"permission\",type:\"permission_name\"}]},{name:\"action\",base:\"\",fields:[{name:\"account\",type:\"account_name\"},{name:\"name\",type:\"action_name\"},{name:\"authorization\",type:\"permission_level[]\"},{name:\"data\",type:\"bytes\"}]},{name:\"extension\",base:\"\",fields:[{name:\"type\",type:\"uint16\"},{name:\"data\",type:\"bytes\"}]},{name:\"transaction_header\",base:\"\",fields:[{name:\"expiration\",type:\"time_point_sec\"},{name:\"ref_block_num\",type:\"uint16\"},{name:\"ref_block_prefix\",type:\"uint32\"},{name:\"max_net_usage_words\",type:\"varuint32\"},{name:\"max_cpu_usage_ms\",type:\"uint8\"},{name:\"delay_sec\",type:\"varuint32\"}]},{name:\"transaction\",base:\"transaction_header\",fields:[{name:\"context_free_actions\",type:\"action[]\"},{name:\"actions\",type:\"action[]\"},{name:\"transaction_extensions\",type:\"extension[]\"}]}],actions:[],tables:[],ricardian_clauses:[],error_messages:[],abi_extensions:[]},it=function(){function e(e){this.contracts=new Map,this.cachedAbis=new Map,this.rpc=e.rpc,this.authorityProvider=e.authorityProvider||e.rpc,this.abiProvider=e.abiProvider||e.rpc,e.signatureProvider&&(this.signatureProvider=e.signatureProvider),this.abiTypes=Te(Ne()),this.transactionTypes=Te(Ee(),at)}var r=e.prototype;return r.rawAbiToJson=function(e){var t=new Q({array:e});if(!X(t.getString()))throw new Error(\"Unsupported abi version\");return t.restartRead(),this.abiTypes.get(\"abi_def\").deserialize(t)},r.jsonToRawAbi=function(e){var t=new Q;if(this.abiTypes.get(\"abi_def\").serialize(t,e),!X(t.getString()))throw new Error(\"Unsupported abi version\");return t.asUint8Array()},r.getCachedAbi=function(){var e=l(k.mark((function e(t,r){var n,a,i;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===r&&(r=!1),r||!this.cachedAbis.get(t)){e.next=3;break}return e.abrupt(\"return\",this.cachedAbis.get(t));case 3:return e.prev=3,e.next=6,this.abiProvider.getRawAbi(t);case 6:i=this.rawAbiToJson(a=e.sent.abi),n={rawAbi:a,abi:i},e.next=15;break;case 11:throw e.prev=11,e.t0=e.catch(3),e.t0.message=\"fetching abi for \"+t+\": \"+e.t0.message,e.t0;case 15:if(n){e.next=17;break}throw new Error(\"Missing abi for \"+t);case 17:return this.cachedAbis.set(t,n),e.abrupt(\"return\",n);case 19:case\"end\":return e.stop()}}),e,this,[[3,11]])})));return function(t,r){return e.apply(this,arguments)}}(),r.getAbi=function(){var e=l(k.mark((function e(t,r){return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===r&&(r=!1),e.next=3,this.getCachedAbi(t,r);case 3:return e.abrupt(\"return\",e.sent.abi);case 4:case\"end\":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),r.getTransactionAbis=function(){var e=l(k.mark((function e(t,r){var n,a,i,s,o=this;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===r&&(r=!1),n=(t.context_free_actions||[]).concat(t.actions),a=n.map((function(e){return e.account})),i=new Set(a),s=Array.from(i).map(function(){var e=l(k.mark((function e(t){return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.getCachedAbi(t,r);case 2:return e.abrupt(\"return\",{accountName:t,abi:e.sent.rawAbi});case 5:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),e.abrupt(\"return\",Promise.all(s));case 6:case\"end\":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),r.getContract=function(){var e=l(k.mark((function e(t,r){var n,a,i,s,o,u,c;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===r&&(r=!1),r||!this.contracts.get(t)){e.next=3;break}return e.abrupt(\"return\",this.contracts.get(t));case 3:return e.next=5,this.getAbi(t,r);case 5:for(n=e.sent,a=Te(Ee(),n),i=new Map,s=m(n.actions);!(o=s()).done;)i.set((u=o.value).name,Pe(a,u.type));return this.contracts.set(t,c={types:a,actions:i}),e.abrupt(\"return\",c);case 12:case\"end\":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),r.serialize=function(e,t,r){this.transactionTypes.get(t).serialize(e,r)},r.deserialize=function(e,t){return this.transactionTypes.get(t).deserialize(e)},r.serializeTransaction=function(e){var t=new Q;return this.serialize(t,\"transaction\",Object.assign({max_net_usage_words:0,max_cpu_usage_ms:0,delay_sec:0,context_free_actions:[],actions:[],transaction_extensions:[]},e)),t.asUint8Array()},r.serializeContextFreeData=function(e){if(e&&e.length){var t=new Q;t.pushVaruint32(e.length);for(var r,n=m(e);!(r=n()).done;)t.pushBytes(r.value);return t.asUint8Array()}},r.deserializeTransaction=function(e){var t=new Q;return t.pushArray(e),this.deserialize(t,\"transaction\")},r.serializeActions=function(){var e=l(k.mark((function e(t){var r=this;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all(t.map(function(){var e=l(k.mark((function e(t){var n,a,i,s,o;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.account,a=t.name,i=t.authorization,s=t.data,e.next=3,r.getContract(n);case 3:if(o=e.sent,\"object\"==typeof s){e.next=6;break}return e.abrupt(\"return\",t);case 6:return e.abrupt(\"return\",Ke(o,n,a,i,s));case 7:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 2:return e.abrupt(\"return\",e.sent);case 3:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),r.deserializeActions=function(){var e=l(k.mark((function e(t){var r=this;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all(t.map(function(){var e=l(k.mark((function e(t){var n,a,i,s;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.account,a=t.name,i=t.authorization,s=t.data,e.next=3,r.getContract(n);case 3:return e.abrupt(\"return\",Be(e.sent,n,a,i,s));case 5:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 2:return e.abrupt(\"return\",e.sent);case 3:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),r.deserializeActionsSync=function(){var e=l(k.mark((function e(t){var r,n,a,i,s,o,u,c;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=[],n=m(t);case 2:if((a=n()).done){e.next=10;break}return s=(i=a.value).account,o=i.name,u=i.authorization,c=i.data,e.next=6,this.getContract(s);case 6:r.push(Be(e.sent,s,o,u,c));case 8:e.next=2;break;case 10:return e.abrupt(\"return\",r);case 11:case\"end\":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),r.deserializeTransactionWithActions=function(){var e=l(k.mark((function e(t){var r,n;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return\"string\"==typeof t&&(t=ce(t)),r=this.deserializeTransaction(t),e.next=4,this.deserializeActionsSync(r.context_free_actions);case 4:return n=e.sent,e.next=7,this.deserializeActionsSync(r.actions);case 7:return e.abrupt(\"return\",Object.assign({},r,{context_free_actions:n,actions:e.sent}));case 9:case\"end\":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),r.deflateSerializedArray=function(e){return t.deflate(e,{level:9})},r.inflateSerializedArray=function(e){return t.inflate(e)},r.transact=function(){var e=l(k.mark((function e(t,r){var n,a,i,s,o,u,c,l,f,p,h,y,d,v,g,m,b;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=void 0===(a=(n=void 0===r?{}:r).broadcast)||a,o=void 0===(s=n.sign)||s,u=n.compression,c=n.blocksBehind,l=n.useLastIrreversible,f=n.expireSeconds,p=n.requiredKeys,h=n.transactionHeader,e.next=3,this.rpc.get_info();case 3:if(y=e.sent,h){e.next=24;break}if(\"number\"!=typeof c||!l){e.next=10;break}throw new Error(\"Use either blocksBehind or useLastIrreversible\");case 10:if(\"number\"==typeof c||l){e.next=14;break}throw new Error(\"Must provide one blocksBehind or useLastIrreversible\");case 14:if(f){e.next=18;break}throw new Error(\"Must provide expireSeconds\");case 18:return e.next=20,this.generateTapos(y,t,c,l,f);case 20:h=e.sent;case 22:if(this.hasRequiredTaposFields(h)){e.next=24;break}throw new Error(\"Required configuration or TAPOS fields are not present\");case 24:return e.next=26,this.getTransactionAbis(t);case 26:return d=e.sent,e.t0=Object,e.t1={},e.t2=h,e.next=32,this.serializeActions(t.context_free_actions||[]);case 32:return e.t3=e.sent,e.next=35,this.serializeActions(t.actions);case 35:if(e.t4=e.sent,e.t5={context_free_actions:e.t3,actions:e.t4},t=e.t0.assign.call(e.t0,e.t1,e.t2,e.t5),v=this.serializeTransaction(t),g=this.serializeContextFreeData(t.context_free_data),m={serializedTransaction:v,serializedContextFreeData:g,signatures:[]},!o){e.next=54;break}if(this.signatureProvider){e.next=44;break}throw new Error(\"No signature provider available\");case 44:if(p){e.next=51;break}return e.next=47,this.signatureProvider.getAvailableKeys();case 47:return b=e.sent,e.next=50,this.authorityProvider.getRequiredKeys({transaction:t,availableKeys:b});case 50:p=e.sent;case 51:return e.next=53,this.signatureProvider.sign({chainId:y.chain_id,requiredKeys:p,serializedTransaction:v,serializedContextFreeData:g,abis:d});case 53:m=e.sent;case 54:if(!i){e.next=58;break}if(!u){e.next=57;break}return e.abrupt(\"return\",this.pushCompressedSignedTransaction(m));case 57:return e.abrupt(\"return\",this.pushSignedTransaction(m));case 58:return e.abrupt(\"return\",Object.assign({},m,{transactionHeader:h}));case 59:case\"end\":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),r.transactWithDelay=function(){var e=l(k.mark((function e(t,r,n){var a,i,s;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=function(){return(i=l(k.mark((function e(t){return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",new Promise((function(e){setTimeout(e,t)})));case 1:case\"end\":return e.stop()}}),e)})))).apply(this,arguments)},a=function(e){return i.apply(this,arguments)},void 0===r&&(r={}),e.next=5,this.transact(t,r);case 5:return s=e.sent,e.next=8,a(n);case 8:return e.abrupt(\"return\",s);case 9:case\"end\":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),r.query=function(){var e=l(k.mark((function e(t,r,n,a){var i,s,o,u,c,l,f,p,h,y,d,v,g;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=a.sign,s=a.requiredKeys,u=void 0===(o=a.authorization)?[]:o,e.next=3,this.rpc.get_info();case 3:return c=e.sent,e.next=6,this.tryRefBlockFromGetInfo(c);case 6:if(l=e.sent,f=new Q,He(f,n),p=Object.assign({},Ce(l,1800),{context_free_actions:[],actions:[{account:t,name:\"queryit\",authorization:u,data:ue(f.asUint8Array())}]}),h=this.serializeTransaction(p),y=[],!i){e.next=29;break}if(this.signatureProvider){e.next=15;break}throw new Error(\"No signature provider available\");case 15:return e.next=17,this.getTransactionAbis(p);case 17:if(d=e.sent,s){e.next=25;break}return e.next=21,this.signatureProvider.getAvailableKeys();case 21:return v=e.sent,e.next=24,this.authorityProvider.getRequiredKeys({transaction:p,availableKeys:v});case 24:s=e.sent;case 25:return e.next=27,this.signatureProvider.sign({chainId:c.chain_id,requiredKeys:s,serializedTransaction:h,serializedContextFreeData:void 0,abis:d});case 27:y=e.sent.signatures;case 29:return e.next=31,this.rpc.send_transaction({signatures:y,compression:0,serializedTransaction:h});case 31:if(g=new Q({array:ce(e.sent.processed.action_traces[0][1].return_value)}),!r){e.next=37;break}return e.abrupt(\"return\",Re(g));case 37:return e.abrupt(\"return\",Me(g));case 38:case\"end\":return e.stop()}}),e,this)})));return function(t,r,n,a){return e.apply(this,arguments)}}(),r.pushSignedTransaction=function(){var e=l(k.mark((function e(t){return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",this.rpc.push_transaction({signatures:t.signatures,serializedTransaction:t.serializedTransaction,serializedContextFreeData:t.serializedContextFreeData}));case 2:case\"end\":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),r.pushCompressedSignedTransaction=function(){var e=l(k.mark((function e(t){var r,n,a,i;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.signatures,n=t.serializedContextFreeData,a=this.deflateSerializedArray(t.serializedTransaction),i=this.deflateSerializedArray(n||new Uint8Array(0)),e.abrupt(\"return\",this.rpc.push_transaction({signatures:r,compression:1,serializedTransaction:a,serializedContextFreeData:i}));case 4:case\"end\":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),r.generateTapos=function(){var e=l(k.mark((function e(t,r,n,a,i){var s;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===n&&(n=3),t){e.next=5;break}return e.next=4,this.rpc.get_info();case 4:t=e.sent;case 5:if(!a){e.next=10;break}return e.next=8,this.tryRefBlockFromGetInfo(t);case 8:return e.abrupt(\"return\",Object.assign({},Ce(e.sent,i),r));case 10:if(!((s=t.head_block_num-n)<=t.last_irreversible_block_num)){e.next=17;break}return e.next=14,this.tryGetBlockInfo(s);case 14:e.t0=e.sent,e.next=20;break;case 17:return e.next=19,this.tryGetBlockHeaderState(s);case 19:e.t0=e.sent;case 20:return e.abrupt(\"return\",Object.assign({},Ce(e.t0,i),r));case 22:case\"end\":return e.stop()}}),e,this)})));return function(t,r,n,a,i){return e.apply(this,arguments)}}(),r.hasRequiredTaposFields=function(e){return!(!e.expiration||\"number\"!=typeof e.ref_block_num||\"number\"!=typeof e.ref_block_prefix)},r.tryGetBlockHeaderState=function(){var e=l(k.mark((function e(t){return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.rpc.get_block_header_state(t);case 3:return e.abrupt(\"return\",e.sent);case 6:return e.prev=6,e.t0=e.catch(0),e.next=10,this.tryGetBlockInfo(t);case 10:return e.abrupt(\"return\",e.sent);case 11:case\"end\":return e.stop()}}),e,this,[[0,6]])})));return function(t){return e.apply(this,arguments)}}(),r.tryGetBlockInfo=function(){var e=l(k.mark((function e(t){return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.rpc.get_block_info(t);case 3:return e.abrupt(\"return\",e.sent);case 6:return e.prev=6,e.t0=e.catch(0),e.next=10,this.rpc.get_block(t);case 10:return e.abrupt(\"return\",e.sent);case 11:case\"end\":return e.stop()}}),e,this,[[0,6]])})));return function(t){return e.apply(this,arguments)}}(),r.tryRefBlockFromGetInfo=function(){var e=l(k.mark((function e(t){var r;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t.hasOwnProperty(\"last_irreversible_block_id\")&&t.hasOwnProperty(\"last_irreversible_block_num\")&&t.hasOwnProperty(\"last_irreversible_block_time\"))){e.next=4;break}return e.abrupt(\"return\",{block_num:t.last_irreversible_block_num,id:t.last_irreversible_block_id,timestamp:t.last_irreversible_block_time});case 4:return e.next=6,this.tryGetBlockInfo(t.last_irreversible_block_num);case 6:return e.abrupt(\"return\",{block_num:(r=e.sent).block_num,id:r.id,timestamp:r.timestamp});case 8:case\"end\":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),r.with=function(e){return new ot(this,e)},r.buildTransaction=function(e){var t=new st(this);return e?e(t):t},r.getAccountKeys=function(){var e=l(k.mark((function e(t,r){var n;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.rpc.get_account(t);case 3:if(!(n=e.sent.permissions.find((function(e){return e.perm_name===r})))){e.next=8;break}return e.abrupt(\"return\",n.required_auth.keys.map((function(e){return Je.fromString(e.key).toString()})));case 8:e.next=13;break;case 10:e.prev=10,e.t0=e.catch(0),console.log(e.t0);case 13:return e.abrupt(\"return\",[]);case 14:case\"end\":return e.stop()}}),e,this,[[0,10]])})));return function(t,r){return e.apply(this,arguments)}}(),r.checkIfKeysMatchTransaction=function(){var e=l(k.mark((function e(t){var r,n,a,i,s,o,u,c,l,f;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.actor,n=t.permission,a=t.transaction,i=t.signatures,s=t.chainId){e.next=6;break}return e.next=4,this.rpc.get_info();case 4:s=e.sent.chain_id;case 6:return e.next=8,this.getAccountKeys(r,n);case 8:return o=e.sent,e.next=11,this.serializeActions(a.context_free_actions||[]);case 11:return a.context_free_actions=e.sent,e.next=14,this.serializeActions(a.actions);case 14:return a.actions=e.sent,u=this.serializeTransaction(a),c=this.serializeContextFreeData(a.context_free_data),l=rt(s,u,c),f=o.some((function(e){return Xe.fromString(i[0]).verify(l,Je.fromString(e),!1)})),e.abrupt(\"return\",f);case 20:case\"end\":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),e}(),st=function(){function e(e){this.actions=[],this.contextFreeGroups=[],this.api=e}var t=e.prototype;return t.with=function(e){var t=new ot(this.api,e);return this.actions.push(t),t},t.associateContextFree=function(e){return this.contextFreeGroups.push(e),this},t.send=function(){var e=l(k.mark((function e(t){var r,n,a;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=[],n=[],a=this.actions.map((function(e){return e.serializedData})),e.next=5,Promise.all(this.contextFreeGroups.map(function(){var e=l(k.mark((function e(t){var i,s,o,u;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=t({cfd:r.length,cfa:n.length}),o=i.contextFreeAction,u=i.contextFreeData,(s=i.action)&&a.push(s),o&&n.push(o),u&&r.push(u);case 4:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 5:return this.contextFreeGroups=[],this.actions=[],e.next=9,this.api.transact({context_free_data:r,context_free_actions:n,actions:a},t);case 9:return e.abrupt(\"return\",e.sent);case 10:case\"end\":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),e}(),ot=function(){function e(e,t){this.api=e,this.accountName=t}return e.prototype.as=function(e){return void 0===e&&(e=[]),new ut(this,this.api,this.accountName,e&&\"string\"==typeof e?[{actor:e,permission:\"active\"}]:e)},e}(),ut=function(e,t,r,n){var a=this,i=t.cachedAbis.get(r);if(!i)throw new Error(\"ABI must be cached before using ActionBuilder, run api.getAbi()\");for(var s,o=Te(Ee(),i.abi),u=new Map,c=m(i.abi.actions);!(s=c()).done;){var l=s.value;u.set(l.name,Pe(o,l.type))}u.forEach((function(t,i){var s;Object.assign(a,((s={})[i]=function(){for(var a={},s=arguments.length,c=new Array(s),l=0;l=0&&(e=t.kyc_level.split(\",\").map((function(e){return e.split(\":\")[1]})).concat(e)),e}),[]);return e.isLightKYCVerified=r.every((function(e){return t.includes(e)})),e})),e.abrupt(\"return\",a);case 25:case\"end\":return e.stop()}}),e,this,[[12,20]])})))).apply(this,arguments)}function $t(e){return er.apply(this,arguments)}function er(){return(er=l(k.mark((function e(t){var r,n,a,i=this;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.actor,a=t.expectedTier,(r=t.chain)&&n&&a){e.next=3;break}throw new Error(\"Invalid parameters\");case 3:return e.abrupt(\"return\",new Promise(function(){var e=l(k.mark((function e(t,o){var u;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(u=function(){var e=l(k.mark((function e(){var c,l,f,p,h;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i.isLightKYCVerified(n);case 2:if(!(c=e.sent[0])||!c.isLightKYCVerified){e.next=6;break}return e.abrupt(\"return\",t(Ae.PASSED));case 6:return l=s.constants.BLOKS_API+\"/\"+r+\"/kyc?type=status&chain=\"+r+\"&actor=\"+n,e.next=9,i.get(l);case 9:if((f=e.sent)&&f.length){e.next=12;break}return e.abrupt(\"return\",o(new Error(\"Could not fetch KYC record\")));case 12:if(p=f.find((function(e){return e.tier===String(a)}))){e.next=15;break}return e.abrupt(\"return\",o(new Error(\"No kyc data matching tier found\")));case 15:if(h=p.status,p.status){e.next=18;break}return e.abrupt(\"return\",o(new Error(\"KYC Status not found\")));case 18:if(h!==Ae.PENDING){e.next=22;break}setTimeout((function(){return u()}),2e3),e.next=23;break;case 22:return e.abrupt(\"return\",t(h));case 23:case\"end\":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}())();case 2:case\"end\":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}()));case 4:case\"end\":return e.stop()}}),e)})))).apply(this,arguments)}function tr(e){return rr.apply(this,arguments)}function rr(){return(rr=l(k.mark((function e(t){var r,n;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=s.constants.BLOKS_API+\"/\"+t.chain+\"/kyc\",e.next=3,this.post(r,Object.assign({type:\"apply\"},t));case 3:if(!(n=e.sent)){e.next=8;break}return e.abrupt(\"return\",n);case 8:throw new Error(\"Could not apply for KYC\");case 9:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}function nr(){return ar.apply(this,arguments)}function ar(){return(ar=l(k.mark((function e(){var t;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=s.constants.PROTON_API+\"/v1/kyc/ip-info\",e.next=3,this.get(t);case 3:return e.abrupt(\"return\",e.sent);case 4:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}!function(e){e.PENDING=\"pending\",e.SUCCESS=\"success\",e.FAIL=\"fail\",e.PROCESSING=\"processing\"}(Vt||(Vt={}));var ir=o.object({counterCurrency:o.string(),price:o.number(),priceChangePercent:o.number(),marketCap:o.number(),volume:o.number(),timestamp:o.number()}),sr=o.array(o.object({contract:o.string(),symbol:o.string(),rank:o.number(),rates:o.array(ir)})),or=o.object({quoteId:o.string(),estimatedFee:o.string(),currency:o.string(),network:o.string()});function ur(){return cr.apply(this,arguments)}function cr(){return(cr=l(k.mark((function e(){var t;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=s.constants.METAL_PROTON_ENDPOINT+\"/v1/chain/exchange-rates/info\",e.prev=1,e.next=4,this.get(t);case 4:return e.abrupt(\"return\",sr.parse(e.sent.data));case 9:throw e.prev=9,e.t0=e.catch(1),new Error(\"Could not fetch exchange rates\");case 12:case\"end\":return e.stop()}}),e,this,[[1,9]])})))).apply(this,arguments)}function lr(e){return fr.apply(this,arguments)}function fr(){return(fr=l(k.mark((function e(t){var r,n,a;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.currency,n=t.network,a=s.constants.METAL_PROTON_ENDPOINT+\"/v1/swaps/calculate-estimated-fee\",e.prev=2,e.next=5,this.post(a,{currency:r,network:n});case 5:return e.abrupt(\"return\",or.parse(e.sent.data));case 10:return e.prev=10,e.t0=e.catch(2),console.log(e.t0),e.abrupt(\"return\",void 0);case 14:case\"end\":return e.stop()}}),e,this,[[2,10]])})))).apply(this,arguments)}function pr(e){return hr.apply(this,arguments)}function hr(){return(hr=l(k.mark((function e(t){var r;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=s.constants.SWAP_URL+\"/v1/quote/\"+t.baseSymbol+\"/\"+t.baseAmount+\"/\"+t.quoteSymbol,e.next=3,this.get(r);case 3:return e.abrupt(\"return\",e.sent.data);case 6:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}function yr(e){return dr.apply(this,arguments)}function dr(){return(dr=l(k.mark((function e(t){var r;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=s.constants.SWAP_URL+\"/v1/order/\"+t,e.next=3,this.get(r);case 3:return e.abrupt(\"return\",e.sent.data);case 6:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}function vr(e){return gr.apply(this,arguments)}function gr(){return(gr=l(k.mark((function e(t){var r;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=s.constants.WRAP_SERVER_URL+\"/address/generate\",e.next=3,this.post(r,t);case 3:return e.abrupt(\"return\",e.sent.data);case 6:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}function mr(e){return br.apply(this,arguments)}function br(){return(br=l(k.mark((function e(t){var r;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=s.constants.WRAP_SERVER_URL+\"/withdraw\",e.next=3,this.post(r,t);case 3:return e.abrupt(\"return\",e.sent.data);case 6:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}function xr(e){return kr.apply(this,arguments)}function kr(){return(kr=l(k.mark((function e(t){var r;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=s.constants.WRAP_SERVER_URL+\"/withdrawals/\"+t,e.next=3,this.get(r);case 3:return e.abrupt(\"return\",e.sent.data);case 6:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}function wr(e){return _r.apply(this,arguments)}function _r(){return(_r=l(k.mark((function e(t){var r,n,a,i,s,o,u,c,l,f,p,h,y,d,v,g,m,b,x,w,_;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=void 0===(r=t.json)||r,a=t.code,i=t.scope,s=t.table,u=void 0===(o=t.table_key)?\"\":o,l=void 0===(c=t.lower_bound)?\"\":c,p=void 0===(f=t.upper_bound)?\"\":f,y=void 0===(h=t.index_position)?1:h,v=void 0===(d=t.key_type)?\"\":d,m=void 0===(g=t.limit)?10:g,x=void 0!==(b=t.reverse)&&b,_=void 0!==(w=t.show_payer)&&w,e.next=3,this.post(\"/v1/chain/get_table_rows\",{json:n,code:a,scope:i,table:s,table_key:u,lower_bound:l,upper_bound:p,index_position:y,key_type:v,limit:m,reverse:x,show_payer:_});case 3:return e.abrupt(\"return\",e.sent);case 4:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}function Ar(e){return Sr.apply(this,arguments)}function Sr(){return(Sr=l(k.mark((function e(t){var r,n,a,i,s,o,u,c,l,f,p,h,y,d,v,g,m,b,x;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=void 0===(r=t.json)||r,a=t.code,i=t.table,s=t.index_name,u=void 0===(o=t.encode_type)?\"bytes\":o,l=void 0===(c=t.index_value)?\"\":c,p=void 0===(f=t.lower_bound)?\"\":f,y=void 0===(h=t.upper_bound)?\"\":h,v=void 0===(d=t.limit)?10:d,m=void 0!==(g=t.reverse)&&g,x=void 0!==(b=t.show_payer)&&b,e.next=3,this.post(\"/v1/chain/get_kv_table_rows\",{json:n,code:a,table:i,index_name:s,encode_type:u,index_value:l,lower_bound:p,upper_bound:y,limit:v,reverse:m,show_payer:x});case 3:return e.abrupt(\"return\",e.sent);case 4:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}function zr(e){return Er.apply(this,arguments)}function Er(){return(Er=l(k.mark((function e(t){var r,n,a,i,s,o,u,c;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.code,n=t.table,i=void 0===(a=t.lower_bound)?\"\":a,o=void 0===(s=t.upper_bound)?\"\":s,c=void 0===(u=t.limit)?10:u,e.next=3,this.post(\"/v1/chain/get_table_by_scope\",{code:r,table:n,lower_bound:i,upper_bound:o,limit:c});case 3:return e.abrupt(\"return\",e.sent);case 4:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}var Nr=function(e){for(var t,r=\"\",n=m(e);!(t=n()).done;)r+=(\"00\"+t.value.toString(16)).slice(-2);return r};function Pr(e){return Tr.apply(this,arguments)}function Tr(){return(Tr=l(k.mark((function e(t){var r,n,a,i,s;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.signatures,a=void 0===(n=t.compression)?0:n,i=t.serializedTransaction,s=t.serializedContextFreeData,e.prev=1,e.next=4,this.post(\"/v1/chain/push_transaction\",{signatures:r,compression:a,packed_context_free_data:Nr(s||new Uint8Array(0)),packed_trx:Nr(i)});case 4:return e.abrupt(\"return\",e.sent);case 7:throw e.prev=7,e.t0=e.catch(1),e.t0&&e.t0.json&&e.t0.json.error&&\"expired_tx_exception\"===e.t0.json.error.name&&(e.t0.json.error.message=\"Transaction Expired: Try Again\",this.nextEndpoint()),e.t0;case 11:case\"end\":return e.stop()}}),e,this,[[1,7]])})))).apply(this,arguments)}function Cr(e){return Ur.apply(this,arguments)}function Ur(){return(Ur=l(k.mark((function e(t){var r,n,a,i,s;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.signatures,a=void 0===(n=t.compression)?0:n,i=t.serializedTransaction,s=t.serializedContextFreeData,e.next=3,this.post(\"/v1/chain/send_transaction\",{signatures:r,compression:a,packed_context_free_data:Nr(s||new Uint8Array(0)),packed_trx:Nr(i)});case 3:return e.abrupt(\"return\",e.sent);case 4:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}function Kr(e){return Or.apply(this,arguments)}function Or(){return(Or=l(k.mark((function e(t){return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.post(\"/v1/chain/get_abi\",{account_name:t});case 2:return e.abrupt(\"return\",e.sent);case 3:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}function Br(e){return Ir.apply(this,arguments)}function Ir(){return(Ir=l(k.mark((function e(t){return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.post(\"/v1/chain/get_raw_code_and_abi\",{account_name:t});case 2:return e.abrupt(\"return\",e.sent);case 3:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}function Mr(e){return Rr.apply(this,arguments)}function Rr(){return(Rr=l(k.mark((function e(t){var r,n;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.get_raw_abi(t);case 2:return n=B((r=e.sent).abi),e.abrupt(\"return\",{accountName:r.account_name,abi:n});case 5:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}function Fr(e){return Gr.apply(this,arguments)}function Gr(){return(Gr=l(k.mark((function e(t){return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.post(\"/v1/chain/get_raw_abi\",{account_name:t});case 2:return e.abrupt(\"return\",e.sent);case 3:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}function Lr(e){return Dr.apply(this,arguments)}function Dr(){return(Dr=l(k.mark((function e(t){return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.post(\"/v1/chain/get_code\",{account_name:t,code_as_wasm:!0});case 2:return e.abrupt(\"return\",e.sent);case 3:case\"end\":return e.stop()}}),e,this)})))).apply(this,arguments)}var jr=function(e){var t,r;function n(t){var r;return r=t&&t.error&&t.error.details&&t.error.details.length&&t.error.details[0].message?e.call(this,t.error.details[0].message)||this:t&&t.processed&&t.processed.except&&t.processed.except.message?e.call(this,t.processed.except.message)||this:t?e.call(this,t.message)||this:e.call(this,t)||this,Object.setPrototypeOf(v(r),n.prototype),r.json=t,v(r)}return r=e,(t=n).prototype=Object.create(r.prototype),t.prototype.constructor=t,t.__proto__=r,n}(d(Error)),Vr=function(){function e(e){this.maxRetries=3,this.validKycProviders=[],this.get_account=lt,this.get_block_header_state=pt,this.get_block_info=yt,this.get_block=vt,this.get_currency_balance=mt,this.get_currency_stats=xt,this.get_info=wt,this.get_producer_schedule=At,this.get_producers=zt,this.get_scheduled_transactions=Nt,this.get_activated_protocol_features=Tt,this.getRequiredKeys=Ut,this.get_abi=Kr,this.get_raw_code_and_abi=Br,this.getRawAbi=Mr,this.get_raw_abi=Fr,this.get_code=Lr,this.push_transaction=Pr,this.send_transaction=Cr,this.get_table_rows=wr,this.get_kv_table_rows=Ar,this.get_table_by_scope=zr,this.history_get_actions=Ot,this.history_get_transaction=It,this.history_get_key_accounts=Rt,this.history_get_controlled_accounts=Gt,this.db_size_get=Dt,this.fetchKycCountries=qt,this.getValidKycProviders=Zt,this.isLightKYCVerified=Qt,this.checkUserKycStatus=$t,this.applyForKyc=tr,this.currentLocation=nr,this.otcQuote=pr,this.otcOrder=yr,this.generateAddress=vr,this.withdrawMetal=mr,this.withdrawalHistoryMetal=xr,this.getTokenPrices=ur,this.getWithdrawalFee=lr,e=Array.isArray(e)?e:[e],this.endpoints=e.map((function(e){return e.replace(/\\/$/,\"\")})),this.currentEndpoint=\"\",this.nextEndpoint()}var t=e.prototype;return t.nextEndpoint=function(){if(this.endpoints.length){if(this.currentEndpoint){var e=this.endpoints.shift();this.endpoints=this.endpoints.concat(e||[])}this.currentEndpoint=this.endpoints[0]}},t.post=function(){var e=l(k.mark((function e(t,r,n){var a,i,o;return k.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===n&&(n=0),e.prev=1,e.next=4,u(this.currentEndpoint+t,{body:JSON.stringify(r),method:\"POST\"});case 4:return a=e.sent,e.next=7,a.json();case 7:if(!(i=e.sent).processed||!i.processed.except){e.next=10;break}throw new jr(i);case 10:e.next=22;break;case 12:if(e.prev=12,e.t0=e.catch(1),!(this.endpoints.length>1)){e.next=22;break}if(this.nextEndpoint(),!(ns.constants.MAX_SECONDS_BEHIND&&this.endpoints.length>1)){e.next=32;break}if(this.nextEndpoint(),!(n=400)){e.next=5;break}throw new Error(\"Bad response from server \"+r.status);case 5:return e.next=7,r.json();case 7:return e.abrupt(\"return\",e.sent);case 8:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e}(),Wr={Api:it,ApiInterfaces:ct,JsonRpc:Vr,Numeric:Z,RpcInterfaces:Wt,RpcError:jr,Serialize:qe,JsSignatureProvider:nt,Key:et,sha256:Ze};exports.Api=it,exports.ApiInterfaces=ct,exports.JsSignatureProvider=nt,exports.JsonRpc=Vr,exports.Key=et,exports.Numeric=Z,exports.RpcError=jr,exports.RpcInterfaces=Wt,exports.Serialize=qe,exports.default=Wr,exports.sha256=Ze;\n//# sourceMappingURL=js.cjs.production.min.js.map\n","\n'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./link.cjs.production.min.js')\n} else {\n module.exports = require('./link.cjs.development.js')\n}\n","\"use strict\";function e(e){return e&&\"object\"==typeof e&&\"default\"in e?e.default:e}Object.defineProperty(exports,\"__esModule\",{value:!0});var t=require(\"@proton/signing-request\"),r=require(\"@proton/js\"),n=e(require(\"isomorphic-ws\")),i=e(require(\"pako\")),o=require(\"uuid\"),a=require(\"eosjs-ecc\");function s(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,i)}function c(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var o=e.apply(t,r);function a(e){s(o,n,i,a,c,\"next\",e)}function c(e){s(o,n,i,a,c,\"throw\",e)}a(void 0)}))}}function u(){return(u=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}return(r=e[Symbol.iterator]()).next.bind(r)}function g(e,t){return e(t={exports:{}},t.exports),t.exports}var b=g((function(e){var t=function(e){var t=Object.prototype,r=t.hasOwnProperty,n=\"function\"==typeof Symbol?Symbol:{},i=n.iterator||\"@@iterator\",o=n.asyncIterator||\"@@asyncIterator\",a=n.toStringTag||\"@@toStringTag\";function s(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},\"\")}catch(e){s=function(e,t,r){return e[t]=r}}function c(e,t,r,n){var i=Object.create((t&&t.prototype instanceof h?t:h).prototype),o=new _(n||[]);return i._invoke=function(e,t,r){var n=\"suspendedStart\";return function(i,o){if(\"executing\"===n)throw new Error(\"Generator is already running\");if(\"completed\"===n){if(\"throw\"===i)throw o;return{value:void 0,done:!0}}for(r.method=i,r.arg=o;;){var a=r.delegate;if(a){var s=w(a,r);if(s){if(s===f)continue;return s}}if(\"next\"===r.method)r.sent=r._sent=r.arg;else if(\"throw\"===r.method){if(\"suspendedStart\"===n)throw n=\"completed\",r.arg;r.dispatchException(r.arg)}else\"return\"===r.method&&r.abrupt(\"return\",r.arg);n=\"executing\";var c=u(e,t,r);if(\"normal\"===c.type){if(n=r.done?\"completed\":\"suspendedYield\",c.arg===f)continue;return{value:c.arg,done:r.done}}\"throw\"===c.type&&(n=\"completed\",r.method=\"throw\",r.arg=c.arg)}}}(e,r,o),i}function u(e,t,r){try{return{type:\"normal\",arg:e.call(t,r)}}catch(e){return{type:\"throw\",arg:e}}}e.wrap=c;var f={};function h(){}function l(){}function p(){}var d={};d[i]=function(){return this};var y=Object.getPrototypeOf,v=y&&y(y(S([])));v&&v!==t&&r.call(v,i)&&(d=v);var m=p.prototype=h.prototype=Object.create(d);function g(e){[\"next\",\"throw\",\"return\"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var n;this._invoke=function(i,o){function a(){return new t((function(n,a){!function n(i,o,a,s){var c=u(e[i],e,o);if(\"throw\"!==c.type){var f=c.arg,h=f.value;return h&&\"object\"==typeof h&&r.call(h,\"__await\")?t.resolve(h.__await).then((function(e){n(\"next\",e,a,s)}),(function(e){n(\"throw\",e,a,s)})):t.resolve(h).then((function(e){f.value=e,a(f)}),(function(e){return n(\"throw\",e,a,s)}))}s(c.arg)}(i,o,n,a)}))}return n=n?n.then(a,a):a()}}function w(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,\"throw\"===t.method){if(e.iterator.return&&(t.method=\"return\",t.arg=void 0,w(e,t),\"throw\"===t.method))return f;t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return f}var n=u(r,e.iterator,t.arg);if(\"throw\"===n.type)return t.method=\"throw\",t.arg=n.arg,t.delegate=null,f;var i=n.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=void 0),t.delegate=null,f):i:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,f)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(x,this),this.reset(!0)}function S(e){if(e){var t=e[i];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function t(){for(;++n=0;--i){var o=this.tryEntries[i],a=o.completion;if(\"root\"===o.tryLoc)return n(\"end\");if(o.tryLoc<=this.prev){var s=r.call(o,\"catchLoc\"),c=r.call(o,\"finallyLoc\");if(s&&c){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,\"finallyLoc\")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),k(r),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(\"throw\"===n.type){var i=n.arg;k(r)}return i}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,r){return this.delegate={iterator:S(e),resultName:t,nextLoc:r},\"next\"===this.method&&(this.arg=void 0),f}},e}(e.exports);try{regeneratorRuntime=t}catch(e){Function(\"r\",\"regeneratorRuntime = r\")(t)}})),w=function(e){function t(t){var r;return(r=e.call(this,\"User canceled request \"+(t?\"(\"+t+\")\":\"\"))||this).code=\"E_CANCEL\",r}return f(t,e),t}(y(Error)),x=function(e){function t(t){var r;return(r=e.call(this,\"Unable to verify identity \"+(t?\"(\"+t+\")\":\"\"))||this).code=\"E_IDENTITY\",r}return f(t,e),t}(y(Error)),k=function(e){function t(t,r){var n;return(n=e.call(this,t)||this).code=r,n}return f(t,e),t}(y(Error)),_={version:\"eosio::abi/1.1\",types:[],structs:[{name:\"sealed_message\",base:\"\",fields:[{name:\"from\",type:\"public_key\"},{name:\"nonce\",type:\"uint64\"},{name:\"ciphertext\",type:\"bytes\"},{name:\"checksum\",type:\"uint32\"}]},{name:\"link_create\",base:\"\",fields:[{name:\"session_name\",type:\"name\"},{name:\"request_key\",type:\"public_key\"}]},{name:\"link_info\",base:\"\",fields:[{name:\"expiration\",type:\"time_point_sec\"}]}],actions:[],ricardian_clauses:[],error_messages:[],tables:[],abi_extensions:[]},S=r.Serialize.getTypesFromAbi(r.Serialize.createInitialTypes(),_);function P(e,t){var n=S.get(t);if(!n)throw new Error(\"No such type: \"+t);var i=new r.Serialize.SerialBuffer;return n.serialize(i,e),i.asUint8Array()}function E(e){return e.startsWith(\"PUB_\")?e:r.Numeric.publicKeyToString(r.Numeric.stringToPublicKey(\"EOS\"+e.substr(-50)))}function O(){return q.apply(this,arguments)}function q(){return(q=c(b.mark((function e(){var t;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(\"undefined\"==typeof window||!window.crypto){e.next=6;break}return t=new Uint32Array(32),window.crypto.getRandomValues(t),e.abrupt(\"return\",a.PrivateKey.fromBuffer(Buffer.from(t)).toString());case 6:return e.next=8,a.randomKey();case 8:return e.abrupt(\"return\",e.sent);case 9:case\"end\":return e.stop()}}),e)})))).apply(this,arguments)}var L=function(){function e(){}return e.prototype.remove=function(){var e=c(b.mark((function e(){return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.link.storage){e.next=3;break}return e.next=3,this.link.removeSession(this.identifier,this.auth);case 3:case\"end\":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),e.restore=function(e,t){switch(t.type){case\"channel\":return new T(e,t.data,t.metadata);case\"fallback\":return new j(e,t.data,t.metadata);default:throw new Error(\"Unable to restore, session data invalid\")}},e}(),T=function(e){function t(t,r,n){var i;return(i=e.call(this)||this).type=\"channel\",i.timeout=12e4,i.link=t,i.auth=r.auth,i.publicKey=r.publicKey,i.channel=r.channel,i.identifier=r.identifier,i.encrypt=function(e){return t=e.encode(!0,!1),i=a.Aes.encrypt(n=r.requestKey,r.channel.key,t),P({from:a.privateToPublic(n),nonce:i.nonce.toString(),ciphertext:i.message,checksum:i.checksum},\"sealed_message\");var t,n,i},i.metadata=u({},n||{},{timeout:i.timeout,name:i.channel.name}),i.serialize=function(){return{type:\"channel\",data:r,metadata:i.metadata}},i}f(t,e);var r=t.prototype;return r.onSuccess=function(e,t){this.link.transport.onSuccess&&this.link.transport.onSuccess(e,t)},r.onFailure=function(e,t){this.link.transport.onFailure&&this.link.transport.onFailure(e,t)},r.onRequest=function(e,t){var r={expiration:new Date(Date.now()+this.timeout).toISOString().slice(0,-1)};this.link.transport.onSessionRequest&&this.link.transport.onSessionRequest(this,e,t),setTimeout((function(){t(new k(\"Wallet did not respond in time\",\"E_TIMEOUT\"))}),this.timeout+500),e.data.info.push({key:\"link\",value:P(r,\"link_info\")}),fetch(this.channel.url,{method:\"POST\",headers:{\"X-Buoy-Wait\":(this.timeout/1e3).toFixed(0),\"Content-Type\":\"text/html\",Accept:\"text/html\"},body:this.encrypt(e)}).then((function(e){200!==e.status&&t(new k(\"Unable to push message\",\"E_DELIVERY\"))})).catch((function(e){t(new k(\"Unable to reach link service (\"+(e.message||String(e))+\")\",\"E_DELIVERY\"))}))},r.prepare=function(e){return this.link.transport.prepare?this.link.transport.prepare(e,this):Promise.resolve(e)},r.showLoading=function(){if(this.link.transport.showLoading)return this.link.transport.showLoading()},r.makeSignatureProvider=function(){return this.link.makeSignatureProvider([this.publicKey],this)},r.makeAuthorityProvider=function(){return this.link.makeAuthorityProvider()},r.transact=function(e,t){return this.link.transact(e,t,this)},t}(L),j=function(e){function t(t,r,n){var i;return(i=e.call(this)||this).type=\"fallback\",i.link=t,i.auth=r.auth,i.publicKey=r.publicKey,i.metadata=n||{},i.identifier=r.identifier,i.serialize=function(){return{type:i.type,data:r,metadata:i.metadata}},i}f(t,e);var r=t.prototype;return r.onSuccess=function(e,t){this.link.transport.onSuccess&&this.link.transport.onSuccess(e,t)},r.onFailure=function(e,t){this.link.transport.onFailure&&this.link.transport.onFailure(e,t)},r.onRequest=function(e,t){this.link.transport.onSessionRequest?this.link.transport.onSessionRequest(this,e,t):this.link.transport.onRequest(e,t)},r.prepare=function(e){return this.link.transport.prepare?this.link.transport.prepare(e,this):Promise.resolve(e)},r.showLoading=function(){if(this.link.transport.showLoading)return this.link.transport.showLoading()},r.makeSignatureProvider=function(){return this.link.makeSignatureProvider([this.publicKey],this)},r.makeAuthorityProvider=function(){return this.link.makeAuthorityProvider()},r.transact=function(e,t){return this.link.transact(e,t,this)},t}(L),I=function(){function e(e){if(this.abiCache=new Map,this.pendingAbis=new Map,this.walletType=\"\",\"object\"!=typeof e)throw new TypeError(\"Missing options object\");if(!e.transport)throw new TypeError(\"options.transport is required, see https://github.com/greymass/anchor-link#transports\");this.rpc=void 0===e.rpc||\"string\"==typeof e.rpc?new r.JsonRpc(e.rpc||\"https://proton.greymass.com\"):e.rpc,this.chainId=e.chainId?\"number\"==typeof e.chainId?t.nameToId(e.chainId):e.chainId:\"384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0\",this.serviceAddress=(e.service||\"https://cb.anchor.link\").trim().replace(/\\/$/,\"\"),this.transport=e.transport,null!==e.storage&&(this.storage=e.storage),this.requestOptions={abiProvider:this,zlib:i,scheme:e.scheme},e.walletType&&e.walletType.length>0&&(this.walletType=e.walletType||\"\")}var n=e.prototype;return n.getAbi=function(){var e=c(b.mark((function e(t){var r,n;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=this.abiCache.get(t)){e.next=9;break}return(n=this.pendingAbis.get(t))||(n=this.rpc.get_abi(t),this.pendingAbis.set(t,n)),e.next=6,n;case 6:r=e.sent.abi,this.pendingAbis.delete(t),r&&this.abiCache.set(t,r);case 9:return e.abrupt(\"return\",r);case 10:case\"end\":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.createCallbackUrl=function(){return this.serviceAddress+\"/\"+o.v4()},n.createRequest=function(){var e=c(b.mark((function e(r,n){var i,o;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=n||this.transport,e.next=3,t.SigningRequest.create(u({},r,{chainId:this.chainId,broadcast:!1,callback:{url:this.createCallbackUrl(),background:!0}}),this.requestOptions);case 3:if(o=e.sent,!i.prepare){e.next=8;break}return e.next=7,i.prepare(o);case 7:o=e.sent;case 8:return e.abrupt(\"return\",o);case 9:case\"end\":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),n.sendRequest=function(){var e=c(b.mark((function e(r,n,i){var o,a,s,c,u,f,h,l,p,d,y;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===i&&(i=!1),o=n||this.transport,e.prev=2,(a=r.data.callback).startsWith(this.serviceAddress)){e.next=6;break}throw new Error(\"Request must have a link callback\");case 6:if(2===r.data.flags){e.next=8;break}throw new Error(\"Invalid request flags\");case 8:return c=N(a,s={}).then((function(e){if(\"string\"==typeof e.rejected)throw new w(\"Rejected by wallet: \"+e.rejected);return e})),u=new Promise((function(e,t){o.onRequest(r,(function(e){s.cancel&&s.cancel(),t(\"string\"==typeof e?new w(e):e)}))})),e.next=13,Promise.race([c,u]);case 13:return h={actor:(f=e.sent).sa,permission:f.sp},l=Object.keys(f).filter((function(e){return e.startsWith(\"sig\")&&\"sig0\"!==e})).map((function(e){return f[e]})),e.next=18,t.ResolvedSigningRequest.fromPayload(f,this.requestOptions);case 18:if((d=(p=e.sent).request.getInfo()).fuel_sig&&l.unshift(d.fuel_sig),y={request:p.request,serializedTransaction:p.serializedTransaction,transaction:p.transaction,signatures:l,payload:f,signer:h},!i){e.next=28;break}return e.next=26,this.rpc.push_transaction({signatures:y.signatures,serializedTransaction:y.serializedTransaction});case 26:y.processed=e.sent.processed;case 28:if(!y.request.isIdentity()){e.next=31;break}return e.next=31,this.checkIdentity(y);case 31:return o.onSuccess&&o.onSuccess(r,y),e.abrupt(\"return\",y);case 35:throw e.prev=35,e.t0=e.catch(2),o.onFailure&&o.onFailure(r,e.t0),e.t0;case 39:case\"end\":return e.stop()}}),e,this,[[2,35]])})));return function(t,r,n){return e.apply(this,arguments)}}(),n.transact=function(){var e=c(b.mark((function e(t,r,n){var i,o,a,s;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=!r||!1!==r.broadcast,(i=n||this.transport)&&i.showLoading&&i.showLoading(),a=t,t.actions&&(a.expiration||a.ref_block_num||a.ref_block_prefix||a.max_net_usage_words||a.max_cpu_usage_ms||a.delay_sec)&&(t={transaction:u({expiration:\"1970-01-01T00:00:00\",ref_block_num:0,ref_block_prefix:0,max_net_usage_words:0,max_cpu_usage_ms:0,delay_sec:0},a)}),e.next=7,this.createRequest(t,i);case 7:return s=e.sent,e.next=10,this.sendRequest(s,i,o);case 10:return e.abrupt(\"return\",e.sent);case 12:case\"end\":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),n.identify=function(){var e=c(b.mark((function e(n,i){var o,a,s,c,f,h;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.createRequest({identity:{permission:n||null},info:i});case 2:return o=e.sent,e.next=5,this.sendRequest(o);case 5:if((a=e.sent).request.isIdentity()){e.next=8;break}throw new x(\"Unexpected response\");case 8:return s=Buffer.concat([Buffer.from(o.getChainId(),\"hex\"),Buffer.from(a.serializedTransaction),Buffer.alloc(32)]),c=a.signer,f=r.Key.Signature.fromString(a.signatures[0]).recover(s).toLegacyString(),e.next=13,this.rpc.get_account(c.actor);case 13:if(h=e.sent,!n){e.next=17;break}if(!(n.actor!==t.PlaceholderName&&n.actor!==c.actor||n.permission!==t.PlaceholderPermission&&n.permission!==c.permission)){e.next=17;break}throw new x(\"Unexpected identity proof from \"+R(c)+\", expected \"+R(n)+\" \");case 17:return e.abrupt(\"return\",u({},a,{account:h,signerKey:f}));case 18:case\"end\":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),n.checkIdentity=function(){var e=c(b.mark((function e(t){var n,i,o,a,s,c,u;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=Buffer.concat([Buffer.from(t.request.getChainId(),\"hex\"),Buffer.from(t.serializedTransaction),Buffer.alloc(32)]),i=t.signer,o=r.Key.Signature.fromString(t.signatures[0]).recover(n).toLegacyString(),e.next=6,this.rpc.get_account(i.actor);case 6:if(a=e.sent){e.next=9;break}throw new x(\"Signature from unknown account: \"+i.actor);case 9:if(s=a.permissions.find((function(e){return e.perm_name===i.permission}))){e.next=12;break}throw new x(i.actor+\" signed for unknown permission: \"+i.permission);case 12:if(u=(c=s.required_auth).keys.find((function(e){var t;return t=o,E(e.key)===E(t)}))){e.next=16;break}throw new x(R(i)+\" has no key matching id signature\");case 16:if(!(c.threshold>u.weight)){e.next=18;break}throw new x(R(i)+\" signature does not reach auth threshold\");case 18:case\"end\":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.login=function(){var e=c(b.mark((function e(t){var n,i,o,a,s,c,f;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,O();case 2:return i=r.Key.PrivateKey.fromString(n=e.sent).getPublicKey().toLegacyString(),o={session_name:t,request_key:i},e.next=7,this.identify(void 0,{link:P(o,\"link_create\")});case 7:if(s={sameDevice:void 0!==(a=e.sent).request.getRawInfo().return_path},c=a.payload.link_ch&&a.payload.link_key&&a.payload.link_name?new T(this,{identifier:t,auth:a.signer,publicKey:a.signerKey,channel:{url:a.payload.link_ch,key:a.payload.link_key,name:a.payload.link_name},requestKey:n},s):new j(this,{identifier:t,auth:a.signer,publicKey:a.signerKey},s),!this.storage){e.next=13;break}return e.next=13,this.storeSession(t,c);case 13:if(!c.auth.actor){e.next=22;break}return e.next=16,this.rpc.get_table_rows({scope:\"eosio.proton\",code:\"eosio.proton\",json:!0,table:\"usersinfo\",lower_bound:c.auth.actor,upper_bound:c.auth.actor});case 16:if(!((f=e.sent.rows)&&f.length>0)){e.next=22;break}return e.next=21,this.rpc.isLightKYCVerified(f);case 21:c.accountData=e.sent;case 22:return this.walletType.length>0&&this.storage.write(\"wallet-type\",this.walletType),e.abrupt(\"return\",u({},a,{session:c}));case 24:case\"end\":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.restoreSession=function(){var e=c(b.mark((function e(t,r){var n,i,o,a,s,c;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.storage){e.next=2;break}throw new Error(\"Unable to restore session: No storage adapter configured\");case 2:if(!r){e.next=6;break}n=this.sessionKey(t,R(r)),e.next=12;break;case 6:return e.next=8,this.listSessions(t);case 8:if(i=e.sent[0]){e.next=11;break}return e.abrupt(\"return\",null);case 11:n=this.sessionKey(t,R(i));case 12:return e.next=14,this.storage.read(n);case 14:if(o=e.sent){e.next=17;break}return e.abrupt(\"return\",null);case 17:e.prev=17,a=JSON.parse(o),e.next=24;break;case 21:throw e.prev=21,e.t0=e.catch(17),new Error(\"Unable to restore session: Stored JSON invalid (\"+(e.t0.message||String(e.t0))+\")\");case 24:if(s=L.restore(this,a),!r){e.next=28;break}return e.next=28,this.touchSession(t,r);case 28:if(!s.auth.actor){e.next=37;break}return e.next=31,this.rpc.get_table_rows({scope:\"eosio.proton\",code:\"eosio.proton\",json:!0,table:\"usersinfo\",lower_bound:s.auth.actor,upper_bound:s.auth.actor});case 31:if(!((c=e.sent.rows)&&c.length>0)){e.next=37;break}return e.next=36,this.rpc.isLightKYCVerified(c);case 36:s.accountData=e.sent;case 37:return e.abrupt(\"return\",s);case 38:case\"end\":return e.stop()}}),e,this,[[17,21]])})));return function(t,r){return e.apply(this,arguments)}}(),n.listSessions=function(){var e=c(b.mark((function e(t){var r,n;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.storage){e.next=2;break}throw new Error(\"Unable to list sessions: No storage adapter configured\");case 2:return r=this.sessionKey(t,\"list\"),e.prev=3,e.t0=JSON,e.next=7,this.storage.read(r);case 7:if(e.t1=e.sent,e.t1){e.next=10;break}e.t1=\"[]\";case 10:e.t2=e.t1,n=e.t0.parse.call(e.t0,e.t2),e.next=17;break;case 14:throw e.prev=14,e.t3=e.catch(3),new Error(\"Unable to list sessions: Stored JSON invalid (\"+(e.t3.message||String(e.t3))+\")\");case 17:return e.abrupt(\"return\",n);case 18:case\"end\":return e.stop()}}),e,this,[[3,14]])})));return function(t){return e.apply(this,arguments)}}(),n.removeSession=function(){var e=c(b.mark((function e(t,r){var n;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.storage){e.next=2;break}throw new Error(\"Unable to remove session: No storage adapter configured\");case 2:return n=this.sessionKey(t,R(r)),e.next=5,this.storage.remove(n);case 5:return e.next=7,this.touchSession(t,r,!0);case 7:return e.next=9,this.storage.read(\"wallet-type\");case 9:if(!e.sent){e.next=11;break}this.storage.remove(\"wallet-type\");case 11:return e.next=13,this.storage.read(\"user-auth\");case 13:if(!e.sent){e.next=15;break}this.storage.remove(\"user-auth\");case 15:case\"end\":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),n.clearSessions=function(){var e=c(b.mark((function e(t){var r,n,i;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.storage){e.next=2;break}throw new Error(\"Unable to clear sessions: No storage adapter configured\");case 2:return e.t0=m,e.next=5,this.listSessions(t);case 5:e.t1=e.sent,r=(0,e.t0)(e.t1);case 7:if((n=r()).done){e.next=13;break}return i=n.value,e.next=11,this.removeSession(t,i);case 11:e.next=7;break;case 13:case\"end\":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.makeSignatureProvider=function(e,r){var n,i,o=this;return{getAvailableKeys:(i=c(b.mark((function t(){return b.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt(\"return\",e);case 1:case\"end\":return t.stop()}}),t)}))),function(){return i.apply(this,arguments)}),sign:(n=c(b.mark((function e(n){var i,a,s;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=r||o.transport,(a=t.SigningRequest.fromTransaction(n.chainId,n.serializedTransaction,o.requestOptions)).setCallback(o.createCallbackUrl(),!0),a.setBroadcast(!1),!i.prepare){e.next=8;break}return e.next=7,i.prepare(a);case 7:a=e.sent;case 8:return e.next=10,o.sendRequest(a,i);case 10:return e.abrupt(\"return\",u({},n,{serializedTransaction:(s=e.sent).serializedTransaction,signatures:s.signatures}));case 14:case\"end\":return e.stop()}}),e)}))),function(e){return n.apply(this,arguments)})}},n.makeAuthorityProvider=function(){var e=this.rpc;return{getRequiredKeys:function(t){return c(b.mark((function r(){var n,i;return b.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return n=t.availableKeys,i=t.transaction,r.next=3,e.post(\"/v1/chain/get_required_keys\",{transaction:i,available_keys:n.map(E)});case 3:return r.abrupt(\"return\",r.sent.required_keys.map(E));case 5:case\"end\":return r.stop()}}),r)})))()}}},n.touchSession=function(){var e=c(b.mark((function e(t,r,n){var i,o,a,s;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===n&&(n=!1),e.next=3,this.listSessions(t);case 3:if(i=e.sent,o=R(r),(a=i.findIndex((function(e){return R(e)===o})))>=0&&i.splice(a,1),s=this.sessionKey(t,\"list\"),!0!==n){e.next=13;break}return e.next=11,this.storage.remove(s);case 11:e.next=16;break;case 13:return i.unshift(r),e.next=16,this.storage.write(s,JSON.stringify(i));case 16:case\"end\":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),n.storeSession=function(){var e=c(b.mark((function e(t,r){var n,i;return b.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=this.sessionKey(t,R(r.auth)),i=JSON.stringify(r.serialize()),e.next=4,this.storage.write(n,i);case 4:return e.next=6,this.touchSession(t,r.auth);case 6:case\"end\":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),n.sessionKey=function(e,t){return[this.chainId,e,t].join(\"-\")},e}();function N(e,t){return new Promise((function(r,i){var o=!0,a=0,s=e.replace(/^http/,\"ws\"),c=function(e){try{r(JSON.parse(e))}catch(e){e.message=\"Unable to parse callback JSON: \"+e.message,i(e)}};!function e(){var r=new n(s);t.cancel=function(){o=!1,r.readyState!==n.OPEN&&r.readyState!==n.CONNECTING||r.close()},r.onmessage=function(e){if(o=!1,r.readyState===n.OPEN&&r.close(),\"undefined\"!=typeof Blob&&e.data instanceof Blob){var t=new FileReader;t.onload=function(){c(t.result)},t.onerror=function(e){i(e)},t.readAsText(e.data)}else\"string\"==typeof e.data?c(e.data):e.data instanceof ArrayBuffer?c(Buffer.from(e.data).toString()):c(e.data.toString())},r.onopen=function(){a=0},r.onerror=function(e){},r.onclose=function(t){var r;o&&setTimeout(e,(r=a++,Math.min(Math.pow(10*r,2),1e4)))}}()}))}function R(e){var r=e.actor,n=e.permission;return r===t.PlaceholderName&&(r=\"\"),n!==t.PlaceholderName&&n!==t.PlaceholderPermission||(n=\"\"),r+\"@\"+n}Object.defineProperty(exports,\"PlaceholderAuth\",{enumerable:!0,get:function(){return t.PlaceholderAuth}}),Object.defineProperty(exports,\"PlaceholderName\",{enumerable:!0,get:function(){return t.PlaceholderName}}),Object.defineProperty(exports,\"PlaceholderPermission\",{enumerable:!0,get:function(){return t.PlaceholderPermission}}),exports.CancelError=w,exports.IdentityError=x,exports.Link=I,exports.LinkChannelSession=T,exports.LinkFallbackSession=j,exports.LinkSession=L,exports.SessionError=k,exports.default=I;\n//# sourceMappingURL=link.cjs.production.min.js.map\n","// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign = require('./lib/utils/common').assign;\n\nvar deflate = require('./lib/deflate');\nvar inflate = require('./lib/inflate');\nvar constants = require('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n","'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH = 0;\nvar Z_FINISH = 4;\n\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_SYNC_FLUSH = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY = 0;\n\nvar Z_DEFLATED = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n","'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar c = require('./zlib/constants');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\nvar GZheader = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status === c.Z_NEED_DICT && dictionary) {\n status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);\n }\n\n if (status === c.Z_BUF_ERROR && allowBufError === true) {\n status = c.Z_OK;\n allowBufError = false;\n }\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === c.Z_SYNC_FLUSH) {\n this.onEnd(c.Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip = inflate;\n","'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n","// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","\n'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./signing-request.cjs.production.min.js')\n} else {\n module.exports = require('./signing-request.cjs.development.js')\n}\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var e,t=require(\"@proton/js\"),r=(e=require(\"fast-sha256\"))&&\"object\"==typeof e&&\"default\"in e?e.default:e;function n(e,t,r,n,a,i,o){try{var s=e[i](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function a(e){return function(){var t=this,r=arguments;return new Promise((function(a,i){var o=e.apply(t,r);function s(e){n(o,a,i,s,c,\"next\",e)}function c(e){n(o,a,i,s,c,\"throw\",e)}s(void 0)}))}}function i(){return(i=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}return(r=e[Symbol.iterator]()).next.bind(r)}function c(e,t){return e(t={exports:{}},t.exports),t.exports}for(var u=c((function(e){var t=function(e){var t=Object.prototype,r=t.hasOwnProperty,n=\"function\"==typeof Symbol?Symbol:{},a=n.iterator||\"@@iterator\",i=n.asyncIterator||\"@@asyncIterator\",o=n.toStringTag||\"@@toStringTag\";function s(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},\"\")}catch(e){s=function(e,t,r){return e[t]=r}}function c(e,t,r,n){var a=Object.create((t&&t.prototype instanceof l?t:l).prototype),i=new k(n||[]);return a._invoke=function(e,t,r){var n=\"suspendedStart\";return function(a,i){if(\"executing\"===n)throw new Error(\"Generator is already running\");if(\"completed\"===n){if(\"throw\"===a)throw i;return{value:void 0,done:!0}}for(r.method=a,r.arg=i;;){var o=r.delegate;if(o){var s=_(o,r);if(s){if(s===f)continue;return s}}if(\"next\"===r.method)r.sent=r._sent=r.arg;else if(\"throw\"===r.method){if(\"suspendedStart\"===n)throw n=\"completed\",r.arg;r.dispatchException(r.arg)}else\"return\"===r.method&&r.abrupt(\"return\",r.arg);n=\"executing\";var c=u(e,t,r);if(\"normal\"===c.type){if(n=r.done?\"completed\":\"suspendedYield\",c.arg===f)continue;return{value:c.arg,done:r.done}}\"throw\"===c.type&&(n=\"completed\",r.method=\"throw\",r.arg=c.arg)}}}(e,r,i),a}function u(e,t,r){try{return{type:\"normal\",arg:e.call(t,r)}}catch(e){return{type:\"throw\",arg:e}}}e.wrap=c;var f={};function l(){}function h(){}function d(){}var p={};p[a]=function(){return this};var y=Object.getPrototypeOf,v=y&&y(y(S([])));v&&v!==t&&r.call(v,a)&&(p=v);var m=d.prototype=l.prototype=Object.create(p);function g(e){[\"next\",\"throw\",\"return\"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var n;this._invoke=function(a,i){function o(){return new t((function(n,o){!function n(a,i,o,s){var c=u(e[a],e,i);if(\"throw\"!==c.type){var f=c.arg,l=f.value;return l&&\"object\"==typeof l&&r.call(l,\"__await\")?t.resolve(l.__await).then((function(e){n(\"next\",e,o,s)}),(function(e){n(\"throw\",e,o,s)})):t.resolve(l).then((function(e){f.value=e,o(f)}),(function(e){return n(\"throw\",e,o,s)}))}s(c.arg)}(a,i,n,o)}))}return n=n?n.then(o,o):o()}}function _(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,\"throw\"===t.method){if(e.iterator.return&&(t.method=\"return\",t.arg=void 0,_(e,t),\"throw\"===t.method))return f;t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return f}var n=u(r,e.iterator,t.arg);if(\"throw\"===n.type)return t.method=\"throw\",t.arg=n.arg,t.delegate=null,f;var a=n.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=void 0),t.delegate=null,f):a:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,f)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(x,this),this.reset(!0)}function S(e){if(e){var t=e[a];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n=0;--a){var i=this.tryEntries[a],o=i.completion;if(\"root\"===i.tryLoc)return n(\"end\");if(i.tryLoc<=this.prev){var s=r.call(i,\"catchLoc\"),c=r.call(i,\"finallyLoc\");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,\"finallyLoc\")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),w(r),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(\"throw\"===n.type){var a=n.arg;w(r)}return a}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,r){return this.delegate={iterator:S(e),resultName:t,nextLoc:r},\"next\"===this.method&&(this.arg=void 0),f}},e}(e.exports);try{regeneratorRuntime=t}catch(e){Function(\"r\",\"regeneratorRuntime = r\")(t)}})),f={version:\"eosio::abi/1.1\",types:[{new_type_name:\"account_name\",type:\"name\"},{new_type_name:\"action_name\",type:\"name\"},{new_type_name:\"permission_name\",type:\"name\"},{new_type_name:\"chain_alias\",type:\"uint8\"},{new_type_name:\"chain_id\",type:\"checksum256\"},{new_type_name:\"request_flags\",type:\"uint8\"}],structs:[{name:\"permission_level\",fields:[{name:\"actor\",type:\"account_name\"},{name:\"permission\",type:\"permission_name\"}]},{name:\"action\",fields:[{name:\"account\",type:\"account_name\"},{name:\"name\",type:\"action_name\"},{name:\"authorization\",type:\"permission_level[]\"},{name:\"data\",type:\"bytes\"}]},{name:\"extension\",fields:[{name:\"type\",type:\"uint16\"},{name:\"data\",type:\"bytes\"}]},{name:\"transaction_header\",fields:[{name:\"expiration\",type:\"time_point_sec\"},{name:\"ref_block_num\",type:\"uint16\"},{name:\"ref_block_prefix\",type:\"uint32\"},{name:\"max_net_usage_words\",type:\"varuint32\"},{name:\"max_cpu_usage_ms\",type:\"uint8\"},{name:\"delay_sec\",type:\"varuint32\"}]},{name:\"transaction\",base:\"transaction_header\",fields:[{name:\"context_free_actions\",type:\"action[]\"},{name:\"actions\",type:\"action[]\"},{name:\"transaction_extensions\",type:\"extension[]\"}]},{name:\"info_pair\",fields:[{name:\"key\",type:\"string\"},{name:\"value\",type:\"bytes\"}]},{name:\"signing_request\",fields:[{name:\"chain_id\",type:\"variant_id\"},{name:\"req\",type:\"variant_req\"},{name:\"flags\",type:\"request_flags\"},{name:\"callback\",type:\"string\"},{name:\"info\",type:\"info_pair[]\"}]},{name:\"identity\",fields:[{name:\"permission\",type:\"permission_level?\"}]},{name:\"request_signature\",fields:[{name:\"signer\",type:\"name\"},{name:\"signature\",type:\"signature\"}]}],variants:[{name:\"variant_id\",types:[\"chain_alias\",\"chain_id\"]},{name:\"variant_req\",types:[\"action\",\"action[]\",\"transaction\",\"identity\"]}],actions:[{name:\"identity\",type:\"identity\"}]},l={__proto__:null,RequestFlagsNone:0,RequestFlagsBroadcast:1,RequestFlagsBackground:2,data:f},h=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\",d=new Uint8Array(256),p=0;p<64;p++)d[h.charCodeAt(p)]=p;require(\"fast-text-encoding\");var y,v=new TextEncoder,m=new TextDecoder,g=t.Serialize.getTypesFromAbi(t.Serialize.createInitialTypes(),f);(y=exports.ChainName||(exports.ChainName={}))[y.UNKNOWN=0]=\"UNKNOWN\",y[y.EOS=1]=\"EOS\",y[y.TELOS=2]=\"TELOS\",y[y.JUNGLE=3]=\"JUNGLE\",y[y.KYLIN=4]=\"KYLIN\",y[y.WORBLI=5]=\"WORBLI\",y[y.BOS=6]=\"BOS\",y[y.MEETONE=7]=\"MEETONE\",y[y.INSIGHTS=8]=\"INSIGHTS\",y[y.BEOS=9]=\"BEOS\",y[y.WAX=10]=\"WAX\",y[y.PROTON=11]=\"PROTON\",y[y.FIO=12]=\"FIO\";var b=new Map([[exports.ChainName.EOS,\"aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906\"],[exports.ChainName.TELOS,\"4667b205c6838ef70ff7988f6e8257e8be0e1284a2f59699054a018f743b1d11\"],[exports.ChainName.JUNGLE,\"e70aaab8997e1dfce58fbfac80cbbb8fecec7b99cf982a9444273cbc64c41473\"],[exports.ChainName.KYLIN,\"5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191\"],[exports.ChainName.WORBLI,\"73647cde120091e0a4b85bced2f3cfdb3041e266cbbe95cee59b73235a1b3b6f\"],[exports.ChainName.BOS,\"d5a3d18fbb3c084e3b1f3fa98c21014b5f3db536cc15d08f9f6479517c6a3d86\"],[exports.ChainName.MEETONE,\"cfe6486a83bad4962f232d48003b1824ab5665c36778141034d75e57b956e422\"],[exports.ChainName.INSIGHTS,\"b042025541e25a472bffde2d62edd457b7e70cee943412b1ea0f044f88591664\"],[exports.ChainName.BEOS,\"b912d19a6abd2b1b05611ae5be473355d64d95aeff0c09bedc8c166cd6468fe4\"],[exports.ChainName.WAX,\"1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4\"],[exports.ChainName.PROTON,\"384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0\"],[exports.ChainName.FIO,\"21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c\"]]),_={actor:\"............1\",permission:\"............2\"},x=function(){function e(e,t,r,n,a,i){if(this.scheme=\"esr\",0!=(1&t.flags)&&\"identity\"===t.req[0])throw new Error(\"Invalid request (identity request cannot be broadcast)\");if(0==(1&t.flags)&&0===t.callback.length)throw new Error(\"Invalid request (nothing to do, no broadcast or callback set)\");this.version=e,this.data=t,this.zlib=r,this.abiProvider=n,this.signature=a,this.scheme=i||this.scheme}e.create=function(){var t=a(u.mark((function t(r,n){var a,i,o,s,c,f;return u.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(void 0===n&&(n={}),a={},i=function(e){return S(e,n.abiProvider)},void 0===r.identity){t.next=7;break}a.req=[\"identity\",r.identity],t.next=45;break;case 7:if(!r.action||r.actions||r.transaction){t.next=14;break}return t.next=10,i(r.action);case 10:t.t0=t.sent,a.req=[\"action\",t.t0],t.next=45;break;case 14:if(!r.actions||r.action||r.transaction){t.next=28;break}if(1!==r.actions.length){t.next=22;break}return t.next=18,i(r.actions[0]);case 18:t.t1=t.sent,a.req=[\"action\",t.t1],t.next=26;break;case 22:return t.next=24,Promise.all(r.actions.map(i));case 24:t.t2=t.sent,a.req=[\"action[]\",t.t2];case 26:t.next=45;break;case 28:if(!r.transaction||r.action||r.actions){t.next=44;break}return void 0===(o=r.transaction).expiration&&(o.expiration=\"1970-01-01T00:00:00.000\"),void 0===o.ref_block_num&&(o.ref_block_num=0),void 0===o.ref_block_prefix&&(o.ref_block_prefix=0),void 0===o.context_free_actions&&(o.context_free_actions=[]),void 0===o.transaction_extensions&&(o.transaction_extensions=[]),void 0===o.delay_sec&&(o.delay_sec=0),void 0===o.max_cpu_usage_ms&&(o.max_cpu_usage_ms=0),void 0===o.max_net_usage_words&&(o.max_net_usage_words=0),t.next=40,Promise.all(o.actions.map(i));case 40:o.actions=t.sent,a.req=[\"transaction\",o],t.next=45;break;case 44:throw new TypeError(\"Invalid arguments: Must have exactly one of action, actions or transaction\");case 45:if(a.chain_id=N(r.chainId),a.flags=0,(void 0===r.broadcast||r.broadcast)&&(a.flags|=1),\"string\"==typeof r.callback?a.callback=r.callback:\"object\"==typeof r.callback?(a.callback=r.callback.url,r.callback.background&&(a.flags|=2)):a.callback=\"\",a.info=[],\"object\"!=typeof r.info){t.next=63;break}t.t3=u.keys(r.info);case 53:if((t.t4=t.t3()).done){t.next=63;break}if(!r.info.hasOwnProperty(s=t.t4.value)){t.next=61;break}if(c=r.info[s],\"string\"==typeof s){t.next=59;break}throw new Error(\"Invalid info dict, keys must be strings\");case 59:\"string\"==typeof c&&(c=v.encode(c)),a.info.push({key:s,value:c});case 61:t.next=53;break;case 63:return f=new e(2,a,n.zlib,n.abiProvider,void 0,n.scheme),n.signatureProvider&&f.sign(n.signatureProvider),t.abrupt(\"return\",f);case 66:case\"end\":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}(),e.identity=function(e,t){void 0===t&&(t={});var r={actor:e.account||\"............1\",permission:e.permission||\"............2\"};return\"............1\"===r.actor&&\"............2\"===r.permission&&(r=null),this.create({identity:{permission:r},broadcast:!1,callback:e.callback,info:e.info},t)},e.fromTransaction=function(r,n,a){void 0===a&&(a={}),\"string\"!=typeof r&&(r=t.Serialize.arrayToHex(r)),\"string\"==typeof n&&(n=t.Serialize.hexToUint8Array(n));var i=new t.Serialize.SerialBuffer;i.push(2);var o=N(r);return\"chain_alias\"===o[0]?(i.push(0),i.push(o[1])):(i.push(1),i.pushArray(t.Serialize.hexToUint8Array(o[1]))),i.push(2),i.pushArray(n),i.push(1),i.push(0),i.push(0),e.fromData(i.asUint8Array(),a)},e.from=function(t,r){if(void 0===r&&(r={}),\"string\"!=typeof t)throw new Error(\"Invalid request uri\");var n=t.split(\":\"),a=n[0],i=n[1];if(a!==(r.scheme||\"esr\")&&a!==\"web+\"+(r.scheme||\"esr\"))throw new Error(\"Invalid scheme\");var o=function(e){for(var t,r,n,a,i=new Uint8Array(.75*e.length),o=0,s=0;s>4,i[o++]=(15&r)<<4|n>>2,i[o++]=(3&n)<<6|63&a;return i}(i.startsWith(\"//\")?i.slice(2):i);return e.fromData(o,r)},e.fromData=function(r,n){void 0===n&&(n={});var a=r[0],i=-129&a;if(2!==i)throw new Error(\"Unsupported protocol version\");var o=r.slice(1);if(0!=(128&a)){if(!n.zlib)throw new Error(\"Compressed URI needs zlib\");o=n.zlib.inflateRaw(o)}var s,c=new t.Serialize.SerialBuffer({array:o}),u=e.type.deserialize(c);return c.haveReadData()&&(s=g.get(\"request_signature\").deserialize(c)),new e(i,u,n.zlib,n.abiProvider,s,n.scheme)};var n=e.prototype;return n.sign=function(e){var r=this.getSignatureDigest();this.signature=e.sign(t.Serialize.arrayToHex(r))},n.getSignatureDigest=function(){var e=new t.Serialize.SerialBuffer;return e.pushArray([this.version,114,101,113,117,101,115,116]),e.pushArray(this.getData()),r(e.asUint8Array())},n.setSignature=function(e,t){this.signature={signer:e,signature:t}},n.setCallback=function(e,t){this.data.callback=e,t?this.data.flags|=2:this.data.flags&=-3},n.setBroadcast=function(e){e?this.data.flags|=1:this.data.flags&=-2},n.encode=function(e,t){var r=void 0!==e?e:void 0!==this.zlib;if(r&&void 0===this.zlib)throw new Error(\"Need zlib to compress\");var n=this.version,a=this.getData(),i=this.getSignatureData(),o=new Uint8Array(a.byteLength+i.byteLength);if(o.set(a,0),o.set(i,a.byteLength),r){var s=this.zlib.deflateRaw(o);o.byteLength>s.byteLength&&(n|=128,o=s)}var c=new Uint8Array(1+o.byteLength);c[0]=n,c.set(o,1);var u=this.scheme+\":\";return!1!==t&&(u+=\"//\"),u+function(e){for(var t,r=e.byteLength,n=r%3,a=r-n,i=[],o=0;o>18]+h[(258048&t)>>12]+h[(4032&t)>>6]+h[63&t]);return 1===n?i.push(h[(252&(t=e[a]))>>2]+h[(3&t)<<4]):2===n&&i.push(h[(64512&(t=e[a]<<8|e[a+1]))>>10]+h[(1008&t)>>4]+h[(15&t)<<2]),i.join(\"\")}(c)},n.getData=function(){var r=new t.Serialize.SerialBuffer;return e.type.serialize(r,this.data),r.asUint8Array()},n.getSignatureData=function(){if(!this.signature)return new Uint8Array(0);var e=new t.Serialize.SerialBuffer;return g.get(\"request_signature\").serialize(e,this.signature),e.asUint8Array()},n.getRequiredAbis=function(){return this.getRawActions().filter((function(e){return!A(e)})).map((function(e){return e.account})).filter((function(e,t,r){return r.indexOf(e)===t}))},n.requiresTapos=function(){var e=this.getRawTransaction();return!this.isIdentity()&&!O(e)},n.fetchAbis=function(){var e=a(u.mark((function e(t){var r,n;return u.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t||this.abiProvider){e.next=3;break}throw new Error(\"Missing ABI provider\");case 3:return n=new Map,e.next=6,Promise.all(this.getRequiredAbis().map(function(){var e=a(u.mark((function e(t){return u.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=n,e.t1=t,e.next=4,r.getAbi(t);case 4:e.t2=e.sent,e.t0.set.call(e.t0,e.t1,e.t2);case 6:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 6:return e.abrupt(\"return\",n);case 7:case\"end\":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),n.resolveActions=function(e,r){return this.getRawActions().map((function(n){var a;if(!(a=A(n)?f:e.get(n.account)))throw new Error(\"Missing ABI definition for \"+n.account);var i=k(a);r&&(i.types.get(\"name\").deserialize=function(e){var t=e.getName();return\"............1\"===t?r.actor:\"............2\"===t?r.permission:t});var o=t.Serialize.deserializeAction(i,n.account,n.name,n.authorization,n.data);return r&&(o.authorization=o.authorization.map((function(e){var t=e.actor,n=e.permission;return\"............1\"===t&&(t=r.actor),\"............2\"===n&&(n=r.permission),\"............1\"===n&&(n=r.permission),{actor:t,permission:n}}))),o}))},n.resolveTransaction=function(e,r,n){void 0===n&&(n={});var a=this.getRawTransaction();if(!this.isIdentity()&&!O(a))if(void 0!==n.expiration&&void 0!==n.ref_block_num&&void 0!==n.ref_block_prefix)a.expiration=n.expiration,a.ref_block_num=n.ref_block_num,a.ref_block_prefix=n.ref_block_prefix;else{if(void 0===n.block_num||void 0===n.ref_block_prefix||void 0===n.timestamp)throw new Error(\"Invalid transaction context, need either a reference block or explicit TAPoS values\");var o=t.Serialize.transactionHeader(n,void 0!==n.expire_seconds?n.expire_seconds:60);a.expiration=o.expiration,a.ref_block_num=o.ref_block_num,a.ref_block_prefix=o.ref_block_prefix}return i({},a,{actions:this.resolveActions(e,r)})},n.resolve=function(r,n,a){void 0===a&&(a={});var o=this.resolveTransaction(r,n,a),s=new t.Serialize.SerialBuffer,c=o.actions.map((function(e){var n;if(!(n=A(e)?f:r.get(e.account)))throw new Error(\"Missing ABI definition for \"+e.account);var a=k(n);return t.Serialize.serializeAction(a,e.account,e.name,e.authorization,e.data)}));e.transactionType.serialize(s,i({},o,{actions:c}));var u=s.asUint8Array();return new w(this,n,o,u)},n.getScheme=function(){return this.scheme},n.getChainId=function(){var e=this.data.chain_id;switch(e[0]){case\"chain_id\":return e[1];case\"chain_alias\":if(b.has(e[1]))return b.get(e[1]);throw new Error(\"Unknown chain id alias\");default:throw new Error(\"Invalid signing request data\")}},n.getRawActions=function(){var r=this.data.req;switch(r[0]){case\"action\":return[r[1]];case\"action[]\":return r[1];case\"identity\":var n=\"0101000000000000000200000000000000\",a=[_];if(r[1].permission){var i=new t.Serialize.SerialBuffer;e.idType.serialize(i,r[1]),n=t.Serialize.arrayToHex(i.asUint8Array()),a=[r[1].permission]}return[{account:\"\",name:\"identity\",authorization:a,data:n}];case\"transaction\":return r[1].actions;default:throw new Error(\"Invalid signing request data\")}},n.getRawTransaction=function(){var e=this.data.req;switch(e[0]){case\"transaction\":return e[1];case\"action\":case\"action[]\":case\"identity\":return{actions:this.getRawActions(),context_free_actions:[],transaction_extensions:[],expiration:\"1970-01-01T00:00:00.000\",ref_block_num:0,ref_block_prefix:0,max_cpu_usage_ms:0,max_net_usage_words:0,delay_sec:0};default:throw new Error(\"Invalid signing request data\")}},n.isIdentity=function(){return\"identity\"===this.data.req[0]},n.shouldBroadcast=function(){return!this.isIdentity()&&0!=(1&this.data.flags)},n.getIdentity=function(){if(\"identity\"===this.data.req[0]&&this.data.req[1].permission){var e=this.data.req[1].permission.actor;return\"............1\"===e?null:e}return null},n.getIdentityPermission=function(){if(\"identity\"===this.data.req[0]&&this.data.req[1].permission){var e=this.data.req[1].permission.permission;return\"............1\"===e?null:e}return null},n.getRawInfo=function(){for(var e,r={},n=s(this.data.info);!(e=n()).done;){var a=e.value,i=a.value;r[a.key]=\"string\"==typeof i?t.Serialize.hexToUint8Array(i):i}return r},n.getInfo=function(){for(var e={},t=this.getRawInfo(),r=0,n=Object.keys(t);r=0;--o){var a=this.tryEntries[o],i=a.completion;if(\"root\"===a.tryLoc)return r(\"end\");if(a.tryLoc<=this.prev){var l=n.call(a,\"catchLoc\"),c=n.call(a,\"finallyLoc\");if(l&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,\"finallyLoc\")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),b(n),u}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if(\"throw\"===r.type){var o=r.arg;b(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(t,e,n){return this.delegate={iterator:M(t),resultName:e,nextLoc:n},\"next\"===this.method&&(this.arg=void 0),u}},t}(t.exports);try{regeneratorRuntime=e}catch(t){Function(\"r\",\"regeneratorRuntime = r\")(e)}})),s=function(){function t(t,e,n){this.name=t,this.appLogo=e,this.appName=t||\"app\",this.customStyleOptions=n}var e=t.prototype;return e.hideSelector=function(){this.selectorContainerEl&&this.selectorContainerEl.classList.remove(\"wallet-selector-active\")},e.showSelector=function(){this.selectorContainerEl&&this.selectorContainerEl.classList.add(\"wallet-selector-active\")},e.setUpSelectorContainer=function(t){var e=this;this.font=document.createElement(\"link\"),this.font.href=\"https://fonts.cdnfonts.com/css/circular-std-book\",this.font.rel=\"stylesheet\",this.styleEl=document.createElement(\"style\"),this.styleEl.type=\"text/css\";var n,r,o,a=\"\\n .wallet-selector * {\\n box-sizing: border-box;\\n line-height: 1;\\n }\\n\\n .wallet-selector {\\n font-family: 'Circular Std Book', -apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',\\n Arial, sans-serif;\\n font-size: 13px;\\n background: rgba(0, 0, 0, 0.65);\\n position: fixed;\\n top: 0px;\\n left: 0px;\\n width: 100%;\\n height: 100%;\\n z-index: 2147483647;\\n display: none;\\n align-items: center;\\n justify-content: center;\\n }\\n\\n .wallet-selector-active {\\n display: flex;\\n flex-direction: column;\\n }\\n\\n .wallet-selector-inner {\\n background: \"+(r=(n=Object.assign({modalBackgroundColor:\"#ffffff\",logoBackgroundColor:\"transparent\",isLogoRound:!1,optionBackgroundColor:\"transparent\",optionFontColor:\"#000531\",primaryFontColor:\"black\",secondaryFontColor:\"#a1a5b0\",linkColor:\"#00AAEF\"},this.customStyleOptions)).modalBackgroundColor)+\";\\n color: white;\\n margin: 20px 20px 13px 20px;\\n padding-top: 50px;\\n border-radius: 10px;\\n box-shadow: 0px -10px 50px rgba(0, 0, 0, .5) !important;\\n width: 360px;\\n transition-property: all;\\n transition-duration: .5s;\\n transition-timing-function: ease-in-out;\\n position: relative;\\n }\\n\\n .wallet-selector-close {\\n display: block;\\n position: absolute;\\n top: 16px;\\n right: 16px;\\n width: 28px;\\n height: 28px;\\n background-image: url(\\\"data:image/svg+xml,%3Csvg width='12' height='12' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9.66 10.987L6 7.327l-3.66 3.66A1.035 1.035 0 11.876 9.523l3.66-3.66-3.66-3.66A1.035 1.035 0 012.34.737L6 4.398 9.66.739a1.035 1.035 0 111.464 1.464l-3.66 3.66 3.66 3.661a1.035 1.035 0 11-1.464 1.464z' fill='rgba(161, 165, 176, 0.7)' fill-rule='nonzero'/%3E%3C/svg%3E\\\");\\n background-size: 14px;\\n background-repeat: no-repeat;\\n background-position: 50%;\\n cursor: pointer;\\n transition: background-image 0.2s ease;\\n }\\n\\n .wallet-selector-close:hover {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg width='12' height='12' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9.66 10.987L6 7.327l-3.66 3.66A1.035 1.035 0 11.876 9.523l3.66-3.66-3.66-3.66A1.035 1.035 0 012.34.737L6 4.398 9.66.739a1.035 1.035 0 111.464 1.464l-3.66 3.66 3.66 3.661a1.035 1.035 0 11-1.464 1.464z' fill='rgba(161, 165, 176, 1)' fill-rule='nonzero'/%3E%3C/svg%3E\\\");\\n transition: background-image 0.2s ease;\\n }\\n\\n .wallet-selector-connect {\\n padding: 0px 20px;\\n border-radius: 10px;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n background: \"+r+\";\\n }\\n\\n .wallet-selector-connect-header {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n }\\n\\n .wallet-selector-logo {\\n width: 100px;\\n height: 100px;\\n background: \"+n.logoBackgroundColor+\";\\n \"+(n.isLogoRound&&\"\\n width: 120px;\\n height: 120px;\\n padding: 10px;\\n margin-bottom: 10px;\\n border: 1px solid rgba(161, 165, 176, 0.23);\\n border-radius: 50%;\\n \")+\"\\n }\\n\\n .wallet-selector-title {\\n font-size: 16px;\\n font-family: 'Circular Std Book', sans-serif;\\n line-height: 24px;\\n color: \"+n.primaryFontColor+\";\\n text-align: center;\\n }\\n\\n .wallet-selector-subtitle {\\n font-size: 16px;\\n font-family: 'Circular Std Book', sans-serif;\\n line-height: 24px;\\n color: \"+(o=n.secondaryFontColor)+\";\\n text-align: center;\\n }\\n\\n .wallet-selector-connect-body {\\n margin-top: 55px;\\n }\\n\\n .wallet-selector-wallet-list {\\n margin: 0px;\\n padding: 0px;\\n list-style: none;\\n }\\n\\n .wallet-selector-wallet-list li {\\n background: \"+n.optionBackgroundColor+\";\\n }\\n\\n .wallet-selector-proton-wallet, .wallet-selector-anchor-wallet {\\n display: flex;\\n align-items: center;\\n padding: 20px 20px 20px 16px;\\n border: 1px solid rgba(161, 165, 176, 0.23);\\n }\\n\\n .wallet-selector-anchor-wallet {\\n margin-top: 8px;\\n }\\n\\n .wallet-selector-proton-wallet:hover, .wallet-selector-anchor-wallet:hover {\\n cursor: pointer;\\n }\\n\\n .wallet-selector-proton-logo {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cdefs%3E%3ClinearGradient id='8h6tugcn1a' x1='4.068%25' x2='97.224%25' y1='97.082%25' y2='127.413%25'%3E%3Cstop offset='0%25' stop-color='%237543E3'/%3E%3Cstop offset='100%25' stop-color='%23582ACB'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg%3E%3Cg%3E%3Cg%3E%3Cg transform='translate(-365 -412) translate(332 136) translate(16 256) translate(17 20)'%3E%3Ccircle cx='20' cy='20' r='20' fill='url(%238h6tugcn1a)' fill-rule='nonzero'/%3E%3Cpath fill='%23FFF' d='M20.501 6c1.798 0 3.35 1.864 4.37 4.892-.412.115-.833.243-1.259.385-.849-2.505-2.013-3.979-3.11-3.979-1.238 0-2.558 1.87-3.417 4.977.335.108.675.223 1.02.35.78.287 1.584.624 2.404 1.007l.14-.066c.526-.241 1.048-.464 1.565-.668l.185-.072c1.548-.597 3.043-1.026 4.411-1.252 2.948-.49 5.02.017 5.834 1.426.815 1.41.22 3.455-1.679 5.758-.11.131-.22.265-.338.396-.282-.313-.583-.626-.904-.94 1.675-1.94 2.334-3.634 1.796-4.565-.51-.88-2.188-1.177-4.495-.795-.493.081-1.005.192-1.531.329.075.345.145.697.207 1.061.142.816.252 1.68.33 2.578.406.285.802.574 1.182.868 1.49 1.151 2.769 2.358 3.753 3.552 1.898 2.303 2.494 4.349 1.68 5.758-.612 1.059-1.934 1.608-3.804 1.608-.619 0-1.297-.06-2.03-.182-.19-.032-.383-.067-.578-.106.117-.402.225-.823.323-1.259.158.032.314.06.468.085 2.305.382 3.986.086 4.495-.795.618-1.07-.348-3.151-2.62-5.453-.226.207-.46.413-.701.617l-.108.089c-.643.538-1.333 1.065-2.062 1.578-.036.407-.076.81-.124 1.2-.71 5.704-2.797 9.618-5.403 9.618-1.794 0-3.343-1.858-4.364-4.879.41-.11.83-.24 1.26-.385.848 2.497 2.008 3.966 3.104 3.966 1.238 0 2.56-1.876 3.421-4.992-.337-.107-.678-.221-1.021-.348-.785-.286-1.586-.62-2.392-.992l-.052.024c-.455.211-.903.408-1.345.59-.069.027-.136.055-.202.079-2.545 1.024-4.868 1.554-6.716 1.554-1.84 0-3.206-.527-3.837-1.617-.903-1.561-.049-3.848 2.089-6.258l.908.957c-1.729 1.976-2.416 3.708-1.87 4.652.618 1.069 2.9 1.275 6.024.465-.073-.344-.143-.695-.205-1.058-.141-.815-.251-1.676-.33-2.573-.407-.284-.803-.572-1.178-.86C10.173 19.544 8 16.59 8 14.391c0-.508.117-.976.357-1.391.899-1.552 3.285-1.962 6.418-1.335-.118.408-.228.834-.327 1.276-2.576-.508-4.42-.236-4.964.708-.618 1.069.344 3.145 2.609 5.443.29-.263.592-.524.909-.783.61-.504 1.27-1.004 1.973-1.496.036-.408.076-.811.125-1.202C15.81 9.913 17.897 6 20.501 6zm4.114 18.122c-.313.198-.63.393-.953.584l-.328.191c-.385.22-.77.434-1.15.634l-.169.088c.395.167.788.323 1.176.467.35.13.696.25 1.039.361.076-.355.147-.722.21-1.101.067-.394.123-.805.175-1.224zm-8.232-.002c.055.44.118.867.188 1.28.062.36.13.708.204 1.046.21-.068.422-.14.638-.216.065-.022.132-.046.197-.07.443-.16.898-.336 1.363-.534l.013-.005c-.44-.23-.88-.472-1.317-.724l-.069-.04c-.418-.242-.821-.488-1.217-.737zm4.119-9.05c-.445.216-.89.442-1.336.684-.282.152-.565.31-.847.472-.74.427-1.437.865-2.094 1.308-.026.378-.05.761-.064 1.155-.017.428-.024.866-.024 1.311 0 .854.031 1.675.087 2.465.38.256.77.51 1.177.76.3.185.604.369.918.549.727.418 1.457.804 2.184 1.156l.14-.066c.482-.238.97-.493 1.467-.768.191-.104.382-.211.574-.322.74-.427 1.436-.864 2.093-1.307.027-.379.05-.763.065-1.156.016-.428.024-.866.024-1.311 0-.853-.032-1.675-.087-2.465-.379-.255-.768-.509-1.176-.76-.3-.185-.606-.367-.92-.549-.74-.426-1.468-.81-2.181-1.157zm0 3.261c.923 0 1.67.747 1.67 1.669s-.747 1.669-1.67 1.669c-.924 0-1.672-.747-1.672-1.669s.748-1.669 1.671-1.669zm5.635.174c.019.49.029.988.029 1.495 0 .122 0 .245-.002.367-.004.383-.015.76-.03 1.134.335-.253.656-.506.962-.76.04-.03.077-.06.114-.092.26-.217.508-.433.747-.65-.219-.196-.446-.394-.682-.592-.359-.303-.74-.603-1.138-.902zM14.869 18.5c-.301.227-.592.454-.87.681-.335.272-.653.545-.955.819.22.197.447.396.684.594.358.3.74.601 1.138.9-.02-.49-.03-.988-.03-1.495 0-.122 0-.245.004-.365.003-.383.014-.76.029-1.134zm9.359-4.948c-.173.057-.347.115-.523.176-.516.178-1.04.38-1.571.602l-.113.049c.435.229.873.47 1.313.723l.068.04c.416.24.82.487 1.217.738-.054-.44-.117-.868-.188-1.28-.062-.361-.13-.709-.203-1.048zm-7.454 0c-.076.355-.146.72-.21 1.1-.068.393-.125.804-.177 1.222.397-.25.804-.496 1.223-.739l.059-.033c.438-.253.879-.493 1.319-.723-.399-.168-.79-.324-1.174-.466-.355-.133-.7-.251-1.04-.36z'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\\\");\\n }\\n\\n .wallet-selector-anchor-logo {\\n background-image: url(\\\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE2MCIgdmlld0JveD0iMCAwIDI1NiAyNTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGcgc3R5bGU9IiIgdHJhbnNmb3JtPSJtYXRyaXgoMC45LCAwLCAwLCAwLjksIDEyLjc5OTk5NSwgMTIuNzk5OTk1KSI+CiAgICA8Y2lyY2xlIGN4PSIxMjgiIGN5PSIxMjgiIHI9IjEyOCIgZmlsbD0iIzM2NTBBMiIgc3R5bGU9IiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0gMTI4LjAxIDQ4IEMgMTMxLjY4OSA0OCAxMzUuMDQ0IDUwLjEwMiAxMzYuNjQ3IDUzLjQxMiBMIDE3NS4wNTcgMTMyLjYxMyBMIDE3NS45MjQgMTM0LjQgTCAxNTQuNTg3IDEzNC40IEwgMTQ4LjM3OCAxMjEuNiBMIDEwNy42NCAxMjEuNiBMIDEwMS40MzMgMTM0LjQgTCA4MC4wOTQgMTM0LjQgTCA4MC45NjMgMTMyLjYxMSBMIDExOS4zNzIgNTMuNDEyIEMgMTIwLjk3OCA1MC4xMDIgMTI0LjMzMSA0OCAxMjguMDEgNDggWiBNIDExNS40IDEwNS42MDEgTCAxNDAuNjE5IDEwNS42MDEgTCAxMjguMDEgNzkuNjAxIEwgMTE1LjQgMTA1LjYwMSBaIE0gMTU2Ljc5OCAxNjEuNiBMIDE3Ni4wMDggMTYxLjYgQyAxNzUuNDMgMTg3LjQ0MyAxNTQuMDM5IDIwOCAxMjguMDEgMjA4IEMgMTAxLjk4MyAyMDggODAuNTg5IDE4Ny40NDMgODAuMDEyIDE2MS42IEwgOTkuMjIgMTYxLjYgQyA5OS42NzEgMTczLjM2NyAxMDcuNDg5IDE4My40MDkgMTE4LjM5OSAxODcuMTk1IEwgMTE4LjM5OSAxNDguODAxIEMgMTE4LjM5OSAxNDMuNDk5IDEyMi42OTggMTM5LjIgMTI4IDEzOS4yIEMgMTMzLjMwMiAxMzkuMiAxMzcuNjAxIDE0My40OTkgMTM3LjYwMSAxNDguODAxIEwgMTM3LjYwMSAxODcuMjAxIEMgMTQ4LjUyMiAxODMuNDIxIDE1Ni4zNDkgMTczLjM3NiAxNTYuNzk4IDE2MS42IFoiIGZpbGw9IndoaXRlIiBzdHlsZT0iIi8+CiAgPC9nPgo8L3N2Zz4=\\\");\\n }\\n\\n .wallet-selector-proton-logo,\\n .wallet-selector-anchor-logo {\\n width: 40px;\\n height: 40px;\\n background-size: 40px;\\n background-repeat: no-repeat;\\n background-position: 50%;\\n }\\n\\n .wallet-selector-wallet-name {\\n font-family: 'Circular Std Book', sans-serif;\\n font-size: 16px;\\n line-height: 24px;\\n color: \"+n.optionFontColor+\";\\n margin-left: 20px;\\n }\\n\\n .wallet-selector-right-arrow {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='chevron-right' class='svg-inline--fa fa-chevron-right fa-w-10' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 512'%3E%3Cpath fill='rgba(161, 165, 176, 0.7)' d='M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z'%3E%3C/path%3E%3C/svg%3E\\\");\\n width: 10px;\\n height: 20px;\\n background-size: 10px;\\n background-repeat: no-repeat;\\n background-position: 50%;\\n margin-left: auto;\\n }\\n\\n .wallet-selector-proton-wallet:hover .wallet-selector-right-arrow {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='chevron-right' class='svg-inline--fa fa-chevron-right fa-w-10' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 512'%3E%3Cpath fill='rgba(161, 165, 176, 1)' d='M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z'%3E%3C/path%3E%3C/svg%3E\\\");\\n }\\n\\n .wallet-selector-anchor-wallet:hover .wallet-selector-right-arrow {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='chevron-right' class='svg-inline--fa fa-chevron-right fa-w-10' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 512'%3E%3Cpath fill='rgba(161, 165, 176, 1)' d='M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z'%3E%3C/path%3E%3C/svg%3E\\\");\\n }\\n\\n .wallet-selector-tos-agreement {\\n font-family: 'Circular Std Book', sans-serif;\\n font-size: 12px;\\n line-height: 16px;\\n text-align: center;\\n margin-top: 55px;\\n margin-bottom: 30px;\\n color: \"+o+\";\\n }\\n\\n .wallet-selector-tos-link {\\n color: \"+n.linkColor+\";\\n text-decoration: none;\\n }\\n\\n .wallet-selector-footnote {\\n font-family: 'Circular Std Book', sans-serif;\\n font-size: 16px;\\n text-align: center;\\n width: 100%;\\n bottom: -30px;\\n left: 0;\\n color: white !important;\\n }\\n \\n .wallet-selector-footnote a {\\n color: #ffffff !important;\\n }\\n \";if(this.styleEl.appendChild(document.createTextNode(a)),this.styleEl.appendChild(this.font),document.head.appendChild(this.styleEl),this.selectorContainerEl||(this.clearDuplicateContainers(),this.selectorContainerEl=this.createEl(),this.selectorContainerEl.className=\"wallet-selector\",this.selectorContainerEl.onclick=function(n){n.target===e.selectorContainerEl&&(n.stopPropagation(),e.hideSelector(),t(\"no wallet selected\"))},document.body.appendChild(this.selectorContainerEl)),!this.selectorEl){var i=this.createEl({class:\"inner\"}),l=this.createEl({class:\"close\"});l.onclick=function(n){n.stopPropagation(),e.hideSelector(),t(\"no wallet selected\")},this.selectorEl=this.createEl({class:\"connect\"}),i.appendChild(this.selectorEl),i.appendChild(l),this.selectorContainerEl.appendChild(i)}},e.clearDuplicateContainers=function(){for(var t=document.getElementsByClassName(\"wallet-selector\");t.length>0;)t[0].remove()},e.createEl=function(t){t||(t={});var e=document.createElement(t.tag||\"div\");if(t)for(var n=0,r=Object.keys(t);n0?I:null)){t.next=95;break}return t.next=90,v.restoreSession(h.requestAccount||\"\",L);case 90:if(x=t.sent){t.next=95;break}return l.storage.remove(\"wallet-type\"),l.storage.remove(\"user-auth\"),t.abrupt(\"return\",{link:null,session:null});case 95:t.next=20;break;case 97:return t.abrupt(\"return\",{link:v,session:x,loginResult:m});case 98:case\"end\":return t.stop()}}),t,null,[[32,38],[43,47],[64,72]])})));return function(e){return t.apply(this,arguments)}}();\n//# sourceMappingURL=web-sdk.cjs.production.min.js.map\n","// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = require('./internal/errors'),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\n\nvar AssertionError = require('./internal/assert/assertion_error');\n\nvar _require2 = require('util/'),\n inspect = _require2.inspect;\n\nvar _require$types = require('util/').types,\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\n\nvar objectAssign = Object.assign ? Object.assign : require('es6-object-assign').assign;\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\n\nfunction lazyLoadComparison() {\n var comparison = require('./internal/util/comparisons');\n\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n} // Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\n\n\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\n\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\n\nvar warned = false; // The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {}; // All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\n\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n\n if (argsLen === 2) operator = '!=';\n }\n\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n\n if (message !== undefined) {\n errArgs.message = message;\n }\n\n var err = new AssertionError(errArgs);\n\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n\n throw err;\n}\n\nassert.fail = fail; // The AssertionError is defined in internal/error.\n\nassert.AssertionError = AssertionError;\n\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n} // Pure assertion tests whether a value is truthy, as determined\n// by !!value.\n\n\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\n\nassert.ok = ok; // The equality assertion tests shallow, coercive equality with ==.\n\n/* eslint-disable no-restricted-properties */\n\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n}; // The non-equality assertion tests for whether two objects are not\n// equal with !=.\n\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n}; // The equivalence assertion tests a deep equality relation.\n\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n}; // The non-equivalence assertion tests for any deep inequality.\n\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\n\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\n\nvar Comparison = function Comparison(obj, keys, actual) {\n var _this = this;\n\n _classCallCheck(this, Comparison);\n\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && obj[key].test(actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n};\n\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\n\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return expected.test(actual); // assert.doesNotThrow does not accept objects.\n\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n } // Handle primitives properly.\n\n\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n\n var keys = Object.keys(expected); // Special handle errors to make sure the name and the message are compared\n // as well.\n\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && expected[key].test(actual[key])) {\n return;\n }\n\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n } // Guard instanceof against arrow functions as they don't have a prototype.\n\n\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n\n try {\n fn();\n } catch (e) {\n return e;\n }\n\n return NO_EXCEPTION_SENTINEL;\n}\n\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\n\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn(); // Fail in case no promise is returned.\n\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\n\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\n\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n\n throw actual;\n}\n\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\n\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\n\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\n\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\n\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n }); // Make sure we actually have a stack trace!\n\n var origStack = err.stack;\n\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift(); // Filter all frames existing in err.stack.\n\n var tmp1 = newErr.stack.split('\\n');\n\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n\n throw newErr;\n }\n}; // Expose a strict only variant of assert\n\n\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\n\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;","// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _require = require('util/'),\n inspect = _require.inspect;\n\nvar _require2 = require('../errors'),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; // 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/repeat\n\n\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n\n while (count) {\n str += str;\n count--;\n }\n\n str += str.substring(0, maxCount - str.length);\n return str;\n}\n\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n}; // Comparing short primitives should just show === / !== instead of using the\n// diff.\n\nvar kMaxShortLength = 10;\n\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\n\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\n\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = ''; // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n } // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n\n\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length; // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n } // Ignore the first characters.\n\n\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n } // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n\n\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n\n var maxLines = Math.max(actualLines.length, expectedLines.length); // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n'); // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the expected line to the cache.\n\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++; // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++; // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i]; // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine); // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2; // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = ''; // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n } // Inspected object to big (Show ~20 rows max)\n\n\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\n\nvar AssertionError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(AssertionError, _Error);\n\n function AssertionError(options) {\n var _this;\n\n _classCallCheck(this, AssertionError);\n\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n\n if (message != null) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, String(message)));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n } // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n\n\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, createErrDiff(actual, expected, operator)));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n'); // In case \"actual\" is an object, it should not be reference equal.\n\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n } // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (res.length > 27) {\n res.pop();\n }\n } // Only print a single input.\n\n\n if (res.length === 1) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \" \").concat(res[0])));\n } else {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\")));\n }\n } else {\n var _res = inspectValue(actual);\n\n var other = '';\n var knownOperators = kReadableOperator[operator];\n\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(_res).concat(other)));\n }\n }\n\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n } // Create error message including the error code in the name.\n\n\n _this.stack; // Reset the name.\n\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: inspect.custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread({}, ctx, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n\n return AssertionError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = AssertionError;","// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n\n/* eslint node-core/alphabetize-errors: \"error\" */\n\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n'use strict'; // The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar codes = {}; // Lazy loaded\n\nvar assert;\nvar util;\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 _inherits(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n var _this;\n\n _classCallCheck(this, NodeError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError).call(this, getMessage(arg1, arg2, arg3)));\n _this.code = code;\n return _this;\n }\n\n return NodeError;\n }(Base);\n\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_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = require('../assert');\n assert(typeof name === 'string', \"'name' must be a string\"); // determiner: 'must be' or 'must not be'\n\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 } // TODO(BridgeAR): Improve the output by showing `null` and similar.\n\n\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = require('util/');\n var inspected = util.inspect(value);\n\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (assert === undefined) assert = require('../assert');\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;","// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar regexFlagsSupported = /a/g.flags !== undefined;\n\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\n\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\n\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\n\nvar _require$types = require('util/').types,\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\n\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n } // The maximum size for an array is 2 ** 32 -1.\n\n\n return key.length === 10 && key >= Math.pow(2, 32);\n}\n\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n} // Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n\n if (y < x) {\n return 1;\n }\n\n return 0;\n}\n\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3; // Check if they have the same source and flags\n\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\n\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\n\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\n\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n} // Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n } // Check more closely if val1 and val2 are equal.\n\n\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n\n return false;\n }\n\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n\n if (val1Tag !== val2Tag) {\n return false;\n }\n\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n } // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n\n\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n } // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n\n\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (_keys.length !== _keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\n\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\n\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2); // The pair must have the same number of owned properties.\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n } // Cheap key test\n\n\n var i = 0;\n\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n\n if (symbolKeysA.length !== 0) {\n var count = 0;\n\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n } // Use memos to handle cycles.\n\n\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n\n memos.position++;\n }\n\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\n\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n\n return false;\n} // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\n\n\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n\n case 'object':\n // Only pass in null as object!\n return undefined;\n\n case 'symbol':\n return false;\n\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n\n }\n\n return true;\n}\n\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\n\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n\n if (altValue != null) {\n return altValue;\n }\n\n var curB = b.get(altValue);\n\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\n\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i]; // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n } // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n\n\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null values.\n\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(val);\n }\n }\n\n if (set !== null) {\n var bValues = arrayFromSet(b);\n\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i]; // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null\n // keys.\n\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n }\n }\n }\n\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (!mapHasEqualEntry(set, a, key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n\n return true;\n }\n }\n } // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n\n\n for (i = 0; i < keys.length; i++) {\n var _key = keys[i];\n\n if (!innerDeepEqual(a[_key], b[_key], strict, memos)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\n\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\n\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","// (public) Constructor\nfunction BigInteger(a, b, c) {\n if (!(this instanceof BigInteger))\n return new BigInteger(a, b, c)\n\n if (a != null) {\n if (\"number\" == typeof a) this.fromNumber(a, b, c)\n else if (b == null && \"string\" != typeof a) this.fromString(a, 256)\n else this.fromString(a, b)\n }\n}\n\nvar proto = BigInteger.prototype\n\n// duck-typed isBigInteger\nproto.__bigi = require('../package.json').version\nBigInteger.isBigInteger = function (obj, check_ver) {\n return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)\n}\n\n// Bits per digit\nvar dbits\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c\n c = Math.floor(v / 0x4000000)\n w[j++] = v & 0x3ffffff\n }\n return c\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff,\n xh = x >> 15\n while (--n >= 0) {\n var l = this[i] & 0x7fff\n var h = this[i++] >> 15\n var m = xh * l + h * xl\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)\n w[j++] = l & 0x3fffffff\n }\n return c\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff,\n xh = x >> 14\n while (--n >= 0) {\n var l = this[i] & 0x3fff\n var h = this[i++] >> 14\n var m = xh * l + h * xl\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c\n c = (l >> 28) + (m >> 14) + xh * h\n w[j++] = l & 0xfffffff\n }\n return c\n}\n\n// wtf?\nBigInteger.prototype.am = am1\ndbits = 26\n\nBigInteger.prototype.DB = dbits\nBigInteger.prototype.DM = ((1 << dbits) - 1)\nvar DV = BigInteger.prototype.DV = (1 << dbits)\n\nvar BI_FP = 52\nBigInteger.prototype.FV = Math.pow(2, BI_FP)\nBigInteger.prototype.F1 = BI_FP - dbits\nBigInteger.prototype.F2 = 2 * dbits - BI_FP\n\n// Digit conversions\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\"\nvar BI_RC = new Array()\nvar rr, vv\nrr = \"0\".charCodeAt(0)\nfor (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv\nrr = \"a\".charCodeAt(0)\nfor (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv\nrr = \"A\".charCodeAt(0)\nfor (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv\n\nfunction int2char(n) {\n return BI_RM.charAt(n)\n}\n\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)]\n return (c == null) ? -1 : c\n}\n\n// (protected) copy this to r\nfunction bnpCopyTo(r) {\n for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]\n r.t = this.t\n r.s = this.s\n}\n\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n this.t = 1\n this.s = (x < 0) ? -1 : 0\n if (x > 0) this[0] = x\n else if (x < -1) this[0] = x + DV\n else this.t = 0\n}\n\n// return bigint initialized to value\nfunction nbv(i) {\n var r = new BigInteger()\n r.fromInt(i)\n return r\n}\n\n// (protected) set from string and radix\nfunction bnpFromString(s, b) {\n var self = this\n\n var k\n if (b == 16) k = 4\n else if (b == 8) k = 3\n else if (b == 256) k = 8; // byte array\n else if (b == 2) k = 1\n else if (b == 32) k = 5\n else if (b == 4) k = 2\n else {\n self.fromRadix(s, b)\n return\n }\n self.t = 0\n self.s = 0\n var i = s.length,\n mi = false,\n sh = 0\n while (--i >= 0) {\n var x = (k == 8) ? s[i] & 0xff : intAt(s, i)\n if (x < 0) {\n if (s.charAt(i) == \"-\") mi = true\n continue\n }\n mi = false\n if (sh == 0)\n self[self.t++] = x\n else if (sh + k > self.DB) {\n self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh\n self[self.t++] = (x >> (self.DB - sh))\n } else\n self[self.t - 1] |= x << sh\n sh += k\n if (sh >= self.DB) sh -= self.DB\n }\n if (k == 8 && (s[0] & 0x80) != 0) {\n self.s = -1\n if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh\n }\n self.clamp()\n if (mi) BigInteger.ZERO.subTo(self, self)\n}\n\n// (protected) clamp off excess high words\nfunction bnpClamp() {\n var c = this.s & this.DM\n while (this.t > 0 && this[this.t - 1] == c)--this.t\n}\n\n// (public) return string representation in given radix\nfunction bnToString(b) {\n var self = this\n if (self.s < 0) return \"-\" + self.negate()\n .toString(b)\n var k\n if (b == 16) k = 4\n else if (b == 8) k = 3\n else if (b == 2) k = 1\n else if (b == 32) k = 5\n else if (b == 4) k = 2\n else return self.toRadix(b)\n var km = (1 << k) - 1,\n d, m = false,\n r = \"\",\n i = self.t\n var p = self.DB - (i * self.DB) % k\n if (i-- > 0) {\n if (p < self.DB && (d = self[i] >> p) > 0) {\n m = true\n r = int2char(d)\n }\n while (i >= 0) {\n if (p < k) {\n d = (self[i] & ((1 << p) - 1)) << (k - p)\n d |= self[--i] >> (p += self.DB - k)\n } else {\n d = (self[i] >> (p -= k)) & km\n if (p <= 0) {\n p += self.DB\n --i\n }\n }\n if (d > 0) m = true\n if (m) r += int2char(d)\n }\n }\n return m ? r : \"0\"\n}\n\n// (public) -this\nfunction bnNegate() {\n var r = new BigInteger()\n BigInteger.ZERO.subTo(this, r)\n return r\n}\n\n// (public) |this|\nfunction bnAbs() {\n return (this.s < 0) ? this.negate() : this\n}\n\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n var r = this.s - a.s\n if (r != 0) return r\n var i = this.t\n r = i - a.t\n if (r != 0) return (this.s < 0) ? -r : r\n while (--i >= 0)\n if ((r = this[i] - a[i]) != 0) return r\n return 0\n}\n\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1,\n t\n if ((t = x >>> 16) != 0) {\n x = t\n r += 16\n }\n if ((t = x >> 8) != 0) {\n x = t\n r += 8\n }\n if ((t = x >> 4) != 0) {\n x = t\n r += 4\n }\n if ((t = x >> 2) != 0) {\n x = t\n r += 2\n }\n if ((t = x >> 1) != 0) {\n x = t\n r += 1\n }\n return r\n}\n\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n if (this.t <= 0) return 0\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))\n}\n\n// (public) return the number of bytes in \"this\"\nfunction bnByteLength() {\n return this.bitLength() >> 3\n}\n\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n, r) {\n var i\n for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]\n for (i = n - 1; i >= 0; --i) r[i] = 0\n r.t = this.t + n\n r.s = this.s\n}\n\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n, r) {\n for (var i = n; i < this.t; ++i) r[i - n] = this[i]\n r.t = Math.max(this.t - n, 0)\n r.s = this.s\n}\n\n// (protected) r = this << n\nfunction bnpLShiftTo(n, r) {\n var self = this\n var bs = n % self.DB\n var cbs = self.DB - bs\n var bm = (1 << cbs) - 1\n var ds = Math.floor(n / self.DB),\n c = (self.s << bs) & self.DM,\n i\n for (i = self.t - 1; i >= 0; --i) {\n r[i + ds + 1] = (self[i] >> cbs) | c\n c = (self[i] & bm) << bs\n }\n for (i = ds - 1; i >= 0; --i) r[i] = 0\n r[ds] = c\n r.t = self.t + ds + 1\n r.s = self.s\n r.clamp()\n}\n\n// (protected) r = this >> n\nfunction bnpRShiftTo(n, r) {\n var self = this\n r.s = self.s\n var ds = Math.floor(n / self.DB)\n if (ds >= self.t) {\n r.t = 0\n return\n }\n var bs = n % self.DB\n var cbs = self.DB - bs\n var bm = (1 << bs) - 1\n r[0] = self[ds] >> bs\n for (var i = ds + 1; i < self.t; ++i) {\n r[i - ds - 1] |= (self[i] & bm) << cbs\n r[i - ds] = self[i] >> bs\n }\n if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs\n r.t = self.t - ds\n r.clamp()\n}\n\n// (protected) r = this - a\nfunction bnpSubTo(a, r) {\n var self = this\n var i = 0,\n c = 0,\n m = Math.min(a.t, self.t)\n while (i < m) {\n c += self[i] - a[i]\n r[i++] = c & self.DM\n c >>= self.DB\n }\n if (a.t < self.t) {\n c -= a.s\n while (i < self.t) {\n c += self[i]\n r[i++] = c & self.DM\n c >>= self.DB\n }\n c += self.s\n } else {\n c += self.s\n while (i < a.t) {\n c -= a[i]\n r[i++] = c & self.DM\n c >>= self.DB\n }\n c -= a.s\n }\n r.s = (c < 0) ? -1 : 0\n if (c < -1) r[i++] = self.DV + c\n else if (c > 0) r[i++] = c\n r.t = i\n r.clamp()\n}\n\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a, r) {\n var x = this.abs(),\n y = a.abs()\n var i = x.t\n r.t = i + y.t\n while (--i >= 0) r[i] = 0\n for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)\n r.s = 0\n r.clamp()\n if (this.s != a.s) BigInteger.ZERO.subTo(r, r)\n}\n\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n var x = this.abs()\n var i = r.t = 2 * x.t\n while (--i >= 0) r[i] = 0\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1)\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV\n r[i + x.t + 1] = 1\n }\n }\n if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)\n r.s = 0\n r.clamp()\n}\n\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\nfunction bnpDivRemTo(m, q, r) {\n var self = this\n var pm = m.abs()\n if (pm.t <= 0) return\n var pt = self.abs()\n if (pt.t < pm.t) {\n if (q != null) q.fromInt(0)\n if (r != null) self.copyTo(r)\n return\n }\n if (r == null) r = new BigInteger()\n var y = new BigInteger(),\n ts = self.s,\n ms = m.s\n var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus\n if (nsh > 0) {\n pm.lShiftTo(nsh, y)\n pt.lShiftTo(nsh, r)\n } else {\n pm.copyTo(y)\n pt.copyTo(r)\n }\n var ys = y.t\n var y0 = y[ys - 1]\n if (y0 == 0) return\n var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)\n var d1 = self.FV / yt,\n d2 = (1 << self.F1) / yt,\n e = 1 << self.F2\n var i = r.t,\n j = i - ys,\n t = (q == null) ? new BigInteger() : q\n y.dlShiftTo(j, t)\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1\n r.subTo(t, r)\n }\n BigInteger.ONE.dlShiftTo(ys, t)\n t.subTo(y, y); // \"negative\" y so we can replace sub with am later\n while (y.t < ys) y[y.t++] = 0\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out\n y.dlShiftTo(j, t)\n r.subTo(t, r)\n while (r[i] < --qd) r.subTo(t, r)\n }\n }\n if (q != null) {\n r.drShiftTo(ys, q)\n if (ts != ms) BigInteger.ZERO.subTo(q, q)\n }\n r.t = ys\n r.clamp()\n if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder\n if (ts < 0) BigInteger.ZERO.subTo(r, r)\n}\n\n// (public) this mod a\nfunction bnMod(a) {\n var r = new BigInteger()\n this.abs()\n .divRemTo(a, null, r)\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)\n return r\n}\n\n// Modular reduction using \"classic\" algorithm\nfunction Classic(m) {\n this.m = m\n}\n\nfunction cConvert(x) {\n if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)\n else return x\n}\n\nfunction cRevert(x) {\n return x\n}\n\nfunction cReduce(x) {\n x.divRemTo(this.m, null, x)\n}\n\nfunction cMulTo(x, y, r) {\n x.multiplyTo(y, r)\n this.reduce(r)\n}\n\nfunction cSqrTo(x, r) {\n x.squareTo(r)\n this.reduce(r)\n}\n\nClassic.prototype.convert = cConvert\nClassic.prototype.revert = cRevert\nClassic.prototype.reduce = cReduce\nClassic.prototype.mulTo = cMulTo\nClassic.prototype.sqrTo = cSqrTo\n\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n if (this.t < 1) return 0\n var x = this[0]\n if ((x & 1) == 0) return 0\n var y = x & 3; // y == 1/x mod 2^2\n y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4\n y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8\n y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y > 0) ? this.DV - y : -y\n}\n\n// Montgomery reduction\nfunction Montgomery(m) {\n this.m = m\n this.mp = m.invDigit()\n this.mpl = this.mp & 0x7fff\n this.mph = this.mp >> 15\n this.um = (1 << (m.DB - 15)) - 1\n this.mt2 = 2 * m.t\n}\n\n// xR mod m\nfunction montConvert(x) {\n var r = new BigInteger()\n x.abs()\n .dlShiftTo(this.m.t, r)\n r.divRemTo(this.m, null, r)\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)\n return r\n}\n\n// x/R mod m\nfunction montRevert(x) {\n var r = new BigInteger()\n x.copyTo(r)\n this.reduce(r)\n return r\n}\n\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n while (x.t <= this.mt2) // pad x so am has enough room later\n x[x.t++] = 0\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff\n var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM\n // use am to combine the multiply-shift-add into one call\n j = i + this.m.t\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t)\n // propagate carry\n while (x[j] >= x.DV) {\n x[j] -= x.DV\n x[++j]++\n }\n }\n x.clamp()\n x.drShiftTo(this.m.t, x)\n if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)\n}\n\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x, r) {\n x.squareTo(r)\n this.reduce(r)\n}\n\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x, y, r) {\n x.multiplyTo(y, r)\n this.reduce(r)\n}\n\nMontgomery.prototype.convert = montConvert\nMontgomery.prototype.revert = montRevert\nMontgomery.prototype.reduce = montReduce\nMontgomery.prototype.mulTo = montMulTo\nMontgomery.prototype.sqrTo = montSqrTo\n\n// (protected) true iff this is even\nfunction bnpIsEven() {\n return ((this.t > 0) ? (this[0] & 1) : this.s) == 0\n}\n\n// (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\nfunction bnpExp(e, z) {\n if (e > 0xffffffff || e < 1) return BigInteger.ONE\n var r = new BigInteger(),\n r2 = new BigInteger(),\n g = z.convert(this),\n i = nbits(e) - 1\n g.copyTo(r)\n while (--i >= 0) {\n z.sqrTo(r, r2)\n if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)\n else {\n var t = r\n r = r2\n r2 = t\n }\n }\n return z.revert(r)\n}\n\n// (public) this^e % m, 0 <= e < 2^32\nfunction bnModPowInt(e, m) {\n var z\n if (e < 256 || m.isEven()) z = new Classic(m)\n else z = new Montgomery(m)\n return this.exp(e, z)\n}\n\n// protected\nproto.copyTo = bnpCopyTo\nproto.fromInt = bnpFromInt\nproto.fromString = bnpFromString\nproto.clamp = bnpClamp\nproto.dlShiftTo = bnpDLShiftTo\nproto.drShiftTo = bnpDRShiftTo\nproto.lShiftTo = bnpLShiftTo\nproto.rShiftTo = bnpRShiftTo\nproto.subTo = bnpSubTo\nproto.multiplyTo = bnpMultiplyTo\nproto.squareTo = bnpSquareTo\nproto.divRemTo = bnpDivRemTo\nproto.invDigit = bnpInvDigit\nproto.isEven = bnpIsEven\nproto.exp = bnpExp\n\n// public\nproto.toString = bnToString\nproto.negate = bnNegate\nproto.abs = bnAbs\nproto.compareTo = bnCompareTo\nproto.bitLength = bnBitLength\nproto.byteLength = bnByteLength\nproto.mod = bnMod\nproto.modPowInt = bnModPowInt\n\n// (public)\nfunction bnClone() {\n var r = new BigInteger()\n this.copyTo(r)\n return r\n}\n\n// (public) return value as integer\nfunction bnIntValue() {\n if (this.s < 0) {\n if (this.t == 1) return this[0] - this.DV\n else if (this.t == 0) return -1\n } else if (this.t == 1) return this[0]\n else if (this.t == 0) return 0\n // assumes 16 < DB < 32\n return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]\n}\n\n// (public) return value as byte\nfunction bnByteValue() {\n return (this.t == 0) ? this.s : (this[0] << 24) >> 24\n}\n\n// (public) return value as short (assumes DB>=16)\nfunction bnShortValue() {\n return (this.t == 0) ? this.s : (this[0] << 16) >> 16\n}\n\n// (protected) return x s.t. r^x < DV\nfunction bnpChunkSize(r) {\n return Math.floor(Math.LN2 * this.DB / Math.log(r))\n}\n\n// (public) 0 if this == 0, 1 if this > 0\nfunction bnSigNum() {\n if (this.s < 0) return -1\n else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0\n else return 1\n}\n\n// (protected) convert to radix string\nfunction bnpToRadix(b) {\n if (b == null) b = 10\n if (this.signum() == 0 || b < 2 || b > 36) return \"0\"\n var cs = this.chunkSize(b)\n var a = Math.pow(b, cs)\n var d = nbv(a),\n y = new BigInteger(),\n z = new BigInteger(),\n r = \"\"\n this.divRemTo(d, y, z)\n while (y.signum() > 0) {\n r = (a + z.intValue())\n .toString(b)\n .substr(1) + r\n y.divRemTo(d, y, z)\n }\n return z.intValue()\n .toString(b) + r\n}\n\n// (protected) convert from radix string\nfunction bnpFromRadix(s, b) {\n var self = this\n self.fromInt(0)\n if (b == null) b = 10\n var cs = self.chunkSize(b)\n var d = Math.pow(b, cs),\n mi = false,\n j = 0,\n w = 0\n for (var i = 0; i < s.length; ++i) {\n var x = intAt(s, i)\n if (x < 0) {\n if (s.charAt(i) == \"-\" && self.signum() == 0) mi = true\n continue\n }\n w = b * w + x\n if (++j >= cs) {\n self.dMultiply(d)\n self.dAddOffset(w, 0)\n j = 0\n w = 0\n }\n }\n if (j > 0) {\n self.dMultiply(Math.pow(b, j))\n self.dAddOffset(w, 0)\n }\n if (mi) BigInteger.ZERO.subTo(self, self)\n}\n\n// (protected) alternate constructor\nfunction bnpFromNumber(a, b, c) {\n var self = this\n if (\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if (a < 2) self.fromInt(1)\n else {\n self.fromNumber(a, c)\n if (!self.testBit(a - 1)) // force MSB set\n self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)\n if (self.isEven()) self.dAddOffset(1, 0); // force odd\n while (!self.isProbablePrime(b)) {\n self.dAddOffset(2, 0)\n if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)\n }\n }\n } else {\n // new BigInteger(int,RNG)\n var x = new Array(),\n t = a & 7\n x.length = (a >> 3) + 1\n b.nextBytes(x)\n if (t > 0) x[0] &= ((1 << t) - 1)\n else x[0] = 0\n self.fromString(x, 256)\n }\n}\n\n// (public) convert to bigendian byte array\nfunction bnToByteArray() {\n var self = this\n var i = self.t,\n r = new Array()\n r[0] = self.s\n var p = self.DB - (i * self.DB) % 8,\n d, k = 0\n if (i-- > 0) {\n if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)\n r[k++] = d | (self.s << (self.DB - p))\n while (i >= 0) {\n if (p < 8) {\n d = (self[i] & ((1 << p) - 1)) << (8 - p)\n d |= self[--i] >> (p += self.DB - 8)\n } else {\n d = (self[i] >> (p -= 8)) & 0xff\n if (p <= 0) {\n p += self.DB\n --i\n }\n }\n if ((d & 0x80) != 0) d |= -256\n if (k === 0 && (self.s & 0x80) != (d & 0x80))++k\n if (k > 0 || d != self.s) r[k++] = d\n }\n }\n return r\n}\n\nfunction bnEquals(a) {\n return (this.compareTo(a) == 0)\n}\n\nfunction bnMin(a) {\n return (this.compareTo(a) < 0) ? this : a\n}\n\nfunction bnMax(a) {\n return (this.compareTo(a) > 0) ? this : a\n}\n\n// (protected) r = this op a (bitwise)\nfunction bnpBitwiseTo(a, op, r) {\n var self = this\n var i, f, m = Math.min(a.t, self.t)\n for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])\n if (a.t < self.t) {\n f = a.s & self.DM\n for (i = m; i < self.t; ++i) r[i] = op(self[i], f)\n r.t = self.t\n } else {\n f = self.s & self.DM\n for (i = m; i < a.t; ++i) r[i] = op(f, a[i])\n r.t = a.t\n }\n r.s = op(self.s, a.s)\n r.clamp()\n}\n\n// (public) this & a\nfunction op_and(x, y) {\n return x & y\n}\n\nfunction bnAnd(a) {\n var r = new BigInteger()\n this.bitwiseTo(a, op_and, r)\n return r\n}\n\n// (public) this | a\nfunction op_or(x, y) {\n return x | y\n}\n\nfunction bnOr(a) {\n var r = new BigInteger()\n this.bitwiseTo(a, op_or, r)\n return r\n}\n\n// (public) this ^ a\nfunction op_xor(x, y) {\n return x ^ y\n}\n\nfunction bnXor(a) {\n var r = new BigInteger()\n this.bitwiseTo(a, op_xor, r)\n return r\n}\n\n// (public) this & ~a\nfunction op_andnot(x, y) {\n return x & ~y\n}\n\nfunction bnAndNot(a) {\n var r = new BigInteger()\n this.bitwiseTo(a, op_andnot, r)\n return r\n}\n\n// (public) ~this\nfunction bnNot() {\n var r = new BigInteger()\n for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]\n r.t = this.t\n r.s = ~this.s\n return r\n}\n\n// (public) this << n\nfunction bnShiftLeft(n) {\n var r = new BigInteger()\n if (n < 0) this.rShiftTo(-n, r)\n else this.lShiftTo(n, r)\n return r\n}\n\n// (public) this >> n\nfunction bnShiftRight(n) {\n var r = new BigInteger()\n if (n < 0) this.lShiftTo(-n, r)\n else this.rShiftTo(n, r)\n return r\n}\n\n// return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\n if (x == 0) return -1\n var r = 0\n if ((x & 0xffff) == 0) {\n x >>= 16\n r += 16\n }\n if ((x & 0xff) == 0) {\n x >>= 8\n r += 8\n }\n if ((x & 0xf) == 0) {\n x >>= 4\n r += 4\n }\n if ((x & 3) == 0) {\n x >>= 2\n r += 2\n }\n if ((x & 1) == 0)++r\n return r\n}\n\n// (public) returns index of lowest 1-bit (or -1 if none)\nfunction bnGetLowestSetBit() {\n for (var i = 0; i < this.t; ++i)\n if (this[i] != 0) return i * this.DB + lbit(this[i])\n if (this.s < 0) return this.t * this.DB\n return -1\n}\n\n// return number of 1 bits in x\nfunction cbit(x) {\n var r = 0\n while (x != 0) {\n x &= x - 1\n ++r\n }\n return r\n}\n\n// (public) return number of set bits\nfunction bnBitCount() {\n var r = 0,\n x = this.s & this.DM\n for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)\n return r\n}\n\n// (public) true iff nth bit is set\nfunction bnTestBit(n) {\n var j = Math.floor(n / this.DB)\n if (j >= this.t) return (this.s != 0)\n return ((this[j] & (1 << (n % this.DB))) != 0)\n}\n\n// (protected) this op (1<>= self.DB\n }\n if (a.t < self.t) {\n c += a.s\n while (i < self.t) {\n c += self[i]\n r[i++] = c & self.DM\n c >>= self.DB\n }\n c += self.s\n } else {\n c += self.s\n while (i < a.t) {\n c += a[i]\n r[i++] = c & self.DM\n c >>= self.DB\n }\n c += a.s\n }\n r.s = (c < 0) ? -1 : 0\n if (c > 0) r[i++] = c\n else if (c < -1) r[i++] = self.DV + c\n r.t = i\n r.clamp()\n}\n\n// (public) this + a\nfunction bnAdd(a) {\n var r = new BigInteger()\n this.addTo(a, r)\n return r\n}\n\n// (public) this - a\nfunction bnSubtract(a) {\n var r = new BigInteger()\n this.subTo(a, r)\n return r\n}\n\n// (public) this * a\nfunction bnMultiply(a) {\n var r = new BigInteger()\n this.multiplyTo(a, r)\n return r\n}\n\n// (public) this^2\nfunction bnSquare() {\n var r = new BigInteger()\n this.squareTo(r)\n return r\n}\n\n// (public) this / a\nfunction bnDivide(a) {\n var r = new BigInteger()\n this.divRemTo(a, r, null)\n return r\n}\n\n// (public) this % a\nfunction bnRemainder(a) {\n var r = new BigInteger()\n this.divRemTo(a, null, r)\n return r\n}\n\n// (public) [this/a,this%a]\nfunction bnDivideAndRemainder(a) {\n var q = new BigInteger(),\n r = new BigInteger()\n this.divRemTo(a, q, r)\n return new Array(q, r)\n}\n\n// (protected) this *= n, this >= 0, 1 < n < DV\nfunction bnpDMultiply(n) {\n this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)\n ++this.t\n this.clamp()\n}\n\n// (protected) this += n << w words, this >= 0\nfunction bnpDAddOffset(n, w) {\n if (n == 0) return\n while (this.t <= w) this[this.t++] = 0\n this[w] += n\n while (this[w] >= this.DV) {\n this[w] -= this.DV\n if (++w >= this.t) this[this.t++] = 0\n ++this[w]\n }\n}\n\n// A \"null\" reducer\nfunction NullExp() {}\n\nfunction nNop(x) {\n return x\n}\n\nfunction nMulTo(x, y, r) {\n x.multiplyTo(y, r)\n}\n\nfunction nSqrTo(x, r) {\n x.squareTo(r)\n}\n\nNullExp.prototype.convert = nNop\nNullExp.prototype.revert = nNop\nNullExp.prototype.mulTo = nMulTo\nNullExp.prototype.sqrTo = nSqrTo\n\n// (public) this^e\nfunction bnPow(e) {\n return this.exp(e, new NullExp())\n}\n\n// (protected) r = lower n words of \"this * a\", a.t <= n\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyLowerTo(a, n, r) {\n var i = Math.min(this.t + a.t, n)\n r.s = 0; // assumes a,this >= 0\n r.t = i\n while (i > 0) r[--i] = 0\n var j\n for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)\n for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)\n r.clamp()\n}\n\n// (protected) r = \"this * a\" without lower n words, n > 0\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyUpperTo(a, n, r) {\n --n\n var i = r.t = this.t + a.t - n\n r.s = 0; // assumes a,this >= 0\n while (--i >= 0) r[i] = 0\n for (i = Math.max(n - this.t, 0); i < a.t; ++i)\n r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)\n r.clamp()\n r.drShiftTo(1, r)\n}\n\n// Barrett modular reduction\nfunction Barrett(m) {\n // setup Barrett\n this.r2 = new BigInteger()\n this.q3 = new BigInteger()\n BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)\n this.mu = this.r2.divide(m)\n this.m = m\n}\n\nfunction barrettConvert(x) {\n if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)\n else if (x.compareTo(this.m) < 0) return x\n else {\n var r = new BigInteger()\n x.copyTo(r)\n this.reduce(r)\n return r\n }\n}\n\nfunction barrettRevert(x) {\n return x\n}\n\n// x = x mod m (HAC 14.42)\nfunction barrettReduce(x) {\n var self = this\n x.drShiftTo(self.m.t - 1, self.r2)\n if (x.t > self.m.t + 1) {\n x.t = self.m.t + 1\n x.clamp()\n }\n self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)\n self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)\n while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)\n x.subTo(self.r2, x)\n while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)\n}\n\n// r = x^2 mod m; x != r\nfunction barrettSqrTo(x, r) {\n x.squareTo(r)\n this.reduce(r)\n}\n\n// r = x*y mod m; x,y != r\nfunction barrettMulTo(x, y, r) {\n x.multiplyTo(y, r)\n this.reduce(r)\n}\n\nBarrett.prototype.convert = barrettConvert\nBarrett.prototype.revert = barrettRevert\nBarrett.prototype.reduce = barrettReduce\nBarrett.prototype.mulTo = barrettMulTo\nBarrett.prototype.sqrTo = barrettSqrTo\n\n// (public) this^e % m (HAC 14.85)\nfunction bnModPow(e, m) {\n var i = e.bitLength(),\n k, r = nbv(1),\n z\n if (i <= 0) return r\n else if (i < 18) k = 1\n else if (i < 48) k = 3\n else if (i < 144) k = 4\n else if (i < 768) k = 5\n else k = 6\n if (i < 8)\n z = new Classic(m)\n else if (m.isEven())\n z = new Barrett(m)\n else\n z = new Montgomery(m)\n\n // precomputation\n var g = new Array(),\n n = 3,\n k1 = k - 1,\n km = (1 << k) - 1\n g[1] = z.convert(this)\n if (k > 1) {\n var g2 = new BigInteger()\n z.sqrTo(g[1], g2)\n while (n <= km) {\n g[n] = new BigInteger()\n z.mulTo(g2, g[n - 2], g[n])\n n += 2\n }\n }\n\n var j = e.t - 1,\n w, is1 = true,\n r2 = new BigInteger(),\n t\n i = nbits(e[j]) - 1\n while (j >= 0) {\n if (i >= k1) w = (e[j] >> (i - k1)) & km\n else {\n w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)\n if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)\n }\n\n n = k\n while ((w & 1) == 0) {\n w >>= 1\n --n\n }\n if ((i -= n) < 0) {\n i += this.DB\n --j\n }\n if (is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r)\n is1 = false\n } else {\n while (n > 1) {\n z.sqrTo(r, r2)\n z.sqrTo(r2, r)\n n -= 2\n }\n if (n > 0) z.sqrTo(r, r2)\n else {\n t = r\n r = r2\n r2 = t\n }\n z.mulTo(r2, g[w], r)\n }\n\n while (j >= 0 && (e[j] & (1 << i)) == 0) {\n z.sqrTo(r, r2)\n t = r\n r = r2\n r2 = t\n if (--i < 0) {\n i = this.DB - 1\n --j\n }\n }\n }\n return z.revert(r)\n}\n\n// (public) gcd(this,a) (HAC 14.54)\nfunction bnGCD(a) {\n var x = (this.s < 0) ? this.negate() : this.clone()\n var y = (a.s < 0) ? a.negate() : a.clone()\n if (x.compareTo(y) < 0) {\n var t = x\n x = y\n y = t\n }\n var i = x.getLowestSetBit(),\n g = y.getLowestSetBit()\n if (g < 0) return x\n if (i < g) g = i\n if (g > 0) {\n x.rShiftTo(g, x)\n y.rShiftTo(g, y)\n }\n while (x.signum() > 0) {\n if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)\n if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x)\n x.rShiftTo(1, x)\n } else {\n y.subTo(x, y)\n y.rShiftTo(1, y)\n }\n }\n if (g > 0) y.lShiftTo(g, y)\n return y\n}\n\n// (protected) this % n, n < 2^26\nfunction bnpModInt(n) {\n if (n <= 0) return 0\n var d = this.DV % n,\n r = (this.s < 0) ? n - 1 : 0\n if (this.t > 0)\n if (d == 0) r = this[0] % n\n else\n for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n\n return r\n}\n\n// (public) 1/this % m (HAC 14.61)\nfunction bnModInverse(m) {\n var ac = m.isEven()\n if (this.signum() === 0) throw new Error('division by zero')\n if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO\n var u = m.clone(),\n v = this.clone()\n var a = nbv(1),\n b = nbv(0),\n c = nbv(0),\n d = nbv(1)\n while (u.signum() != 0) {\n while (u.isEven()) {\n u.rShiftTo(1, u)\n if (ac) {\n if (!a.isEven() || !b.isEven()) {\n a.addTo(this, a)\n b.subTo(m, b)\n }\n a.rShiftTo(1, a)\n } else if (!b.isEven()) b.subTo(m, b)\n b.rShiftTo(1, b)\n }\n while (v.isEven()) {\n v.rShiftTo(1, v)\n if (ac) {\n if (!c.isEven() || !d.isEven()) {\n c.addTo(this, c)\n d.subTo(m, d)\n }\n c.rShiftTo(1, c)\n } else if (!d.isEven()) d.subTo(m, d)\n d.rShiftTo(1, d)\n }\n if (u.compareTo(v) >= 0) {\n u.subTo(v, u)\n if (ac) a.subTo(c, a)\n b.subTo(d, b)\n } else {\n v.subTo(u, v)\n if (ac) c.subTo(a, c)\n d.subTo(b, d)\n }\n }\n if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO\n while (d.compareTo(m) >= 0) d.subTo(m, d)\n while (d.signum() < 0) d.addTo(m, d)\n return d\n}\n\nvar lowprimes = [\n 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,\n 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,\n 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,\n 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,\n 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,\n 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,\n 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,\n 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,\n 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,\n 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,\n 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997\n]\n\nvar lplim = (1 << 26) / lowprimes[lowprimes.length - 1]\n\n// (public) test primality with certainty >= 1-.5^t\nfunction bnIsProbablePrime(t) {\n var i, x = this.abs()\n if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {\n for (i = 0; i < lowprimes.length; ++i)\n if (x[0] == lowprimes[i]) return true\n return false\n }\n if (x.isEven()) return false\n i = 1\n while (i < lowprimes.length) {\n var m = lowprimes[i],\n j = i + 1\n while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]\n m = x.modInt(m)\n while (i < j) if (m % lowprimes[i++] == 0) return false\n }\n return x.millerRabin(t)\n}\n\n// (protected) true if probably prime (HAC 4.24, Miller-Rabin)\nfunction bnpMillerRabin(t) {\n var n1 = this.subtract(BigInteger.ONE)\n var k = n1.getLowestSetBit()\n if (k <= 0) return false\n var r = n1.shiftRight(k)\n t = (t + 1) >> 1\n if (t > lowprimes.length) t = lowprimes.length\n var a = new BigInteger(null)\n var j, bases = []\n for (var i = 0; i < t; ++i) {\n for (;;) {\n j = lowprimes[Math.floor(Math.random() * lowprimes.length)]\n if (bases.indexOf(j) == -1) break\n }\n bases.push(j)\n a.fromInt(j)\n var y = a.modPow(r, this)\n if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1\n while (j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2, this)\n if (y.compareTo(BigInteger.ONE) == 0) return false\n }\n if (y.compareTo(n1) != 0) return false\n }\n }\n return true\n}\n\n// protected\nproto.chunkSize = bnpChunkSize\nproto.toRadix = bnpToRadix\nproto.fromRadix = bnpFromRadix\nproto.fromNumber = bnpFromNumber\nproto.bitwiseTo = bnpBitwiseTo\nproto.changeBit = bnpChangeBit\nproto.addTo = bnpAddTo\nproto.dMultiply = bnpDMultiply\nproto.dAddOffset = bnpDAddOffset\nproto.multiplyLowerTo = bnpMultiplyLowerTo\nproto.multiplyUpperTo = bnpMultiplyUpperTo\nproto.modInt = bnpModInt\nproto.millerRabin = bnpMillerRabin\n\n// public\nproto.clone = bnClone\nproto.intValue = bnIntValue\nproto.byteValue = bnByteValue\nproto.shortValue = bnShortValue\nproto.signum = bnSigNum\nproto.toByteArray = bnToByteArray\nproto.equals = bnEquals\nproto.min = bnMin\nproto.max = bnMax\nproto.and = bnAnd\nproto.or = bnOr\nproto.xor = bnXor\nproto.andNot = bnAndNot\nproto.not = bnNot\nproto.shiftLeft = bnShiftLeft\nproto.shiftRight = bnShiftRight\nproto.getLowestSetBit = bnGetLowestSetBit\nproto.bitCount = bnBitCount\nproto.testBit = bnTestBit\nproto.setBit = bnSetBit\nproto.clearBit = bnClearBit\nproto.flipBit = bnFlipBit\nproto.add = bnAdd\nproto.subtract = bnSubtract\nproto.multiply = bnMultiply\nproto.divide = bnDivide\nproto.remainder = bnRemainder\nproto.divideAndRemainder = bnDivideAndRemainder\nproto.modPow = bnModPow\nproto.modInverse = bnModInverse\nproto.pow = bnPow\nproto.gcd = bnGCD\nproto.isProbablePrime = bnIsProbablePrime\n\n// JSBN-specific extension\nproto.square = bnSquare\n\n// constants\nBigInteger.ZERO = nbv(0)\nBigInteger.ONE = nbv(1)\nBigInteger.valueOf = nbv\n\nmodule.exports = BigInteger\n","// FIXME: Kind of a weird way to throw exceptions, consider removing\nvar assert = require('assert')\nvar BigInteger = require('./bigi')\n\n/**\n * Turns a byte array into a big integer.\n *\n * This function will interpret a byte array as a big integer in big\n * endian notation.\n */\nBigInteger.fromByteArrayUnsigned = function(byteArray) {\n // BigInteger expects a DER integer conformant byte array\n if (byteArray[0] & 0x80) {\n return new BigInteger([0].concat(byteArray))\n }\n\n return new BigInteger(byteArray)\n}\n\n/**\n * Returns a byte array representation of the big integer.\n *\n * This returns the absolute of the contained value in big endian\n * form. A value of zero results in an empty array.\n */\nBigInteger.prototype.toByteArrayUnsigned = function() {\n var byteArray = this.toByteArray()\n return byteArray[0] === 0 ? byteArray.slice(1) : byteArray\n}\n\nBigInteger.fromDERInteger = function(byteArray) {\n return new BigInteger(byteArray)\n}\n\n/*\n * Converts BigInteger to a DER integer representation.\n *\n * The format for this value uses the most significant bit as a sign\n * bit. If the most significant bit is already set and the integer is\n * positive, a 0x00 is prepended.\n *\n * Examples:\n *\n * 0 => 0x00\n * 1 => 0x01\n * -1 => 0xff\n * 127 => 0x7f\n * -127 => 0x81\n * 128 => 0x0080\n * -128 => 0x80\n * 255 => 0x00ff\n * -255 => 0xff01\n * 16300 => 0x3fac\n * -16300 => 0xc054\n * 62300 => 0x00f35c\n * -62300 => 0xff0ca4\n*/\nBigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray\n\nBigInteger.fromBuffer = function(buffer) {\n // BigInteger expects a DER integer conformant byte array\n if (buffer[0] & 0x80) {\n var byteArray = Array.prototype.slice.call(buffer)\n\n return new BigInteger([0].concat(byteArray))\n }\n\n return new BigInteger(buffer)\n}\n\nBigInteger.fromHex = function(hex) {\n if (hex === '') return BigInteger.ZERO\n\n assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')\n assert.equal(hex.length % 2, 0, 'Incomplete hex')\n return new BigInteger(hex, 16)\n}\n\nBigInteger.prototype.toBuffer = function(size) {\n var byteArray = this.toByteArrayUnsigned()\n var zeros = []\n\n var padding = size - byteArray.length\n while (zeros.length < padding) zeros.push(0)\n\n return new Buffer(zeros.concat(byteArray))\n}\n\nBigInteger.prototype.toHex = function(size) {\n return this.toBuffer(size).toString('hex')\n}\n","var BigInteger = require('./bigi')\n\n//addons\nrequire('./convert')\n\nmodule.exports = BigInteger",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.0.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2020 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz';\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","'use strict'\n\nconst Bignumber = require('bignumber.js').BigNumber\n\nexports.MT = {\n POS_INT: 0,\n NEG_INT: 1,\n BYTE_STRING: 2,\n UTF8_STRING: 3,\n ARRAY: 4,\n MAP: 5,\n TAG: 6,\n SIMPLE_FLOAT: 7\n}\n\nexports.TAG = {\n DATE_STRING: 0,\n DATE_EPOCH: 1,\n POS_BIGINT: 2,\n NEG_BIGINT: 3,\n DECIMAL_FRAC: 4,\n BIGFLOAT: 5,\n BASE64URL_EXPECTED: 21,\n BASE64_EXPECTED: 22,\n BASE16_EXPECTED: 23,\n CBOR: 24,\n URI: 32,\n BASE64URL: 33,\n BASE64: 34,\n REGEXP: 35,\n MIME: 36\n}\n\nexports.NUMBYTES = {\n ZERO: 0,\n ONE: 24,\n TWO: 25,\n FOUR: 26,\n EIGHT: 27,\n INDEFINITE: 31\n}\n\nexports.SIMPLE = {\n FALSE: 20,\n TRUE: 21,\n NULL: 22,\n UNDEFINED: 23\n}\n\nexports.SYMS = {\n NULL: Symbol('null'),\n UNDEFINED: Symbol('undef'),\n PARENT: Symbol('parent'),\n BREAK: Symbol('break'),\n STREAM: Symbol('stream')\n}\n\nexports.SHIFT32 = Math.pow(2, 32)\nexports.SHIFT16 = Math.pow(2, 16)\n\nexports.MAX_SAFE_HIGH = 0x1fffff\nexports.NEG_ONE = new Bignumber(-1)\nexports.TEN = new Bignumber(10)\nexports.TWO = new Bignumber(2)\n\nexports.PARENT = {\n ARRAY: 0,\n OBJECT: 1,\n MAP: 2,\n TAG: 3,\n BYTE_STRING: 4,\n UTF8_STRING: 5\n}\n","/* eslint-disable */\n\nmodule.exports = function decodeAsm (stdlib, foreign, buffer) {\n 'use asm'\n\n // -- Imports\n\n var heap = new stdlib.Uint8Array(buffer)\n // var log = foreign.log\n var pushInt = foreign.pushInt\n var pushInt32 = foreign.pushInt32\n var pushInt32Neg = foreign.pushInt32Neg\n var pushInt64 = foreign.pushInt64\n var pushInt64Neg = foreign.pushInt64Neg\n var pushFloat = foreign.pushFloat\n var pushFloatSingle = foreign.pushFloatSingle\n var pushFloatDouble = foreign.pushFloatDouble\n var pushTrue = foreign.pushTrue\n var pushFalse = foreign.pushFalse\n var pushUndefined = foreign.pushUndefined\n var pushNull = foreign.pushNull\n var pushInfinity = foreign.pushInfinity\n var pushInfinityNeg = foreign.pushInfinityNeg\n var pushNaN = foreign.pushNaN\n var pushNaNNeg = foreign.pushNaNNeg\n\n var pushArrayStart = foreign.pushArrayStart\n var pushArrayStartFixed = foreign.pushArrayStartFixed\n var pushArrayStartFixed32 = foreign.pushArrayStartFixed32\n var pushArrayStartFixed64 = foreign.pushArrayStartFixed64\n var pushObjectStart = foreign.pushObjectStart\n var pushObjectStartFixed = foreign.pushObjectStartFixed\n var pushObjectStartFixed32 = foreign.pushObjectStartFixed32\n var pushObjectStartFixed64 = foreign.pushObjectStartFixed64\n\n var pushByteString = foreign.pushByteString\n var pushByteStringStart = foreign.pushByteStringStart\n var pushUtf8String = foreign.pushUtf8String\n var pushUtf8StringStart = foreign.pushUtf8StringStart\n\n var pushSimpleUnassigned = foreign.pushSimpleUnassigned\n\n var pushTagStart = foreign.pushTagStart\n var pushTagStart4 = foreign.pushTagStart4\n var pushTagStart8 = foreign.pushTagStart8\n var pushTagUnassigned = foreign.pushTagUnassigned\n\n var pushBreak = foreign.pushBreak\n\n var pow = stdlib.Math.pow\n\n // -- Constants\n\n\n // -- Mutable Variables\n\n var offset = 0\n var inputLength = 0\n var code = 0\n\n // Decode a cbor string represented as Uint8Array\n // which is allocated on the heap from 0 to inputLength\n //\n // input - Int\n //\n // Returns Code - Int,\n // Success = 0\n // Error > 0\n function parse (input) {\n input = input | 0\n\n offset = 0\n inputLength = input\n\n while ((offset | 0) < (inputLength | 0)) {\n code = jumpTable[heap[offset] & 255](heap[offset] | 0) | 0\n\n if ((code | 0) > 0) {\n break\n }\n }\n\n return code | 0\n }\n\n // -- Helper Function\n\n function checkOffset (n) {\n n = n | 0\n\n if ((((offset | 0) + (n | 0)) | 0) < (inputLength | 0)) {\n return 0\n }\n\n return 1\n }\n\n function readUInt16 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 8) | heap[(n + 1) | 0]\n ) | 0\n }\n\n function readUInt32 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 24) | (heap[(n + 1) | 0] << 16) | (heap[(n + 2) | 0] << 8) | heap[(n + 3) | 0]\n ) | 0\n }\n\n // -- Initial Byte Handlers\n\n function INT_P (octet) {\n octet = octet | 0\n\n pushInt(octet | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_P_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_P_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushInt(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_P_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_P_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function INT_N (octet) {\n octet = octet | 0\n\n pushInt((-1 - ((octet - 32) | 0)) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_N_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(\n (-1 - (heap[(offset + 1) | 0] | 0)) | 0\n )\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_N_16 (octet) {\n octet = octet | 0\n\n var val = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n val = readUInt16((offset + 1) | 0) | 0\n pushInt((-1 - (val | 0)) | 0)\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_N_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_N_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function BYTE_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 64) | 0\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function BYTE_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushByteStringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UTF8_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 96) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function UTF8_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushUtf8StringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY (octet) {\n octet = octet | 0\n\n pushArrayStartFixed((octet - 128) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushArrayStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function ARRAY_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushArrayStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function ARRAY_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushArrayStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function ARRAY_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushArrayStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ARRAY_BREAK (octet) {\n octet = octet | 0\n\n pushArrayStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP (octet) {\n octet = octet | 0\n\n var step = 0\n\n step = (octet - 160) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n pushObjectStartFixed(step | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushObjectStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function MAP_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushObjectStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function MAP_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushObjectStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function MAP_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushObjectStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function MAP_BREAK (octet) {\n octet = octet | 0\n\n pushObjectStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function TAG_KNOWN (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_POS (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_NEG (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_FRAC (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_FLOAT (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64_URL (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE16 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_MORE_1 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushTagStart(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2 | 0)\n\n return 0\n }\n\n function TAG_MORE_2 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushTagStart(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3 | 0)\n\n return 0\n }\n\n function TAG_MORE_4 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushTagStart4(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5 | 0)\n\n return 0\n }\n\n function TAG_MORE_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushTagStart8(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9 | 0)\n\n return 0\n }\n\n function SIMPLE_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushSimpleUnassigned(((octet | 0) - 224) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_FALSE (octet) {\n octet = octet | 0\n\n pushFalse()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_TRUE (octet) {\n octet = octet | 0\n\n pushTrue()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_NULL (octet) {\n octet = octet | 0\n\n pushNull()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_UNDEFINED (octet) {\n octet = octet | 0\n\n pushUndefined()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_BYTE (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushSimpleUnassigned(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_HALF (octet) {\n octet = octet | 0\n\n var f = 0\n var g = 0\n var sign = 1.0\n var exp = 0.0\n var mant = 0.0\n var r = 0.0\n if (checkOffset(2) | 0) {\n return 1\n }\n\n f = heap[(offset + 1) | 0] | 0\n g = heap[(offset + 2) | 0] | 0\n\n if ((f | 0) & 0x80) {\n sign = -1.0\n }\n\n exp = +(((f | 0) & 0x7C) >> 2)\n mant = +((((f | 0) & 0x03) << 8) | g)\n\n if (+exp == 0.0) {\n pushFloat(+(\n (+sign) * +5.9604644775390625e-8 * (+mant)\n ))\n } else if (+exp == 31.0) {\n if (+sign == 1.0) {\n if (+mant > 0.0) {\n pushNaN()\n } else {\n pushInfinity()\n }\n } else {\n if (+mant > 0.0) {\n pushNaNNeg()\n } else {\n pushInfinityNeg()\n }\n }\n } else {\n pushFloat(+(\n +sign * pow(+2, +(+exp - 25.0)) * +(1024.0 + mant)\n ))\n }\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_SINGLE (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushFloatSingle(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_DOUBLE (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushFloatDouble(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0,\n heap[(offset + 5) | 0] | 0,\n heap[(offset + 6) | 0] | 0,\n heap[(offset + 7) | 0] | 0,\n heap[(offset + 8) | 0] | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ERROR (octet) {\n octet = octet | 0\n\n return 1\n }\n\n function BREAK (octet) {\n octet = octet | 0\n\n pushBreak()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n // -- Jump Table\n\n var jumpTable = [\n // Integer 0x00..0x17 (0..23)\n INT_P, // 0x00\n INT_P, // 0x01\n INT_P, // 0x02\n INT_P, // 0x03\n INT_P, // 0x04\n INT_P, // 0x05\n INT_P, // 0x06\n INT_P, // 0x07\n INT_P, // 0x08\n INT_P, // 0x09\n INT_P, // 0x0A\n INT_P, // 0x0B\n INT_P, // 0x0C\n INT_P, // 0x0D\n INT_P, // 0x0E\n INT_P, // 0x0F\n INT_P, // 0x10\n INT_P, // 0x11\n INT_P, // 0x12\n INT_P, // 0x13\n INT_P, // 0x14\n INT_P, // 0x15\n INT_P, // 0x16\n INT_P, // 0x17\n // Unsigned integer (one-byte uint8_t follows)\n UINT_P_8, // 0x18\n // Unsigned integer (two-byte uint16_t follows)\n UINT_P_16, // 0x19\n // Unsigned integer (four-byte uint32_t follows)\n UINT_P_32, // 0x1a\n // Unsigned integer (eight-byte uint64_t follows)\n UINT_P_64, // 0x1b\n ERROR, // 0x1c\n ERROR, // 0x1d\n ERROR, // 0x1e\n ERROR, // 0x1f\n // Negative integer -1-0x00..-1-0x17 (-1..-24)\n INT_N, // 0x20\n INT_N, // 0x21\n INT_N, // 0x22\n INT_N, // 0x23\n INT_N, // 0x24\n INT_N, // 0x25\n INT_N, // 0x26\n INT_N, // 0x27\n INT_N, // 0x28\n INT_N, // 0x29\n INT_N, // 0x2A\n INT_N, // 0x2B\n INT_N, // 0x2C\n INT_N, // 0x2D\n INT_N, // 0x2E\n INT_N, // 0x2F\n INT_N, // 0x30\n INT_N, // 0x31\n INT_N, // 0x32\n INT_N, // 0x33\n INT_N, // 0x34\n INT_N, // 0x35\n INT_N, // 0x36\n INT_N, // 0x37\n // Negative integer -1-n (one-byte uint8_t for n follows)\n UINT_N_8, // 0x38\n // Negative integer -1-n (two-byte uint16_t for n follows)\n UINT_N_16, // 0x39\n // Negative integer -1-n (four-byte uint32_t for nfollows)\n UINT_N_32, // 0x3a\n // Negative integer -1-n (eight-byte uint64_t for n follows)\n UINT_N_64, // 0x3b\n ERROR, // 0x3c\n ERROR, // 0x3d\n ERROR, // 0x3e\n ERROR, // 0x3f\n // byte string (0x00..0x17 bytes follow)\n BYTE_STRING, // 0x40\n BYTE_STRING, // 0x41\n BYTE_STRING, // 0x42\n BYTE_STRING, // 0x43\n BYTE_STRING, // 0x44\n BYTE_STRING, // 0x45\n BYTE_STRING, // 0x46\n BYTE_STRING, // 0x47\n BYTE_STRING, // 0x48\n BYTE_STRING, // 0x49\n BYTE_STRING, // 0x4A\n BYTE_STRING, // 0x4B\n BYTE_STRING, // 0x4C\n BYTE_STRING, // 0x4D\n BYTE_STRING, // 0x4E\n BYTE_STRING, // 0x4F\n BYTE_STRING, // 0x50\n BYTE_STRING, // 0x51\n BYTE_STRING, // 0x52\n BYTE_STRING, // 0x53\n BYTE_STRING, // 0x54\n BYTE_STRING, // 0x55\n BYTE_STRING, // 0x56\n BYTE_STRING, // 0x57\n // byte string (one-byte uint8_t for n, and then n bytes follow)\n BYTE_STRING_8, // 0x58\n // byte string (two-byte uint16_t for n, and then n bytes follow)\n BYTE_STRING_16, // 0x59\n // byte string (four-byte uint32_t for n, and then n bytes follow)\n BYTE_STRING_32, // 0x5a\n // byte string (eight-byte uint64_t for n, and then n bytes follow)\n BYTE_STRING_64, // 0x5b\n ERROR, // 0x5c\n ERROR, // 0x5d\n ERROR, // 0x5e\n // byte string, byte strings follow, terminated by \"break\"\n BYTE_STRING_BREAK, // 0x5f\n // UTF-8 string (0x00..0x17 bytes follow)\n UTF8_STRING, // 0x60\n UTF8_STRING, // 0x61\n UTF8_STRING, // 0x62\n UTF8_STRING, // 0x63\n UTF8_STRING, // 0x64\n UTF8_STRING, // 0x65\n UTF8_STRING, // 0x66\n UTF8_STRING, // 0x67\n UTF8_STRING, // 0x68\n UTF8_STRING, // 0x69\n UTF8_STRING, // 0x6A\n UTF8_STRING, // 0x6B\n UTF8_STRING, // 0x6C\n UTF8_STRING, // 0x6D\n UTF8_STRING, // 0x6E\n UTF8_STRING, // 0x6F\n UTF8_STRING, // 0x70\n UTF8_STRING, // 0x71\n UTF8_STRING, // 0x72\n UTF8_STRING, // 0x73\n UTF8_STRING, // 0x74\n UTF8_STRING, // 0x75\n UTF8_STRING, // 0x76\n UTF8_STRING, // 0x77\n // UTF-8 string (one-byte uint8_t for n, and then n bytes follow)\n UTF8_STRING_8, // 0x78\n // UTF-8 string (two-byte uint16_t for n, and then n bytes follow)\n UTF8_STRING_16, // 0x79\n // UTF-8 string (four-byte uint32_t for n, and then n bytes follow)\n UTF8_STRING_32, // 0x7a\n // UTF-8 string (eight-byte uint64_t for n, and then n bytes follow)\n UTF8_STRING_64, // 0x7b\n // UTF-8 string, UTF-8 strings follow, terminated by \"break\"\n ERROR, // 0x7c\n ERROR, // 0x7d\n ERROR, // 0x7e\n UTF8_STRING_BREAK, // 0x7f\n // array (0x00..0x17 data items follow)\n ARRAY, // 0x80\n ARRAY, // 0x81\n ARRAY, // 0x82\n ARRAY, // 0x83\n ARRAY, // 0x84\n ARRAY, // 0x85\n ARRAY, // 0x86\n ARRAY, // 0x87\n ARRAY, // 0x88\n ARRAY, // 0x89\n ARRAY, // 0x8A\n ARRAY, // 0x8B\n ARRAY, // 0x8C\n ARRAY, // 0x8D\n ARRAY, // 0x8E\n ARRAY, // 0x8F\n ARRAY, // 0x90\n ARRAY, // 0x91\n ARRAY, // 0x92\n ARRAY, // 0x93\n ARRAY, // 0x94\n ARRAY, // 0x95\n ARRAY, // 0x96\n ARRAY, // 0x97\n // array (one-byte uint8_t fo, and then n data items follow)\n ARRAY_8, // 0x98\n // array (two-byte uint16_t for n, and then n data items follow)\n ARRAY_16, // 0x99\n // array (four-byte uint32_t for n, and then n data items follow)\n ARRAY_32, // 0x9a\n // array (eight-byte uint64_t for n, and then n data items follow)\n ARRAY_64, // 0x9b\n // array, data items follow, terminated by \"break\"\n ERROR, // 0x9c\n ERROR, // 0x9d\n ERROR, // 0x9e\n ARRAY_BREAK, // 0x9f\n // map (0x00..0x17 pairs of data items follow)\n MAP, // 0xa0\n MAP, // 0xa1\n MAP, // 0xa2\n MAP, // 0xa3\n MAP, // 0xa4\n MAP, // 0xa5\n MAP, // 0xa6\n MAP, // 0xa7\n MAP, // 0xa8\n MAP, // 0xa9\n MAP, // 0xaA\n MAP, // 0xaB\n MAP, // 0xaC\n MAP, // 0xaD\n MAP, // 0xaE\n MAP, // 0xaF\n MAP, // 0xb0\n MAP, // 0xb1\n MAP, // 0xb2\n MAP, // 0xb3\n MAP, // 0xb4\n MAP, // 0xb5\n MAP, // 0xb6\n MAP, // 0xb7\n // map (one-byte uint8_t for n, and then n pairs of data items follow)\n MAP_8, // 0xb8\n // map (two-byte uint16_t for n, and then n pairs of data items follow)\n MAP_16, // 0xb9\n // map (four-byte uint32_t for n, and then n pairs of data items follow)\n MAP_32, // 0xba\n // map (eight-byte uint64_t for n, and then n pairs of data items follow)\n MAP_64, // 0xbb\n ERROR, // 0xbc\n ERROR, // 0xbd\n ERROR, // 0xbe\n // map, pairs of data items follow, terminated by \"break\"\n MAP_BREAK, // 0xbf\n // Text-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc0\n // Epoch-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc1\n // Positive bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc2\n // Negative bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc3\n // Decimal Fraction (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc4\n // Bigfloat (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc5\n // (tagged item)\n TAG_UNASSIGNED, // 0xc6\n TAG_UNASSIGNED, // 0xc7\n TAG_UNASSIGNED, // 0xc8\n TAG_UNASSIGNED, // 0xc9\n TAG_UNASSIGNED, // 0xca\n TAG_UNASSIGNED, // 0xcb\n TAG_UNASSIGNED, // 0xcc\n TAG_UNASSIGNED, // 0xcd\n TAG_UNASSIGNED, // 0xce\n TAG_UNASSIGNED, // 0xcf\n TAG_UNASSIGNED, // 0xd0\n TAG_UNASSIGNED, // 0xd1\n TAG_UNASSIGNED, // 0xd2\n TAG_UNASSIGNED, // 0xd3\n TAG_UNASSIGNED, // 0xd4\n // Expected Conversion (data item follows; see Section 2.4.4.2)\n TAG_UNASSIGNED, // 0xd5\n TAG_UNASSIGNED, // 0xd6\n TAG_UNASSIGNED, // 0xd7\n // (more tagged items, 1/2/4/8 bytes and then a data item follow)\n TAG_MORE_1, // 0xd8\n TAG_MORE_2, // 0xd9\n TAG_MORE_4, // 0xda\n TAG_MORE_8, // 0xdb\n ERROR, // 0xdc\n ERROR, // 0xdd\n ERROR, // 0xde\n ERROR, // 0xdf\n // (simple value)\n SIMPLE_UNASSIGNED, // 0xe0\n SIMPLE_UNASSIGNED, // 0xe1\n SIMPLE_UNASSIGNED, // 0xe2\n SIMPLE_UNASSIGNED, // 0xe3\n SIMPLE_UNASSIGNED, // 0xe4\n SIMPLE_UNASSIGNED, // 0xe5\n SIMPLE_UNASSIGNED, // 0xe6\n SIMPLE_UNASSIGNED, // 0xe7\n SIMPLE_UNASSIGNED, // 0xe8\n SIMPLE_UNASSIGNED, // 0xe9\n SIMPLE_UNASSIGNED, // 0xea\n SIMPLE_UNASSIGNED, // 0xeb\n SIMPLE_UNASSIGNED, // 0xec\n SIMPLE_UNASSIGNED, // 0xed\n SIMPLE_UNASSIGNED, // 0xee\n SIMPLE_UNASSIGNED, // 0xef\n SIMPLE_UNASSIGNED, // 0xf0\n SIMPLE_UNASSIGNED, // 0xf1\n SIMPLE_UNASSIGNED, // 0xf2\n SIMPLE_UNASSIGNED, // 0xf3\n // False\n SIMPLE_FALSE, // 0xf4\n // True\n SIMPLE_TRUE, // 0xf5\n // Null\n SIMPLE_NULL, // 0xf6\n // Undefined\n SIMPLE_UNDEFINED, // 0xf7\n // (simple value, one byte follows)\n SIMPLE_BYTE, // 0xf8\n // Half-Precision Float (two-byte IEEE 754)\n SIMPLE_FLOAT_HALF, // 0xf9\n // Single-Precision Float (four-byte IEEE 754)\n SIMPLE_FLOAT_SINGLE, // 0xfa\n // Double-Precision Float (eight-byte IEEE 754)\n SIMPLE_FLOAT_DOUBLE, // 0xfb\n ERROR, // 0xfc\n ERROR, // 0xfd\n ERROR, // 0xfe\n // \"break\" stop code\n BREAK // 0xff\n ]\n\n // --\n\n return {\n parse: parse\n }\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst ieee754 = require('ieee754')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst parser = require('./decoder.asm')\nconst utils = require('./utils')\nconst c = require('./constants')\nconst Simple = require('./simple')\nconst Tagged = require('./tagged')\nconst { URL } = require('iso-url')\n\n/**\n * Transform binary cbor data into JavaScript objects.\n */\nclass Decoder {\n /**\n * @param {Object} [opts={}]\n * @param {number} [opts.size=65536] - Size of the allocated heap.\n */\n constructor (opts) {\n opts = opts || {}\n\n if (!opts.size || opts.size < 0x10000) {\n opts.size = 0x10000\n } else {\n // Ensure the size is a power of 2\n opts.size = utils.nextPowerOf2(opts.size)\n }\n\n // Heap use to share the input with the parser\n this._heap = new ArrayBuffer(opts.size)\n this._heap8 = new Uint8Array(this._heap)\n this._buffer = Buffer.from(this._heap)\n\n this._reset()\n\n // Known tags\n this._knownTags = Object.assign({\n 0: (val) => new Date(val),\n 1: (val) => new Date(val * 1000),\n 2: (val) => utils.arrayBufferToBignumber(val),\n 3: (val) => c.NEG_ONE.minus(utils.arrayBufferToBignumber(val)),\n 4: (v) => {\n // const v = new Uint8Array(val)\n return c.TEN.pow(v[0]).times(v[1])\n },\n 5: (v) => {\n // const v = new Uint8Array(val)\n return c.TWO.pow(v[0]).times(v[1])\n },\n 32: (val) => new URL(val),\n 35: (val) => new RegExp(val)\n }, opts.tags)\n\n // Initialize asm based parser\n this.parser = parser(global, {\n // eslint-disable-next-line no-console\n log: console.log.bind(console),\n pushInt: this.pushInt.bind(this),\n pushInt32: this.pushInt32.bind(this),\n pushInt32Neg: this.pushInt32Neg.bind(this),\n pushInt64: this.pushInt64.bind(this),\n pushInt64Neg: this.pushInt64Neg.bind(this),\n pushFloat: this.pushFloat.bind(this),\n pushFloatSingle: this.pushFloatSingle.bind(this),\n pushFloatDouble: this.pushFloatDouble.bind(this),\n pushTrue: this.pushTrue.bind(this),\n pushFalse: this.pushFalse.bind(this),\n pushUndefined: this.pushUndefined.bind(this),\n pushNull: this.pushNull.bind(this),\n pushInfinity: this.pushInfinity.bind(this),\n pushInfinityNeg: this.pushInfinityNeg.bind(this),\n pushNaN: this.pushNaN.bind(this),\n pushNaNNeg: this.pushNaNNeg.bind(this),\n pushArrayStart: this.pushArrayStart.bind(this),\n pushArrayStartFixed: this.pushArrayStartFixed.bind(this),\n pushArrayStartFixed32: this.pushArrayStartFixed32.bind(this),\n pushArrayStartFixed64: this.pushArrayStartFixed64.bind(this),\n pushObjectStart: this.pushObjectStart.bind(this),\n pushObjectStartFixed: this.pushObjectStartFixed.bind(this),\n pushObjectStartFixed32: this.pushObjectStartFixed32.bind(this),\n pushObjectStartFixed64: this.pushObjectStartFixed64.bind(this),\n pushByteString: this.pushByteString.bind(this),\n pushByteStringStart: this.pushByteStringStart.bind(this),\n pushUtf8String: this.pushUtf8String.bind(this),\n pushUtf8StringStart: this.pushUtf8StringStart.bind(this),\n pushSimpleUnassigned: this.pushSimpleUnassigned.bind(this),\n pushTagUnassigned: this.pushTagUnassigned.bind(this),\n pushTagStart: this.pushTagStart.bind(this),\n pushTagStart4: this.pushTagStart4.bind(this),\n pushTagStart8: this.pushTagStart8.bind(this),\n pushBreak: this.pushBreak.bind(this)\n }, this._heap)\n }\n\n get _depth () {\n return this._parents.length\n }\n\n get _currentParent () {\n return this._parents[this._depth - 1]\n }\n\n get _ref () {\n return this._currentParent.ref\n }\n\n // Finish the current parent\n _closeParent () {\n var p = this._parents.pop()\n\n if (p.length > 0) {\n throw new Error(`Missing ${p.length} elements`)\n }\n\n switch (p.type) {\n case c.PARENT.TAG:\n this._push(\n this.createTag(p.ref[0], p.ref[1])\n )\n break\n case c.PARENT.BYTE_STRING:\n this._push(this.createByteString(p.ref, p.length))\n break\n case c.PARENT.UTF8_STRING:\n this._push(this.createUtf8String(p.ref, p.length))\n break\n case c.PARENT.MAP:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createMap(p.ref, p.length))\n break\n case c.PARENT.OBJECT:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createObject(p.ref, p.length))\n break\n case c.PARENT.ARRAY:\n this._push(this.createArray(p.ref, p.length))\n break\n default:\n break\n }\n\n if (this._currentParent && this._currentParent.type === c.PARENT.TAG) {\n this._dec()\n }\n }\n\n // Reduce the expected length of the current parent by one\n _dec () {\n const p = this._currentParent\n // The current parent does not know the epxected child length\n\n if (p.length < 0) {\n return\n }\n\n p.length--\n\n // All children were seen, we can close the current parent\n if (p.length === 0) {\n this._closeParent()\n }\n }\n\n // Push any value to the current parent\n _push (val, hasChildren) {\n const p = this._currentParent\n p.values++\n\n switch (p.type) {\n case c.PARENT.ARRAY:\n case c.PARENT.BYTE_STRING:\n case c.PARENT.UTF8_STRING:\n if (p.length > -1) {\n this._ref[this._ref.length - p.length] = val\n } else {\n this._ref.push(val)\n }\n this._dec()\n break\n case c.PARENT.OBJECT:\n if (p.tmpKey != null) {\n this._ref[p.tmpKey] = val\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n\n if (typeof p.tmpKey !== 'string') {\n // too bad, convert to a Map\n p.type = c.PARENT.MAP\n p.ref = utils.buildMap(p.ref)\n }\n }\n break\n case c.PARENT.MAP:\n if (p.tmpKey != null) {\n this._ref.set(p.tmpKey, val)\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n }\n break\n case c.PARENT.TAG:\n this._ref.push(val)\n if (!hasChildren) {\n this._dec()\n }\n break\n default:\n throw new Error('Unknown parent type')\n }\n }\n\n // Create a new parent in the parents list\n _createParent (obj, type, len) {\n this._parents[this._depth] = {\n type: type,\n length: len,\n ref: obj,\n values: 0,\n tmpKey: null\n }\n }\n\n // Reset all state back to the beginning, also used for initiatlization\n _reset () {\n this._res = []\n this._parents = [{\n type: c.PARENT.ARRAY,\n length: -1,\n ref: this._res,\n values: 0,\n tmpKey: null\n }]\n }\n\n // -- Interface to customize deoding behaviour\n createTag (tagNumber, value) {\n const typ = this._knownTags[tagNumber]\n\n if (!typ) {\n return new Tagged(tagNumber, value)\n }\n\n return typ(value)\n }\n\n createMap (obj, len) {\n return obj\n }\n\n createObject (obj, len) {\n return obj\n }\n\n createArray (arr, len) {\n return arr\n }\n\n createByteString (raw, len) {\n return Buffer.concat(raw)\n }\n\n createByteStringFromHeap (start, end) {\n if (start === end) {\n return Buffer.alloc(0)\n }\n\n return Buffer.from(this._heap.slice(start, end))\n }\n\n createInt (val) {\n return val\n }\n\n createInt32 (f, g) {\n return utils.buildInt32(f, g)\n }\n\n createInt64 (f1, f2, g1, g2) {\n return utils.buildInt64(f1, f2, g1, g2)\n }\n\n createFloat (val) {\n return val\n }\n\n createFloatSingle (a, b, c, d) {\n return ieee754.read([a, b, c, d], 0, false, 23, 4)\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n return ieee754.read([a, b, c, d, e, f, g, h], 0, false, 52, 8)\n }\n\n createInt32Neg (f, g) {\n return -1 - utils.buildInt32(f, g)\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n const f = utils.buildInt32(f1, f2)\n const g = utils.buildInt32(g1, g2)\n\n if (f > c.MAX_SAFE_HIGH) {\n return c.NEG_ONE.minus(new Bignumber(f).times(c.SHIFT32).plus(g))\n }\n\n return -1 - ((f * c.SHIFT32) + g)\n }\n\n createTrue () {\n return true\n }\n\n createFalse () {\n return false\n }\n\n createNull () {\n return null\n }\n\n createUndefined () {\n return undefined\n }\n\n createInfinity () {\n return Infinity\n }\n\n createInfinityNeg () {\n return -Infinity\n }\n\n createNaN () {\n return NaN\n }\n\n createNaNNeg () {\n return -NaN\n }\n\n createUtf8String (raw, len) {\n return raw.join('')\n }\n\n createUtf8StringFromHeap (start, end) {\n if (start === end) {\n return ''\n }\n\n return this._buffer.toString('utf8', start, end)\n }\n\n createSimpleUnassigned (val) {\n return new Simple(val)\n }\n\n // -- Interface for decoder.asm.js\n\n pushInt (val) {\n this._push(this.createInt(val))\n }\n\n pushInt32 (f, g) {\n this._push(this.createInt32(f, g))\n }\n\n pushInt64 (f1, f2, g1, g2) {\n this._push(this.createInt64(f1, f2, g1, g2))\n }\n\n pushFloat (val) {\n this._push(this.createFloat(val))\n }\n\n pushFloatSingle (a, b, c, d) {\n this._push(this.createFloatSingle(a, b, c, d))\n }\n\n pushFloatDouble (a, b, c, d, e, f, g, h) {\n this._push(this.createFloatDouble(a, b, c, d, e, f, g, h))\n }\n\n pushInt32Neg (f, g) {\n this._push(this.createInt32Neg(f, g))\n }\n\n pushInt64Neg (f1, f2, g1, g2) {\n this._push(this.createInt64Neg(f1, f2, g1, g2))\n }\n\n pushTrue () {\n this._push(this.createTrue())\n }\n\n pushFalse () {\n this._push(this.createFalse())\n }\n\n pushNull () {\n this._push(this.createNull())\n }\n\n pushUndefined () {\n this._push(this.createUndefined())\n }\n\n pushInfinity () {\n this._push(this.createInfinity())\n }\n\n pushInfinityNeg () {\n this._push(this.createInfinityNeg())\n }\n\n pushNaN () {\n this._push(this.createNaN())\n }\n\n pushNaNNeg () {\n this._push(this.createNaNNeg())\n }\n\n pushArrayStart () {\n this._createParent([], c.PARENT.ARRAY, -1)\n }\n\n pushArrayStartFixed (len) {\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createArrayStartFixed(len)\n }\n\n pushObjectStart () {\n this._createObjectStartFixed(-1)\n }\n\n pushObjectStartFixed (len) {\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createObjectStartFixed(len)\n }\n\n pushByteStringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.BYTE_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushByteString (start, end) {\n this._push(this.createByteStringFromHeap(start, end))\n }\n\n pushUtf8StringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.UTF8_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushUtf8String (start, end) {\n this._push(this.createUtf8StringFromHeap(start, end))\n }\n\n pushSimpleUnassigned (val) {\n this._push(this.createSimpleUnassigned(val))\n }\n\n pushTagStart (tag) {\n this._parents[this._depth] = {\n type: c.PARENT.TAG,\n length: 1,\n ref: [tag]\n }\n }\n\n pushTagStart4 (f, g) {\n this.pushTagStart(utils.buildInt32(f, g))\n }\n\n pushTagStart8 (f1, f2, g1, g2) {\n this.pushTagStart(utils.buildInt64(f1, f2, g1, g2))\n }\n\n pushTagUnassigned (tagNumber) {\n this._push(this.createTag(tagNumber))\n }\n\n pushBreak () {\n if (this._currentParent.length > -1) {\n throw new Error('Unexpected break')\n }\n\n this._closeParent()\n }\n\n _createObjectStartFixed (len) {\n if (len === 0) {\n this._push(this.createObject({}))\n return\n }\n\n this._createParent({}, c.PARENT.OBJECT, len)\n }\n\n _createArrayStartFixed (len) {\n if (len === 0) {\n this._push(this.createArray([]))\n return\n }\n\n this._createParent(new Array(len), c.PARENT.ARRAY, len)\n }\n\n _decode (input) {\n if (input.byteLength === 0) {\n throw new Error('Input too short')\n }\n\n this._reset()\n this._heap8.set(input)\n const code = this.parser.parse(input.byteLength)\n\n if (this._depth > 1) {\n while (this._currentParent.length === 0) {\n this._closeParent()\n }\n if (this._depth > 1) {\n throw new Error('Undeterminated nesting')\n }\n }\n\n if (code > 0) {\n throw new Error('Failed to parse')\n }\n\n if (this._res.length === 0) {\n throw new Error('No valid result')\n }\n }\n\n // -- Public Interface\n\n decodeFirst (input) {\n this._decode(input)\n\n return this._res[0]\n }\n\n decodeAll (input) {\n this._decode(input)\n\n return this._res\n }\n\n /**\n * Decode the first cbor object.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {*}\n */\n static decode (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeFirst(input)\n }\n\n /**\n * Decode all cbor objects.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {Array<*>}\n */\n static decodeAll (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeAll(input)\n }\n}\n\nDecoder.decodeFirst = Decoder.decode\n\nmodule.exports = Decoder\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Decoder = require('./decoder')\nconst utils = require('./utils')\n\n/**\n * Output the diagnostic format from a stream of CBOR bytes.\n *\n */\nclass Diagnose extends Decoder {\n createTag (tagNumber, value) {\n return `${tagNumber}(${value})`\n }\n\n createInt (val) {\n return super.createInt(val).toString()\n }\n\n createInt32 (f, g) {\n return super.createInt32(f, g).toString()\n }\n\n createInt64 (f1, f2, g1, g2) {\n return super.createInt64(f1, f2, g1, g2).toString()\n }\n\n createInt32Neg (f, g) {\n return super.createInt32Neg(f, g).toString()\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n return super.createInt64Neg(f1, f2, g1, g2).toString()\n }\n\n createTrue () {\n return 'true'\n }\n\n createFalse () {\n return 'false'\n }\n\n createFloat (val) {\n const fl = super.createFloat(val)\n if (utils.isNegativeZero(val)) {\n return '-0_1'\n }\n\n return `${fl}_1`\n }\n\n createFloatSingle (a, b, c, d) {\n const fl = super.createFloatSingle(a, b, c, d)\n return `${fl}_2`\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n const fl = super.createFloatDouble(a, b, c, d, e, f, g, h)\n return `${fl}_3`\n }\n\n createByteString (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n return `h'${val}`\n }\n\n createByteStringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createByteStringFromHeap(start, end)\n )).toString('hex')\n\n return `h'${val}'`\n }\n\n createInfinity () {\n return 'Infinity_1'\n }\n\n createInfinityNeg () {\n return '-Infinity_1'\n }\n\n createNaN () {\n return 'NaN_1'\n }\n\n createNaNNeg () {\n return '-NaN_1'\n }\n\n createNull () {\n return 'null'\n }\n\n createUndefined () {\n return 'undefined'\n }\n\n createSimpleUnassigned (val) {\n return `simple(${val})`\n }\n\n createArray (arr, len) {\n const val = super.createArray(arr, len)\n\n if (len === -1) {\n // indefinite\n return `[_ ${val.join(', ')}]`\n }\n\n return `[${val.join(', ')}]`\n }\n\n createMap (map, len) {\n const val = super.createMap(map)\n const list = Array.from(val.keys())\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${list}}`\n }\n\n return `{${list}}`\n }\n\n createObject (obj, len) {\n const val = super.createObject(obj)\n const map = Object.keys(val)\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${map}}`\n }\n\n return `{${map}}`\n }\n\n createUtf8String (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n\n return `\"${val}\"`\n }\n\n createUtf8StringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createUtf8StringFromHeap(start, end)\n )).toString('utf8')\n\n return `\"${val}\"`\n }\n\n static diagnose (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Diagnose()\n return dec.decodeFirst(input)\n }\n}\n\nmodule.exports = Diagnose\n\nfunction collectObject (val) {\n return (acc, key) => {\n if (acc) {\n return `${acc}, ${key}: ${val[key]}`\n }\n return `${key}: ${val[key]}`\n }\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst { URL } = require('iso-url')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst utils = require('./utils')\nconst constants = require('./constants')\nconst MT = constants.MT\nconst NUMBYTES = constants.NUMBYTES\nconst SHIFT32 = constants.SHIFT32\nconst SYMS = constants.SYMS\nconst TAG = constants.TAG\nconst HALF = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.TWO\nconst FLOAT = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.FOUR\nconst DOUBLE = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.EIGHT\nconst TRUE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.TRUE\nconst FALSE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.FALSE\nconst UNDEFINED = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.UNDEFINED\nconst NULL = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.NULL\n\nconst MAXINT_BN = new Bignumber('0x20000000000000')\nconst BUF_NAN = Buffer.from('f97e00', 'hex')\nconst BUF_INF_NEG = Buffer.from('f9fc00', 'hex')\nconst BUF_INF_POS = Buffer.from('f97c00', 'hex')\n\nfunction toType (obj) {\n // [object Type]\n // --------8---1\n return ({}).toString.call(obj).slice(8, -1)\n}\n\n/**\n * Transform JavaScript values into CBOR bytes\n *\n */\nclass Encoder {\n /**\n * @param {Object} [options={}]\n * @param {function(Buffer)} options.stream\n */\n constructor (options) {\n options = options || {}\n\n this.streaming = typeof options.stream === 'function'\n this.onData = options.stream\n\n this.semanticTypes = [\n [URL, this._pushUrl],\n [Bignumber, this._pushBigNumber]\n ]\n\n const addTypes = options.genTypes || []\n const len = addTypes.length\n for (let i = 0; i < len; i++) {\n this.addSemanticType(\n addTypes[i][0],\n addTypes[i][1]\n )\n }\n\n this._reset()\n }\n\n addSemanticType (type, fun) {\n const len = this.semanticTypes.length\n for (let i = 0; i < len; i++) {\n const typ = this.semanticTypes[i][0]\n if (typ === type) {\n const old = this.semanticTypes[i][1]\n this.semanticTypes[i][1] = fun\n return old\n }\n }\n this.semanticTypes.push([type, fun])\n return null\n }\n\n push (val) {\n if (!val) {\n return true\n }\n\n this.result[this.offset] = val\n this.resultMethod[this.offset] = 0\n this.resultLength[this.offset] = val.length\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n pushWrite (val, method, len) {\n this.result[this.offset] = val\n this.resultMethod[this.offset] = method\n this.resultLength[this.offset] = len\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n _pushUInt8 (val) {\n return this.pushWrite(val, 1, 1)\n }\n\n _pushUInt16BE (val) {\n return this.pushWrite(val, 2, 2)\n }\n\n _pushUInt32BE (val) {\n return this.pushWrite(val, 3, 4)\n }\n\n _pushDoubleBE (val) {\n return this.pushWrite(val, 4, 8)\n }\n\n _pushNaN () {\n return this.push(BUF_NAN)\n }\n\n _pushInfinity (obj) {\n const half = (obj < 0) ? BUF_INF_NEG : BUF_INF_POS\n return this.push(half)\n }\n\n _pushFloat (obj) {\n const b2 = Buffer.allocUnsafe(2)\n\n if (utils.writeHalf(b2, obj)) {\n if (utils.parseHalf(b2) === obj) {\n return this._pushUInt8(HALF) && this.push(b2)\n }\n }\n\n const b4 = Buffer.allocUnsafe(4)\n b4.writeFloatBE(obj, 0)\n if (b4.readFloatBE(0) === obj) {\n return this._pushUInt8(FLOAT) && this.push(b4)\n }\n\n return this._pushUInt8(DOUBLE) && this._pushDoubleBE(obj)\n }\n\n _pushInt (obj, mt, orig) {\n const m = mt << 5\n if (obj < 24) {\n return this._pushUInt8(m | obj)\n }\n\n if (obj <= 0xff) {\n return this._pushUInt8(m | NUMBYTES.ONE) && this._pushUInt8(obj)\n }\n\n if (obj <= 0xffff) {\n return this._pushUInt8(m | NUMBYTES.TWO) && this._pushUInt16BE(obj)\n }\n\n if (obj <= 0xffffffff) {\n return this._pushUInt8(m | NUMBYTES.FOUR) && this._pushUInt32BE(obj)\n }\n\n if (obj <= Number.MAX_SAFE_INTEGER) {\n return this._pushUInt8(m | NUMBYTES.EIGHT) &&\n this._pushUInt32BE(Math.floor(obj / SHIFT32)) &&\n this._pushUInt32BE(obj % SHIFT32)\n }\n\n if (mt === MT.NEG_INT) {\n return this._pushFloat(orig)\n }\n\n return this._pushFloat(obj)\n }\n\n _pushIntNum (obj) {\n if (obj < 0) {\n return this._pushInt(-obj - 1, MT.NEG_INT, obj)\n } else {\n return this._pushInt(obj, MT.POS_INT)\n }\n }\n\n _pushNumber (obj) {\n switch (false) {\n case (obj === obj): // eslint-disable-line\n return this._pushNaN(obj)\n case isFinite(obj):\n return this._pushInfinity(obj)\n case ((obj % 1) !== 0):\n return this._pushIntNum(obj)\n default:\n return this._pushFloat(obj)\n }\n }\n\n _pushString (obj) {\n const len = Buffer.byteLength(obj, 'utf8')\n return this._pushInt(len, MT.UTF8_STRING) && this.pushWrite(obj, 5, len)\n }\n\n _pushBoolean (obj) {\n return this._pushUInt8(obj ? TRUE : FALSE)\n }\n\n _pushUndefined (obj) {\n return this._pushUInt8(UNDEFINED)\n }\n\n _pushArray (gen, obj) {\n const len = obj.length\n if (!gen._pushInt(len, MT.ARRAY)) {\n return false\n }\n for (let j = 0; j < len; j++) {\n if (!gen.pushAny(obj[j])) {\n return false\n }\n }\n return true\n }\n\n _pushTag (tag) {\n return this._pushInt(tag, MT.TAG)\n }\n\n _pushDate (gen, obj) {\n // Round date, to get seconds since 1970-01-01 00:00:00 as defined in\n // Sec. 2.4.1 and get a possibly more compact encoding. Note that it is\n // still allowed to encode fractions of seconds which can be achieved by\n // changing overwriting the encode function for Date objects.\n return gen._pushTag(TAG.DATE_EPOCH) && gen.pushAny(Math.round(obj / 1000))\n }\n\n _pushBuffer (gen, obj) {\n return gen._pushInt(obj.length, MT.BYTE_STRING) && gen.push(obj)\n }\n\n _pushNoFilter (gen, obj) {\n return gen._pushBuffer(gen, obj.slice())\n }\n\n _pushRegexp (gen, obj) {\n return gen._pushTag(TAG.REGEXP) && gen.pushAny(obj.source)\n }\n\n _pushSet (gen, obj) {\n if (!gen._pushInt(obj.size, MT.ARRAY)) {\n return false\n }\n for (const x of obj) {\n if (!gen.pushAny(x)) {\n return false\n }\n }\n return true\n }\n\n _pushUrl (gen, obj) {\n return gen._pushTag(TAG.URI) && gen.pushAny(obj.format())\n }\n\n _pushBigint (obj) {\n let tag = TAG.POS_BIGINT\n if (obj.isNegative()) {\n obj = obj.negated().minus(1)\n tag = TAG.NEG_BIGINT\n }\n let str = obj.toString(16)\n if (str.length % 2) {\n str = '0' + str\n }\n const buf = Buffer.from(str, 'hex')\n return this._pushTag(tag) && this._pushBuffer(this, buf)\n }\n\n _pushBigNumber (gen, obj) {\n if (obj.isNaN()) {\n return gen._pushNaN()\n }\n if (!obj.isFinite()) {\n return gen._pushInfinity(obj.isNegative() ? -Infinity : Infinity)\n }\n if (obj.isInteger()) {\n return gen._pushBigint(obj)\n }\n if (!(gen._pushTag(TAG.DECIMAL_FRAC) &&\n gen._pushInt(2, MT.ARRAY))) {\n return false\n }\n\n const dec = obj.decimalPlaces()\n const slide = obj.multipliedBy(new Bignumber(10).pow(dec))\n if (!gen._pushIntNum(-dec)) {\n return false\n }\n if (slide.abs().isLessThan(MAXINT_BN)) {\n return gen._pushIntNum(slide.toNumber())\n } else {\n return gen._pushBigint(slide)\n }\n }\n\n _pushMap (gen, obj) {\n if (!gen._pushInt(obj.size, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n obj.size,\n Array.from(obj)\n )\n }\n\n _pushObject (obj) {\n if (!obj) {\n return this._pushUInt8(NULL)\n }\n\n var len = this.semanticTypes.length\n for (var i = 0; i < len; i++) {\n if (obj instanceof this.semanticTypes[i][0]) {\n return this.semanticTypes[i][1].call(obj, this, obj)\n }\n }\n\n var f = obj.encodeCBOR\n if (typeof f === 'function') {\n return f.call(obj, this)\n }\n\n var keys = Object.keys(obj)\n var keyLength = keys.length\n if (!this._pushInt(keyLength, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n keyLength,\n keys.map((k) => [k, obj[k]])\n )\n }\n\n _pushRawMap (len, map) {\n // Sort keys for canoncialization\n // 1. encode key\n // 2. shorter key comes before longer key\n // 3. same length keys are sorted with lower\n // byte value before higher\n\n map = map.map(function (a) {\n a[0] = Encoder.encode(a[0])\n return a\n }).sort(utils.keySorter)\n\n for (var j = 0; j < len; j++) {\n if (!this.push(map[j][0])) {\n return false\n }\n\n if (!this.pushAny(map[j][1])) {\n return false\n }\n }\n\n return true\n }\n\n /**\n * Alias for `.pushAny`\n *\n * @param {*} obj\n * @returns {boolean} true on success\n */\n write (obj) {\n return this.pushAny(obj)\n }\n\n /**\n * Push any supported type onto the encoded stream\n *\n * @param {any} obj\n * @returns {boolean} true on success\n */\n pushAny (obj) {\n var typ = toType(obj)\n\n switch (typ) {\n case 'Number':\n return this._pushNumber(obj)\n case 'String':\n return this._pushString(obj)\n case 'Boolean':\n return this._pushBoolean(obj)\n case 'Object':\n return this._pushObject(obj)\n case 'Array':\n return this._pushArray(this, obj)\n case 'Uint8Array':\n return this._pushBuffer(this, Buffer.isBuffer(obj) ? obj : Buffer.from(obj))\n case 'Null':\n return this._pushUInt8(NULL)\n case 'Undefined':\n return this._pushUndefined(obj)\n case 'Map':\n return this._pushMap(this, obj)\n case 'Set':\n return this._pushSet(this, obj)\n case 'URL':\n return this._pushUrl(this, obj)\n case 'BigNumber':\n return this._pushBigNumber(this, obj)\n case 'Date':\n return this._pushDate(this, obj)\n case 'RegExp':\n return this._pushRegexp(this, obj)\n case 'Symbol':\n switch (obj) {\n case SYMS.NULL:\n return this._pushObject(null)\n case SYMS.UNDEFINED:\n return this._pushUndefined(undefined)\n // TODO: Add pluggable support for other symbols\n default:\n throw new Error('Unknown symbol: ' + obj.toString())\n }\n default:\n throw new Error('Unknown type: ' + typeof obj + ', ' + (obj ? obj.toString() : ''))\n }\n }\n\n finalize () {\n if (this.offset === 0) {\n return null\n }\n\n var result = this.result\n var resultLength = this.resultLength\n var resultMethod = this.resultMethod\n var offset = this.offset\n\n // Determine the size of the buffer\n var size = 0\n var i = 0\n\n for (; i < offset; i++) {\n size += resultLength[i]\n }\n\n var res = Buffer.allocUnsafe(size)\n var index = 0\n var length = 0\n\n // Write the content into the result buffer\n for (i = 0; i < offset; i++) {\n length = resultLength[i]\n\n switch (resultMethod[i]) {\n case 0:\n result[i].copy(res, index)\n break\n case 1:\n res.writeUInt8(result[i], index, true)\n break\n case 2:\n res.writeUInt16BE(result[i], index, true)\n break\n case 3:\n res.writeUInt32BE(result[i], index, true)\n break\n case 4:\n res.writeDoubleBE(result[i], index, true)\n break\n case 5:\n res.write(result[i], index, length, 'utf8')\n break\n default:\n throw new Error('unkown method')\n }\n\n index += length\n }\n\n var tmp = res\n\n this._reset()\n\n return tmp\n }\n\n _reset () {\n this.result = []\n this.resultMethod = []\n this.resultLength = []\n this.offset = 0\n }\n\n /**\n * Encode the given value\n * @param {*} o\n * @returns {Buffer}\n */\n static encode (o) {\n const enc = new Encoder()\n const ret = enc.pushAny(o)\n if (!ret) {\n throw new Error('Failed to encode input')\n }\n\n return enc.finalize()\n }\n}\n\nmodule.exports = Encoder\n","'use strict'\n\n// exports.Commented = require('./commented')\nexports.Diagnose = require('./diagnose')\nexports.Decoder = require('./decoder')\nexports.Encoder = require('./encoder')\nexports.Simple = require('./simple')\nexports.Tagged = require('./tagged')\n\n// exports.comment = exports.Commented.comment\nexports.decodeAll = exports.Decoder.decodeAll\nexports.decodeFirst = exports.Decoder.decodeFirst\nexports.diagnose = exports.Diagnose.diagnose\nexports.encode = exports.Encoder.encode\nexports.decode = exports.Decoder.decode\n\nexports.leveldb = {\n decode: exports.Decoder.decodeAll,\n encode: exports.Encoder.encode,\n buffer: true,\n name: 'cbor'\n}\n","'use strict'\n\nconst constants = require('./constants')\nconst MT = constants.MT\nconst SIMPLE = constants.SIMPLE\nconst SYMS = constants.SYMS\n\n/**\n * A CBOR Simple Value that does not map onto a known constant.\n */\nclass Simple {\n /**\n * Creates an instance of Simple.\n *\n * @param {integer} value - the simple value's integer value\n */\n constructor (value) {\n if (typeof value !== 'number') {\n throw new Error('Invalid Simple type: ' + (typeof value))\n }\n if ((value < 0) || (value > 255) || ((value | 0) !== value)) {\n throw new Error('value must be a small positive integer: ' + value)\n }\n this.value = value\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n toString () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n inspect () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n return gen._pushInt(this.value, MT.SIMPLE_FLOAT)\n }\n\n /**\n * Is the given object a Simple?\n *\n * @param {any} obj - object to test\n * @returns {bool} - is it Simple?\n */\n static isSimple (obj) {\n return obj instanceof Simple\n }\n\n /**\n * Decode from the CBOR additional information into a JavaScript value.\n * If the CBOR item has no parent, return a \"safe\" symbol instead of\n * `null` or `undefined`, so that the value can be passed through a\n * stream in object mode.\n *\n * @param {Number} val - the CBOR additional info to convert\n * @param {bool} hasParent - Does the CBOR item have a parent?\n * @returns {(null|undefined|Boolean|Symbol)} - the decoded value\n */\n static decode (val, hasParent) {\n if (hasParent == null) {\n hasParent = true\n }\n switch (val) {\n case SIMPLE.FALSE:\n return false\n case SIMPLE.TRUE:\n return true\n case SIMPLE.NULL:\n if (hasParent) {\n return null\n } else {\n return SYMS.NULL\n }\n case SIMPLE.UNDEFINED:\n if (hasParent) {\n return undefined\n } else {\n return SYMS.UNDEFINED\n }\n case -1:\n if (!hasParent) {\n throw new Error('Invalid BREAK')\n }\n return SYMS.BREAK\n default:\n return new Simple(val)\n }\n }\n}\n\nmodule.exports = Simple\n","'use strict'\n\n/**\n * A CBOR tagged item, where the tag does not have semantics specified at the\n * moment, or those semantics threw an error during parsing. Typically this will\n * be an extension point you're not yet expecting.\n */\nclass Tagged {\n /**\n * Creates an instance of Tagged.\n *\n * @param {Number} tag - the number of the tag\n * @param {any} value - the value inside the tag\n * @param {Error} err - the error that was thrown parsing the tag, or null\n */\n constructor (tag, value, err) {\n this.tag = tag\n this.value = value\n this.err = err\n if (typeof this.tag !== 'number') {\n throw new Error('Invalid tag type (' + (typeof this.tag) + ')')\n }\n if ((this.tag < 0) || ((this.tag | 0) !== this.tag)) {\n throw new Error('Tag must be a positive integer: ' + this.tag)\n }\n }\n\n /**\n * Convert to a String\n *\n * @returns {String} string of the form '1(2)'\n */\n toString () {\n return `${this.tag}(${JSON.stringify(this.value)})`\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n gen._pushTag(this.tag)\n return gen.pushAny(this.value)\n }\n\n /**\n * If we have a converter for this type, do the conversion. Some converters\n * are built-in. Additional ones can be passed in. If you want to remove\n * a built-in converter, pass a converter in whose value is 'null' instead\n * of a function.\n *\n * @param {Object} converters - keys in the object are a tag number, the value\n * is a function that takes the decoded CBOR and returns a JavaScript value\n * of the appropriate type. Throw an exception in the function on errors.\n * @returns {any} - the converted item\n */\n convert (converters) {\n var er, f\n f = converters != null ? converters[this.tag] : undefined\n if (typeof f !== 'function') {\n f = Tagged['_tag' + this.tag]\n if (typeof f !== 'function') {\n return this\n }\n }\n try {\n return f.call(Tagged, this.value)\n } catch (error) {\n er = error\n this.err = er\n return this\n }\n }\n}\n\nmodule.exports = Tagged\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst constants = require('./constants')\nconst SHIFT32 = constants.SHIFT32\nconst SHIFT16 = constants.SHIFT16\nconst MAX_SAFE_HIGH = 0x1fffff\n\nexports.parseHalf = function parseHalf (buf) {\n var exp, mant, sign\n sign = buf[0] & 0x80 ? -1 : 1\n exp = (buf[0] & 0x7C) >> 2\n mant = ((buf[0] & 0x03) << 8) | buf[1]\n if (!exp) {\n return sign * 5.9604644775390625e-8 * mant\n } else if (exp === 0x1f) {\n return sign * (mant ? 0 / 0 : 2e308)\n } else {\n return sign * Math.pow(2, exp - 25) * (1024 + mant)\n }\n}\n\nfunction toHex (n) {\n if (n < 16) {\n return '0' + n.toString(16)\n }\n\n return n.toString(16)\n}\n\nexports.arrayBufferToBignumber = function (buf) {\n const len = buf.byteLength\n let res = ''\n for (let i = 0; i < len; i++) {\n res += toHex(buf[i])\n }\n\n return new Bignumber(res, 16)\n}\n\n// convert an Object into a Map\nexports.buildMap = (obj) => {\n const res = new Map()\n const keys = Object.keys(obj)\n const length = keys.length\n for (let i = 0; i < length; i++) {\n res.set(keys[i], obj[keys[i]])\n }\n return res\n}\n\nexports.buildInt32 = (f, g) => {\n return f * SHIFT16 + g\n}\n\nexports.buildInt64 = (f1, f2, g1, g2) => {\n const f = exports.buildInt32(f1, f2)\n const g = exports.buildInt32(g1, g2)\n\n if (f > MAX_SAFE_HIGH) {\n return new Bignumber(f).times(SHIFT32).plus(g)\n } else {\n return (f * SHIFT32) + g\n }\n}\n\nexports.writeHalf = function writeHalf (buf, half) {\n // assume 0, -0, NaN, Infinity, and -Infinity have already been caught\n\n // HACK: everyone settle in. This isn't going to be pretty.\n // Translate cn-cbor's C code (from Carsten Borman):\n\n // uint32_t be32;\n // uint16_t be16, u16;\n // union {\n // float f;\n // uint32_t u;\n // } u32;\n // u32.f = float_val;\n\n const u32 = Buffer.allocUnsafe(4)\n u32.writeFloatBE(half, 0)\n const u = u32.readUInt32BE(0)\n\n // if ((u32.u & 0x1FFF) == 0) { /* worth trying half */\n\n // hildjj: If the lower 13 bits are 0, we won't lose anything in the conversion\n if ((u & 0x1FFF) !== 0) {\n return false\n }\n\n // int s16 = (u32.u >> 16) & 0x8000;\n // int exp = (u32.u >> 23) & 0xff;\n // int mant = u32.u & 0x7fffff;\n\n var s16 = (u >> 16) & 0x8000 // top bit is sign\n const exp = (u >> 23) & 0xff // then 5 bits of exponent\n const mant = u & 0x7fffff\n\n // if (exp == 0 && mant == 0)\n // ; /* 0.0, -0.0 */\n\n // hildjj: zeros already handled. Assert if you don't believe me.\n\n // else if (exp >= 113 && exp <= 142) /* normalized */\n // s16 += ((exp - 112) << 10) + (mant >> 13);\n if ((exp >= 113) && (exp <= 142)) {\n s16 += ((exp - 112) << 10) + (mant >> 13)\n\n // else if (exp >= 103 && exp < 113) { /* denorm, exp16 = 0 */\n // if (mant & ((1 << (126 - exp)) - 1))\n // goto float32; /* loss of precision */\n // s16 += ((mant + 0x800000) >> (126 - exp));\n } else if ((exp >= 103) && (exp < 113)) {\n if (mant & ((1 << (126 - exp)) - 1)) {\n return false\n }\n s16 += ((mant + 0x800000) >> (126 - exp))\n\n // } else if (exp == 255 && mant == 0) { /* Inf */\n // s16 += 0x7c00;\n\n // hildjj: Infinity already handled\n\n // } else\n // goto float32; /* loss of range */\n } else {\n return false\n }\n\n // ensure_writable(3);\n // u16 = s16;\n // be16 = hton16p((const uint8_t*)&u16);\n buf.writeUInt16BE(s16, 0)\n return true\n}\n\nexports.keySorter = function (a, b) {\n var lenA = a[0].byteLength\n var lenB = b[0].byteLength\n\n if (lenA > lenB) {\n return 1\n }\n\n if (lenB > lenA) {\n return -1\n }\n\n return a[0].compare(b[0])\n}\n\n// Adapted from http://www.2ality.com/2012/03/signedzero.html\nexports.isNegativeZero = (x) => {\n return x === 0 && (1 / x < 0)\n}\n\nexports.nextPowerOf2 = (n) => {\n let count = 0\n // First n in the below condition is for\n // the case where n is 0\n if (n && !(n & (n - 1))) {\n return n\n }\n\n while (n !== 0) {\n n >>= 1\n count += 1\n }\n\n return 1 << count\n}\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar uint_max = Math.pow(2, 32)\nfunction fixup_uint32 (x) {\n var ret, x_pos\n ret = x > uint_max || x < 0 ? (x_pos = Math.abs(x) % uint_max, x < 0 ? uint_max - x_pos : x_pos) : x\n return ret\n}\nfunction scrub_vec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n return false\n}\n\nfunction Global () {\n this.SBOX = []\n this.INV_SBOX = []\n this.SUB_MIX = [[], [], [], []]\n this.INV_SUB_MIX = [[], [], [], []]\n this.init()\n this.RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\n}\n\nGlobal.prototype.init = function () {\n var d, i, sx, t, x, x2, x4, x8, xi, _i\n d = (function () {\n var _i, _results\n _results = []\n for (i = _i = 0; _i < 256; i = ++_i) {\n if (i < 128) {\n _results.push(i << 1)\n } else {\n _results.push((i << 1) ^ 0x11b)\n }\n }\n return _results\n })()\n x = 0\n xi = 0\n for (i = _i = 0; _i < 256; i = ++_i) {\n sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n this.SBOX[x] = sx\n this.INV_SBOX[sx] = x\n x2 = d[x]\n x4 = d[x2]\n x8 = d[x4]\n t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n this.SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n this.SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n this.SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n this.SUB_MIX[3][x] = t\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n this.INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n this.INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n this.INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n this.INV_SUB_MIX[3][sx] = t\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 return true\n}\n\nvar G = new Global()\n\nAES.blockSize = 4 * 4\n\nAES.prototype.blockSize = AES.blockSize\n\nAES.keySize = 256 / 8\n\nAES.prototype.keySize = AES.keySize\n\nfunction bufferToArray (buf) {\n var len = buf.length / 4\n var out = new Array(len)\n var i = -1\n while (++i < len) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n return out\n}\nfunction AES (key) {\n this._key = bufferToArray(key)\n this._doReset()\n}\n\nAES.prototype._doReset = function () {\n var invKsRow, keySize, keyWords, ksRow, ksRows, t\n keyWords = this._key\n keySize = keyWords.length\n this._nRounds = keySize + 6\n ksRows = (this._nRounds + 1) * 4\n this._keySchedule = []\n for (ksRow = 0; ksRow < ksRows; ksRow++) {\n this._keySchedule[ksRow] = ksRow < keySize ? keyWords[ksRow] : (t = this._keySchedule[ksRow - 1], (ksRow % keySize) === 0 ? (t = (t << 8) | (t >>> 24), t = (G.SBOX[t >>> 24] << 24) | (G.SBOX[(t >>> 16) & 0xff] << 16) | (G.SBOX[(t >>> 8) & 0xff] << 8) | G.SBOX[t & 0xff], t ^= G.RCON[(ksRow / keySize) | 0] << 24) : keySize > 6 && ksRow % keySize === 4 ? t = (G.SBOX[t >>> 24] << 24) | (G.SBOX[(t >>> 16) & 0xff] << 16) | (G.SBOX[(t >>> 8) & 0xff] << 8) | G.SBOX[t & 0xff] : void 0, this._keySchedule[ksRow - keySize] ^ t)\n }\n this._invKeySchedule = []\n for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n ksRow = ksRows - invKsRow\n t = this._keySchedule[ksRow - (invKsRow % 4 ? 0 : 4)]\n this._invKeySchedule[invKsRow] = invKsRow < 4 || ksRow <= 4 ? t : G.INV_SUB_MIX[0][G.SBOX[t >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[(t >>> 16) & 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[(t >>> 8) & 0xff]] ^ G.INV_SUB_MIX[3][G.SBOX[t & 0xff]]\n }\n return true\n}\n\nAES.prototype.encryptBlock = function (M) {\n M = bufferToArray(new Buffer(M))\n var out = this._doCryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX)\n var buf = new Buffer(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 = bufferToArray(new Buffer(M))\n var temp = [M[3], M[1]]\n M[1] = temp[0]\n M[3] = temp[1]\n var out = this._doCryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX)\n var buf = new Buffer(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 scrub_vec(this._keySchedule)\n scrub_vec(this._invKeySchedule)\n scrub_vec(this._key)\n}\n\nAES.prototype._doCryptBlock = function (M, keySchedule, SUB_MIX, SBOX) {\n var ksRow, s0, s1, s2, s3, t0, t1, t2, t3\n\n s0 = M[0] ^ keySchedule[0]\n s1 = M[1] ^ keySchedule[1]\n s2 = M[2] ^ keySchedule[2]\n s3 = M[3] ^ keySchedule[3]\n ksRow = 4\n for (var round = 1; round < this._nRounds; round++) {\n t0 = SUB_MIX[0][s0 >>> 24] ^ SUB_MIX[1][(s1 >>> 16) & 0xff] ^ SUB_MIX[2][(s2 >>> 8) & 0xff] ^ SUB_MIX[3][s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX[0][s1 >>> 24] ^ SUB_MIX[1][(s2 >>> 16) & 0xff] ^ SUB_MIX[2][(s3 >>> 8) & 0xff] ^ SUB_MIX[3][s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX[0][s2 >>> 24] ^ SUB_MIX[1][(s3 >>> 16) & 0xff] ^ SUB_MIX[2][(s0 >>> 8) & 0xff] ^ SUB_MIX[3][s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX[0][s3 >>> 24] ^ SUB_MIX[1][(s0 >>> 16) & 0xff] ^ SUB_MIX[2][(s1 >>> 8) & 0xff] ^ SUB_MIX[3][s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\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 return [\n fixup_uint32(t0),\n fixup_uint32(t1),\n fixup_uint32(t2),\n fixup_uint32(t3)\n ]\n}\n\nexports.AES = AES\n","var aes = require('./aes')\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\ninherits(StreamCipher, Transform)\nmodule.exports = StreamCipher\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n if (!(this instanceof StreamCipher)) {\n return new StreamCipher(mode, key, iv)\n }\n Transform.call(this)\n this._finID = Buffer.concat([iv, new Buffer([0, 0, 0, 1])])\n iv = Buffer.concat([iv, new Buffer([0, 0, 0, 2])])\n this._cipher = new aes.AES(key)\n this._prev = new Buffer(iv.length)\n this._cache = new Buffer('')\n this._secCache = new Buffer('')\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n iv.copy(this._prev)\n this._mode = mode\n var h = new Buffer(4)\n h.fill(0)\n this._ghash = new GHASH(this._cipher.encryptBlock(h))\n this._authTag = null\n this._called = false\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 = new Buffer(rump)\n rump.fill(0)\n this._ghash.update(rump)\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}\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) {\n 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) {\n if (xorTest(tag, this._authTag)) {\n throw new Error('Unsupported state or unable to authenticate data')\n }\n } else {\n this._authTag = tag\n }\n this._cipher.scrub()\n}\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (!this._decrypt && Buffer.isBuffer(this._authTag)) {\n return this._authTag\n } else {\n throw new Error('Attempting to get auth tag in unsupported state')\n }\n}\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (this._decrypt) {\n this._authTag = tag\n } else {\n throw new Error('Attempting to set auth tag in unsupported state')\n }\n}\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (!this._called) {\n this._ghash.update(buf)\n this._alen += buf.length\n } else {\n throw new Error('Attempting to set AAD in unsupported state')\n }\n}\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) {\n out++\n }\n var len = Math.min(a.length, b.length)\n var i = -1\n while (++i < len) {\n out += (a[i] ^ b[i])\n }\n return out\n}\n","var ciphers = require('./encrypter')\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nvar deciphers = require('./decrypter')\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nvar modes = require('./modes')\nfunction getCiphers () {\n return Object.keys(modes)\n}\nexports.listCiphers = exports.getCiphers = getCiphers\n","var aes = require('./aes')\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar modes = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar AuthCipher = require('./authCipher')\nvar ebtk = require('evp_bytestokey')\n\ninherits(Decipher, Transform)\nfunction Decipher (mode, key, iv) {\n if (!(this instanceof Decipher)) {\n return new Decipher(mode, key, iv)\n }\n Transform.call(this)\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = new Buffer(iv.length)\n iv.copy(this._prev)\n this._mode = mode\n this._autopadding = true\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}\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}\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\nfunction Splitter () {\n if (!(this instanceof Splitter)) {\n return new Splitter()\n }\n this.cache = new Buffer('')\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 return null\n}\nSplitter.prototype.flush = function () {\n if (this.cache.length) {\n return this.cache\n }\n}\nfunction unpad (last) {\n var padded = last[15]\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) {\n return\n }\n return last.slice(0, 16 - padded)\n}\n\nvar modelist = {\n ECB: require('./modes/ecb'),\n CBC: require('./modes/cbc'),\n CFB: require('./modes/cfb'),\n CFB8: require('./modes/cfb8'),\n CFB1: require('./modes/cfb1'),\n OFB: require('./modes/ofb'),\n CTR: require('./modes/ctr'),\n GCM: require('./modes/ctr')\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = modes[suite.toLowerCase()]\n if (!config) {\n throw new TypeError('invalid suite type')\n }\n if (typeof iv === 'string') {\n iv = new Buffer(iv)\n }\n if (typeof password === 'string') {\n password = new Buffer(password)\n }\n if (password.length !== config.key / 8) {\n throw new TypeError('invalid key length ' + password.length)\n }\n if (iv.length !== config.iv) {\n throw new TypeError('invalid iv length ' + iv.length)\n }\n if (config.type === 'stream') {\n return new StreamCipher(modelist[config.mode], password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(modelist[config.mode], password, iv, true)\n }\n return new Decipher(modelist[config.mode], password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = modes[suite.toLowerCase()]\n if (!config) {\n 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}\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var aes = require('./aes')\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar modes = require('./modes')\nvar ebtk = require('evp_bytestokey')\nvar StreamCipher = require('./streamCipher')\nvar AuthCipher = require('./authCipher')\ninherits(Cipher, Transform)\nfunction Cipher (mode, key, iv) {\n if (!(this instanceof Cipher)) {\n return new Cipher(mode, key, iv)\n }\n Transform.call(this)\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = new Buffer(iv.length)\n iv.copy(this._prev)\n this._mode = mode\n this._autopadding = true\n}\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\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 } else if (chunk.toString('hex') !== '10101010101010101010101010101010') {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n if (!(this instanceof Splitter)) {\n return new Splitter()\n }\n this.cache = new Buffer('')\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}\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = new Buffer(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n var out = Buffer.concat([this.cache, padBuff])\n return out\n}\nvar modelist = {\n ECB: require('./modes/ecb'),\n CBC: require('./modes/cbc'),\n CFB: require('./modes/cfb'),\n CFB8: require('./modes/cfb8'),\n CFB1: require('./modes/cfb1'),\n OFB: require('./modes/ofb'),\n CTR: require('./modes/ctr'),\n GCM: require('./modes/ctr')\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = modes[suite.toLowerCase()]\n if (!config) {\n throw new TypeError('invalid suite type')\n }\n if (typeof iv === 'string') {\n iv = new Buffer(iv)\n }\n if (typeof password === 'string') {\n password = new Buffer(password)\n }\n if (password.length !== config.key / 8) {\n throw new TypeError('invalid key length ' + password.length)\n }\n if (iv.length !== config.iv) {\n throw new TypeError('invalid iv length ' + iv.length)\n }\n if (config.type === 'stream') {\n return new StreamCipher(modelist[config.mode], password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(modelist[config.mode], password, iv)\n }\n return new Cipher(modelist[config.mode], password, iv)\n}\nfunction createCipher (suite, password) {\n var config = modes[suite.toLowerCase()]\n if (!config) {\n 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","var zeros = new Buffer(16)\nzeros.fill(0)\nmodule.exports = GHASH\nfunction GHASH (key) {\n this.h = key\n this.state = new Buffer(16)\n this.state.fill(0)\n this.cache = new Buffer('')\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, lsb_Vi\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 = xor(Zi, Vi)\n }\n\n // Store the value of LSB(V_i)\n lsb_Vi = (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 (lsb_Vi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\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}\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, zeros], 16))\n }\n this.ghash(fromArray([\n 0, abl,\n 0, bl\n ]))\n return this.state\n}\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\nfunction fromArray (out) {\n out = out.map(fixup_uint32)\n var buf = new Buffer(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}\nvar uint_max = Math.pow(2, 32)\nfunction fixup_uint32 (x) {\n var ret, x_pos\n ret = x > uint_max || x < 0 ? (x_pos = Math.abs(x) % uint_max, x < 0 ? uint_max - x_pos : x_pos) : x\n return ret\n}\nfunction xor (a, b) {\n return [\n a[0] ^ b[0],\n a[1] ^ b[1],\n a[2] ^ b[2],\n a[3] ^ b[3]\n ]\n}\n","exports['aes-128-ecb'] = {\n cipher: 'AES',\n key: 128,\n iv: 0,\n mode: 'ECB',\n type: 'block'\n}\nexports['aes-192-ecb'] = {\n cipher: 'AES',\n key: 192,\n iv: 0,\n mode: 'ECB',\n type: 'block'\n}\nexports['aes-256-ecb'] = {\n cipher: 'AES',\n key: 256,\n iv: 0,\n mode: 'ECB',\n type: 'block'\n}\nexports['aes-128-cbc'] = {\n cipher: 'AES',\n key: 128,\n iv: 16,\n mode: 'CBC',\n type: 'block'\n}\nexports['aes-192-cbc'] = {\n cipher: 'AES',\n key: 192,\n iv: 16,\n mode: 'CBC',\n type: 'block'\n}\nexports['aes-256-cbc'] = {\n cipher: 'AES',\n key: 256,\n iv: 16,\n mode: 'CBC',\n type: 'block'\n}\nexports['aes128'] = exports['aes-128-cbc']\nexports['aes192'] = exports['aes-192-cbc']\nexports['aes256'] = exports['aes-256-cbc']\nexports['aes-128-cfb'] = {\n cipher: 'AES',\n key: 128,\n iv: 16,\n mode: 'CFB',\n type: 'stream'\n}\nexports['aes-192-cfb'] = {\n cipher: 'AES',\n key: 192,\n iv: 16,\n mode: 'CFB',\n type: 'stream'\n}\nexports['aes-256-cfb'] = {\n cipher: 'AES',\n key: 256,\n iv: 16,\n mode: 'CFB',\n type: 'stream'\n}\nexports['aes-128-cfb8'] = {\n cipher: 'AES',\n key: 128,\n iv: 16,\n mode: 'CFB8',\n type: 'stream'\n}\nexports['aes-192-cfb8'] = {\n cipher: 'AES',\n key: 192,\n iv: 16,\n mode: 'CFB8',\n type: 'stream'\n}\nexports['aes-256-cfb8'] = {\n cipher: 'AES',\n key: 256,\n iv: 16,\n mode: 'CFB8',\n type: 'stream'\n}\nexports['aes-128-cfb1'] = {\n cipher: 'AES',\n key: 128,\n iv: 16,\n mode: 'CFB1',\n type: 'stream'\n}\nexports['aes-192-cfb1'] = {\n cipher: 'AES',\n key: 192,\n iv: 16,\n mode: 'CFB1',\n type: 'stream'\n}\nexports['aes-256-cfb1'] = {\n cipher: 'AES',\n key: 256,\n iv: 16,\n mode: 'CFB1',\n type: 'stream'\n}\nexports['aes-128-ofb'] = {\n cipher: 'AES',\n key: 128,\n iv: 16,\n mode: 'OFB',\n type: 'stream'\n}\nexports['aes-192-ofb'] = {\n cipher: 'AES',\n key: 192,\n iv: 16,\n mode: 'OFB',\n type: 'stream'\n}\nexports['aes-256-ofb'] = {\n cipher: 'AES',\n key: 256,\n iv: 16,\n mode: 'OFB',\n type: 'stream'\n}\nexports['aes-128-ctr'] = {\n cipher: 'AES',\n key: 128,\n iv: 16,\n mode: 'CTR',\n type: 'stream'\n}\nexports['aes-192-ctr'] = {\n cipher: 'AES',\n key: 192,\n iv: 16,\n mode: 'CTR',\n type: 'stream'\n}\nexports['aes-256-ctr'] = {\n cipher: 'AES',\n key: 256,\n iv: 16,\n mode: 'CTR',\n type: 'stream'\n}\nexports['aes-128-gcm'] = {\n cipher: 'AES',\n key: 128,\n iv: 12,\n mode: 'GCM',\n type: 'auth'\n}\nexports['aes-192-gcm'] = {\n cipher: 'AES',\n key: 192,\n iv: 12,\n mode: 'GCM',\n type: 'auth'\n}\nexports['aes-256-gcm'] = {\n cipher: 'AES',\n key: 256,\n iv: 12,\n mode: 'GCM',\n type: 'auth'\n}\n","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","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, data, decrypt) {\n var out = new Buffer('')\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 = new Buffer('')\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}\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","function 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}\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = new Buffer(len)\n var i = -1\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n return out\n}\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = new Buffer(buffer.length)\n buffer = Buffer.concat([buffer, new Buffer([value])])\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n return out\n}\n","function encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n self._prev = Buffer.concat([self._prev.slice(1), new Buffer([decrypt ? byteParam : out])])\n return out\n}\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = new Buffer(len)\n var i = -1\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n return out\n}\n","var xor = require('buffer-xor')\n\nfunction 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}\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlock(self._prev)\n incr32(self._prev)\n return out\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 var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\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 aes = require('./aes')\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\ninherits(StreamCipher, Transform)\nmodule.exports = StreamCipher\nfunction StreamCipher (mode, key, iv, decrypt) {\n if (!(this instanceof StreamCipher)) {\n return new StreamCipher(mode, key, iv)\n }\n Transform.call(this)\n this._cipher = new aes.AES(key)\n this._prev = new Buffer(iv.length)\n this._cache = new Buffer('')\n this._secCache = new Buffer('')\n this._decrypt = decrypt\n iv.copy(this._prev)\n this._mode = mode\n}\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n","var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*\r\n Copyright 2013-2014 Daniel Wirtz \r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license bytebuffer.js (c) 2015 Daniel Wirtz \r\n * Backing buffer: ArrayBuffer, Accessor: Uint8Array\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bytebuffer.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"long\"], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module['exports'] = (function() {\r\n var Long; try { Long = require(\"long\"); } catch (e) {}\r\n return factory(Long);\r\n })();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ByteBuffer\"] = factory(global[\"dcodeIO\"][\"Long\"]);\r\n\r\n})(this, function(Long) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new ByteBuffer.\r\n * @class The swiss army knife for binary data in JavaScript.\r\n * @exports ByteBuffer\r\n * @constructor\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @expose\r\n */\r\n var ByteBuffer = function(capacity, littleEndian, noAssert) {\r\n if (typeof capacity === 'undefined')\r\n capacity = ByteBuffer.DEFAULT_CAPACITY;\r\n if (typeof littleEndian === 'undefined')\r\n littleEndian = ByteBuffer.DEFAULT_ENDIAN;\r\n if (typeof noAssert === 'undefined')\r\n noAssert = ByteBuffer.DEFAULT_NOASSERT;\r\n if (!noAssert) {\r\n capacity = capacity | 0;\r\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity\");\r\n littleEndian = !!littleEndian;\r\n noAssert = !!noAssert;\r\n }\r\n\r\n /**\r\n * Backing ArrayBuffer.\r\n * @type {!ArrayBuffer}\r\n * @expose\r\n */\r\n this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity);\r\n\r\n /**\r\n * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`.\r\n * @type {?Uint8Array}\r\n * @expose\r\n */\r\n this.view = capacity === 0 ? null : new Uint8Array(this.buffer);\r\n\r\n /**\r\n * Absolute read/write offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.offset = 0;\r\n\r\n /**\r\n * Marked offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#mark\r\n * @see ByteBuffer#reset\r\n */\r\n this.markedOffset = -1;\r\n\r\n /**\r\n * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.limit = capacity;\r\n\r\n /**\r\n * Whether to use little endian byte order, defaults to `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.littleEndian = littleEndian;\r\n\r\n /**\r\n * Whether to skip assertions of offsets and values, defaults to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.noAssert = noAssert;\r\n };\r\n\r\n /**\r\n * ByteBuffer version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.VERSION = \"5.0.1\";\r\n\r\n /**\r\n * Little endian constant that can be used instead of its boolean value. Evaluates to `true`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.LITTLE_ENDIAN = true;\r\n\r\n /**\r\n * Big endian constant that can be used instead of its boolean value. Evaluates to `false`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.BIG_ENDIAN = false;\r\n\r\n /**\r\n * Default initial capacity of `16`.\r\n * @type {number}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_CAPACITY = 16;\r\n\r\n /**\r\n * Default endianess of `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN;\r\n\r\n /**\r\n * Default no assertions flag of `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_NOASSERT = false;\r\n\r\n /**\r\n * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded\r\n * and int64 support is not available.\r\n * @type {?Long}\r\n * @const\r\n * @see https://github.com/dcodeIO/long.js\r\n * @expose\r\n */\r\n ByteBuffer.Long = Long || null;\r\n\r\n /**\r\n * @alias ByteBuffer.prototype\r\n * @inner\r\n */\r\n var ByteBufferPrototype = ByteBuffer.prototype;\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a ByteBuffer or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n ByteBufferPrototype.__isByteBuffer__;\r\n\r\n Object.defineProperty(ByteBufferPrototype, \"__isByteBuffer__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n // helpers\r\n\r\n /**\r\n * @type {!ArrayBuffer}\r\n * @inner\r\n */\r\n var EMPTY_BUFFER = new ArrayBuffer(0);\r\n\r\n /**\r\n * String.fromCharCode reference for compile-time renaming.\r\n * @type {function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Creates a source function for a string.\r\n * @param {string} s String to read from\r\n * @returns {function():number|null} Source function returning the next char code respectively `null` if there are\r\n * no more characters left.\r\n * @throws {TypeError} If the argument is invalid\r\n * @inner\r\n */\r\n function stringSource(s) {\r\n var i=0; return function() {\r\n return i < s.length ? s.charCodeAt(i++) : null;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a destination function for a string.\r\n * @returns {function(number=):undefined|string} Destination function successively called with the next char code.\r\n * Returns the final string when called without arguments.\r\n * @inner\r\n */\r\n function stringDestination() {\r\n var cs = [], ps = []; return function() {\r\n if (arguments.length === 0)\r\n return ps.join('')+stringFromCharCode.apply(String, cs);\r\n if (cs.length + arguments.length > 1024)\r\n ps.push(stringFromCharCode.apply(String, cs)),\r\n cs.length = 0;\r\n Array.prototype.push.apply(cs, arguments);\r\n };\r\n }\r\n\r\n /**\r\n * Gets the accessor type.\r\n * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.accessor = function() {\r\n return Uint8Array;\r\n };\r\n /**\r\n * Allocates a new ByteBuffer backed by a buffer of the specified capacity.\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBuffer.allocate = function(capacity, littleEndian, noAssert) {\r\n return new ByteBuffer(capacity, littleEndian, noAssert);\r\n };\r\n\r\n /**\r\n * Concatenates multiple ByteBuffers into one.\r\n * @param {!Array.} buffers Buffers to concatenate\r\n * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string (\"base64\", \"hex\", \"binary\",\r\n * defaults to \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults\r\n * to {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} Concatenated ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) {\r\n if (typeof encoding === 'boolean' || typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n var capacity = 0;\r\n for (var i=0, k=buffers.length, length; i 0) capacity += length;\r\n }\r\n if (capacity === 0)\r\n return new ByteBuffer(0, littleEndian, noAssert);\r\n var bb = new ByteBuffer(capacity, littleEndian, noAssert),\r\n bi;\r\n i=0; while (i} buffer Anything that can be wrapped\r\n * @param {(string|boolean)=} encoding String encoding if `buffer` is a string (\"base64\", \"hex\", \"binary\", defaults to\r\n * \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer`\r\n * @expose\r\n */\r\n ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) {\r\n if (typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n if (typeof buffer === 'string') {\r\n if (typeof encoding === 'undefined')\r\n encoding = \"utf8\";\r\n switch (encoding) {\r\n case \"base64\":\r\n return ByteBuffer.fromBase64(buffer, littleEndian);\r\n case \"hex\":\r\n return ByteBuffer.fromHex(buffer, littleEndian);\r\n case \"binary\":\r\n return ByteBuffer.fromBinary(buffer, littleEndian);\r\n case \"utf8\":\r\n return ByteBuffer.fromUTF8(buffer, littleEndian);\r\n case \"debug\":\r\n return ByteBuffer.fromDebug(buffer, littleEndian);\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n }\r\n if (buffer === null || typeof buffer !== 'object')\r\n throw TypeError(\"Illegal buffer\");\r\n var bb;\r\n if (ByteBuffer.isByteBuffer(buffer)) {\r\n bb = ByteBufferPrototype.clone.call(buffer);\r\n bb.markedOffset = -1;\r\n return bb;\r\n }\r\n if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER\r\n bb.buffer = buffer.buffer;\r\n bb.offset = buffer.byteOffset;\r\n bb.limit = buffer.byteOffset + buffer.byteLength;\r\n bb.view = new Uint8Array(buffer.buffer);\r\n }\r\n } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.byteLength > 0) {\r\n bb.buffer = buffer;\r\n bb.offset = 0;\r\n bb.limit = buffer.byteLength;\r\n bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null;\r\n }\r\n } else if (Object.prototype.toString.call(buffer) === \"[object Array]\") { // Create from octets\r\n bb = new ByteBuffer(buffer.length, littleEndian, noAssert);\r\n bb.limit = buffer.length;\r\n for (var i=0; i} value Array of booleans to write\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBitSet = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (!(value instanceof Array))\r\n throw TypeError(\"Illegal BitSet: Not an array\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n\r\n var start = offset,\r\n bits = value.length,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n k;\r\n\r\n offset += this.writeVarint32(bits,offset);\r\n\r\n while(bytes--) {\r\n k = (!!value[bit++] & 1) |\r\n ((!!value[bit++] & 1) << 1) |\r\n ((!!value[bit++] & 1) << 2) |\r\n ((!!value[bit++] & 1) << 3) |\r\n ((!!value[bit++] & 1) << 4) |\r\n ((!!value[bit++] & 1) << 5) |\r\n ((!!value[bit++] & 1) << 6) |\r\n ((!!value[bit++] & 1) << 7);\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0; k = 0;\r\n while(bit < bits) k = k | ((!!value[bit++] & 1) << (m++));\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n }\r\n\r\n /**\r\n * Reads a BitSet as an array of booleans.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {Array\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBitSet = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n\r\n var ret = this.readVarint32(offset),\r\n bits = ret.value,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n value = [],\r\n k;\r\n\r\n offset += ret.length;\r\n\r\n while(bytes--) {\r\n k = this.readByte(offset++);\r\n value[bit++] = !!(k & 0x01);\r\n value[bit++] = !!(k & 0x02);\r\n value[bit++] = !!(k & 0x04);\r\n value[bit++] = !!(k & 0x08);\r\n value[bit++] = !!(k & 0x10);\r\n value[bit++] = !!(k & 0x20);\r\n value[bit++] = !!(k & 0x40);\r\n value[bit++] = !!(k & 0x80);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0;\r\n k = this.readByte(offset++);\r\n while(bit < bits) value[bit++] = !!((k >> (m++)) & 1);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n }\r\n return value;\r\n }\r\n /**\r\n * Reads the specified number of bytes.\r\n * @param {number} length Number of bytes to read\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBytes = function(length, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var slice = this.slice(offset, offset + length);\r\n if (relative) this.offset += length;\n return slice;\r\n };\r\n\r\n /**\r\n * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}.\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBytes = ByteBufferPrototype.append;\r\n\r\n // types/ints/int8\r\n\r\n /**\r\n * Writes an 8bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity0 = this.buffer.byteLength;\n if (offset > capacity0)\n this.resize((capacity0 *= 2) > offset ? capacity0 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8;\r\n\r\n /**\r\n * Reads an 8bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8;\r\n\r\n /**\r\n * Writes an 8bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity1 = this.buffer.byteLength;\n if (offset > capacity1)\n this.resize((capacity1 *= 2) > offset ? capacity1 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8;\r\n\r\n /**\r\n * Reads an 8bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8;\r\n\r\n // types/ints/int16\r\n\r\n /**\r\n * Writes a 16bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity2 = this.buffer.byteLength;\n if (offset > capacity2)\n this.resize((capacity2 *= 2) > offset ? capacity2 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16;\r\n\r\n /**\r\n * Reads a 16bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16;\r\n\r\n /**\r\n * Writes a 16bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity3 = this.buffer.byteLength;\n if (offset > capacity3)\n this.resize((capacity3 *= 2) > offset ? capacity3 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16;\r\n\r\n /**\r\n * Reads a 16bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16;\r\n\r\n // types/ints/int32\r\n\r\n /**\r\n * Writes a 32bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity4 = this.buffer.byteLength;\n if (offset > capacity4)\n this.resize((capacity4 *= 2) > offset ? capacity4 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32;\r\n\r\n /**\r\n * Reads a 32bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n value |= 0; // Cast to signed\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32;\r\n\r\n /**\r\n * Writes a 32bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity5 = this.buffer.byteLength;\n if (offset > capacity5)\n this.resize((capacity5 *= 2) > offset ? capacity5 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32;\r\n\r\n /**\r\n * Reads a 32bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32;\r\n\r\n // types/ints/int64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Writes a 64bit signed integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity6 = this.buffer.byteLength;\n if (offset > capacity6)\n this.resize((capacity6 *= 2) > offset ? capacity6 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64;\r\n\r\n /**\r\n * Reads a 64bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, false);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64;\r\n\r\n /**\r\n * Writes a 64bit unsigned integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity7 = this.buffer.byteLength;\n if (offset > capacity7)\n this.resize((capacity7 *= 2) > offset ? capacity7 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}.\r\n * @function\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64;\r\n\r\n /**\r\n * Reads a 64bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, true);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64;\r\n\r\n } // Long\r\n\r\n\r\n // types/floats/float32\r\n\r\n /*\r\n ieee754 - https://github.com/feross/ieee754\r\n\r\n The MIT License (MIT)\r\n\r\n Copyright (c) Feross Aboukhadijeh\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in\r\n all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n THE SOFTWARE.\r\n */\r\n\r\n /**\r\n * Reads an IEEE754 float from a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @returns {number}\r\n * @inner\r\n */\r\n function ieee754_read(buffer, offset, isLE, mLen, nBytes) {\r\n var e, m,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n nBits = -7,\r\n i = isLE ? (nBytes - 1) : 0,\r\n d = isLE ? -1 : 1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n }\r\n\r\n /**\r\n * Writes an IEEE754 float to a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} value\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @inner\r\n */\r\n function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isLE ? 0 : (nBytes - 1),\r\n d = isLE ? 1 : -1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n }\r\n\r\n /**\r\n * Writes a 32bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity8 = this.buffer.byteLength;\n if (offset > capacity8)\n this.resize((capacity8 *= 2) > offset ? capacity8 : offset);\n offset -= 4;\n ieee754_write(this.view, value, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32;\r\n\r\n /**\r\n * Reads a 32bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32;\r\n\r\n // types/floats/float64\r\n\r\n /**\r\n * Writes a 64bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 8;\n var capacity9 = this.buffer.byteLength;\n if (offset > capacity9)\n this.resize((capacity9 *= 2) > offset ? capacity9 : offset);\n offset -= 8;\n ieee754_write(this.view, value, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64;\r\n\r\n /**\r\n * Reads a 64bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64;\r\n\r\n\r\n // types/varints/varint32\r\n\r\n /**\r\n * Maximum number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT32_BYTES = 5;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint32 = function(value) {\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n value = value >>> 0;\r\n if (value < 1 << 7 ) return 1;\r\n else if (value < 1 << 14) return 2;\r\n else if (value < 1 << 21) return 3;\r\n else if (value < 1 << 28) return 4;\r\n else return 5;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding.\r\n * @param {number} n Signed 32bit integer\r\n * @returns {number} Unsigned zigzag encoded 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode32 = function(n) {\r\n return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 32bit integer.\r\n * @param {number} n Unsigned zigzag encoded 32bit integer\r\n * @returns {number} Signed 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode32 = function(n) {\r\n return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Writes a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var size = ByteBuffer.calculateVarint32(value),\r\n b;\r\n offset += size;\n var capacity10 = this.buffer.byteLength;\n if (offset > capacity10)\n this.resize((capacity10 *= 2) > offset ? capacity10 : offset);\n offset -= size;\n value >>>= 0;\r\n while (value >= 0x80) {\r\n b = (value & 0x7f) | 0x80;\r\n this.view[offset++] = b;\r\n value >>>= 7;\r\n }\r\n this.view[offset++] = value;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return size;\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) {\r\n return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available\r\n * to fully decode the varint.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var c = 0,\r\n value = 0 >>> 0,\r\n b;\r\n do {\r\n if (!this.noAssert && offset > this.limit) {\r\n var err = Error(\"Truncated\");\r\n err['truncated'] = true;\r\n throw err;\r\n }\r\n b = this.view[offset++];\r\n if (c < 5)\r\n value |= (b & 0x7f) << (7*c);\r\n ++c;\r\n } while ((b & 0x80) !== 0);\r\n value |= 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n }\r\n return {\r\n \"value\": value,\r\n \"length\": c\r\n };\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32ZigZag = function(offset) {\r\n var val = this.readVarint32(offset);\r\n if (typeof val === 'object')\r\n val[\"value\"] = ByteBuffer.zigZagDecode32(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode32(val);\r\n return val;\r\n };\r\n\r\n // types/varints/varint64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Maximum number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT64_BYTES = 10;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @param {number|!Long} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n if (part2 == 0) {\r\n if (part1 == 0) {\r\n if (part0 < 1 << 14)\r\n return part0 < 1 << 7 ? 1 : 2;\r\n else\r\n return part0 < 1 << 21 ? 3 : 4;\r\n } else {\r\n if (part1 < 1 << 14)\r\n return part1 < 1 << 7 ? 5 : 6;\r\n else\r\n return part1 < 1 << 21 ? 7 : 8;\r\n }\r\n } else\r\n return part2 < 1 << 7 ? 9 : 10;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding.\r\n * @param {number|!Long} value Signed long\r\n * @returns {!Long} Unsigned zigzag encoded long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned();\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 64bit integer.\r\n * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned();\r\n };\r\n\r\n /**\r\n * Writes a 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n var size = ByteBuffer.calculateVarint64(value),\r\n part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n offset += size;\n var capacity11 = this.buffer.byteLength;\n if (offset > capacity11)\n this.resize((capacity11 *= 2) > offset ? capacity11 : offset);\n offset -= size;\n switch (size) {\r\n case 10: this.view[offset+9] = (part2 >>> 7) & 0x01;\r\n case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;\r\n case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;\r\n case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;\r\n case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;\r\n case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;\r\n case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;\r\n case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;\r\n case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;\r\n case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;\r\n }\r\n if (relative) {\r\n this.offset += size;\r\n return this;\r\n } else {\r\n return size;\r\n }\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) {\r\n return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var start = offset,\r\n part0 = 0,\r\n part1 = 0,\r\n part2 = 0,\r\n b = 0;\r\n b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n throw Error(\"Buffer overrun\"); }}}}}}}}}}\r\n var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false);\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n } else {\r\n return {\r\n 'value': value,\r\n 'length': offset-start\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64ZigZag = function(offset) {\r\n var val = this.readVarint64(offset);\r\n if (val && val['value'] instanceof Long)\r\n val[\"value\"] = ByteBuffer.zigZagDecode64(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode64(val);\r\n return val;\r\n };\r\n\r\n } // Long\r\n\r\n\r\n // types/strings/cstring\r\n\r\n /**\r\n * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL\r\n * characters itself.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * contained in `str` + 1 if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeCString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n var i,\r\n k = str.length;\r\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n for (i=0; i>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n // UTF8 strings do not contain zero bytes in between except for the zero character, so:\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k+1;\n var capacity12 = this.buffer.byteLength;\n if (offset > capacity12)\n this.resize((capacity12 *= 2) > offset ? capacity12 : offset);\n offset -= k+1;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n this.view[offset++] = 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return k;\r\n };\r\n\r\n /**\r\n * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters\r\n * itself.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readCString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n temp;\r\n // UTF8 strings do not contain zero bytes in between except for the zero character itself, so:\r\n var sd, b = -1;\r\n utfx.decodeUTF8toUTF16(function() {\r\n if (b === 0) return null;\r\n if (offset >= this.limit)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" < \"+this.limit);\r\n b = this.view[offset++];\r\n return b === 0 ? null : b;\r\n }.bind(this), sd = stringDestination(), true);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/istring\r\n\r\n /**\r\n * Writes a length as uint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeIString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n offset += 4+k;\n var capacity13 = this.buffer.byteLength;\n if (offset > capacity13)\n this.resize((capacity13 *= 2) > offset ? capacity13 : offset);\n offset -= 4+k;\n if (this.littleEndian) {\n this.view[offset+3] = (k >>> 24) & 0xFF;\n this.view[offset+2] = (k >>> 16) & 0xFF;\n this.view[offset+1] = (k >>> 8) & 0xFF;\n this.view[offset ] = k & 0xFF;\n } else {\n this.view[offset ] = (k >>> 24) & 0xFF;\n this.view[offset+1] = (k >>> 16) & 0xFF;\n this.view[offset+2] = (k >>> 8) & 0xFF;\n this.view[offset+3] = k & 0xFF;\n }\n offset += 4;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start + 4 + k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+4+k));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as uint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readIString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readUint32(offset);\r\n var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/utf8string\r\n\r\n /**\r\n * Metrics representing number of UTF8 characters. Evaluates to `c`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_CHARS = 'c';\r\n\r\n /**\r\n * Metrics representing number of bytes. Evaluates to `b`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_BYTES = 'b';\r\n\r\n /**\r\n * Writes an UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUTF8String = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var k;\r\n var start = offset;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k;\n var capacity14 = this.buffer.byteLength;\n if (offset > capacity14)\n this.resize((capacity14 *= 2) > offset ? capacity14 : offset);\n offset -= k;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}.\r\n * @function\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String;\r\n\r\n /**\r\n * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's\r\n * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 characters\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Chars = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[0];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Bytes = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}.\r\n * @function\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes;\r\n\r\n /**\r\n * Reads an UTF8 encoded string.\r\n * @param {number} length Number of characters or bytes to read.\r\n * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUTF8String = function(length, metrics, offset) {\r\n if (typeof metrics === 'number') {\r\n offset = metrics;\r\n metrics = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS;\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var i = 0,\r\n start = offset,\r\n sd;\r\n if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser\r\n sd = stringDestination();\r\n utfx.decodeUTF8(function() {\r\n return i < length && offset < this.limit ? this.view[offset++] : null;\r\n }.bind(this), function(cp) {\r\n ++i; utfx.UTF8toUTF16(cp, sd);\r\n });\r\n if (i !== length)\r\n throw RangeError(\"Illegal range: Truncated data, \"+i+\" == \"+length);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n } else if (metrics === ByteBuffer.METRICS_BYTES) {\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var k = offset + length;\r\n utfx.decodeUTF8toUTF16(function() {\r\n return offset < k ? this.view[offset++] : null;\r\n }.bind(this), sd = stringDestination(), this.noAssert);\r\n if (offset !== k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+k);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n 'string': sd(),\r\n 'length': offset - start\r\n };\r\n }\r\n } else\r\n throw TypeError(\"Unsupported metrics: \"+metrics);\r\n };\r\n\r\n /**\r\n * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}.\r\n * @function\r\n * @param {number} length Number of characters or bytes to read\r\n * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String;\r\n\r\n // types/strings/vstring\r\n\r\n /**\r\n * Writes a length as varint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeVString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k, l;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n l = ByteBuffer.calculateVarint32(k);\r\n offset += l+k;\n var capacity15 = this.buffer.byteLength;\n if (offset > capacity15)\n this.resize((capacity15 *= 2) > offset ? capacity15 : offset);\n offset -= l+k;\n offset += this.writeVarint32(k, offset);\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start+k+l)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+k+l));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as varint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readVString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readVarint32(offset);\r\n var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended\r\n * data's length.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|`\r\n * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|`\r\n */\r\n ByteBufferPrototype.append = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var length = source.limit - source.offset;\r\n if (length <= 0) return this; // Nothing to append\r\n offset += length;\n var capacity16 = this.buffer.byteLength;\n if (offset > capacity16)\n this.resize((capacity16 *= 2) > offset ? capacity16 : offset);\n offset -= length;\n this.view.set(source.view.subarray(source.offset, source.limit), offset);\r\n source.offset += length;\r\n if (relative) this.offset += length;\n return this;\r\n };\r\n\r\n /**\r\n * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the\r\n specified offset up to the length of this ByteBuffer's data.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#append\r\n */\r\n ByteBufferPrototype.appendTo = function(target, offset) {\r\n target.append(this, offset);\r\n return this;\r\n };\r\n\r\n /**\r\n * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to\r\n * disable them if your code already makes sure that everything is valid.\r\n * @param {boolean} assert `true` to enable assertions, otherwise `false`\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.assert = function(assert) {\r\n this.noAssert = !assert;\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the capacity of this ByteBuffer's backing buffer.\r\n * @returns {number} Capacity of the backing buffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.capacity = function() {\r\n return this.buffer.byteLength;\r\n };\r\n /**\r\n * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the\r\n * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.clear = function() {\r\n this.offset = 0;\r\n this.limit = this.buffer.byteLength;\r\n this.markedOffset = -1;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset},\r\n * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false`\r\n * @returns {!ByteBuffer} Cloned instance\r\n * @expose\r\n */\r\n ByteBufferPrototype.clone = function(copy) {\r\n var bb = new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n if (copy) {\r\n bb.buffer = new ArrayBuffer(this.buffer.byteLength);\r\n bb.view = new Uint8Array(bb.buffer);\r\n } else {\r\n bb.buffer = this.buffer;\r\n bb.view = this.view;\r\n }\r\n bb.offset = this.offset;\r\n bb.markedOffset = this.markedOffset;\r\n bb.limit = this.limit;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes\r\n * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and\r\n * adapt {@link ByteBuffer#markedOffset} to the same relative position if set.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.compact = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === 0 && end === this.buffer.byteLength)\r\n return this; // Already compacted\r\n var len = end - begin;\r\n if (len === 0) {\r\n this.buffer = EMPTY_BUFFER;\r\n this.view = null;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = 0;\r\n return this;\r\n }\r\n var buffer = new ArrayBuffer(len);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(begin, end));\r\n this.buffer = buffer;\r\n this.view = view;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Copy\r\n * @expose\r\n */\r\n ByteBufferPrototype.copy = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n var capacity = end - begin,\r\n bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert);\r\n bb.offset = 0;\r\n bb.limit = capacity;\r\n if (bb.markedOffset >= 0) bb.markedOffset -= begin;\r\n this.copyTo(bb, 0, begin, end);\r\n return bb;\r\n };\r\n\r\n /**\r\n * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset}\r\n * by the number of bytes copied if omitted.\r\n * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the\r\n * number of bytes copied if omitted.\r\n * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) {\r\n var relative,\r\n targetRelative;\r\n if (!this.noAssert) {\r\n if (!ByteBuffer.isByteBuffer(target))\r\n throw TypeError(\"Illegal target: Not a ByteBuffer\");\r\n }\r\n targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0;\r\n sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0;\r\n sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0;\r\n\r\n if (targetOffset < 0 || targetOffset > target.buffer.byteLength)\r\n throw RangeError(\"Illegal target range: 0 <= \"+targetOffset+\" <= \"+target.buffer.byteLength);\r\n if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength)\r\n throw RangeError(\"Illegal source range: 0 <= \"+sourceOffset+\" <= \"+this.buffer.byteLength);\r\n\r\n var len = sourceLimit - sourceOffset;\r\n if (len === 0)\r\n return target; // Nothing to copy\r\n\r\n target.ensureCapacity(targetOffset + len);\r\n\r\n target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset);\r\n\r\n if (relative) this.offset += len;\r\n if (targetRelative) target.offset += len;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the\r\n * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity,\r\n * the required capacity will be used instead.\r\n * @param {number} capacity Required capacity\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.ensureCapacity = function(capacity) {\r\n var current = this.buffer.byteLength;\r\n if (current < capacity)\r\n return this.resize((current *= 2) > capacity ? current : capacity);\r\n return this;\r\n };\r\n\r\n /**\r\n * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {number|string} value Byte value to fill with. If given as a string, the first character is used.\r\n * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted. defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes\r\n */\r\n ByteBufferPrototype.fill = function(value, begin, end) {\r\n var relative = typeof begin === 'undefined';\n if (relative) begin = this.offset;\n if (typeof value === 'string' && value.length > 0)\r\n value = value.charCodeAt(0);\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin >= end)\r\n return this; // Nothing to fill\r\n while (begin < end) this.view[begin++] = value;\r\n if (relative) this.offset = begin;\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and\r\n * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.flip = function() {\r\n this.limit = this.offset;\r\n this.offset = 0;\r\n return this;\r\n };\r\n /**\r\n * Marks an offset on this ByteBuffer to be used later.\r\n * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}.\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @see ByteBuffer#reset\r\n * @expose\r\n */\r\n ByteBufferPrototype.mark = function(offset) {\r\n offset = typeof offset === 'undefined' ? this.offset : offset;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n this.markedOffset = offset;\r\n return this;\r\n };\r\n /**\r\n * Sets the byte order.\r\n * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.order = function(littleEndian) {\r\n if (!this.noAssert) {\r\n if (typeof littleEndian !== 'boolean')\r\n throw TypeError(\"Illegal littleEndian: Not a boolean\");\r\n }\r\n this.littleEndian = !!littleEndian;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) little endian byte order.\r\n * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.LE = function(littleEndian) {\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) big endian byte order.\r\n * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.BE = function(bigEndian) {\r\n this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false;\r\n return this;\r\n };\r\n /**\r\n * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be\r\n * modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|`\r\n * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|`\r\n */\r\n ByteBufferPrototype.prepend = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var len = source.limit - source.offset;\r\n if (len <= 0) return this; // Nothing to prepend\r\n var diff = len - offset;\r\n if (diff > 0) { // Not enough space before offset, so resize + move\r\n var buffer = new ArrayBuffer(this.buffer.byteLength + diff);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(offset, this.buffer.byteLength), len);\r\n this.buffer = buffer;\r\n this.view = view;\r\n this.offset += diff;\r\n if (this.markedOffset >= 0) this.markedOffset += diff;\r\n this.limit += diff;\r\n offset += diff;\r\n } else {\r\n var arrayView = new Uint8Array(this.buffer);\r\n }\r\n this.view.set(source.view.subarray(source.offset, source.limit), offset - len);\r\n\r\n source.offset = source.limit;\r\n if (relative)\r\n this.offset -= len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#prepend\r\n */\r\n ByteBufferPrototype.prependTo = function(target, offset) {\r\n target.prepend(this, offset);\r\n return this;\r\n };\r\n /**\r\n * Prints debug information about this ByteBuffer's contents.\r\n * @param {function(string)=} out Output function to call, defaults to console.log\r\n * @expose\r\n */\r\n ByteBufferPrototype.printDebug = function(out) {\r\n if (typeof out !== 'function') out = console.log.bind(console);\r\n out(\r\n this.toString()+\"\\n\"+\r\n \"-------------------------------------------------------------------\\n\"+\r\n this.toDebug(/* columns */ true)\r\n );\r\n };\r\n\r\n /**\r\n * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}, so this returns `limit - offset`.\r\n * @returns {number} Remaining readable bytes. May be negative if `offset > limit`.\r\n * @expose\r\n */\r\n ByteBufferPrototype.remaining = function() {\r\n return this.limit - this.offset;\r\n };\r\n /**\r\n * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark}\r\n * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been\r\n * marked, sets `offset = 0`.\r\n * @returns {!ByteBuffer} this\r\n * @see ByteBuffer#mark\r\n * @expose\r\n */\r\n ByteBufferPrototype.reset = function() {\r\n if (this.markedOffset >= 0) {\r\n this.offset = this.markedOffset;\r\n this.markedOffset = -1;\r\n } else {\r\n this.offset = 0;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that\r\n * large or larger.\r\n * @param {number} capacity Capacity required\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `capacity` is not a number\r\n * @throws {RangeError} If `capacity < 0`\r\n * @expose\r\n */\r\n ByteBufferPrototype.resize = function(capacity) {\r\n if (!this.noAssert) {\r\n if (typeof capacity !== 'number' || capacity % 1 !== 0)\n throw TypeError(\"Illegal capacity: \"+capacity+\" (not an integer)\");\n capacity |= 0;\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity: 0 <= \"+capacity);\r\n }\r\n if (this.buffer.byteLength < capacity) {\r\n var buffer = new ArrayBuffer(capacity);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view);\r\n this.buffer = buffer;\r\n this.view = view;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Reverses this ByteBuffer's contents.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.reverse = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return this; // Nothing to reverse\r\n Array.prototype.reverse.call(this.view.subarray(begin, end));\r\n return this;\r\n };\r\n /**\r\n * Skips the next `length` bytes. This will just advance\r\n * @param {number} length Number of bytes to skip. May also be negative to move the offset back.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.skip = function(length) {\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n }\r\n var offset = this.offset + length;\r\n if (!this.noAssert) {\r\n if (offset < 0 || offset > this.buffer.byteLength)\r\n throw RangeError(\"Illegal length: 0 <= \"+this.offset+\" + \"+length+\" <= \"+this.buffer.byteLength);\r\n }\r\n this.offset = offset;\r\n return this;\r\n };\r\n\r\n /**\r\n * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.slice = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var bb = this.clone();\r\n bb.offset = begin;\r\n bb.limit = end;\r\n return bb;\r\n };\r\n /**\r\n * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if\r\n * possible. Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBuffer = function(forceCopy) {\r\n var offset = this.offset,\r\n limit = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: Not an integer\");\n offset >>>= 0;\n if (typeof limit !== 'number' || limit % 1 !== 0)\n throw TypeError(\"Illegal limit: Not an integer\");\n limit >>>= 0;\n if (offset < 0 || offset > limit || limit > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+offset+\" <= \"+limit+\" <= \"+this.buffer.byteLength);\n }\r\n // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is\r\n // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So:\r\n if (!forceCopy && offset === 0 && limit === this.buffer.byteLength)\r\n return this.buffer;\r\n if (offset === limit)\r\n return EMPTY_BUFFER;\r\n var buffer = new ArrayBuffer(limit - offset);\r\n new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0);\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}.\r\n * @function\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory.\r\n * Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer;\r\n\r\n /**\r\n * Converts the ByteBuffer's contents to a string.\r\n * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows\r\n * direct conversion to \"utf8\", \"hex\", \"base64\" and \"binary\" encoding. \"debug\" returns a hex representation with\r\n * highlighted offsets.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {string} String representation\r\n * @throws {Error} If `encoding` is invalid\r\n * @expose\r\n */\r\n ByteBufferPrototype.toString = function(encoding, begin, end) {\r\n if (typeof encoding === 'undefined')\r\n return \"ByteBufferAB(offset=\"+this.offset+\",markedOffset=\"+this.markedOffset+\",limit=\"+this.limit+\",capacity=\"+this.capacity()+\")\";\r\n if (typeof encoding === 'number')\r\n encoding = \"utf8\",\r\n begin = encoding,\r\n end = begin;\r\n switch (encoding) {\r\n case \"utf8\":\r\n return this.toUTF8(begin, end);\r\n case \"base64\":\r\n return this.toBase64(begin, end);\r\n case \"hex\":\r\n return this.toHex(begin, end);\r\n case \"binary\":\r\n return this.toBinary(begin, end);\r\n case \"debug\":\r\n return this.toDebug();\r\n case \"columns\":\r\n return this.toColumns();\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n };\r\n\r\n // lxiv-embeddable\r\n\r\n /**\r\n * lxiv-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/lxiv for details\r\n */\r\n var lxiv = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * lxiv namespace.\r\n * @type {!Object.}\r\n * @exports lxiv\r\n */\r\n var lxiv = {};\r\n\r\n /**\r\n * Character codes for output.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var aout = [\r\n 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,\r\n 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102,\r\n 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\r\n 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47\r\n ];\r\n\r\n /**\r\n * Character codes for input.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var ain = [];\r\n for (var i=0, k=aout.length; i>2)&0x3f]);\r\n t = (b&0x3)<<4;\r\n if ((b = src()) !== null) {\r\n t |= (b>>4)&0xf;\r\n dst(aout[(t|((b>>4)&0xf))&0x3f]);\r\n t = (b&0xf)<<2;\r\n if ((b = src()) !== null)\r\n dst(aout[(t|((b>>6)&0x3))&0x3f]),\r\n dst(aout[b&0x3f]);\r\n else\r\n dst(aout[t&0x3f]),\r\n dst(61);\r\n } else\r\n dst(aout[t&0x3f]),\r\n dst(61),\r\n dst(61);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes base64 char codes to bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n * @throws {Error} If a character code is invalid\r\n */\r\n lxiv.decode = function(src, dst) {\r\n var c, t1, t2;\r\n function fail(c) {\r\n throw Error(\"Illegal character code: \"+c);\r\n }\r\n while ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined') fail(c);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined') fail(c);\r\n dst((t1<<2)>>>0|(t2&0x30)>>4);\r\n if ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t1&0x3)<<6)>>>0|t2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Tests if a string is valid base64.\r\n * @param {string} str String to test\r\n * @returns {boolean} `true` if valid, otherwise `false`\r\n */\r\n lxiv.test = function(str) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);\r\n };\r\n\r\n return lxiv;\r\n }();\r\n\r\n // encodings/base64\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a base64 encoded string.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Base64 encoded string\r\n * @throws {RangeError} If `begin` or `end` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBase64 = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin = begin | 0; end = end | 0;\r\n if (begin < 0 || end > this.capacity || begin > end)\r\n throw RangeError(\"begin, end\");\r\n var sd; lxiv.encode(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBase64 = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var bb = new ByteBuffer(str.length/4*3, littleEndian),\r\n i = 0;\r\n lxiv.decode(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Encodes a binary string to base64 like `window.btoa` does.\r\n * @param {string} str Binary string\r\n * @returns {string} Base64 encoded string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa\r\n * @expose\r\n */\r\n ByteBuffer.btoa = function(str) {\r\n return ByteBuffer.fromBinary(str).toBase64();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to binary like `window.atob` does.\r\n * @param {string} b64 Base64 encoded string\r\n * @returns {string} Binary string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob\r\n * @expose\r\n */\r\n ByteBuffer.atob = function(b64) {\r\n return ByteBuffer.fromBase64(b64).toBinary();\r\n };\r\n\r\n // encodings/binary\r\n\r\n /**\r\n * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Binary encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBinary = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin |= 0; end |= 0;\r\n if (begin < 0 || end > this.capacity() || begin > end)\r\n throw RangeError(\"begin, end\");\r\n if (begin === end)\r\n return \"\";\r\n var chars = [],\r\n parts = [];\r\n while (begin < end) {\r\n chars.push(this.view[begin++]);\r\n if (chars.length >= 1024)\r\n parts.push(String.fromCharCode.apply(String, chars)),\r\n chars = [];\r\n }\r\n return parts.join('') + String.fromCharCode.apply(String, chars);\r\n };\r\n\r\n /**\r\n * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBinary = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var i = 0,\r\n k = str.length,\r\n charCode,\r\n bb = new ByteBuffer(k, littleEndian);\r\n while (i 0xff)\r\n throw RangeError(\"illegal char code: \"+charCode);\r\n bb.view[i++] = charCode;\r\n }\r\n bb.limit = k;\r\n return bb;\r\n };\r\n\r\n // encodings/debug\r\n\r\n /**\r\n * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are:\r\n * * `<` : offset,\r\n * * `'` : markedOffset,\r\n * * `>` : limit,\r\n * * `|` : offset and limit,\r\n * * `[` : offset and markedOffset,\r\n * * `]` : markedOffset and limit,\r\n * * `!` : offset, markedOffset and limit\r\n * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false`\r\n * @returns {string|!Array.} Debug string or array of lines if `asArray = true`\r\n * @expose\r\n * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3`\r\n * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4`\r\n * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1`\r\n * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1`\r\n */\r\n ByteBufferPrototype.toDebug = function(columns) {\r\n var i = -1,\r\n k = this.buffer.byteLength,\r\n b,\r\n hex = \"\",\r\n asc = \"\",\r\n out = \"\";\r\n while (i 32 && b < 127 ? String.fromCharCode(b) : '.';\r\n }\r\n ++i;\r\n if (columns) {\r\n if (i > 0 && i % 16 === 0 && i !== k) {\r\n while (hex.length < 3*16+3) hex += \" \";\r\n out += hex+asc+\"\\n\";\r\n hex = asc = \"\";\r\n }\r\n }\r\n if (i === this.offset && i === this.limit)\r\n hex += i === this.markedOffset ? \"!\" : \"|\";\r\n else if (i === this.offset)\r\n hex += i === this.markedOffset ? \"[\" : \"<\";\r\n else if (i === this.limit)\r\n hex += i === this.markedOffset ? \"]\" : \">\";\r\n else\r\n hex += i === this.markedOffset ? \"'\" : (columns || (i !== 0 && i !== k) ? \" \" : \"\");\r\n }\r\n if (columns && hex !== \" \") {\r\n while (hex.length < 3*16+3)\r\n hex += \" \";\r\n out += hex + asc + \"\\n\";\r\n }\r\n return columns ? out : hex;\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string with marked offsets to a ByteBuffer.\r\n * @param {string} str Debug string to decode (not be generated with `columns = true`)\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n * @see ByteBuffer#toDebug\r\n */\r\n ByteBuffer.fromDebug = function(str, littleEndian, noAssert) {\r\n var k = str.length,\r\n bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert);\r\n var i = 0, j = 0, ch, b,\r\n rs = false, // Require symbol next\r\n ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)?\r\n fail = false;\r\n while (i':\r\n if (!noAssert) {\r\n if (hl) {\r\n fail = true;\r\n break;\r\n }\r\n hl = true;\r\n }\r\n bb.limit = j;\r\n rs = false;\r\n break;\r\n case \"'\":\r\n if (!noAssert) {\r\n if (hm) {\r\n fail = true;\r\n break;\r\n }\r\n hm = true;\r\n }\r\n bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case ' ':\r\n rs = false;\r\n break;\r\n default:\r\n if (!noAssert) {\r\n if (rs) {\r\n fail = true;\r\n break;\r\n }\r\n }\r\n b = parseInt(ch+str.charAt(i++), 16);\r\n if (!noAssert) {\r\n if (isNaN(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Not a debug encoded string\");\r\n }\r\n bb.view[j++] = b;\r\n rs = true;\r\n }\r\n if (fail)\r\n throw TypeError(\"Illegal str: Invalid symbol at \"+i);\r\n }\r\n if (!noAssert) {\r\n if (!ho || !hl)\r\n throw TypeError(\"Illegal str: Missing offset or limit\");\r\n if (j>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var out = new Array(end - begin),\r\n b;\r\n while (begin < end) {\r\n b = this.view[begin++];\r\n if (b < 0x10)\r\n out.push(\"0\", b.toString(16));\r\n else out.push(b.toString(16));\r\n }\r\n return out.join('');\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromHex = function(str, littleEndian, noAssert) {\r\n if (!noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (str.length % 2 !== 0)\r\n throw TypeError(\"Illegal str: Length not a multiple of 2\");\r\n }\r\n var k = str.length,\r\n bb = new ByteBuffer((k / 2) | 0, littleEndian),\r\n b;\r\n for (var i=0, j=0; i 255)\r\n throw TypeError(\"Illegal str: Contains non-hex characters\");\r\n bb.view[j++] = b;\r\n }\r\n bb.limit = j;\r\n return bb;\r\n };\r\n\r\n // utfx-embeddable\r\n\r\n /**\r\n * utfx-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n // encodings/utf8\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded\r\n * string.\r\n * @returns {string} Hex encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toUTF8 = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var sd; try {\r\n utfx.decodeUTF8toUTF16(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n } catch (e) {\r\n if (begin !== end)\r\n throw RangeError(\"Illegal range: Truncated data, \"+begin+\" != \"+end);\r\n }\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes an UTF8 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) {\r\n if (!noAssert)\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert),\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n return ByteBuffer;\r\n});\r\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","/*global window, global*/\nvar util = require(\"util\")\nvar assert = require(\"assert\")\nfunction now() { return new Date().getTime() }\n\nvar slice = Array.prototype.slice\nvar console\nvar times = {}\n\nif (typeof global !== \"undefined\" && global.console) {\n console = global.console\n} else if (typeof window !== \"undefined\" && window.console) {\n console = window.console\n} else {\n console = {}\n}\n\nvar functions = [\n [log, \"log\"],\n [info, \"info\"],\n [warn, \"warn\"],\n [error, \"error\"],\n [time, \"time\"],\n [timeEnd, \"timeEnd\"],\n [trace, \"trace\"],\n [dir, \"dir\"],\n [consoleAssert, \"assert\"]\n]\n\nfor (var i = 0; i < functions.length; i++) {\n var tuple = functions[i]\n var f = tuple[0]\n var name = tuple[1]\n\n if (!console[name]) {\n console[name] = f\n }\n}\n\nmodule.exports = console\n\nfunction log() {}\n\nfunction info() {\n console.log.apply(console, arguments)\n}\n\nfunction warn() {\n console.log.apply(console, arguments)\n}\n\nfunction error() {\n console.warn.apply(console, arguments)\n}\n\nfunction time(label) {\n times[label] = now()\n}\n\nfunction timeEnd(label) {\n var time = times[label]\n if (!time) {\n throw new Error(\"No such label: \" + label)\n }\n\n delete times[label]\n var duration = now() - time\n console.log(label + \": \" + duration + \"ms\")\n}\n\nfunction trace() {\n var err = new Error()\n err.name = \"Trace\"\n err.message = util.format.apply(null, arguments)\n console.error(err.stack)\n}\n\nfunction dir(object) {\n console.log(util.inspect(object) + \"\\n\")\n}\n\nfunction consoleAssert(expression) {\n if (!expression) {\n var arr = slice.call(arguments, 1)\n assert.ok(false, util.format.apply(null, arr))\n }\n}\n","'use strict'\nvar inherits = require('inherits')\nvar md5 = require('./md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\n\nvar Base = require('cipher-base')\n\nfunction HashNoConstructor (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n this.buffers = []\n}\n\ninherits(HashNoConstructor, Base)\n\nHashNoConstructor.prototype._update = function (data) {\n this.buffers.push(data)\n}\n\nHashNoConstructor.prototype._final = function () {\n var buf = Buffer.concat(this.buffers)\n var r = this._hash(buf)\n this.buffers = null\n\n return r\n}\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new HashNoConstructor(md5)\n if (alg === 'rmd160' || alg === 'ripemd160') return new Hash(new RIPEMD160())\n\n return new Hash(sha(alg))\n}\n","'use strict'\nvar intSize = 4\nvar zeroBuffer = new Buffer(intSize)\nzeroBuffer.fill(0)\n\nvar charSize = 8\nvar hashSize = 16\n\nfunction toArray (buf) {\n if ((buf.length % intSize) !== 0) {\n var len = buf.length + (intSize - (buf.length % intSize))\n buf = Buffer.concat([buf, zeroBuffer], len)\n }\n\n var arr = new Array(buf.length >>> 2)\n for (var i = 0, j = 0; i < buf.length; i += intSize, j++) {\n arr[j] = buf.readInt32LE(i)\n }\n\n return arr\n}\n\nmodule.exports = function hash (buf, fn) {\n var arr = fn(toArray(buf), buf.length * charSize)\n buf = new Buffer(hashSize)\n for (var i = 0; i < arr.length; i++) {\n buf.writeInt32LE(arr[i], i << 2, true)\n }\n return buf\n}\n","'use strict'\n/*\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\nvar makeHash = require('./make-hash')\n\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length\n */\nfunction core_md5 (x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << ((len) % 32)\n x[(((len + 64) >>> 9) << 4) + 14] = len\n\n var a = 1732584193\n var b = -271733879\n var c = -1732584194\n var d = 271733878\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a\n var oldb = b\n var oldc = c\n var oldd = d\n\n a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936)\n d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586)\n c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819)\n b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330)\n a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897)\n d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426)\n c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341)\n b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983)\n a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416)\n d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417)\n c = md5_ff(c, d, a, b, x[i + 10], 17, -42063)\n b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162)\n a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682)\n d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101)\n c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290)\n b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329)\n\n a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510)\n d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632)\n c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713)\n b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302)\n a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691)\n d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083)\n c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335)\n b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848)\n a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438)\n d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690)\n c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961)\n b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501)\n a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467)\n d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784)\n c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473)\n b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734)\n\n a = md5_hh(a, b, c, d, x[i + 5], 4, -378558)\n d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463)\n c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562)\n b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556)\n a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060)\n d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353)\n c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632)\n b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640)\n a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174)\n d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222)\n c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979)\n b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189)\n a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487)\n d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835)\n c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520)\n b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651)\n\n a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844)\n d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415)\n c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905)\n b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055)\n a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571)\n d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606)\n c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523)\n b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799)\n a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359)\n d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744)\n c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380)\n b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649)\n a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070)\n d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379)\n c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259)\n b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551)\n\n a = safe_add(a, olda)\n b = safe_add(b, oldb)\n c = safe_add(c, oldc)\n d = safe_add(d, oldd)\n }\n\n return [a, b, c, d]\n}\n\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\nfunction md5_cmn (q, a, b, x, s, t) {\n return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)\n}\n\nfunction md5_ff (a, b, c, d, x, s, t) {\n return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)\n}\n\nfunction md5_gg (a, b, c, d, x, s, t) {\n return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)\n}\n\nfunction md5_hh (a, b, c, d, x, s, t) {\n return md5_cmn(b ^ c ^ d, a, b, x, s, t)\n}\n\nfunction md5_ii (a, b, c, d, x, s, t) {\n return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)\n}\n\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\nfunction safe_add (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF)\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16)\n return (msw << 16) | (lsw & 0xFFFF)\n}\n\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\nfunction bit_rol (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt))\n}\n\nmodule.exports = function md5 (buf) {\n return makeHash(buf, core_md5)\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n}({}));\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin \n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n","var assert = require('assert')\nvar BigInteger = require('bigi')\n\nvar Point = require('./point')\n\nfunction Curve (p, a, b, Gx, Gy, n, h) {\n this.p = p\n this.a = a\n this.b = b\n this.G = Point.fromAffine(this, Gx, Gy)\n this.n = n\n this.h = h\n\n this.infinity = new Point(this, null, null, BigInteger.ZERO)\n\n // result caching\n this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)\n\n // determine size of p in bytes\n this.pLength = Math.floor((this.p.bitLength() + 7) / 8)\n}\n\nCurve.prototype.pointFromX = function (isOdd, x) {\n var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)\n var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves\n\n var y = beta\n if (beta.isEven() ^ !isOdd) {\n y = this.p.subtract(y) // -y % p\n }\n\n return Point.fromAffine(this, x, y)\n}\n\nCurve.prototype.isInfinity = function (Q) {\n if (Q === this.infinity) return true\n\n return Q.z.signum() === 0 && Q.y.signum() !== 0\n}\n\nCurve.prototype.isOnCurve = function (Q) {\n if (this.isInfinity(Q)) return true\n\n var x = Q.affineX\n var y = Q.affineY\n var a = this.a\n var b = this.b\n var p = this.p\n\n // Check that xQ and yQ are integers in the interval [0, p - 1]\n if (x.signum() < 0 || x.compareTo(p) >= 0) return false\n if (y.signum() < 0 || y.compareTo(p) >= 0) return false\n\n // and check that y^2 = x^3 + ax + b (mod p)\n var lhs = y.square().mod(p)\n var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)\n return lhs.equals(rhs)\n}\n\n/**\n * Validate an elliptic curve point.\n *\n * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive\n */\nCurve.prototype.validate = function (Q) {\n // Check Q != O\n assert(!this.isInfinity(Q), 'Point is at infinity')\n assert(this.isOnCurve(Q), 'Point is not on the curve')\n\n // Check nQ = O (where Q is a scalar multiple of G)\n var nQ = Q.multiply(this.n)\n assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')\n\n return true\n}\n\nmodule.exports = Curve\n","var Point = require('./point')\nvar Curve = require('./curve')\n\nvar getCurveByName = require('./names')\n\nmodule.exports = {\n Curve: Curve,\n Point: Point,\n getCurveByName: getCurveByName\n}\n","var BigInteger = require('bigi')\n\nvar curves = require('./curves.json')\nvar Curve = require('./curve')\n\nfunction getCurveByName (name) {\n var curve = curves[name]\n if (!curve) return null\n\n var p = new BigInteger(curve.p, 16)\n var a = new BigInteger(curve.a, 16)\n var b = new BigInteger(curve.b, 16)\n var n = new BigInteger(curve.n, 16)\n var h = new BigInteger(curve.h, 16)\n var Gx = new BigInteger(curve.Gx, 16)\n var Gy = new BigInteger(curve.Gy, 16)\n\n return new Curve(p, a, b, Gx, Gy, n, h)\n}\n\nmodule.exports = getCurveByName\n","var assert = require('assert')\nvar BigInteger = require('bigi')\n\nvar THREE = BigInteger.valueOf(3)\n\nfunction Point (curve, x, y, z) {\n assert.notStrictEqual(z, undefined, 'Missing Z coordinate')\n\n this.curve = curve\n this.x = x\n this.y = y\n this.z = z\n this._zInv = null\n\n this.compressed = true\n}\n\nObject.defineProperty(Point.prototype, 'zInv', {\n get: function () {\n if (this._zInv === null) {\n this._zInv = this.z.modInverse(this.curve.p)\n }\n\n return this._zInv\n }\n})\n\nObject.defineProperty(Point.prototype, 'affineX', {\n get: function () {\n return this.x.multiply(this.zInv).mod(this.curve.p)\n }\n})\n\nObject.defineProperty(Point.prototype, 'affineY', {\n get: function () {\n return this.y.multiply(this.zInv).mod(this.curve.p)\n }\n})\n\nPoint.fromAffine = function (curve, x, y) {\n return new Point(curve, x, y, BigInteger.ONE)\n}\n\nPoint.prototype.equals = function (other) {\n if (other === this) return true\n if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)\n if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)\n\n // u = Y2 * Z1 - Y1 * Z2\n var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)\n\n if (u.signum() !== 0) return false\n\n // v = X2 * Z1 - X1 * Z2\n var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)\n\n return v.signum() === 0\n}\n\nPoint.prototype.negate = function () {\n var y = this.curve.p.subtract(this.y)\n\n return new Point(this.curve, this.x, y, this.z)\n}\n\nPoint.prototype.add = function (b) {\n if (this.curve.isInfinity(this)) return b\n if (this.curve.isInfinity(b)) return this\n\n var x1 = this.x\n var y1 = this.y\n var x2 = b.x\n var y2 = b.y\n\n // u = Y2 * Z1 - Y1 * Z2\n var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)\n // v = X2 * Z1 - X1 * Z2\n var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)\n\n if (v.signum() === 0) {\n if (u.signum() === 0) {\n return this.twice() // this == b, so double\n }\n\n return this.curve.infinity // this = -b, so infinity\n }\n\n var v2 = v.square()\n var v3 = v2.multiply(v)\n var x1v2 = x1.multiply(v2)\n var zu2 = u.square().multiply(this.z)\n\n // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)\n var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)\n // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3\n var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.p)\n // z3 = v^3 * z1 * z2\n var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)\n\n return new Point(this.curve, x3, y3, z3)\n}\n\nPoint.prototype.twice = function () {\n if (this.curve.isInfinity(this)) return this\n if (this.y.signum() === 0) return this.curve.infinity\n\n var x1 = this.x\n var y1 = this.y\n\n var y1z1 = y1.multiply(this.z).mod(this.curve.p)\n var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)\n var a = this.curve.a\n\n // w = 3 * x1^2 + a * z1^2\n var w = x1.square().multiply(THREE)\n\n if (a.signum() !== 0) {\n w = w.add(this.z.square().multiply(a))\n }\n\n w = w.mod(this.curve.p)\n // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)\n var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)\n // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3\n var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)\n // z3 = 8 * (y1 * z1)^3\n var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)\n\n return new Point(this.curve, x3, y3, z3)\n}\n\n// Simple NAF (Non-Adjacent Form) multiplication algorithm\n// TODO: modularize the multiplication algorithm\nPoint.prototype.multiply = function (k) {\n if (this.curve.isInfinity(this)) return this\n if (k.signum() === 0) return this.curve.infinity\n\n var e = k\n var h = e.multiply(THREE)\n\n var neg = this.negate()\n var R = this\n\n for (var i = h.bitLength() - 2; i > 0; --i) {\n var hBit = h.testBit(i)\n var eBit = e.testBit(i)\n\n R = R.twice()\n\n if (hBit !== eBit) {\n R = R.add(hBit ? this : neg)\n }\n }\n\n return R\n}\n\n// Compute this*j + x*k (simultaneous multiplication)\nPoint.prototype.multiplyTwo = function (j, x, k) {\n var i = Math.max(j.bitLength(), k.bitLength()) - 1\n var R = this.curve.infinity\n var both = this.add(x)\n\n while (i >= 0) {\n var jBit = j.testBit(i)\n var kBit = k.testBit(i)\n\n R = R.twice()\n\n if (jBit) {\n if (kBit) {\n R = R.add(both)\n } else {\n R = R.add(this)\n }\n } else if (kBit) {\n R = R.add(x)\n }\n --i\n }\n\n return R\n}\n\nPoint.prototype.getEncoded = function (compressed) {\n if (compressed == null) compressed = this.compressed\n if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'\n\n var x = this.affineX\n var y = this.affineY\n var byteLength = this.curve.pLength\n var buffer\n\n // 0x02/0x03 | X\n if (compressed) {\n buffer = new Buffer(1 + byteLength)\n buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)\n\n // 0x04 | X | Y\n } else {\n buffer = new Buffer(1 + byteLength + byteLength)\n buffer.writeUInt8(0x04, 0)\n\n y.toBuffer(byteLength).copy(buffer, 1 + byteLength)\n }\n\n x.toBuffer(byteLength).copy(buffer, 1)\n\n return buffer\n}\n\nPoint.decodeFrom = function (curve, buffer) {\n var type = buffer.readUInt8(0)\n var compressed = (type !== 4)\n\n var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)\n var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))\n\n var Q\n if (compressed) {\n assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')\n assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')\n\n var isOdd = (type === 0x03)\n Q = curve.pointFromX(isOdd, x)\n } else {\n assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')\n\n var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))\n Q = Point.fromAffine(curve, x, y)\n }\n\n Q.compressed = compressed\n return Q\n}\n\nPoint.prototype.toString = function () {\n if (this.curve.isInfinity(this)) return '(INFINITY)'\n\n return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'\n}\n\nmodule.exports = Point\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict'\n\nmodule.exports = function encodeUtf8 (input) {\n var result = []\n var size = input.length\n\n for (var index = 0; index < size; index++) {\n var point = input.charCodeAt(index)\n\n if (point >= 0xD800 && point <= 0xDBFF && size > index + 1) {\n var second = input.charCodeAt(index + 1)\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n point = (point - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n index += 1\n }\n }\n\n // US-ASCII\n if (point < 0x80) {\n result.push(point)\n continue\n }\n\n // 2-byte UTF-8\n if (point < 0x800) {\n result.push((point >> 6) | 192)\n result.push((point & 63) | 128)\n continue\n }\n\n // 3-byte UTF-8\n if (point < 0xD800 || (point >= 0xE000 && point < 0x10000)) {\n result.push((point >> 12) | 224)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // 4-byte UTF-8\n if (point >= 0x10000 && point <= 0x10FFFF) {\n result.push((point >> 18) | 240)\n result.push(((point >> 12) & 63) | 128)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // Invalid character\n result.push(0xEF, 0xBF, 0xBD)\n }\n\n return new Uint8Array(result).buffer\n}\n","\"use strict\";\n\nvar randomBytes = require('randombytes');\n\nvar ByteBuffer = require('bytebuffer');\n\nvar crypto = require('browserify-aes');\n\nvar assert = require('assert');\n\nvar PublicKey = require('./key_public');\n\nvar PrivateKey = require('./key_private');\n\nvar hash = require('./hash');\n\nvar Long = ByteBuffer.Long;\nmodule.exports = {\n encrypt: encrypt,\n decrypt: decrypt\n};\n/**\n Spec: http://localhost:3002/steem/@dantheman/how-to-encrypt-a-memo-when-transferring-steem\n\n @throws {Error|TypeError} - \"Invalid Key, ...\"\n\n @arg {PrivateKey} private_key - required and used for decryption\n @arg {PublicKey} public_key - required and used to calcualte the shared secret\n @arg {string} [nonce = uniqueNonce()] - assigned a random unique uint64\n\n @return {object}\n @property {string} nonce - random or unique uint64, provides entropy when re-using the same private/public keys.\n @property {Buffer} message - Plain text message\n @property {number} checksum - shared secret checksum\n*/\n\nfunction encrypt(private_key, public_key, message) {\n var nonce = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : uniqueNonce();\n return crypt(private_key, public_key, nonce, message);\n}\n/**\n Spec: http://localhost:3002/steem/@dantheman/how-to-encrypt-a-memo-when-transferring-steem\n\n @arg {PrivateKey} private_key - required and used for decryption\n @arg {PublicKey} public_key - required and used to calcualte the shared secret\n @arg {string} nonce - random or unique uint64, provides entropy when re-using the same private/public keys.\n @arg {Buffer} message - Encrypted or plain text message\n @arg {number} checksum - shared secret checksum\n\n @throws {Error|TypeError} - \"Invalid Key, ...\"\n\n @return {Buffer} - message\n*/\n\n\nfunction decrypt(private_key, public_key, nonce, message, checksum) {\n return crypt(private_key, public_key, nonce, message, checksum).message;\n}\n/**\n @arg {Buffer} message - Encrypted or plain text message (see checksum)\n @arg {number} checksum - shared secret checksum (null to encrypt, non-null to decrypt)\n @private\n*/\n\n\nfunction crypt(private_key, public_key, nonce, message, checksum) {\n private_key = PrivateKey(private_key);\n if (!private_key) throw new TypeError('private_key is required');\n public_key = PublicKey(public_key);\n if (!public_key) throw new TypeError('public_key is required');\n nonce = toLongObj(nonce);\n if (!nonce) throw new TypeError('nonce is required');\n\n if (!Buffer.isBuffer(message)) {\n if (typeof message !== 'string') throw new TypeError('message should be buffer or string');\n message = new Buffer(message, 'binary');\n }\n\n if (checksum && typeof checksum !== 'number') throw new TypeError('checksum should be a number');\n var S = private_key.getSharedSecret(public_key);\n var ebuf = new ByteBuffer(ByteBuffer.DEFAULT_CAPACITY, ByteBuffer.LITTLE_ENDIAN);\n ebuf.writeUint64(nonce);\n ebuf.append(S.toString('binary'), 'binary');\n ebuf = new Buffer(ebuf.copy(0, ebuf.offset).toBinary(), 'binary');\n var encryption_key = hash.sha512(ebuf); // D E B U G\n // console.log('crypt', {\n // priv_to_pub: private_key.toPublic().toString(),\n // pub: public_key.toString(),\n // nonce: nonce.toString(),\n // message: message.length,\n // checksum,\n // S: S.toString('hex'),\n // encryption_key: encryption_key.toString('hex'),\n // })\n\n var iv = encryption_key.slice(32, 48);\n var key = encryption_key.slice(0, 32); // check is first 64 bit of sha256 hash treated as uint64_t truncated to 32 bits.\n\n var check = hash.sha256(encryption_key);\n check = check.slice(0, 4);\n var cbuf = ByteBuffer.fromBinary(check.toString('binary'), ByteBuffer.DEFAULT_CAPACITY, ByteBuffer.LITTLE_ENDIAN);\n check = cbuf.readUint32();\n\n if (checksum) {\n if (check !== checksum) throw new Error('Invalid key');\n message = cryptoJsDecrypt(message, key, iv);\n } else {\n message = cryptoJsEncrypt(message, key, iv);\n }\n\n return {\n nonce: nonce,\n message: message,\n checksum: check\n };\n}\n/** This method does not use a checksum, the returned data must be validated some other way.\n\n @arg {string|Buffer} message - ciphertext binary format\n @arg {string|Buffer} key - 256bit\n @arg {string|Buffer} iv - 128bit\n\n @return {Buffer}\n*/\n\n\nfunction cryptoJsDecrypt(message, key, iv) {\n assert(message, \"Missing cipher text\");\n message = toBinaryBuffer(message);\n var decipher = crypto.createDecipheriv('aes-256-cbc', key, iv); // decipher.setAutoPadding(true)\n\n message = Buffer.concat([decipher.update(message), decipher[\"final\"]()]);\n return message;\n}\n/** This method does not use a checksum, the returned data must be validated some other way.\n @arg {string|Buffer} message - plaintext binary format\n @arg {string|Buffer} key - 256bit\n @arg {string|Buffer} iv - 128bit\n\n @return {Buffer}\n*/\n\n\nfunction cryptoJsEncrypt(message, key, iv) {\n assert(message, \"Missing plain text\");\n message = toBinaryBuffer(message);\n var cipher = crypto.createCipheriv('aes-256-cbc', key, iv); // cipher.setAutoPadding(true)\n\n message = Buffer.concat([cipher.update(message), cipher[\"final\"]()]);\n return message;\n}\n/** @return {string} unique 64 bit unsigned number string. Being time based, this is careful to never choose the same nonce twice. This value could be recorded in the blockchain for a long time.\n*/\n\n\nfunction uniqueNonce() {\n if (unique_nonce_entropy === null) {\n var b = new Uint8Array(randomBytes(2));\n unique_nonce_entropy = parseInt(b[0] << 8 | b[1], 10);\n }\n\n var _long = Long.fromNumber(Date.now());\n\n var entropy = ++unique_nonce_entropy % 0xFFFF; // console.log('uniqueNonce date\\t', ByteBuffer.allocate(8).writeUint64(long).toHex(0))\n // console.log('uniqueNonce entropy\\t', ByteBuffer.allocate(8).writeUint64(Long.fromNumber(entropy)).toHex(0))\n\n _long = _long.shiftLeft(16).or(Long.fromNumber(entropy)); // console.log('uniqueNonce final\\t', ByteBuffer.allocate(8).writeUint64(long).toHex(0))\n\n return _long.toString();\n}\n\nvar unique_nonce_entropy = null; // for(let i=1; i < 10; i++) key.uniqueNonce()\n\nvar toLongObj = function toLongObj(o) {\n return o ? Long.isLong(o) ? o : Long.fromString(o) : o;\n};\n\nvar toBinaryBuffer = function toBinaryBuffer(o) {\n return o ? Buffer.isBuffer(o) ? o : new Buffer(o, 'binary') : o;\n};","\"use strict\";\n\nvar Aes = require(\"./aes\");\n\nvar PrivateKey = require(\"./key_private\");\n\nvar PublicKey = require(\"./key_public\");\n\nvar Signature = require(\"./signature\");\n\nvar key_utils = require(\"./key_utils\");\n\nvar hash = require(\"./hash\");\n/**\n [Wallet Import Format](https://en.bitcoin.it/wiki/Wallet_import_format)\n @typedef {string} wif\n*/\n\n/**\n EOSKey..\n @typedef {string} pubkey\n*/\n\n/** @namespace */\n\n\nvar ecc = {\n /**\n Initialize by running some self-checking code. This should take a\n second to gather additional CPU entropy used during private key\n generation.\n Initialization happens once even if called multiple times.\n @return {Promise}\n */\n initialize: PrivateKey.initialize,\n\n /**\n Does not pause to gather CPU entropy.\n @return {Promise} test key\n */\n unsafeRandomKey: function unsafeRandomKey() {\n return PrivateKey.unsafeRandomKey().then(function (key) {\n return key.toString();\n });\n },\n\n /**\n @arg {number} [cpuEntropyBits = 0] gather additional entropy\n from a CPU mining algorithm. This will already happen once by\n default.\n @return {Promise}\n @example\n ecc.randomKey().then(privateKey => {\n console.log('Private Key:\\t', privateKey) // wif\n console.log('Public Key:\\t', ecc.privateToPublic(privateKey)) // EOSkey...\n })\n */\n randomKey: function randomKey(cpuEntropyBits) {\n return PrivateKey.randomKey(cpuEntropyBits).then(function (key) {\n return key.toString();\n });\n },\n\n /**\n @arg {string} seed - any length string. This is private. The same\n seed produces the same private key every time. At least 128 random\n bits should be used to produce a good private key.\n @return {wif}\n @example ecc.seedPrivate('secret') === wif\n */\n seedPrivate: function seedPrivate(seed) {\n return PrivateKey.fromSeed(seed).toString();\n },\n\n /**\n @arg {wif} wif\n @arg {string} [pubkey_prefix = 'EOS'] - public key prefix\n @return {pubkey}\n @example ecc.privateToPublic(wif) === pubkey\n */\n privateToPublic: function privateToPublic(wif) {\n var pubkey_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'EOS';\n return PrivateKey(wif).toPublic().toString(pubkey_prefix);\n },\n\n /**\n @arg {pubkey} pubkey - like EOSKey..\n @arg {string} [pubkey_prefix = 'EOS']\n @return {boolean} valid\n @example ecc.isValidPublic(pubkey) === true\n */\n isValidPublic: function isValidPublic(pubkey) {\n var pubkey_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'EOS';\n return PublicKey.isValid(pubkey, pubkey_prefix);\n },\n\n /**\n @arg {wif} wif\n @return {boolean} valid\n @example ecc.isValidPrivate(wif) === true\n */\n isValidPrivate: function isValidPrivate(wif) {\n return PrivateKey.isValid(wif);\n },\n\n /**\n Create a signature using data or a hash.\n @arg {string|Buffer} data\n @arg {wif|PrivateKey} privateKey\n @arg {String} [encoding = 'utf8'] - data encoding (if string)\n @return {string} string signature\n @example ecc.sign('I am alive', wif)\n */\n sign: function sign(data, privateKey) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'utf8';\n\n if (encoding === true) {\n throw new TypeError('API changed, use signHash(..) instead');\n } else {\n if (encoding === false) {\n console.log('Warning: ecc.sign hashData parameter was removed');\n }\n }\n\n return Signature.sign(data, privateKey, encoding).toString();\n },\n\n /**\n @arg {String|Buffer} dataSha256 - sha256 hash 32 byte buffer or string\n @arg {wif|PrivateKey} privateKey\n @arg {String} [encoding = 'hex'] - dataSha256 encoding (if string)\n @return {string} string signature\n */\n signHash: function signHash(dataSha256, privateKey) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'hex';\n return Signature.signHash(dataSha256, privateKey, encoding).toString();\n },\n\n /**\n Verify signed data.\n @arg {string|Buffer} signature - buffer or hex string\n @arg {string|Buffer} data\n @arg {pubkey|PublicKey} pubkey\n @arg {boolean} [hashData = true] - sha256 hash data before verify\n @return {boolean}\n @example ecc.verify(signature, 'I am alive', pubkey) === true\n */\n verify: function verify(signature, data, pubkey) {\n var encoding = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'utf8';\n\n if (encoding === true) {\n throw new TypeError('API changed, use verifyHash(..) instead');\n } else {\n if (encoding === false) {\n console.log('Warning: ecc.verify hashData parameter was removed');\n }\n }\n\n signature = Signature.from(signature);\n return signature.verify(data, pubkey, encoding);\n },\n verifyHash: function verifyHash(signature, dataSha256, pubkey) {\n var encoding = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'hex';\n signature = Signature.from(signature);\n return signature.verifyHash(dataSha256, pubkey, encoding);\n },\n\n /**\n Recover the public key used to create the signature.\n @arg {String|Buffer} signature (EOSbase58sig.., Hex, Buffer)\n @arg {String|Buffer} data - full data\n @arg {String} [encoding = 'utf8'] - data encoding (if data is a string)\n @return {pubkey}\n @example ecc.recover(signature, 'I am alive') === pubkey\n */\n recover: function recover(signature, data) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'utf8';\n\n if (encoding === true) {\n throw new TypeError('API changed, use recoverHash(signature, data) instead');\n } else {\n if (encoding === false) {\n console.log('Warning: ecc.recover hashData parameter was removed');\n }\n }\n\n signature = Signature.from(signature);\n return signature.recover(data, encoding).toString();\n },\n\n /**\n @arg {String|Buffer} signature (EOSbase58sig.., Hex, Buffer)\n @arg {String|Buffer} dataSha256 - sha256 hash 32 byte buffer or hex string\n @arg {String} [encoding = 'hex'] - dataSha256 encoding (if dataSha256 is a string)\n @return {PublicKey}\n */\n recoverHash: function recoverHash(signature, dataSha256) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'hex';\n signature = Signature.from(signature);\n return signature.recoverHash(dataSha256, encoding).toString();\n },\n\n /** @arg {string|Buffer} data - always binary, you may need Buffer.from(data, 'hex')\n @arg {string} [encoding = 'hex'] - result encoding 'hex', 'binary' or 'base64'\n @return {string|Buffer} - Buffer when encoding is null, or string\n @example ecc.sha256('hashme') === '02208b..'\n @example ecc.sha256(Buffer.from('02208b', 'hex')) === '29a23..'\n */\n sha256: function sha256(data) {\n var resultEncoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'hex';\n return hash.sha256(data, resultEncoding);\n }\n};\nmodule.exports = ecc;","\"use strict\";\n\nvar Aes = require(\"./aes\");\n\nvar PrivateKey = require(\"./key_private\");\n\nvar PublicKey = require(\"./key_public\");\n\nvar Signature = require(\"./signature\");\n\nvar key_utils = require(\"./key_utils\");\n\nmodule.exports = {\n Aes: Aes,\n PrivateKey: PrivateKey,\n PublicKey: PublicKey,\n Signature: Signature,\n key_utils: key_utils\n};","\"use strict\";\n\nvar assert = require('assert'); // from github.com/bitcoinjs/bitcoinjs-lib from github.com/cryptocoinjs/ecdsa\n\n\nvar crypto = require('./hash');\n\nvar enforceType = require('./enforce_types');\n\nvar BigInteger = require('bigi');\n\nvar ECSignature = require('./ecsignature'); // https://tools.ietf.org/html/rfc6979#section-3.2\n\n\nfunction deterministicGenerateK(curve, hash, d, checkSig, nonce) {\n enforceType('Buffer', hash);\n enforceType(BigInteger, d);\n\n if (nonce) {\n hash = crypto.sha256(Buffer.concat([hash, new Buffer(nonce)]));\n } // sanity check\n\n\n assert.equal(hash.length, 32, 'Hash must be 256 bit');\n var x = d.toBuffer(32);\n var k = new Buffer(32);\n var v = new Buffer(32); // Step B\n\n v.fill(1); // Step C\n\n k.fill(0); // Step D\n\n k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([0]), x, hash]), k); // Step E\n\n v = crypto.HmacSHA256(v, k); // Step F\n\n k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([1]), x, hash]), k); // Step G\n\n v = crypto.HmacSHA256(v, k); // Step H1/H2a, ignored as tlen === qlen (256 bit)\n // Step H2b\n\n v = crypto.HmacSHA256(v, k);\n var T = BigInteger.fromBuffer(v); // Step H3, repeat until T is within the interval [1, n - 1]\n\n while (T.signum() <= 0 || T.compareTo(curve.n) >= 0 || !checkSig(T)) {\n k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([0])]), k);\n v = crypto.HmacSHA256(v, k); // Step H1/H2a, again, ignored as tlen === qlen (256 bit)\n // Step H2b again\n\n v = crypto.HmacSHA256(v, k);\n T = BigInteger.fromBuffer(v);\n }\n\n return T;\n}\n\nfunction sign(curve, hash, d, nonce) {\n var e = BigInteger.fromBuffer(hash);\n var n = curve.n;\n var G = curve.G;\n var r, s;\n var k = deterministicGenerateK(curve, hash, d, function (k) {\n // find canonically valid signature\n var Q = G.multiply(k);\n if (curve.isInfinity(Q)) return false;\n r = Q.affineX.mod(n);\n if (r.signum() === 0) return false;\n s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n);\n if (s.signum() === 0) return false;\n return true;\n }, nonce);\n var N_OVER_TWO = n.shiftRight(1); // enforce low S values, see bip62: 'low s values in signatures'\n\n if (s.compareTo(N_OVER_TWO) > 0) {\n s = n.subtract(s);\n }\n\n return ECSignature(r, s);\n}\n\nfunction verifyRaw(curve, e, signature, Q) {\n var n = curve.n;\n var G = curve.G;\n var r = signature.r;\n var s = signature.s; // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]\n\n if (r.signum() <= 0 || r.compareTo(n) >= 0) return false;\n if (s.signum() <= 0 || s.compareTo(n) >= 0) return false; // c = s^-1 mod n\n\n var c = s.modInverse(n); // 1.4.4 Compute u1 = es^−1 mod n\n // u2 = rs^−1 mod n\n\n var u1 = e.multiply(c).mod(n);\n var u2 = r.multiply(c).mod(n); // 1.4.5 Compute R = (xR, yR) = u1G + u2Q\n\n var R = G.multiplyTwo(u1, Q, u2); // 1.4.5 (cont.) Enforce R is not at infinity\n\n if (curve.isInfinity(R)) return false; // 1.4.6 Convert the field element R.x to an integer\n\n var xR = R.affineX; // 1.4.7 Set v = xR mod n\n\n var v = xR.mod(n); // 1.4.8 If v = r, output \"valid\", and if v != r, output \"invalid\"\n\n return v.equals(r);\n}\n\nfunction verify(curve, hash, signature, Q) {\n // 1.4.2 H = Hash(M), already done by the user\n // 1.4.3 e = H\n var e = BigInteger.fromBuffer(hash);\n return verifyRaw(curve, e, signature, Q);\n}\n/**\n * Recover a public key from a signature.\n *\n * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, \"Public\n * Key Recovery Operation\".\n *\n * http://www.secg.org/download/aid-780/sec1-v2.pdf\n */\n\n\nfunction recoverPubKey(curve, e, signature, i) {\n assert.strictEqual(i & 3, i, 'Recovery param is more than two bits');\n var n = curve.n;\n var G = curve.G;\n var r = signature.r;\n var s = signature.s;\n assert(r.signum() > 0 && r.compareTo(n) < 0, 'Invalid r value');\n assert(s.signum() > 0 && s.compareTo(n) < 0, 'Invalid s value'); // A set LSB signifies that the y-coordinate is odd\n\n var isYOdd = i & 1; // The more significant bit specifies whether we should use the\n // first or second candidate key.\n\n var isSecondKey = i >> 1; // 1.1 Let x = r + jn\n\n var x = isSecondKey ? r.add(n) : r;\n var R = curve.pointFromX(isYOdd, x); // 1.4 Check that nR is at infinity\n\n var nR = R.multiply(n);\n assert(curve.isInfinity(nR), 'nR is not a valid curve point'); // Compute -e from e\n\n var eNeg = e.negate().mod(n); // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n\n var rInv = r.modInverse(n);\n var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv);\n curve.validate(Q);\n return Q;\n}\n/**\n * Calculate pubkey extraction parameter.\n *\n * When extracting a pubkey from a signature, we have to\n * distinguish four different cases. Rather than putting this\n * burden on the verifier, Bitcoin includes a 2-bit value with the\n * signature.\n *\n * This function simply tries all four cases and returns the value\n * that resulted in a successful pubkey recovery.\n */\n\n\nfunction calcPubKeyRecoveryParam(curve, e, signature, Q) {\n for (var i = 0; i < 4; i++) {\n var Qprime = recoverPubKey(curve, e, signature, i); // 1.6.2 Verify Q\n\n if (Qprime.equals(Q)) {\n return i;\n }\n }\n\n throw new Error('Unable to find valid recovery factor');\n}\n\nmodule.exports = {\n calcPubKeyRecoveryParam: calcPubKeyRecoveryParam,\n deterministicGenerateK: deterministicGenerateK,\n recoverPubKey: recoverPubKey,\n sign: sign,\n verify: verify,\n verifyRaw: verifyRaw\n};","\"use strict\";\n\nvar assert = require('assert'); // from https://github.com/bitcoinjs/bitcoinjs-lib\n\n\nvar enforceType = require('./enforce_types');\n\nvar BigInteger = require('bigi');\n\nfunction ECSignature(r, s) {\n enforceType(BigInteger, r);\n enforceType(BigInteger, s);\n\n function toCompact(i, compressed) {\n if (compressed) i += 4;\n i += 27;\n var buffer = new Buffer(65);\n buffer.writeUInt8(i, 0);\n r.toBuffer(32).copy(buffer, 1);\n s.toBuffer(32).copy(buffer, 33);\n return buffer;\n }\n\n function toDER() {\n var rBa = r.toDERInteger();\n var sBa = s.toDERInteger();\n var sequence = []; // INTEGER\n\n sequence.push(0x02, rBa.length);\n sequence = sequence.concat(rBa); // INTEGER\n\n sequence.push(0x02, sBa.length);\n sequence = sequence.concat(sBa); // SEQUENCE\n\n sequence.unshift(0x30, sequence.length);\n return new Buffer(sequence);\n }\n\n function toScriptSignature(hashType) {\n var hashTypeBuffer = new Buffer(1);\n hashTypeBuffer.writeUInt8(hashType, 0);\n return Buffer.concat([toDER(), hashTypeBuffer]);\n }\n\n return {\n r: r,\n s: s,\n toCompact: toCompact,\n toDER: toDER,\n toScriptSignature: toScriptSignature\n };\n} // Import operations\n\n\nECSignature.parseCompact = function (buffer) {\n assert.equal(buffer.length, 65, 'Invalid signature length');\n var i = buffer.readUInt8(0) - 27; // At most 3 bits\n\n assert.equal(i, i & 7, 'Invalid signature parameter');\n var compressed = !!(i & 4); // Recovery param only\n\n i = i & 3;\n var r = BigInteger.fromBuffer(buffer.slice(1, 33));\n var s = BigInteger.fromBuffer(buffer.slice(33));\n return {\n compressed: compressed,\n i: i,\n signature: ECSignature(r, s)\n };\n};\n\nECSignature.fromDER = function (buffer) {\n assert.equal(buffer.readUInt8(0), 0x30, 'Not a DER sequence');\n assert.equal(buffer.readUInt8(1), buffer.length - 2, 'Invalid sequence length');\n assert.equal(buffer.readUInt8(2), 0x02, 'Expected a DER integer');\n var rLen = buffer.readUInt8(3);\n assert(rLen > 0, 'R length is zero');\n var offset = 4 + rLen;\n assert.equal(buffer.readUInt8(offset), 0x02, 'Expected a DER integer (2)');\n var sLen = buffer.readUInt8(offset + 1);\n assert(sLen > 0, 'S length is zero');\n var rB = buffer.slice(4, offset);\n var sB = buffer.slice(offset + 2);\n offset += 2 + sLen;\n\n if (rLen > 1 && rB.readUInt8(0) === 0x00) {\n assert(rB.readUInt8(1) & 0x80, 'R value excessively padded');\n }\n\n if (sLen > 1 && sB.readUInt8(0) === 0x00) {\n assert(sB.readUInt8(1) & 0x80, 'S value excessively padded');\n }\n\n assert.equal(offset, buffer.length, 'Invalid DER encoding');\n var r = BigInteger.fromDERInteger(rB);\n var s = BigInteger.fromDERInteger(sB);\n assert(r.signum() >= 0, 'R value is negative');\n assert(s.signum() >= 0, 'S value is negative');\n return ECSignature(r, s);\n}; // FIXME: 0x00, 0x04, 0x80 are SIGHASH_* boundary constants, importing Transaction causes a circular dependency\n\n\nECSignature.parseScriptSignature = function (buffer) {\n var hashType = buffer.readUInt8(buffer.length - 1);\n var hashTypeMod = hashType & ~0x80;\n assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType');\n return {\n signature: ECSignature.fromDER(buffer.slice(0, -1)),\n hashType: hashType\n };\n};\n\nmodule.exports = ECSignature;","\"use strict\";\n\nmodule.exports = function enforce(type, value) {\n // Copied from https://github.com/bitcoinjs/bitcoinjs-lib\n switch (type) {\n case 'Array':\n {\n if (Array.isArray(value)) return;\n break;\n }\n\n case 'Boolean':\n {\n if (typeof value === 'boolean') return;\n break;\n }\n\n case 'Buffer':\n {\n if (Buffer.isBuffer(value)) return;\n break;\n }\n\n case 'Number':\n {\n if (typeof value === 'number') return;\n break;\n }\n\n case 'String':\n {\n if (typeof value === 'string') return;\n break;\n }\n\n default:\n {\n if (getName(value.constructor) === getName(type)) return;\n }\n }\n\n throw new TypeError('Expected ' + (getName(type) || type) + ', got ' + value);\n};\n\nfunction getName(fn) {\n // Why not fn.name: https://kangax.github.io/compat-table/es6/#function_name_property\n var match = fn.toString().match(/function (.*?)\\(/);\n return match ? match[1] : null;\n}","\"use strict\";\n\nvar createHash = require('create-hash');\n\nvar createHmac = require('create-hmac');\n/** @namespace hash */\n\n/** @arg {string|Buffer} data\n @arg {string} [resultEncoding = null] - 'hex', 'binary' or 'base64'\n @return {string|Buffer} - Buffer when resultEncoding is null, or string\n*/\n\n\nfunction sha1(data, resultEncoding) {\n return createHash('sha1').update(data).digest(resultEncoding);\n}\n/** @arg {string|Buffer} data\n @arg {string} [resultEncoding = null] - 'hex', 'binary' or 'base64'\n @return {string|Buffer} - Buffer when resultEncoding is null, or string\n*/\n\n\nfunction sha256(data, resultEncoding) {\n return createHash('sha256').update(data).digest(resultEncoding);\n}\n/** @arg {string|Buffer} data\n @arg {string} [resultEncoding = null] - 'hex', 'binary' or 'base64'\n @return {string|Buffer} - Buffer when resultEncoding is null, or string\n*/\n\n\nfunction sha512(data, resultEncoding) {\n return createHash('sha512').update(data).digest(resultEncoding);\n}\n\nfunction HmacSHA256(buffer, secret) {\n return createHmac('sha256', secret).update(buffer).digest();\n}\n\nfunction ripemd160(data) {\n try {\n return createHash('rmd160').update(data).digest();\n } catch (e) {\n return createHash('ripemd160').update(data).digest();\n }\n} // function hash160(buffer) {\n// return ripemd160(sha256(buffer))\n// }\n//\n// function hash256(buffer) {\n// return sha256(sha256(buffer))\n// }\n//\n// function HmacSHA512(buffer, secret) {\n// return crypto.createHmac('sha512', secret).update(buffer).digest()\n// }\n\n\nmodule.exports = {\n sha1: sha1,\n sha256: sha256,\n sha512: sha512,\n HmacSHA256: HmacSHA256,\n ripemd160: ripemd160 // hash160: hash160,\n // hash256: hash256,\n // HmacSHA512: HmacSHA512\n\n};","\"use strict\";\n\nvar commonApi = require('./api_common');\n\nvar objectApi = require('./api_object');\n\nvar ecc = Object.assign({}, commonApi, objectApi);\nmodule.exports = ecc;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar ecurve = require('ecurve');\n\nvar Point = ecurve.Point;\nvar secp256k1 = ecurve.getCurveByName('secp256k1');\n\nvar BigInteger = require('bigi');\n\nvar assert = require('assert');\n\nvar hash = require('./hash');\n\nvar PublicKey = require('./key_public');\n\nvar keyUtils = require('./key_utils');\n\nvar createHash = require('create-hash');\n\nvar promiseAsync = require('./promise-async');\n\nvar G = secp256k1.G;\nvar n = secp256k1.n;\nmodule.exports = PrivateKey;\n/**\n @typedef {string} wif - https://en.bitcoin.it/wiki/Wallet_import_format\n @typedef {string} pubkey - EOSKey..\n @typedef {ecurve.Point} Point\n*/\n\n/**\n @param {BigInteger} d\n*/\n\nfunction PrivateKey(d) {\n if (typeof d === 'string') {\n return PrivateKey.fromString(d);\n } else if (Buffer.isBuffer(d)) {\n return PrivateKey.fromBuffer(d);\n } else if ((0, _typeof2[\"default\"])(d) === 'object' && BigInteger.isBigInteger(d.d)) {\n return PrivateKey(d.d);\n }\n\n if (!BigInteger.isBigInteger(d)) {\n throw new TypeError('Invalid private key');\n }\n /** @return {string} private key like PVT_K1_base58privatekey.. */\n\n\n function toString() {\n // todo, use PVT_K1_\n // return 'PVT_K1_' + keyUtils.checkEncode(toBuffer(), 'K1')\n return toWif();\n }\n /**\n @return {wif}\n */\n\n\n function toWif() {\n var private_key = toBuffer(); // checksum includes the version\n\n private_key = Buffer.concat([new Buffer([0x80]), private_key]);\n return keyUtils.checkEncode(private_key, 'sha256x2');\n }\n\n var public_key;\n /**\n @return {Point}\n */\n\n function toPublic() {\n if (public_key) {\n // cache\n // S L O W in the browser\n return public_key;\n }\n\n var Q = secp256k1.G.multiply(d);\n return public_key = PublicKey.fromPoint(Q);\n }\n\n function toBuffer() {\n return d.toBuffer(32);\n }\n /**\n ECIES\n @arg {string|Object} pubkey wif, PublicKey object\n @return {Buffer} 64 byte shared secret\n */\n\n\n function getSharedSecret(public_key) {\n public_key = PublicKey(public_key);\n var KB = public_key.toUncompressed().toBuffer();\n var KBP = Point.fromAffine(secp256k1, BigInteger.fromBuffer(KB.slice(1, 33)), // x\n BigInteger.fromBuffer(KB.slice(33, 65)) // y\n );\n var r = toBuffer();\n var P = KBP.multiply(BigInteger.fromBuffer(r));\n var S = P.affineX.toBuffer({\n size: 32\n }); // SHA512 used in ECIES\n\n return hash.sha512(S);\n } // /** ECIES TODO unit test\n // @arg {string|Object} pubkey wif, PublicKey object\n // @return {Buffer} 64 byte shared secret\n // */\n // function getSharedSecret(public_key) {\n // public_key = PublicKey(public_key).toUncompressed()\n // var P = public_key.Q.multiply( d );\n // var S = P.affineX.toBuffer({size: 32});\n // // ECIES, adds an extra sha512\n // return hash.sha512(S);\n // }\n\n /**\n @arg {string} name - child key name.\n @return {PrivateKey}\n @example activePrivate = masterPrivate.getChildKey('owner').getChildKey('active')\n @example activePrivate.getChildKey('mycontract').getChildKey('myperm')\n */\n\n\n function getChildKey(name) {\n // console.error('WARNING: getChildKey untested against eosd'); // no eosd impl yet\n var index = createHash('sha256').update(toBuffer()).update(name).digest();\n return PrivateKey(index);\n }\n\n function toHex() {\n return toBuffer().toString('hex');\n }\n\n return {\n d: d,\n toWif: toWif,\n toString: toString,\n toPublic: toPublic,\n toBuffer: toBuffer,\n getSharedSecret: getSharedSecret,\n getChildKey: getChildKey\n };\n}\n/** @private */\n\n\nfunction parseKey(privateStr) {\n assert.equal((0, _typeof2[\"default\"])(privateStr), 'string', 'privateStr');\n var match = privateStr.match(/^PVT_([A-Za-z0-9]+)_([A-Za-z0-9]+)$/);\n\n if (match === null) {\n // legacy WIF - checksum includes the version\n var versionKey = keyUtils.checkDecode(privateStr, 'sha256x2');\n var version = versionKey.readUInt8(0);\n assert.equal(0x80, version, \"Expected version \".concat(0x80, \", instead got \", version));\n\n var _privateKey = PrivateKey.fromBuffer(versionKey.slice(1));\n\n var _keyType = 'K1';\n var format = 'WIF';\n return {\n privateKey: _privateKey,\n format: format,\n keyType: _keyType\n };\n }\n\n assert(match.length === 3, 'Expecting private key like: PVT_K1_base58privateKey..');\n\n var _match = (0, _slicedToArray2[\"default\"])(match, 3),\n keyType = _match[1],\n keyString = _match[2];\n\n assert.equal(keyType, 'K1', 'K1 private key expected');\n var privateKey = PrivateKey.fromBuffer(keyUtils.checkDecode(keyString, keyType));\n return {\n privateKey: privateKey,\n format: 'PVT',\n keyType: keyType\n };\n}\n\nPrivateKey.fromHex = function (hex) {\n return PrivateKey.fromBuffer(new Buffer(hex, 'hex'));\n};\n\nPrivateKey.fromBuffer = function (buf) {\n if (!Buffer.isBuffer(buf)) {\n throw new Error(\"Expecting parameter to be a Buffer type\");\n }\n\n if (buf.length === 33 && buf[32] === 1) {\n // remove compression flag\n buf = buf.slice(0, -1);\n }\n\n if (32 !== buf.length) {\n throw new Error(\"Expecting 32 bytes, instead got \".concat(buf.length));\n }\n\n return PrivateKey(BigInteger.fromBuffer(buf));\n};\n/**\n @arg {string} seed - any length string. This is private, the same seed\n produces the same private key every time.\n\n @return {PrivateKey}\n*/\n\n\nPrivateKey.fromSeed = function (seed) {\n // generate_private_key\n if (!(typeof seed === 'string')) {\n throw new Error('seed must be of type string');\n }\n\n return PrivateKey.fromBuffer(hash.sha256(seed));\n};\n/**\n @arg {wif} key\n @return {boolean} true if key is in the Wallet Import Format\n*/\n\n\nPrivateKey.isWif = function (text) {\n try {\n assert(parseKey(text).format === 'WIF');\n return true;\n } catch (e) {\n return false;\n }\n};\n/**\n @arg {wif|Buffer|PrivateKey} key\n @return {boolean} true if key is convertable to a private key object.\n*/\n\n\nPrivateKey.isValid = function (key) {\n try {\n PrivateKey(key);\n return true;\n } catch (e) {\n return false;\n }\n};\n/** @deprecated */\n\n\nPrivateKey.fromWif = function (str) {\n console.log('PrivateKey.fromWif is deprecated, please use PrivateKey.fromString');\n return PrivateKey.fromString(str);\n};\n/**\n @throws {AssertError|Error} parsing key\n @arg {string} privateStr Eosio or Wallet Import Format (wif) -- a secret\n*/\n\n\nPrivateKey.fromString = function (privateStr) {\n return parseKey(privateStr).privateKey;\n};\n/**\n Create a new random private key.\n\n Call initialize() first to run some self-checking code and gather some CPU\n entropy.\n\n @arg {number} [cpuEntropyBits = 0] - additional CPU entropy, this already\n happens once so it should not be needed again.\n\n @return {Promise} - random private key\n*/\n\n\nPrivateKey.randomKey = function () {\n var cpuEntropyBits = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return PrivateKey.initialize().then(function () {\n return PrivateKey.fromBuffer(keyUtils.random32ByteBuffer({\n cpuEntropyBits: cpuEntropyBits\n }));\n });\n};\n/**\n @return {Promise} for testing, does not require initialize().\n*/\n\n\nPrivateKey.unsafeRandomKey = function () {\n return Promise.resolve(PrivateKey.fromBuffer(keyUtils.random32ByteBuffer({\n safe: false\n })));\n};\n\nvar initialized = false,\n unitTested = false;\n/**\n Run self-checking code and gather CPU entropy.\n\n Initialization happens once even if called multiple times.\n\n @return {Promise}\n*/\n\nfunction initialize() {\n if (initialized) {\n return;\n }\n\n unitTest();\n keyUtils.addEntropy.apply(keyUtils, (0, _toConsumableArray2[\"default\"])(keyUtils.cpuEntropy()));\n assert(keyUtils.entropyCount() >= 128, 'insufficient entropy');\n initialized = true;\n}\n\nPrivateKey.initialize = promiseAsync(initialize);\n/**\n Unit test basic private and public key functionality.\n\n @throws {AssertError}\n*/\n\nfunction unitTest() {\n var pvt = PrivateKey(hash.sha256(''));\n var pvtError = 'key comparison test failed on a known private key';\n assert.equal(pvt.toWif(), '5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss', pvtError);\n assert.equal(pvt.toString(), '5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss', pvtError); // assert.equal(pvt.toString(), 'PVT_K1_2jH3nnhxhR3zPUcsKaWWZC9ZmZAnKm3GAnFD1xynGJE1Znuvjd', pvtError)\n\n var pub = pvt.toPublic();\n var pubError = 'pubkey string comparison test failed on a known public key';\n assert.equal(pub.toString(), 'EOS859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2HqhToVM', pubError); // assert.equal(pub.toString(), 'PUB_K1_859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2Ht7beeX', pubError)\n // assert.equal(pub.toStringLegacy(), 'EOS859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2HqhToVM', pubError)\n\n doesNotThrow(function () {\n return PrivateKey.fromString(pvt.toWif());\n }, 'converting known wif from string');\n doesNotThrow(function () {\n return PrivateKey.fromString(pvt.toString());\n }, 'converting known pvt from string');\n doesNotThrow(function () {\n return PublicKey.fromString(pub.toString());\n }, 'converting known public key from string'); // doesNotThrow(() => PublicKey.fromString(pub.toStringLegacy()), 'converting known public key from string')\n\n unitTested = true;\n}\n/** @private */\n\n\nvar doesNotThrow = function doesNotThrow(cb, msg) {\n try {\n cb();\n } catch (error) {\n error.message = \"\".concat(msg, \" ==> \").concat(error.message);\n throw error;\n }\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar assert = require('assert');\n\nvar ecurve = require('ecurve');\n\nvar BigInteger = require('bigi');\n\nvar secp256k1 = ecurve.getCurveByName('secp256k1');\n\nvar hash = require('./hash');\n\nvar keyUtils = require('./key_utils');\n\nvar G = secp256k1.G;\nvar n = secp256k1.n;\nmodule.exports = PublicKey;\n/**\n @param {string|Buffer|PublicKey|ecurve.Point} public key\n @param {string} [pubkey_prefix = 'EOS']\n*/\n\nfunction PublicKey(Q) {\n var pubkey_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'EOS';\n\n if (typeof Q === 'string') {\n var publicKey = PublicKey.fromString(Q, pubkey_prefix);\n assert(publicKey != null, 'Invalid public key');\n return publicKey;\n } else if (Buffer.isBuffer(Q)) {\n return PublicKey.fromBuffer(Q);\n } else if ((0, _typeof2[\"default\"])(Q) === 'object' && Q.Q) {\n return PublicKey(Q.Q);\n }\n\n assert.equal((0, _typeof2[\"default\"])(Q), 'object', 'Invalid public key');\n assert.equal((0, _typeof2[\"default\"])(Q.compressed), 'boolean', 'Invalid public key');\n\n function toBuffer() {\n var compressed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Q.compressed;\n return Q.getEncoded(compressed);\n }\n\n var pubdata; // cache\n // /**\n // @todo secp224r1\n // @return {string} PUB_K1_base58pubkey..\n // */\n // function toString() {\n // if(pubdata) {\n // return pubdata\n // }\n // pubdata = `PUB_K1_` + keyUtils.checkEncode(toBuffer(), 'K1')\n // return pubdata;\n // }\n\n /** @todo rename to toStringLegacy\n * @arg {string} [pubkey_prefix = 'EOS'] - public key prefix\n */\n\n function toString() {\n var pubkey_prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'EOS';\n return pubkey_prefix + keyUtils.checkEncode(toBuffer());\n }\n\n function toUncompressed() {\n var buf = Q.getEncoded(false);\n var point = ecurve.Point.decodeFrom(secp256k1, buf);\n return PublicKey.fromPoint(point);\n }\n /** @deprecated */\n\n\n function child(offset) {\n console.error('Deprecated warning: PublicKey.child');\n assert(Buffer.isBuffer(offset), \"Buffer required: offset\");\n assert.equal(offset.length, 32, \"offset length\");\n offset = Buffer.concat([toBuffer(), offset]);\n offset = hash.sha256(offset);\n var c = BigInteger.fromBuffer(offset);\n if (c.compareTo(n) >= 0) throw new Error(\"Child offset went out of bounds, try again\");\n var cG = G.multiply(c);\n var Qprime = Q.add(cG);\n if (secp256k1.isInfinity(Qprime)) throw new Error(\"Child offset derived to an invalid key, try again\");\n return PublicKey.fromPoint(Qprime);\n }\n\n function toHex() {\n return toBuffer().toString('hex');\n }\n\n return {\n Q: Q,\n toString: toString,\n // toStringLegacy,\n toUncompressed: toUncompressed,\n toBuffer: toBuffer,\n child: child,\n toHex: toHex\n };\n}\n/**\n @param {string|Buffer|PublicKey|ecurve.Point} pubkey - public key\n @param {string} [pubkey_prefix = 'EOS']\n*/\n\n\nPublicKey.isValid = function (pubkey) {\n var pubkey_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'EOS';\n\n try {\n PublicKey(pubkey, pubkey_prefix);\n return true;\n } catch (e) {\n return false;\n }\n};\n\nPublicKey.fromBinary = function (bin) {\n return PublicKey.fromBuffer(new Buffer(bin, 'binary'));\n};\n\nPublicKey.fromBuffer = function (buffer) {\n return PublicKey(ecurve.Point.decodeFrom(secp256k1, buffer));\n};\n\nPublicKey.fromPoint = function (point) {\n return PublicKey(point);\n};\n/**\n @arg {string} public_key - like PUB_K1_base58pubkey..\n @arg {string} [pubkey_prefix = 'EOS'] - public key prefix\n @return PublicKey or `null` (invalid)\n*/\n\n\nPublicKey.fromString = function (public_key) {\n var pubkey_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'EOS';\n\n try {\n return PublicKey.fromStringOrThrow(public_key, pubkey_prefix);\n } catch (e) {\n return null;\n }\n};\n/**\n @arg {string} public_key - like PUB_K1_base58pubkey..\n @arg {string} [pubkey_prefix = 'EOS'] - public key prefix\n\n @throws {Error} if public key is invalid\n\n @return PublicKey\n*/\n\n\nPublicKey.fromStringOrThrow = function (public_key) {\n var pubkey_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'EOS';\n assert.equal((0, _typeof2[\"default\"])(public_key), 'string', 'public_key');\n var match = public_key.match(/^PUB_([A-Za-z0-9]+)_([A-Za-z0-9]+)$/);\n\n if (match === null) {\n // legacy\n var prefix_match = new RegExp(\"^\" + pubkey_prefix);\n\n if (prefix_match.test(public_key)) {\n public_key = public_key.substring(pubkey_prefix.length);\n }\n\n return PublicKey.fromBuffer(keyUtils.checkDecode(public_key));\n }\n\n assert(match.length === 3, 'Expecting public key like: PUB_K1_base58pubkey..');\n\n var _match = (0, _slicedToArray2[\"default\"])(match, 3),\n keyType = _match[1],\n keyString = _match[2];\n\n assert.equal(keyType, 'K1', 'K1 private key expected');\n return PublicKey.fromBuffer(keyUtils.checkDecode(keyString, keyType));\n};\n\nPublicKey.fromHex = function (hex) {\n return PublicKey.fromBuffer(new Buffer(hex, 'hex'));\n};\n\nPublicKey.fromStringHex = function (hex) {\n return PublicKey.fromString(new Buffer(hex, 'hex'));\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar base58 = require('bs58');\n\nvar assert = require('assert');\n\nvar randomBytes = require('randombytes');\n\nvar hash = require('./hash');\n\nmodule.exports = {\n random32ByteBuffer: random32ByteBuffer,\n addEntropy: addEntropy,\n cpuEntropy: cpuEntropy,\n entropyCount: function entropyCount() {\n return _entropyCount;\n },\n checkDecode: checkDecode,\n checkEncode: checkEncode\n};\nvar entropyPos = 0,\n _entropyCount = 0;\nvar externalEntropyArray = randomBytes(101);\n/**\n Additional forms of entropy are used. A week random number generator can run out of entropy. This should ensure even the worst random number implementation will be reasonably safe.\n\n @arg {number} [cpuEntropyBits = 0] generate entropy on the fly. This is\n not required, entropy can be added in advanced via addEntropy or initialize().\n\n @arg {boolean} [safe = true] false for testing, otherwise this will be\n true to ensure initialize() was called.\n\n @return a random buffer obtained from the secure random number generator. Additional entropy is used.\n*/\n\nfunction random32ByteBuffer() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$cpuEntropyBits = _ref.cpuEntropyBits,\n cpuEntropyBits = _ref$cpuEntropyBits === void 0 ? 0 : _ref$cpuEntropyBits,\n _ref$safe = _ref.safe,\n safe = _ref$safe === void 0 ? true : _ref$safe;\n\n assert.equal((0, _typeof2[\"default\"])(cpuEntropyBits), 'number', 'cpuEntropyBits');\n assert.equal((0, _typeof2[\"default\"])(safe), 'boolean', 'boolean');\n\n if (safe) {\n assert(_entropyCount >= 128, 'Call initialize() to add entropy');\n } // if(entropyCount > 0) {\n // console.log(`Additional private key entropy: ${entropyCount} events`)\n // }\n\n\n var hash_array = [];\n hash_array.push(randomBytes(32));\n hash_array.push(Buffer.from(cpuEntropy(cpuEntropyBits)));\n hash_array.push(externalEntropyArray);\n hash_array.push(browserEntropy());\n return hash.sha256(Buffer.concat(hash_array));\n}\n/**\n Adds entropy. This may be called many times while the amount of data saved\n is accumulatively reduced to 101 integers. Data is retained in RAM for the\n life of this module.\n\n @example React \n componentDidMount() {\n this.refs.MyComponent.addEventListener(\"mousemove\", this.onEntropyEvent, {capture: false, passive: true})\n }\n componentWillUnmount() {\n this.refs.MyComponent.removeEventListener(\"mousemove\", this.onEntropyEvent);\n }\n onEntropyEvent = (e) => {\n if(e.type === 'mousemove')\n key_utils.addEntropy(e.pageX, e.pageY, e.screenX, e.screenY)\n else\n console.log('onEntropyEvent Unknown', e.type, e)\n }\n \n*/\n\n\nfunction addEntropy() {\n assert.equal(externalEntropyArray.length, 101, 'externalEntropyArray');\n\n for (var _len = arguments.length, ints = new Array(_len), _key = 0; _key < _len; _key++) {\n ints[_key] = arguments[_key];\n }\n\n _entropyCount += ints.length;\n\n for (var _i = 0, _ints = ints; _i < _ints.length; _i++) {\n var i = _ints[_i];\n var pos = entropyPos++ % 101;\n var i2 = externalEntropyArray[pos] += i;\n if (i2 > 9007199254740991) externalEntropyArray[pos] = 0;\n }\n}\n/**\n This runs in just under 1 second and ensures a minimum of cpuEntropyBits\n bits of entropy are gathered.\n\n Based on more-entropy. @see https://github.com/keybase/more-entropy/blob/master/src/generator.iced\n\n @arg {number} [cpuEntropyBits = 128]\n @return {array} counts gathered by measuring variations in the CPU speed during floating point operations.\n*/\n\n\nfunction cpuEntropy() {\n var cpuEntropyBits = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 128;\n var collected = [];\n var lastCount = null;\n var lowEntropySamples = 0;\n\n while (collected.length < cpuEntropyBits) {\n var count = floatingPointCount();\n\n if (lastCount != null) {\n var delta = count - lastCount;\n\n if (Math.abs(delta) < 1) {\n lowEntropySamples++;\n continue;\n } // how many bits of entropy were in this sample\n\n\n var bits = Math.floor(log2(Math.abs(delta)) + 1);\n\n if (bits < 4) {\n if (bits < 2) {\n lowEntropySamples++;\n }\n\n continue;\n }\n\n collected.push(delta);\n }\n\n lastCount = count;\n }\n\n if (lowEntropySamples > 10) {\n var pct = Number(lowEntropySamples / cpuEntropyBits * 100).toFixed(2); // Is this algorithm getting inefficient?\n\n console.warn(\"WARN: \".concat(pct, \"% low CPU entropy re-sampled\"));\n }\n\n return collected;\n}\n/**\n @private\n Count while performing floating point operations during a fixed time\n (7 ms for example). Using a fixed time makes this algorithm\n predictable in runtime.\n*/\n\n\nfunction floatingPointCount() {\n var workMinMs = 7;\n var d = Date.now();\n var i = 0,\n x = 0;\n\n while (Date.now() < d + workMinMs + 1) {\n x = Math.sin(Math.sqrt(Math.log(++i + x)));\n }\n\n return i;\n}\n\nvar log2 = function log2(x) {\n return Math.log(x) / Math.LN2;\n};\n/**\n @private\n Attempt to gather and hash information from the browser's window, history, and supported mime types. For non-browser environments this simply includes secure random data. In any event, the information is re-hashed in a loop for 25 milliseconds seconds.\n\n @return {Buffer} 32 bytes\n*/\n\n\nfunction browserEntropy() {\n var entropyStr = Array(randomBytes(101)).join();\n\n try {\n entropyStr += new Date().toString() + \" \" + window.screen.height + \" \" + window.screen.width + \" \" + window.screen.colorDepth + \" \" + \" \" + window.screen.availHeight + \" \" + window.screen.availWidth + \" \" + window.screen.pixelDepth + navigator.language + \" \" + window.location + \" \" + window.history.length;\n\n for (var i = 0, mimeType; i < navigator.mimeTypes.length; i++) {\n mimeType = navigator.mimeTypes[i];\n entropyStr += mimeType.description + \" \" + mimeType.type + \" \" + mimeType.suffixes + \" \";\n }\n } catch (error) {\n //nodejs:ReferenceError: window is not defined\n entropyStr += hash.sha256(new Date().toString());\n }\n\n var b = new Buffer(entropyStr);\n entropyStr += b.toString('binary') + \" \" + new Date().toString();\n var entropy = entropyStr;\n var start_t = Date.now();\n\n while (Date.now() - start_t < 25) {\n entropy = hash.sha256(entropy);\n }\n\n return entropy;\n}\n/**\n @arg {Buffer} keyBuffer data\n @arg {string} keyType = sha256x2, K1, etc\n @return {string} checksum encoded base58 string\n*/\n\n\nfunction checkEncode(keyBuffer) {\n var keyType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n assert(Buffer.isBuffer(keyBuffer), 'expecting keyBuffer');\n\n if (keyType === 'sha256x2') {\n // legacy\n var checksum = hash.sha256(hash.sha256(keyBuffer)).slice(0, 4);\n return base58.encode(Buffer.concat([keyBuffer, checksum]));\n } else {\n var check = [keyBuffer];\n\n if (keyType) {\n check.push(Buffer.from(keyType));\n }\n\n var _checksum = hash.ripemd160(Buffer.concat(check)).slice(0, 4);\n\n return base58.encode(Buffer.concat([keyBuffer, _checksum]));\n }\n}\n/**\n @arg {Buffer} keyString data\n @arg {string} keyType = sha256x2, K1, etc\n @return {string} checksum encoded base58 string\n*/\n\n\nfunction checkDecode(keyString) {\n var keyType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n assert(keyString != null, 'private key expected');\n var buffer = new Buffer(base58.decode(keyString));\n var checksum = buffer.slice(-4);\n var key = buffer.slice(0, -4);\n var newCheck;\n\n if (keyType === 'sha256x2') {\n // legacy\n newCheck = hash.sha256(hash.sha256(key)).slice(0, 4); // WIF (legacy)\n } else {\n var check = [key];\n\n if (keyType) {\n check.push(Buffer.from(keyType));\n }\n\n newCheck = hash.ripemd160(Buffer.concat(check)).slice(0, 4); //PVT\n }\n\n if (checksum.toString('hex') !== newCheck.toString('hex')) {\n throw new Error('Invalid checksum, ' + \"\".concat(checksum.toString('hex'), \" != \").concat(newCheck.toString('hex')));\n }\n\n return key;\n}","\"use strict\";\n\n/**\n Convert a synchronous function into a asynchronous one (via setTimeout)\n wrapping it in a promise. This does not expect the function to have a\n callback paramter.\n\n @arg {function} func - non-callback function\n\n @example promiseAsync(myfunction)\n*/\nmodule.exports = function (func) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return new Promise(function (resolve, reject) {\n setTimeout(function () {\n try {\n resolve(func.apply(void 0, args));\n } catch (err) {\n reject(err);\n }\n });\n });\n };\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar ecdsa = require('./ecdsa');\n\nvar hash = require('./hash');\n\nvar curve = require('ecurve').getCurveByName('secp256k1');\n\nvar assert = require('assert');\n\nvar BigInteger = require('bigi');\n\nvar keyUtils = require('./key_utils');\n\nvar PublicKey = require('./key_public');\n\nvar PrivateKey = require('./key_private');\n\nmodule.exports = Signature;\n\nfunction Signature(r, s, i) {\n assert.equal(r != null, true, 'Missing parameter');\n assert.equal(s != null, true, 'Missing parameter');\n assert.equal(i != null, true, 'Missing parameter');\n /**\n Verify signed data.\n @arg {String|Buffer} data - full data\n @arg {pubkey|PublicKey} pubkey - EOSKey..\n @arg {String} [encoding = 'utf8'] - data encoding (if data is a string)\n @return {boolean}\n */\n\n function verify(data, pubkey) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'utf8';\n\n if (typeof data === 'string') {\n data = Buffer.from(data, encoding);\n }\n\n assert(Buffer.isBuffer(data), 'data is a required String or Buffer');\n data = hash.sha256(data);\n return verifyHash(data, pubkey);\n }\n /**\n Verify a buffer of exactally 32 bytes in size (sha256(text))\n @arg {String|Buffer} dataSha256 - 32 byte buffer or string\n @arg {String|PublicKey} pubkey - EOSKey..\n @arg {String} [encoding = 'hex'] - dataSha256 encoding (if string)\n @return {boolean}\n */\n\n\n function verifyHash(dataSha256, pubkey) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'hex';\n\n if (typeof dataSha256 === 'string') {\n dataSha256 = Buffer.from(dataSha256, encoding);\n }\n\n if (dataSha256.length !== 32 || !Buffer.isBuffer(dataSha256)) throw new Error(\"dataSha256: 32 bytes required\");\n var publicKey = PublicKey(pubkey);\n assert(publicKey, 'pubkey required');\n return ecdsa.verify(curve, dataSha256, {\n r: r,\n s: s\n }, publicKey.Q);\n }\n\n ;\n /** @deprecated\n Verify hex data by converting to a buffer then hashing.\n @return {boolean}\n */\n\n function verifyHex(hex, pubkey) {\n console.log('Deprecated: use verify(data, pubkey, \"hex\")');\n var buf = Buffer.from(hex, 'hex');\n return verify(buf, pubkey);\n }\n\n ;\n /**\n Recover the public key used to create this signature using full data.\n @arg {String|Buffer} data - full data\n @arg {String} [encoding = 'utf8'] - data encoding (if string)\n @return {PublicKey}\n */\n\n function recover(data) {\n var encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'utf8';\n\n if (typeof data === 'string') {\n data = Buffer.from(data, encoding);\n }\n\n assert(Buffer.isBuffer(data), 'data is a required String or Buffer');\n data = hash.sha256(data);\n return recoverHash(data);\n }\n\n ;\n /**\n @arg {String|Buffer} dataSha256 - sha256 hash 32 byte buffer or hex string\n @arg {String} [encoding = 'hex'] - dataSha256 encoding (if string)\n @return {PublicKey}\n */\n\n function recoverHash(dataSha256) {\n var encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'hex';\n\n if (typeof dataSha256 === 'string') {\n dataSha256 = Buffer.from(dataSha256, encoding);\n }\n\n if (dataSha256.length !== 32 || !Buffer.isBuffer(dataSha256)) {\n throw new Error(\"dataSha256: 32 byte String or buffer requred\");\n }\n\n var e = BigInteger.fromBuffer(dataSha256);\n var i2 = i;\n i2 -= 27;\n i2 = i2 & 3;\n var Q = ecdsa.recoverPubKey(curve, e, {\n r: r,\n s: s,\n i: i\n }, i2);\n return PublicKey.fromPoint(Q);\n }\n\n ;\n\n function toBuffer() {\n var buf;\n buf = new Buffer(65);\n buf.writeUInt8(i, 0);\n r.toBuffer(32).copy(buf, 1);\n s.toBuffer(32).copy(buf, 33);\n return buf;\n }\n\n ;\n\n function toHex() {\n return toBuffer().toString(\"hex\");\n }\n\n ;\n var signatureCache;\n\n function toString() {\n if (signatureCache) {\n return signatureCache;\n }\n\n signatureCache = 'SIG_K1_' + keyUtils.checkEncode(toBuffer(), 'K1');\n return signatureCache;\n }\n\n return {\n r: r,\n s: s,\n i: i,\n toBuffer: toBuffer,\n verify: verify,\n verifyHash: verifyHash,\n verifyHex: verifyHex,\n // deprecated\n recover: recover,\n recoverHash: recoverHash,\n toHex: toHex,\n toString: toString,\n\n /** @deprecated use verify (same arguments and return) */\n verifyBuffer: function verifyBuffer() {\n console.log('Deprecated: use signature.verify instead (same arguments)');\n return verify.apply(void 0, arguments);\n },\n\n /** @deprecated use recover (same arguments and return) */\n recoverPublicKey: function recoverPublicKey() {\n console.log('Deprecated: use signature.recover instead (same arguments)');\n return recover.apply(void 0, arguments);\n },\n\n /** @deprecated use recoverHash (same arguments and return) */\n recoverPublicKeyFromBuffer: function recoverPublicKeyFromBuffer() {\n console.log('Deprecated: use signature.recoverHash instead (same arguments)');\n return recoverHash.apply(void 0, arguments);\n }\n };\n}\n/**\n Hash and sign arbitrary data.\n\n @arg {string|Buffer} data - full data\n @arg {wif|PrivateKey} privateKey\n @arg {String} [encoding = 'utf8'] - data encoding (if string)\n\n @return {Signature}\n*/\n\n\nSignature.sign = function (data, privateKey) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'utf8';\n\n if (typeof data === 'string') {\n data = Buffer.from(data, encoding);\n }\n\n assert(Buffer.isBuffer(data), 'data is a required String or Buffer');\n data = hash.sha256(data);\n return Signature.signHash(data, privateKey);\n};\n/**\n Sign a buffer of exactally 32 bytes in size (sha256(text))\n\n @arg {string|Buffer} dataSha256 - 32 byte buffer or string\n @arg {wif|PrivateKey} privateKey\n @arg {String} [encoding = 'hex'] - dataSha256 encoding (if string)\n\n @return {Signature}\n*/\n\n\nSignature.signHash = function (dataSha256, privateKey) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'hex';\n\n if (typeof dataSha256 === 'string') {\n dataSha256 = Buffer.from(dataSha256, encoding);\n }\n\n if (dataSha256.length !== 32 || !Buffer.isBuffer(dataSha256)) throw new Error(\"dataSha256: 32 byte buffer requred\");\n privateKey = PrivateKey(privateKey);\n assert(privateKey, 'privateKey required');\n var der, e, ecsignature, i, lenR, lenS, nonce;\n i = null;\n nonce = 0;\n e = BigInteger.fromBuffer(dataSha256);\n\n while (true) {\n ecsignature = ecdsa.sign(curve, dataSha256, privateKey.d, nonce++);\n der = ecsignature.toDER();\n lenR = der[3];\n lenS = der[5 + lenR];\n\n if (lenR === 32 && lenS === 32) {\n i = ecdsa.calcPubKeyRecoveryParam(curve, e, ecsignature, privateKey.toPublic().Q);\n i += 4; // compressed\n\n i += 27; // compact // 24 or 27 :( forcing odd-y 2nd key candidate)\n\n break;\n }\n\n if (nonce % 10 === 0) {\n console.log(\"WARN: \" + nonce + \" attempts to find canonical signature\");\n }\n }\n\n return Signature(ecsignature.r, ecsignature.s, i);\n};\n\nSignature.fromBuffer = function (buf) {\n var i, r, s;\n assert(Buffer.isBuffer(buf), 'Buffer is required');\n assert.equal(buf.length, 65, 'Invalid signature length');\n i = buf.readUInt8(0);\n assert.equal(i - 27, i - 27 & 7, 'Invalid signature parameter');\n r = BigInteger.fromBuffer(buf.slice(1, 33));\n s = BigInteger.fromBuffer(buf.slice(33));\n return Signature(r, s, i);\n};\n\nSignature.fromHex = function (hex) {\n return Signature.fromBuffer(Buffer.from(hex, \"hex\"));\n};\n/**\n @arg {string} signature - like SIG_K1_base58signature..\n @return {Signature} or `null` (invalid)\n*/\n\n\nSignature.fromString = function (signature) {\n try {\n return Signature.fromStringOrThrow(signature);\n } catch (e) {\n return null;\n }\n};\n/**\n @arg {string} signature - like SIG_K1_base58signature..\n @throws {Error} invalid\n @return {Signature}\n*/\n\n\nSignature.fromStringOrThrow = function (signature) {\n assert.equal((0, _typeof2[\"default\"])(signature), 'string', 'signature');\n var match = signature.match(/^SIG_([A-Za-z0-9]+)_([A-Za-z0-9]+)$/);\n assert(match != null && match.length === 3, 'Expecting signature like: SIG_K1_base58signature..');\n\n var _match = (0, _slicedToArray2[\"default\"])(match, 3),\n keyType = _match[1],\n keyString = _match[2];\n\n assert.equal(keyType, 'K1', 'K1 signature expected');\n return Signature.fromBuffer(keyUtils.checkDecode(keyString, keyType));\n};\n/**\n @arg {String|Signature} o - hex string\n @return {Signature}\n*/\n\n\nSignature.from = function (o) {\n var signature = o ? o.r && o.s && o.i ? o : typeof o === 'string' && o.length === 130 ? Signature.fromHex(o) : typeof o === 'string' && o.length !== 130 ? Signature.fromStringOrThrow(o) : Buffer.isBuffer(o) ? Signature.fromBuffer(o) : null : o;\n /*null or undefined*/\n\n if (!signature) {\n throw new TypeError('signature should be a hex string or buffer');\n }\n\n return signature;\n};","\"use strict\";\n/**\n * @module Javascript-API\n * copyright defined in eosjs/LICENSE.txt\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=eosjs-api-interfaces.js.map","\"use strict\";\n/**\n * @module API\n */\n// copyright defined in eosjs/LICENSE.txt\n/* eslint-disable max-classes-per-file */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Api = void 0;\nvar pako_1 = require(\"pako\");\nvar ser = require(\"./eosjs-serialize\");\nvar abiAbi = require('../src/abi.abi.json');\nvar transactionAbi = require('../src/transaction.abi.json');\nvar Api = /** @class */ (function () {\n /**\n * @param args\n * * `rpc`: Issues RPC calls\n * * `authorityProvider`: Get public keys needed to meet authorities in a transaction\n * * `abiProvider`: Supplies ABIs in raw form (binary)\n * * `signatureProvider`: Signs transactions\n * * `chainId`: Identifies chain\n * * `textEncoder`: `TextEncoder` instance to use. Pass in `null` if running in a browser\n * * `textDecoder`: `TextDecoder` instance to use. Pass in `null` if running in a browser\n */\n function Api(args) {\n /** Holds information needed to serialize contract actions */\n this.contracts = new Map();\n /** Fetched abis */\n this.cachedAbis = new Map();\n this.rpc = args.rpc;\n this.authorityProvider = args.authorityProvider || args.rpc;\n this.abiProvider = args.abiProvider || args.rpc;\n this.signatureProvider = args.signatureProvider;\n this.chainId = args.chainId;\n this.textEncoder = args.textEncoder;\n this.textDecoder = args.textDecoder;\n this.abiTypes = ser.getTypesFromAbi(ser.createInitialTypes(), abiAbi);\n this.transactionTypes = ser.getTypesFromAbi(ser.createInitialTypes(), transactionAbi);\n }\n /** Decodes an abi as Uint8Array into json. */\n Api.prototype.rawAbiToJson = function (rawAbi) {\n var buffer = new ser.SerialBuffer({\n textEncoder: this.textEncoder,\n textDecoder: this.textDecoder,\n array: rawAbi,\n });\n if (!ser.supportedAbiVersion(buffer.getString())) {\n throw new Error('Unsupported abi version');\n }\n buffer.restartRead();\n return this.abiTypes.get('abi_def').deserialize(buffer);\n };\n /** Encodes a json abi as Uint8Array. */\n Api.prototype.jsonToRawAbi = function (jsonAbi) {\n var buffer = new ser.SerialBuffer({\n textEncoder: this.textEncoder,\n textDecoder: this.textDecoder,\n });\n this.abiTypes.get('abi_def').serialize(buffer, jsonAbi);\n if (!ser.supportedAbiVersion(buffer.getString())) {\n throw new Error('Unsupported abi version');\n }\n return buffer.asUint8Array();\n };\n /** Get abi in both binary and structured forms. Fetch when needed. */\n Api.prototype.getCachedAbi = function (accountName, reload) {\n if (reload === void 0) { reload = false; }\n return __awaiter(this, void 0, void 0, function () {\n var cachedAbi, rawAbi, abi, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!reload && this.cachedAbis.get(accountName)) {\n return [2 /*return*/, this.cachedAbis.get(accountName)];\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.abiProvider.getRawAbi(accountName)];\n case 2:\n rawAbi = (_a.sent()).abi;\n abi = this.rawAbiToJson(rawAbi);\n cachedAbi = { rawAbi: rawAbi, abi: abi };\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n e_1.message = \"fetching abi for \" + accountName + \": \" + e_1.message;\n throw e_1;\n case 4:\n if (!cachedAbi) {\n throw new Error(\"Missing abi for \" + accountName);\n }\n this.cachedAbis.set(accountName, cachedAbi);\n return [2 /*return*/, cachedAbi];\n }\n });\n });\n };\n /** Get abi in structured form. Fetch when needed. */\n Api.prototype.getAbi = function (accountName, reload) {\n if (reload === void 0) { reload = false; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getCachedAbi(accountName, reload)];\n case 1: return [2 /*return*/, (_a.sent()).abi];\n }\n });\n });\n };\n /** Get abis needed by a transaction */\n Api.prototype.getTransactionAbis = function (transaction, reload) {\n if (reload === void 0) { reload = false; }\n return __awaiter(this, void 0, void 0, function () {\n var actions, accounts, uniqueAccounts, actionPromises;\n var _this = this;\n return __generator(this, function (_a) {\n actions = (transaction.context_free_actions || []).concat(transaction.actions);\n accounts = actions.map(function (action) { return action.account; });\n uniqueAccounts = new Set(accounts);\n actionPromises = __spreadArray([], __read(uniqueAccounts)).map(function (account) { return __awaiter(_this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = {\n accountName: account\n };\n return [4 /*yield*/, this.getCachedAbi(account, reload)];\n case 1: return [2 /*return*/, (_a.abi = (_b.sent()).rawAbi,\n _a)];\n }\n });\n }); });\n return [2 /*return*/, Promise.all(actionPromises)];\n });\n });\n };\n /** Get data needed to serialize actions in a contract */\n Api.prototype.getContract = function (accountName, reload) {\n if (reload === void 0) { reload = false; }\n return __awaiter(this, void 0, void 0, function () {\n var abi, types, actions, _a, _b, _c, name_1, type, result;\n var e_2, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (!reload && this.contracts.get(accountName)) {\n return [2 /*return*/, this.contracts.get(accountName)];\n }\n return [4 /*yield*/, this.getAbi(accountName, reload)];\n case 1:\n abi = _e.sent();\n types = ser.getTypesFromAbi(ser.createInitialTypes(), abi);\n actions = new Map();\n try {\n for (_a = __values(abi.actions), _b = _a.next(); !_b.done; _b = _a.next()) {\n _c = _b.value, name_1 = _c.name, type = _c.type;\n actions.set(name_1, ser.getType(types, type));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_b && !_b.done && (_d = _a.return)) _d.call(_a);\n }\n finally { if (e_2) throw e_2.error; }\n }\n result = { types: types, actions: actions };\n this.contracts.set(accountName, result);\n return [2 /*return*/, result];\n }\n });\n });\n };\n /** Convert `value` to binary form. `type` must be a built-in abi type or in `transaction.abi.json`. */\n Api.prototype.serialize = function (buffer, type, value) {\n this.transactionTypes.get(type).serialize(buffer, value);\n };\n /** Convert data in `buffer` to structured form. `type` must be a built-in abi type or in `transaction.abi.json`. */\n Api.prototype.deserialize = function (buffer, type) {\n return this.transactionTypes.get(type).deserialize(buffer);\n };\n /** Convert a transaction to binary */\n Api.prototype.serializeTransaction = function (transaction) {\n var buffer = new ser.SerialBuffer({ textEncoder: this.textEncoder, textDecoder: this.textDecoder });\n this.serialize(buffer, 'transaction', __assign({ max_net_usage_words: 0, max_cpu_usage_ms: 0, delay_sec: 0, context_free_actions: [], actions: [], transaction_extensions: [] }, transaction));\n return buffer.asUint8Array();\n };\n /** Serialize context-free data */\n Api.prototype.serializeContextFreeData = function (contextFreeData) {\n var e_3, _a;\n if (!contextFreeData || !contextFreeData.length) {\n return null;\n }\n var buffer = new ser.SerialBuffer({ textEncoder: this.textEncoder, textDecoder: this.textDecoder });\n buffer.pushVaruint32(contextFreeData.length);\n try {\n for (var contextFreeData_1 = __values(contextFreeData), contextFreeData_1_1 = contextFreeData_1.next(); !contextFreeData_1_1.done; contextFreeData_1_1 = contextFreeData_1.next()) {\n var data = contextFreeData_1_1.value;\n buffer.pushBytes(data);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (contextFreeData_1_1 && !contextFreeData_1_1.done && (_a = contextFreeData_1.return)) _a.call(contextFreeData_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return buffer.asUint8Array();\n };\n /** Convert a transaction from binary. Leaves actions in hex. */\n Api.prototype.deserializeTransaction = function (transaction) {\n var buffer = new ser.SerialBuffer({ textEncoder: this.textEncoder, textDecoder: this.textDecoder });\n buffer.pushArray(transaction);\n return this.deserialize(buffer, 'transaction');\n };\n /** Convert actions to hex */\n Api.prototype.serializeActions = function (actions) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(actions.map(function (_a) {\n var account = _a.account, name = _a.name, authorization = _a.authorization, data = _a.data;\n return __awaiter(_this, void 0, void 0, function () {\n var contract;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.getContract(account)];\n case 1:\n contract = _b.sent();\n return [2 /*return*/, ser.serializeAction(contract, account, name, authorization, data, this.textEncoder, this.textDecoder)];\n }\n });\n });\n }))];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Convert actions from hex */\n Api.prototype.deserializeActions = function (actions) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(actions.map(function (_a) {\n var account = _a.account, name = _a.name, authorization = _a.authorization, data = _a.data;\n return __awaiter(_this, void 0, void 0, function () {\n var contract;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.getContract(account)];\n case 1:\n contract = _b.sent();\n return [2 /*return*/, ser.deserializeAction(contract, account, name, authorization, data, this.textEncoder, this.textDecoder)];\n }\n });\n });\n }))];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Convert a transaction from binary. Also deserializes actions. */\n Api.prototype.deserializeTransactionWithActions = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var deserializedTransaction, deserializedCFActions, deserializedActions;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (typeof transaction === 'string') {\n transaction = ser.hexToUint8Array(transaction);\n }\n deserializedTransaction = this.deserializeTransaction(transaction);\n return [4 /*yield*/, this.deserializeActions(deserializedTransaction.context_free_actions)];\n case 1:\n deserializedCFActions = _a.sent();\n return [4 /*yield*/, this.deserializeActions(deserializedTransaction.actions)];\n case 2:\n deserializedActions = _a.sent();\n return [2 /*return*/, __assign(__assign({}, deserializedTransaction), { context_free_actions: deserializedCFActions, actions: deserializedActions })];\n }\n });\n });\n };\n /** Deflate a serialized object */\n Api.prototype.deflateSerializedArray = function (serializedArray) {\n return pako_1.deflate(serializedArray, { level: 9 });\n };\n /** Inflate a compressed serialized object */\n Api.prototype.inflateSerializedArray = function (compressedSerializedArray) {\n return pako_1.inflate(compressedSerializedArray);\n };\n /**\n * Create and optionally broadcast a transaction.\n *\n * Named Parameters:\n * `broadcast`: broadcast this transaction?\n * `sign`: sign this transaction?\n * `compression`: compress this transaction?\n *\n * If both `blocksBehind` and `expireSeconds` are present,\n * then fetch the block which is `blocksBehind` behind head block,\n * use it as a reference for TAPoS, and expire the transaction `expireSeconds` after that block's time.\n *\n * If both `useLastIrreversible` and `expireSeconds` are present,\n * then fetch the last irreversible block, use it as a reference for TAPoS,\n * and expire the transaction `expireSeconds` after that block's time.\n *\n * @returns node response if `broadcast`, `{signatures, serializedTransaction}` if `!broadcast`\n */\n Api.prototype.transact = function (transaction, _a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.broadcast, broadcast = _c === void 0 ? true : _c, _d = _b.sign, sign = _d === void 0 ? true : _d, compression = _b.compression, blocksBehind = _b.blocksBehind, useLastIrreversible = _b.useLastIrreversible, expireSeconds = _b.expireSeconds;\n return __awaiter(this, void 0, void 0, function () {\n var info, abis, _e, serializedTransaction, serializedContextFreeData, pushTransactionArgs, availableKeys, requiredKeys;\n var _f;\n return __generator(this, function (_g) {\n switch (_g.label) {\n case 0:\n if (typeof blocksBehind === 'number' && useLastIrreversible) {\n throw new Error('Use either blocksBehind or useLastIrreversible');\n }\n if (!!this.chainId) return [3 /*break*/, 2];\n return [4 /*yield*/, this.rpc.get_info()];\n case 1:\n info = _g.sent();\n this.chainId = info.chain_id;\n _g.label = 2;\n case 2:\n if (!((typeof blocksBehind === 'number' || useLastIrreversible) && expireSeconds)) return [3 /*break*/, 4];\n return [4 /*yield*/, this.generateTapos(info, transaction, blocksBehind, useLastIrreversible, expireSeconds)];\n case 3:\n transaction = _g.sent();\n _g.label = 4;\n case 4:\n if (!this.hasRequiredTaposFields(transaction)) {\n throw new Error('Required configuration or TAPOS fields are not present');\n }\n return [4 /*yield*/, this.getTransactionAbis(transaction)];\n case 5:\n abis = _g.sent();\n _e = [__assign({}, transaction)];\n _f = {};\n return [4 /*yield*/, this.serializeActions(transaction.context_free_actions || [])];\n case 6:\n _f.context_free_actions = _g.sent();\n return [4 /*yield*/, this.serializeActions(transaction.actions)];\n case 7:\n transaction = __assign.apply(void 0, _e.concat([(_f.actions = _g.sent(), _f)]));\n serializedTransaction = this.serializeTransaction(transaction);\n serializedContextFreeData = this.serializeContextFreeData(transaction.context_free_data);\n pushTransactionArgs = {\n serializedTransaction: serializedTransaction, serializedContextFreeData: serializedContextFreeData,\n signatures: []\n };\n if (!sign) return [3 /*break*/, 11];\n return [4 /*yield*/, this.signatureProvider.getAvailableKeys()];\n case 8:\n availableKeys = _g.sent();\n return [4 /*yield*/, this.authorityProvider.getRequiredKeys({ transaction: transaction, availableKeys: availableKeys })];\n case 9:\n requiredKeys = _g.sent();\n return [4 /*yield*/, this.signatureProvider.sign({\n chainId: this.chainId,\n requiredKeys: requiredKeys,\n serializedTransaction: serializedTransaction,\n serializedContextFreeData: serializedContextFreeData,\n abis: abis,\n })];\n case 10:\n pushTransactionArgs = _g.sent();\n _g.label = 11;\n case 11:\n if (broadcast) {\n if (compression) {\n return [2 /*return*/, this.pushCompressedSignedTransaction(pushTransactionArgs)];\n }\n return [2 /*return*/, this.pushSignedTransaction(pushTransactionArgs)];\n }\n return [2 /*return*/, pushTransactionArgs];\n }\n });\n });\n };\n /** Broadcast a signed transaction */\n Api.prototype.pushSignedTransaction = function (_a) {\n var signatures = _a.signatures, serializedTransaction = _a.serializedTransaction, serializedContextFreeData = _a.serializedContextFreeData;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n return [2 /*return*/, this.rpc.push_transaction({\n signatures: signatures,\n serializedTransaction: serializedTransaction,\n serializedContextFreeData: serializedContextFreeData\n })];\n });\n });\n };\n Api.prototype.pushCompressedSignedTransaction = function (_a) {\n var signatures = _a.signatures, serializedTransaction = _a.serializedTransaction, serializedContextFreeData = _a.serializedContextFreeData;\n return __awaiter(this, void 0, void 0, function () {\n var compressedSerializedTransaction, compressedSerializedContextFreeData;\n return __generator(this, function (_b) {\n compressedSerializedTransaction = this.deflateSerializedArray(serializedTransaction);\n compressedSerializedContextFreeData = this.deflateSerializedArray(serializedContextFreeData || new Uint8Array(0));\n return [2 /*return*/, this.rpc.push_transaction({\n signatures: signatures,\n compression: 1,\n serializedTransaction: compressedSerializedTransaction,\n serializedContextFreeData: compressedSerializedContextFreeData\n })];\n });\n });\n };\n Api.prototype.generateTapos = function (info, transaction, blocksBehind, useLastIrreversible, expireSeconds) {\n return __awaiter(this, void 0, void 0, function () {\n var taposBlockNumber, refBlock, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!!info) return [3 /*break*/, 2];\n return [4 /*yield*/, this.rpc.get_info()];\n case 1:\n info = _b.sent();\n _b.label = 2;\n case 2:\n taposBlockNumber = useLastIrreversible\n ? info.last_irreversible_block_num : info.head_block_num - blocksBehind;\n if (!(taposBlockNumber <= info.last_irreversible_block_num)) return [3 /*break*/, 4];\n return [4 /*yield*/, this.rpc.get_block(taposBlockNumber)];\n case 3:\n _a = _b.sent();\n return [3 /*break*/, 6];\n case 4: return [4 /*yield*/, this.tryGetBlockHeaderState(taposBlockNumber)];\n case 5:\n _a = _b.sent();\n _b.label = 6;\n case 6:\n refBlock = _a;\n return [2 /*return*/, __assign(__assign({}, ser.transactionHeader(refBlock, expireSeconds)), transaction)];\n }\n });\n });\n };\n // eventually break out into TransactionValidator class\n Api.prototype.hasRequiredTaposFields = function (_a) {\n var expiration = _a.expiration, ref_block_num = _a.ref_block_num, ref_block_prefix = _a.ref_block_prefix;\n return !!(expiration && typeof (ref_block_num) === 'number' && typeof (ref_block_prefix) === 'number');\n };\n Api.prototype.tryGetBlockHeaderState = function (taposBlockNumber) {\n return __awaiter(this, void 0, void 0, function () {\n var error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 4]);\n return [4 /*yield*/, this.rpc.get_block_header_state(taposBlockNumber)];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n error_1 = _a.sent();\n return [4 /*yield*/, this.rpc.get_block(taposBlockNumber)];\n case 3: return [2 /*return*/, _a.sent()];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n return Api;\n}()); // Api\nexports.Api = Api;\n//# sourceMappingURL=eosjs-api.js.map","\"use strict\";\n/**\n * @module JSON-RPC\n */\n// copyright defined in eosjs/LICENSE.txt\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonRpc = void 0;\nvar eosjs_numeric_1 = require(\"./eosjs-numeric\");\nvar eosjs_rpcerror_1 = require(\"./eosjs-rpcerror\");\nvar arrayToHex = function (data) {\n var e_1, _a;\n var result = '';\n try {\n for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var x = data_1_1.value;\n result += ('00' + x.toString(16)).slice(-2);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return result;\n};\n/** Make RPC calls */\nvar JsonRpc = /** @class */ (function () {\n /**\n * @param args\n * `fetch`:\n * browsers: leave `null` or `undefined`\n * node: provide an implementation\n */\n function JsonRpc(endpoint, args) {\n if (args === void 0) { args = {}; }\n this.endpoint = endpoint.replace(/\\/$/, '');\n if (args.fetch) {\n this.fetchBuiltin = args.fetch;\n }\n else {\n this.fetchBuiltin = global.fetch;\n }\n }\n /** Post `body` to `endpoint + path`. Throws detailed error information in `RpcError` when available. */\n JsonRpc.prototype.fetch = function (path, body) {\n return __awaiter(this, void 0, void 0, function () {\n var response, json, f, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 3, , 4]);\n f = this.fetchBuiltin;\n return [4 /*yield*/, f(this.endpoint + path, {\n body: JSON.stringify(body),\n method: 'POST',\n })];\n case 1:\n response = _a.sent();\n return [4 /*yield*/, response.json()];\n case 2:\n json = _a.sent();\n if (json.processed && json.processed.except) {\n throw new eosjs_rpcerror_1.RpcError(json);\n }\n return [3 /*break*/, 4];\n case 3:\n e_2 = _a.sent();\n e_2.isFetchError = true;\n throw e_2;\n case 4:\n if (!response.ok) {\n throw new eosjs_rpcerror_1.RpcError(json);\n }\n return [2 /*return*/, json];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_abi` */\n JsonRpc.prototype.get_abi = function (accountName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_abi', { account_name: accountName })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_account` */\n JsonRpc.prototype.get_account = function (accountName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_account', { account_name: accountName })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_block_header_state` */\n JsonRpc.prototype.get_block_header_state = function (blockNumOrId) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_block_header_state', { block_num_or_id: blockNumOrId })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_block` */\n JsonRpc.prototype.get_block = function (blockNumOrId) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_block', { block_num_or_id: blockNumOrId })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_code` */\n JsonRpc.prototype.get_code = function (accountName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_code', {\n account_name: accountName,\n code_as_wasm: true\n })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_currency_balance` */\n JsonRpc.prototype.get_currency_balance = function (code, account, symbol) {\n if (symbol === void 0) { symbol = null; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_currency_balance', { code: code, account: account, symbol: symbol })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_currency_stats` */\n JsonRpc.prototype.get_currency_stats = function (code, symbol) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_currency_stats', { code: code, symbol: symbol })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_info` */\n JsonRpc.prototype.get_info = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_info', {})];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_producer_schedule` */\n JsonRpc.prototype.get_producer_schedule = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_producer_schedule', {})];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_producers` */\n JsonRpc.prototype.get_producers = function (json, lowerBound, limit) {\n if (json === void 0) { json = true; }\n if (lowerBound === void 0) { lowerBound = ''; }\n if (limit === void 0) { limit = 50; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_producers', { json: json, lower_bound: lowerBound, limit: limit })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_raw_code_and_abi` */\n JsonRpc.prototype.get_raw_code_and_abi = function (accountName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_raw_code_and_abi', { account_name: accountName })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** calls `/v1/chain/get_raw_code_and_abi` and pulls out unneeded raw wasm code */\n // TODO: use `/v1/chain/get_raw_abi` directly when it becomes available\n JsonRpc.prototype.getRawAbi = function (accountName) {\n return __awaiter(this, void 0, void 0, function () {\n var rawCodeAndAbi, abi;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.get_raw_code_and_abi(accountName)];\n case 1:\n rawCodeAndAbi = _a.sent();\n abi = eosjs_numeric_1.base64ToBinary(rawCodeAndAbi.abi);\n return [2 /*return*/, { accountName: rawCodeAndAbi.account_name, abi: abi }];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_scheduled_transactions` */\n JsonRpc.prototype.get_scheduled_transactions = function (json, lowerBound, limit) {\n if (json === void 0) { json = true; }\n if (lowerBound === void 0) { lowerBound = ''; }\n if (limit === void 0) { limit = 50; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_scheduled_transactions', { json: json, lower_bound: lowerBound, limit: limit })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_table_rows` */\n JsonRpc.prototype.get_table_rows = function (_a) {\n var _b = _a.json, json = _b === void 0 ? true : _b, code = _a.code, scope = _a.scope, table = _a.table, _c = _a.lower_bound, lower_bound = _c === void 0 ? '' : _c, _d = _a.upper_bound, upper_bound = _d === void 0 ? '' : _d, _e = _a.index_position, index_position = _e === void 0 ? 1 : _e, _f = _a.key_type, key_type = _f === void 0 ? '' : _f, _g = _a.limit, limit = _g === void 0 ? 10 : _g, _h = _a.reverse, reverse = _h === void 0 ? false : _h, _j = _a.show_payer, show_payer = _j === void 0 ? false : _j;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_table_rows', {\n json: json,\n code: code,\n scope: scope,\n table: table,\n lower_bound: lower_bound,\n upper_bound: upper_bound,\n index_position: index_position,\n key_type: key_type,\n limit: limit,\n reverse: reverse,\n show_payer: show_payer,\n })];\n case 1: return [2 /*return*/, _k.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_table_by_scope` */\n JsonRpc.prototype.get_table_by_scope = function (_a) {\n var code = _a.code, table = _a.table, _b = _a.lower_bound, lower_bound = _b === void 0 ? '' : _b, _c = _a.upper_bound, upper_bound = _c === void 0 ? '' : _c, _d = _a.limit, limit = _d === void 0 ? 10 : _d;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_table_by_scope', {\n code: code,\n table: table,\n lower_bound: lower_bound,\n upper_bound: upper_bound,\n limit: limit,\n })];\n case 1: return [2 /*return*/, _e.sent()];\n }\n });\n });\n };\n /** Get subset of `availableKeys` needed to meet authorities in `transaction`. Implements `AuthorityProvider` */\n JsonRpc.prototype.getRequiredKeys = function (args) {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = eosjs_numeric_1.convertLegacyPublicKeys;\n return [4 /*yield*/, this.fetch('/v1/chain/get_required_keys', {\n transaction: args.transaction,\n available_keys: args.availableKeys,\n })];\n case 1: return [2 /*return*/, _a.apply(void 0, [(_b.sent()).required_keys])];\n }\n });\n });\n };\n /** Push a serialized transaction (replaced by send_transaction, but returned format has changed) */\n JsonRpc.prototype.push_transaction = function (_a) {\n var signatures = _a.signatures, _b = _a.compression, compression = _b === void 0 ? 0 : _b, serializedTransaction = _a.serializedTransaction, serializedContextFreeData = _a.serializedContextFreeData;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/push_transaction', {\n signatures: signatures,\n compression: compression,\n packed_context_free_data: arrayToHex(serializedContextFreeData || new Uint8Array(0)),\n packed_trx: arrayToHex(serializedTransaction),\n })];\n case 1: return [2 /*return*/, _c.sent()];\n }\n });\n });\n };\n /** Send a serialized transaction */\n JsonRpc.prototype.send_transaction = function (_a) {\n var signatures = _a.signatures, _b = _a.compression, compression = _b === void 0 ? 0 : _b, serializedTransaction = _a.serializedTransaction, serializedContextFreeData = _a.serializedContextFreeData;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/send_transaction', {\n signatures: signatures,\n compression: compression,\n packed_context_free_data: arrayToHex(serializedContextFreeData || new Uint8Array(0)),\n packed_trx: arrayToHex(serializedTransaction),\n })];\n case 1: return [2 /*return*/, _c.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/db_size/get` */\n JsonRpc.prototype.db_size_get = function () {\n return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/db_size/get', {})];\n case 1: return [2 /*return*/, _a.sent()];\n }\n }); });\n };\n /** Raw call to `/v1/history/get_actions` */\n JsonRpc.prototype.history_get_actions = function (accountName, pos, offset) {\n if (pos === void 0) { pos = null; }\n if (offset === void 0) { offset = null; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/history/get_actions', { account_name: accountName, pos: pos, offset: offset })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/history/get_transaction` */\n JsonRpc.prototype.history_get_transaction = function (id, blockNumHint) {\n if (blockNumHint === void 0) { blockNumHint = null; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/history/get_transaction', { id: id, block_num_hint: blockNumHint })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/history/get_key_accounts` */\n JsonRpc.prototype.history_get_key_accounts = function (publicKey) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/history/get_key_accounts', { public_key: publicKey })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/history/get_controlled_accounts` */\n JsonRpc.prototype.history_get_controlled_accounts = function (controllingAccount) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/history/get_controlled_accounts', { controlling_account: controllingAccount })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n return JsonRpc;\n}()); // JsonRpc\nexports.JsonRpc = JsonRpc;\n//# sourceMappingURL=eosjs-jsonrpc.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.signatureToString = exports.stringToSignature = exports.privateKeyToString = exports.privateKeyToLegacyString = exports.stringToPrivateKey = exports.convertLegacyPublicKeys = exports.convertLegacyPublicKey = exports.publicKeyToString = exports.publicKeyToLegacyString = exports.stringToPublicKey = exports.signatureDataSize = exports.privateKeyDataSize = exports.publicKeyDataSize = exports.KeyType = exports.base64ToBinary = exports.binaryToBase58 = exports.base58ToBinary = exports.signedBinaryToDecimal = exports.binaryToDecimal = exports.signedDecimalToBinary = exports.decimalToBinary = exports.negate = exports.isNegative = void 0;\n/**\n * @module Numeric\n */\nvar hash_js_1 = require(\"hash.js\");\n// copyright defined in eosjs/LICENSE.txt\nvar ripemd160 = require('./ripemd').RIPEMD160.hash;\nvar base58Chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\nvar base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nvar create_base58_map = function () {\n var base58M = Array(256).fill(-1);\n for (var i = 0; i < base58Chars.length; ++i) {\n base58M[base58Chars.charCodeAt(i)] = i;\n }\n return base58M;\n};\nvar base58Map = create_base58_map();\nvar create_base64_map = function () {\n var base64M = Array(256).fill(-1);\n for (var i = 0; i < base64Chars.length; ++i) {\n base64M[base64Chars.charCodeAt(i)] = i;\n }\n base64M['='.charCodeAt(0)] = 0;\n return base64M;\n};\nvar base64Map = create_base64_map();\n/** Is `bignum` a negative number? */\nvar isNegative = function (bignum) {\n return (bignum[bignum.length - 1] & 0x80) !== 0;\n};\nexports.isNegative = isNegative;\n/** Negate `bignum` */\nvar negate = function (bignum) {\n var carry = 1;\n for (var i = 0; i < bignum.length; ++i) {\n var x = (~bignum[i] & 0xff) + carry;\n bignum[i] = x;\n carry = x >> 8;\n }\n};\nexports.negate = negate;\n/**\n * Convert an unsigned decimal number in `s` to a bignum\n *\n * @param size bignum size (bytes)\n */\nvar decimalToBinary = function (size, s) {\n var result = new Uint8Array(size);\n for (var i = 0; i < s.length; ++i) {\n var srcDigit = s.charCodeAt(i);\n if (srcDigit < '0'.charCodeAt(0) || srcDigit > '9'.charCodeAt(0)) {\n throw new Error('invalid number');\n }\n var carry = srcDigit - '0'.charCodeAt(0);\n for (var j = 0; j < size; ++j) {\n var x = result[j] * 10 + carry;\n result[j] = x;\n carry = x >> 8;\n }\n if (carry) {\n throw new Error('number is out of range');\n }\n }\n return result;\n};\nexports.decimalToBinary = decimalToBinary;\n/**\n * Convert a signed decimal number in `s` to a bignum\n *\n * @param size bignum size (bytes)\n */\nvar signedDecimalToBinary = function (size, s) {\n var negative = s[0] === '-';\n if (negative) {\n s = s.substr(1);\n }\n var result = exports.decimalToBinary(size, s);\n if (negative) {\n exports.negate(result);\n if (!exports.isNegative(result)) {\n throw new Error('number is out of range');\n }\n }\n else if (exports.isNegative(result)) {\n throw new Error('number is out of range');\n }\n return result;\n};\nexports.signedDecimalToBinary = signedDecimalToBinary;\n/**\n * Convert `bignum` to an unsigned decimal number\n *\n * @param minDigits 0-pad result to this many digits\n */\nvar binaryToDecimal = function (bignum, minDigits) {\n if (minDigits === void 0) { minDigits = 1; }\n var result = Array(minDigits).fill('0'.charCodeAt(0));\n for (var i = bignum.length - 1; i >= 0; --i) {\n var carry = bignum[i];\n for (var j = 0; j < result.length; ++j) {\n var x = ((result[j] - '0'.charCodeAt(0)) << 8) + carry;\n result[j] = '0'.charCodeAt(0) + x % 10;\n carry = (x / 10) | 0;\n }\n while (carry) {\n result.push('0'.charCodeAt(0) + carry % 10);\n carry = (carry / 10) | 0;\n }\n }\n result.reverse();\n return String.fromCharCode.apply(String, __spreadArray([], __read(result)));\n};\nexports.binaryToDecimal = binaryToDecimal;\n/**\n * Convert `bignum` to a signed decimal number\n *\n * @param minDigits 0-pad result to this many digits\n */\nvar signedBinaryToDecimal = function (bignum, minDigits) {\n if (minDigits === void 0) { minDigits = 1; }\n if (exports.isNegative(bignum)) {\n var x = bignum.slice();\n exports.negate(x);\n return '-' + exports.binaryToDecimal(x, minDigits);\n }\n return exports.binaryToDecimal(bignum, minDigits);\n};\nexports.signedBinaryToDecimal = signedBinaryToDecimal;\nvar base58ToBinaryVarSize = function (s) {\n var e_1, _a;\n var result = [];\n for (var i = 0; i < s.length; ++i) {\n var carry = base58Map[s.charCodeAt(i)];\n if (carry < 0) {\n throw new Error('invalid base-58 value');\n }\n for (var j = 0; j < result.length; ++j) {\n var x = result[j] * 58 + carry;\n result[j] = x & 0xff;\n carry = x >> 8;\n }\n if (carry) {\n result.push(carry);\n }\n }\n try {\n for (var s_1 = __values(s), s_1_1 = s_1.next(); !s_1_1.done; s_1_1 = s_1.next()) {\n var ch = s_1_1.value;\n if (ch === '1') {\n result.push(0);\n }\n else {\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (s_1_1 && !s_1_1.done && (_a = s_1.return)) _a.call(s_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n result.reverse();\n return new Uint8Array(result);\n};\n/**\n * Convert an unsigned base-58 number in `s` to a bignum\n *\n * @param size bignum size (bytes)\n */\nvar base58ToBinary = function (size, s) {\n if (!size) {\n return base58ToBinaryVarSize(s);\n }\n var result = new Uint8Array(size);\n for (var i = 0; i < s.length; ++i) {\n var carry = base58Map[s.charCodeAt(i)];\n if (carry < 0) {\n throw new Error('invalid base-58 value');\n }\n for (var j = 0; j < size; ++j) {\n var x = result[j] * 58 + carry;\n result[j] = x;\n carry = x >> 8;\n }\n if (carry) {\n throw new Error('base-58 value is out of range');\n }\n }\n result.reverse();\n return result;\n};\nexports.base58ToBinary = base58ToBinary;\n/**\n * Convert `bignum` to a base-58 number\n *\n * @param minDigits 0-pad result to this many digits\n */\nvar binaryToBase58 = function (bignum, minDigits) {\n var e_2, _a, e_3, _b;\n if (minDigits === void 0) { minDigits = 1; }\n var result = [];\n try {\n for (var bignum_1 = __values(bignum), bignum_1_1 = bignum_1.next(); !bignum_1_1.done; bignum_1_1 = bignum_1.next()) {\n var byte = bignum_1_1.value;\n var carry = byte;\n for (var j = 0; j < result.length; ++j) {\n var x = (base58Map[result[j]] << 8) + carry;\n result[j] = base58Chars.charCodeAt(x % 58);\n carry = (x / 58) | 0;\n }\n while (carry) {\n result.push(base58Chars.charCodeAt(carry % 58));\n carry = (carry / 58) | 0;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (bignum_1_1 && !bignum_1_1.done && (_a = bignum_1.return)) _a.call(bignum_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n try {\n for (var bignum_2 = __values(bignum), bignum_2_1 = bignum_2.next(); !bignum_2_1.done; bignum_2_1 = bignum_2.next()) {\n var byte = bignum_2_1.value;\n if (byte) {\n break;\n }\n else {\n result.push('1'.charCodeAt(0));\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (bignum_2_1 && !bignum_2_1.done && (_b = bignum_2.return)) _b.call(bignum_2);\n }\n finally { if (e_3) throw e_3.error; }\n }\n result.reverse();\n return String.fromCharCode.apply(String, __spreadArray([], __read(result)));\n};\nexports.binaryToBase58 = binaryToBase58;\n/** Convert an unsigned base-64 number in `s` to a bignum */\nvar base64ToBinary = function (s) {\n var len = s.length;\n if ((len & 3) === 1 && s[len - 1] === '=') {\n len -= 1;\n } // fc appends an extra '='\n if ((len & 3) !== 0) {\n throw new Error('base-64 value is not padded correctly');\n }\n var groups = len >> 2;\n var bytes = groups * 3;\n if (len > 0 && s[len - 1] === '=') {\n if (s[len - 2] === '=') {\n bytes -= 2;\n }\n else {\n bytes -= 1;\n }\n }\n var result = new Uint8Array(bytes);\n for (var group = 0; group < groups; ++group) {\n var digit0 = base64Map[s.charCodeAt(group * 4 + 0)];\n var digit1 = base64Map[s.charCodeAt(group * 4 + 1)];\n var digit2 = base64Map[s.charCodeAt(group * 4 + 2)];\n var digit3 = base64Map[s.charCodeAt(group * 4 + 3)];\n result[group * 3 + 0] = (digit0 << 2) | (digit1 >> 4);\n if (group * 3 + 1 < bytes) {\n result[group * 3 + 1] = ((digit1 & 15) << 4) | (digit2 >> 2);\n }\n if (group * 3 + 2 < bytes) {\n result[group * 3 + 2] = ((digit2 & 3) << 6) | digit3;\n }\n }\n return result;\n};\nexports.base64ToBinary = base64ToBinary;\n/** Key types this library supports */\nvar KeyType;\n(function (KeyType) {\n KeyType[KeyType[\"k1\"] = 0] = \"k1\";\n KeyType[KeyType[\"r1\"] = 1] = \"r1\";\n KeyType[KeyType[\"wa\"] = 2] = \"wa\";\n})(KeyType = exports.KeyType || (exports.KeyType = {}));\n/** Public key data size, excluding type field */\nexports.publicKeyDataSize = 33;\n/** Private key data size, excluding type field */\nexports.privateKeyDataSize = 32;\n/** Signature data size, excluding type field */\nexports.signatureDataSize = 65;\nvar digestSuffixRipemd160 = function (data, suffix) {\n var d = new Uint8Array(data.length + suffix.length);\n for (var i = 0; i < data.length; ++i) {\n d[i] = data[i];\n }\n for (var i = 0; i < suffix.length; ++i) {\n d[data.length + i] = suffix.charCodeAt(i);\n }\n return ripemd160(d);\n};\nvar stringToKey = function (s, type, size, suffix) {\n var whole = exports.base58ToBinary(size ? size + 4 : 0, s);\n var result = { type: type, data: new Uint8Array(whole.buffer, 0, whole.length - 4) };\n var digest = new Uint8Array(digestSuffixRipemd160(result.data, suffix));\n if (digest[0] !== whole[whole.length - 4] || digest[1] !== whole[whole.length - 3]\n || digest[2] !== whole[whole.length - 2] || digest[3] !== whole[whole.length - 1]) {\n throw new Error('checksum doesn\\'t match');\n }\n return result;\n};\nvar keyToString = function (key, suffix, prefix) {\n var digest = new Uint8Array(digestSuffixRipemd160(key.data, suffix));\n var whole = new Uint8Array(key.data.length + 4);\n for (var i = 0; i < key.data.length; ++i) {\n whole[i] = key.data[i];\n }\n for (var i = 0; i < 4; ++i) {\n whole[i + key.data.length] = digest[i];\n }\n return prefix + exports.binaryToBase58(whole);\n};\n/** Convert key in `s` to binary form */\nvar stringToPublicKey = function (s) {\n if (typeof s !== 'string') {\n throw new Error('expected string containing public key');\n }\n if (s.substr(0, 3) === 'EOS') {\n var whole = exports.base58ToBinary(exports.publicKeyDataSize + 4, s.substr(3));\n var key = { type: KeyType.k1, data: new Uint8Array(exports.publicKeyDataSize) };\n for (var i = 0; i < exports.publicKeyDataSize; ++i) {\n key.data[i] = whole[i];\n }\n var digest = new Uint8Array(ripemd160(key.data));\n if (digest[0] !== whole[exports.publicKeyDataSize] || digest[1] !== whole[34]\n || digest[2] !== whole[35] || digest[3] !== whole[36]) {\n throw new Error('checksum doesn\\'t match');\n }\n return key;\n }\n else if (s.substr(0, 7) === 'PUB_K1_') {\n return stringToKey(s.substr(7), KeyType.k1, exports.publicKeyDataSize, 'K1');\n }\n else if (s.substr(0, 7) === 'PUB_R1_') {\n return stringToKey(s.substr(7), KeyType.r1, exports.publicKeyDataSize, 'R1');\n }\n else if (s.substr(0, 7) === 'PUB_WA_') {\n return stringToKey(s.substr(7), KeyType.wa, 0, 'WA');\n }\n else {\n throw new Error('unrecognized public key format');\n }\n};\nexports.stringToPublicKey = stringToPublicKey;\n/** Convert public `key` to legacy string (base-58) form */\nvar publicKeyToLegacyString = function (key) {\n if (key.type === KeyType.k1 && key.data.length === exports.publicKeyDataSize) {\n return keyToString(key, '', 'EOS');\n }\n else if (key.type === KeyType.r1 || key.type === KeyType.wa) {\n throw new Error('Key format not supported in legacy conversion');\n }\n else {\n throw new Error('unrecognized public key format');\n }\n};\nexports.publicKeyToLegacyString = publicKeyToLegacyString;\n/** Convert `key` to string (base-58) form */\nvar publicKeyToString = function (key) {\n if (key.type === KeyType.k1 && key.data.length === exports.publicKeyDataSize) {\n return keyToString(key, 'K1', 'PUB_K1_');\n }\n else if (key.type === KeyType.r1 && key.data.length === exports.publicKeyDataSize) {\n return keyToString(key, 'R1', 'PUB_R1_');\n }\n else if (key.type === KeyType.wa) {\n return keyToString(key, 'WA', 'PUB_WA_');\n }\n else {\n throw new Error('unrecognized public key format');\n }\n};\nexports.publicKeyToString = publicKeyToString;\n/** If a key is in the legacy format (`EOS` prefix), then convert it to the new format (`PUB_K1_`).\n * Leaves other formats untouched\n */\nvar convertLegacyPublicKey = function (s) {\n if (s.substr(0, 3) === 'EOS') {\n return exports.publicKeyToString(exports.stringToPublicKey(s));\n }\n return s;\n};\nexports.convertLegacyPublicKey = convertLegacyPublicKey;\n/** If a key is in the legacy format (`EOS` prefix), then convert it to the new format (`PUB_K1_`).\n * Leaves other formats untouched\n */\nvar convertLegacyPublicKeys = function (keys) {\n return keys.map(exports.convertLegacyPublicKey);\n};\nexports.convertLegacyPublicKeys = convertLegacyPublicKeys;\n/** Convert key in `s` to binary form */\nvar stringToPrivateKey = function (s) {\n if (typeof s !== 'string') {\n throw new Error('expected string containing private key');\n }\n if (s.substr(0, 7) === 'PVT_R1_') {\n return stringToKey(s.substr(7), KeyType.r1, exports.privateKeyDataSize, 'R1');\n }\n else if (s.substr(0, 7) === 'PVT_K1_') {\n return stringToKey(s.substr(7), KeyType.k1, exports.privateKeyDataSize, 'K1');\n }\n else {\n // todo: Verify checksum: sha256(sha256(key.data)).\n // Not critical since a bad key will fail to produce a\n // valid signature anyway.\n var whole = exports.base58ToBinary(exports.privateKeyDataSize + 5, s);\n var key = { type: KeyType.k1, data: new Uint8Array(exports.privateKeyDataSize) };\n if (whole[0] !== 0x80) {\n throw new Error('unrecognized private key type');\n }\n for (var i = 0; i < exports.privateKeyDataSize; ++i) {\n key.data[i] = whole[i + 1];\n }\n return key;\n }\n};\nexports.stringToPrivateKey = stringToPrivateKey;\n/** Convert private `key` to legacy string (base-58) form */\nvar privateKeyToLegacyString = function (key) {\n if (key.type === KeyType.k1 && key.data.length === exports.privateKeyDataSize) {\n var whole_1 = [];\n whole_1.push(128);\n key.data.forEach(function (byte) { return whole_1.push(byte); });\n var digest = new Uint8Array(hash_js_1.sha256().update(hash_js_1.sha256().update(whole_1).digest()).digest());\n var result = new Uint8Array(exports.privateKeyDataSize + 5);\n for (var i = 0; i < whole_1.length; i++) {\n result[i] = whole_1[i];\n }\n for (var i = 0; i < 4; i++) {\n result[i + whole_1.length] = digest[i];\n }\n return exports.binaryToBase58(result);\n }\n else if (key.type === KeyType.r1 || key.type === KeyType.wa) {\n throw new Error('Key format not supported in legacy conversion');\n }\n else {\n throw new Error('unrecognized public key format');\n }\n};\nexports.privateKeyToLegacyString = privateKeyToLegacyString;\n/** Convert `key` to string (base-58) form */\nvar privateKeyToString = function (key) {\n if (key.type === KeyType.r1) {\n return keyToString(key, 'R1', 'PVT_R1_');\n }\n else if (key.type === KeyType.k1) {\n return keyToString(key, 'K1', 'PVT_K1_');\n }\n else {\n throw new Error('unrecognized private key format');\n }\n};\nexports.privateKeyToString = privateKeyToString;\n/** Convert key in `s` to binary form */\nvar stringToSignature = function (s) {\n if (typeof s !== 'string') {\n throw new Error('expected string containing signature');\n }\n if (s.substr(0, 7) === 'SIG_K1_') {\n return stringToKey(s.substr(7), KeyType.k1, exports.signatureDataSize, 'K1');\n }\n else if (s.substr(0, 7) === 'SIG_R1_') {\n return stringToKey(s.substr(7), KeyType.r1, exports.signatureDataSize, 'R1');\n }\n else if (s.substr(0, 7) === 'SIG_WA_') {\n return stringToKey(s.substr(7), KeyType.wa, 0, 'WA');\n }\n else {\n throw new Error('unrecognized signature format');\n }\n};\nexports.stringToSignature = stringToSignature;\n/** Convert `signature` to string (base-58) form */\nvar signatureToString = function (signature) {\n if (signature.type === KeyType.k1) {\n return keyToString(signature, 'K1', 'SIG_K1_');\n }\n else if (signature.type === KeyType.r1) {\n return keyToString(signature, 'R1', 'SIG_R1_');\n }\n else if (signature.type === KeyType.wa) {\n return keyToString(signature, 'WA', 'SIG_WA_');\n }\n else {\n throw new Error('unrecognized signature format');\n }\n};\nexports.signatureToString = signatureToString;\n//# sourceMappingURL=eosjs-numeric.js.map","\"use strict\";\n/**\n * @module RPC-API-Methods\n * copyright defined in eosjs/LICENSE.txt\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=eosjs-rpc-interfaces.js.map","\"use strict\";\n/**\n * @module RPC-Error\n */\n// copyright defined in eosjs/LICENSE.txt\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RpcError = void 0;\n/** Holds detailed error information */\nvar RpcError = /** @class */ (function (_super) {\n __extends(RpcError, _super);\n function RpcError(json) {\n var _this = this;\n if (json.error && json.error.details && json.error.details.length && json.error.details[0].message) {\n _this = _super.call(this, json.error.details[0].message) || this;\n }\n else if (json.processed && json.processed.except && json.processed.except.message) {\n _this = _super.call(this, json.processed.except.message) || this;\n }\n else {\n _this = _super.call(this, json.message) || this;\n }\n Object.setPrototypeOf(_this, RpcError.prototype);\n _this.json = json;\n return _this;\n }\n return RpcError;\n}(Error));\nexports.RpcError = RpcError;\n//# sourceMappingURL=eosjs-rpcerror.js.map","\"use strict\";\n/**\n * @module Serialize\n */\n// copyright defined in eosjs/LICENSE.txt\n/* eslint-disable max-classes-per-file */\n/* eslint-disable jsdoc/check-indentation */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializeAction = exports.deserializeActionData = exports.serializeAction = exports.serializeActionData = exports.transactionHeader = exports.getTypesFromAbi = exports.getType = exports.createInitialTypes = exports.hexToUint8Array = exports.arrayToHex = exports.symbolToString = exports.stringToSymbol = exports.blockTimestampToDate = exports.dateToBlockTimestamp = exports.timePointSecToDate = exports.dateToTimePointSec = exports.timePointToDate = exports.dateToTimePoint = exports.supportedAbiVersion = exports.SerialBuffer = exports.SerializerState = void 0;\nvar numeric = require(\"./eosjs-numeric\");\n/** State for serialize() and deserialize() */\nvar SerializerState = /** @class */ (function () {\n function SerializerState(options) {\n if (options === void 0) { options = {}; }\n /** Have any binary extensions been skipped? */\n this.skippedBinaryExtension = false;\n this.options = options;\n }\n return SerializerState;\n}());\nexports.SerializerState = SerializerState;\n/** Serialize and deserialize data */\nvar SerialBuffer = /** @class */ (function () {\n /**\n * @param __namedParameters\n * `array`: `null` if serializing, or binary data to deserialize\n * `textEncoder`: `TextEncoder` instance to use. Pass in `null` if running in a browser\n * `textDecoder`: `TextDecider` instance to use. Pass in `null` if running in a browser\n */\n function SerialBuffer(_a) {\n var _b = _a === void 0 ? {} : _a, textEncoder = _b.textEncoder, textDecoder = _b.textDecoder, array = _b.array;\n /** Current position while reading (deserializing) */\n this.readPos = 0;\n this.array = array || new Uint8Array(1024);\n this.length = array ? array.length : 0;\n this.textEncoder = textEncoder || new TextEncoder();\n this.textDecoder = textDecoder || new TextDecoder('utf-8', { fatal: true });\n }\n /** Resize `array` if needed to have at least `size` bytes free */\n SerialBuffer.prototype.reserve = function (size) {\n if (this.length + size <= this.array.length) {\n return;\n }\n var l = this.array.length;\n while (this.length + size > l) {\n l = Math.ceil(l * 1.5);\n }\n var newArray = new Uint8Array(l);\n newArray.set(this.array);\n this.array = newArray;\n };\n /** Is there data available to read? */\n SerialBuffer.prototype.haveReadData = function () {\n return this.readPos < this.length;\n };\n /** Restart reading from the beginning */\n SerialBuffer.prototype.restartRead = function () {\n this.readPos = 0;\n };\n /** Return data with excess storage trimmed away */\n SerialBuffer.prototype.asUint8Array = function () {\n return new Uint8Array(this.array.buffer, this.array.byteOffset, this.length);\n };\n /** Append bytes */\n SerialBuffer.prototype.pushArray = function (v) {\n this.reserve(v.length);\n this.array.set(v, this.length);\n this.length += v.length;\n };\n /** Append bytes */\n SerialBuffer.prototype.push = function () {\n var v = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n v[_i] = arguments[_i];\n }\n this.pushArray(v);\n };\n /** Get a single byte */\n SerialBuffer.prototype.get = function () {\n if (this.readPos < this.length) {\n return this.array[this.readPos++];\n }\n throw new Error('Read past end of buffer');\n };\n /** Append bytes in `v`. Throws if `len` doesn't match `v.length` */\n SerialBuffer.prototype.pushUint8ArrayChecked = function (v, len) {\n if (v.length !== len) {\n throw new Error('Binary data has incorrect size');\n }\n this.pushArray(v);\n };\n /** Get `len` bytes */\n SerialBuffer.prototype.getUint8Array = function (len) {\n if (this.readPos + len > this.length) {\n throw new Error('Read past end of buffer');\n }\n var result = new Uint8Array(this.array.buffer, this.array.byteOffset + this.readPos, len);\n this.readPos += len;\n return result;\n };\n /** Skip `len` bytes */\n SerialBuffer.prototype.skip = function (len) {\n if (this.readPos + len > this.length) {\n throw new Error('Read past end of buffer');\n }\n this.readPos += len;\n };\n /** Append a `uint16` */\n SerialBuffer.prototype.pushUint16 = function (v) {\n this.push((v >> 0) & 0xff, (v >> 8) & 0xff);\n };\n /** Get a `uint16` */\n SerialBuffer.prototype.getUint16 = function () {\n var v = 0;\n v |= this.get() << 0;\n v |= this.get() << 8;\n return v;\n };\n /** Append a `uint32` */\n SerialBuffer.prototype.pushUint32 = function (v) {\n this.push((v >> 0) & 0xff, (v >> 8) & 0xff, (v >> 16) & 0xff, (v >> 24) & 0xff);\n };\n /** Get a `uint32` */\n SerialBuffer.prototype.getUint32 = function () {\n var v = 0;\n v |= this.get() << 0;\n v |= this.get() << 8;\n v |= this.get() << 16;\n v |= this.get() << 24;\n return v >>> 0;\n };\n /** Append a `uint64`. *Caution*: `number` only has 53 bits of precision */\n SerialBuffer.prototype.pushNumberAsUint64 = function (v) {\n this.pushUint32(v >>> 0);\n this.pushUint32(Math.floor(v / 4294967296) >>> 0);\n };\n /**\n * Get a `uint64` as a `number`. *Caution*: `number` only has 53 bits of precision; some values will change.\n * `numeric.binaryToDecimal(serialBuffer.getUint8Array(8))` recommended instead\n */\n SerialBuffer.prototype.getUint64AsNumber = function () {\n var low = this.getUint32();\n var high = this.getUint32();\n return (high >>> 0) * 4294967296 + (low >>> 0);\n };\n /** Append a `varuint32` */\n SerialBuffer.prototype.pushVaruint32 = function (v) {\n while (true) {\n if (v >>> 7) {\n this.push(0x80 | (v & 0x7f));\n v = v >>> 7;\n }\n else {\n this.push(v);\n break;\n }\n }\n };\n /** Get a `varuint32` */\n SerialBuffer.prototype.getVaruint32 = function () {\n var v = 0;\n var bit = 0;\n while (true) {\n var b = this.get();\n v |= (b & 0x7f) << bit;\n bit += 7;\n if (!(b & 0x80)) {\n break;\n }\n }\n return v >>> 0;\n };\n /** Append a `varint32` */\n SerialBuffer.prototype.pushVarint32 = function (v) {\n this.pushVaruint32((v << 1) ^ (v >> 31));\n };\n /** Get a `varint32` */\n SerialBuffer.prototype.getVarint32 = function () {\n var v = this.getVaruint32();\n if (v & 1) {\n return ((~v) >> 1) | 2147483648;\n }\n else {\n return v >>> 1;\n }\n };\n /** Append a `float32` */\n SerialBuffer.prototype.pushFloat32 = function (v) {\n this.pushArray(new Uint8Array((new Float32Array([v])).buffer));\n };\n /** Get a `float32` */\n SerialBuffer.prototype.getFloat32 = function () {\n return new Float32Array(this.getUint8Array(4).slice().buffer)[0];\n };\n /** Append a `float64` */\n SerialBuffer.prototype.pushFloat64 = function (v) {\n this.pushArray(new Uint8Array((new Float64Array([v])).buffer));\n };\n /** Get a `float64` */\n SerialBuffer.prototype.getFloat64 = function () {\n return new Float64Array(this.getUint8Array(8).slice().buffer)[0];\n };\n /** Append a `name` */\n SerialBuffer.prototype.pushName = function (s) {\n if (typeof s !== 'string') {\n throw new Error('Expected string containing name');\n }\n var regex = new RegExp(/^[.1-5a-z]{0,12}[.1-5a-j]?$/);\n if (!regex.test(s)) {\n throw new Error('Name should be less than 13 characters, or less than 14 if last character is between 1-5 or a-j, and only contain the following symbols .12345abcdefghijklmnopqrstuvwxyz'); // eslint-disable-line\n }\n var charToSymbol = function (c) {\n if (c >= 'a'.charCodeAt(0) && c <= 'z'.charCodeAt(0)) {\n return (c - 'a'.charCodeAt(0)) + 6;\n }\n if (c >= '1'.charCodeAt(0) && c <= '5'.charCodeAt(0)) {\n return (c - '1'.charCodeAt(0)) + 1;\n }\n return 0;\n };\n var a = new Uint8Array(8);\n var bit = 63;\n for (var i = 0; i < s.length; ++i) {\n var c = charToSymbol(s.charCodeAt(i));\n if (bit < 5) {\n c = c << 1;\n }\n for (var j = 4; j >= 0; --j) {\n if (bit >= 0) {\n a[Math.floor(bit / 8)] |= ((c >> j) & 1) << (bit % 8);\n --bit;\n }\n }\n }\n this.pushArray(a);\n };\n /** Get a `name` */\n SerialBuffer.prototype.getName = function () {\n var a = this.getUint8Array(8);\n var result = '';\n for (var bit = 63; bit >= 0;) {\n var c = 0;\n for (var i = 0; i < 5; ++i) {\n if (bit >= 0) {\n c = (c << 1) | ((a[Math.floor(bit / 8)] >> (bit % 8)) & 1);\n --bit;\n }\n }\n if (c >= 6) {\n result += String.fromCharCode(c + 'a'.charCodeAt(0) - 6);\n }\n else if (c >= 1) {\n result += String.fromCharCode(c + '1'.charCodeAt(0) - 1);\n }\n else {\n result += '.';\n }\n }\n while (result.endsWith('.')) {\n result = result.substr(0, result.length - 1);\n }\n return result;\n };\n /** Append length-prefixed binary data */\n SerialBuffer.prototype.pushBytes = function (v) {\n this.pushVaruint32(v.length);\n this.pushArray(v);\n };\n /** Get length-prefixed binary data */\n SerialBuffer.prototype.getBytes = function () {\n return this.getUint8Array(this.getVaruint32());\n };\n /** Append a string */\n SerialBuffer.prototype.pushString = function (v) {\n this.pushBytes(this.textEncoder.encode(v));\n };\n /** Get a string */\n SerialBuffer.prototype.getString = function () {\n return this.textDecoder.decode(this.getBytes());\n };\n /** Append a `symbol_code`. Unlike `symbol`, `symbol_code` doesn't include a precision. */\n SerialBuffer.prototype.pushSymbolCode = function (name) {\n if (typeof name !== 'string') {\n throw new Error('Expected string containing symbol_code');\n }\n var a = [];\n a.push.apply(a, __spreadArray([], __read(this.textEncoder.encode(name))));\n while (a.length < 8) {\n a.push(0);\n }\n this.pushArray(a.slice(0, 8));\n };\n /** Get a `symbol_code`. Unlike `symbol`, `symbol_code` doesn't include a precision. */\n SerialBuffer.prototype.getSymbolCode = function () {\n var a = this.getUint8Array(8);\n var len;\n for (len = 0; len < a.length; ++len) {\n if (!a[len]) {\n break;\n }\n }\n var name = this.textDecoder.decode(new Uint8Array(a.buffer, a.byteOffset, len));\n return name;\n };\n /** Append a `symbol` */\n SerialBuffer.prototype.pushSymbol = function (_a) {\n var name = _a.name, precision = _a.precision;\n if (!/^[A-Z]{1,7}$/.test(name)) {\n throw new Error('Expected symbol to be A-Z and between one and seven characters');\n }\n var a = [precision & 0xff];\n a.push.apply(a, __spreadArray([], __read(this.textEncoder.encode(name))));\n while (a.length < 8) {\n a.push(0);\n }\n this.pushArray(a.slice(0, 8));\n };\n /** Get a `symbol` */\n SerialBuffer.prototype.getSymbol = function () {\n var precision = this.get();\n var a = this.getUint8Array(7);\n var len;\n for (len = 0; len < a.length; ++len) {\n if (!a[len]) {\n break;\n }\n }\n var name = this.textDecoder.decode(new Uint8Array(a.buffer, a.byteOffset, len));\n return { name: name, precision: precision };\n };\n /** Append an asset */\n SerialBuffer.prototype.pushAsset = function (s) {\n if (typeof s !== 'string') {\n throw new Error('Expected string containing asset');\n }\n s = s.trim();\n var pos = 0;\n var amount = '';\n var precision = 0;\n if (s[pos] === '-') {\n amount += '-';\n ++pos;\n }\n var foundDigit = false;\n while (pos < s.length && s.charCodeAt(pos) >= '0'.charCodeAt(0) && s.charCodeAt(pos) <= '9'.charCodeAt(0)) {\n foundDigit = true;\n amount += s[pos];\n ++pos;\n }\n if (!foundDigit) {\n throw new Error('Asset must begin with a number');\n }\n if (s[pos] === '.') {\n ++pos;\n while (pos < s.length && s.charCodeAt(pos) >= '0'.charCodeAt(0) && s.charCodeAt(pos) <= '9'.charCodeAt(0)) {\n amount += s[pos];\n ++precision;\n ++pos;\n }\n }\n var name = s.substr(pos).trim();\n this.pushArray(numeric.signedDecimalToBinary(8, amount));\n this.pushSymbol({ name: name, precision: precision });\n };\n /** Get an asset */\n SerialBuffer.prototype.getAsset = function () {\n var amount = this.getUint8Array(8);\n var _a = this.getSymbol(), name = _a.name, precision = _a.precision;\n var s = numeric.signedBinaryToDecimal(amount, precision + 1);\n if (precision) {\n s = s.substr(0, s.length - precision) + '.' + s.substr(s.length - precision);\n }\n return s + ' ' + name;\n };\n /** Append a public key */\n SerialBuffer.prototype.pushPublicKey = function (s) {\n var key = numeric.stringToPublicKey(s);\n this.push(key.type);\n this.pushArray(key.data);\n };\n /** Get a public key */\n SerialBuffer.prototype.getPublicKey = function () {\n var type = this.get();\n var data;\n if (type === numeric.KeyType.wa) {\n var begin = this.readPos;\n this.skip(34);\n this.skip(this.getVaruint32());\n data = new Uint8Array(this.array.buffer, this.array.byteOffset + begin, this.readPos - begin);\n }\n else {\n data = this.getUint8Array(numeric.publicKeyDataSize);\n }\n return numeric.publicKeyToString({ type: type, data: data });\n };\n /** Append a private key */\n SerialBuffer.prototype.pushPrivateKey = function (s) {\n var key = numeric.stringToPrivateKey(s);\n this.push(key.type);\n this.pushArray(key.data);\n };\n /** Get a private key */\n SerialBuffer.prototype.getPrivateKey = function () {\n var type = this.get();\n var data = this.getUint8Array(numeric.privateKeyDataSize);\n return numeric.privateKeyToString({ type: type, data: data });\n };\n /** Append a signature */\n SerialBuffer.prototype.pushSignature = function (s) {\n var key = numeric.stringToSignature(s);\n this.push(key.type);\n this.pushArray(key.data);\n };\n /** Get a signature */\n SerialBuffer.prototype.getSignature = function () {\n var type = this.get();\n var data;\n if (type === numeric.KeyType.wa) {\n var begin = this.readPos;\n this.skip(65);\n this.skip(this.getVaruint32());\n this.skip(this.getVaruint32());\n data = new Uint8Array(this.array.buffer, this.array.byteOffset + begin, this.readPos - begin);\n }\n else {\n data = this.getUint8Array(numeric.signatureDataSize);\n }\n return numeric.signatureToString({ type: type, data: data });\n };\n return SerialBuffer;\n}()); // SerialBuffer\nexports.SerialBuffer = SerialBuffer;\n/** Is this a supported ABI version? */\nvar supportedAbiVersion = function (version) {\n return version.startsWith('eosio::abi/1.');\n};\nexports.supportedAbiVersion = supportedAbiVersion;\nvar checkDateParse = function (date) {\n var result = Date.parse(date);\n if (Number.isNaN(result)) {\n throw new Error('Invalid time format');\n }\n return result;\n};\n/** Convert date in ISO format to `time_point` (miliseconds since epoch) */\nvar dateToTimePoint = function (date) {\n return Math.round(checkDateParse(date + 'Z') * 1000);\n};\nexports.dateToTimePoint = dateToTimePoint;\n/** Convert `time_point` (miliseconds since epoch) to date in ISO format */\nvar timePointToDate = function (us) {\n var s = (new Date(us / 1000)).toISOString();\n return s.substr(0, s.length - 1);\n};\nexports.timePointToDate = timePointToDate;\n/** Convert date in ISO format to `time_point_sec` (seconds since epoch) */\nvar dateToTimePointSec = function (date) {\n return Math.round(checkDateParse(date + 'Z') / 1000);\n};\nexports.dateToTimePointSec = dateToTimePointSec;\n/** Convert `time_point_sec` (seconds since epoch) to to date in ISO format */\nvar timePointSecToDate = function (sec) {\n var s = (new Date(sec * 1000)).toISOString();\n return s.substr(0, s.length - 1);\n};\nexports.timePointSecToDate = timePointSecToDate;\n/** Convert date in ISO format to `block_timestamp_type` (half-seconds since a different epoch) */\nvar dateToBlockTimestamp = function (date) {\n return Math.round((checkDateParse(date + 'Z') - 946684800000) / 500);\n};\nexports.dateToBlockTimestamp = dateToBlockTimestamp;\n/** Convert `block_timestamp_type` (half-seconds since a different epoch) to to date in ISO format */\nvar blockTimestampToDate = function (slot) {\n var s = (new Date(slot * 500 + 946684800000)).toISOString();\n return s.substr(0, s.length - 1);\n};\nexports.blockTimestampToDate = blockTimestampToDate;\n/** Convert `string` to `Symbol`. format: `precision,NAME`. */\nvar stringToSymbol = function (s) {\n if (typeof s !== 'string') {\n throw new Error('Expected string containing symbol');\n }\n var m = s.match(/^([0-9]+),([A-Z]+)$/);\n if (!m) {\n throw new Error('Invalid symbol');\n }\n return { name: m[2], precision: +m[1] };\n};\nexports.stringToSymbol = stringToSymbol;\n/** Convert `Symbol` to `string`. format: `precision,NAME`. */\nvar symbolToString = function (_a) {\n var name = _a.name, precision = _a.precision;\n return precision + ',' + name;\n};\nexports.symbolToString = symbolToString;\n/** Convert binary data to hex */\nvar arrayToHex = function (data) {\n var e_1, _a;\n var result = '';\n try {\n for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var x = data_1_1.value;\n result += ('00' + x.toString(16)).slice(-2);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return result.toUpperCase();\n};\nexports.arrayToHex = arrayToHex;\n/** Convert hex to binary data */\nvar hexToUint8Array = function (hex) {\n if (typeof hex !== 'string') {\n throw new Error('Expected string containing hex digits');\n }\n if (hex.length % 2) {\n throw new Error('Odd number of hex digits');\n }\n var l = hex.length / 2;\n var result = new Uint8Array(l);\n for (var i = 0; i < l; ++i) {\n var x = parseInt(hex.substr(i * 2, 2), 16);\n if (Number.isNaN(x)) {\n throw new Error('Expected hex string');\n }\n result[i] = x;\n }\n return result;\n};\nexports.hexToUint8Array = hexToUint8Array;\nfunction serializeUnknown(buffer, data) {\n throw new Error('Don\\'t know how to serialize ' + this.name);\n}\nfunction deserializeUnknown(buffer) {\n throw new Error('Don\\'t know how to deserialize ' + this.name);\n}\nfunction serializeStruct(buffer, data, state, allowExtensions) {\n var e_2, _a;\n if (state === void 0) { state = new SerializerState(); }\n if (allowExtensions === void 0) { allowExtensions = true; }\n if (typeof data !== 'object') {\n throw new Error('expected object containing data: ' + JSON.stringify(data));\n }\n if (this.base) {\n this.base.serialize(buffer, data, state, allowExtensions);\n }\n try {\n for (var _b = __values(this.fields), _c = _b.next(); !_c.done; _c = _b.next()) {\n var field = _c.value;\n if (field.name in data) {\n if (state.skippedBinaryExtension) {\n throw new Error('unexpected ' + this.name + '.' + field.name);\n }\n field.type.serialize(buffer, data[field.name], state, allowExtensions && field === this.fields[this.fields.length - 1]);\n }\n else {\n if (allowExtensions && field.type.extensionOf) {\n state.skippedBinaryExtension = true;\n }\n else {\n throw new Error('missing ' + this.name + '.' + field.name + ' (type=' + field.type.name + ')');\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n}\nfunction deserializeStruct(buffer, state, allowExtensions) {\n var e_3, _a;\n if (state === void 0) { state = new SerializerState(); }\n if (allowExtensions === void 0) { allowExtensions = true; }\n var result;\n if (this.base) {\n result = this.base.deserialize(buffer, state, allowExtensions);\n }\n else {\n result = {};\n }\n try {\n for (var _b = __values(this.fields), _c = _b.next(); !_c.done; _c = _b.next()) {\n var field = _c.value;\n if (allowExtensions && field.type.extensionOf && !buffer.haveReadData()) {\n state.skippedBinaryExtension = true;\n }\n else {\n result[field.name] = field.type.deserialize(buffer, state, allowExtensions);\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return result;\n}\nfunction serializeVariant(buffer, data, state, allowExtensions) {\n if (!Array.isArray(data) || data.length !== 2 || typeof data[0] !== 'string') {\n throw new Error('expected variant: [\"type\", value]');\n }\n var i = this.fields.findIndex(function (field) { return field.name === data[0]; });\n if (i < 0) {\n throw new Error(\"type \\\"\" + data[0] + \"\\\" is not valid for variant\");\n }\n buffer.pushVaruint32(i);\n this.fields[i].type.serialize(buffer, data[1], state, allowExtensions);\n}\nfunction deserializeVariant(buffer, state, allowExtensions) {\n var i = buffer.getVaruint32();\n if (i >= this.fields.length) {\n throw new Error(\"type index \" + i + \" is not valid for variant\");\n }\n var field = this.fields[i];\n return [field.name, field.type.deserialize(buffer, state, allowExtensions)];\n}\nfunction serializeArray(buffer, data, state, allowExtensions) {\n var e_4, _a;\n buffer.pushVaruint32(data.length);\n try {\n for (var data_2 = __values(data), data_2_1 = data_2.next(); !data_2_1.done; data_2_1 = data_2.next()) {\n var item = data_2_1.value;\n this.arrayOf.serialize(buffer, item, state, false);\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (data_2_1 && !data_2_1.done && (_a = data_2.return)) _a.call(data_2);\n }\n finally { if (e_4) throw e_4.error; }\n }\n}\nfunction deserializeArray(buffer, state, allowExtensions) {\n var len = buffer.getVaruint32();\n var result = [];\n for (var i = 0; i < len; ++i) {\n result.push(this.arrayOf.deserialize(buffer, state, false));\n }\n return result;\n}\nfunction serializeOptional(buffer, data, state, allowExtensions) {\n if (data === null || data === undefined) {\n buffer.push(0);\n }\n else {\n buffer.push(1);\n this.optionalOf.serialize(buffer, data, state, allowExtensions);\n }\n}\nfunction deserializeOptional(buffer, state, allowExtensions) {\n if (buffer.get()) {\n return this.optionalOf.deserialize(buffer, state, allowExtensions);\n }\n else {\n return null;\n }\n}\nfunction serializeExtension(buffer, data, state, allowExtensions) {\n this.extensionOf.serialize(buffer, data, state, allowExtensions);\n}\nfunction deserializeExtension(buffer, state, allowExtensions) {\n return this.extensionOf.deserialize(buffer, state, allowExtensions);\n}\nvar createType = function (attrs) {\n return __assign({ name: '', aliasOfName: '', arrayOf: null, optionalOf: null, extensionOf: null, baseName: '', base: null, fields: [], serialize: serializeUnknown, deserialize: deserializeUnknown }, attrs);\n};\nvar checkRange = function (orig, converted) {\n if (Number.isNaN(+orig) || Number.isNaN(+converted) || (typeof orig !== 'number' && typeof orig !== 'string')) {\n throw new Error('Expected number');\n }\n if (+orig !== +converted) {\n throw new Error('Number is out of range');\n }\n return +orig;\n};\n/** Create the set of types built-in to the abi format */\nvar createInitialTypes = function () {\n var result = new Map(Object.entries({\n bool: createType({\n name: 'bool',\n serialize: function (buffer, data) {\n if (!(typeof data === 'boolean' || typeof data === 'number' && (data === 1 || data === 0))) {\n throw new Error('Expected boolean or number equal to 1 or 0');\n }\n buffer.push(data ? 1 : 0);\n },\n deserialize: function (buffer) { return !!buffer.get(); },\n }),\n uint8: createType({\n name: 'uint8',\n serialize: function (buffer, data) { buffer.push(checkRange(data, data & 0xff)); },\n deserialize: function (buffer) { return buffer.get(); },\n }),\n int8: createType({\n name: 'int8',\n serialize: function (buffer, data) { buffer.push(checkRange(data, data << 24 >> 24)); },\n deserialize: function (buffer) { return buffer.get() << 24 >> 24; },\n }),\n uint16: createType({\n name: 'uint16',\n serialize: function (buffer, data) { buffer.pushUint16(checkRange(data, data & 0xffff)); },\n deserialize: function (buffer) { return buffer.getUint16(); },\n }),\n int16: createType({\n name: 'int16',\n serialize: function (buffer, data) { buffer.pushUint16(checkRange(data, data << 16 >> 16)); },\n deserialize: function (buffer) { return buffer.getUint16() << 16 >> 16; },\n }),\n uint32: createType({\n name: 'uint32',\n serialize: function (buffer, data) { buffer.pushUint32(checkRange(data, data >>> 0)); },\n deserialize: function (buffer) { return buffer.getUint32(); },\n }),\n uint64: createType({\n name: 'uint64',\n serialize: function (buffer, data) {\n buffer.pushArray(numeric.decimalToBinary(8, '' + data));\n },\n deserialize: function (buffer) { return numeric.binaryToDecimal(buffer.getUint8Array(8)); },\n }),\n int64: createType({\n name: 'int64',\n serialize: function (buffer, data) {\n buffer.pushArray(numeric.signedDecimalToBinary(8, '' + data));\n },\n deserialize: function (buffer) { return numeric.signedBinaryToDecimal(buffer.getUint8Array(8)); },\n }),\n int32: createType({\n name: 'int32',\n serialize: function (buffer, data) { buffer.pushUint32(checkRange(data, data | 0)); },\n deserialize: function (buffer) { return buffer.getUint32() | 0; },\n }),\n varuint32: createType({\n name: 'varuint32',\n serialize: function (buffer, data) { buffer.pushVaruint32(checkRange(data, data >>> 0)); },\n deserialize: function (buffer) { return buffer.getVaruint32(); },\n }),\n varint32: createType({\n name: 'varint32',\n serialize: function (buffer, data) { buffer.pushVarint32(checkRange(data, data | 0)); },\n deserialize: function (buffer) { return buffer.getVarint32(); },\n }),\n uint128: createType({\n name: 'uint128',\n serialize: function (buffer, data) { buffer.pushArray(numeric.decimalToBinary(16, '' + data)); },\n deserialize: function (buffer) { return numeric.binaryToDecimal(buffer.getUint8Array(16)); },\n }),\n int128: createType({\n name: 'int128',\n serialize: function (buffer, data) {\n buffer.pushArray(numeric.signedDecimalToBinary(16, '' + data));\n },\n deserialize: function (buffer) { return numeric.signedBinaryToDecimal(buffer.getUint8Array(16)); },\n }),\n float32: createType({\n name: 'float32',\n serialize: function (buffer, data) { buffer.pushFloat32(data); },\n deserialize: function (buffer) { return buffer.getFloat32(); },\n }),\n float64: createType({\n name: 'float64',\n serialize: function (buffer, data) { buffer.pushFloat64(data); },\n deserialize: function (buffer) { return buffer.getFloat64(); },\n }),\n float128: createType({\n name: 'float128',\n serialize: function (buffer, data) { buffer.pushUint8ArrayChecked(exports.hexToUint8Array(data), 16); },\n deserialize: function (buffer) { return exports.arrayToHex(buffer.getUint8Array(16)); },\n }),\n bytes: createType({\n name: 'bytes',\n serialize: function (buffer, data) {\n if (data instanceof Uint8Array || Array.isArray(data)) {\n buffer.pushBytes(data);\n }\n else {\n buffer.pushBytes(exports.hexToUint8Array(data));\n }\n },\n deserialize: function (buffer, state) {\n if (state && state.options.bytesAsUint8Array) {\n return buffer.getBytes();\n }\n else {\n return exports.arrayToHex(buffer.getBytes());\n }\n },\n }),\n string: createType({\n name: 'string',\n serialize: function (buffer, data) { buffer.pushString(data); },\n deserialize: function (buffer) { return buffer.getString(); },\n }),\n name: createType({\n name: 'name',\n serialize: function (buffer, data) { buffer.pushName(data); },\n deserialize: function (buffer) { return buffer.getName(); },\n }),\n time_point: createType({\n name: 'time_point',\n serialize: function (buffer, data) { buffer.pushNumberAsUint64(exports.dateToTimePoint(data)); },\n deserialize: function (buffer) { return exports.timePointToDate(buffer.getUint64AsNumber()); },\n }),\n time_point_sec: createType({\n name: 'time_point_sec',\n serialize: function (buffer, data) { buffer.pushUint32(exports.dateToTimePointSec(data)); },\n deserialize: function (buffer) { return exports.timePointSecToDate(buffer.getUint32()); },\n }),\n block_timestamp_type: createType({\n name: 'block_timestamp_type',\n serialize: function (buffer, data) { buffer.pushUint32(exports.dateToBlockTimestamp(data)); },\n deserialize: function (buffer) { return exports.blockTimestampToDate(buffer.getUint32()); },\n }),\n symbol_code: createType({\n name: 'symbol_code',\n serialize: function (buffer, data) { buffer.pushSymbolCode(data); },\n deserialize: function (buffer) { return buffer.getSymbolCode(); },\n }),\n symbol: createType({\n name: 'symbol',\n serialize: function (buffer, data) { buffer.pushSymbol(exports.stringToSymbol(data)); },\n deserialize: function (buffer) { return exports.symbolToString(buffer.getSymbol()); },\n }),\n asset: createType({\n name: 'asset',\n serialize: function (buffer, data) { buffer.pushAsset(data); },\n deserialize: function (buffer) { return buffer.getAsset(); },\n }),\n checksum160: createType({\n name: 'checksum160',\n serialize: function (buffer, data) { buffer.pushUint8ArrayChecked(exports.hexToUint8Array(data), 20); },\n deserialize: function (buffer) { return exports.arrayToHex(buffer.getUint8Array(20)); },\n }),\n checksum256: createType({\n name: 'checksum256',\n serialize: function (buffer, data) { buffer.pushUint8ArrayChecked(exports.hexToUint8Array(data), 32); },\n deserialize: function (buffer) { return exports.arrayToHex(buffer.getUint8Array(32)); },\n }),\n checksum512: createType({\n name: 'checksum512',\n serialize: function (buffer, data) { buffer.pushUint8ArrayChecked(exports.hexToUint8Array(data), 64); },\n deserialize: function (buffer) { return exports.arrayToHex(buffer.getUint8Array(64)); },\n }),\n public_key: createType({\n name: 'public_key',\n serialize: function (buffer, data) { buffer.pushPublicKey(data); },\n deserialize: function (buffer) { return buffer.getPublicKey(); },\n }),\n private_key: createType({\n name: 'private_key',\n serialize: function (buffer, data) { buffer.pushPrivateKey(data); },\n deserialize: function (buffer) { return buffer.getPrivateKey(); },\n }),\n signature: createType({\n name: 'signature',\n serialize: function (buffer, data) { buffer.pushSignature(data); },\n deserialize: function (buffer) { return buffer.getSignature(); },\n }),\n }));\n result.set('extended_asset', createType({\n name: 'extended_asset',\n baseName: '',\n fields: [\n { name: 'quantity', typeName: 'asset', type: result.get('asset') },\n { name: 'contract', typeName: 'name', type: result.get('name') },\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n return result;\n}; // createInitialTypes()\nexports.createInitialTypes = createInitialTypes;\n/** Get type from `types` */\nvar getType = function (types, name) {\n var type = types.get(name);\n if (type && type.aliasOfName) {\n return exports.getType(types, type.aliasOfName);\n }\n if (type) {\n return type;\n }\n if (name.endsWith('[]')) {\n return createType({\n name: name,\n arrayOf: exports.getType(types, name.substr(0, name.length - 2)),\n serialize: serializeArray,\n deserialize: deserializeArray,\n });\n }\n if (name.endsWith('?')) {\n return createType({\n name: name,\n optionalOf: exports.getType(types, name.substr(0, name.length - 1)),\n serialize: serializeOptional,\n deserialize: deserializeOptional,\n });\n }\n if (name.endsWith('$')) {\n return createType({\n name: name,\n extensionOf: exports.getType(types, name.substr(0, name.length - 1)),\n serialize: serializeExtension,\n deserialize: deserializeExtension,\n });\n }\n throw new Error('Unknown type: ' + name);\n};\nexports.getType = getType;\n/**\n * Get types from abi\n *\n * @param initialTypes Set of types to build on.\n * In most cases, it's best to fill this from a fresh call to `getTypesFromAbi()`.\n */\nvar getTypesFromAbi = function (initialTypes, abi) {\n var e_5, _a, e_6, _b, e_7, _c, e_8, _d, e_9, _e;\n var types = new Map(initialTypes);\n if (abi.types) {\n try {\n for (var _f = __values(abi.types), _g = _f.next(); !_g.done; _g = _f.next()) {\n var _h = _g.value, new_type_name = _h.new_type_name, type = _h.type;\n types.set(new_type_name, createType({ name: new_type_name, aliasOfName: type }));\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_a = _f.return)) _a.call(_f);\n }\n finally { if (e_5) throw e_5.error; }\n }\n }\n if (abi.structs) {\n try {\n for (var _j = __values(abi.structs), _k = _j.next(); !_k.done; _k = _j.next()) {\n var _l = _k.value, name_1 = _l.name, base = _l.base, fields = _l.fields;\n types.set(name_1, createType({\n name: name_1,\n baseName: base,\n fields: fields.map(function (_a) {\n var n = _a.name, type = _a.type;\n return ({ name: n, typeName: type, type: null });\n }),\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_k && !_k.done && (_b = _j.return)) _b.call(_j);\n }\n finally { if (e_6) throw e_6.error; }\n }\n }\n if (abi.variants) {\n try {\n for (var _m = __values(abi.variants), _o = _m.next(); !_o.done; _o = _m.next()) {\n var _p = _o.value, name_2 = _p.name, t = _p.types;\n types.set(name_2, createType({\n name: name_2,\n fields: t.map(function (s) { return ({ name: s, typeName: s, type: null }); }),\n serialize: serializeVariant,\n deserialize: deserializeVariant,\n }));\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (_o && !_o.done && (_c = _m.return)) _c.call(_m);\n }\n finally { if (e_7) throw e_7.error; }\n }\n }\n try {\n for (var types_1 = __values(types), types_1_1 = types_1.next(); !types_1_1.done; types_1_1 = types_1.next()) {\n var _q = __read(types_1_1.value, 2), name_3 = _q[0], type = _q[1];\n if (type.baseName) {\n type.base = exports.getType(types, type.baseName);\n }\n try {\n for (var _r = (e_9 = void 0, __values(type.fields)), _s = _r.next(); !_s.done; _s = _r.next()) {\n var field = _s.value;\n field.type = exports.getType(types, field.typeName);\n }\n }\n catch (e_9_1) { e_9 = { error: e_9_1 }; }\n finally {\n try {\n if (_s && !_s.done && (_e = _r.return)) _e.call(_r);\n }\n finally { if (e_9) throw e_9.error; }\n }\n }\n }\n catch (e_8_1) { e_8 = { error: e_8_1 }; }\n finally {\n try {\n if (types_1_1 && !types_1_1.done && (_d = types_1.return)) _d.call(types_1);\n }\n finally { if (e_8) throw e_8.error; }\n }\n return types;\n}; // getTypesFromAbi\nexports.getTypesFromAbi = getTypesFromAbi;\nvar reverseHex = function (h) {\n return h.substr(6, 2) + h.substr(4, 2) + h.substr(2, 2) + h.substr(0, 2);\n};\n/** TAPoS: Return transaction fields which reference `refBlock` and expire `expireSeconds` after `timestamp` */\nvar transactionHeader = function (refBlock, expireSeconds) {\n var timestamp = refBlock.header ? refBlock.header.timestamp : refBlock.timestamp;\n var prefix = parseInt(reverseHex(refBlock.id.substr(16, 8)), 16);\n return {\n expiration: exports.timePointSecToDate(exports.dateToTimePointSec(timestamp) + expireSeconds),\n ref_block_num: refBlock.block_num & 0xffff,\n ref_block_prefix: prefix,\n };\n};\nexports.transactionHeader = transactionHeader;\n/** Convert action data to serialized form (hex) */\nvar serializeActionData = function (contract, account, name, data, textEncoder, textDecoder) {\n var action = contract.actions.get(name);\n if (!action) {\n throw new Error(\"Unknown action \" + name + \" in contract \" + account);\n }\n var buffer = new SerialBuffer({ textEncoder: textEncoder, textDecoder: textDecoder });\n action.serialize(buffer, data);\n return exports.arrayToHex(buffer.asUint8Array());\n};\nexports.serializeActionData = serializeActionData;\n/** Return action in serialized form */\nvar serializeAction = function (contract, account, name, authorization, data, textEncoder, textDecoder) {\n return {\n account: account,\n name: name,\n authorization: authorization,\n data: exports.serializeActionData(contract, account, name, data, textEncoder, textDecoder),\n };\n};\nexports.serializeAction = serializeAction;\n/** Deserialize action data. If `data` is a `string`, then it's assumed to be in hex. */\nvar deserializeActionData = function (contract, account, name, data, textEncoder, textDecoder) {\n var action = contract.actions.get(name);\n if (typeof data === 'string') {\n data = exports.hexToUint8Array(data);\n }\n if (!action) {\n throw new Error(\"Unknown action \" + name + \" in contract \" + account);\n }\n var buffer = new SerialBuffer({ textDecoder: textDecoder, textEncoder: textEncoder });\n buffer.pushArray(data);\n return action.deserialize(buffer);\n};\nexports.deserializeActionData = deserializeActionData;\n/** Deserialize action. If `data` is a `string`, then it's assumed to be in hex. */\nvar deserializeAction = function (contract, account, name, authorization, data, textEncoder, textDecoder) {\n return {\n account: account,\n name: name,\n authorization: authorization,\n data: exports.deserializeActionData(contract, account, name, data, textEncoder, textDecoder),\n };\n};\nexports.deserializeAction = deserializeAction;\n//# sourceMappingURL=eosjs-serialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Serialize = exports.RpcError = exports.RpcInterfaces = exports.Numeric = exports.JsonRpc = exports.ApiInterfaces = exports.Api = void 0;\nvar eosjs_api_1 = require(\"./eosjs-api\");\nObject.defineProperty(exports, \"Api\", { enumerable: true, get: function () { return eosjs_api_1.Api; } });\nvar ApiInterfaces = require(\"./eosjs-api-interfaces\");\nexports.ApiInterfaces = ApiInterfaces;\nvar eosjs_jsonrpc_1 = require(\"./eosjs-jsonrpc\");\nObject.defineProperty(exports, \"JsonRpc\", { enumerable: true, get: function () { return eosjs_jsonrpc_1.JsonRpc; } });\nvar Numeric = require(\"./eosjs-numeric\");\nexports.Numeric = Numeric;\nvar RpcInterfaces = require(\"./eosjs-rpc-interfaces\");\nexports.RpcInterfaces = RpcInterfaces;\nvar eosjs_rpcerror_1 = require(\"./eosjs-rpcerror\");\nObject.defineProperty(exports, \"RpcError\", { enumerable: true, get: function () { return eosjs_rpcerror_1.RpcError; } });\nvar Serialize = require(\"./eosjs-serialize\");\nexports.Serialize = Serialize;\n//# sourceMappingURL=index.js.map","// https://gist.githubusercontent.com/wlzla000/bac83df6d3c51916c4dd0bc947e46947/raw/7ee3462b095ab22580ddaf191f44a590da6fe33b/RIPEMD-160.js\n\n/*\n\tRIPEMD-160.js\n\n\t\tdeveloped\n\t\t\tby K. (https://github.com/wlzla000)\n\t\t\ton December 27-29, 2017,\n\n\t\tlicensed under\n\n\n\t\tthe MIT license\n\n\t\tCopyright (c) 2017 K.\n\n\t\t Permission is hereby granted, free of charge, to any person\n\t\tobtaining a copy of this software and associated documentation\n\t\tfiles (the \"Software\"), to deal in the Software without\n\t\trestriction, including without limitation the rights to use,\n\t\tcopy, modify, merge, publish, distribute, sublicense, and/or\n\t\tsell copies of the Software, and to permit persons to whom the\n\t\tSoftware is furnished to do so, subject to the following\n\t\tconditions:\n\n\t\t The above copyright notice and this permission notice shall be\n\t\tincluded in all copies or substantial portions of the Software.\n\n\t\t THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n\t\tEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n\t\tOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n\t\tNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n\t\tHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n\t\tWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n\t\tFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n\t\tOTHER DEALINGS IN THE SOFTWARE.\n*/\n/* eslint-disable */\n\n\"use strict\";\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar RIPEMD160 = function () {\n function RIPEMD160() {\n // https://webcache.googleusercontent.com/search?q=cache:CnLOgolTHYEJ:https://www.cosic.esat.kuleuven.be/publications/article-317.pdf\n // http://shodhganga.inflibnet.ac.in/bitstream/10603/22978/13/13_appendix.pdf\n\n _classCallCheck(this, RIPEMD160);\n }\n\n _createClass(RIPEMD160, null, [{\n key: \"get_n_pad_bytes\",\n value: function get_n_pad_bytes(message_size /* in bytes, 1 byte is 8 bits. */) {\n // Obtain the number of bytes needed to pad the message.\n // It does not contain the size of the message size information.\n /*\n https://webcache.googleusercontent.com/search?q=cache:CnLOgolTHYEJ:https://www.cosic.esat.kuleuven.be/publications/article-317.pdf\n The Cryptographic Hash Function RIPEMD-160\n written by\n Bart Preneel,\n Hans Dobbertin,\n Antoon Bosselaers\n in\n 1997.\n --------------------------------------------------\n §5 Description of RIPEMD-160\n ......\n In order to guarantee that the total input size is a\n multiple of 512 bits, the input is padded in the same\n way as for all the members of the MD4-family: one\n appends a single 1 followed by a string of 0s (the\n number of 0s lies between 0 and 511); the last 64 bits\n of the extended input contain the binary representation\n of the input size in bits, least significant byte first.\n */\n /*\n https://tools.ietf.org/rfc/rfc1186.txt\n RFC 1186: MD4 Message Digest Algorithm.\n written by\n Ronald Linn Rivest\n in\n October 1990.\n --------------------------------------------------\n §3 MD4 Algorithm Description\n ......\n Step 1. Append padding bits\n The message is \"padded\" (extended) so that its length\n (in bits) is congruent to 448, modulo 512. That is, the\n message is extended so that it is just 64 bits shy of\n being a multiple of 512 bits long. Padding is always\n performed, even if the length of the message is already\n congruent to 448, modulo 512 (in which case 512 bits of\n padding are added).\n Padding is performed as follows: a single \"1\" bit is\n appended to the message, and then enough zero bits are\n appended so that the length in bits of the padded\n message becomes congruent to 448, modulo 512.\n Step 2. Append length\n A 64-bit representation of b (the length of the message\n before the padding bits were added) is appended to the\n result of the previous step. In the unlikely event that\n b is greater than 2^64, then only the low-order 64 bits\n of b are used. (These bits are appended as two 32-bit\n words and appended low-order word first in accordance\n with the previous conventions.)\n At this point the resulting message (after padding with\n bits and with b) has a length that is an exact multiple\n of 512 bits. Equivalently, this message has a length\n that is an exact multiple of 16 (32-bit) words. Let\n M[0 ... N-1] denote the words of the resulting message,\n where N is a multiple of 16.\n */\n // https://crypto.stackexchange.com/a/32407/54568\n /*\n Example case # 1\n [0 bit: message.]\n [1 bit: 1.]\n [447 bits: 0.]\n [64 bits: message size information.]\n Example case # 2\n [512-bits: message]\n [1 bit: 1.]\n [447 bits: 0.]\n [64 bits: message size information.]\n Example case # 3\n [(512 - 64 = 448) bits: message.]\n [1 bit: 1.]\n [511 bits: 0.]\n [64 bits: message size information.]\n Example case # 4\n [(512 - 65 = 447) bits: message.]\n [1 bit: 1.]\n [0 bit: 0.]\n [64 bits: message size information.]\n */\n // The number of padding zero bits:\n // 511 - [{(message size in bits) + 64} (mod 512)]\n return 64 - (message_size + 8 & 63 /* 63 */);\n }\n }, {\n key: \"pad\",\n value: function pad(message /* An ArrayBuffer. */) {\n var message_size = message.byteLength;\n var n_pad = RIPEMD160.get_n_pad_bytes(message_size);\n\n // `Number.MAX_SAFE_INTEGER` is ((2 ** 53) - 1) and\n // bitwise operation in Javascript is done on 32-bits operands.\n var divmod = function divmod(dividend, divisor) {\n return [Math.floor(dividend / divisor), dividend % divisor];\n };\n /*\n To shift\n 00000000 000????? ???????? ???????? ???????? ???????? ???????? ????????\n t o\n 00000000 ???????? ???????? ???????? ???????? ???????? ???????? ?????000\n --------------------------------------------------------------------------------\n Method #1\n 00000000 000????? ???????? ???????? ???????? ???????? ???????? ????????\n [00000000 000AAAAA AAAAAAAA AAAAAAAA] ( captured)\n [00000000 AAAAAAAA AAAAAAAA AAAAA000] ( shifted)\n ( captured) [BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB]\n ( shifted) [BBB][BBBBBBBB BBBBBBBB BBBBBBBB BBBBB000]\n [00000000 AAAAAAAA AAAAAAAA AAAAABBB] ( & merged)\n [00000000 AAAAAAAA AAAAAAAA AAAAABBB][BBBBBBBB BBBBBBBB BBBBBBBB BBBBB000]\n 00000000 ???????? ???????? ???????? ???????? ???????? ???????? ?????000\n const uint32_max_plus_1 = 0x100000000; // (2 ** 32)\n const [\n msg_byte_size_most, // Value range [0, (2 ** 21) - 1].\n msg_byte_size_least // Value range [0, (2 ** 32) - 1].\n ] = divmod(message_size, uint32_max_plus_1);\n const [\n carry, // Value range [0, 7].\n msg_bit_size_least // Value range [0, (2 ** 32) - 8].\n ] = divmod(message_byte_size_least * 8, uint32_max_plus_1);\n const message_bit_size_most = message_byte_size_most * 8\n + carry; // Value range [0, (2 ** 24) - 1].\n --------------------------------------------------------------------------------\n Method #2\n 00000000 000????? ???????? ???????? ???????? ???????? ???????? ????????\n [00000 000AAAAA AAAAAAAA AAAAAAAA AAA] ( captured)\n ( captured) [000BBBBB BBBBBBBB BBBBBBBB BBBBBBBB]\n ( shifted) [BBBBBBBB BBBBBBBB BBBBBBBB BBBBB000]\n [00000000 AAAAAAAA AAAAAAAA AAAAAAAA][BBBBBBBB BBBBBBBB BBBBBBBB BBBBB000]\n 00000000 ???????? ???????? ???????? ???????? ???????? ???????? ?????000\n */\n\n var _divmod$map = divmod(message_size, 536870912 /* (2 ** 29) */).map(function (x, index) {\n return index ? x * 8 : x;\n }),\n _divmod$map2 = _slicedToArray(_divmod$map, 2),\n msg_bit_size_most = _divmod$map2[0],\n msg_bit_size_least = _divmod$map2[1];\n\n // `ArrayBuffer.transfer()` is not supported.\n\n\n var padded = new Uint8Array(message_size + n_pad + 8);\n padded.set(new Uint8Array(message), 0);\n var data_view = new DataView(padded.buffer);\n data_view.setUint8(message_size, 128);\n data_view.setUint32(message_size + n_pad, msg_bit_size_least, true // Little-endian\n );\n data_view.setUint32(message_size + n_pad + 4, msg_bit_size_most, true // Little-endian\n );\n\n return padded.buffer;\n }\n }, {\n key: \"f\",\n value: function f(j, x, y, z) {\n if (0 <= j && j <= 15) {\n // Exclusive-OR\n return x ^ y ^ z;\n }\n if (16 <= j && j <= 31) {\n // Multiplexing (muxing)\n return x & y | ~x & z;\n }\n if (32 <= j && j <= 47) {\n return (x | ~y) ^ z;\n }\n if (48 <= j && j <= 63) {\n // Multiplexing (muxing)\n return x & z | y & ~z;\n }\n if (64 <= j && j <= 79) {\n return x ^ (y | ~z);\n }\n }\n }, {\n key: \"K\",\n value: function K(j) {\n if (0 <= j && j <= 15) {\n return 0x00000000;\n }\n if (16 <= j && j <= 31) {\n // Math.floor((2 ** 30) * Math.SQRT2)\n return 0x5A827999;\n }\n if (32 <= j && j <= 47) {\n // Math.floor((2 ** 30) * Math.sqrt(3))\n return 0x6ED9EBA1;\n }\n if (48 <= j && j <= 63) {\n // Math.floor((2 ** 30) * Math.sqrt(5))\n return 0x8F1BBCDC;\n }\n if (64 <= j && j <= 79) {\n // Math.floor((2 ** 30) * Math.sqrt(7))\n return 0xA953FD4E;\n }\n }\n }, {\n key: \"KP\",\n value: function KP(j) // K'\n {\n if (0 <= j && j <= 15) {\n // Math.floor((2 ** 30) * Math.cbrt(2))\n return 0x50A28BE6;\n }\n if (16 <= j && j <= 31) {\n // Math.floor((2 ** 30) * Math.cbrt(3))\n return 0x5C4DD124;\n }\n if (32 <= j && j <= 47) {\n // Math.floor((2 ** 30) * Math.cbrt(5))\n return 0x6D703EF3;\n }\n if (48 <= j && j <= 63) {\n // Math.floor((2 ** 30) * Math.cbrt(7))\n return 0x7A6D76E9;\n }\n if (64 <= j && j <= 79) {\n return 0x00000000;\n }\n }\n }, {\n key: \"add_modulo32\",\n value: function add_modulo32() /* ...... */{\n // 1. Modulo addition (addition modulo) is associative.\n // https://proofwiki.org/wiki/Modulo_Addition_is_Associative\n // 2. Bitwise operation in Javascript\n // is done on 32-bits operands\n // and results in a 32-bits value.\n return Array.from(arguments).reduce(function (a, b) {\n return a + b;\n }, 0) | 0;\n }\n }, {\n key: \"rol32\",\n value: function rol32(value, count) {\n // Cyclic left shift (rotate) on 32-bits value.\n return value << count | value >>> 32 - count;\n }\n }, {\n key: \"hash\",\n value: function hash(message /* An ArrayBuffer. */) {\n ////////// Padding //////////\n\n // The padded message.\n var padded = RIPEMD160.pad(message);\n\n ////////// Compression //////////\n\n // Message word selectors.\n var r = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\n var rP = [// r'\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\n\n // Amounts for 'rotate left' operation.\n var s = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\n var sP = [// s'\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\n\n // The size, in bytes, of a word.\n var word_size = 4;\n\n // The size, in bytes, of a 16-words block.\n var block_size = 64;\n\n // The number of the 16-words blocks.\n var t = padded.byteLength / block_size;\n\n // The message after padding consists of t 16-word blocks that\n // are denoted with X_i[j], with 0≤i≤(t − 1) and 0≤j≤15.\n var X = new Array(t).fill(undefined).map(function (_, i) {\n return function (j) {\n return new DataView(padded, i * block_size, block_size).getUint32(j * word_size, true // Little-endian\n );\n };\n });\n\n // The result of RIPEMD-160 is contained in five 32-bit words,\n // which form the internal state of the algorithm. The final\n // content of these five 32-bit words is converted to a 160-bit\n // string, again using the little-endian convention.\n var h = [0x67452301, // h_0\n 0xEFCDAB89, // h_1\n 0x98BADCFE, // h_2\n 0x10325476, // h_3\n 0xC3D2E1F0 // h_4\n ];\n\n for (var i = 0; i < t; ++i) {\n var A = h[0],\n B = h[1],\n C = h[2],\n D = h[3],\n E = h[4];\n var AP = A,\n BP = B,\n CP = C,\n DP = D,\n EP = E;\n for (var j = 0; j < 80; ++j) {\n // Left rounds\n var _T = RIPEMD160.add_modulo32(RIPEMD160.rol32(RIPEMD160.add_modulo32(A, RIPEMD160.f(j, B, C, D), X[i](r[j]), RIPEMD160.K(j)), s[j]), E);\n A = E;\n E = D;\n D = RIPEMD160.rol32(C, 10);\n C = B;\n B = _T;\n\n // Right rounds\n _T = RIPEMD160.add_modulo32(RIPEMD160.rol32(RIPEMD160.add_modulo32(AP, RIPEMD160.f(79 - j, BP, CP, DP), X[i](rP[j]), RIPEMD160.KP(j)), sP[j]), EP);\n AP = EP;\n EP = DP;\n DP = RIPEMD160.rol32(CP, 10);\n CP = BP;\n BP = _T;\n }\n var T = RIPEMD160.add_modulo32(h[1], C, DP);\n h[1] = RIPEMD160.add_modulo32(h[2], D, EP);\n h[2] = RIPEMD160.add_modulo32(h[3], E, AP);\n h[3] = RIPEMD160.add_modulo32(h[4], A, BP);\n h[4] = RIPEMD160.add_modulo32(h[0], B, CP);\n h[0] = T;\n }\n\n // The final output string then consists of the concatenatation\n // of h_0, h_1, h_2, h_3, and h_4 after converting each h_i to a\n // 4-byte string using the little-endian convention.\n var result = new ArrayBuffer(20);\n var data_view = new DataView(result);\n h.forEach(function (h_i, i) {\n return data_view.setUint32(i * 4, h_i, true);\n });\n return result;\n }\n }]);\n\n return RIPEMD160;\n}();\n\nmodule.exports = {\n RIPEMD160: RIPEMD160\n};\n","/**\n * Code refactored from Mozilla Developer Network:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n */\n\n'use strict';\n\nfunction assign(target, firstSource) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nfunction polyfill() {\n if (!Object.assign) {\n Object.defineProperty(Object, 'assign', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: assign\n });\n }\n}\n\nmodule.exports = {\n assign: assign,\n polyfill: polyfill\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","(function (root, factory) {\n // Hack to make all exports of this module sha256 function object properties.\n var exports = {};\n factory(exports);\n var sha256 = exports[\"default\"];\n for (var k in exports) {\n sha256[k] = exports[k];\n }\n \n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = sha256;\n } else if (typeof define === 'function' && define.amd) {\n define(function() { return sha256; }); \n } else {\n root.sha256 = sha256;\n }\n})(this, function(exports) {\n\"use strict\";\nexports.__esModule = true;\n// SHA-256 (+ HMAC and PBKDF2) for JavaScript.\n//\n// Written in 2014-2016 by Dmitry Chestnykh.\n// Public domain, no warranty.\n//\n// Functions (accept and return Uint8Arrays):\n//\n// sha256(message) -> hash\n// sha256.hmac(key, message) -> mac\n// sha256.pbkdf2(password, salt, rounds, dkLen) -> dk\n//\n// Classes:\n//\n// new sha256.Hash()\n// new sha256.HMAC(key)\n//\nexports.digestLength = 32;\nexports.blockSize = 64;\n// SHA-256 constants\nvar K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n var a, b, c, d, e, f, g, h, u, i, j, t1, t2;\n while (len >= 64) {\n a = v[0];\n b = v[1];\n c = v[2];\n d = v[3];\n e = v[4];\n f = v[5];\n g = v[6];\n h = v[7];\n for (i = 0; i < 16; i++) {\n j = pos + i * 4;\n w[i] = (((p[j] & 0xff) << 24) | ((p[j + 1] & 0xff) << 16) |\n ((p[j + 2] & 0xff) << 8) | (p[j + 3] & 0xff));\n }\n for (i = 16; i < 64; i++) {\n u = w[i - 2];\n t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (i = 0; i < 64; i++) {\n t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\n// Hash implements SHA256 hash algorithm.\nvar Hash = /** @class */ (function () {\n function Hash() {\n this.digestLength = exports.digestLength;\n this.blockSize = exports.blockSize;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this.state = new Int32Array(8); // hash state\n this.temp = new Int32Array(64); // temporary state\n this.buffer = new Uint8Array(128); // buffer for data to hash\n this.bufferLength = 0; // number of bytes in buffer\n this.bytesHashed = 0; // number of total bytes hashed\n this.finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n // Resets hash state making it possible\n // to re-use this instance to hash other data.\n Hash.prototype.reset = function () {\n this.state[0] = 0x6a09e667;\n this.state[1] = 0xbb67ae85;\n this.state[2] = 0x3c6ef372;\n this.state[3] = 0xa54ff53a;\n this.state[4] = 0x510e527f;\n this.state[5] = 0x9b05688c;\n this.state[6] = 0x1f83d9ab;\n this.state[7] = 0x5be0cd19;\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n return this;\n };\n // Cleans internal buffers and re-initializes hash state.\n Hash.prototype.clean = function () {\n for (var i = 0; i < this.buffer.length; i++) {\n this.buffer[i] = 0;\n }\n for (var i = 0; i < this.temp.length; i++) {\n this.temp[i] = 0;\n }\n this.reset();\n };\n // Updates hash state with the given data.\n //\n // Optionally, length of the data can be specified to hash\n // fewer bytes than data.length.\n //\n // Throws error when trying to update already finalized hash:\n // instance must be reset to use it again.\n Hash.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this.finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this.bytesHashed += dataLength;\n if (this.bufferLength > 0) {\n while (this.bufferLength < 64 && dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this.bufferLength === 64) {\n hashBlocks(this.temp, this.state, this.buffer, 0, 64);\n this.bufferLength = 0;\n }\n }\n if (dataLength >= 64) {\n dataPos = hashBlocks(this.temp, this.state, data, dataPos, dataLength);\n dataLength %= 64;\n }\n while (dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n // Finalizes hash state and puts hash into out.\n //\n // If hash was already finalized, puts the same value.\n Hash.prototype.finish = function (out) {\n if (!this.finished) {\n var bytesHashed = this.bytesHashed;\n var left = this.bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this.buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this.buffer[i] = 0;\n }\n this.buffer[padLength - 8] = (bitLenHi >>> 24) & 0xff;\n this.buffer[padLength - 7] = (bitLenHi >>> 16) & 0xff;\n this.buffer[padLength - 6] = (bitLenHi >>> 8) & 0xff;\n this.buffer[padLength - 5] = (bitLenHi >>> 0) & 0xff;\n this.buffer[padLength - 4] = (bitLenLo >>> 24) & 0xff;\n this.buffer[padLength - 3] = (bitLenLo >>> 16) & 0xff;\n this.buffer[padLength - 2] = (bitLenLo >>> 8) & 0xff;\n this.buffer[padLength - 1] = (bitLenLo >>> 0) & 0xff;\n hashBlocks(this.temp, this.state, this.buffer, 0, padLength);\n this.finished = true;\n }\n for (var i = 0; i < 8; i++) {\n out[i * 4 + 0] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return this;\n };\n // Returns the final hash digest.\n Hash.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n // Internal function for use in HMAC for optimization.\n Hash.prototype._saveState = function (out) {\n for (var i = 0; i < this.state.length; i++) {\n out[i] = this.state[i];\n }\n };\n // Internal function for use in HMAC for optimization.\n Hash.prototype._restoreState = function (from, bytesHashed) {\n for (var i = 0; i < this.state.length; i++) {\n this.state[i] = from[i];\n }\n this.bytesHashed = bytesHashed;\n this.finished = false;\n this.bufferLength = 0;\n };\n return Hash;\n}());\nexports.Hash = Hash;\n// HMAC implements HMAC-SHA256 message authentication algorithm.\nvar HMAC = /** @class */ (function () {\n function HMAC(key) {\n this.inner = new Hash();\n this.outer = new Hash();\n this.blockSize = this.inner.blockSize;\n this.digestLength = this.inner.digestLength;\n var pad = new Uint8Array(this.blockSize);\n if (key.length > this.blockSize) {\n (new Hash()).update(key).finish(pad).clean();\n }\n else {\n for (var i = 0; i < key.length; i++) {\n pad[i] = key[i];\n }\n }\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n this.inner.update(pad);\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n this.outer.update(pad);\n this.istate = new Uint32Array(8);\n this.ostate = new Uint32Array(8);\n this.inner._saveState(this.istate);\n this.outer._saveState(this.ostate);\n for (var i = 0; i < pad.length; i++) {\n pad[i] = 0;\n }\n }\n // Returns HMAC state to the state initialized with key\n // to make it possible to run HMAC over the other data with the same\n // key without creating a new instance.\n HMAC.prototype.reset = function () {\n this.inner._restoreState(this.istate, this.inner.blockSize);\n this.outer._restoreState(this.ostate, this.outer.blockSize);\n return this;\n };\n // Cleans HMAC state.\n HMAC.prototype.clean = function () {\n for (var i = 0; i < this.istate.length; i++) {\n this.ostate[i] = this.istate[i] = 0;\n }\n this.inner.clean();\n this.outer.clean();\n };\n // Updates state with provided data.\n HMAC.prototype.update = function (data) {\n this.inner.update(data);\n return this;\n };\n // Finalizes HMAC and puts the result in out.\n HMAC.prototype.finish = function (out) {\n if (this.outer.finished) {\n this.outer.finish(out);\n }\n else {\n this.inner.finish(out);\n this.outer.update(out, this.digestLength).finish(out);\n }\n return this;\n };\n // Returns message authentication code.\n HMAC.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n return HMAC;\n}());\nexports.HMAC = HMAC;\n// Returns SHA256 hash of data.\nfunction hash(data) {\n var h = (new Hash()).update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n// Function hash is both available as module.hash and as default export.\nexports[\"default\"] = hash;\n// Returns HMAC-SHA256 of data under the key.\nfunction hmac(key, data) {\n var h = (new HMAC(key)).update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hmac = hmac;\n// Fills hkdf buffer like this:\n// T(1) = HMAC-Hash(PRK, T(0) | info | 0x01)\nfunction fillBuffer(buffer, hmac, info, counter) {\n // Counter is a byte value: check if it overflowed.\n var num = counter[0];\n if (num === 0) {\n throw new Error(\"hkdf: cannot expand more\");\n }\n // Prepare HMAC instance for new data with old key.\n hmac.reset();\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (num > 1) {\n hmac.update(buffer);\n }\n // Hash in info if it exists.\n if (info) {\n hmac.update(info);\n }\n // Hash in the counter.\n hmac.update(counter);\n // Output result to buffer and clean HMAC instance.\n hmac.finish(buffer);\n // Increment counter inside typed array, this works properly.\n counter[0]++;\n}\nvar hkdfSalt = new Uint8Array(exports.digestLength); // Filled with zeroes.\nfunction hkdf(key, salt, info, length) {\n if (salt === void 0) { salt = hkdfSalt; }\n if (length === void 0) { length = 32; }\n var counter = new Uint8Array([1]);\n // HKDF-Extract uses salt as HMAC key, and key as data.\n var okm = hmac(salt, key);\n // Initialize HMAC for expanding with extracted key.\n // Ensure no collisions with `hmac` function.\n var hmac_ = new HMAC(okm);\n // Allocate buffer.\n var buffer = new Uint8Array(hmac_.digestLength);\n var bufpos = buffer.length;\n var out = new Uint8Array(length);\n for (var i = 0; i < length; i++) {\n if (bufpos === buffer.length) {\n fillBuffer(buffer, hmac_, info, counter);\n bufpos = 0;\n }\n out[i] = buffer[bufpos++];\n }\n hmac_.clean();\n buffer.fill(0);\n counter.fill(0);\n return out;\n}\nexports.hkdf = hkdf;\n// Derives a key from password and salt using PBKDF2-HMAC-SHA256\n// with the given number of iterations.\n//\n// The number of bytes returned is equal to dkLen.\n//\n// (For better security, avoid dkLen greater than hash length - 32 bytes).\nfunction pbkdf2(password, salt, iterations, dkLen) {\n var prf = new HMAC(password);\n var len = prf.digestLength;\n var ctr = new Uint8Array(4);\n var t = new Uint8Array(len);\n var u = new Uint8Array(len);\n var dk = new Uint8Array(dkLen);\n for (var i = 0; i * len < dkLen; i++) {\n var c = i + 1;\n ctr[0] = (c >>> 24) & 0xff;\n ctr[1] = (c >>> 16) & 0xff;\n ctr[2] = (c >>> 8) & 0xff;\n ctr[3] = (c >>> 0) & 0xff;\n prf.reset();\n prf.update(salt);\n prf.update(ctr);\n prf.finish(u);\n for (var j = 0; j < len; j++) {\n t[j] = u[j];\n }\n for (var j = 2; j <= iterations; j++) {\n prf.reset();\n prf.update(u).finish(u);\n for (var k = 0; k < len; k++) {\n t[k] ^= u[k];\n }\n }\n for (var j = 0; j < len && i * len + j < dkLen; j++) {\n dk[i * len + j] = t[j];\n }\n }\n for (var i = 0; i < len; i++) {\n t[i] = u[i] = 0;\n }\n for (var i = 0; i < 4; i++) {\n ctr[i] = 0;\n }\n prf.clean();\n return dk;\n}\nexports.pbkdf2 = pbkdf2;\n});\n","(function(l){function m(){}function k(a,c){a=void 0===a?\"utf-8\":a;c=void 0===c?{fatal:!1}:c;if(-1===r.indexOf(a.toLowerCase()))throw new RangeError(\"Failed to construct 'TextDecoder': The encoding label provided ('\"+a+\"') is invalid.\");if(c.fatal)throw Error(\"Failed to construct 'TextDecoder': the 'fatal' option is unsupported.\");}function t(a){return Buffer.from(a.buffer,a.byteOffset,a.byteLength).toString(\"utf-8\")}function u(a){var c=URL.createObjectURL(new Blob([a],{type:\"text/plain;charset=UTF-8\"}));\ntry{var f=new XMLHttpRequest;f.open(\"GET\",c,!1);f.send();return f.responseText}catch(e){return q(a)}finally{URL.revokeObjectURL(c)}}function q(a){for(var c=0,f=Math.min(65536,a.length+1),e=new Uint16Array(f),h=[],d=0;;){var b=c=f-1){h.push(String.fromCharCode.apply(null,e.subarray(0,d)));if(!b)return h.join(\"\");a=a.subarray(c);d=c=0}b=a[c++];if(0===(b&128))e[d++]=b;else if(192===(b&224)){var g=a[c++]&63;e[d++]=(b&31)<<6|g}else if(224===(b&240)){g=a[c++]&63;var n=a[c++]&63;e[d++]=\n(b&31)<<12|g<<6|n}else if(240===(b&248)){g=a[c++]&63;n=a[c++]&63;var v=a[c++]&63;b=(b&7)<<18|g<<12|n<<6|v;65535>>10&1023|55296,b=56320|b&1023);e[d++]=b}}}if(l.TextEncoder&&l.TextDecoder)return!1;var r=[\"utf-8\",\"utf8\",\"unicode-1-1-utf-8\"];Object.defineProperty(m.prototype,\"encoding\",{value:\"utf-8\"});m.prototype.encode=function(a,c){c=void 0===c?{stream:!1}:c;if(c.stream)throw Error(\"Failed to encode: the 'stream' option is unsupported.\");c=0;for(var f=a.length,e=0,h=Math.max(32,\nf+(f>>>1)+7),d=new Uint8Array(h>>>3<<3);c=b){if(c=b)continue}e+4>d.length&&(h+=8,h*=1+c/a.length*2,h=h>>>3<<3,g=new Uint8Array(h),g.set(d),d=g);if(0===(b&4294967168))d[e++]=b;else{if(0===(b&4294965248))d[e++]=b>>>6&31|192;else if(0===(b&4294901760))d[e++]=b>>>12&15|224,d[e++]=b>>>6&63|128;else if(0===(b&4292870144))d[e++]=b>>>18&7|240,d[e++]=b>>>12&\n63|128,d[e++]=b>>>6&63|128;else continue;d[e++]=b&63|128}}return d.slice?d.slice(0,e):d.subarray(0,e)};Object.defineProperty(k.prototype,\"encoding\",{value:\"utf-8\"});Object.defineProperty(k.prototype,\"fatal\",{value:!1});Object.defineProperty(k.prototype,\"ignoreBOM\",{value:!1});var p=q;\"function\"===typeof Buffer&&Buffer.from?p=t:\"function\"===typeof Blob&&\"function\"===typeof URL&&\"function\"===typeof URL.createObjectURL&&(p=u);k.prototype.decode=function(a,c){c=void 0===c?{stream:!1}:c;if(c.stream)throw Error(\"Failed to decode: the 'stream' option is unsupported.\");\na=a instanceof Uint8Array?a:a.buffer instanceof ArrayBuffer?new Uint8Array(a.buffer):new Uint8Array(a);return p(a)};l.TextEncoder=m;l.TextDecoder=k})(\"undefined\"!==typeof window?window:\"undefined\"!==typeof global?global:this);\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nconst {\n URLWithLegacySupport,\n format,\n URLSearchParams,\n defaultBase\n} = require('./src/url');\nconst relative = require('./src/relative');\n\nmodule.exports = {\n URL: URLWithLegacySupport,\n URLSearchParams,\n format,\n relative,\n defaultBase\n};\n","'use strict';\n\nconst { URLWithLegacySupport, format } = require('./url');\n\nmodule.exports = (url, location = {}, protocolMap = {}, defaultProtocol) => {\n let protocol = location.protocol ?\n location.protocol.replace(':', '') :\n 'http';\n\n // Check protocol map\n protocol = (protocolMap[protocol] || defaultProtocol || protocol) + ':';\n let urlParsed;\n\n try {\n urlParsed = new URLWithLegacySupport(url);\n } catch (err) {\n urlParsed = {};\n }\n\n const base = Object.assign({}, location, {\n protocol: protocol || urlParsed.protocol,\n host: location.host || urlParsed.host\n });\n\n return new URLWithLegacySupport(url, format(base)).toString();\n};\n","'use strict';\n\nconst defaultBase = self.location ?\n self.location.protocol + '//' + self.location.host :\n '';\nconst URL = self.URL;\n\nclass URLWithLegacySupport {\n constructor(url = '', base = defaultBase) {\n this.super = new URL(url, base);\n this.path = this.pathname + this.search;\n this.auth =\n this.username && this.password ?\n this.username + ':' + this.password :\n null;\n\n this.query =\n this.search && this.search.startsWith('?') ?\n this.search.slice(1) :\n null;\n }\n\n get hash() {\n return this.super.hash;\n }\n get host() {\n return this.super.host;\n }\n get hostname() {\n return this.super.hostname;\n }\n get href() {\n return this.super.href;\n }\n get origin() {\n return this.super.origin;\n }\n get password() {\n return this.super.password;\n }\n get pathname() {\n return this.super.pathname;\n }\n get port() {\n return this.super.port;\n }\n get protocol() {\n return this.super.protocol;\n }\n get search() {\n return this.super.search;\n }\n get searchParams() {\n return this.super.searchParams;\n }\n get username() {\n return this.super.username;\n }\n\n set hash(hash) {\n this.super.hash = hash;\n }\n set host(host) {\n this.super.host = host;\n }\n set hostname(hostname) {\n this.super.hostname = hostname;\n }\n set href(href) {\n this.super.href = href;\n }\n set origin(origin) {\n this.super.origin = origin;\n }\n set password(password) {\n this.super.password = password;\n }\n set pathname(pathname) {\n this.super.pathname = pathname;\n }\n set port(port) {\n this.super.port = port;\n }\n set protocol(protocol) {\n this.super.protocol = protocol;\n }\n set search(search) {\n this.super.search = search;\n }\n set searchParams(searchParams) {\n this.super.searchParams = searchParams;\n }\n set username(username) {\n this.super.username = username;\n }\n\n createObjectURL(o) {\n return this.super.createObjectURL(o);\n }\n revokeObjectURL(o) {\n this.super.revokeObjectURL(o);\n }\n toJSON() {\n return this.super.toJSON();\n }\n toString() {\n return this.super.toString();\n }\n format() {\n return this.toString();\n }\n}\n\nfunction format(obj) {\n if (typeof obj === 'string') {\n const url = new URL(obj);\n\n return url.toString();\n }\n\n if (!(obj instanceof URL)) {\n const userPass =\n obj.username && obj.password ?\n `${obj.username}:${obj.password}@` :\n '';\n const auth = obj.auth ? obj.auth + '@' : '';\n const port = obj.port ? ':' + obj.port : '';\n const protocol = obj.protocol ? obj.protocol + '//' : '';\n const host = obj.host || '';\n const hostname = obj.hostname || '';\n const search = obj.search || (obj.query ? '?' + obj.query : '');\n const hash = obj.hash || '';\n const pathname = obj.pathname || '';\n const path = obj.path || pathname + search;\n\n return `${protocol}${userPass || auth}${host ||\n hostname + port}${path}${hash}`;\n }\n}\n\nmodule.exports = {\n URLWithLegacySupport,\n URLSearchParams: self.URLSearchParams,\n defaultBase,\n format\n};\n","// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nmodule.exports = ws\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var algorithm = is224 ? 'sha224' : 'sha256';\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(new Buffer(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","/*\r\n Copyright 2013 Daniel Wirtz \r\n Copyright 2009 The Closure Library Authors. All Rights Reserved.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS-IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license long.js (c) 2013 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/long.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"Long\"] = factory();\r\n\r\n})(this, function() {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @constructor\r\n */\r\n function Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n }\r\n\r\n // The internal representation of a long is the two given signed, 32-bit values.\r\n // We use 32-bit pieces because these are the size of integers on which\r\n // Javascript performs bit-operations. For operations like addition and\r\n // multiplication, we split each number into 16 bit pieces, which can easily be\r\n // multiplied within Javascript's floating-point representation without overflow\r\n // or change in sign.\r\n //\r\n // In the algorithms below, we frequently reduce the negative case to the\r\n // positive case by negating the input(s) and then post-processing the result.\r\n // Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n // a positive number, it overflows back into a negative). Not handling this\r\n // case would often result in infinite recursion.\r\n //\r\n // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n // methods on which they depend.\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\n Long.prototype.__isLong__;\r\n\r\n Object.defineProperty(Long.prototype, \"__isLong__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n /**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\n function isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n }\r\n\r\n /**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\n Long.isLong = isLong;\r\n\r\n /**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var INT_CACHE = {};\r\n\r\n /**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var UINT_CACHE = {};\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromInt = fromInt;\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromNumber(value, unsigned) {\r\n if (isNaN(value) || !isFinite(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromNumber = fromNumber;\r\n\r\n /**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromBits = fromBits;\r\n\r\n /**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\n var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n /**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromString = fromString;\r\n\r\n /**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromValue(val) {\r\n if (val /* is compatible */ instanceof Long)\r\n return val;\r\n if (typeof val === 'number')\r\n return fromNumber(val);\r\n if (typeof val === 'string')\r\n return fromString(val);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, val.unsigned);\r\n }\r\n\r\n /**\r\n * Converts the specified value to a Long.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @returns {!Long}\r\n */\r\n Long.fromValue = fromValue;\r\n\r\n // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n // no runtime penalty for these.\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_16_DBL = 1 << 16;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24_DBL = 1 << 24;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n /**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ZERO = fromInt(0);\r\n\r\n /**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\n Long.ZERO = ZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UZERO = fromInt(0, true);\r\n\r\n /**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\n Long.UZERO = UZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ONE = fromInt(1);\r\n\r\n /**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\n Long.ONE = ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UONE = fromInt(1, true);\r\n\r\n /**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\n Long.UONE = UONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var NEG_ONE = fromInt(-1);\r\n\r\n /**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\n Long.NEG_ONE = NEG_ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n /**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\n Long.MAX_VALUE = MAX_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n /**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\n Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n /**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\n Long.MIN_VALUE = MIN_VALUE;\r\n\r\n /**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\n var LongPrototype = Long.prototype;\r\n\r\n /**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\n LongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n };\r\n\r\n /**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\n LongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n };\r\n\r\n /**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\n LongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\n LongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\n LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\n LongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\n LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\n LongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.eq = LongPrototype.equals;\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n };\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.neq = LongPrototype.notEquals;\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lt = LongPrototype.lessThan;\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n /**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\n LongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n };\r\n\r\n /**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\n LongPrototype.comp = LongPrototype.compare;\r\n\r\n /**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\n LongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n };\r\n\r\n /**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\n LongPrototype.neg = LongPrototype.negate;\r\n\r\n /**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\n LongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\n LongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\n LongPrototype.sub = LongPrototype.subtract;\r\n\r\n /**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\n LongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\n LongPrototype.mul = LongPrototype.multiply;\r\n\r\n /**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\n LongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n };\r\n\r\n /**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\n LongPrototype.div = LongPrototype.divide;\r\n\r\n /**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\n LongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n return this.sub(this.div(divisor).mul(divisor));\r\n };\r\n\r\n /**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\n LongPrototype.mod = LongPrototype.modulo;\r\n\r\n /**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\n LongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n };\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n /**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\n LongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n };\r\n\r\n /**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\n LongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n };\r\n\r\n /**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.} Byte representation\r\n */\r\n LongPrototype.toBytes = function(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n }\r\n\r\n /**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.} Little endian byte representation\r\n */\r\n LongPrototype.toBytesLE = function() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n (lo >>> 8) & 0xff,\r\n (lo >>> 16) & 0xff,\r\n (lo >>> 24) & 0xff,\r\n hi & 0xff,\r\n (hi >>> 8) & 0xff,\r\n (hi >>> 16) & 0xff,\r\n (hi >>> 24) & 0xff\r\n ];\r\n }\r\n\r\n /**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.} Big endian byte representation\r\n */\r\n LongPrototype.toBytesBE = function() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n (hi >>> 24) & 0xff,\r\n (hi >>> 16) & 0xff,\r\n (hi >>> 8) & 0xff,\r\n hi & 0xff,\r\n (lo >>> 24) & 0xff,\r\n (lo >>> 16) & 0xff,\r\n (lo >>> 8) & 0xff,\r\n lo & 0xff\r\n ];\r\n }\r\n\r\n return Long;\r\n});\r\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","// Top level file is just a mixin of submodules & constants\n'use strict';\n\nconst { Deflate, deflate, deflateRaw, gzip } = require('./lib/deflate');\n\nconst { Inflate, inflate, inflateRaw, ungzip } = require('./lib/inflate');\n\nconst constants = require('./lib/zlib/constants');\n\nmodule.exports.Deflate = Deflate;\nmodule.exports.deflate = deflate;\nmodule.exports.deflateRaw = deflateRaw;\nmodule.exports.gzip = gzip;\nmodule.exports.Inflate = Inflate;\nmodule.exports.inflate = inflate;\nmodule.exports.inflateRaw = inflateRaw;\nmodule.exports.ungzip = ungzip;\nmodule.exports.constants = constants;\n","'use strict';\n\n\nconst zlib_deflate = require('./zlib/deflate');\nconst utils = require('./utils/common');\nconst strings = require('./utils/strings');\nconst msg = require('./zlib/messages');\nconst ZStream = require('./zlib/zstream');\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH,\n Z_OK, Z_STREAM_END,\n Z_DEFAULT_COMPRESSION,\n Z_DEFAULT_STRATEGY,\n Z_DEFLATED\n} = require('./zlib/constants');\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY\n }, options || {});\n\n let opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n let status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n let dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must\n * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending\n * buffers and call [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n let status, _flush_mode;\n\n if (this.ended) { return false; }\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n // Make sure avail_out > 6 to avoid repeating markers\n if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n status = zlib_deflate.deflate(strm, _flush_mode);\n\n // Ended => flush and finish\n if (status === Z_STREAM_END) {\n if (strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n }\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // Flush if out buffer full\n if (strm.avail_out === 0) {\n this.onData(strm.output);\n continue;\n }\n\n // Flush if requested and has data\n if (_flush_mode > 0 && strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array): output data.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n this.result = utils.flattenChunks(this.chunks);\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n const deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nmodule.exports.Deflate = Deflate;\nmodule.exports.deflate = deflate;\nmodule.exports.deflateRaw = deflateRaw;\nmodule.exports.gzip = gzip;\nmodule.exports.constants = require('./zlib/constants');\n","'use strict';\n\n\nconst zlib_inflate = require('./zlib/inflate');\nconst utils = require('./utils/common');\nconst strings = require('./utils/strings');\nconst msg = require('./zlib/messages');\nconst ZStream = require('./zlib/zstream');\nconst GZheader = require('./zlib/gzheader');\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_FINISH,\n Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR\n} = require('./zlib/constants');\n\n/* ===========================================================================*/\n\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n this.options = utils.assign({\n chunkSize: 1024 * 64,\n windowBits: 15,\n to: ''\n }, options || {});\n\n const opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n let status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer): input data\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE\n * flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,\n * `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. If end of stream detected,\n * [[Inflate#onEnd]] will be called.\n *\n * `flush_mode` is not needed for normal operation, because end of stream\n * detected automatically. You may try to use it for advanced things, but\n * this functionality was not tested.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n const dictionary = this.options.dictionary;\n let status, _flush_mode, last_avail_out;\n\n if (this.ended) return false;\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n // Convert data if needed\n if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, _flush_mode);\n\n if (status === Z_NEED_DICT && dictionary) {\n status = zlib_inflate.inflateSetDictionary(strm, dictionary);\n\n if (status === Z_OK) {\n status = zlib_inflate.inflate(strm, _flush_mode);\n } else if (status === Z_DATA_ERROR) {\n // Replace code with more verbose\n status = Z_NEED_DICT;\n }\n }\n\n // Skip snyc markers if more data follows and not raw mode\n while (strm.avail_in > 0 &&\n status === Z_STREAM_END &&\n strm.state.wrap > 0 &&\n data[strm.next_in] !== 0)\n {\n zlib_inflate.inflateReset(strm);\n status = zlib_inflate.inflate(strm, _flush_mode);\n }\n\n switch (status) {\n case Z_STREAM_ERROR:\n case Z_DATA_ERROR:\n case Z_NEED_DICT:\n case Z_MEM_ERROR:\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n // Remember real `avail_out` value, because we may patch out buffer content\n // to align utf8 strings boundaries.\n last_avail_out = strm.avail_out;\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END) {\n\n if (this.options.to === 'string') {\n\n let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n let tail = strm.next_out - next_out_utf8;\n let utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail & realign counters\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n\n this.onData(utf8str);\n\n } else {\n this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n }\n }\n }\n\n // Must repeat iteration if out buffer is full\n if (status === Z_OK && last_avail_out === 0) continue;\n\n // Finalize if end of stream reached.\n if (status === Z_STREAM_END) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return true;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|String): output data. When string output requested,\n * each chunk will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako');\n * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));\n * let output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n const inflator = new Inflate(options);\n\n inflator.push(input);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) throw inflator.msg || msg[inflator.err];\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nmodule.exports.Inflate = Inflate;\nmodule.exports.inflate = inflate;\nmodule.exports.inflateRaw = inflateRaw;\nmodule.exports.ungzip = inflate;\nmodule.exports.constants = require('./zlib/constants');\n","'use strict';\n\n\nconst _has = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nmodule.exports.assign = function (obj /*from1, from2, from3, ...*/) {\n const sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n const source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (const p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// Join array of chunks to single array.\nmodule.exports.flattenChunks = (chunks) => {\n // calculate data length\n let len = 0;\n\n for (let i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n const result = new Uint8Array(len);\n\n for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n let chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n};\n","// String encode/decode helpers\n'use strict';\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nlet STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nconst _utf8len = new Uint8Array(256);\nfor (let q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nmodule.exports.string2buf = (str) => {\n let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper\nconst buf2binstring = (buf, len) => {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if (buf.subarray && STR_APPLY_UIA_OK) {\n return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n }\n }\n\n let result = '';\n for (let i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n};\n\n\n// convert array to string\nmodule.exports.buf2string = (buf, max) => {\n let i, out;\n const len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n const utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n let c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n let c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nmodule.exports.utf8border = (buf, max) => {\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n let pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = (adler, buf, len, pos) => {\n let s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n};\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nconst makeTable = () => {\n let c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n};\n\n// Create table on load. Just 255 signed longs. Not a problem.\nconst crcTable = new Uint32Array(makeTable());\n\n\nconst crc32 = (crc, buf, len, pos) => {\n const t = crcTable;\n const end = pos + len;\n\n crc ^= -1;\n\n for (let i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n};\n\n\nmodule.exports = crc32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = require('./trees');\nconst adler32 = require('./adler32');\nconst crc32 = require('./crc32');\nconst msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_PARTIAL_FLUSH, Z_FULL_FLUSH, Z_FINISH, Z_BLOCK,\n Z_OK, Z_STREAM_END, Z_STREAM_ERROR, Z_DATA_ERROR, Z_BUF_ERROR,\n Z_DEFAULT_COMPRESSION,\n Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY,\n Z_UNKNOWN,\n Z_DEFLATED\n} = require('./constants');\n\n/*============================================================================*/\n\n\nconst MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_MEM_LEVEL = 8;\n\n\nconst LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nconst LITERALS = 256;\n/* number of literal bytes 0..255 */\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nconst D_CODES = 30;\n/* number of distance codes */\nconst BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nconst HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nconst MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\nconst MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nconst PRESET_DICT = 0x20;\n\nconst INIT_STATE = 42;\nconst EXTRA_STATE = 69;\nconst NAME_STATE = 73;\nconst COMMENT_STATE = 91;\nconst HCRC_STATE = 103;\nconst BUSY_STATE = 113;\nconst FINISH_STATE = 666;\n\nconst BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nconst BS_BLOCK_DONE = 2; /* block flush performed */\nconst BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nconst BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nconst OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nconst err = (strm, errorCode) => {\n strm.msg = msg[errorCode];\n return errorCode;\n};\n\nconst rank = (f) => {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n};\n\nconst zero = (buf) => {\n let len = buf.length; while (--len >= 0) { buf[len] = 0; }\n};\n\n\n/* eslint-disable new-cap */\nlet HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;\n// This hash causes less collisions, https://github.com/nodeca/pako/issues/135\n// But breaks binary compatibility\n//let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;\nlet HASH = HASH_ZLIB;\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nconst flush_pending = (strm) => {\n const s = strm.state;\n\n //_tr_flush_bits(s);\n let len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n};\n\n\nconst flush_block_only = (s, last) => {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n};\n\n\nconst put_byte = (s, b) => {\n s.pending_buf[s.pending++] = b;\n};\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nconst putShortMSB = (s, b) => {\n\n // put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n};\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nconst read_buf = (strm, buf, start, size) => {\n\n let len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n};\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nconst longest_match = (s, cur_match) => {\n\n let chain_length = s.max_chain_length; /* max hash chain length */\n let scan = s.strstart; /* current string */\n let match; /* matched string */\n let len; /* length of current match */\n let best_len = s.prev_length; /* best match length so far */\n let nice_match = s.nice_match; /* stop if match long enough */\n const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n const _win = s.window; // shortcut\n\n const wmask = s.w_mask;\n const prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n const strend = s.strstart + MAX_MATCH;\n let scan_end1 = _win[scan + best_len - 1];\n let scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n};\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nconst fill_window = (s) => {\n\n const _w_size = s.w_size;\n let p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n s.window.set(s.window.subarray(_w_size, _w_size + _w_size), 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// const curr = s.strstart + s.lookahead;\n// let init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n};\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nconst deflate_stored = (s, flush) => {\n\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n let max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n const max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n};\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nconst deflate_fast = (s, flush) => {\n\n let hash_head; /* head of the hash chain */\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nconst deflate_slow = (s, flush) => {\n\n let hash_head; /* head of hash chain */\n let bflush; /* set if current block must be flushed */\n\n let max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n};\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nconst deflate_rle = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n let prev; /* byte at distance one to match */\n let scan, strend; /* scan goes up to strend for length of run */\n\n const _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nconst deflate_huff = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nconst configuration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nconst lm_init = (s) => {\n\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n};\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2);\n this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2);\n this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new Uint16Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new Uint16Array(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nconst deflateResetKeep = (strm) => {\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n const s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n _tr_init(s);\n return Z_OK;\n};\n\n\nconst deflateReset = (strm) => {\n\n const ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n};\n\n\nconst deflateSetHeader = (strm, head) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n};\n\n\nconst deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {\n\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n let wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n const s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new Uint8Array(s.w_size * 2);\n s.head = new Uint16Array(s.hash_size);\n s.prev = new Uint16Array(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new Uint8Array(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n};\n\nconst deflateInit = (strm, level) => {\n\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n};\n\n\nconst deflate = (strm, flush) => {\n\n let beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n const s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n const old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n let header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n let level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n let bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n};\n\n\nconst deflateEnd = (strm) => {\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n const status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n};\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nconst deflateSetDictionary = (strm, dictionary) => {\n\n let dictLength = dictionary.length;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n const s = strm.state;\n const wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n let tmpDict = new Uint8Array(s.w_size);\n tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n const avail = strm.avail_in;\n const next = strm.next_in;\n const input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n let str = s.strstart;\n let n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n};\n\n\nmodule.exports.deflateInit = deflateInit;\nmodule.exports.deflateInit2 = deflateInit2;\nmodule.exports.deflateReset = deflateReset;\nmodule.exports.deflateResetKeep = deflateResetKeep;\nmodule.exports.deflateSetHeader = deflateSetHeader;\nmodule.exports.deflate = deflate;\nmodule.exports.deflateEnd = deflateEnd;\nmodule.exports.deflateSetDictionary = deflateSetDictionary;\nmodule.exports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.deflateBound = deflateBound;\nmodule.exports.deflateCopy = deflateCopy;\nmodule.exports.deflateParams = deflateParams;\nmodule.exports.deflatePending = deflatePending;\nmodule.exports.deflatePrime = deflatePrime;\nmodule.exports.deflateTune = deflateTune;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nconst BAD = 30; /* got a data error -- remain here until reset */\nconst TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n let _in; /* local strm.input */\n let last; /* have enough input while in < last */\n let _out; /* local strm.output */\n let beg; /* inflate()'s initial strm.output */\n let end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n let dmax; /* maximum distance from zlib header */\n//#endif\n let wsize; /* window size or zero if not using window */\n let whave; /* valid bytes in the window */\n let wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n let s_window; /* allocated sliding window, if wsize != 0 */\n let hold; /* local strm.hold */\n let bits; /* local strm.bits */\n let lcode; /* local strm.lencode */\n let dcode; /* local strm.distcode */\n let lmask; /* mask for first level of length codes */\n let dmask; /* mask for first level of distance codes */\n let here; /* retrieved table entry */\n let op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n let len; /* match length, unused bytes */\n let dist; /* match distance */\n let from; /* where to copy match from */\n let from_source;\n\n\n let input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n const state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = require('./adler32');\nconst crc32 = require('./crc32');\nconst inflate_fast = require('./inffast');\nconst inflate_table = require('./inftrees');\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_FINISH, Z_BLOCK, Z_TREES,\n Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR, Z_BUF_ERROR,\n Z_DEFLATED\n} = require('./constants');\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nconst HEAD = 1; /* i: waiting for magic header */\nconst FLAGS = 2; /* i: waiting for method and flags (gzip) */\nconst TIME = 3; /* i: waiting for modification time (gzip) */\nconst OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nconst EXLEN = 5; /* i: waiting for extra length (gzip) */\nconst EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nconst NAME = 7; /* i: waiting for end of file name (gzip) */\nconst COMMENT = 8; /* i: waiting for end of comment (gzip) */\nconst HCRC = 9; /* i: waiting for header crc (gzip) */\nconst DICTID = 10; /* i: waiting for dictionary check value */\nconst DICT = 11; /* waiting for inflateSetDictionary() call */\nconst TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nconst TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nconst STORED = 14; /* i: waiting for stored size (length and complement) */\nconst COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nconst COPY = 16; /* i/o: waiting for input or output to copy stored block */\nconst TABLE = 17; /* i: waiting for dynamic block table lengths */\nconst LENLENS = 18; /* i: waiting for code length code lengths */\nconst CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nconst LEN_ = 20; /* i: same as LEN below, but only first time in */\nconst LEN = 21; /* i: waiting for length/lit/eob code */\nconst LENEXT = 22; /* i: waiting for length extra bits */\nconst DIST = 23; /* i: waiting for distance code */\nconst DISTEXT = 24; /* i: waiting for distance extra bits */\nconst MATCH = 25; /* o: waiting for output space to copy string */\nconst LIT = 26; /* o: waiting for output space to write literal */\nconst CHECK = 27; /* i: waiting for 32-bit check value */\nconst LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nconst DONE = 29; /* finished check, done -- remain here until reset */\nconst BAD = 30; /* got a data error -- remain here until reset */\nconst MEM = 31; /* got an inflate() memory error -- remain here until reset */\nconst SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_WBITS = MAX_WBITS;\n\n\nconst zswap32 = (q) => {\n\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n};\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new Uint16Array(320); /* temporary storage for code lengths */\n this.work = new Uint16Array(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new Int32Array(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\n\nconst inflateResetKeep = (strm) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n const state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);\n state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n};\n\n\nconst inflateReset = (strm) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n const state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n};\n\n\nconst inflateReset2 = (strm, windowBits) => {\n let wrap;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n const state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n};\n\n\nconst inflateInit2 = (strm, windowBits) => {\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n const state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n const ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n};\n\n\nconst inflateInit = (strm) => {\n\n return inflateInit2(strm, DEF_WBITS);\n};\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nlet virgin = true;\n\nlet lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\nconst fixedtables = (state) => {\n\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n lenfix = new Int32Array(512);\n distfix = new Int32Array(32);\n\n /* literal/length table */\n let sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n};\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nconst updatewindow = (strm, src, end, copy) => {\n\n let dist;\n const state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new Uint8Array(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n state.window.set(src.subarray(end - state.wsize, end), 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n state.window.set(src.subarray(end - copy, end), 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n};\n\n\nconst inflate = (strm, flush) => {\n\n let state;\n let input, output; // input/output buffers\n let next; /* next input INDEX */\n let put; /* next output INDEX */\n let have, left; /* available input and output */\n let hold; /* bit buffer */\n let bits; /* bits in bit buffer */\n let _in, _out; /* save starting available input and output */\n let copy; /* number of stored or match bytes to copy */\n let from; /* where to copy match bytes from */\n let from_source;\n let here = 0; /* current decoding table entry */\n let here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //let last; /* parent table entry */\n let last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n let len; /* length to copy for repeats, bits to drop */\n let ret; /* return code */\n const hbuf = new Uint8Array(4); /* buffer for gzip header crc calculation */\n let opts;\n\n let n; // temporary variable for NEED_BITS\n\n const order = /* permutation of code lengths */\n new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n\n // !!! pako patch. Force use `options.windowBits` if passed.\n // Required to always use max window size by default.\n state.dmax = 1 << state.wbits;\n //state.dmax = 1 << len;\n\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Uint8Array(state.head.extra_len);\n }\n state.head.extra.set(\n input.subarray(\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n next + copy\n ),\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n output.set(input.subarray(next, next + copy), put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n};\n\n\nconst inflateEnd = (strm) => {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n let state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n};\n\n\nconst inflateGetHeader = (strm, head) => {\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n const state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n};\n\n\nconst inflateSetDictionary = (strm, dictionary) => {\n const dictLength = dictionary.length;\n\n let state;\n let dictid;\n let ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n};\n\n\nmodule.exports.inflateReset = inflateReset;\nmodule.exports.inflateReset2 = inflateReset2;\nmodule.exports.inflateResetKeep = inflateResetKeep;\nmodule.exports.inflateInit = inflateInit;\nmodule.exports.inflateInit2 = inflateInit2;\nmodule.exports.inflate = inflate;\nmodule.exports.inflateEnd = inflateEnd;\nmodule.exports.inflateGetHeader = inflateGetHeader;\nmodule.exports.inflateSetDictionary = inflateSetDictionary;\nmodule.exports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.inflateCopy = inflateCopy;\nmodule.exports.inflateGetDictionary = inflateGetDictionary;\nmodule.exports.inflateMark = inflateMark;\nmodule.exports.inflatePrime = inflatePrime;\nmodule.exports.inflateSync = inflateSync;\nmodule.exports.inflateSyncPoint = inflateSyncPoint;\nmodule.exports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst MAXBITS = 15;\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\nconst lbase = new Uint16Array([ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n]);\n\nconst lext = new Uint8Array([ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n]);\n\nconst dbase = new Uint16Array([ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n]);\n\nconst dext = new Uint8Array([ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n]);\n\nconst inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>\n{\n const bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n let len = 0; /* a code's length in bits */\n let sym = 0; /* index of code symbols */\n let min = 0, max = 0; /* minimum and maximum code lengths */\n let root = 0; /* number of index bits for root table */\n let curr = 0; /* number of index bits for current table */\n let drop = 0; /* code bits to drop for sub-table */\n let left = 0; /* number of prefix codes available */\n let used = 0; /* code entries in table used */\n let huff = 0; /* Huffman code */\n let incr; /* for incrementing code, index */\n let fill; /* index for replicating entries */\n let low; /* low bits for current root entry */\n let mask; /* mask for low root bits */\n let next; /* next available space in table */\n let base = null; /* base value table to use */\n let base_index = 0;\n// let shoextra; /* extra bits table to use */\n let end; /* use base and extra for symbol > end */\n const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n let extra = null;\n let extra_index = 0;\n\n let here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n\nmodule.exports = inflate_table;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//const Z_FILTERED = 1;\n//const Z_HUFFMAN_ONLY = 2;\n//const Z_RLE = 3;\nconst Z_FIXED = 4;\n//const Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nconst Z_BINARY = 0;\nconst Z_TEXT = 1;\n//const Z_ASCII = 1; // = Z_TEXT\nconst Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES = 2;\n/* The three kinds of block type */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nconst LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nconst LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nconst D_CODES = 30;\n/* number of distance codes */\n\nconst BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nconst HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nconst MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nconst MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nconst END_BLOCK = 256;\n/* end of block literal code */\n\nconst REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nconst REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nconst REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nconst extra_lbits = /* extra bits for each length code */\n new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);\n\nconst extra_dbits = /* extra bits for each distance code */\n new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\n\nconst extra_blbits = /* extra bits for each bit length code */\n new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);\n\nconst bl_order =\n new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nconst DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nconst static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nconst static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nconst _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nconst _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nconst base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nconst base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nlet static_l_desc;\nlet static_d_desc;\nlet static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nconst d_code = (dist) => {\n\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n};\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nconst put_short = (s, w) => {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n};\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nconst send_bits = (s, value, length) => {\n\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n};\n\n\nconst send_code = (s, c, tree) => {\n\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n};\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nconst bi_reverse = (code, len) => {\n\n let res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nconst bi_flush = (s) => {\n\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n};\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nconst gen_bitlen = (s, desc) =>\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n const tree = desc.dyn_tree;\n const max_code = desc.max_code;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const extra = desc.stat_desc.extra_bits;\n const base = desc.stat_desc.extra_base;\n const max_length = desc.stat_desc.max_length;\n let h; /* heap index */\n let n, m; /* iterate over the tree elements */\n let bits; /* bit length */\n let xbits; /* extra bits */\n let f; /* frequency */\n let overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n};\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nconst gen_codes = (tree, max_code, bl_count) =>\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n const next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n let code = 0; /* running code value */\n let bits; /* bit index */\n let n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< {\n\n let n; /* iterates over tree elements */\n let bits; /* bit counter */\n let length; /* length value */\n let code; /* code value */\n let dist; /* distance index */\n const bl_count = new Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n // do check in _tr_init()\n //if (static_init_done) return;\n\n /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n static_l_desc.static_tree = static_ltree;\n static_l_desc.extra_bits = extra_lbits;\n static_d_desc.static_tree = static_dtree;\n static_d_desc.extra_bits = extra_dbits;\n static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n /* Initialize the mapping length (0..255) -> length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n};\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nconst init_block = (s) => {\n\n let n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nconst bi_windup = (s) =>\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n};\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nconst copy_block = (s, buf, len, header) =>\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n s.pending_buf.set(s.window.subarray(buf, buf + len), s.pending);\n s.pending += len;\n};\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nconst smaller = (tree, n, m, depth) => {\n\n const _n2 = n * 2;\n const _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n};\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nconst pqdownheap = (s, tree, k) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n const v = s.heap[k];\n let j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n};\n\n\n// inlined manually\n// const SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nconst compress_block = (s, ltree, dtree) =>\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n let dist; /* distance of matched string */\n let lc; /* match length or unmatched char (if dist == 0) */\n let lx = 0; /* running index in l_buf */\n let code; /* the code to send */\n let extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n};\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nconst build_tree = (s, desc) =>\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n const tree = desc.dyn_tree;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const elems = desc.stat_desc.elems;\n let n, m; /* iterate over heap elements */\n let max_code = -1; /* largest code with non zero frequency */\n let node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n};\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nconst scan_tree = (s, tree, max_code) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nconst send_tree = (s, tree, max_code) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nconst build_bl_tree = (s) => {\n\n let max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n};\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nconst send_all_trees = (s, lcodes, dcodes, blcodes) =>\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n let rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n};\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nconst detect_data_type = (s) => {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n let black_mask = 0xf3ffc07f;\n let n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n};\n\n\nlet static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nconst _tr_init = (s) =>\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n};\n\n\n/* ===========================================================================\n * Send a stored block\n */\nconst _tr_stored_block = (s, buf, stored_len, last) =>\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n};\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nconst _tr_align = (s) => {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n};\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nconst _tr_flush_block = (s, buf, stored_len, last) =>\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n let opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n let max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n};\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nconst _tr_tally = (s, dist, lc) =>\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //let out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n};\n\nmodule.exports._tr_init = _tr_init;\nmodule.exports._tr_stored_block = _tr_stored_block;\nmodule.exports._tr_flush_block = _tr_flush_block;\nmodule.exports._tr_tally = _tr_tally;\nmodule.exports._tr_align = _tr_align;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n const posCount = Math.floor(version / 7) + 2\n const size = getSymbolSize(version)\n const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n const positions = [size - 7] // Last coord is always (size - 7)\n\n for (let i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const coords = []\n const pos = exports.getRowColCoords(version)\n const posLength = pos.length\n\n for (let i = 0; i < posLength; i++) {\n for (let j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n let i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n const bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n const bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = new Uint8Array(size * size)\n this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n const index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","const encodeUtf8 = require('encode-utf8')\nconst Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n this.data = new Uint8Array(encodeUtf8(data))\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (let i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n const data = ((errorCorrectionLevel.bit << 3) | mask)\n let d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n let x = 1\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n let i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n let value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n const size = data.size\n let points = 0\n let sameCountCol = 0\n let sameCountRow = 0\n let lastCol = null\n let lastRow = null\n\n for (let row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (let col = 0; col < size; col++) {\n let module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n const size = data.size\n let points = 0\n\n for (let row = 0; row < size - 1; row++) {\n for (let col = 0; col < size - 1; col++) {\n const last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n const size = data.size\n let points = 0\n let bitsCol = 0\n let bitsRow = 0\n\n for (let row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (let col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n let darkCount = 0\n const modulesCount = data.data.length\n\n for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n const size = data.size\n\n for (let col = 0; col < size; col++) {\n for (let row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n const numPatterns = Object.keys(exports.Patterns).length\n let bestPattern = 0\n let lowerPenalty = Infinity\n\n for (let p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n const penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n let i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n const remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Uint8Array} p1 Polynomial\n * @param {Uint8Array} p2 Polynomial\n * @return {Uint8Array} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n for (let i = 0; i < p1.length; i++) {\n for (let j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Uint8Array} divident Polynomial\n * @param {Uint8Array} divisor Polynomial\n * @return {Uint8Array} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n let result = new Uint8Array(divident)\n\n while ((result.length - divisor.length) >= 0) {\n const coeff = result[0]\n\n for (let i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n let offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Uint8Array} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n let poly = new Uint8Array([1])\n for (let i = 0; i < degree; i++) {\n poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n }\n\n return poly\n}\n","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n const size = matrix.size\n const pos = FinderPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n const size = matrix.size\n\n for (let r = 8; r < size - 8; r++) {\n const value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n const pos = AlignmentPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n const size = matrix.size\n const bits = Version.getEncodedBits(version)\n let row, col, mod\n\n for (let i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n const size = matrix.size\n const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n let i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Uint8Array} data Data codewords\n */\nfunction setupData (matrix, data) {\n const size = matrix.size\n let inc = -1\n let row = size - 1\n let bitIndex = 7\n let byteIndex = 0\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n let dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n const buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (let i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n const blocksInGroup2 = totalCodewords % ecTotalBlocks\n const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n const rs = new ReedSolomonEncoder(ecCount)\n\n let offset = 0\n const dcData = new Array(ecTotalBlocks)\n const ecData = new Array(ecTotalBlocks)\n let maxDataSize = 0\n const buffer = new Uint8Array(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (let b = 0; b < ecTotalBlocks; b++) {\n const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n const data = new Uint8Array(totalCodewords)\n let index = 0\n let i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n let segments\n\n if (Array.isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n let estimatedVersion = version\n\n if (!estimatedVersion) {\n const rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n const dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n const moduleCount = Utils.getSymbolSize(version)\n const modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n let errorCorrectionLevel = ECLevel.M\n let version\n let mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Uint8Array} data Buffer containing input data\n * @return {Uint8Array} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n const paddedData = new Uint8Array(data.length + this.degree)\n paddedData.set(data)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n const start = this.degree - remainder.length\n if (start > 0) {\n const buff = new Uint8Array(this.degree)\n buff.set(remainder, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n const segments = []\n let result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n let byteSegs\n let kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n const nodes = []\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n const table = {}\n const graph = { start: {} }\n let prevNodeIds = ['start']\n\n for (let i = 0; i < nodes.length; i++) {\n const nodeGroup = nodes[i]\n const currentNodeIds = []\n\n for (let j = 0; j < nodeGroup.length; j++) {\n const node = nodeGroup[j]\n const key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n const prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]].end = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n let mode\n const bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n const nodes = buildNodes(segs)\n const graph = buildGraph(nodes, version)\n const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n const optimizedSegs = []\n for (let i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","let toSJISFunction\nconst CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n let digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n let totalBits = 0\n\n segments.forEach(function (data) {\n const reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n const length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n let seg\n\n const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (Array.isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n let d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n let opts = options\n let canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n const ctx = canvasEl.getContext('2d')\n const image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n let opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n const canvasEl = exports.render(qrData, canvas, opts)\n\n const type = opts.type || 'image/png'\n const rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n const alpha = color.a / 255\n const str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n let str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n let path = ''\n let moveBy = 0\n let newRow = false\n let lineLength = 0\n\n for (let i = 0; i < data.length; i++) {\n const col = Math.floor(i % size)\n const row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n const opts = Utils.getOptions(options)\n const size = qrData.modules.size\n const data = qrData.modules.data\n const qrcodesize = size + opts.margin * 2\n\n const bg = !opts.color.light.a\n ? ''\n : ''\n\n const path =\n ''\n\n const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n const svgTag = '' + bg + path + '\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n let hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n const hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n const margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0\n ? 4\n : options.margin\n\n const width = options.width && options.width >= 21 ? options.width : undefined\n const scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n const scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n const size = qr.modules.size\n const data = qr.modules.data\n const scale = exports.getScale(size, opts)\n const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n const scaledMargin = opts.margin * scale\n const palette = [opts.color.light, opts.color.dark]\n\n for (let i = 0; i < symbolSize; i++) {\n for (let j = 0; j < symbolSize; j++) {\n let posDst = (i * symbolSize + j) * 4\n let pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n const iSrc = Math.floor((i - scaledMargin) / scale)\n const jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > 65536) throw new Error('requested too many random bytes')\n // in case browserify isn't using the Uint8Array version\n var rawBytes = new global.Uint8Array(size)\n\n // This will not work in older browsers.\n // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n if (size > 0) { // getRandomValues fails on IE if size == 0\n crypto.getRandomValues(rawBytes)\n }\n\n // XXX: phantomjs doesn't like a buffer being passed here\n var bytes = Buffer.from(rawBytes.buffer)\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\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","// 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});","// 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};","// 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}","// 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}","// 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};","'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;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // 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};","// 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;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\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;","'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};","module.exports = require('events').EventEmitter;\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","var RIPEMD160 = /** @class */ (function () {\r\n function RIPEMD160() {\r\n // https://webcache.googleusercontent.com/search?q=cache:CnLOgolTHYEJ:https://www.cosic.esat.kuleuven.be/publications/article-317.pdf\r\n // http://shodhganga.inflibnet.ac.in/bitstream/10603/22978/13/13_appendix.pdf\r\n }\r\n RIPEMD160.get_n_pad_bytes = function (message_size /* in bytes, 1 byte is 8 bits. */) {\r\n // Obtain the number of bytes needed to pad the message.\r\n // It does not contain the size of the message size information.\r\n /*\r\n https://webcache.googleusercontent.com/search?q=cache:CnLOgolTHYEJ:https://www.cosic.esat.kuleuven.be/publications/article-317.pdf\r\n \n The Cryptographic Hash Function RIPEMD-160\r\n \n written by\r\n Bart Preneel,\r\n Hans Dobbertin,\r\n Antoon Bosselaers\r\n in\r\n 1997.\r\n \n --------------------------------------------------\r\n \n §5 Description of RIPEMD-160\r\n \n ......\r\n \n In order to guarantee that the total input size is a\r\n multiple of 512 bits, the input is padded in the same\r\n way as for all the members of the MD4-family: one\r\n appends a single 1 followed by a string of 0s (the\r\n number of 0s lies between 0 and 511); the last 64 bits\r\n of the extended input contain the binary representation\r\n of the input size in bits, least significant byte first.\r\n */\r\n /*\r\n https://tools.ietf.org/rfc/rfc1186.txt\r\n \n RFC 1186: MD4 Message Digest Algorithm.\r\n \n written by\r\n Ronald Linn Rivest\r\n in\r\n October 1990.\r\n \n --------------------------------------------------\r\n \n §3 MD4 Algorithm Description\r\n \n ......\r\n \n Step 1. Append padding bits\r\n \n The message is \"padded\" (extended) so that its length\r\n (in bits) is congruent to 448, modulo 512. That is, the\r\n message is extended so that it is just 64 bits shy of\r\n being a multiple of 512 bits long. Padding is always\r\n performed, even if the length of the message is already\r\n congruent to 448, modulo 512 (in which case 512 bits of\r\n padding are added).\r\n \n Padding is performed as follows: a single \"1\" bit is\r\n appended to the message, and then enough zero bits are\r\n appended so that the length in bits of the padded\r\n message becomes congruent to 448, modulo 512.\r\n \n Step 2. Append length\r\n \n A 64-bit representation of b (the length of the message\r\n before the padding bits were added) is appended to the\r\n result of the previous step. In the unlikely event that\r\n b is greater than 2^64, then only the low-order 64 bits\r\n of b are used. (These bits are appended as two 32-bit\r\n words and appended low-order word first in accordance\r\n with the previous conventions.)\r\n \n At this point the resulting message (after padding with\r\n bits and with b) has a length that is an exact multiple\r\n of 512 bits. Equivalently, this message has a length\r\n that is an exact multiple of 16 (32-bit) words. Let\r\n M[0 ... N-1] denote the words of the resulting message,\r\n where N is a multiple of 16.\r\n */\r\n // https://crypto.stackexchange.com/a/32407/54568\r\n /*\r\n Example case # 1\r\n [0 bit: message.]\r\n [1 bit: 1.]\r\n [447 bits: 0.]\r\n [64 bits: message size information.]\r\n \n Example case # 2\r\n [512-bits: message]\r\n [1 bit: 1.]\r\n [447 bits: 0.]\r\n [64 bits: message size information.]\r\n \n Example case # 3\r\n [(512 - 64 = 448) bits: message.]\r\n [1 bit: 1.]\r\n [511 bits: 0.]\r\n [64 bits: message size information.]\r\n \n Example case # 4\r\n [(512 - 65 = 447) bits: message.]\r\n [1 bit: 1.]\r\n [0 bit: 0.]\r\n [64 bits: message size information.]\r\n */\r\n // The number of padding zero bits:\r\n // 511 - [{(message size in bits) + 64} (mod 512)]\r\n return 64 - ((message_size + 8) & 63 /* 63 */);\r\n };\r\n RIPEMD160.pad = function (message) {\r\n var message_size = message.byteLength;\r\n var n_pad = RIPEMD160.get_n_pad_bytes(message_size);\r\n // `Number.MAX_SAFE_INTEGER` is ((2 ** 53) - 1) and\r\n // bitwise operation in Javascript is done on 32-bits operands.\r\n var divmod = function (dividend, divisor) { return [\r\n Math.floor(dividend / divisor),\r\n dividend % divisor\r\n ]; };\r\n /*\r\n To shift\r\n \n 00000000 000????? ???????? ???????? ???????? ???????? ???????? ????????\r\n t o\r\n 00000000 ???????? ???????? ???????? ???????? ???????? ???????? ?????000\r\n \n --------------------------------------------------------------------------------\r\n \n Method #1\r\n \n 00000000 000????? ???????? ???????? ???????? ???????? ???????? ????????\r\n [00000000 000AAAAA AAAAAAAA AAAAAAAA] ( captured)\r\n [00000000 AAAAAAAA AAAAAAAA AAAAA000] ( shifted)\r\n ( captured) [BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB]\r\n ( shifted) [BBB][BBBBBBBB BBBBBBBB BBBBBBBB BBBBB000]\r\n [00000000 AAAAAAAA AAAAAAAA AAAAABBB] ( & merged)\r\n [00000000 AAAAAAAA AAAAAAAA AAAAABBB][BBBBBBBB BBBBBBBB BBBBBBBB BBBBB000]\r\n 00000000 ???????? ???????? ???????? ???????? ???????? ???????? ?????000\r\n \n const uint32_max_plus_1 = 0x100000000; // (2 ** 32)\r\n const [\r\n msg_byte_size_most, // Value range [0, (2 ** 21) - 1].\r\n msg_byte_size_least // Value range [0, (2 ** 32) - 1].\r\n ] = divmod(message_size, uint32_max_plus_1);\r\n const [\r\n carry, // Value range [0, 7].\r\n msg_bit_size_least // Value range [0, (2 ** 32) - 8].\r\n ] = divmod(message_byte_size_least * 8, uint32_max_plus_1);\r\n const message_bit_size_most = message_byte_size_most * 8\r\n + carry; // Value range [0, (2 ** 24) - 1].\r\n \n --------------------------------------------------------------------------------\r\n \n Method #2\r\n 00000000 000????? ???????? ???????? ???????? ???????? ???????? ????????\r\n [00000 000AAAAA AAAAAAAA AAAAAAAA AAA] ( captured)\r\n ( captured) [000BBBBB BBBBBBBB BBBBBBBB BBBBBBBB]\r\n ( shifted) [BBBBBBBB BBBBBBBB BBBBBBBB BBBBB000]\r\n [00000000 AAAAAAAA AAAAAAAA AAAAAAAA][BBBBBBBB BBBBBBBB BBBBBBBB BBBBB000]\r\n 00000000 ???????? ???????? ???????? ???????? ???????? ???????? ?????000\r\n \n */\r\n var _a = divmod(message_size, 536870912 /* (2 ** 29) */)\r\n .map(function (x, index) { return (index ? (x * 8) : x); }), msg_bit_size_most = _a[0], msg_bit_size_least = _a[1];\r\n // `ArrayBuffer.transfer()` is not supported.\r\n var padded = new Uint8Array(message_size + n_pad + 8);\r\n padded.set(new Uint8Array(message), 0);\r\n var data_view = new DataView(padded.buffer);\r\n data_view.setUint8(message_size, 128);\r\n data_view.setUint32(message_size + n_pad, msg_bit_size_least, true // Little-endian\r\n );\r\n data_view.setUint32(message_size + n_pad + 4, msg_bit_size_most, true // Little-endian\r\n );\r\n return padded.buffer;\r\n };\r\n RIPEMD160.f = function (j, x, y, z) {\r\n if (0 <= j && j <= 15) { // Exclusive-OR\r\n return x ^ y ^ z;\r\n }\r\n if (16 <= j && j <= 31) { // Multiplexing (muxing)\r\n return (x & y) | (~x & z);\r\n }\r\n if (32 <= j && j <= 47) {\r\n return (x | ~y) ^ z;\r\n }\r\n if (48 <= j && j <= 63) { // Multiplexing (muxing)\r\n return (x & z) | (y & ~z);\r\n }\r\n if (64 <= j && j <= 79) {\r\n return x ^ (y | ~z);\r\n }\r\n };\r\n RIPEMD160.K = function (j) {\r\n if (0 <= j && j <= 15) {\r\n return 0x00000000;\r\n }\r\n if (16 <= j && j <= 31) {\r\n // Math.floor((2 ** 30) * Math.SQRT2)\r\n return 0x5A827999;\r\n }\r\n if (32 <= j && j <= 47) {\r\n // Math.floor((2 ** 30) * Math.sqrt(3))\r\n return 0x6ED9EBA1;\r\n }\r\n if (48 <= j && j <= 63) {\r\n // Math.floor((2 ** 30) * Math.sqrt(5))\r\n return 0x8F1BBCDC;\r\n }\r\n if (64 <= j && j <= 79) {\r\n // Math.floor((2 ** 30) * Math.sqrt(7))\r\n return 0xA953FD4E;\r\n }\r\n };\r\n RIPEMD160.KP = function (j) {\r\n if (0 <= j && j <= 15) {\r\n // Math.floor((2 ** 30) * Math.cbrt(2))\r\n return 0x50A28BE6;\r\n }\r\n if (16 <= j && j <= 31) {\r\n // Math.floor((2 ** 30) * Math.cbrt(3))\r\n return 0x5C4DD124;\r\n }\r\n if (32 <= j && j <= 47) {\r\n // Math.floor((2 ** 30) * Math.cbrt(5))\r\n return 0x6D703EF3;\r\n }\r\n if (48 <= j && j <= 63) {\r\n // Math.floor((2 ** 30) * Math.cbrt(7))\r\n return 0x7A6D76E9;\r\n }\r\n if (64 <= j && j <= 79) {\r\n return 0x00000000;\r\n }\r\n };\r\n RIPEMD160.add_modulo32 = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n // 1. Modulo addition (addition modulo) is associative.\r\n // https://proofwiki.org/wiki/Modulo_Addition_is_Associative\r\n // 2. Bitwise operation in Javascript\r\n // is done on 32-bits operands\r\n // and results in a 32-bits value.\r\n return Array\r\n .from(args)\r\n .reduce(function (a, b) { return (a + b); }, 0) | 0;\r\n };\r\n RIPEMD160.rol32 = function (value, count) {\r\n return (value << count) | (value >>> (32 - count));\r\n };\r\n RIPEMD160.hash = function (message) {\r\n // The padded message.\r\n var padded = RIPEMD160.pad(message);\r\n ////////// Compression //////////\r\n // Message word selectors.\r\n var r = [\r\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\r\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\r\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\r\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\r\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\r\n ];\r\n var rP = [\r\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\r\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\r\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\r\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\r\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\r\n ];\r\n // Amounts for 'rotate left' operation.\r\n var s = [\r\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\r\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\r\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\r\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\r\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\r\n ];\r\n var sP = [\r\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\r\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\r\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\r\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\r\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\r\n ];\r\n // The size, in bytes, of a word.\r\n var word_size = 4;\r\n // The size, in bytes, of a 16-words block.\r\n var block_size = 64;\r\n // The number of the 16-words blocks.\r\n var t = padded.byteLength / block_size;\r\n // The message after padding consists of t 16-word blocks that\r\n // are denoted with X_i[j], with 0≤i≤(t − 1) and 0≤j≤15.\r\n var X = (new Array(t))\r\n .fill(undefined)\r\n .map(function (_, i) { return function (j) { return (new DataView(padded, i * block_size, block_size).getUint32(j * word_size, true // Little-endian\r\n )); }; });\r\n // The result of RIPEMD-160 is contained in five 32-bit words,\r\n // which form the internal state of the algorithm. The final\r\n // content of these five 32-bit words is converted to a 160-bit\r\n // string, again using the little-endian convention.\r\n var h = [\r\n 0x67452301,\r\n 0xEFCDAB89,\r\n 0x98BADCFE,\r\n 0x10325476,\r\n 0xC3D2E1F0 // h_4\r\n ];\r\n for (var i = 0; i < t; ++i) {\r\n var A = h[0], B = h[1], C = h[2], D = h[3], E = h[4];\r\n var AP = A, BP = B, CP = C, DP = D, EP = E;\r\n for (var j = 0; j < 80; ++j) {\r\n // Left rounds\r\n var T_1 = RIPEMD160.add_modulo32(RIPEMD160.rol32(RIPEMD160.add_modulo32(A, RIPEMD160.f(j, B, C, D), X[i](r[j]), RIPEMD160.K(j)), s[j]), E);\r\n A = E;\r\n E = D;\r\n D = RIPEMD160.rol32(C, 10);\r\n C = B;\r\n B = T_1;\r\n // Right rounds\r\n T_1 = RIPEMD160.add_modulo32(RIPEMD160.rol32(RIPEMD160.add_modulo32(AP, RIPEMD160.f(79 - j, BP, CP, DP), X[i](rP[j]), RIPEMD160.KP(j)), sP[j]), EP);\r\n AP = EP;\r\n EP = DP;\r\n DP = RIPEMD160.rol32(CP, 10);\r\n CP = BP;\r\n BP = T_1;\r\n }\r\n var T = RIPEMD160.add_modulo32(h[1], C, DP);\r\n h[1] = RIPEMD160.add_modulo32(h[2], D, EP);\r\n h[2] = RIPEMD160.add_modulo32(h[3], E, AP);\r\n h[3] = RIPEMD160.add_modulo32(h[4], A, BP);\r\n h[4] = RIPEMD160.add_modulo32(h[0], B, CP);\r\n h[0] = T;\r\n }\r\n // The final output string then consists of the concatenatation\r\n // of h_0, h_1, h_2, h_3, and h_4 after converting each h_i to a\r\n // 4-byte string using the little-endian convention.\r\n var result = new ArrayBuffer(20);\r\n var data_view = new DataView(result);\r\n h.forEach(function (h_i, i) { return data_view.setUint32(i * 4, h_i, true); });\r\n return result;\r\n };\r\n return RIPEMD160;\r\n}());\n\nexport default RIPEMD160;\n//# sourceMappingURL=ripemd-ts.es5.js.map\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","module.exports = require('./lib')(require('./lib/elliptic'))\n","const EC = require('elliptic').ec\n\nconst ec = new EC('secp256k1')\nconst ecparams = ec.curve\n\n// Hack, we can not use bn.js@5, while elliptic uses bn.js@4\n// See https://github.com/indutny/elliptic/issues/191#issuecomment-569888758\nconst BN = ecparams.n.constructor\n\nfunction loadCompressedPublicKey (first, xbuf) {\n let x = new BN(xbuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0) return null\n x = x.toRed(ecparams.red)\n\n // compute corresponding Y\n let y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()\n if ((first === 0x03) !== y.isOdd()) y = y.redNeg()\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadUncompressedPublicKey (first, xbuf, ybuf) {\n let x = new BN(xbuf)\n let y = new BN(ybuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null\n\n x = x.toRed(ecparams.red)\n y = y.toRed(ecparams.red)\n\n // is odd flag\n if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null\n\n // x*x*x + b = y*y\n const x3 = x.redSqr().redIMul(x)\n if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadPublicKey (pubkey) {\n // length should be validated in interface\n const first = pubkey[0]\n switch (first) {\n case 0x02:\n case 0x03:\n if (pubkey.length !== 33) return null\n return loadCompressedPublicKey(first, pubkey.subarray(1, 33))\n case 0x04:\n case 0x06:\n case 0x07:\n if (pubkey.length !== 65) return null\n return loadUncompressedPublicKey(first, pubkey.subarray(1, 33), pubkey.subarray(33, 65))\n default:\n return null\n }\n}\n\nfunction savePublicKey (output, point) {\n const pubkey = point.encode(null, output.length === 33)\n // Loop should be faster because we do not need create extra Uint8Array\n // output.set(new Uint8Array(pubkey))\n for (let i = 0; i < output.length; ++i) output[i] = pubkey[i]\n}\n\nmodule.exports = {\n contextRandomize () {\n return 0\n },\n\n privateKeyVerify (seckey) {\n const bn = new BN(seckey)\n return bn.cmp(ecparams.n) < 0 && !bn.isZero() ? 0 : 1\n },\n\n privateKeyNegate (seckey) {\n const bn = new BN(seckey)\n const negate = ecparams.n.sub(bn).umod(ecparams.n).toArrayLike(Uint8Array, 'be', 32)\n seckey.set(negate)\n return 0\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n const bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0) return 1\n\n bn.iadd(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)\n if (bn.isZero()) return 1\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n privateKeyTweakMul (seckey, tweak) {\n let bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n bn.imul(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn = bn.umod(ecparams.n)\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n publicKeyVerify (pubkey) {\n const pair = loadPublicKey(pubkey)\n return pair === null ? 1 : 0\n },\n\n publicKeyCreate (output, seckey) {\n const bn = new BN(seckey)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n const point = ec.keyFromPrivate(seckey).getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyConvert (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyNegate (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n point.y = point.y.redNeg()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyCombine (output, pubkeys) {\n const pairs = new Array(pubkeys.length)\n for (let i = 0; i < pubkeys.length; ++i) {\n pairs[i] = loadPublicKey(pubkeys[i])\n if (pairs[i] === null) return 1\n }\n\n let point = pairs[0].getPublic()\n for (let i = 1; i < pairs.length; ++i) point = point.add(pairs[i].pub)\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakAdd (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0) return 2\n\n const point = pair.getPublic().add(ecparams.g.mul(tweak))\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakMul (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) return 2\n\n const point = pair.getPublic().mul(tweak)\n savePublicKey(output, point)\n\n return 0\n },\n\n signatureNormalize (sig) {\n const r = new BN(sig.subarray(0, 32))\n const s = new BN(sig.subarray(32, 64))\n if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) return 1\n\n if (s.cmp(ec.nh) === 1) {\n sig.set(ecparams.n.sub(s).toArrayLike(Uint8Array, 'be', 32), 32)\n }\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureExport (obj, sig) {\n const sigR = sig.subarray(0, 32)\n const sigS = sig.subarray(32, 64)\n if (new BN(sigR).cmp(ecparams.n) >= 0) return 1\n if (new BN(sigS).cmp(ecparams.n) >= 0) return 1\n\n const { output } = obj\n\n // Prepare R\n let r = output.subarray(4, 4 + 33)\n r[0] = 0x00\n r.set(sigR, 1)\n\n let lenR = 33\n let posR = 0\n for (; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);\n\n r = r.subarray(posR)\n if (r[0] & 0x80) return 1\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) return 1\n\n // Prepare S\n let s = output.subarray(6 + 33, 6 + 33 + 33)\n s[0] = 0x00\n s.set(sigS, 1)\n\n let lenS = 33\n let posS = 0\n for (; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);\n\n s = s.subarray(posS)\n if (s[0] & 0x80) return 1\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) return 1\n\n // Set output length for return\n obj.outputlen = 6 + lenR + lenS\n\n // Output in specified format\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n output[0] = 0x30\n output[1] = obj.outputlen - 2\n output[2] = 0x02\n output[3] = r.length\n output.set(r, 4)\n output[4 + lenR] = 0x02\n output[5 + lenR] = s.length\n output.set(s, 6 + lenR)\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureImport (output, sig) {\n if (sig.length < 8) return 1\n if (sig.length > 72) return 1\n if (sig[0] !== 0x30) return 1\n if (sig[1] !== sig.length - 2) return 1\n if (sig[2] !== 0x02) return 1\n\n const lenR = sig[3]\n if (lenR === 0) return 1\n if (5 + lenR >= sig.length) return 1\n if (sig[4 + lenR] !== 0x02) return 1\n\n const lenS = sig[5 + lenR]\n if (lenS === 0) return 1\n if ((6 + lenR + lenS) !== sig.length) return 1\n\n if (sig[4] & 0x80) return 1\n if (lenR > 1 && (sig[4] === 0x00) && !(sig[5] & 0x80)) return 1\n\n if (sig[lenR + 6] & 0x80) return 1\n if (lenS > 1 && (sig[lenR + 6] === 0x00) && !(sig[lenR + 7] & 0x80)) return 1\n\n let sigR = sig.subarray(4, 4 + lenR)\n if (sigR.length === 33 && sigR[0] === 0x00) sigR = sigR.subarray(1)\n if (sigR.length > 32) return 1\n\n let sigS = sig.subarray(6 + lenR)\n if (sigS.length === 33 && sigS[0] === 0x00) sigS = sigS.slice(1)\n if (sigS.length > 32) throw new Error('S length is too long')\n\n let r = new BN(sigR)\n if (r.cmp(ecparams.n) >= 0) r = new BN(0)\n\n let s = new BN(sig.subarray(6 + lenR))\n if (s.cmp(ecparams.n) >= 0) s = new BN(0)\n\n output.set(r.toArrayLike(Uint8Array, 'be', 32), 0)\n output.set(s.toArrayLike(Uint8Array, 'be', 32), 32)\n\n return 0\n },\n\n ecdsaSign (obj, message, seckey, data, noncefn) {\n if (noncefn) {\n const _noncefn = noncefn\n noncefn = (counter) => {\n const nonce = _noncefn(message, seckey, null, data, counter)\n\n const isValid = nonce instanceof Uint8Array && nonce.length === 32\n if (!isValid) throw new Error('This is the way')\n\n return new BN(nonce)\n }\n }\n\n const d = new BN(seckey)\n if (d.cmp(ecparams.n) >= 0 || d.isZero()) return 1\n\n let sig\n try {\n sig = ec.sign(message, seckey, { canonical: true, k: noncefn, pers: data })\n } catch (err) {\n return 1\n }\n\n obj.signature.set(sig.r.toArrayLike(Uint8Array, 'be', 32), 0)\n obj.signature.set(sig.s.toArrayLike(Uint8Array, 'be', 32), 32)\n obj.recid = sig.recoveryParam\n\n return 0\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n const sigObj = { r: sig.subarray(0, 32), s: sig.subarray(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return 3\n\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 2\n\n const point = pair.getPublic()\n const isValid = ec.verify(msg32, sigObj, point)\n return isValid ? 0 : 3\n },\n\n ecdsaRecover (output, sig, recid, msg32) {\n const sigObj = { r: sig.slice(0, 32), s: sig.slice(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n\n if (sigr.isZero() || sigs.isZero()) return 2\n\n // Can throw `throw new Error('Unable to find sencond key candinate');`\n let point\n try {\n point = ec.recoverPubKey(msg32, sigObj, recid)\n } catch (err) {\n return 2\n }\n\n savePublicKey(output, point)\n\n return 0\n },\n\n ecdh (output, pubkey, seckey, data, hashfn, xbuf, ybuf) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const scalar = new BN(seckey)\n if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) return 2\n\n const point = pair.getPublic().mul(scalar)\n\n if (hashfn === undefined) {\n const data = point.encode(null, true)\n const sha256 = ec.hash().update(data).digest()\n for (let i = 0; i < 32; ++i) output[i] = sha256[i]\n } else {\n if (!xbuf) xbuf = new Uint8Array(32)\n const x = point.getX().toArray('be', 32)\n for (let i = 0; i < 32; ++i) xbuf[i] = x[i]\n\n if (!ybuf) ybuf = new Uint8Array(32)\n const y = point.getY().toArray('be', 32)\n for (let i = 0; i < 32; ++i) ybuf[i] = y[i]\n\n const hash = hashfn(xbuf, ybuf, data)\n\n const isValid = hash instanceof Uint8Array && hash.length === output.length\n if (!isValid) return 2\n\n output.set(hash)\n }\n\n return 0\n }\n}\n","const errors = {\n IMPOSSIBLE_CASE: 'Impossible case. Please create issue.',\n TWEAK_ADD:\n 'The tweak was out of range or the resulted private key is invalid',\n TWEAK_MUL: 'The tweak was out of range or equal to zero',\n CONTEXT_RANDOMIZE_UNKNOW: 'Unknow error on context randomization',\n SECKEY_INVALID: 'Private Key is invalid',\n PUBKEY_PARSE: 'Public Key could not be parsed',\n PUBKEY_SERIALIZE: 'Public Key serialization error',\n PUBKEY_COMBINE: 'The sum of the public keys is not valid',\n SIG_PARSE: 'Signature could not be parsed',\n SIGN: 'The nonce generation function failed, or the private key was invalid',\n RECOVER: 'Public key could not be recover',\n ECDH: 'Scalar was invalid (zero or overflow)'\n}\n\nfunction assert (cond, msg) {\n if (!cond) throw new Error(msg)\n}\n\nfunction isUint8Array (name, value, length) {\n assert(value instanceof Uint8Array, `Expected ${name} to be an Uint8Array`)\n\n if (length !== undefined) {\n if (Array.isArray(length)) {\n const numbers = length.join(', ')\n const msg = `Expected ${name} to be an Uint8Array with length [${numbers}]`\n assert(length.includes(value.length), msg)\n } else {\n const msg = `Expected ${name} to be an Uint8Array with length ${length}`\n assert(value.length === length, msg)\n }\n }\n}\n\nfunction isCompressed (value) {\n assert(toTypeString(value) === 'Boolean', 'Expected compressed to be a Boolean')\n}\n\nfunction getAssertedOutput (output = (len) => new Uint8Array(len), length) {\n if (typeof output === 'function') output = output(length)\n isUint8Array('output', output, length)\n return output\n}\n\nfunction toTypeString (value) {\n return Object.prototype.toString.call(value).slice(8, -1)\n}\n\nmodule.exports = (secp256k1) => {\n return {\n contextRandomize (seed) {\n assert(\n seed === null || seed instanceof Uint8Array,\n 'Expected seed to be an Uint8Array or null'\n )\n if (seed !== null) isUint8Array('seed', seed, 32)\n\n switch (secp256k1.contextRandomize(seed)) {\n case 1:\n throw new Error(errors.CONTEXT_RANDOMIZE_UNKNOW)\n }\n },\n\n privateKeyVerify (seckey) {\n isUint8Array('private key', seckey, 32)\n\n return secp256k1.privateKeyVerify(seckey) === 0\n },\n\n privateKeyNegate (seckey) {\n isUint8Array('private key', seckey, 32)\n\n switch (secp256k1.privateKeyNegate(seckey)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakAdd(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n privateKeyTweakMul (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakMul(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n publicKeyVerify (pubkey) {\n isUint8Array('public key', pubkey, [33, 65])\n\n return secp256k1.publicKeyVerify(pubkey) === 0\n },\n\n publicKeyCreate (seckey, compressed = true, output) {\n isUint8Array('private key', seckey, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCreate(output, seckey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SECKEY_INVALID)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyConvert (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyConvert(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyNegate (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyNegate(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyCombine (pubkeys, compressed = true, output) {\n assert(Array.isArray(pubkeys), 'Expected public keys to be an Array')\n assert(pubkeys.length > 0, 'Expected public keys array will have more than zero items')\n for (const pubkey of pubkeys) {\n isUint8Array('public key', pubkey, [33, 65])\n }\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCombine(output, pubkeys)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_COMBINE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyTweakAdd (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakAdd(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n publicKeyTweakMul (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakMul(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n signatureNormalize (sig) {\n isUint8Array('signature', sig, 64)\n\n switch (secp256k1.signatureNormalize(sig)) {\n case 0:\n return sig\n case 1:\n throw new Error(errors.SIG_PARSE)\n }\n },\n\n signatureExport (sig, output) {\n isUint8Array('signature', sig, 64)\n output = getAssertedOutput(output, 72)\n\n const obj = { output, outputlen: 72 }\n switch (secp256k1.signatureExport(obj, sig)) {\n case 0:\n return output.slice(0, obj.outputlen)\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n signatureImport (sig, output) {\n isUint8Array('signature', sig)\n output = getAssertedOutput(output, 64)\n\n switch (secp256k1.signatureImport(output, sig)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaSign (msg32, seckey, options = {}, output) {\n isUint8Array('message', msg32, 32)\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.noncefn !== undefined) assert(toTypeString(options.noncefn) === 'Function', 'Expected options.noncefn to be a Function')\n output = getAssertedOutput(output, 64)\n\n const obj = { signature: output, recid: null }\n switch (secp256k1.ecdsaSign(obj, msg32, seckey, options.data, options.noncefn)) {\n case 0:\n return obj\n case 1:\n throw new Error(errors.SIGN)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n isUint8Array('signature', sig, 64)\n isUint8Array('message', msg32, 32)\n isUint8Array('public key', pubkey, [33, 65])\n\n switch (secp256k1.ecdsaVerify(sig, msg32, pubkey)) {\n case 0:\n return true\n case 3:\n return false\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_PARSE)\n }\n },\n\n ecdsaRecover (sig, recid, msg32, compressed = true, output) {\n isUint8Array('signature', sig, 64)\n assert(\n toTypeString(recid) === 'Number' &&\n recid >= 0 &&\n recid <= 3,\n 'Expected recovery id to be a Number within interval [0, 3]'\n )\n isUint8Array('message', msg32, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.ecdsaRecover(output, sig, recid, msg32)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.RECOVER)\n case 3:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdh (pubkey, seckey, options = {}, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.hashfn !== undefined) {\n assert(toTypeString(options.hashfn) === 'Function', 'Expected options.hashfn to be a Function')\n if (options.xbuf !== undefined) isUint8Array('options.xbuf', options.xbuf, 32)\n if (options.ybuf !== undefined) isUint8Array('options.ybuf', options.ybuf, 32)\n isUint8Array('output', output)\n } else {\n output = getAssertedOutput(output, 32)\n }\n\n switch (secp256k1.ecdh(output, pubkey, seckey, options.data, options.hashfn, options.xbuf, options.ybuf)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.ECDH)\n }\n }\n }\n}\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./serializer\"));\nconst value = __importStar(require(\"./value\"));\nexports.value = value;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst cbor = __importStar(require(\"./value\"));\nconst BufferClasses = [\n ArrayBuffer,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Int8Array,\n Int16Array,\n Int32Array,\n Float32Array,\n Float64Array,\n];\nclass JsonDefaultCborEncoder {\n // @param _serializer The CBOR Serializer to use.\n // @param _stable Whether or not keys from objects should be sorted (stable). This is\n // particularly useful when testing encodings between JSON objects.\n constructor(_serializer, _stable = false) {\n this._serializer = _serializer;\n this._stable = _stable;\n this.name = \"jsonDefault\";\n this.priority = -100;\n }\n match(value) {\n return [\"undefined\", \"boolean\", \"number\", \"string\", \"object\"].indexOf(typeof value) != -1;\n }\n encode(value) {\n switch (typeof value) {\n case \"undefined\":\n return cbor.undefined_();\n case \"boolean\":\n return cbor.bool(value);\n case \"number\":\n if (Math.floor(value) === value) {\n return cbor.number(value);\n }\n else {\n return cbor.doubleFloat(value);\n }\n case \"string\":\n return cbor.string(value);\n case \"object\":\n if (value === null) {\n return cbor.null_();\n }\n else if (Array.isArray(value)) {\n return cbor.array(value.map((x) => this._serializer.serializeValue(x)));\n }\n else if (BufferClasses.find((x) => value instanceof x)) {\n return cbor.bytes(value.buffer);\n }\n else if (Object.getOwnPropertyNames(value).indexOf(\"toJSON\") !== -1) {\n return this.encode(value.toJSON());\n }\n else if (value instanceof Map) {\n const m = new Map();\n for (const [key, item] of value.entries()) {\n m.set(key, this._serializer.serializeValue(item));\n }\n return cbor.map(m, this._stable);\n }\n else {\n const m = new Map();\n for (const [key, item] of Object.entries(value)) {\n m.set(key, this._serializer.serializeValue(item));\n }\n return cbor.map(m, this._stable);\n }\n default:\n throw new Error(\"Invalid value.\");\n }\n }\n}\nexports.JsonDefaultCborEncoder = JsonDefaultCborEncoder;\nclass ToCborEncoder {\n constructor() {\n this.name = \"cborEncoder\";\n this.priority = -90;\n }\n match(value) {\n return typeof value == \"object\" && typeof value[\"toCBOR\"] == \"function\";\n }\n encode(value) {\n return value.toCBOR();\n }\n}\nexports.ToCborEncoder = ToCborEncoder;\nclass CborSerializer {\n constructor() {\n this._encoders = new Set();\n }\n static withDefaultEncoders(stable = false) {\n const s = new this();\n s.addEncoder(new JsonDefaultCborEncoder(s, stable));\n s.addEncoder(new ToCborEncoder());\n return s;\n }\n removeEncoder(name) {\n // Has to make an extra call to values() to ensure it doesn't break on iteration.\n for (const encoder of this._encoders.values()) {\n if (encoder.name == name) {\n this._encoders.delete(encoder);\n }\n }\n }\n addEncoder(encoder) {\n this._encoders.add(encoder);\n }\n getEncoderFor(value) {\n let chosenEncoder = null;\n for (const encoder of this._encoders) {\n if (!chosenEncoder || encoder.priority > chosenEncoder.priority) {\n if (encoder.match(value)) {\n chosenEncoder = encoder;\n }\n }\n }\n if (chosenEncoder === null) {\n throw new Error(\"Could not find an encoder for value.\");\n }\n return chosenEncoder;\n }\n serializeValue(value) {\n return this.getEncoderFor(value).encode(value);\n }\n serialize(value) {\n return this.serializeValue(value);\n }\n}\nexports.CborSerializer = CborSerializer;\nclass SelfDescribeCborSerializer extends CborSerializer {\n serialize(value) {\n return cbor.raw(new Uint8Array([\n // Self describe CBOR.\n ...new Uint8Array([0xd9, 0xd9, 0xf7]),\n ...new Uint8Array(super.serializeValue(value)),\n ]));\n }\n}\nexports.SelfDescribeCborSerializer = SelfDescribeCborSerializer;\n//# sourceMappingURL=serializer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst MAX_U64_NUMBER = 0x20000000000000;\nfunction _concat(a, ...args) {\n const newBuffer = new Uint8Array(a.byteLength + args.reduce((acc, b) => acc + b.byteLength, 0));\n newBuffer.set(new Uint8Array(a), 0);\n let i = a.byteLength;\n for (const b of args) {\n newBuffer.set(new Uint8Array(b), i);\n i += b.byteLength;\n }\n return newBuffer.buffer;\n}\nfunction _serializeValue(major, minor, value) {\n // Remove everything that's not an hexadecimal character. These are not\n // considered errors since the value was already validated and they might\n // be number decimals or sign.\n value = value.replace(/[^0-9a-fA-F]/g, \"\");\n // Create the buffer from the value with left padding with 0.\n const length = 2 ** (minor - 24 /* Int8 */);\n value = value.slice(-length * 2).padStart(length * 2, \"0\");\n const bytes = [(major << 5) + minor].concat(value.match(/../g).map((byte) => parseInt(byte, 16)));\n return new Uint8Array(bytes).buffer;\n}\nfunction _serializeNumber(major, value) {\n if (value < 24) {\n return new Uint8Array([(major << 5) + value]).buffer;\n }\n else {\n const minor = value <= 0xff\n ? 24 /* Int8 */\n : value <= 0xffff\n ? 25 /* Int16 */\n : value <= 0xffffffff\n ? 26 /* Int32 */\n : 27 /* Int64 */;\n return _serializeValue(major, minor, value.toString(16));\n }\n}\nfunction _serializeString(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 0x80) {\n utf8.push(charcode);\n }\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n else {\n // Surrogate pair\n i++;\n charcode = ((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff);\n utf8.push(0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n }\n return _concat(new Uint8Array(_serializeNumber(3 /* TextString */, str.length)), new Uint8Array(utf8));\n}\n/**\n * Tag a value.\n */\nfunction tagged(tag, value) {\n if (tag == 0xd9d9f7) {\n return _concat(new Uint8Array([0xd9, 0xd9, 0xf7]), value);\n }\n if (tag < 24) {\n return _concat(new Uint8Array([(6 /* Tag */ << 5) + tag]), value);\n }\n else {\n const minor = tag <= 0xff\n ? 24 /* Int8 */\n : tag <= 0xffff\n ? 25 /* Int16 */\n : tag <= 0xffffffff\n ? 26 /* Int32 */\n : 27 /* Int64 */;\n const length = 2 ** (minor - 24 /* Int8 */);\n const value = tag\n .toString(16)\n .slice(-length * 2)\n .padStart(length * 2, \"0\");\n const bytes = [(6 /* Tag */ << 5) + minor].concat(value.match(/../g).map((byte) => parseInt(byte, 16)));\n return new Uint8Array(bytes).buffer;\n }\n}\nexports.tagged = tagged;\n/**\n * Set the raw bytes contained by this value. This should only be used with another\n * CborValue, or if you are implementing extensions to CBOR.\n * @param bytes A buffer containing the value.\n */\nfunction raw(bytes) {\n return new Uint8Array(bytes).buffer;\n}\nexports.raw = raw;\n/**\n * Encode a number that is between [0, 23].\n * @param n\n */\nfunction uSmall(n) {\n if (isNaN(n)) {\n throw new RangeError(\"Invalid number.\");\n }\n n = Math.min(Math.max(0, n), 23); // Clamp it.\n const bytes = [(0 /* UnsignedInteger */ << 5) + n];\n return new Uint8Array(bytes).buffer;\n}\nexports.uSmall = uSmall;\nfunction u8(u8, radix) {\n // Force u8 into a number, and validate it.\n u8 = parseInt(\"\" + u8, radix);\n if (isNaN(u8)) {\n throw new RangeError(\"Invalid number.\");\n }\n u8 = Math.min(Math.max(0, u8), 0xff); // Clamp it.\n u8 = u8.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 24 /* Int8 */, u8);\n}\nexports.u8 = u8;\nfunction u16(u16, radix) {\n // Force u16 into a number, and validate it.\n u16 = parseInt(\"\" + u16, radix);\n if (isNaN(u16)) {\n throw new RangeError(\"Invalid number.\");\n }\n u16 = Math.min(Math.max(0, u16), 0xffff); // Clamp it.\n u16 = u16.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 25 /* Int16 */, u16);\n}\nexports.u16 = u16;\nfunction u32(u32, radix) {\n // Force u32 into a number, and validate it.\n u32 = parseInt(\"\" + u32, radix);\n if (isNaN(u32)) {\n throw new RangeError(\"Invalid number.\");\n }\n u32 = Math.min(Math.max(0, u32), 0xffffffff); // Clamp it.\n u32 = u32.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 26 /* Int32 */, u32);\n}\nexports.u32 = u32;\nfunction u64(u64, radix) {\n // Special consideration for numbers that might be larger than expected.\n if (typeof u64 == \"string\" && radix == 16) {\n // This is the only case where we guarantee we'll encode the number directly.\n // Validate it's all hexadecimal first.\n if (u64.match(/[^0-9a-fA-F]/)) {\n throw new RangeError(\"Invalid number.\");\n }\n return _serializeValue(0 /* UnsignedInteger */, 27 /* Int64 */, u64);\n }\n // Force u64 into a number, and validate it.\n u64 = parseInt(\"\" + u64, radix);\n if (isNaN(u64)) {\n throw new RangeError(\"Invalid number.\");\n }\n u64 = Math.min(Math.max(0, u64), MAX_U64_NUMBER); // Clamp it to actual limit.\n u64 = u64.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 27 /* Int64 */, u64);\n}\nexports.u64 = u64;\n/**\n * Encode a negative number that is between [-24, -1].\n */\nfunction iSmall(n) {\n if (isNaN(n)) {\n throw new RangeError(\"Invalid number.\");\n }\n if (n === 0) {\n return uSmall(0);\n }\n // Negative n, clamped to [1, 24], minus 1 (there's no negative 0).\n n = Math.min(Math.max(0, -n), 24) - 1;\n const bytes = [(1 /* SignedInteger */ << 5) + n];\n return new Uint8Array(bytes).buffer;\n}\nexports.iSmall = iSmall;\nfunction i8(i8, radix) {\n // Force i8 into a number, and validate it.\n i8 = parseInt(\"\" + i8, radix);\n if (isNaN(i8)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i8 = Math.min(Math.max(0, -i8 - 1), 0xff);\n i8 = i8.toString(16);\n return _serializeValue(1 /* SignedInteger */, 24 /* Int8 */, i8);\n}\nexports.i8 = i8;\nfunction i16(i16, radix) {\n // Force i16 into a number, and validate it.\n i16 = parseInt(\"\" + i16, radix);\n if (isNaN(i16)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i16 = Math.min(Math.max(0, -i16 - 1), 0xffff);\n i16 = i16.toString(16);\n return _serializeValue(1 /* SignedInteger */, 25 /* Int16 */, i16);\n}\nexports.i16 = i16;\nfunction i32(i32, radix) {\n // Force i32 into a number, and validate it.\n i32 = parseInt(\"\" + i32, radix);\n if (isNaN(i32)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i32 = Math.min(Math.max(0, -i32 - 1), 0xffffffff);\n i32 = i32.toString(16);\n return _serializeValue(1 /* SignedInteger */, 26 /* Int32 */, i32);\n}\nexports.i32 = i32;\nfunction i64(i64, radix) {\n // Special consideration for numbers that might be larger than expected.\n if (typeof i64 == \"string\" && radix == 16) {\n if (i64.startsWith(\"-\")) {\n i64 = i64.slice(1);\n }\n else {\n // Clamp it.\n i64 = \"0\";\n }\n // This is the only case where we guarantee we'll encode the number directly.\n // Validate it's all hexadecimal first.\n if (i64.match(/[^0-9a-fA-F]/) || i64.length > 16) {\n throw new RangeError(\"Invalid number.\");\n }\n // We need to do -1 to the number.\n let done = false;\n let newI64 = i64.split(\"\").reduceRight((acc, x) => {\n if (done) {\n return x + acc;\n }\n let n = parseInt(x, 16) - 1;\n if (n >= 0) {\n done = true;\n return n.toString(16) + acc;\n }\n else {\n return \"f\" + acc;\n }\n }, \"\");\n if (!done) {\n // This number was 0.\n return u64(0);\n }\n return _serializeValue(1 /* SignedInteger */, 27 /* Int64 */, newI64);\n }\n // Force i64 into a number, and validate it.\n i64 = parseInt(\"\" + i64, radix);\n if (isNaN(i64)) {\n throw new RangeError(\"Invalid number.\");\n }\n i64 = Math.min(Math.max(0, -i64 - 1), 0x20000000000000); // Clamp it to actual.\n i64 = i64.toString(16);\n return _serializeValue(1 /* SignedInteger */, 27 /* Int64 */, i64);\n}\nexports.i64 = i64;\n/**\n * Encode a number using the smallest amount of bytes, by calling the methods\n * above. e.g. If the number fits in a u8, it will use that.\n */\nfunction number(n) {\n if (n >= 0) {\n if (n < 24) {\n return uSmall(n);\n }\n else if (n <= 0xff) {\n return u8(n);\n }\n else if (n <= 0xffff) {\n return u16(n);\n }\n else if (n <= 0xffffffff) {\n return u32(n);\n }\n else {\n return u64(n);\n }\n }\n else {\n if (n >= -24) {\n return iSmall(n);\n }\n else if (n >= -0xff) {\n return i8(n);\n }\n else if (n >= -0xffff) {\n return i16(n);\n }\n else if (n >= -0xffffffff) {\n return i32(n);\n }\n else {\n return i64(n);\n }\n }\n}\nexports.number = number;\n/**\n * Encode a byte array. This is different than the `raw()` method.\n */\nfunction bytes(bytes) {\n return _concat(_serializeNumber(2 /* ByteString */, bytes.byteLength), bytes);\n}\nexports.bytes = bytes;\n/**\n * Encode a JavaScript string.\n */\nfunction string(str) {\n return _serializeString(str);\n}\nexports.string = string;\n/**\n * Encode an array of cbor values.\n */\nfunction array(items) {\n return _concat(_serializeNumber(4 /* Array */, items.length), ...items);\n}\nexports.array = array;\n/**\n * Encode a map of key-value pairs. The keys are string, and the values are CBOR\n * encoded.\n */\nfunction map(items, stable = false) {\n if (!(items instanceof Map)) {\n items = new Map(Object.entries(items));\n }\n let entries = Array.from(items.entries());\n if (stable) {\n entries = entries.sort(([keyA], [keyB]) => keyA.localeCompare(keyB));\n }\n return _concat(_serializeNumber(5 /* Map */, items.size), ...entries.map(([k, v]) => _concat(_serializeString(k), v)));\n}\nexports.map = map;\n/**\n * Encode a single (32 bits) precision floating point number.\n */\nfunction singleFloat(f) {\n const single = new Float32Array([f]);\n return _concat(new Uint8Array([(7 /* SimpleValue */ << 5) + 26]), new Uint8Array(single.buffer));\n}\nexports.singleFloat = singleFloat;\n/**\n * Encode a double (64 bits) precision floating point number.\n */\nfunction doubleFloat(f) {\n const single = new Float64Array([f]);\n return _concat(new Uint8Array([(7 /* SimpleValue */ << 5) + 27]), new Uint8Array(single.buffer));\n}\nexports.doubleFloat = doubleFloat;\nfunction bool(v) {\n return v ? true_() : false_();\n}\nexports.bool = bool;\n/**\n * Encode the boolean true.\n */\nfunction true_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 21]));\n}\nexports.true_ = true_;\n/**\n * Encode the boolean false.\n */\nfunction false_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 20]));\n}\nexports.false_ = false_;\n/**\n * Encode the constant null.\n */\nfunction null_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 22]));\n}\nexports.null_ = null_;\n/**\n * Encode the constant undefined.\n */\nfunction undefined_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 23]));\n}\nexports.undefined_ = undefined_;\n//# sourceMappingURL=value.js.map","// 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\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n var v;\n var arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = [];\n\n for (var i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n var bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (var i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n\n for (var i = 0; i < length32; i += 8) {\n var x = input[i >> 5] >>> i % 32 & 0xff;\n var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n var length8 = input.length * 8;\n var output = new Uint32Array(getOutputLength(length8));\n\n for (var i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (var i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var _i = 0; _i < N; ++_i) {\n var arr = new Uint32Array(16);\n\n for (var j = 0; j < 16; ++j) {\n arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];\n }\n\n M[_i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var _i2 = 0; _i2 < N; ++_i2) {\n var W = new Uint32Array(80);\n\n for (var t = 0; t < 16; ++t) {\n W[t] = M[_i2][t];\n }\n\n for (var _t = 16; _t < 80; ++_t) {\n W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var _t2 = 0; _t2 < 80; ++_t2) {\n var s = Math.floor(_t2 / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;","'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof g[typedArray] === 'function') {\n\t\t\tvar arr = new g[typedArray]();\n\t\t\tif (Symbol.toStringTag in arr) {\n\t\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t\t}\n\t\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t\t}\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"./helpers/util\");\nexports.ZodErrorCode = util_1.util.arrayToEnum([\n 'invalid_type',\n 'nonempty_array_is_empty',\n 'custom_error',\n 'invalid_union',\n 'invalid_literal_value',\n 'invalid_enum_value',\n 'unrecognized_keys',\n 'invalid_arguments',\n 'invalid_return_type',\n 'invalid_date',\n 'invalid_string',\n 'too_small',\n 'too_big',\n]);\nexports.quotelessJson = function (obj) {\n var json = JSON.stringify(obj, null, 2); // {\"name\":\"John Smith\"}\n return json.replace(/\"([^\"]+)\":/g, '$1:');\n};\nvar ZodError = /** @class */ (function (_super) {\n __extends(ZodError, _super);\n function ZodError(errors) {\n var _newTarget = this.constructor;\n var _this = _super.call(this) || this;\n _this.errors = [];\n _this.addError = function (sub) {\n _this.errors = _this.errors.concat([sub]);\n };\n _this.addErrors = function (subs) {\n if (subs === void 0) { subs = []; }\n _this.errors = _this.errors.concat(subs);\n };\n _this.flatten = function () {\n var fieldErrors = {};\n var formErrors = [];\n for (var _i = 0, _a = _this.errors; _i < _a.length; _i++) {\n var sub = _a[_i];\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(sub.message);\n }\n else {\n formErrors.push(sub.message);\n }\n }\n return { formErrors: formErrors, fieldErrors: fieldErrors };\n };\n // restore prototype chain\n var actualProto = _newTarget.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(_this, actualProto);\n }\n else {\n _this.__proto__ = actualProto;\n }\n _this.errors = errors;\n return _this;\n }\n Object.defineProperty(ZodError.prototype, \"message\", {\n get: function () {\n // return JSON.stringify(this.errors, null, 2);\n var errorMessage = [\n this.errors.length + \" validation issue(s)\",\n '',\n ];\n for (var _i = 0, _a = this.errors; _i < _a.length; _i++) {\n var err = _a[_i];\n var pathString = err.path.join('.') || '[[root]]';\n errorMessage.push(\" Issue #\" + this.errors.indexOf(err) + \": \" + err.code + \" at \" + pathString);\n errorMessage.push(\" \" + err.message);\n errorMessage.push('');\n }\n return errorMessage.join('\\n');\n // return quotelessJson(this);\n // .map(({ path, message }) => {\n // return path.length ? `${path.join('./index')}: ${message}` : `${message}`;\n // })\n // .join('\\n');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZodError.prototype, \"isEmpty\", {\n get: function () {\n return this.errors.length === 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZodError.prototype, \"formErrors\", {\n get: function () {\n return this.flatten();\n },\n enumerable: true,\n configurable: true\n });\n ZodError.create = function (errors) {\n var error = new ZodError(errors);\n return error;\n };\n return ZodError;\n}(Error));\nexports.ZodError = ZodError;\n//# sourceMappingURL=ZodError.js.map","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./index\"));\nvar util_1 = require(\"./helpers/util\");\nvar isOptional = function (schema) {\n var def = schema._def;\n if (def.t === z.ZodTypes.undefined)\n return true;\n else if (def.t === z.ZodTypes.intersection) {\n return isOptional(def.right) && isOptional(def.left);\n }\n else if (def.t === z.ZodTypes.union) {\n return def.options.map(isOptional).some(function (x) { return x === true; });\n }\n return false;\n};\nvar ZodCodeGenerator = /** @class */ (function () {\n function ZodCodeGenerator() {\n var _this = this;\n this.seen = [];\n this.serial = 0;\n this.randomId = function () {\n return \"IZod\" + _this.serial++;\n };\n this.findBySchema = function (schema) {\n return _this.seen.find(function (s) { return s.schema === schema; });\n };\n this.findById = function (id) {\n var found = _this.seen.find(function (s) { return s.id === id; });\n if (!found)\n throw new Error(\"Unfound ID: \" + id);\n return found;\n };\n this.dump = function () {\n return \"\\ntype Identity = T;\\n\\n\" + _this.seen\n .map(function (item) { return \"type \" + item.id + \" = Identity<\" + item.type + \">;\"; })\n .join('\\n\\n') + \"\\n\";\n };\n this.setType = function (id, type) {\n var found = _this.findById(id);\n found.type = type;\n return found;\n };\n this.generate = function (schema) {\n var found = _this.findBySchema(schema);\n if (found)\n return found;\n var def = schema._def;\n var id = _this.randomId();\n var ty = {\n schema: schema,\n id: id,\n type: \"__INCOMPLETE__\",\n };\n _this.seen.push(ty);\n switch (def.t) {\n case z.ZodTypes.string:\n return _this.setType(id, \"string\");\n case z.ZodTypes.number:\n return _this.setType(id, \"number\");\n case z.ZodTypes.bigint:\n return _this.setType(id, \"bigint\");\n case z.ZodTypes.boolean:\n return _this.setType(id, \"boolean\");\n case z.ZodTypes.date:\n return _this.setType(id, \"Date\");\n case z.ZodTypes.undefined:\n return _this.setType(id, \"undefined\");\n case z.ZodTypes.null:\n return _this.setType(id, \"null\");\n case z.ZodTypes.any:\n return _this.setType(id, \"any\");\n case z.ZodTypes.unknown:\n return _this.setType(id, \"unknown\");\n case z.ZodTypes.void:\n return _this.setType(id, \"void\");\n case z.ZodTypes.literal:\n var val = def.value;\n var literalType = typeof val === 'string' ? \"\\\"\" + val + \"\\\"\" : \"\" + val;\n return _this.setType(id, literalType);\n case z.ZodTypes.enum:\n return _this.setType(id, def.values.map(function (v) { return \"\\\"\" + v + \"\\\"\"; }).join(' | '));\n case z.ZodTypes.object:\n var objectLines = [];\n var shape = def.shape();\n for (var key in shape) {\n var childSchema = shape[key];\n var childType = _this.generate(childSchema);\n var OPTKEY = isOptional(childSchema) ? '?' : '';\n objectLines.push(\"\" + key + OPTKEY + \": \" + childType.id);\n }\n var baseStruct = \"{\\n\" + objectLines\n .map(function (line) { return \" \" + line + \";\"; })\n .join('\\n') + \"\\n}\";\n _this.setType(id, \"\" + baseStruct);\n break;\n case z.ZodTypes.tuple:\n var tupleLines = [];\n for (var _i = 0, _a = def.items; _i < _a.length; _i++) {\n var elSchema = _a[_i];\n var elType = _this.generate(elSchema);\n tupleLines.push(elType.id);\n }\n var baseTuple = \"[\\n\" + tupleLines\n .map(function (line) { return \" \" + line + \",\"; })\n .join('\\n') + \"\\n]\";\n return _this.setType(id, \"\" + baseTuple);\n case z.ZodTypes.array:\n return _this.setType(id, _this.generate(def.type).id + \"[]\");\n case z.ZodTypes.function:\n var args = _this.generate(def.args);\n var returns = _this.generate(def.returns);\n return _this.setType(id, \"(...args: \" + args.id + \")=>\" + returns.id);\n case z.ZodTypes.promise:\n var promValue = _this.generate(def.type);\n return _this.setType(id, \"Promise<\" + promValue.id + \">\");\n case z.ZodTypes.union:\n var unionLines = [];\n for (var _b = 0, _c = def.options; _b < _c.length; _b++) {\n var elSchema = _c[_b];\n var elType = _this.generate(elSchema);\n unionLines.push(elType.id);\n }\n return _this.setType(id, unionLines.join(\" | \"));\n case z.ZodTypes.intersection:\n return _this.setType(id, _this.generate(def.left).id + \" & \" + _this.generate(def.right).id);\n case z.ZodTypes.record:\n return _this.setType(id, \"{[k:string]: \" + _this.generate(def.valueType).id + \"}\");\n case z.ZodTypes.lazy:\n var lazyType = def.getter();\n return _this.setType(id, _this.generate(lazyType).id);\n case z.ZodTypes.nativeEnum:\n // const lazyType = def.getter();\n return _this.setType(id, 'asdf');\n case z.ZodTypes.keyof:\n // const lazyType = def.getter();\n return _this.setType(id, \"keyof [\" + def.values\n .map(function (val) { return (typeof val === 'string' ? \"\\\"\" + val + \"\\\"\" : val); })\n .join(', ') + \"]\");\n default:\n util_1.util.assertNever(def);\n }\n return _this.findById(id);\n };\n }\n ZodCodeGenerator.create = function () { return new ZodCodeGenerator(); };\n return ZodCodeGenerator;\n}());\nexports.ZodCodeGenerator = ZodCodeGenerator;\n//# sourceMappingURL=codegen.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ZodError_1 = require(\"./ZodError\");\nvar util_1 = require(\"./helpers/util\");\nexports.defaultErrorMap = function (error, _ctx) {\n var message;\n switch (error.code) {\n case ZodError_1.ZodErrorCode.invalid_type:\n if (error.received === 'undefined') {\n message = 'Required';\n }\n else {\n message = \"Expected \" + error.expected + \", received \" + error.received;\n }\n break;\n case ZodError_1.ZodErrorCode.nonempty_array_is_empty:\n message = \"List must contain at least one item\";\n break;\n case ZodError_1.ZodErrorCode.unrecognized_keys:\n message = \"Unrecognized key(s) in object: \" + error.keys.map(function (k) { return \"'\" + k + \"'\"; }).join(', ');\n break;\n case ZodError_1.ZodErrorCode.invalid_union:\n message = \"Invalid input\";\n break;\n // case ZodErrorCode.invalid_tuple_length:\n // message = `Expected list of ${error.expected} items, received ${error.received} items`;\n // break;\n case ZodError_1.ZodErrorCode.invalid_literal_value:\n message = \"Input must be \\\"\" + error.expected + \"\\\"\";\n break;\n case ZodError_1.ZodErrorCode.invalid_enum_value:\n message = \"Input must be one of these values: \" + error.options.join(', ');\n break;\n case ZodError_1.ZodErrorCode.invalid_arguments:\n message = \"Invalid function arguments\";\n break;\n case ZodError_1.ZodErrorCode.invalid_return_type:\n message = \"Invalid function return type\";\n break;\n case ZodError_1.ZodErrorCode.invalid_date:\n message = \"Invalid date\";\n break;\n // case ZodErrorCode.too_small:\n // const tooShortNoun = _ctx.data === 'string' ? 'characters' : 'items';\n // message = `Too short, should be at least ${error.minimum} ${tooShortNoun}`;\n // break;\n // case ZodErrorCode.too_big:\n // const tooLongNoun = _ctx.data === 'string' ? 'characters' : 'items';\n // message = `Too short, should be at most ${error.maximum} ${tooLongNoun}`;\n // break;\n case ZodError_1.ZodErrorCode.invalid_string:\n if (error.validation !== 'regex')\n message = \"Invalid \" + error.validation;\n else\n message = 'Invalid';\n break;\n // case ZodErrorCode.invalid_url:\n // message = 'Invalid URL.';\n // break;\n // case ZodErrorCode.invalid_uuid:\n // message = 'Invalid UUID.';\n // break;\n case ZodError_1.ZodErrorCode.too_small:\n if (error.type === 'array')\n message = \"Should have \" + (error.inclusive ? \"at least\" : \"more than\") + \" \" + error.minimum + \" items\";\n else if (error.type === 'string')\n message = \"Should be \" + (error.inclusive ? \"at least\" : \"over\") + \" \" + error.minimum + \" characters\";\n else if (error.type === 'number')\n message = \"Value should be greater than \" + (error.inclusive ? \"or equal to \" : \"\") + error.minimum;\n else\n message = 'Invalid input';\n break;\n case ZodError_1.ZodErrorCode.too_big:\n if (error.type === 'array')\n message = \"Should have \" + (error.inclusive ? \"at most\" : \"less than\") + \" \" + error.maximum + \" items\";\n else if (error.type === 'string')\n message = \"Should be \" + (error.inclusive ? \"at most\" : \"under\") + \" \" + error.maximum + \" characters long\";\n else if (error.type === 'number')\n message = \"Value should be less than \" + (error.inclusive ? \"or equal to \" : \"\") + error.maximum;\n else\n message = 'Invalid input';\n break;\n case ZodError_1.ZodErrorCode.custom_error:\n message = \"Invalid input.\";\n break;\n default:\n message = \"Invalid input.\";\n util_1.util.assertNever(error);\n }\n return { message: message };\n // return `Invalid input.`;\n};\n//# sourceMappingURL=defaultErrorMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = function (message) { return (typeof message === 'string' ? { message: message } : message || {}); };\n})(errorUtil = exports.errorUtil || (exports.errorUtil = {}));\n//# sourceMappingURL=errorUtil.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar base_1 = require(\"../types/base\");\nvar intersection_1 = require(\"../types/intersection\");\nvar object_1 = require(\"../types/object\");\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = function (first, second) {\n var firstKeys = Object.keys(first);\n var secondKeys = Object.keys(second);\n var sharedKeys = firstKeys.filter(function (k) { return secondKeys.indexOf(k) !== -1; });\n var sharedShape = {};\n for (var _i = 0, sharedKeys_1 = sharedKeys; _i < sharedKeys_1.length; _i++) {\n var k = sharedKeys_1[_i];\n sharedShape[k] = intersection_1.ZodIntersection.create(first[k], second[k]);\n }\n return __assign({}, first, second, sharedShape);\n };\n objectUtil.mergeObjects = function (first) { return function (second) {\n var mergedShape = objectUtil.mergeShapes(first._def.shape(), second._def.shape());\n var merged = new object_1.ZodObject({\n t: base_1.ZodTypes.object,\n checks: (first._def.checks || []).concat((second._def.checks || [])),\n params: {\n strict: first.params.strict && second.params.strict,\n },\n shape: function () { return mergedShape; },\n });\n return merged;\n }; };\n})(objectUtil = exports.objectUtil || (exports.objectUtil = {}));\n//# sourceMappingURL=objectUtil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util;\n(function (util) {\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = function (items) {\n var obj = {};\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = function (obj) {\n var validKeys = Object.keys(obj).filter(function (k) { return typeof obj[obj[k]] !== 'number'; });\n var filtered = {};\n for (var _i = 0, validKeys_1 = validKeys; _i < validKeys_1.length; _i++) {\n var k = validKeys_1[_i];\n filtered[k] = obj[k];\n }\n return util.getValues(filtered);\n };\n util.getValues = function (obj) {\n return Object.keys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectValues = function (obj) {\n return Object.keys(obj).map(function (e) {\n return obj[e];\n });\n };\n})(util = exports.util || (exports.util = {}));\n//# sourceMappingURL=util.js.map","\"use strict\";\n/* ZOD */\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar string_1 = require(\"./types/string\");\nexports.ZodString = string_1.ZodString;\nvar number_1 = require(\"./types/number\");\nexports.ZodNumber = number_1.ZodNumber;\nvar bigint_1 = require(\"./types/bigint\");\nexports.ZodBigInt = bigint_1.ZodBigInt;\nvar boolean_1 = require(\"./types/boolean\");\nexports.ZodBoolean = boolean_1.ZodBoolean;\nvar date_1 = require(\"./types/date\");\nexports.ZodDate = date_1.ZodDate;\nvar undefined_1 = require(\"./types/undefined\");\nexports.ZodUndefined = undefined_1.ZodUndefined;\nvar null_1 = require(\"./types/null\");\nexports.ZodNull = null_1.ZodNull;\nvar any_1 = require(\"./types/any\");\nexports.ZodAny = any_1.ZodAny;\nvar unknown_1 = require(\"./types/unknown\");\nexports.ZodUnknown = unknown_1.ZodUnknown;\nvar void_1 = require(\"./types/void\");\nexports.ZodVoid = void_1.ZodVoid;\nvar array_1 = require(\"./types/array\");\nexports.ZodArray = array_1.ZodArray;\nvar object_1 = require(\"./types/object\");\nexports.ZodObject = object_1.ZodObject;\nvar union_1 = require(\"./types/union\");\nexports.ZodUnion = union_1.ZodUnion;\nvar intersection_1 = require(\"./types/intersection\");\nexports.ZodIntersection = intersection_1.ZodIntersection;\nvar tuple_1 = require(\"./types/tuple\");\nexports.ZodTuple = tuple_1.ZodTuple;\nvar record_1 = require(\"./types/record\");\nexports.ZodRecord = record_1.ZodRecord;\nvar function_1 = require(\"./types/function\");\nexports.ZodFunction = function_1.ZodFunction;\nvar lazy_1 = require(\"./types/lazy\");\nexports.ZodLazy = lazy_1.ZodLazy;\nvar literal_1 = require(\"./types/literal\");\nexports.ZodLiteral = literal_1.ZodLiteral;\nvar enum_1 = require(\"./types/enum\");\nexports.ZodEnum = enum_1.ZodEnum;\nvar nativeEnum_1 = require(\"./types/nativeEnum\");\nexports.ZodNativeEnum = nativeEnum_1.ZodNativeEnum;\nvar keyof_1 = require(\"./types/keyof\");\nvar promise_1 = require(\"./types/promise\");\nexports.ZodPromise = promise_1.ZodPromise;\nvar base_1 = require(\"./types/base\");\nexports.ZodType = base_1.ZodType;\nexports.Schema = base_1.ZodType;\nexports.ZodSchema = base_1.ZodType;\nexports.ZodTypes = base_1.ZodTypes;\n// import { ZodError, ZodErrorCode, ZodInvalidTypeError,\n// ZodNonEmptyArrayIsEmptyError,\n// ZodUnrecognizedKeysError,\n// ZodInvalidUnionError,\n// ZodInvalidLiteralValueError,\n// ZodInvalidEnumValueError,\n// ZodInvalidArgumentsError,\n// ZodInvalidReturnTypeError,\n// ZodInvalidDateError,\n// ZodInvalidStringError,\n// ZodTooSmallError,\n// ZodTooBigError,\n// ZodCustomError } from './ZodError';\nvar parser_1 = require(\"./parser\");\nexports.ZodParsedType = parser_1.ZodParsedType;\nvar codegen_1 = require(\"./codegen\");\nexports.ZodCodeGenerator = codegen_1.ZodCodeGenerator;\nvar stringType = string_1.ZodString.create;\nexports.string = stringType;\nvar numberType = number_1.ZodNumber.create;\nexports.number = numberType;\nvar bigIntType = bigint_1.ZodBigInt.create;\nexports.bigint = bigIntType;\nvar booleanType = boolean_1.ZodBoolean.create;\nexports.boolean = booleanType;\nvar dateType = date_1.ZodDate.create;\nexports.date = dateType;\nvar undefinedType = undefined_1.ZodUndefined.create;\nexports.undefined = undefinedType;\nvar nullType = null_1.ZodNull.create;\nexports.null = nullType;\nvar anyType = any_1.ZodAny.create;\nexports.any = anyType;\nvar unknownType = unknown_1.ZodUnknown.create;\nexports.unknown = unknownType;\nvar voidType = void_1.ZodVoid.create;\nexports.void = voidType;\nvar arrayType = array_1.ZodArray.create;\nexports.array = arrayType;\nvar objectType = object_1.ZodObject.create;\nexports.object = objectType;\nvar unionType = union_1.ZodUnion.create;\nexports.union = unionType;\nvar intersectionType = intersection_1.ZodIntersection.create;\nexports.intersection = intersectionType;\nvar tupleType = tuple_1.ZodTuple.create;\nexports.tuple = tupleType;\nvar recordType = record_1.ZodRecord.create;\nexports.record = recordType;\nvar functionType = function_1.ZodFunction.create;\nexports.function = functionType;\nvar lazyType = lazy_1.ZodLazy.create;\nexports.lazy = lazyType;\nvar literalType = literal_1.ZodLiteral.create;\nexports.literal = literalType;\nvar enumType = enum_1.ZodEnum.create;\nexports.enum = enumType;\nvar nativeEnumType = nativeEnum_1.ZodNativeEnum.create;\nexports.nativeEnum = nativeEnumType;\nvar promiseType = promise_1.ZodPromise.create;\nexports.promise = promiseType;\nvar keyofType = keyof_1.ZodKeyof.create;\nexports.keyof = keyofType;\nvar ostring = function () { return stringType().optional(); };\nexports.ostring = ostring;\nvar onumber = function () { return numberType().optional(); };\nexports.onumber = onumber;\nvar oboolean = function () { return booleanType().optional(); };\nexports.oboolean = oboolean;\nvar codegen = codegen_1.ZodCodeGenerator.create;\nexports.codegen = codegen;\nexports.custom = function (check, params) { return anyType().refine(check, params); };\nvar instanceOfType = function (cls, params) {\n if (params === void 0) { params = {\n message: \"Input not instance of \" + cls.name,\n }; }\n return exports.custom(function (data) { return data instanceof cls; }, params);\n};\nexports.instanceof = instanceOfType;\nexports.late = {\n object: object_1.ZodObject.lazycreate,\n};\n__export(require(\"./ZodError\"));\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./index\"));\nvar util_1 = require(\"./helpers/util\");\nexports.isScalar = function (schema, params) {\n if (params === void 0) { params = { root: true }; }\n var def = schema._def;\n var returnValue = false;\n switch (def.t) {\n case z.ZodTypes.string:\n returnValue = true;\n break;\n case z.ZodTypes.number:\n returnValue = true;\n break;\n case z.ZodTypes.bigint:\n returnValue = true;\n break;\n case z.ZodTypes.boolean:\n returnValue = true;\n break;\n case z.ZodTypes.undefined:\n returnValue = true;\n break;\n case z.ZodTypes.null:\n returnValue = true;\n break;\n case z.ZodTypes.any:\n returnValue = false;\n break;\n case z.ZodTypes.unknown:\n returnValue = false;\n break;\n case z.ZodTypes.void:\n returnValue = false;\n break;\n case z.ZodTypes.array:\n if (params.root === false)\n return false;\n returnValue = exports.isScalar(def.type, { root: false });\n break;\n case z.ZodTypes.object:\n returnValue = false;\n break;\n case z.ZodTypes.union:\n returnValue = def.options.every(function (x) { return exports.isScalar(x); });\n break;\n case z.ZodTypes.intersection:\n returnValue = exports.isScalar(def.left) && exports.isScalar(def.right);\n break;\n case z.ZodTypes.tuple:\n returnValue = false;\n break;\n case z.ZodTypes.lazy:\n returnValue = exports.isScalar(def.getter());\n break;\n case z.ZodTypes.literal:\n returnValue = true;\n break;\n case z.ZodTypes.enum:\n returnValue = true;\n break;\n case z.ZodTypes.nativeEnum:\n returnValue = true;\n break;\n case z.ZodTypes.function:\n returnValue = false;\n break;\n case z.ZodTypes.record:\n returnValue = false;\n break;\n case z.ZodTypes.date:\n returnValue = true;\n break;\n case z.ZodTypes.promise:\n returnValue = false;\n break;\n case z.ZodTypes.keyof:\n returnValue = true;\n break;\n default:\n util_1.util.assertNever(def);\n // returnValue = false; break;\n }\n return returnValue;\n};\n//# sourceMappingURL=isScalar.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar _this = this;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./types/base\"));\nvar ZodError_1 = require(\"./ZodError\");\nvar util_1 = require(\"./helpers/util\");\nvar defaultErrorMap_1 = require(\"./defaultErrorMap\");\nexports.getParsedType = function (data) {\n if (typeof data === 'string')\n return 'string';\n if (typeof data === 'number') {\n if (Number.isNaN(data))\n return 'nan';\n return 'number';\n }\n if (typeof data === 'boolean')\n return 'boolean';\n if (typeof data === 'bigint')\n return 'bigint';\n if (typeof data === 'symbol')\n return 'symbol';\n if (data instanceof Date)\n return 'date';\n if (typeof data === 'function')\n return 'function';\n if (data === undefined)\n return 'undefined';\n if (typeof data === 'undefined')\n return 'undefined';\n if (typeof data === 'object') {\n if (Array.isArray(data))\n return 'array';\n if (!data)\n return 'null';\n if (data.then &&\n typeof data.then === 'function' &&\n data.catch &&\n typeof data.catch === 'function') {\n return 'promise';\n }\n return 'object';\n }\n return 'unknown';\n};\nexports.ZodParsedType = util_1.util.arrayToEnum([\n 'string',\n 'nan',\n 'number',\n 'integer',\n 'boolean',\n 'date',\n 'bigint',\n 'symbol',\n 'function',\n 'undefined',\n 'null',\n 'array',\n 'object',\n 'unknown',\n 'promise',\n 'void',\n]);\nexports.find = function (arr, checker) {\n for (var _i = 0, arr_1 = arr; _i < arr_1.length; _i++) {\n var item = arr_1[_i];\n if (checker(item))\n return item;\n }\n return undefined;\n};\nvar makeError = function (params, obj, errorData) {\n var errorArg = __assign({}, errorData, { path: params.path.concat((errorData.path || [])) });\n var ctxArg = { data: obj };\n var defaultError = defaultErrorMap_1.defaultErrorMap === params.errorMap\n ? { message: \"Invalid value.\" }\n : defaultErrorMap_1.defaultErrorMap(errorArg, __assign({}, ctxArg, { defaultError: \"Invalid value.\" }));\n return __assign({}, errorData, { path: params.path.concat((errorData.path || [])), message: errorData.message ||\n params.errorMap(errorArg, __assign({}, ctxArg, { defaultError: defaultError.message })).message });\n};\nexports.ZodParser = function (schemaDef) { return function (obj, baseParams) {\n if (baseParams === void 0) { baseParams = { seen: [], errorMap: defaultErrorMap_1.defaultErrorMap, path: [] }; }\n var params = {\n seen: baseParams.seen || [],\n path: baseParams.path || [],\n errorMap: baseParams.errorMap || defaultErrorMap_1.defaultErrorMap,\n };\n var def = schemaDef;\n var parsedType = exports.getParsedType(obj);\n var schemaSeen = exports.find(params.seen, function (x) { return x.schema === schemaDef; });\n var isNonprimitive = ['array', 'object'].indexOf(parsedType) !== -1;\n if (isNonprimitive) {\n if (schemaSeen) {\n var found = exports.find(schemaSeen.objects, function (x) { return x.data === obj; });\n if (found) {\n if (found.error) {\n throw found.error;\n }\n found.times = found.times + 1;\n if (found.times > 5 && isNonprimitive) {\n return Symbol('recursion depth exceeded.');\n }\n else if (found.times > 2) {\n }\n }\n else {\n //\n schemaSeen.objects.push(obj);\n }\n }\n else {\n params.seen.push({\n schema: schemaDef,\n objects: [{ data: obj, error: undefined, times: 1 }],\n });\n }\n }\n // const setError = (error: Error) => {\n // const schemaSeen = params.seen.find(x => x.schema === schemaDef);\n // if (schemaSeen) {\n // const found = schemaSeen.objects.find(x => x.data === obj);\n // if (found) {\n // found.error = error;\n // }\n // }\n // };\n var error = new ZodError_1.ZodError([]);\n var returnValue = obj;\n switch (def.t) {\n case z.ZodTypes.string:\n if (parsedType !== exports.ZodParsedType.string) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.string,\n received: parsedType,\n }));\n // setError(error);\n throw error;\n }\n break;\n case z.ZodTypes.number:\n if (parsedType !== exports.ZodParsedType.number) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.number,\n received: parsedType,\n }));\n // setError(error);\n throw error;\n }\n if (Number.isNaN(obj)) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.number,\n received: exports.ZodParsedType.nan,\n }));\n // setError(error);\n throw error;\n }\n break;\n case z.ZodTypes.bigint:\n if (parsedType !== exports.ZodParsedType.bigint) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.number,\n received: parsedType,\n }));\n // setError(error);\n throw error;\n }\n break;\n case z.ZodTypes.boolean:\n if (parsedType !== exports.ZodParsedType.boolean) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.boolean,\n received: parsedType,\n }));\n // setError(error);\n throw error;\n }\n break;\n case z.ZodTypes.undefined:\n if (parsedType !== exports.ZodParsedType.undefined) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.undefined,\n received: parsedType,\n }));\n // setError(error);\n throw error;\n }\n break;\n case z.ZodTypes.null:\n if (parsedType !== exports.ZodParsedType.null) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.null,\n received: parsedType,\n }));\n // setError(error);\n throw error;\n }\n break;\n case z.ZodTypes.any:\n break;\n case z.ZodTypes.unknown:\n break;\n case z.ZodTypes.void:\n if (parsedType !== exports.ZodParsedType.undefined &&\n parsedType !== exports.ZodParsedType.null) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.void,\n received: parsedType,\n }));\n // setError(error);\n throw error;\n }\n break;\n case z.ZodTypes.array:\n if (parsedType !== exports.ZodParsedType.array) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.array,\n received: parsedType,\n }));\n // setError(error);\n throw error;\n }\n var data = obj;\n if (def.nonempty === true && obj.length === 0) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.nonempty_array_is_empty,\n }));\n // setError(error);\n throw error;\n }\n data.map(function (item, i) {\n try {\n var parsedItem = def.type.parse(item, __assign({}, params, { path: params.path.concat([i]) }));\n return parsedItem;\n }\n catch (err) {\n var zerr = err;\n error.addErrors(zerr.errors);\n }\n });\n if (!error.isEmpty) {\n // setError(error);\n throw error;\n }\n break;\n case z.ZodTypes.object:\n if (parsedType !== exports.ZodParsedType.object) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.object,\n received: parsedType,\n }));\n // setError(error);\n throw error;\n }\n var shape = def.shape();\n if (def.params.strict) {\n var shapeKeys_1 = Object.keys(shape);\n var objKeys = Object.keys(obj);\n var extraKeys = objKeys.filter(function (k) { return shapeKeys_1.indexOf(k) === -1; });\n if (extraKeys.length) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.unrecognized_keys,\n keys: extraKeys,\n }));\n }\n }\n for (var key in shape) {\n try {\n def\n .shape()[key].parse(obj[key], __assign({}, params, { path: params.path.concat([key]) }));\n }\n catch (err) {\n var zerr = err;\n error.addErrors(zerr.errors);\n }\n }\n break;\n case z.ZodTypes.union:\n var isValid = false;\n var unionErrors = [];\n for (var _i = 0, _a = def.options; _i < _a.length; _i++) {\n var option = _a[_i];\n try {\n option.parse(obj, params);\n isValid = true;\n }\n catch (err) {\n unionErrors.push(err);\n }\n }\n if (!isValid) {\n var filteredErrors = unionErrors.filter(function (err) {\n return err.errors[0].code !== 'invalid_type';\n });\n if (filteredErrors.length === 1) {\n error.addErrors(filteredErrors[0].errors);\n }\n else {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_union,\n unionErrors: unionErrors,\n }));\n }\n }\n break;\n case z.ZodTypes.intersection:\n try {\n def.left.parse(obj, params);\n }\n catch (err) {\n error.addErrors(err.errors);\n }\n try {\n def.right.parse(obj, params);\n }\n catch (err) {\n error.addErrors(err.errors);\n }\n break;\n case z.ZodTypes.tuple:\n if (parsedType !== exports.ZodParsedType.array) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.array,\n received: parsedType,\n }));\n // setError(error);\n throw error;\n }\n if (obj.length > def.items.length) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.too_big,\n maximum: def.items.length,\n inclusive: true,\n type: 'array',\n }));\n }\n else if (obj.length < def.items.length) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.too_small,\n minimum: def.items.length,\n inclusive: true,\n type: 'array',\n }));\n }\n var parsedTuple = [];\n var tupleData = obj;\n for (var index in tupleData) {\n var item = tupleData[index];\n var itemParser = def.items[index];\n try {\n parsedTuple.push(itemParser.parse(item, __assign({}, params, { path: params.path.concat([index]) })));\n }\n catch (err) {\n error.addErrors(err.errors);\n }\n }\n break;\n case z.ZodTypes.lazy:\n var lazySchema = def.getter();\n lazySchema.parse(obj, params);\n break;\n case z.ZodTypes.literal:\n if (obj !== def.value) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_literal_value,\n expected: def.value,\n }));\n }\n break;\n case z.ZodTypes.enum:\n if (def.values.indexOf(obj) === -1) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_enum_value,\n options: def.values,\n }));\n }\n break;\n case z.ZodTypes.nativeEnum:\n if (util_1.util.getValidEnumValues(def.values).indexOf(obj) === -1) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_enum_value,\n options: util_1.util.getValues(def.values),\n }));\n }\n break;\n case z.ZodTypes.keyof:\n if (util_1.util.getValidEnumValues(def.values).indexOf(obj) === -1) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_enum_value,\n options: util_1.util.getValues(def.values),\n }));\n }\n break;\n case z.ZodTypes.function:\n if (parsedType !== exports.ZodParsedType.function) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.function,\n received: parsedType,\n }));\n // setError(error);\n throw error;\n }\n var validatedFunc = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n try {\n def.args.parse(args);\n }\n catch (err) {\n if (err instanceof ZodError_1.ZodError) {\n var argsError = new ZodError_1.ZodError([]);\n argsError.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_arguments,\n argumentsError: err,\n }));\n throw argsError;\n }\n throw err;\n }\n var result = obj.apply(void 0, args);\n try {\n return def.returns.parse(result);\n }\n catch (err) {\n if (err instanceof ZodError_1.ZodError) {\n var returnsError = new ZodError_1.ZodError([]);\n returnsError.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_return_type,\n returnTypeError: err,\n }));\n throw returnsError;\n }\n throw err;\n }\n };\n return validatedFunc;\n case z.ZodTypes.record:\n if (parsedType !== exports.ZodParsedType.object) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.object,\n received: parsedType,\n }));\n // setError(error);\n throw error;\n }\n for (var key in obj) {\n try {\n def.valueType.parse(obj[key], __assign({}, params, { path: params.path.concat([key]) }));\n }\n catch (err) {\n error.addErrors(err.errors);\n }\n }\n break;\n case z.ZodTypes.date:\n if (!(obj instanceof Date)) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.date,\n received: parsedType,\n }));\n // setError(error);\n throw error;\n }\n if (isNaN(obj.getTime())) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_date,\n }));\n // setError(error);\n throw error;\n }\n break;\n case z.ZodTypes.promise:\n if (parsedType !== exports.ZodParsedType.promise) {\n error.addError(makeError(params, obj, {\n code: ZodError_1.ZodErrorCode.invalid_type,\n expected: exports.ZodParsedType.promise,\n received: parsedType,\n }));\n // setError(error);\n throw error;\n }\n return new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {\n var objValue, parsed;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, obj];\n case 1:\n objValue = _a.sent();\n try {\n parsed = def.type.parse(objValue, params);\n res(parsed);\n }\n catch (err) {\n rej(err);\n }\n return [2 /*return*/];\n }\n });\n }); });\n default:\n util_1.util.assertNever(def);\n }\n var customChecks = def.checks || [];\n for (var _b = 0, customChecks_1 = customChecks; _b < customChecks_1.length; _b++) {\n var check = customChecks_1[_b];\n if (!check.check(returnValue)) {\n var checkMethod = check.check, noMethodCheck = __rest(check, [\"check\"]);\n error.addError(makeError(params, obj, noMethodCheck));\n }\n }\n if (!error.isEmpty) {\n // setError(error);\n throw error;\n }\n return returnValue;\n}; };\n//# sourceMappingURL=parser.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodAny = /** @class */ (function (_super) {\n __extends(ZodAny, _super);\n function ZodAny() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () { return _this._def; };\n return _this;\n }\n ZodAny.create = function () {\n return new ZodAny({\n t: z.ZodTypes.any,\n });\n };\n return ZodAny;\n}(z.ZodType));\nexports.ZodAny = ZodAny;\n//# sourceMappingURL=any.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\n// import { ZodUndefined } from './undefined';\n// import { ZodNull } from './null';\n// import { ZodUnion } from './union';\nvar ZodError_1 = require(\"../ZodError\");\nvar ZodArray = /** @class */ (function (_super) {\n __extends(ZodArray, _super);\n function ZodArray() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.toJSON = function () {\n return {\n t: _this._def.t,\n nonempty: _this._def.nonempty,\n type: _this._def.type.toJSON(),\n };\n };\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.min = function (minLength, message) {\n return _this._refinement(__assign({ check: function (data) { return data.length >= minLength; }, code: ZodError_1.ZodErrorCode.too_small, type: 'array', inclusive: true, minimum: minLength }, (typeof message === 'string' ? { message: message } : message)));\n };\n _this.max = function (maxLength, message) {\n return _this._refinement(__assign({ check: function (data) { return data.length <= maxLength; }, code: ZodError_1.ZodErrorCode.too_big, type: 'array', inclusive: true, maximum: maxLength }, (typeof message === 'string' ? { message: message } : message)));\n };\n _this.length = function (len, message) { return _this.min(len, { message: message }).max(len, { message: message }); };\n _this.nonempty = function () {\n return new ZodNonEmptyArray(__assign({}, _this._def, { nonempty: true }));\n };\n return _this;\n }\n Object.defineProperty(ZodArray.prototype, \"element\", {\n get: function () {\n return this._def.type;\n },\n enumerable: true,\n configurable: true\n });\n ZodArray.create = function (schema) {\n return new ZodArray({\n t: z.ZodTypes.array,\n type: schema,\n nonempty: false,\n });\n };\n return ZodArray;\n}(z.ZodType));\nexports.ZodArray = ZodArray;\nvar ZodNonEmptyArray = /** @class */ (function (_super) {\n __extends(ZodNonEmptyArray, _super);\n function ZodNonEmptyArray() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.toJSON = function () {\n return {\n t: _this._def.t,\n type: _this._def.type.toJSON(),\n };\n };\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.min = function (minLength, message) {\n return _this._refinement(__assign({ check: function (data) { return data.length >= minLength; }, code: ZodError_1.ZodErrorCode.too_small, minimum: minLength, type: 'array', inclusive: true }, (typeof message === 'string' ? { message: message } : message)));\n };\n _this.max = function (maxLength, message) {\n return _this._refinement(__assign({ check: function (data) { return data.length <= maxLength; }, code: ZodError_1.ZodErrorCode.too_big, maximum: maxLength, type: 'array', inclusive: true }, (typeof message === 'string' ? { message: message } : message)));\n };\n _this.length = function (len, message) { return _this.min(len, { message: message }).max(len, { message: message }); };\n return _this;\n }\n return ZodNonEmptyArray;\n}(z.ZodType));\nexports.ZodNonEmptyArray = ZodNonEmptyArray;\n//# sourceMappingURL=array.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar parser_1 = require(\"../parser\");\nvar index_1 = require(\"../index\");\nvar ZodTypes;\n(function (ZodTypes) {\n ZodTypes[\"string\"] = \"string\";\n ZodTypes[\"number\"] = \"number\";\n ZodTypes[\"bigint\"] = \"bigint\";\n ZodTypes[\"boolean\"] = \"boolean\";\n ZodTypes[\"date\"] = \"date\";\n ZodTypes[\"undefined\"] = \"undefined\";\n ZodTypes[\"null\"] = \"null\";\n ZodTypes[\"array\"] = \"array\";\n ZodTypes[\"object\"] = \"object\";\n ZodTypes[\"union\"] = \"union\";\n ZodTypes[\"intersection\"] = \"intersection\";\n ZodTypes[\"tuple\"] = \"tuple\";\n ZodTypes[\"record\"] = \"record\";\n ZodTypes[\"function\"] = \"function\";\n ZodTypes[\"lazy\"] = \"lazy\";\n ZodTypes[\"literal\"] = \"literal\";\n ZodTypes[\"enum\"] = \"enum\";\n ZodTypes[\"nativeEnum\"] = \"nativeEnum\";\n ZodTypes[\"promise\"] = \"promise\";\n ZodTypes[\"any\"] = \"any\";\n ZodTypes[\"unknown\"] = \"unknown\";\n ZodTypes[\"void\"] = \"void\";\n ZodTypes[\"keyof\"] = \"keyof\";\n})(ZodTypes = exports.ZodTypes || (exports.ZodTypes = {}));\nvar ZodType = /** @class */ (function () {\n function ZodType(def) {\n var _this = this;\n this.safeParse = function (data, params) {\n try {\n var parsed = _this.parse(data, params);\n return {\n success: true,\n data: parsed,\n };\n }\n catch (err) {\n if (err instanceof index_1.ZodError) {\n return {\n success: false,\n error: err,\n };\n }\n throw err;\n }\n };\n this.parseAsync = function (value, params) {\n return new Promise(function (res, rej) {\n try {\n var parsed = _this.parse(value, params);\n return res(parsed);\n }\n catch (err) {\n return rej(err);\n }\n });\n };\n this.refine = function (check, message) {\n if (message === void 0) { message = 'Invalid value.'; }\n if (typeof message === 'string') {\n return _this.refinement({ check: check, message: message });\n }\n return _this.refinement(__assign({ check: check }, message));\n };\n this.refinement = function (refinement) {\n return _this._refinement(__assign({ code: index_1.ZodErrorCode.custom_error }, refinement));\n };\n this._refinement = function (refinement) {\n return new _this.constructor(__assign({}, _this._def, { checks: (_this._def.checks || []).concat([refinement]) }));\n };\n // abstract // opt optional: () => any;\n this.optional = function () {\n return index_1.ZodUnion.create([_this, index_1.ZodUndefined.create()]);\n };\n this.nullable = function () {\n return index_1.ZodUnion.create([_this, index_1.ZodNull.create()]);\n };\n this.array = function () { return index_1.ZodArray.create(_this); };\n this.or = function (arg) {\n return index_1.ZodUnion.create([_this, arg]);\n };\n this._def = def;\n this.parse = parser_1.ZodParser(def);\n }\n ZodType.prototype.is = function (u) {\n try {\n this.parse(u);\n return true;\n }\n catch (err) {\n return false;\n }\n };\n ZodType.prototype.check = function (u) {\n try {\n this.parse(u);\n return true;\n }\n catch (err) {\n return false;\n }\n };\n return ZodType;\n}());\nexports.ZodType = ZodType;\n//# sourceMappingURL=base.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodBigInt = /** @class */ (function (_super) {\n __extends(ZodBigInt, _super);\n function ZodBigInt() {\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () { return _this._def; };\n return _this;\n }\n ZodBigInt.create = function () {\n return new ZodBigInt({\n t: z.ZodTypes.bigint,\n });\n };\n return ZodBigInt;\n}(z.ZodType));\nexports.ZodBigInt = ZodBigInt;\n//# sourceMappingURL=bigint.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodBoolean = /** @class */ (function (_super) {\n __extends(ZodBoolean, _super);\n function ZodBoolean() {\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () { return _this._def; };\n return _this;\n }\n ZodBoolean.create = function () {\n return new ZodBoolean({\n t: z.ZodTypes.boolean,\n });\n };\n return ZodBoolean;\n}(z.ZodType));\nexports.ZodBoolean = ZodBoolean;\n//# sourceMappingURL=boolean.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodDate = /** @class */ (function (_super) {\n __extends(ZodDate, _super);\n function ZodDate() {\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () { return _this._def; };\n return _this;\n }\n ZodDate.create = function () {\n return new ZodDate({\n t: z.ZodTypes.date,\n });\n };\n return ZodDate;\n}(z.ZodType));\nexports.ZodDate = ZodDate;\n//# sourceMappingURL=date.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodEnum = /** @class */ (function (_super) {\n __extends(ZodEnum, _super);\n function ZodEnum() {\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () { return _this._def; };\n return _this;\n }\n Object.defineProperty(ZodEnum.prototype, \"options\", {\n get: function () {\n return this._def.values;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZodEnum.prototype, \"enum\", {\n get: function () {\n var enumValues = {};\n for (var _i = 0, _a = this._def.values; _i < _a.length; _i++) {\n var val = _a[_i];\n enumValues[val] = val;\n }\n return enumValues;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZodEnum.prototype, \"Values\", {\n get: function () {\n var enumValues = {};\n for (var _i = 0, _a = this._def.values; _i < _a.length; _i++) {\n var val = _a[_i];\n enumValues[val] = val;\n }\n return enumValues;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZodEnum.prototype, \"Enum\", {\n get: function () {\n var enumValues = {};\n for (var _i = 0, _a = this._def.values; _i < _a.length; _i++) {\n var val = _a[_i];\n enumValues[val] = val;\n }\n return enumValues;\n },\n enumerable: true,\n configurable: true\n });\n ZodEnum.create = function (values) {\n return new ZodEnum({\n t: z.ZodTypes.enum,\n values: values,\n });\n };\n return ZodEnum;\n}(z.ZodType));\nexports.ZodEnum = ZodEnum;\n//# sourceMappingURL=enum.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar tuple_1 = require(\"./tuple\");\nvar unknown_1 = require(\"./unknown\");\nvar ZodFunction = /** @class */ (function (_super) {\n __extends(ZodFunction, _super);\n function ZodFunction() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.args = function () {\n var items = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n items[_i] = arguments[_i];\n }\n return new ZodFunction(__assign({}, _this._def, { args: tuple_1.ZodTuple.create(items) }));\n };\n _this.returns = function (returnType) {\n return new ZodFunction(__assign({}, _this._def, { returns: returnType }));\n };\n _this.implement = function (func) {\n var validatedFunc = _this.parse(func);\n return validatedFunc;\n };\n _this.validate = _this.implement;\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () {\n return {\n t: _this._def.t,\n args: _this._def.args.toJSON(),\n returns: _this._def.returns.toJSON(),\n };\n };\n return _this;\n }\n ZodFunction.create = function (args, returns) {\n return new ZodFunction({\n t: z.ZodTypes.function,\n args: args || tuple_1.ZodTuple.create([]),\n returns: returns || unknown_1.ZodUnknown.create(),\n });\n };\n return ZodFunction;\n}(z.ZodType));\nexports.ZodFunction = ZodFunction;\n//# sourceMappingURL=function.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodIntersection = /** @class */ (function (_super) {\n __extends(ZodIntersection, _super);\n function ZodIntersection() {\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () { return ({\n t: _this._def.t,\n left: _this._def.left.toJSON(),\n right: _this._def.right.toJSON(),\n }); };\n return _this;\n }\n ZodIntersection.create = function (left, right) {\n return new ZodIntersection({\n t: z.ZodTypes.intersection,\n left: left,\n right: right,\n });\n };\n return ZodIntersection;\n}(z.ZodType));\nexports.ZodIntersection = ZodIntersection;\n//# sourceMappingURL=intersection.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodKeyof = /** @class */ (function (_super) {\n __extends(ZodKeyof, _super);\n function ZodKeyof() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.toJSON = function () { return ({\n t: _this._def.t,\n values: _this._def.values.map(function (x) { return x.toString(); }),\n }); };\n return _this;\n }\n ZodKeyof.create = function (object) {\n return new ZodKeyof({\n t: z.ZodTypes.keyof,\n // Note that this cast is not correct in the general case\n // See e.g. https://github.com/Microsoft/TypeScript/issues/12870\n values: Object.keys(object),\n });\n };\n return ZodKeyof;\n}(z.ZodType));\nexports.ZodKeyof = ZodKeyof;\n//# sourceMappingURL=keyof.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodLazy = /** @class */ (function (_super) {\n __extends(ZodLazy, _super);\n function ZodLazy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () {\n throw new Error(\"Can't JSONify recursive structure\");\n };\n return _this;\n }\n Object.defineProperty(ZodLazy.prototype, \"schema\", {\n get: function () {\n return this._def.getter();\n },\n enumerable: true,\n configurable: true\n });\n ZodLazy.create = function (getter) {\n return new ZodLazy({\n t: z.ZodTypes.lazy,\n getter: getter,\n });\n };\n return ZodLazy;\n}(z.ZodType));\nexports.ZodLazy = ZodLazy;\n//# sourceMappingURL=lazy.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodLiteral = /** @class */ (function (_super) {\n __extends(ZodLiteral, _super);\n function ZodLiteral() {\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () { return _this._def; };\n return _this;\n }\n ZodLiteral.create = function (value) {\n return new ZodLiteral({\n t: z.ZodTypes.literal,\n value: value,\n });\n };\n return ZodLiteral;\n}(z.ZodType));\nexports.ZodLiteral = ZodLiteral;\n//# sourceMappingURL=literal.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodNativeEnum = /** @class */ (function (_super) {\n __extends(ZodNativeEnum, _super);\n function ZodNativeEnum() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.toJSON = function () { return _this._def; };\n return _this;\n }\n ZodNativeEnum.create = function (values) {\n return new ZodNativeEnum({\n t: z.ZodTypes.nativeEnum,\n values: values,\n });\n };\n return ZodNativeEnum;\n}(z.ZodType));\nexports.ZodNativeEnum = ZodNativeEnum;\n//# sourceMappingURL=nativeEnum.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodNull = /** @class */ (function (_super) {\n __extends(ZodNull, _super);\n function ZodNull() {\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () { return _this._def; };\n return _this;\n }\n ZodNull.create = function () {\n return new ZodNull({\n t: z.ZodTypes.null,\n });\n };\n return ZodNull;\n}(z.ZodType));\nexports.ZodNull = ZodNull;\n//# sourceMappingURL=null.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\n// import { ZodUndefined } from './undefined';\n// import { ZodNull } from './null';\n// import { ZodUnion } from './union';\nvar ZodError_1 = require(\"../ZodError\");\nvar errorUtil_1 = require(\"../helpers/errorUtil\");\nvar ZodNumber = /** @class */ (function (_super) {\n __extends(ZodNumber, _super);\n function ZodNumber() {\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () { return _this._def; };\n _this.min = function (minimum, message) {\n return _this._refinement(__assign({ check: function (data) { return data >= minimum; }, code: ZodError_1.ZodErrorCode.too_small, minimum: minimum, type: 'number', inclusive: true }, errorUtil_1.errorUtil.errToObj(message)));\n };\n _this.max = function (maximum, message) {\n return _this._refinement(__assign({ check: function (data) { return data <= maximum; }, code: ZodError_1.ZodErrorCode.too_big, maximum: maximum, type: 'number', inclusive: true }, errorUtil_1.errorUtil.errToObj(message)));\n };\n _this.int = function (message) {\n return _this._refinement(__assign({ check: function (data) { return Number.isInteger(data); }, code: ZodError_1.ZodErrorCode.invalid_type, expected: 'integer', received: 'number' }, errorUtil_1.errorUtil.errToObj(message)));\n };\n _this.positive = function (message) {\n return _this._refinement(__assign({ check: function (data) { return data > 0; }, code: ZodError_1.ZodErrorCode.too_small, minimum: 0, type: 'number', inclusive: false }, errorUtil_1.errorUtil.errToObj(message)));\n };\n _this.negative = function (message) {\n return _this._refinement(__assign({ check: function (data) { return data < 0; }, code: ZodError_1.ZodErrorCode.too_big, maximum: 0, type: 'number', inclusive: false }, errorUtil_1.errorUtil.errToObj(message)));\n };\n _this.nonpositive = function (message) {\n return _this._refinement(__assign({ check: function (data) { return data <= 0; }, code: ZodError_1.ZodErrorCode.too_big, maximum: 0, type: 'number', inclusive: true }, errorUtil_1.errorUtil.errToObj(message)));\n };\n _this.nonnegative = function (message) {\n return _this._refinement(__assign({ check: function (data) { return data >= 0; }, code: ZodError_1.ZodErrorCode.too_small, minimum: 0, type: 'number', inclusive: true }, errorUtil_1.errorUtil.errToObj(message)));\n };\n return _this;\n }\n ZodNumber.create = function () {\n return new ZodNumber({\n t: z.ZodTypes.number,\n });\n };\n return ZodNumber;\n}(z.ZodType));\nexports.ZodNumber = ZodNumber;\n//# sourceMappingURL=number.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar objectUtil_1 = require(\"../helpers/objectUtil\");\nvar isScalar_1 = require(\"../isScalar\");\nvar AugmentFactory = function (def) { return function (augmentation) {\n return new ZodObject(__assign({}, def, { shape: function () { return (__assign({}, def.shape(), augmentation)); } }));\n}; };\nvar objectDefToJson = function (def) { return ({\n t: def.t,\n shape: Object.assign({}, Object.keys(def.shape()).map(function (k) {\n var _a;\n return (_a = {},\n _a[k] = def.shape()[k].toJSON(),\n _a);\n })),\n}); };\nvar ZodObject = /** @class */ (function (_super) {\n __extends(ZodObject, _super);\n function ZodObject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.toJSON = function () { return objectDefToJson(_this._def); };\n _this.nonstrict = function () {\n return new ZodObject({\n shape: _this._def.shape,\n t: z.ZodTypes.object,\n params: __assign({}, _this._params, { strict: false }),\n });\n };\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n // nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.augment = AugmentFactory(_this._def);\n _this.extend = AugmentFactory(_this._def);\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n _this.merge = objectUtil_1.objectUtil.mergeObjects(_this);\n _this.pick = function (mask) {\n var shape = {};\n Object.keys(mask).map(function (key) {\n shape[key] = _this.shape[key];\n });\n return new ZodObject(__assign({}, _this._def, { shape: function () { return shape; } }));\n };\n _this.omit = function (mask) {\n var shape = {};\n Object.keys(_this.shape).map(function (key) {\n if (Object.keys(mask).indexOf(key) === -1) {\n shape[key] = _this.shape[key];\n }\n });\n return new ZodObject(__assign({}, _this._def, { shape: function () { return shape; } }));\n };\n _this.partial = function () {\n var newShape = {};\n for (var key in _this.shape) {\n newShape[key] = _this.shape[key].optional();\n }\n return new ZodObject(__assign({}, _this._def, { shape: function () { return newShape; } }));\n };\n _this.primitives = function () {\n var newShape = {};\n for (var key in _this.shape) {\n if (isScalar_1.isScalar(_this.shape[key])) {\n newShape[key] = _this.shape[key];\n }\n }\n return new ZodObject(__assign({}, _this._def, { shape: function () { return newShape; } }));\n };\n _this.nonprimitives = function () {\n var newShape = {};\n for (var key in _this.shape) {\n if (!isScalar_1.isScalar(_this.shape[key])) {\n newShape[key] = _this.shape[key];\n }\n }\n return new ZodObject(__assign({}, _this._def, { shape: function () { return newShape; } }));\n };\n _this.deepPartial = function () {\n var newShape = {};\n for (var key in _this.shape) {\n var fieldSchema = _this.shape[key];\n if (fieldSchema instanceof ZodObject) {\n newShape[key] = fieldSchema.deepPartial().optional();\n }\n else {\n newShape[key] = _this.shape[key].optional();\n }\n }\n return new ZodObject(__assign({}, _this._def, { shape: function () { return newShape; } }));\n };\n return _this;\n }\n Object.defineProperty(ZodObject.prototype, \"shape\", {\n get: function () {\n return this._def.shape();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZodObject.prototype, \"params\", {\n get: function () {\n return this._def.params;\n },\n enumerable: true,\n configurable: true\n });\n ZodObject.create = function (shape) {\n return new ZodObject({\n t: z.ZodTypes.object,\n shape: function () { return shape; },\n params: {\n strict: true,\n },\n });\n };\n ZodObject.lazycreate = function (shape) {\n return new ZodObject({\n t: z.ZodTypes.object,\n shape: shape,\n params: {\n strict: true,\n },\n });\n };\n return ZodObject;\n}(z.ZodType));\nexports.ZodObject = ZodObject;\n//# sourceMappingURL=object.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodPromise = /** @class */ (function (_super) {\n __extends(ZodPromise, _super);\n function ZodPromise() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.toJSON = function () {\n return {\n t: _this._def.t,\n type: _this._def.type.toJSON(),\n };\n };\n return _this;\n }\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n ZodPromise.create = function (schema) {\n return new ZodPromise({\n t: z.ZodTypes.promise,\n type: schema,\n });\n };\n return ZodPromise;\n}(z.ZodType));\nexports.ZodPromise = ZodPromise;\n//# sourceMappingURL=promise.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodRecord = /** @class */ (function (_super) {\n __extends(ZodRecord, _super);\n function ZodRecord() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.toJSON = function () { return ({\n t: _this._def.t,\n valueType: _this._def.valueType.toJSON(),\n }); };\n return _this;\n }\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n ZodRecord.create = function (valueType) {\n return new ZodRecord({\n t: z.ZodTypes.record,\n valueType: valueType,\n });\n };\n return ZodRecord;\n}(z.ZodType));\nexports.ZodRecord = ZodRecord;\n//# sourceMappingURL=record.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\n// import { ZodUndefined } from './undefined';\n// import { ZodNull } from './null';\n// import { ZodUnion } from './union';\nvar ZodError_1 = require(\"../ZodError\");\nvar errorUtil_1 = require(\"../helpers/errorUtil\");\nvar emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\nvar uuidRegex = /^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i;\nvar ZodString = /** @class */ (function (_super) {\n __extends(ZodString, _super);\n function ZodString() {\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () { return _this._def; };\n _this.min = function (minLength, message) {\n return _this._refinement(__assign({ check: function (data) { return data.length >= minLength; }, code: ZodError_1.ZodErrorCode.too_small, minimum: minLength, type: 'string', inclusive: true }, errorUtil_1.errorUtil.errToObj(message)));\n };\n _this.max = function (maxLength, message) {\n return _this._refinement(__assign({ check: function (data) { return data.length <= maxLength; }, code: ZodError_1.ZodErrorCode.too_big, maximum: maxLength, type: 'string', inclusive: true }, errorUtil_1.errorUtil.errToObj(message)));\n };\n _this._regex = function (regex, validation, message) {\n return _this._refinement(__assign({ validation: validation, code: ZodError_1.ZodErrorCode.invalid_string, check: function (data) { return regex.test(data); } }, errorUtil_1.errorUtil.errToObj(message)));\n };\n _this.email = function (message) {\n return _this._regex(emailRegex, 'email', message);\n };\n _this.url = function (message) {\n return _this._refinement(__assign({ check: function (data) {\n try {\n new URL(data);\n return true;\n }\n catch (_a) {\n return false;\n }\n }, code: ZodError_1.ZodErrorCode.invalid_string, validation: 'url' }, errorUtil_1.errorUtil.errToObj(message)));\n };\n // url = (message?: errorUtil.ErrMessage) => this._regex(urlRegex, 'url', message);\n _this.uuid = function (message) {\n return _this._regex(uuidRegex, 'uuid', message);\n };\n _this.regex = function (regexp, message) {\n return _this._regex(regexp, 'regex', message);\n };\n _this.nonempty = function (message) {\n return _this.min(1, errorUtil_1.errorUtil.errToObj(message));\n };\n return _this;\n }\n ZodString.prototype.length = function (len, message) {\n return this.min(len, message).max(len, message);\n };\n ZodString.create = function () {\n return new ZodString({\n t: z.ZodTypes.string,\n validation: {},\n });\n };\n return ZodString;\n}(z.ZodType));\nexports.ZodString = ZodString;\n//# sourceMappingURL=string.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodTuple = /** @class */ (function (_super) {\n __extends(ZodTuple, _super);\n function ZodTuple() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.toJSON = function () { return ({\n t: _this._def.t,\n items: _this._def.items.map(function (item) { return item.toJSON(); }),\n }); };\n return _this;\n }\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n ZodTuple.create = function (schemas) {\n return new ZodTuple({\n t: z.ZodTypes.tuple,\n items: schemas,\n });\n };\n return ZodTuple;\n}(z.ZodType));\nexports.ZodTuple = ZodTuple;\n//# sourceMappingURL=tuple.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodUndefined = /** @class */ (function (_super) {\n __extends(ZodUndefined, _super);\n function ZodUndefined() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.toJSON = function () { return _this._def; };\n return _this;\n }\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n ZodUndefined.create = function () {\n return new ZodUndefined({\n t: z.ZodTypes.undefined,\n });\n };\n return ZodUndefined;\n}(z.ZodType));\nexports.ZodUndefined = ZodUndefined;\n//# sourceMappingURL=undefined.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodUnion = /** @class */ (function (_super) {\n __extends(ZodUnion, _super);\n function ZodUnion() {\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () { return ({\n t: _this._def.t,\n options: _this._def.options.map(function (x) { return x.toJSON(); }),\n }); };\n return _this;\n }\n // distribute = z.ZodTypeAny>(f: F): ZodUnion<{ [k in keyof T]: ReturnType }> => {\n // return ZodUnion.create(this._def.options.map(f) as any);\n // };\n ZodUnion.create = function (types) {\n return new ZodUnion({\n t: z.ZodTypes.union,\n options: types,\n });\n };\n return ZodUnion;\n}(z.ZodType));\nexports.ZodUnion = ZodUnion;\n//# sourceMappingURL=union.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodUnknown = /** @class */ (function (_super) {\n __extends(ZodUnknown, _super);\n function ZodUnknown() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () { return _this._def; };\n return _this;\n }\n ZodUnknown.create = function () {\n return new ZodUnknown({\n t: z.ZodTypes.unknown,\n });\n };\n return ZodUnknown;\n}(z.ZodType));\nexports.ZodUnknown = ZodUnknown;\n//# sourceMappingURL=unknown.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar z = __importStar(require(\"./base\"));\nvar ZodVoid = /** @class */ (function (_super) {\n __extends(ZodVoid, _super);\n function ZodVoid() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]);\n // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]);\n _this.toJSON = function () { return _this._def; };\n return _this;\n }\n ZodVoid.create = function () {\n return new ZodVoid({\n t: z.ZodTypes.void,\n });\n };\n return ZodVoid;\n}(z.ZodType));\nexports.ZodVoid = ZodVoid;\n//# sourceMappingURL=void.js.map","'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n if (!src_url_equal_anchor) {\n src_url_equal_anchor = document.createElement('a');\n }\n src_url_equal_anchor.href = url;\n return element_src === src_url_equal_anchor.href;\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\nfunction get_all_dirty_from_scope($$scope) {\n if ($$scope.ctx.length > 32) {\n const dirty = [];\n const length = $$scope.ctx.length / 32;\n for (let i = 0; i < length; i++) {\n dirty[i] = -1;\n }\n return dirty;\n }\n return -1;\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\nfunction start_hydrating() {\n is_hydrating = true;\n}\nfunction end_hydrating() {\n is_hydrating = false;\n}\nfunction upper_bound(low, high, key, value) {\n // Return first index of value larger than input value in the range [low, high)\n while (low < high) {\n const mid = low + ((high - low) >> 1);\n if (key(mid) <= value) {\n low = mid + 1;\n }\n else {\n high = mid;\n }\n }\n return low;\n}\nfunction init_hydrate(target) {\n if (target.hydrate_init)\n return;\n target.hydrate_init = true;\n // We know that all children have claim_order values since the unclaimed have been detached if target is not \n let children = target.childNodes;\n // If target is , there may be children without claim_order\n if (target.nodeName === 'HEAD') {\n const myChildren = [];\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n if (node.claim_order !== undefined) {\n myChildren.push(node);\n }\n }\n children = myChildren;\n }\n /*\n * Reorder claimed children optimally.\n * We can reorder claimed children optimally by finding the longest subsequence of\n * nodes that are already claimed in order and only moving the rest. The longest\n * subsequence subsequence of nodes that are claimed in order can be found by\n * computing the longest increasing subsequence of .claim_order values.\n *\n * This algorithm is optimal in generating the least amount of reorder operations\n * possible.\n *\n * Proof:\n * We know that, given a set of reordering operations, the nodes that do not move\n * always form an increasing subsequence, since they do not move among each other\n * meaning that they must be already ordered among each other. Thus, the maximal\n * set of nodes that do not move form a longest increasing subsequence.\n */\n // Compute longest increasing subsequence\n // m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n const m = new Int32Array(children.length + 1);\n // Predecessor indices + 1\n const p = new Int32Array(children.length);\n m[0] = -1;\n let longest = 0;\n for (let i = 0; i < children.length; i++) {\n const current = children[i].claim_order;\n // Find the largest subsequence length such that it ends in a value less than our current value\n // upper_bound returns first greater value, so we subtract one\n // with fast path for when we are on the current longest subsequence\n const seqLen = ((longest > 0 && children[m[longest]].claim_order <= current) ? longest + 1 : upper_bound(1, longest, idx => children[m[idx]].claim_order, current)) - 1;\n p[i] = m[seqLen] + 1;\n const newLen = seqLen + 1;\n // We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n m[newLen] = i;\n longest = Math.max(newLen, longest);\n }\n // The longest increasing subsequence of nodes (initially reversed)\n const lis = [];\n // The rest of the nodes, nodes that will be moved\n const toMove = [];\n let last = children.length - 1;\n for (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n lis.push(children[cur - 1]);\n for (; last >= cur; last--) {\n toMove.push(children[last]);\n }\n last--;\n }\n for (; last >= 0; last--) {\n toMove.push(children[last]);\n }\n lis.reverse();\n // We sort the nodes being moved to guarantee that their insertion order matches the claim order\n toMove.sort((a, b) => a.claim_order - b.claim_order);\n // Finally, we move the nodes\n for (let i = 0, j = 0; i < toMove.length; i++) {\n while (j < lis.length && toMove[i].claim_order >= lis[j].claim_order) {\n j++;\n }\n const anchor = j < lis.length ? lis[j] : null;\n target.insertBefore(toMove[i], anchor);\n }\n}\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction append_styles(target, style_sheet_id, styles) {\n const append_styles_to = get_root_for_style(target);\n if (!append_styles_to.getElementById(style_sheet_id)) {\n const style = element('style');\n style.id = style_sheet_id;\n style.textContent = styles;\n append_stylesheet(append_styles_to, style);\n }\n}\nfunction get_root_for_style(node) {\n if (!node)\n return document;\n const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n if (root && root.host) {\n return root;\n }\n return node.ownerDocument;\n}\nfunction append_empty_stylesheet(node) {\n const style_element = element('style');\n append_stylesheet(get_root_for_style(node), style_element);\n return style_element;\n}\nfunction append_stylesheet(node, style) {\n append(node.head || node, style);\n}\nfunction append_hydration(target, node) {\n if (is_hydrating) {\n init_hydrate(target);\n if ((target.actual_end_child === undefined) || ((target.actual_end_child !== null) && (target.actual_end_child.parentElement !== target))) {\n target.actual_end_child = target.firstChild;\n }\n // Skip nodes of undefined ordering\n while ((target.actual_end_child !== null) && (target.actual_end_child.claim_order === undefined)) {\n target.actual_end_child = target.actual_end_child.nextSibling;\n }\n if (node !== target.actual_end_child) {\n // We only insert if the ordering of this node should be modified or the parent node is not target\n if (node.claim_order !== undefined || node.parentNode !== target) {\n target.insertBefore(node, target.actual_end_child);\n }\n }\n else {\n target.actual_end_child = node.nextSibling;\n }\n }\n else if (node.parentNode !== target || node.nextSibling !== null) {\n target.appendChild(node);\n }\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction insert_hydration(target, node, anchor) {\n if (is_hydrating && !anchor) {\n append_hydration(target, node);\n }\n else if (node.parentNode !== target || node.nextSibling != anchor) {\n target.insertBefore(node, anchor || null);\n }\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction trusted(fn) {\n return function (event) {\n // @ts-ignore\n if (event.isTrusted)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction init_claim_info(nodes) {\n if (nodes.claim_info === undefined) {\n nodes.claim_info = { last_index: 0, total_claimed: 0 };\n }\n}\nfunction claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) {\n // Try to find nodes in an order such that we lengthen the longest increasing subsequence\n init_claim_info(nodes);\n const resultNode = (() => {\n // We first try to find an element after the previous one\n for (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n return node;\n }\n }\n // Otherwise, we try to find one before\n // We iterate in reverse so that we don't go too far back\n for (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n else if (replacement === undefined) {\n // Since we spliced before the last_index, we decrease it\n nodes.claim_info.last_index--;\n }\n return node;\n }\n }\n // If we can't find any matching node, we create a new one\n return createNode();\n })();\n resultNode.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n return resultNode;\n}\nfunction claim_element_base(nodes, name, attributes, create_element) {\n return claim_node(nodes, (node) => node.nodeName === name, (node) => {\n const remove = [];\n for (let j = 0; j < node.attributes.length; j++) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n remove.forEach(v => node.removeAttribute(v));\n return undefined;\n }, () => create_element(name));\n}\nfunction claim_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, element);\n}\nfunction claim_svg_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, svg_element);\n}\nfunction claim_text(nodes, data) {\n return claim_node(nodes, (node) => node.nodeType === 3, (node) => {\n const dataStr = '' + data;\n if (node.data.startsWith(dataStr)) {\n if (node.data.length !== dataStr.length) {\n return node.splitText(dataStr.length);\n }\n }\n else {\n node.data = dataStr;\n }\n }, () => text(data), true // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n );\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction find_comment(nodes, text, start) {\n for (let i = start; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n return i;\n }\n }\n return nodes.length;\n}\nfunction claim_html_tag(nodes) {\n // find html opening tag\n const start_index = find_comment(nodes, 'HTML_TAG_START', 0);\n const end_index = find_comment(nodes, 'HTML_TAG_END', start_index);\n if (start_index === end_index) {\n return new HtmlTagHydration();\n }\n init_claim_info(nodes);\n const html_tag_nodes = nodes.splice(start_index, end_index + 1);\n detach(html_tag_nodes[0]);\n detach(html_tag_nodes[html_tag_nodes.length - 1]);\n const claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n for (const n of claimed_nodes) {\n n.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n }\n return new HtmlTagHydration(claimed_nodes);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.wholeText !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n node.style.setProperty(key, value, important ? 'important' : '');\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n select.selectedIndex = -1; // no option should be selected\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, bubbles = false) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, bubbles, false, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor() {\n this.e = this.n = null;\n }\n c(html) {\n this.h(html);\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n this.e = element(target.nodeName);\n this.t = target;\n this.c(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nclass HtmlTagHydration extends HtmlTag {\n constructor(claimed_nodes) {\n super();\n this.e = this.n = null;\n this.l = claimed_nodes;\n }\n c(html) {\n if (this.l) {\n this.n = this.l;\n }\n else {\n super.c(html);\n }\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert_hydration(this.t, this.n[i], anchor);\n }\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\n\nconst active_docs = new Set();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = get_root_for_style(node);\n active_docs.add(doc);\n const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = append_empty_stylesheet(node).sheet);\n const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {});\n if (!current_rules[name]) {\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n active_docs.forEach(doc => {\n const stylesheet = doc.__svelte_stylesheet;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n doc.__svelte_rules = {};\n });\n active_docs.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\nfunction getAllContexts() {\n return get_current_component().$$.context;\n}\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n // @ts-ignore\n callbacks.slice().forEach(fn => fn.call(this, event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nlet flushing = false;\nconst seen_callbacks = new Set();\nfunction flush() {\n if (flushing)\n return;\n flushing = true;\n do {\n // first, call beforeUpdate functions\n // and update components\n for (let i = 0; i < dirty_components.length; i += 1) {\n const component = dirty_components[i];\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n flushing = false;\n seen_callbacks.clear();\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n started = true;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = (program.b - t);\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n const child_ctx = ctx.slice();\n const { resolved } = info;\n if (info.current === info.then) {\n child_ctx[info.value] = resolved;\n }\n if (info.current === info.catch) {\n child_ctx[info.error] = resolved;\n }\n info.block.p(child_ctx, dirty);\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, classes_to_add) {\n const attributes = Object.assign({}, ...args);\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${value}\"`;\n }\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction escape_attribute_value(value) {\n return typeof value === 'string' ? escape(value) : value;\n}\nfunction escape_object(obj) {\n const result = {};\n for (const key in obj) {\n result[key] = escape_attribute_value(obj[key]);\n }\n return result;\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots, context) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(context || (parent_component ? parent_component.$$.context : [])),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, $$slots, context);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n start_hydrating();\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n end_hydrating();\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.44.2' }, detail), true));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction append_hydration_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append_hydration(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction insert_hydration_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert_hydration(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * \n * \n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to separate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, HtmlTagHydration, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, append_empty_stylesheet, append_hydration, append_hydration_dev, append_styles, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_html_tag, claim_space, claim_svg_element, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, end_hydrating, escape, escape_attribute_value, escape_object, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getAllContexts, getContext, get_all_dirty_from_scope, get_binding_group_value, get_current_component, get_custom_elements_slots, get_root_for_style, get_slot_changes, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, identity, init, insert, insert_dev, insert_hydration, insert_hydration_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, listen, listen_dev, loop, loop_guard, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, src_url_equal, start_hydrating, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, trusted, update_await_block_branch, update_keyed_each, update_slot, update_slot_base, validate_component, validate_each_argument, validate_each_keys, validate_slots, validate_store, xlink_attr };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * EOSIO Core v0.5.3\n * https://github.com/greymass/eosio-core\n *\n * @license\n * Copyright (c) 2020 FFF00 Agents AB & Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport rand from 'brorand';\nimport { sha256, sha512, ripemd160 } from 'hash.js';\nimport BN from 'bn.js';\nimport { ec } from 'elliptic';\nimport { __decorate } from 'tslib';\n\nfunction arrayEquals(a, b) {\n const len = a.length;\n if (len !== b.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nfunction arrayEquatableEquals(a, b) {\n const len = a.length;\n if (len !== b.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (!a[i].equals(b[i])) {\n return false;\n }\n }\n return true;\n}\nconst hexLookup = {};\nfunction buildHexLookup() {\n hexLookup.enc = new Array(0xff);\n hexLookup.dec = {};\n for (let i = 0; i <= 0xff; ++i) {\n const b = i.toString(16).padStart(2, '0');\n hexLookup.enc[i] = b;\n hexLookup.dec[b] = i;\n }\n}\nfunction arrayToHex(array) {\n if (!hexLookup.enc) {\n buildHexLookup();\n }\n const len = array.length;\n const rv = new Array(len);\n for (let i = 0; i < len; ++i) {\n rv[i] = hexLookup.enc[array[i]];\n }\n return rv.join('');\n}\nfunction hexToArray(hex) {\n if (!hexLookup.dec) {\n buildHexLookup();\n }\n if (typeof hex !== 'string') {\n throw new Error('Expected string containing hex digits');\n }\n if (hex.length % 2) {\n throw new Error('Odd number of hex digits');\n }\n hex = hex.toLowerCase();\n const len = hex.length / 2;\n const result = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n const b = hexLookup.dec[hex[i * 2] + hex[i * 2 + 1]];\n if (b === undefined) {\n throw new Error('Expected hex string');\n }\n result[i] = b;\n }\n return result;\n}\n/** Generate N random bytes, throws if a secure random source isn't available. */\nfunction secureRandom(length) {\n return rand(length);\n}\n/** Used in isInstanceOf checks so we don't spam with warnings. */\nlet didWarn = false;\n/** Check if object in instance of class. */\nfunction isInstanceOf(object, someClass) {\n if (object instanceof someClass) {\n return true;\n }\n if (object == null || typeof object !== 'object') {\n return false;\n }\n // not an actual instance but since bundlers can fail to dedupe stuff or\n // multiple versions can be included we check for compatibility if possible\n const className = someClass['__className'] || someClass['abiName'];\n if (!className) {\n return false;\n }\n let instanceClass = object.constructor;\n let isAlienInstance = false;\n while (instanceClass && !isAlienInstance) {\n const instanceClassName = instanceClass['__className'] || instanceClass['abiName'];\n if (!instanceClassName) {\n break;\n }\n isAlienInstance = className == instanceClassName;\n instanceClass = Object.getPrototypeOf(instanceClass);\n }\n if (isAlienInstance && !didWarn) {\n // eslint-disable-next-line no-console\n console.warn(`Detected alien instance of ${className}, this usually means more than one version of @greymass/eosio has been included in your bundle.`);\n didWarn = true;\n }\n return isAlienInstance;\n}\n\nclass Bytes {\n constructor(array = new Uint8Array()) {\n this.array = array;\n }\n /**\n * Create a new Bytes instance.\n * @note Make sure to take a [[copy]] before mutating the bytes as the underlying source is not copied here.\n */\n static from(value, encoding) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (typeof value === 'string') {\n return this.fromString(value, encoding);\n }\n if (ArrayBuffer.isView(value)) {\n return new this(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));\n }\n if (isInstanceOf(value['array'], Uint8Array)) {\n return new this(value['array']);\n }\n return new this(new Uint8Array(value));\n }\n static fromString(value, encoding = 'hex') {\n if (encoding === 'hex') {\n const array = hexToArray(value);\n return new this(array);\n }\n else if (encoding == 'utf8') {\n const encoder = new TextEncoder();\n return new this(encoder.encode(value));\n }\n else {\n throw new Error(`Unknown encoding: ${encoding}`);\n }\n }\n static fromABI(decoder) {\n const len = decoder.readVaruint32();\n return new this(decoder.readArray(len));\n }\n static equal(a, b) {\n return this.from(a).equals(this.from(b));\n }\n static random(length) {\n return new this(secureRandom(length));\n }\n /** Return true if given value is a valid `BytesType`. */\n static isBytes(value) {\n if (isInstanceOf(value, Bytes) || isInstanceOf(value, Uint8Array)) {\n return true;\n }\n if (Array.isArray(value) && value.every((v) => typeof v === 'number')) {\n return true;\n }\n if (typeof value === 'string' && (/[\\da-f]/i.test(value) || value === '')) {\n return true;\n }\n return false;\n }\n get hexString() {\n return arrayToHex(this.array);\n }\n get utf8String() {\n return new TextDecoder().decode(this.array);\n }\n /** Mutating. Append bytes to this instance. */\n append(other) {\n other = Bytes.from(other);\n const newSize = this.array.byteLength + other.array.byteLength;\n const buffer = new ArrayBuffer(newSize);\n const array = new Uint8Array(buffer);\n array.set(this.array);\n array.set(other.array, this.array.byteLength);\n this.array = array;\n }\n /** Non-mutating, returns a copy of this instance with appended bytes. */\n appending(other) {\n const rv = new Bytes(this.array);\n rv.append(other);\n return rv;\n }\n droppingFirst(n = 1) {\n return new Bytes(this.array.subarray(n));\n }\n copy() {\n const buffer = new ArrayBuffer(this.array.byteLength);\n const array = new Uint8Array(buffer);\n array.set(this.array);\n return new Bytes(array);\n }\n equals(other) {\n return arrayEquals(this.array, Bytes.from(other).array);\n }\n toString(encoding = 'hex') {\n if (encoding === 'hex') {\n return this.hexString;\n }\n else if (encoding === 'utf8') {\n return this.utf8String;\n }\n else {\n throw new Error(`Unknown encoding: ${encoding}`);\n }\n }\n toABI(encoder) {\n encoder.writeVaruint32(this.array.byteLength);\n encoder.writeArray(this.array);\n }\n toJSON() {\n return this.hexString;\n }\n}\nBytes.abiName = 'bytes';\n\nclass Checksum {\n constructor(array) {\n const byteSize = this.constructor.byteSize;\n if (array.byteLength !== byteSize) {\n throw new Error(`Checksum size mismatch, expected ${byteSize} bytes got ${array.byteLength}`);\n }\n this.array = array;\n }\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (isInstanceOf(value, Checksum)) {\n return new this(value.array);\n }\n return new this(Bytes.from(value).array);\n }\n static fromABI(decoder) {\n return new this(decoder.readArray(this.byteSize));\n }\n equals(other) {\n const self = this.constructor;\n try {\n return arrayEquals(this.array, self.from(other).array);\n }\n catch {\n return false;\n }\n }\n get hexString() {\n return arrayToHex(this.array);\n }\n toABI(encoder) {\n encoder.writeArray(this.array);\n }\n toString() {\n return this.hexString;\n }\n toJSON() {\n return this.toString();\n }\n}\nChecksum.abiName = '__checksum';\nclass Checksum256 extends Checksum {\n static from(value) {\n return super.from(value);\n }\n static hash(data) {\n const digest = new Uint8Array(sha256().update(Bytes.from(data).array).digest());\n return new Checksum256(digest);\n }\n}\nChecksum256.abiName = 'checksum256';\nChecksum256.byteSize = 32;\nclass Checksum512 extends Checksum {\n static from(value) {\n return super.from(value);\n }\n static hash(data) {\n const digest = new Uint8Array(sha512().update(Bytes.from(data).array).digest());\n return new Checksum512(digest);\n }\n}\nChecksum512.abiName = 'checksum512';\nChecksum512.byteSize = 64;\nclass Checksum160 extends Checksum {\n static from(value) {\n return super.from(value);\n }\n static hash(data) {\n const digest = new Uint8Array(ripemd160().update(Bytes.from(data).array).digest());\n return new Checksum160(digest);\n }\n}\nChecksum160.abiName = 'checksum160';\nChecksum160.byteSize = 20;\n\n/** Supported EOSIO curve types. */\nvar KeyType;\n(function (KeyType) {\n KeyType[\"K1\"] = \"K1\";\n KeyType[\"R1\"] = \"R1\";\n KeyType[\"WA\"] = \"WA\";\n})(KeyType || (KeyType = {}));\n(function (KeyType) {\n function indexFor(value) {\n switch (value) {\n case KeyType.K1:\n return 0;\n case KeyType.R1:\n return 1;\n case KeyType.WA:\n return 2;\n default:\n throw new Error(`Unknown curve type: ${value}`);\n }\n }\n KeyType.indexFor = indexFor;\n function from(value) {\n let index;\n if (typeof value !== 'number') {\n index = KeyType.indexFor(value);\n }\n else {\n index = value;\n }\n switch (index) {\n case 0:\n return KeyType.K1;\n case 1:\n return KeyType.R1;\n case 2:\n return KeyType.WA;\n default:\n throw new Error('Unknown curve type');\n }\n }\n KeyType.from = from;\n})(KeyType || (KeyType = {}));\n\n/**\n * Binary integer with the underlying value represented by a BN.js instance.\n * Follows C++11 standard for arithmetic operators and conversions.\n * @note This type is optimized for correctness not speed, if you plan to manipulate\n * integers in a tight loop you're advised to use the underlying BN.js value or\n * convert to a JavaScript number first.\n */\nclass Int {\n /**\n * Create a new instance, don't use this directly. Use the `.from` factory method instead.\n * @throws If the value over- or under-flows the integer type.\n */\n constructor(value) {\n const self = this.constructor;\n if (self.isSigned === undefined || self.byteWidth === undefined) {\n throw new Error('Cannot instantiate abstract class Int');\n }\n if (value.gt(self.max)) {\n throw new Error(`Number ${value} overflows ${self.abiName}`);\n }\n if (value.lt(self.min)) {\n throw new Error(`Number ${value} underflows ${self.abiName}`);\n }\n this.value = value;\n }\n /** Largest value that can be represented by this integer type. */\n static get max() {\n return new BN(2).pow(new BN(this.byteWidth * 8 - (this.isSigned ? 1 : 0))).isubn(1);\n }\n /** Smallest value that can be represented by this integer type. */\n static get min() {\n return this.isSigned ? this.max.ineg().isubn(1) : new BN(0);\n }\n /** Add `lhs` to `rhs` and return the resulting value. */\n static add(lhs, rhs, overflow = 'truncate') {\n return Int.operator(lhs, rhs, overflow, (a, b) => a.add(b));\n }\n /** Add `lhs` to `rhs` and return the resulting value. */\n static sub(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => a.sub(b));\n }\n /** Multiply `lhs` by `rhs` and return the resulting value. */\n static mul(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => a.mul(b));\n }\n /**\n * Divide `lhs` by `rhs` and return the quotient, dropping the remainder.\n * @throws When dividing by zero.\n */\n static div(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => {\n if (b.isZero()) {\n throw new Error('Division by zero');\n }\n return a.div(b);\n });\n }\n /**\n * Divide `lhs` by `rhs` and return the quotient + remainder rounded to the closest integer.\n * @throws When dividing by zero.\n */\n static divRound(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => {\n if (b.isZero()) {\n throw new Error('Division by zero');\n }\n return a.divRound(b);\n });\n }\n /**\n * Divide `lhs` by `rhs` and return the quotient + remainder rounded up to the closest integer.\n * @throws When dividing by zero.\n */\n static divCeil(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => {\n if (b.isZero()) {\n throw new Error('Division by zero');\n }\n const dm = a.divmod(b);\n if (dm.mod.isZero())\n return dm.div;\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n });\n }\n /**\n * Can be used to implement custom operator.\n * @internal\n */\n static operator(lhs, rhs, overflow = 'truncate', fn) {\n const { a, b } = convert(lhs, rhs);\n const type = a.constructor;\n const result = fn(a.value, b.value);\n return type.from(result, overflow);\n }\n static from(value, overflow) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n let fromType = this;\n let bn;\n if (isInstanceOf(value, Int)) {\n fromType = value.constructor;\n bn = value.value.clone();\n }\n else if (value instanceof Uint8Array) {\n bn = new BN(value, undefined, 'le');\n if (fromType.isSigned) {\n bn = bn.fromTwos(fromType.byteWidth * 8);\n }\n }\n else {\n if ((typeof value === 'string' && !/[0-9]+/.test(value)) ||\n (typeof value === 'number' && !Number.isFinite(value))) {\n throw new Error('Invalid number');\n }\n bn = BN.isBN(value) ? value.clone() : new BN(value, 10);\n if (bn.isNeg() && !fromType.isSigned) {\n fromType = { byteWidth: fromType.byteWidth, isSigned: true };\n }\n }\n switch (overflow) {\n case 'clamp':\n bn = clamp(bn, this.min, this.max);\n break;\n case 'truncate':\n bn = truncate(bn, fromType, this);\n break;\n }\n return new this(bn);\n }\n static fromABI(decoder) {\n return this.from(decoder.readArray(this.byteWidth));\n }\n static random() {\n return this.from(secureRandom(this.byteWidth));\n }\n cast(type, overflow = 'truncate') {\n if (this.constructor === type) {\n return this;\n }\n return type.from(this, overflow);\n }\n /** Number as bytes in little endian (matches memory layout in C++ contract). */\n get byteArray() {\n const self = this.constructor;\n const value = self.isSigned ? this.value.toTwos(self.byteWidth * 8) : this.value;\n return value.toArrayLike(Uint8Array, 'le', self.byteWidth);\n }\n /**\n * Compare two integers, if strict is set to true the test will only consider integers\n * of the exact same type. I.e. Int64.from(1).equals(UInt64.from(1)) will return false.\n */\n equals(other, strict = false) {\n const self = this.constructor;\n if (strict === true && isInstanceOf(other, Int)) {\n const otherType = other.constructor;\n if (self.byteWidth !== otherType.byteWidth || self.isSigned !== otherType.isSigned) {\n return false;\n }\n }\n try {\n return this.value.eq(self.from(other).value);\n }\n catch {\n return false;\n }\n }\n /** Mutating add. */\n add(num) {\n this.value = this.operator(num, Int.add).value;\n }\n /** Non-mutating add. */\n adding(num) {\n return this.operator(num, Int.add);\n }\n /** Mutating subtract. */\n subtract(num) {\n this.value = this.operator(num, Int.sub).value;\n }\n /** Non-mutating subtract. */\n subtracting(num) {\n return this.operator(num, Int.sub);\n }\n /** Mutating multiply. */\n multiply(by) {\n this.value = this.operator(by, Int.mul).value;\n }\n /** Non-mutating multiply. */\n multiplying(by) {\n return this.operator(by, Int.mul);\n }\n /**\n * Mutating divide.\n * @param behavior How to handle the remainder, default is to floor (round down).\n * @throws When dividing by zero.\n */\n divide(by, behavior) {\n this.value = this.dividing(by, behavior).value;\n }\n /**\n * Non-mutating divide.\n * @param behavior How to handle the remainder, default is to floor (round down).\n * @throws When dividing by zero.\n */\n dividing(by, behavior) {\n let op = Int.div;\n switch (behavior) {\n case 'ceil':\n op = Int.divCeil;\n break;\n case 'round':\n op = Int.divRound;\n break;\n }\n return this.operator(by, op);\n }\n /**\n * Run operator with C++11 implicit conversion.\n * @internal\n */\n operator(other, fn) {\n let rhs;\n if (isInstanceOf(other, Int)) {\n rhs = other;\n }\n else {\n rhs = Int64.from(other, 'truncate');\n }\n return fn(this, rhs).cast(this.constructor);\n }\n /**\n * Convert to a JavaScript number.\n * @throws If the number cannot be represented by 53-bits.\n **/\n toNumber() {\n return this.value.toNumber();\n }\n toString() {\n return this.value.toString();\n }\n [Symbol.toPrimitive](type) {\n if (type === 'number') {\n return this.toNumber();\n }\n else {\n return this.toString();\n }\n }\n toABI(encoder) {\n encoder.writeArray(this.byteArray);\n }\n toJSON() {\n // match FCs behavior and return strings for anything above 32-bit\n if (this.value.bitLength() > 32) {\n return this.value.toString();\n }\n else {\n return this.value.toNumber();\n }\n }\n}\nInt.abiName = '__int';\nclass Int8 extends Int {\n}\nInt8.abiName = 'int8';\nInt8.byteWidth = 1;\nInt8.isSigned = true;\nclass Int16 extends Int {\n}\nInt16.abiName = 'int16';\nInt16.byteWidth = 2;\nInt16.isSigned = true;\nclass Int32 extends Int {\n}\nInt32.abiName = 'int32';\nInt32.byteWidth = 4;\nInt32.isSigned = true;\nclass Int64 extends Int {\n}\nInt64.abiName = 'int64';\nInt64.byteWidth = 8;\nInt64.isSigned = true;\nclass Int128 extends Int {\n}\nInt128.abiName = 'int128';\nInt128.byteWidth = 16;\nInt128.isSigned = true;\nclass UInt8 extends Int {\n}\nUInt8.abiName = 'uint8';\nUInt8.byteWidth = 1;\nUInt8.isSigned = false;\nclass UInt16 extends Int {\n}\nUInt16.abiName = 'uint16';\nUInt16.byteWidth = 2;\nUInt16.isSigned = false;\nclass UInt32 extends Int {\n}\nUInt32.abiName = 'uint32';\nUInt32.byteWidth = 4;\nUInt32.isSigned = false;\nclass UInt64 extends Int {\n}\nUInt64.abiName = 'uint64';\nUInt64.byteWidth = 8;\nUInt64.isSigned = false;\nclass UInt128 extends Int {\n}\nUInt128.abiName = 'uint128';\nUInt128.byteWidth = 16;\nUInt128.isSigned = false;\nclass VarInt extends Int {\n static fromABI(decoder) {\n return new this(new BN(decoder.readVarint32()));\n }\n toABI(encoder) {\n encoder.writeVarint32(Number(this));\n }\n}\nVarInt.abiName = 'varint32';\nVarInt.byteWidth = 32;\nVarInt.isSigned = true;\nclass VarUInt extends Int {\n static fromABI(decoder) {\n return new this(new BN(decoder.readVaruint32()));\n }\n toABI(encoder) {\n encoder.writeVaruint32(Number(this));\n }\n}\nVarUInt.abiName = 'varuint32';\nVarUInt.byteWidth = 32;\nVarUInt.isSigned = false;\n/** Clamp number between min and max. */\nfunction clamp(num, min, max) {\n return BN.min(BN.max(num, min), max);\n}\n/**\n * Create new BN with the same bit pattern as the passed value,\n * extending or truncating the value’s representation as necessary.\n */\nfunction truncate(value, from, to) {\n const fill = value.isNeg() ? 255 : 0;\n const fromValue = from.isSigned ? value.toTwos(from.byteWidth * 8) : value;\n const fromBytes = fromValue.toArrayLike(Uint8Array, 'le');\n const toBytes = new Uint8Array(to.byteWidth);\n toBytes.fill(fill);\n toBytes.set(fromBytes.slice(0, to.byteWidth));\n const toValue = new BN(toBytes, undefined, 'le');\n return to.isSigned ? toValue.fromTwos(to.byteWidth * 8) : toValue;\n}\n/** C++11 implicit integer conversions. */\nfunction convert(a, b) {\n // The integral promotions (4.5) shall be performed on both operands.\n a = promote(a);\n b = promote(b);\n const aType = a.constructor;\n const bType = b.constructor;\n // If both operands have the same type, no further conversion is needed\n if (aType !== bType) {\n // Otherwise, if both operands have signed integer types or both have unsigned integer types,\n // the operand with the type of lesser integer conversion rank shall be converted to the type\n // of the operand with greater rank.\n if (aType.isSigned === bType.isSigned) {\n if (aType.byteWidth > bType.byteWidth) {\n b = b.cast(aType);\n }\n else if (bType.byteWidth > aType.byteWidth) {\n a = a.cast(bType);\n }\n }\n else {\n // Otherwise, if the operand that has unsigned integer type has rank greater than or equal\n // to the rank of the type of the other operand, the operand with signed integer type\n // shall be converted to the type of the operand with unsigned integer type.\n if (aType.isSigned === false && aType.byteWidth >= bType.byteWidth) {\n b = b.cast(aType);\n }\n else if (bType.isSigned === false && bType.byteWidth >= aType.byteWidth) {\n a = a.cast(bType);\n }\n else {\n // Otherwise, if the type of the operand with signed integer type can represent all of the\n // values of the type of the operand with unsigned integer type, the operand with unsigned\n // integer type shall be converted to the type of the operand with signed integer type.\n if (aType.isSigned === true &&\n aType.max.gte(bType.max) &&\n aType.min.lte(bType.min)) {\n b = b.cast(aType);\n }\n else if (bType.isSigned === true &&\n bType.max.gte(aType.max) &&\n bType.min.lte(aType.min)) {\n a = a.cast(bType);\n }\n else ;\n }\n }\n }\n return { a, b };\n}\n/** C++11 integral promotion. */\nfunction promote(n) {\n // An rvalue of type char, signed char, unsigned char, short int, or\n // unsigned short int can be converted to an rvalue of type int if int\n // can represent all the values of the source type; otherwise, the source\n // rvalue can be converted to an rvalue of type unsigned int.\n let rv = n;\n const type = n.constructor;\n if (type.byteWidth < 4) {\n rv = n.cast(Int32);\n }\n return rv;\n}\n\n/** Return a ABI definition for given ABISerializableType. */\nfunction synthesizeABI(type) {\n const structs = [];\n const variants = [];\n const aliases = [];\n const seen = new Set();\n const resolveAbiType = (t) => {\n let typeName;\n if (typeof t.type !== 'string') {\n typeName = resolve(t.type);\n }\n else {\n typeName = t.type;\n }\n if (t.array === true) {\n typeName += '[]';\n }\n if (t.extension === true) {\n typeName += '$';\n }\n if (t.optional === true) {\n typeName += '?';\n }\n return typeName;\n };\n const resolve = (t) => {\n if (!t.abiName) {\n throw new Error('Encountered non-conforming type');\n }\n else if (t.abiName === '__struct') {\n throw new Error('Misconfigured Struct subclass, did you forget @Struct.type?');\n }\n if (seen.has(t)) {\n return t.abiName;\n }\n seen.add(t);\n if (t.abiAlias) {\n aliases.push({\n new_type_name: t.abiName,\n type: resolveAbiType(t.abiAlias),\n });\n }\n else if (t.abiFields) {\n const fields = t.abiFields.map((field) => {\n return {\n name: field.name,\n type: resolveAbiType(field),\n };\n });\n const struct = {\n base: t.abiBase ? resolve(t.abiBase) : '',\n name: t.abiName,\n fields,\n };\n structs.push(struct);\n }\n else if (t.abiVariant) {\n const variant = {\n name: t.abiName,\n types: t.abiVariant.map(resolveAbiType),\n };\n variants.push(variant);\n }\n return t.abiName;\n };\n const root = resolve(type);\n return { abi: ABI.from({ structs, variants, types: aliases }), types: Array.from(seen), root };\n}\nfunction abiTypeString(type) {\n let typeName = typeof type.type === 'string' ? type.type : type.type.abiName;\n if (type.array === true) {\n typeName += '[]';\n }\n if (type.extension === true) {\n typeName += '$';\n }\n if (type.optional === true) {\n typeName += '?';\n }\n return typeName;\n}\nfunction isTypeDescriptor(type) {\n return (typeof type !== 'string' &&\n type.abiName === undefined &&\n type.type !== undefined);\n}\nfunction toTypeDescriptor(type) {\n if (typeof type === 'string') {\n return { type };\n }\n if (typeof type.abiName !== 'undefined') {\n return { type: type };\n }\n return type;\n}\n\nconst StringType = {\n abiName: 'string',\n fromABI: (decoder) => {\n return decoder.readString();\n },\n from: (string) => string,\n toABI: (string, encoder) => {\n encoder.writeString(string);\n },\n};\nconst BoolType = {\n abiName: 'bool',\n fromABI: (decoder) => {\n return decoder.readByte() === 1;\n },\n from: (value) => value,\n toABI: (value, encoder) => {\n encoder.writeByte(value === true ? 1 : 0);\n },\n};\nfunction getBuiltins() {\n return [\n // types represented by JavaScript builtins\n BoolType,\n StringType,\n // types represented by Classes\n Asset,\n Asset.Symbol,\n Asset.SymbolCode,\n BlockTimestamp,\n Bytes,\n Checksum160,\n Checksum256,\n Checksum512,\n ExtendedAsset,\n Float128,\n Float32,\n Float64,\n Int128,\n Int16,\n Int32,\n Int64,\n Int8,\n Name,\n PublicKey,\n Signature,\n TimePoint,\n TimePointSec,\n UInt128,\n UInt16,\n UInt32,\n UInt64,\n UInt8,\n VarInt,\n VarUInt,\n ];\n}\nfunction buildTypeLookup(additional = []) {\n const rv = {};\n const builtins = getBuiltins();\n for (const type of builtins) {\n rv[type.abiName] = type;\n }\n for (const type of additional) {\n if (!type.abiName) {\n throw new Error('Invalid type');\n }\n rv[type.abiName] = type;\n }\n return rv;\n}\nfunction getTypeName(object) {\n if (object.constructor && object.constructor.abiName !== undefined) {\n return object.constructor.abiName;\n }\n if (Array.isArray(object)) {\n const types = object.map(getTypeName);\n const type = types[0];\n if (!type || !types.every((t) => t === type)) {\n return;\n }\n return type + '[]';\n }\n switch (typeof object) {\n case 'boolean':\n return 'bool';\n case 'string':\n return 'string';\n }\n}\nfunction getType(object, name = 'jsobj') {\n var _a;\n if (object.constructor && object.constructor.abiName !== undefined) {\n return object.constructor;\n }\n if (Array.isArray(object)) {\n // check for array of all ABISerializableType with same type name\n const types = object.map((v) => {\n return getType(v, name);\n });\n const type = types[0];\n if (!type) {\n return; // some type not known\n }\n if (!types.every((t) => t && t.abiName === type.abiName)) {\n return; // not all types are the same\n }\n return type;\n }\n const objectType = typeof object;\n if (objectType === 'object' && object !== null) {\n const fields = Object.keys(object).map((key) => {\n return { name: key, type: getType(object[key], name + '_nested') };\n });\n if (fields.find((field) => !field.type)) {\n return; // encountered unknown type\n }\n return _a = class extends Struct {\n },\n _a.abiName = name,\n _a.abiFields = fields,\n _a;\n }\n switch (objectType) {\n case 'boolean':\n return BoolType;\n case 'string':\n return StringType;\n }\n}\n\n/**\n * EOSIO ABI Decoder\n */\nclass DecodingError extends Error {\n constructor(ctx, underlyingError) {\n const path = ctx.codingPath\n .map(({ field, type }) => {\n if (typeof field === 'number') {\n return field;\n }\n else {\n return `${field}<${type.typeName}>`;\n }\n })\n .join('.');\n super(`Decoding error at ${path}: ${underlyingError.message}`);\n this.stack = underlyingError.stack;\n this.ctx = ctx;\n this.underlyingError = underlyingError;\n }\n}\nDecodingError.__className = 'DecodingError';\nfunction abiDecode(args) {\n const descriptor = toTypeDescriptor(args.type);\n const typeName = abiTypeString(descriptor);\n const customTypes = args.customTypes || [];\n let abi;\n if (args.abi) {\n abi = ABI.from(args.abi);\n }\n else {\n try {\n let type;\n if (typeof descriptor.type === 'string') {\n const lookup = buildTypeLookup(customTypes);\n const rName = new ABI.ResolvedType(descriptor.type).name; // type name w/o suffixes\n type = lookup[rName];\n if (!type) {\n throw new Error(`Unknown type: ${descriptor.type}`);\n }\n }\n else {\n type = descriptor.type;\n }\n const synthesized = synthesizeABI(type);\n abi = synthesized.abi;\n customTypes.push(...synthesized.types);\n }\n catch (error) {\n throw Error(`Unable to synthesize ABI for: ${typeName} (${error.message}). ` +\n 'To decode non-class types you need to pass the ABI definition manually.');\n }\n }\n const resolved = abi.resolveType(typeName);\n if (typeof descriptor.type !== 'string') {\n customTypes.unshift(descriptor.type);\n }\n const ctx = {\n types: buildTypeLookup(customTypes),\n codingPath: [{ field: 'root', type: resolved }],\n };\n try {\n if (args.data) {\n let decoder;\n if (isInstanceOf(args.data, ABIDecoder)) {\n decoder = args.data;\n }\n else {\n const bytes = Bytes.from(args.data);\n decoder = new ABIDecoder(bytes.array);\n }\n if (args.metadata) {\n decoder.metadata = args.metadata;\n }\n return decodeBinary(resolved, decoder, ctx);\n }\n else if (args.object !== undefined) {\n return decodeObject(args.object, resolved, ctx);\n }\n else if (args.json) {\n return decodeObject(JSON.parse(args.json), resolved, ctx);\n }\n else {\n throw new Error('Nothing to decode, you must set one of data, json, object');\n }\n }\n catch (error) {\n throw new DecodingError(ctx, error);\n }\n}\n/** Marker for objects when they have been resolved, i.e. their types `from` factory method will not need to resolve children. */\nconst Resolved = Symbol('Resolved');\nfunction decodeBinary(type, decoder, ctx) {\n if (ctx.codingPath.length > 32) {\n throw new Error('Maximum decoding depth exceeded');\n }\n if (type.isExtension) {\n if (!decoder.canRead()) {\n return undefined;\n }\n }\n if (type.isOptional) {\n if (decoder.readByte() === 0) {\n return null;\n }\n }\n if (type.isArray) {\n const len = decoder.readVaruint32();\n const rv = [];\n for (let i = 0; i < len; i++) {\n ctx.codingPath.push({ field: i, type });\n rv.push(decodeInner());\n ctx.codingPath.pop();\n }\n return rv;\n }\n else {\n return decodeInner();\n }\n function decodeInner() {\n const abiType = ctx.types[type.name];\n if (abiType && abiType.fromABI) {\n return abiType.fromABI(decoder);\n }\n else {\n if (type.ref) {\n // follow type alias\n ctx.codingPath.push({ field: '', type: type.ref });\n const rv = decodeBinary(type.ref, decoder, ctx);\n ctx.codingPath.pop();\n return rv;\n }\n else if (type.fields) {\n const fields = type.allFields;\n if (!fields) {\n throw new Error('Invalid struct fields');\n }\n const rv = {};\n for (const field of fields) {\n ctx.codingPath.push({ field: field.name, type: field.type });\n rv[field.name] = decodeBinary(field.type, decoder, ctx);\n ctx.codingPath.pop();\n }\n if (abiType) {\n rv[Resolved] = true;\n return abiType.from(rv);\n }\n else {\n return rv;\n }\n }\n else if (type.variant) {\n const vIdx = decoder.readByte();\n const vType = type.variant[vIdx];\n if (!vType) {\n throw new Error(`Unknown variant idx: ${vIdx}`);\n }\n ctx.codingPath.push({ field: `v${vIdx}`, type: vType });\n const rv = [vType.typeName, decodeBinary(vType, decoder, ctx)];\n ctx.codingPath.pop();\n if (abiType) {\n return abiType.from(rv);\n }\n else {\n return rv;\n }\n }\n else if (abiType) {\n throw new Error('Invalid type');\n }\n else {\n throw new Error(type.name === 'any' ? \"Unable to decode 'any' type from binary\" : 'Unknown type');\n }\n }\n }\n}\nfunction decodeObject(value, type, ctx) {\n if (value === null || value === undefined) {\n if (type.isOptional || type.isExtension) {\n return null;\n }\n else {\n throw new Error(`Unexpectedly encountered ${value} for non-optional`);\n }\n }\n else if (type.isArray) {\n if (!Array.isArray(value)) {\n throw new Error('Expected array');\n }\n const rv = [];\n const len = value.length;\n for (let i = 0; i < len; i++) {\n ctx.codingPath.push({ field: i, type });\n rv.push(decodeInner(value[i]));\n ctx.codingPath.pop();\n }\n return rv;\n }\n else {\n return decodeInner(value);\n }\n function decodeInner(value) {\n const abiType = ctx.types[type.name];\n if (type.ref && !abiType) {\n // follow type alias\n return decodeObject(value, type.ref, ctx);\n }\n else if (type.fields) {\n if (typeof value !== 'object') {\n throw new Error('Expected object');\n }\n if (typeof abiType === 'function' && isInstanceOf(value, abiType)) {\n return value;\n }\n const fields = type.allFields;\n if (!fields) {\n throw new Error('Invalid struct fields');\n }\n const struct = {};\n for (const field of fields) {\n ctx.codingPath.push({ field: field.name, type: field.type });\n struct[field.name] = decodeObject(value[field.name], field.type, ctx);\n ctx.codingPath.pop();\n }\n if (abiType) {\n struct[Resolved] = true;\n return abiType.from(struct);\n }\n else {\n return struct;\n }\n }\n else if (type.variant) {\n let vName;\n if (Array.isArray(value) && value.length === 2 && typeof value[0] === 'string') {\n vName = value[0];\n value = value[1];\n }\n else if (isInstanceOf(value, Variant)) {\n vName = value.variantName;\n value = value.value;\n }\n else {\n vName = getTypeName(value);\n }\n const vIdx = type.variant.findIndex((t) => t.typeName === vName);\n if (vIdx === -1) {\n throw new Error(`Unknown variant type: ${vName}`);\n }\n const vType = type.variant[vIdx];\n ctx.codingPath.push({ field: `v${vIdx}`, type: vType });\n const rv = [vType.typeName, decodeObject(value, vType, ctx)];\n ctx.codingPath.pop();\n if (abiType) {\n rv[Resolved] = true;\n return abiType.from(rv);\n }\n else {\n return rv;\n }\n }\n else {\n if (!abiType) {\n // special case for `any` when decoding from object\n if (type.name === 'any') {\n return value;\n }\n throw new Error('Unknown type');\n }\n return abiType.from(value);\n }\n }\n}\nclass ABIDecoder {\n constructor(array) {\n this.array = array;\n this.pos = 0;\n this.textDecoder = new TextDecoder('utf-8', { fatal: true });\n /** User declared metadata, can be used to pass info to instances when decoding. */\n this.metadata = {};\n this.data = new DataView(array.buffer, array.byteOffset, array.byteLength);\n }\n canRead(bytes = 1) {\n return !(this.pos + bytes > this.array.byteLength);\n }\n ensure(bytes) {\n if (!this.canRead(bytes)) {\n throw new Error('Read past end of buffer');\n }\n }\n setPosition(pos) {\n if (pos < 0 || pos > this.array.byteLength) {\n throw new Error('Invalid position');\n }\n this.pos = pos;\n }\n getPosition() {\n return this.pos;\n }\n advance(bytes) {\n this.ensure(bytes);\n this.pos += bytes;\n }\n /** Read one byte. */\n readByte() {\n this.ensure(1);\n return this.array[this.pos++];\n }\n /** Read floating point as JavaScript number, 32 or 64 bits. */\n readFloat(byteWidth) {\n this.ensure(byteWidth);\n let rv;\n switch (byteWidth) {\n case 4:\n rv = this.data.getFloat32(this.pos, true);\n break;\n case 8:\n rv = this.data.getFloat64(this.pos, true);\n break;\n default:\n throw new Error('Invalid float size');\n }\n this.pos += byteWidth;\n return rv;\n }\n readVaruint32() {\n let v = 0;\n let bit = 0;\n for (;;) {\n const b = this.readByte();\n v |= (b & 0x7f) << bit;\n bit += 7;\n if (!(b & 0x80)) {\n break;\n }\n }\n return v >>> 0;\n }\n readVarint32() {\n const v = this.readVaruint32();\n if (v & 1) {\n return (~v >> 1) | 2147483648;\n }\n else {\n return v >>> 1;\n }\n }\n readArray(length) {\n this.ensure(length);\n const rv = this.array.subarray(this.pos, this.pos + length);\n this.pos += length;\n return rv;\n }\n readString() {\n const length = this.readVaruint32();\n return this.textDecoder.decode(this.readArray(length));\n }\n}\nABIDecoder.__className = 'ABIDecoder';\n\n/**\n * EOSIO ABI Encoder\n */\nclass EncodingError extends Error {\n constructor(ctx, underlyingError) {\n const path = ctx.codingPath\n .map(({ field, type }) => {\n if (typeof field === 'number') {\n return field;\n }\n else {\n return `${field}<${type.typeName}>`;\n }\n })\n .join('.');\n super(`Encoding error at ${path}: ${underlyingError.message}`);\n this.stack = underlyingError.stack;\n this.ctx = ctx;\n this.underlyingError = underlyingError;\n }\n}\nEncodingError.__className = 'EncodingError';\nfunction abiEncode(args) {\n let type;\n let typeName;\n if (typeof args.type === 'string') {\n typeName = args.type;\n }\n else if (args.type && isTypeDescriptor(args.type)) {\n if (typeof args.type.type !== 'string') {\n type = args.type.type;\n }\n typeName = abiTypeString(args.type);\n }\n else if (args.type && args.type.abiName !== undefined) {\n type = args.type;\n typeName = args.type.abiName;\n }\n else {\n type = getType(args.object);\n if (type) {\n typeName = type.abiName;\n if (Array.isArray(args.object)) {\n typeName += '[]';\n }\n }\n }\n const customTypes = args.customTypes ? args.customTypes.slice() : [];\n if (type) {\n customTypes.unshift(type);\n }\n else if (typeName) {\n const rootName = new ABI.ResolvedType(typeName).name;\n type = customTypes.find((t) => t.abiName === rootName);\n }\n let rootType;\n if (args.abi && typeName) {\n rootType = ABI.from(args.abi).resolveType(typeName);\n }\n else if (type) {\n const synthesized = synthesizeABI(type);\n rootType = synthesized.abi.resolveType(typeName || type.abiName);\n customTypes.push(...synthesized.types);\n }\n else if (typeName) {\n rootType = new ABI.ResolvedType(typeName);\n }\n else {\n throw new Error('Unable to determine the type of the object to be encoded. ' +\n 'To encode custom ABI types you must pass the type argument.');\n }\n const types = buildTypeLookup(customTypes);\n const encoder = args.encoder || new ABIEncoder();\n if (args.metadata) {\n encoder.metadata = args.metadata;\n }\n const ctx = {\n types,\n encoder,\n codingPath: [{ field: 'root', type: rootType }],\n };\n try {\n encodeAny(args.object, rootType, ctx);\n }\n catch (error) {\n throw new EncodingError(ctx, error);\n }\n return Bytes.from(encoder.getData());\n}\nfunction encodeAny(value, type, ctx) {\n const valueExists = value !== undefined && value !== null;\n if (type.isOptional) {\n ctx.encoder.writeByte(valueExists ? 1 : 0);\n if (!valueExists) {\n return;\n }\n }\n if (type.isArray) {\n if (!Array.isArray(value)) {\n throw new Error(`Expected array for: ${type.typeName}`);\n }\n const len = value.length;\n ctx.encoder.writeVaruint32(len);\n for (let i = 0; i < len; i++) {\n ctx.codingPath.push({ field: i, type });\n encodeInner(value[i]);\n ctx.codingPath.pop();\n }\n }\n else {\n encodeInner(value);\n }\n function encodeInner(value) {\n const abiType = ctx.types[type.name];\n if (type.ref && !abiType) {\n // type is alias, follow it\n encodeAny(value, type.ref, ctx);\n return;\n }\n if (!valueExists) {\n if (type.isExtension) {\n return;\n }\n throw new Error(`Found ${value} for non-optional type: ${type.typeName}`);\n }\n if (abiType && abiType.toABI) {\n // type explicitly handles encoding\n abiType.toABI(value, ctx.encoder);\n }\n else if (typeof value.toABI === 'function' && value.constructor.abiName === type.name) {\n // instance handles encoding\n value.toABI(ctx.encoder);\n }\n else {\n // encode according to abi def if possible\n if (type.fields) {\n if (typeof value !== 'object') {\n throw new Error(`Expected object for: ${type.name}`);\n }\n const fields = type.allFields;\n if (!fields) {\n throw new Error('Invalid struct fields');\n }\n for (const field of fields) {\n ctx.codingPath.push({ field: field.name, type: field.type });\n encodeAny(value[field.name], field.type, ctx);\n ctx.codingPath.pop();\n }\n }\n else if (type.variant) {\n let vName;\n if (Array.isArray(value) && value.length === 2 && typeof value[0] === 'string') {\n vName = value[0];\n value = value[1];\n }\n else if (isInstanceOf(value, Variant)) {\n vName = value.variantName;\n value = value.value;\n }\n else {\n vName = getTypeName(value);\n }\n const vIdx = type.variant.findIndex((t) => t.typeName === vName);\n if (vIdx === -1) {\n const types = type.variant.map((t) => `'${t.typeName}'`).join(', ');\n throw new Error(`Unknown variant type '${vName}', expected one of ${types}`);\n }\n const vType = type.variant[vIdx];\n ctx.encoder.writeVaruint32(vIdx);\n ctx.codingPath.push({ field: `v${vIdx}`, type: vType });\n encodeAny(value, vType, ctx);\n ctx.codingPath.pop();\n }\n else {\n if (!abiType) {\n throw new Error(type.name === 'any' ? 'Unable to encode any type to binary' : 'Unknown type');\n }\n const instance = abiType.from(value);\n if (!instance.toABI) {\n throw new Error(`Invalid type ${type.name}, no encoding methods implemented`);\n }\n instance.toABI(ctx.encoder);\n }\n }\n }\n}\nclass ABIEncoder {\n constructor(pageSize = 1024) {\n this.pageSize = pageSize;\n this.pos = 0;\n this.textEncoder = new TextEncoder();\n /** User declared metadata, can be used to pass info to instances when encoding. */\n this.metadata = {};\n const buffer = new ArrayBuffer(pageSize);\n this.data = new DataView(buffer);\n this.array = new Uint8Array(buffer);\n }\n ensure(bytes) {\n if (this.data.byteLength >= this.pos + bytes) {\n return;\n }\n const pages = Math.ceil(bytes / this.pageSize);\n const newSize = this.data.byteLength + this.pageSize * pages;\n const buffer = new ArrayBuffer(newSize);\n const data = new DataView(buffer);\n const array = new Uint8Array(buffer);\n array.set(this.array);\n this.data = data;\n this.array = array;\n }\n /** Write a single byte. */\n writeByte(byte) {\n this.ensure(1);\n this.array[this.pos++] = byte;\n }\n /** Write an array of bytes. */\n writeArray(bytes) {\n const size = bytes.length;\n this.ensure(size);\n this.array.set(bytes, this.pos);\n this.pos += size;\n }\n writeFloat(value, byteWidth) {\n this.ensure(byteWidth);\n switch (byteWidth) {\n case 4:\n this.data.setFloat32(this.pos, value, true);\n break;\n case 8:\n this.data.setFloat64(this.pos, value, true);\n break;\n default:\n throw new Error('Invalid float size');\n }\n this.pos += byteWidth;\n }\n writeVaruint32(v) {\n this.ensure(4);\n for (;;) {\n if (v >>> 7) {\n this.array[this.pos++] = 0x80 | (v & 0x7f);\n v = v >>> 7;\n }\n else {\n this.array[this.pos++] = v;\n break;\n }\n }\n }\n writeVarint32(v) {\n this.writeVaruint32((v << 1) ^ (v >> 31));\n }\n writeString(v) {\n const data = this.textEncoder.encode(v);\n this.writeVaruint32(data.byteLength);\n this.writeArray(data);\n }\n getData() {\n return new Uint8Array(this.array.buffer, this.array.byteOffset, this.pos);\n }\n getBytes() {\n return new Bytes(this.getData());\n }\n}\nABIEncoder.__className = 'ABIEncoder';\n\nclass Struct {\n /** @internal */\n constructor(object) {\n const self = this.constructor;\n for (const field of self.structFields) {\n this[field.name] = object[field.name];\n }\n }\n static from(value) {\n if (value[Resolved] === true) {\n // objects already resolved\n return new this(value);\n }\n if (isInstanceOf(value, this)) {\n return value;\n }\n const object = {};\n for (const field of this.structFields) {\n const v = value[field.name] === undefined ? field.default : value[field.name];\n object[field.name] = v;\n }\n return abiDecode({ object, type: this });\n }\n static get structFields() {\n const rv = [];\n const walk = (t) => {\n if (t.abiBase) {\n walk(t.abiBase);\n }\n for (const field of t.abiFields || []) {\n rv.push(field);\n }\n };\n walk(this);\n return rv;\n }\n /**\n * Return true if this struct equals the other.\n *\n * Note: This compares the ABI encoded bytes of both structs, subclasses\n * should implement their own fast equality check when possible.\n */\n equals(other) {\n const self = this.constructor;\n if (other.constructor &&\n typeof other.constructor.abiName === 'string' &&\n other.constructor.abiName !== self.abiName) {\n return false;\n }\n return abiEncode({ object: this }).equals(abiEncode({ object: self.from(other) }));\n }\n /** @internal */\n toJSON() {\n const self = this.constructor;\n const rv = {};\n for (const field of self.structFields) {\n rv[field.name] = this[field.name];\n }\n return rv;\n }\n}\nStruct.abiName = '__struct';\n(function (Struct) {\n const FieldsOwner = Symbol('FieldsOwner');\n function type(name) {\n return function (struct) {\n struct.abiName = name;\n return struct;\n };\n }\n Struct.type = type;\n function field(type, options) {\n if (!options)\n options = {};\n return (target, name) => {\n const ctor = target.constructor;\n if (!ctor.abiFields) {\n ctor.abiFields = [];\n ctor.abiFields[FieldsOwner] = ctor;\n }\n else if (ctor.abiFields[FieldsOwner] !== ctor) {\n // if the target class isn't the owner we set the base and start new fields\n ctor.abiBase = ctor.abiFields[FieldsOwner];\n ctor.abiFields = [];\n ctor.abiFields[FieldsOwner] = ctor;\n }\n ctor.abiFields.push({ ...options, name, type });\n };\n }\n Struct.field = field;\n})(Struct || (Struct = {}));\n\nfunction TypeAlias(name) {\n return function (typeAlias) {\n typeAlias.abiAlias = { type: Object.getPrototypeOf(typeAlias.prototype).constructor };\n typeAlias.abiName = name;\n return typeAlias;\n };\n}\n\nclass Variant {\n /** @internal */\n constructor(variant) {\n const abiVariant = this.constructor.abiVariant;\n this.value = variant[1];\n const variantIdx = abiVariant.map(abiTypeString).findIndex((t) => t === variant[0]);\n if (0 > variantIdx || abiVariant.length <= variantIdx) {\n throw new Error(`Unknown variant ${variant[0]}`);\n }\n this.variantIdx = variantIdx;\n }\n static from(object) {\n if (object[Resolved]) {\n return new this(object);\n }\n if (isInstanceOf(object, this)) {\n return object;\n }\n return abiDecode({ object, type: this });\n }\n /**\n * Return true if this variant equals the other.\n *\n * Note: This compares the ABI encoded bytes of both variants, subclasses\n * should implement their own fast equality check when possible.\n */\n equals(other) {\n const self = this.constructor;\n const otherVariant = self.from(other);\n if (this.variantIdx !== otherVariant.variantIdx) {\n return false;\n }\n return abiEncode({ object: this }).equals(abiEncode({ object: otherVariant }));\n }\n get variantName() {\n const variant = this.constructor.abiVariant[this.variantIdx];\n return abiTypeString(variant);\n }\n /** @internal */\n toJSON() {\n return [this.variantName, this.value];\n }\n}\nVariant.abiName = '__variant';\nVariant.abiVariant = [];\n(function (Variant) {\n function type(name, types) {\n return function (variant) {\n variant.abiName = name;\n variant.abiVariant = types.map(toTypeDescriptor);\n return variant;\n };\n }\n Variant.type = type;\n})(Variant || (Variant = {}));\n\nclass Float {\n constructor(value) {\n if (!Number.isFinite(value)) {\n throw new Error('Invalid number');\n }\n this.value = value;\n }\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (typeof value === 'string') {\n value = Number.parseFloat(value);\n }\n else if (isInstanceOf(value, Float)) {\n value = value.value;\n }\n return new this(value);\n }\n static fromABI(decoder) {\n return new this(decoder.readFloat(this.byteWidth));\n }\n static random() {\n const bytes = secureRandom(this.byteWidth);\n const decoder = new ABIDecoder(bytes);\n return this.fromABI(decoder);\n }\n equals(other) {\n const self = this.constructor;\n return this.value === self.from(other).value;\n }\n toABI(encoder) {\n const self = this.constructor;\n encoder.writeFloat(this.value, self.byteWidth);\n }\n toString() {\n return this.value.toString();\n }\n toJSON() {\n return this.toString();\n }\n}\nFloat.abiName = '__float';\nclass Float32 extends Float {\n toString() {\n return this.value.toFixed(7);\n }\n}\nFloat32.abiName = 'float32';\nFloat32.byteWidth = 4;\nclass Float64 extends Float {\n}\nFloat64.abiName = 'float64';\nFloat64.byteWidth = 8;\nclass Float128 {\n constructor(data) {\n if (data.array.length !== 16) {\n throw new Error('Invalid float128');\n }\n this.data = data;\n }\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (typeof value === 'string' && value.startsWith('0x')) {\n value = value.slice(2);\n }\n return new this(Bytes.from(value));\n }\n static fromABI(decoder) {\n return new this(new Bytes(decoder.readArray(this.byteWidth)));\n }\n static random() {\n const bytes = secureRandom(16);\n const decoder = new ABIDecoder(bytes);\n return this.fromABI(decoder);\n }\n equals(other) {\n const self = this.constructor;\n return this.data.equals(self.from(other).data);\n }\n toABI(encoder) {\n encoder.writeArray(this.data.array);\n }\n toString() {\n // float128 uses 0x prefixed hex strings as opposed to everywhere else in where there is no prefix ¯\\_(ツ)_/¯\n return '0x' + this.data.hexString;\n }\n toJSON() {\n return this.toString();\n }\n}\nFloat128.abiName = 'float128';\nFloat128.byteWidth = 16;\n\n/** EOSIO Name */\nclass Name {\n constructor(value) {\n this.value = value;\n }\n /**\n * The raw representation of the name.\n * @deprecated Use value instead.\n */\n get rawValue() {\n return this.value;\n }\n /** Create a new Name instance from any of its representing types. */\n static from(value) {\n if (isInstanceOf(value, Name)) {\n return value;\n }\n else if (typeof value === 'string') {\n return new Name(stringToName(value));\n }\n else if (isInstanceOf(value, UInt64)) {\n return new Name(value);\n }\n else {\n throw new Error('Invalid name');\n }\n }\n static fromABI(decoder) {\n return new Name(UInt64.fromABI(decoder));\n }\n /** Return true if this name is equal to passed name. */\n equals(other) {\n return this.value.equals(Name.from(other).value);\n }\n /** Return string representation of this name. */\n toString() {\n return nameToString(this.value);\n }\n toABI(encoder) {\n this.value.toABI(encoder);\n }\n /** @internal */\n toJSON() {\n return this.toString();\n }\n}\nName.abiName = 'name';\n/** Regex pattern matching a EOSIO name, case-sensitive. */\nName.pattern = /^[a-z1-5.]{0,13}$/;\nfunction stringToName(s) {\n function charToSymbol(c) {\n if (c >= 'a'.charCodeAt(0) && c <= 'z'.charCodeAt(0)) {\n return c - 'a'.charCodeAt(0) + 6;\n }\n if (c >= '1'.charCodeAt(0) && c <= '5'.charCodeAt(0)) {\n return c - '1'.charCodeAt(0) + 1;\n }\n return 0;\n }\n const a = new Uint8Array(8);\n let bit = 63;\n for (let i = 0; i < s.length; ++i) {\n let c = charToSymbol(s.charCodeAt(i));\n if (bit < 5) {\n c = c << 1;\n }\n for (let j = 4; j >= 0; --j) {\n if (bit >= 0) {\n a[Math.floor(bit / 8)] |= ((c >> j) & 1) << bit % 8;\n --bit;\n }\n }\n }\n return UInt64.from(a);\n}\nfunction nameToString(n) {\n const a = n.value.toArray('le', 8);\n let result = '';\n for (let bit = 63; bit >= 0;) {\n let c = 0;\n for (let i = 0; i < 5; ++i) {\n if (bit >= 0) {\n c = (c << 1) | ((a[Math.floor(bit / 8)] >> bit % 8) & 1);\n --bit;\n }\n }\n if (c >= 6) {\n result += String.fromCharCode(c + 'a'.charCodeAt(0) - 6);\n }\n else if (c >= 1) {\n result += String.fromCharCode(c + '1'.charCodeAt(0) - 1);\n }\n else {\n result += '.';\n }\n }\n while (result.endsWith('.')) {\n result = result.substr(0, result.length - 1);\n }\n return result;\n}\n\nclass TimePointBase {\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (isInstanceOf(value, TimePointBase)) {\n // converting between types\n return this.fromMilliseconds(value.toMilliseconds());\n }\n if (isInstanceOf(value, Date)) {\n return this.fromDate(value);\n }\n if (typeof value === 'string') {\n return this.fromString(value);\n }\n return this.fromInteger(value);\n }\n static fromString(string) {\n const value = Date.parse(string + 'Z');\n if (!Number.isFinite(value)) {\n throw new Error('Invalid date string');\n }\n return this.fromMilliseconds(value);\n }\n static fromDate(date) {\n return this.fromMilliseconds(date.getTime());\n }\n toABI(encoder) {\n const self = this;\n self.value.toABI(encoder);\n }\n equals(other) {\n const self = this.constructor;\n return this.toMilliseconds() === self.from(other).toMilliseconds();\n }\n toMilliseconds() {\n throw new Error('Not implemented');\n }\n toDate() {\n return new Date(this.toMilliseconds());\n }\n toJSON() {\n return this.toString();\n }\n}\nTimePointBase.abiName = '__time_point_base';\n/** Timestamp with microsecond accuracy. */\nclass TimePoint extends TimePointBase {\n constructor(value) {\n super();\n this.value = value;\n }\n static fromMilliseconds(ms) {\n return new this(Int64.from(Math.round(ms * 1000)));\n }\n static fromInteger(value) {\n return new this(Int64.from(value));\n }\n static fromABI(decoder) {\n return new this(Int64.fromABI(decoder));\n }\n toString() {\n return this.toDate().toISOString().slice(0, -1);\n }\n toMilliseconds() {\n return Number(this.value.dividing(1000, 'round'));\n }\n}\nTimePoint.abiName = 'time_point';\n/** Timestamp with second accuracy. */\nclass TimePointSec extends TimePointBase {\n constructor(value) {\n super();\n this.value = value;\n }\n static fromMilliseconds(ms) {\n return new this(UInt32.from(Math.round(ms / 1000)));\n }\n static fromInteger(value) {\n return new this(UInt32.from(value));\n }\n static fromABI(decoder) {\n return new this(UInt32.fromABI(decoder));\n }\n toString() {\n return this.toDate().toISOString().slice(0, -5);\n }\n toMilliseconds() {\n return Number(this.value.cast(UInt64).multiplying(1000));\n }\n}\nTimePointSec.abiName = 'time_point_sec';\nclass BlockTimestamp extends TimePointBase {\n constructor(value) {\n super();\n this.value = value;\n }\n static fromMilliseconds(ms) {\n return new this(UInt32.from(Math.round((ms - 946684800000) / 500)));\n }\n static fromInteger(value) {\n return new this(UInt32.from(value));\n }\n static fromABI(decoder) {\n return new this(UInt32.fromABI(decoder));\n }\n toString() {\n return this.toDate().toISOString().slice(0, -1);\n }\n toMilliseconds() {\n return Number(this.value.cast(UInt64).multiplying(500).adding(946684800000));\n }\n}\nBlockTimestamp.abiName = 'block_timestamp_type';\n\nclass ABI {\n constructor(args) {\n this.version = args.version || ABI.version;\n this.types = args.types || [];\n this.variants = args.variants || [];\n this.structs = args.structs || [];\n this.actions = args.actions || [];\n this.tables = args.tables || [];\n this.ricardian_clauses = args.ricardian_clauses || [];\n }\n static from(value) {\n if (isInstanceOf(value, ABI)) {\n return value;\n }\n if (typeof value === 'string') {\n return new ABI(JSON.parse(value));\n }\n return new ABI(value);\n }\n static fromABI(decoder) {\n const version = decoder.readString();\n const types = [];\n const numTypes = decoder.readVaruint32();\n for (let i = 0; i < numTypes; i++) {\n types.push({ new_type_name: decoder.readString(), type: decoder.readString() });\n }\n const structs = [];\n const numStructs = decoder.readVaruint32();\n for (let i = 0; i < numStructs; i++) {\n const name = decoder.readString();\n const base = decoder.readString();\n const numFields = decoder.readVaruint32();\n const fields = [];\n for (let j = 0; j < numFields; j++) {\n fields.push({ name: decoder.readString(), type: decoder.readString() });\n }\n structs.push({ base, name, fields });\n }\n const actions = [];\n const numActions = decoder.readVaruint32();\n for (let i = 0; i < numActions; i++) {\n const name = Name.fromABI(decoder);\n const type = decoder.readString();\n const ricardian_contract = decoder.readString();\n actions.push({ name, type, ricardian_contract });\n }\n const tables = [];\n const numTables = decoder.readVaruint32();\n for (let i = 0; i < numTables; i++) {\n const name = Name.fromABI(decoder);\n const index_type = decoder.readString();\n const key_names = [];\n const numKeyNames = decoder.readVaruint32();\n for (let j = 0; j < numKeyNames; j++) {\n key_names.push(decoder.readString());\n }\n const key_types = [];\n const numKeyTypes = decoder.readVaruint32();\n for (let j = 0; j < numKeyTypes; j++) {\n key_types.push(decoder.readString());\n }\n const type = decoder.readString();\n tables.push({ name, index_type, key_names, key_types, type });\n }\n const ricardian_clauses = [];\n const numClauses = decoder.readVaruint32();\n for (let i = 0; i < numClauses; i++) {\n const id = decoder.readString();\n const body = decoder.readString();\n ricardian_clauses.push({ id, body });\n }\n // error_messages, never used?\n const numErrors = decoder.readVaruint32();\n for (let i = 0; i < numErrors; i++) {\n decoder.advance(8); // uint64 error_code\n decoder.advance(decoder.readVaruint32()); // string error_msgr\n }\n // extensions, not used\n const numExtensions = decoder.readVaruint32();\n for (let i = 0; i < numExtensions; i++) {\n decoder.advance(2); // uint16 type\n decoder.advance(decoder.readVaruint32()); // bytes data\n }\n // variants is a binary extension for some reason even though extensions are defined on the type\n const variants = [];\n if (decoder.canRead()) {\n const numVariants = decoder.readVaruint32();\n for (let i = 0; i < numVariants; i++) {\n const name = decoder.readString();\n const types = [];\n const numTypes = decoder.readVaruint32();\n for (let j = 0; j < numTypes; j++) {\n types.push(decoder.readString());\n }\n variants.push({ name, types });\n }\n }\n return new ABI({\n version,\n types,\n structs,\n actions,\n tables,\n ricardian_clauses,\n variants,\n });\n }\n toABI(encoder) {\n encoder.writeString(this.version);\n encoder.writeVaruint32(this.types.length);\n for (const type of this.types) {\n encoder.writeString(type.new_type_name);\n encoder.writeString(type.type);\n }\n encoder.writeVaruint32(this.structs.length);\n for (const struct of this.structs) {\n encoder.writeString(struct.name);\n encoder.writeString(struct.base);\n encoder.writeVaruint32(struct.fields.length);\n for (const field of struct.fields) {\n encoder.writeString(field.name);\n encoder.writeString(field.type);\n }\n }\n encoder.writeVaruint32(this.actions.length);\n for (const action of this.actions) {\n Name.from(action.name).toABI(encoder);\n encoder.writeString(action.type);\n encoder.writeString(action.ricardian_contract);\n }\n encoder.writeVaruint32(this.tables.length);\n for (const table of this.tables) {\n Name.from(table.name).toABI(encoder);\n encoder.writeString(table.index_type);\n encoder.writeVaruint32(table.key_names.length);\n for (const key of table.key_names) {\n encoder.writeString(key);\n }\n encoder.writeVaruint32(table.key_types.length);\n for (const key of table.key_types) {\n encoder.writeString(key);\n }\n encoder.writeString(table.type);\n }\n encoder.writeVaruint32(this.ricardian_clauses.length);\n for (const clause of this.ricardian_clauses) {\n encoder.writeString(clause.id);\n encoder.writeString(clause.body);\n }\n encoder.writeVaruint32(0); // error_messages\n encoder.writeVaruint32(0); // extensions\n encoder.writeVaruint32(this.variants.length);\n for (const variant of this.variants) {\n encoder.writeString(variant.name);\n encoder.writeVaruint32(variant.types.length);\n for (const type of variant.types) {\n encoder.writeString(type);\n }\n }\n }\n resolveType(name) {\n const types = {};\n return this.resolve({ name, types }, { id: 0 });\n }\n resolveAll() {\n const types = {};\n const ctx = { id: 0 };\n return {\n types: this.types.map((t) => this.resolve({ name: t.new_type_name, types }, ctx)),\n variants: this.variants.map((t) => this.resolve({ name: t.name, types }, ctx)),\n structs: this.structs.map((t) => this.resolve({ name: t.name, types }, ctx)),\n };\n }\n resolve({ name, types }, ctx) {\n const existing = types[name];\n if (existing) {\n return existing;\n }\n const type = new ABI.ResolvedType(name, ++ctx.id);\n types[type.typeName] = type;\n const alias = this.types.find((typeDef) => typeDef.new_type_name == type.name);\n if (alias) {\n type.ref = this.resolve({ name: alias.type, types }, ctx);\n return type;\n }\n const struct = this.getStruct(type.name);\n if (struct) {\n if (struct.base) {\n type.base = this.resolve({ name: struct.base, types }, ctx);\n }\n type.fields = struct.fields.map((field) => {\n return {\n name: field.name,\n type: this.resolve({ name: field.type, types }, ctx),\n };\n });\n return type;\n }\n const variant = this.getVariant(type.name);\n if (variant) {\n type.variant = variant.types.map((name) => this.resolve({ name, types }, ctx));\n return type;\n }\n // builtin or unknown type\n return type;\n }\n getStruct(name) {\n return this.structs.find((struct) => struct.name == name);\n }\n getVariant(name) {\n return this.variants.find((variant) => variant.name == name);\n }\n /** Return arguments type of an action in this ABI. */\n getActionType(actionName) {\n const name = Name.from(actionName).toString();\n const action = this.actions.find((a) => a.name.toString() === name);\n if (action) {\n return action.type;\n }\n }\n equals(other) {\n const o = ABI.from(other);\n if (this.version != o.version ||\n this.types.length != o.types.length ||\n this.structs.length != o.structs.length ||\n this.actions.length != o.actions.length ||\n this.tables.length != o.tables.length ||\n this.ricardian_clauses.length != o.ricardian_clauses.length ||\n this.variants.length != o.variants.length) {\n return false;\n }\n return abiEncode({ object: this }).equals(abiEncode({ object: o }));\n }\n toJSON() {\n return {\n version: this.version,\n types: this.types,\n structs: this.structs,\n actions: this.actions,\n tables: this.tables,\n ricardian_clauses: this.ricardian_clauses,\n error_messages: [],\n abi_extensions: [],\n variants: this.variants,\n };\n }\n}\nABI.abiName = 'abi';\nABI.version = 'eosio::abi/1.1';\n(function (ABI) {\n class ResolvedType {\n constructor(fullName, id = 0) {\n let name = fullName;\n if (name.endsWith('$')) {\n name = name.slice(0, -1);\n this.isExtension = true;\n }\n else {\n this.isExtension = false;\n }\n if (name.endsWith('?')) {\n name = name.slice(0, -1);\n this.isOptional = true;\n }\n else {\n this.isOptional = false;\n }\n if (name.endsWith('[]')) {\n name = name.slice(0, -2);\n this.isArray = true;\n }\n else {\n this.isArray = false;\n }\n this.id = id;\n this.name = name;\n }\n /**\n * Type name including suffixes: [] array, ? optional, $ binary ext\n */\n get typeName() {\n let rv = this.name;\n if (this.isArray) {\n rv += '[]';\n }\n if (this.isOptional) {\n rv += '?';\n }\n if (this.isExtension) {\n rv += '$';\n }\n return rv;\n }\n /** All fields including base struct(s), undefined if not a struct type. */\n get allFields() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current = this;\n const rv = [];\n const seen = new Set();\n do {\n if (!current.fields) {\n return; // invalid struct\n }\n if (seen.has(current.name)) {\n return; // circular ref\n }\n for (let i = current.fields.length - 1; i >= 0; i--) {\n rv.unshift(current.fields[i]);\n }\n seen.add(current.name);\n current = current.base;\n } while (current !== undefined);\n return rv;\n }\n }\n ABI.ResolvedType = ResolvedType;\n})(ABI || (ABI = {}));\n\nclass Asset {\n constructor(units, symbol) {\n this.units = units;\n this.symbol = symbol;\n }\n static from(value, symbol) {\n if (isInstanceOf(value, Asset)) {\n return value;\n }\n switch (typeof value) {\n case 'number':\n if (!symbol) {\n throw new Error('Symbol is required when creating Asset from number');\n }\n return this.fromFloat(value, symbol);\n case 'string':\n return this.fromString(value);\n default:\n throw new Error('Invalid asset');\n }\n }\n static fromString(value) {\n const parts = (typeof value === 'string' ? value : '').split(' ');\n if (parts.length !== 2) {\n throw new Error('Invalid asset string');\n }\n const amount = parts[0].replace('.', '');\n const precision = (parts[0].split('.')[1] || '').length;\n const symbol = Asset.Symbol.fromParts(parts[1], precision);\n return new Asset(Int64.from(amount), symbol);\n }\n static fromFloat(value, symbol) {\n const s = Asset.Symbol.from(symbol);\n return new Asset(s.convertFloat(value), s);\n }\n static fromUnits(value, symbol) {\n return new Asset(Int64.from(value), Asset.Symbol.from(symbol));\n }\n static fromABI(decoder) {\n const units = Int64.fromABI(decoder);\n const symbol = Asset.Symbol.fromABI(decoder);\n return new Asset(units, symbol);\n }\n equals(other) {\n const { symbol, units } = Asset.from(other);\n return this.symbol.value.equals(symbol.value) && this.units.equals(units);\n }\n get value() {\n return this.symbol.convertUnits(this.units);\n }\n set value(newValue) {\n this.units = this.symbol.convertFloat(newValue);\n }\n toABI(encoder) {\n this.units.toABI(encoder);\n this.symbol.toABI(encoder);\n }\n toString() {\n const digits = this.units.toString().split('');\n let negative = false;\n if (digits[0] === '-') {\n negative = true;\n digits.shift();\n }\n const p = this.symbol.precision;\n while (digits.length <= p) {\n digits.unshift('0');\n }\n if (p > 0) {\n digits.splice(digits.length - p, 0, '.');\n }\n let rv = digits.join('');\n if (negative) {\n rv = '-' + rv;\n }\n return rv + ' ' + this.symbol.name;\n }\n toJSON() {\n return this.toString();\n }\n}\nAsset.abiName = 'asset';\n(function (Asset) {\n class Symbol {\n constructor(value) {\n if (toSymbolPrecision(value) > Symbol.maxPrecision) {\n throw new Error('Invalid asset symbol, precision too large');\n }\n if (!Symbol.symbolNamePattern.test(toSymbolName(value))) {\n throw new Error('Invalid asset symbol, name must be uppercase A-Z');\n }\n this.value = value;\n }\n static from(value) {\n if (isInstanceOf(value, Symbol)) {\n return value;\n }\n if (isInstanceOf(value, UInt64)) {\n return new Symbol(value);\n }\n const parts = value.split(',');\n if (parts.length !== 2) {\n throw new Error('Invalid symbol string');\n }\n const precision = Number.parseInt(parts[0]);\n return Symbol.fromParts(parts[1], precision);\n }\n static fromParts(name, precision) {\n return new Symbol(toRawSymbol(name, precision));\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n static fromABI(decoder) {\n return new Symbol(UInt64.fromABI(decoder));\n }\n equals(other) {\n return this.value.equals(Symbol.from(other).value);\n }\n get name() {\n return toSymbolName(this.value);\n }\n get precision() {\n return toSymbolPrecision(this.value);\n }\n get code() {\n return new SymbolCode(UInt64.from(this.value.value.clone().iushrn(8)));\n }\n toABI(encoder) {\n this.value.toABI(encoder);\n }\n /**\n * Convert units to floating point number according to symbol precision.\n * @throws If the given units can't be represented in 53 bits.\n **/\n convertUnits(units) {\n return units.value.toNumber() / Math.pow(10, this.precision);\n }\n /**\n * Convert floating point to units according to symbol precision.\n * Note that the value will be rounded to closest precision.\n **/\n convertFloat(float) {\n return Int64.from(float.toFixed(this.precision).replace('.', ''));\n }\n toString() {\n return `${this.precision},${this.name}`;\n }\n toJSON() {\n return this.toString();\n }\n }\n Symbol.abiName = 'symbol';\n Symbol.symbolNamePattern = /^[A-Z]{1,7}$/;\n Symbol.maxPrecision = 18;\n Asset.Symbol = Symbol;\n class SymbolCode {\n constructor(value) {\n this.value = value;\n }\n static from(value) {\n if (isInstanceOf(value, SymbolCode)) {\n return value;\n }\n if (typeof value === 'string') {\n value = UInt64.from(toRawSymbolCode(value));\n }\n return new this(UInt64.from(value));\n }\n static fromABI(decoder) {\n return new SymbolCode(UInt64.fromABI(decoder));\n }\n equals(other) {\n return this.value.equals(SymbolCode.from(other).value);\n }\n toABI(encoder) {\n this.value.toABI(encoder);\n }\n toString() {\n return charsToSymbolName(this.value.value.toArray('be'));\n }\n toJSON() {\n return this.toString();\n }\n }\n SymbolCode.abiName = 'symbol_code';\n Asset.SymbolCode = SymbolCode;\n})(Asset || (Asset = {}));\nclass ExtendedAsset {\n constructor(quantity, contract) {\n this.quantity = quantity;\n this.contract = contract;\n }\n static from(value) {\n if (isInstanceOf(value, ExtendedAsset)) {\n return value;\n }\n return new this(Asset.from(value.quantity), Name.from(value.contract));\n }\n static fromABI(decoder) {\n return new ExtendedAsset(Asset.fromABI(decoder), Name.fromABI(decoder));\n }\n equals(other) {\n return this.quantity.equals(other.quantity) && this.contract.equals(other.contract);\n }\n toABI(encoder) {\n this.quantity.toABI(encoder);\n this.contract.toABI(encoder);\n }\n toJSON() {\n return {\n quantity: this.quantity,\n contract: this.contract,\n };\n }\n}\nExtendedAsset.abiName = 'extended_asset';\nfunction toSymbolPrecision(rawSymbol) {\n return rawSymbol.value.and(UInt64.from(0xff).value).toNumber();\n}\nfunction toSymbolName(rawSymbol) {\n const chars = rawSymbol.value.toArray('be').slice(0, -1);\n return charsToSymbolName(chars);\n}\nfunction charsToSymbolName(chars) {\n return chars\n .map((char) => String.fromCharCode(char))\n .reverse()\n .join('');\n}\nfunction toRawSymbol(name, precision) {\n const code = toRawSymbolCode(name);\n const bytes = new Uint8Array(code.length + 1);\n bytes[0] = precision;\n bytes.set(code, 1);\n return UInt64.from(bytes);\n}\nfunction toRawSymbolCode(name) {\n const length = Math.min(name.length, 7);\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n bytes[i] = name.charCodeAt(i);\n }\n return bytes;\n}\n\nvar Base58;\n(function (Base58) {\n let ErrorCode;\n (function (ErrorCode) {\n ErrorCode[\"E_CHECKSUM\"] = \"E_CHECKSUM\";\n ErrorCode[\"E_INVALID\"] = \"E_INVALID\";\n })(ErrorCode = Base58.ErrorCode || (Base58.ErrorCode = {}));\n class DecodingError extends Error {\n constructor(message, code, info = {}) {\n super(message);\n this.code = code;\n this.info = info;\n }\n }\n DecodingError.__className = 'DecodingError';\n Base58.DecodingError = DecodingError;\n const chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n const charMap = new Int16Array(0xff).fill(-1);\n for (let i = 0; i < 58; ++i) {\n charMap[chars.charCodeAt(i)] = i;\n }\n /** Decode a Base58 encoded string. */\n function decode(s, size) {\n if (size == null) {\n return decodeVar(s);\n }\n const result = new Uint8Array(size);\n for (let i = 0; i < s.length; ++i) {\n let carry = charMap[s.charCodeAt(i)];\n if (carry < 0) {\n throw new DecodingError('Invalid Base58 character encountered', ErrorCode.E_INVALID, { char: s[i] });\n }\n for (let j = 0; j < size; ++j) {\n const x = result[j] * 58 + carry;\n result[j] = x;\n carry = x >> 8;\n }\n if (carry) {\n throw new DecodingError('Base58 value is out of range', ErrorCode.E_INVALID);\n }\n }\n result.reverse();\n return new Bytes(result);\n }\n Base58.decode = decode;\n /** Decode a Base58Check encoded string. */\n function decodeCheck(encoded, size) {\n const decoded = decode(encoded, size != null ? size + 4 : size);\n const data = decoded.array.subarray(0, -4);\n const expected = decoded.array.subarray(-4);\n const actual = dsha256Checksum(data);\n if (!arrayEquals(expected, actual)) {\n throw new DecodingError('Checksum mismatch', ErrorCode.E_CHECKSUM, {\n actual,\n expected,\n data,\n hash: 'double_sha256',\n });\n }\n return new Bytes(data);\n }\n Base58.decodeCheck = decodeCheck;\n /** Decode a Base58Check encoded string that uses ripemd160 instead of double sha256 for the digest. */\n function decodeRipemd160Check(encoded, size, suffix) {\n const decoded = decode(encoded, size != null ? size + 4 : size);\n const data = decoded.array.subarray(0, -4);\n const expected = decoded.array.subarray(-4);\n const actual = ripemd160Checksum(data, suffix);\n if (!arrayEquals(expected, actual)) {\n throw new DecodingError('Checksum mismatch', ErrorCode.E_CHECKSUM, {\n actual,\n expected,\n data,\n hash: 'ripemd160',\n });\n }\n return new Bytes(data);\n }\n Base58.decodeRipemd160Check = decodeRipemd160Check;\n /** Encode bytes to a Base58 string. */\n function encode(data) {\n data = Bytes.from(data);\n const result = [];\n for (const byte of data.array) {\n let carry = byte;\n for (let j = 0; j < result.length; ++j) {\n const x = (charMap[result[j]] << 8) + carry;\n result[j] = chars.charCodeAt(x % 58);\n carry = (x / 58) | 0;\n }\n while (carry) {\n result.push(chars.charCodeAt(carry % 58));\n carry = (carry / 58) | 0;\n }\n }\n for (const byte of data.array) {\n if (byte) {\n break;\n }\n else {\n result.push('1'.charCodeAt(0));\n }\n }\n result.reverse();\n return String.fromCharCode(...result);\n }\n Base58.encode = encode;\n function encodeCheck(data) {\n data = Bytes.from(data);\n data = data.appending(dsha256Checksum(data.array));\n return encode(data);\n }\n Base58.encodeCheck = encodeCheck;\n function encodeRipemd160Check(data, suffix) {\n data = Bytes.from(data);\n data = data.appending(ripemd160Checksum(data.array, suffix));\n return encode(data);\n }\n Base58.encodeRipemd160Check = encodeRipemd160Check;\n /** @internal */\n function decodeVar(s) {\n const result = [];\n for (let i = 0; i < s.length; ++i) {\n let carry = charMap[s.charCodeAt(i)];\n if (carry < 0) {\n throw new DecodingError('Invalid Base58 character encountered', ErrorCode.E_INVALID, { char: s[i] });\n }\n for (let j = 0; j < result.length; ++j) {\n const x = result[j] * 58 + carry;\n result[j] = x & 0xff;\n carry = x >> 8;\n }\n if (carry) {\n result.push(carry);\n }\n }\n for (const ch of s) {\n if (ch === '1') {\n result.push(0);\n }\n else {\n break;\n }\n }\n result.reverse();\n return Bytes.from(result);\n }\n /** @internal */\n function ripemd160Checksum(data, suffix) {\n const hash = ripemd160().update(data);\n if (suffix) {\n hash.update(suffix);\n }\n return new Uint8Array(hash.digest().slice(0, 4));\n }\n /** @internal */\n function dsha256Checksum(data) {\n const round1 = sha256().update(data).digest();\n const round2 = sha256().update(round1).digest();\n return new Uint8Array(round2.slice(0, 4));\n }\n})(Base58 || (Base58 = {}));\n\nclass PublicKey {\n /** @internal */\n constructor(type, data) {\n this.type = type;\n this.data = data;\n }\n /** Create PublicKey object from representing types. */\n static from(value) {\n if (isInstanceOf(value, PublicKey)) {\n return value;\n }\n if (typeof value === 'object' && value.type && value.compressed) {\n return new PublicKey(KeyType.from(value.type), new Bytes(value.compressed));\n }\n if (typeof value !== 'string') {\n throw new Error('Invalid public key');\n }\n if (value.startsWith('PUB_')) {\n const parts = value.split('_');\n if (parts.length !== 3) {\n throw new Error('Invalid public key string');\n }\n const type = KeyType.from(parts[1]);\n const size = type === KeyType.K1 || type === KeyType.R1 ? 33 : undefined;\n const data = Base58.decodeRipemd160Check(parts[2], size, type);\n return new PublicKey(type, data);\n }\n else if (value.length >= 50) {\n // Legacy EOS key\n const data = Base58.decodeRipemd160Check(value.slice(-50));\n return new PublicKey(KeyType.K1, data);\n }\n else {\n throw new Error('Invalid public key string');\n }\n }\n /** @internal */\n static fromABI(decoder) {\n const type = KeyType.from(decoder.readByte());\n if (type == KeyType.WA) {\n const startPos = decoder.getPosition();\n decoder.advance(33); // key_data\n decoder.advance(1); // user presence\n decoder.advance(decoder.readVaruint32()); // rpid\n const len = decoder.getPosition() - startPos;\n decoder.setPosition(startPos);\n const data = Bytes.from(decoder.readArray(len));\n return new PublicKey(KeyType.WA, data);\n }\n return new PublicKey(type, new Bytes(decoder.readArray(33)));\n }\n equals(other) {\n const otherKey = PublicKey.from(other);\n return this.type === otherKey.type && this.data.equals(otherKey.data);\n }\n /**\n * Return EOSIO legacy (`EOS`) formatted key.\n * @throws If the key type isn't `K1`\n */\n toLegacyString(prefix = 'EOS') {\n if (this.type !== KeyType.K1) {\n throw new Error('Unable to create legacy formatted string for non-K1 key');\n }\n return `${prefix}${Base58.encodeRipemd160Check(this.data)}`;\n }\n /** Return key in modern EOSIO format (`PUB__`) */\n toString() {\n return `PUB_${this.type}_${Base58.encodeRipemd160Check(this.data, this.type)}`;\n }\n /** @internal */\n toABI(encoder) {\n encoder.writeByte(KeyType.indexFor(this.type));\n encoder.writeArray(this.data.array);\n }\n /** @internal */\n toJSON() {\n return this.toString();\n }\n}\nPublicKey.abiName = 'public_key';\n\nconst curves = {};\n/**\n * Get curve for key type.\n * @internal\n */\nfunction getCurve(type) {\n let rv = curves[type];\n if (!rv) {\n if (type === 'K1') {\n rv = curves[type] = new ec('secp256k1');\n }\n else if (type === 'R1') {\n rv = curves[type] = new ec('p256');\n }\n else {\n throw new Error(`Unknown curve type: ${type}`);\n }\n }\n return rv;\n}\n\n/**\n * Recover public key from signature and recovery id.\n * @internal\n */\nfunction recover(signature, message, type) {\n const curve = getCurve(type);\n const recid = signature[0] - 31;\n const r = signature.subarray(1, 33);\n const s = signature.subarray(33);\n const point = curve.recoverPubKey(message, { r, s }, recid);\n return new Uint8Array(point.encodeCompressed());\n}\n\n/**\n * Verify signature using message and public key.\n * @internal\n */\nfunction verify(signature, message, pubkey, type) {\n const curve = getCurve(type);\n const r = signature.subarray(1, 33);\n const s = signature.subarray(33);\n return curve.verify(message, { r, s }, pubkey);\n}\n\nclass Signature {\n /** @internal */\n constructor(type, data) {\n this.type = type;\n this.data = data;\n }\n /** Create Signature object from representing types. */\n static from(value) {\n if (isInstanceOf(value, Signature)) {\n return value;\n }\n if (typeof value === 'object' && value.r && value.s) {\n const data = new Uint8Array(1 + 32 + 32);\n let recid = value.recid;\n const type = KeyType.from(value.type);\n if (value.type === KeyType.K1 || value.type === KeyType.R1) {\n recid += 31;\n }\n data[0] = recid;\n data.set(value.r, 1);\n data.set(value.s, 33);\n return new Signature(type, new Bytes(data));\n }\n if (typeof value !== 'string') {\n throw new Error('Invalid signature');\n }\n if (value.startsWith('SIG_')) {\n const parts = value.split('_');\n if (parts.length !== 3) {\n throw new Error('Invalid signature string');\n }\n const type = KeyType.from(parts[1]);\n const size = type === KeyType.K1 || type === KeyType.R1 ? 65 : undefined;\n const data = Base58.decodeRipemd160Check(parts[2], size, type);\n return new Signature(type, data);\n }\n else {\n throw new Error('Invalid signature string');\n }\n }\n /** @internal */\n static fromABI(decoder) {\n const type = KeyType.from(decoder.readByte());\n if (type === KeyType.WA) {\n const startPos = decoder.getPosition();\n decoder.advance(65); // compact_signature\n decoder.advance(decoder.readVaruint32()); // auth_data\n decoder.advance(decoder.readVaruint32()); // client_json\n const len = decoder.getPosition() - startPos;\n decoder.setPosition(startPos);\n const data = Bytes.from(decoder.readArray(len));\n return new Signature(KeyType.WA, data);\n }\n return new Signature(type, new Bytes(decoder.readArray(65)));\n }\n equals(other) {\n const otherSig = Signature.from(other);\n return this.type === otherSig.type && this.data.equals(otherSig.data);\n }\n /** Recover public key from given message digest. */\n recoverDigest(digest) {\n digest = Checksum256.from(digest);\n const compressed = recover(this.data.array, digest.array, this.type);\n return PublicKey.from({ compressed, type: this.type });\n }\n /** Recover public key from given message. */\n recoverMessage(message) {\n return this.recoverDigest(Checksum256.hash(message));\n }\n /** Verify this signature with given message digest and public key. */\n verifyDigest(digest, publicKey) {\n digest = Checksum256.from(digest);\n return verify(this.data.array, digest.array, publicKey.data.array, this.type);\n }\n /** Verify this signature with given message and public key. */\n verifyMessage(message, publicKey) {\n return this.verifyDigest(Checksum256.hash(message), publicKey);\n }\n /** Base58check encoded string representation of this signature (`SIG__`). */\n toString() {\n return `SIG_${this.type}_${Base58.encodeRipemd160Check(this.data, this.type)}`;\n }\n /** @internal */\n toABI(encoder) {\n encoder.writeByte(KeyType.indexFor(this.type));\n encoder.writeArray(this.data.array);\n }\n /** @internal */\n toJSON() {\n return this.toString();\n }\n}\nSignature.abiName = 'signature';\n\n/**\n * Get public key corresponding to given private key.\n * @internal\n */\nfunction getPublic(privkey, type) {\n const curve = getCurve(type);\n const key = curve.keyFromPrivate(privkey);\n const point = key.getPublic();\n return new Uint8Array(point.encodeCompressed());\n}\n\n/**\n * Derive shared secret for key pair.\n * @internal\n */\nfunction sharedSecret(privkey, pubkey, type) {\n const curve = getCurve(type);\n const priv = curve.keyFromPrivate(privkey);\n const pub = curve.keyFromPublic(pubkey).getPublic();\n return priv.derive(pub).toArrayLike(Uint8Array, 'be');\n}\n\n/**\n * Sign digest using private key.\n * @internal\n */\nfunction sign(secret, message, type) {\n const curve = getCurve(type);\n const key = curve.keyFromPrivate(secret);\n let sig;\n let r;\n let s;\n if (type === 'K1') {\n let attempt = 1;\n do {\n sig = key.sign(message, { canonical: true, pers: [attempt++] });\n r = sig.r.toArrayLike(Uint8Array, 'be', 32);\n s = sig.s.toArrayLike(Uint8Array, 'be', 32);\n } while (!isCanonical(r, s));\n }\n else {\n sig = key.sign(message, { canonical: true });\n r = sig.r.toArrayLike(Uint8Array, 'be', 32);\n s = sig.s.toArrayLike(Uint8Array, 'be', 32);\n }\n return { type, r, s, recid: sig.recoveryParam || 0 };\n}\n/**\n * Here be dragons\n * - https://github.com/steemit/steem/issues/1944\n * - https://github.com/EOSIO/eos/issues/6699\n * @internal\n */\nfunction isCanonical(r, s) {\n return (!(r[0] & 0x80) &&\n !(r[0] === 0 && !(r[1] & 0x80)) &&\n !(s[0] & 0x80) &&\n !(s[0] === 0 && !(s[1] & 0x80)));\n}\n\n/**\n * Generate a new private key for given type.\n * @internal\n */\nfunction generate(type) {\n const curve = getCurve(type);\n const privkey = curve.genKeyPair().getPrivate();\n return privkey.toArrayLike(Uint8Array, 'be');\n}\n\nclass PrivateKey {\n /** @internal */\n constructor(type, data) {\n this.type = type;\n this.data = data;\n }\n /** Create PrivateKey object from representing types. */\n static from(value) {\n if (isInstanceOf(value, PrivateKey)) {\n return value;\n }\n else {\n return this.fromString(value);\n }\n }\n /**\n * Create PrivateKey object from a string representation.\n * Accepts WIF (5...) and EOSIO (PVT_...) style private keys.\n */\n static fromString(string, ignoreChecksumError = false) {\n try {\n const { type, data } = decodeKey(string);\n return new this(type, data);\n }\n catch (error) {\n error.message = `Invalid private key (${error.message})`;\n if (ignoreChecksumError &&\n isInstanceOf(error, Base58.DecodingError) &&\n error.code === Base58.ErrorCode.E_CHECKSUM) {\n const type = string.startsWith('PVT_R1') ? KeyType.R1 : KeyType.K1;\n let data = new Bytes(error.info.data);\n if (data.array.length == 33) {\n data = data.droppingFirst();\n }\n return new this(type, data);\n }\n throw error;\n }\n }\n /**\n * Generate new PrivateKey.\n * @throws If a secure random source isn't available.\n */\n static generate(type) {\n return new PrivateKey(KeyType.from(type), new Bytes(generate(type)));\n }\n /**\n * Sign message digest using this key.\n * @throws If the key type isn't R1 or K1.\n */\n signDigest(digest) {\n digest = Checksum256.from(digest);\n return Signature.from(sign(this.data.array, digest.array, this.type));\n }\n /**\n * Sign message using this key.\n * @throws If the key type isn't R1 or K1.\n */\n signMessage(message) {\n return this.signDigest(Checksum256.hash(message));\n }\n /**\n * Derive the shared secret between this private key and given public key.\n * @throws If the key type isn't R1 or K1.\n */\n sharedSecret(publicKey) {\n const shared = sharedSecret(this.data.array, publicKey.data.array, this.type);\n return Checksum512.hash(shared);\n }\n /**\n * Get the corresponding public key.\n * @throws If the key type isn't R1 or K1.\n */\n toPublic() {\n const compressed = getPublic(this.data.array, this.type);\n return PublicKey.from({ compressed, type: this.type });\n }\n /**\n * Return WIF representation of this private key\n * @throws If the key type isn't K1.\n */\n toWif() {\n if (this.type !== KeyType.K1) {\n throw new Error('Unable to generate WIF for non-k1 key');\n }\n return Base58.encodeCheck(Bytes.from([0x80]).appending(this.data));\n }\n /**\n * Return the key in EOSIO PVT__ format.\n */\n toString() {\n return `PVT_${this.type}_${Base58.encodeRipemd160Check(this.data, this.type)}`;\n }\n toJSON() {\n return this.toString();\n }\n}\n/** @internal */\nfunction decodeKey(value) {\n const type = typeof value;\n if (type !== 'string') {\n throw new Error(`Expected string, got ${type}`);\n }\n if (value.startsWith('PVT_')) {\n // EOSIO format\n const parts = value.split('_');\n if (parts.length !== 3) {\n throw new Error('Invalid PVT format');\n }\n const type = KeyType.from(parts[1]);\n let size;\n switch (type) {\n case KeyType.K1:\n case KeyType.R1:\n size = 32;\n break;\n }\n const data = Base58.decodeRipemd160Check(parts[2], size, type);\n return { type, data };\n }\n else {\n // WIF format\n const type = KeyType.K1;\n const data = Base58.decodeCheck(value);\n if (data.array[0] !== 0x80) {\n throw new Error('Invalid WIF');\n }\n return { type, data: data.droppingFirst() };\n }\n}\n\nvar PermissionLevel_1;\n/** EOSIO Permission Level, a.k.a \"auth\". */\nlet PermissionLevel = PermissionLevel_1 = class PermissionLevel extends Struct {\n /** Create new permission level from representing types. Can be expressed as a string in the format `@`. */\n static from(value) {\n if (typeof value === 'string') {\n const parts = value.split('@');\n if (parts.length !== 2 && parts[0].length > 0 && parts[1].length > 0) {\n throw new Error('Invalid permission level string, should be in the format @');\n }\n value = { actor: parts[0], permission: parts[1] };\n }\n return super.from(value);\n }\n /** Return true if this permission level equals other. */\n equals(other) {\n const otherPerm = PermissionLevel_1.from(other);\n return this.actor.equals(otherPerm.actor) && this.permission.equals(otherPerm.permission);\n }\n toString() {\n return `${this.actor}@${this.permission}`;\n }\n};\n__decorate([\n Struct.field('name')\n], PermissionLevel.prototype, \"actor\", void 0);\n__decorate([\n Struct.field('name')\n], PermissionLevel.prototype, \"permission\", void 0);\nPermissionLevel = PermissionLevel_1 = __decorate([\n Struct.type('permission_level')\n], PermissionLevel);\n\nvar Action_1;\nlet Action = Action_1 = class Action extends Struct {\n static from(object, abi) {\n const data = object.data;\n if (!Bytes.isBytes(data)) {\n let type;\n if (abi) {\n type = ABI.from(abi).getActionType(object.name);\n }\n else if (!data.constructor || data.constructor.abiName === undefined) {\n throw new Error('Missing ABI definition when creating action with untyped action data');\n }\n object = {\n ...object,\n data: abiEncode({ object: data, type, abi }),\n };\n }\n return super.from(object);\n }\n /** Return true if this Action is equal to given action. */\n equals(other) {\n const otherAction = Action_1.from(other);\n return (this.account.equals(otherAction.account) &&\n this.name.equals(otherAction.name) &&\n arrayEquatableEquals(this.authorization, otherAction.authorization) &&\n this.data.equals(otherAction.data));\n }\n decodeData(typeOrAbi) {\n if (typeof typeOrAbi === 'string' || typeOrAbi.abiName) {\n return abiDecode({\n data: this.data,\n type: typeOrAbi,\n });\n }\n else {\n const abi = ABI.from(typeOrAbi);\n const type = abi.getActionType(this.name);\n if (!type) {\n throw new Error(`Action ${this.name} does not exist in provided ABI`);\n }\n return abiDecode({ data: this.data, type, abi });\n }\n }\n};\n__decorate([\n Struct.field('name')\n], Action.prototype, \"account\", void 0);\n__decorate([\n Struct.field('name')\n], Action.prototype, \"name\", void 0);\n__decorate([\n Struct.field(PermissionLevel, { array: true })\n], Action.prototype, \"authorization\", void 0);\n__decorate([\n Struct.field('bytes')\n], Action.prototype, \"data\", void 0);\nAction = Action_1 = __decorate([\n Struct.type('action')\n], Action);\n\nvar Transaction_1;\nlet TransactionExtension = class TransactionExtension extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], TransactionExtension.prototype, \"type\", void 0);\n__decorate([\n Struct.field('bytes')\n], TransactionExtension.prototype, \"data\", void 0);\nTransactionExtension = __decorate([\n Struct.type('transaction_extension')\n], TransactionExtension);\nlet TransactionHeader = class TransactionHeader extends Struct {\n static from(object) {\n return super.from(object);\n }\n};\n__decorate([\n Struct.field('time_point_sec')\n], TransactionHeader.prototype, \"expiration\", void 0);\n__decorate([\n Struct.field('uint16')\n], TransactionHeader.prototype, \"ref_block_num\", void 0);\n__decorate([\n Struct.field('uint32')\n], TransactionHeader.prototype, \"ref_block_prefix\", void 0);\n__decorate([\n Struct.field('varuint32', { default: 0 })\n], TransactionHeader.prototype, \"max_net_usage_words\", void 0);\n__decorate([\n Struct.field('uint8', { default: 0 })\n], TransactionHeader.prototype, \"max_cpu_usage_ms\", void 0);\n__decorate([\n Struct.field('varuint32', { default: 0 })\n], TransactionHeader.prototype, \"delay_sec\", void 0);\nTransactionHeader = __decorate([\n Struct.type('transaction_header')\n], TransactionHeader);\nlet Transaction = Transaction_1 = class Transaction extends TransactionHeader {\n static from(object, abis) {\n const abiFor = (contract) => {\n if (!abis) {\n return;\n }\n else if (Array.isArray(abis)) {\n return abis\n .filter((abi) => Name.from(abi.contract).equals(contract))\n .map(({ abi }) => abi)[0];\n }\n else {\n return abis;\n }\n };\n const resolveAction = (action) => Action.from(action, abiFor(action.account));\n const actions = (object.actions || []).map(resolveAction);\n const context_free_actions = (object.context_free_actions || []).map(resolveAction);\n const transaction = {\n ...object,\n context_free_actions,\n actions,\n };\n return super.from(transaction);\n }\n /** Return true if this transaction is equal to given transaction. */\n equals(other) {\n const tx = Transaction_1.from(other);\n return this.id.equals(tx.id);\n }\n get id() {\n return Checksum256.hash(abiEncode({ object: this }));\n }\n signingDigest(chainId) {\n let data = Bytes.from(Checksum256.from(chainId).array);\n data = data.appending(abiEncode({ object: this }));\n data = data.appending(new Uint8Array(32));\n return Checksum256.hash(data);\n }\n};\n__decorate([\n Struct.field(Action, { array: true, default: [] })\n], Transaction.prototype, \"context_free_actions\", void 0);\n__decorate([\n Struct.field(Action, { array: true, default: [] })\n], Transaction.prototype, \"actions\", void 0);\n__decorate([\n Struct.field(TransactionExtension, { array: true, default: [] })\n], Transaction.prototype, \"transaction_extensions\", void 0);\nTransaction = Transaction_1 = __decorate([\n Struct.type('transaction')\n], Transaction);\nlet SignedTransaction = class SignedTransaction extends Transaction {\n static from(object) {\n return super.from(object);\n }\n};\n__decorate([\n Struct.field('signature[]', { default: [] })\n], SignedTransaction.prototype, \"signatures\", void 0);\n__decorate([\n Struct.field('bytes[]', { default: [] })\n], SignedTransaction.prototype, \"context_free_data\", void 0);\nSignedTransaction = __decorate([\n Struct.type('signed_transaction')\n], SignedTransaction);\nlet PackedTransaction = class PackedTransaction extends Struct {\n static fromSigned(signed) {\n const tx = Transaction.from(signed);\n return this.from({\n signatures: signed.signatures,\n packed_context_free_data: abiEncode({\n object: signed.context_free_data,\n type: 'bytes[]',\n }),\n packed_trx: abiEncode({ object: tx }),\n });\n }\n getTransaction() {\n if (Number(this.compression) !== 0) {\n throw new Error('Transaction compression not supported yet');\n }\n return abiDecode({ data: this.packed_trx, type: Transaction });\n }\n getSignedTransaction() {\n const transaction = this.getTransaction();\n // TODO: decode context free data\n return SignedTransaction.from({\n ...transaction,\n signatures: this.signatures,\n });\n }\n};\n__decorate([\n Struct.field('signature[]')\n], PackedTransaction.prototype, \"signatures\", void 0);\n__decorate([\n Struct.field('uint8', { default: 0 })\n], PackedTransaction.prototype, \"compression\", void 0);\n__decorate([\n Struct.field('bytes')\n], PackedTransaction.prototype, \"packed_context_free_data\", void 0);\n__decorate([\n Struct.field('bytes')\n], PackedTransaction.prototype, \"packed_trx\", void 0);\nPackedTransaction = __decorate([\n Struct.type('packed_transaction')\n], PackedTransaction);\nlet TransactionReceipt = class TransactionReceipt extends Struct {\n};\n__decorate([\n Struct.field('string')\n], TransactionReceipt.prototype, \"status\", void 0);\n__decorate([\n Struct.field('uint32')\n], TransactionReceipt.prototype, \"cpu_usage_us\", void 0);\n__decorate([\n Struct.field('uint32')\n], TransactionReceipt.prototype, \"net_usage_words\", void 0);\nTransactionReceipt = __decorate([\n Struct.type('transaction_receipt')\n], TransactionReceipt);\n\nvar Authority_1;\nlet Weight = class Weight extends UInt16 {\n};\nWeight = __decorate([\n TypeAlias('weight_type')\n], Weight);\nlet KeyWeight = class KeyWeight extends Struct {\n};\n__decorate([\n Struct.field(PublicKey)\n], KeyWeight.prototype, \"key\", void 0);\n__decorate([\n Struct.field(Weight)\n], KeyWeight.prototype, \"weight\", void 0);\nKeyWeight = __decorate([\n Struct.type('key_weight')\n], KeyWeight);\nlet PermissionLevelWeight = class PermissionLevelWeight extends Struct {\n};\n__decorate([\n Struct.field(PermissionLevel)\n], PermissionLevelWeight.prototype, \"permission\", void 0);\n__decorate([\n Struct.field(Weight)\n], PermissionLevelWeight.prototype, \"weight\", void 0);\nPermissionLevelWeight = __decorate([\n Struct.type('permission_level_weight')\n], PermissionLevelWeight);\nlet WaitWeight = class WaitWeight extends Struct {\n};\n__decorate([\n Struct.field(UInt32)\n], WaitWeight.prototype, \"wait_sec\", void 0);\n__decorate([\n Struct.field(Weight)\n], WaitWeight.prototype, \"weight\", void 0);\nWaitWeight = __decorate([\n Struct.type('wait_weight')\n], WaitWeight);\nlet Authority = Authority_1 = class Authority extends Struct {\n static from(value) {\n if (isInstanceOf(value, Authority_1)) {\n return value;\n }\n const rv = super.from({\n keys: [],\n accounts: [],\n waits: [],\n ...value,\n });\n rv.sort();\n return rv;\n }\n /** Total weight of all waits. */\n get waitThreshold() {\n return this.waits.reduce((val, wait) => val + wait.weight.toNumber(), 0);\n }\n /** Weight a key needs to sign for this authority. */\n get keyThreshold() {\n return this.threshold.toNumber() - this.waitThreshold;\n }\n /** Return the weight for given public key, or zero if it is not included in this authority. */\n keyWeight(publicKey) {\n const weight = this.keys.find(({ key }) => key.equals(publicKey));\n return weight ? weight.weight.toNumber() : 0;\n }\n /**\n * Check if given public key has permission in this authority,\n * @attention Does not take indirect permissions for the key via account weights into account.\n * @param publicKey The key to check.\n * @param includePartial Whether to consider auths where the key is included but can't be reached alone (e.g. multisig).\n */\n hasPermission(publicKey, includePartial = false) {\n const threshold = includePartial ? 1 : this.keyThreshold;\n const weight = this.keyWeight(publicKey);\n return weight >= threshold;\n }\n /**\n * Sorts the authority weights in place, should be called before including the authority in a `updateauth` action or it might be rejected.\n */\n sort() {\n // This hack satisfies the constraints that authority weights, see: https://github.com/greymass/eosio-core/issues/8\n this.keys.sort((a, b) => String(a.key).localeCompare(String(b.key)));\n this.accounts.sort((a, b) => String(a.permission).localeCompare(String(b.permission)));\n this.waits.sort((a, b) => String(a.wait_sec).localeCompare(String(b.wait_sec)));\n }\n};\n__decorate([\n Struct.field(UInt32)\n], Authority.prototype, \"threshold\", void 0);\n__decorate([\n Struct.field(KeyWeight, { array: true })\n], Authority.prototype, \"keys\", void 0);\n__decorate([\n Struct.field(PermissionLevelWeight, { array: true })\n], Authority.prototype, \"accounts\", void 0);\n__decorate([\n Struct.field(WaitWeight, { array: true })\n], Authority.prototype, \"waits\", void 0);\nAuthority = Authority_1 = __decorate([\n Struct.type('authority')\n], Authority);\n\nvar Serializer;\n(function (Serializer) {\n Serializer.encode = abiEncode;\n Serializer.decode = abiDecode;\n /** Create an EOSIO ABI definition for given core type. */\n function synthesize(type) {\n return synthesizeABI(type).abi;\n }\n Serializer.synthesize = synthesize;\n /** Create JSON representation of a core object. */\n function stringify(object) {\n return JSON.stringify(object);\n }\n Serializer.stringify = stringify;\n /** Create a vanilla js representation of a core object. */\n function objectify(object) {\n const walk = (v) => {\n switch (typeof v) {\n case 'boolean':\n case 'number':\n case 'string':\n return v;\n case 'object': {\n if (v === null) {\n return v;\n }\n if (typeof v.toJSON === 'function') {\n return walk(v.toJSON());\n }\n if (Array.isArray(v)) {\n return v.map(walk);\n }\n const rv = {};\n for (const key of Object.keys(v)) {\n rv[key] = walk(v[key]);\n }\n return rv;\n }\n }\n };\n return walk(object);\n }\n Serializer.objectify = objectify;\n})(Serializer || (Serializer = {}));\n\n/** Default provider that uses the Fetch API to call a single node. */\nclass FetchProvider {\n constructor(url, options = {}) {\n url = url.trim();\n if (url.endsWith('/'))\n url = url.slice(0, -1);\n this.url = url;\n if (!options.fetch) {\n if (typeof window !== 'undefined' && window.fetch) {\n this.fetch = window.fetch.bind(window);\n }\n else if (typeof global !== 'undefined' && global.fetch) {\n this.fetch = global.fetch.bind(global);\n }\n else {\n throw new Error('Missing fetch');\n }\n }\n else {\n this.fetch = options.fetch;\n }\n }\n async call(path, params) {\n const url = this.url + path;\n const response = await this.fetch(url, {\n method: 'POST',\n body: params !== undefined ? JSON.stringify(params) : undefined,\n });\n const text = await response.text();\n let json;\n try {\n json = JSON.parse(text);\n }\n catch {\n // ignore json parse errors\n }\n const headers = {};\n for (const [key, value] of response.headers.entries()) {\n headers[key] = value;\n }\n return { headers, status: response.status, json, text };\n }\n}\n\nlet AccountPermission = class AccountPermission extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountPermission.prototype, \"perm_name\", void 0);\n__decorate([\n Struct.field('name')\n], AccountPermission.prototype, \"parent\", void 0);\n__decorate([\n Struct.field(Authority)\n], AccountPermission.prototype, \"required_auth\", void 0);\nAccountPermission = __decorate([\n Struct.type('account_permission')\n], AccountPermission);\nlet AccountResourceLimit = class AccountResourceLimit extends Struct {\n};\n__decorate([\n Struct.field('int64')\n], AccountResourceLimit.prototype, \"used\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountResourceLimit.prototype, \"available\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountResourceLimit.prototype, \"max\", void 0);\nAccountResourceLimit = __decorate([\n Struct.type('account_resource_limit')\n], AccountResourceLimit);\nlet AccountTotalResources = class AccountTotalResources extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountTotalResources.prototype, \"owner\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountTotalResources.prototype, \"net_weight\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountTotalResources.prototype, \"cpu_weight\", void 0);\n__decorate([\n Struct.field('uint64')\n], AccountTotalResources.prototype, \"ram_bytes\", void 0);\nAccountTotalResources = __decorate([\n Struct.type('account_total_resources')\n], AccountTotalResources);\nlet AccountSelfDelegatedBandwidth = class AccountSelfDelegatedBandwidth extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountSelfDelegatedBandwidth.prototype, \"from\", void 0);\n__decorate([\n Struct.field('name')\n], AccountSelfDelegatedBandwidth.prototype, \"to\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountSelfDelegatedBandwidth.prototype, \"net_weight\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountSelfDelegatedBandwidth.prototype, \"cpu_weight\", void 0);\nAccountSelfDelegatedBandwidth = __decorate([\n Struct.type('account_self_delegated_bandwidth')\n], AccountSelfDelegatedBandwidth);\nlet AccountRefundRequest = class AccountRefundRequest extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountRefundRequest.prototype, \"owner\", void 0);\n__decorate([\n Struct.field('time_point')\n], AccountRefundRequest.prototype, \"request_time\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountRefundRequest.prototype, \"net_amount\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountRefundRequest.prototype, \"cpu_amount\", void 0);\nAccountRefundRequest = __decorate([\n Struct.type('account_refund_request')\n], AccountRefundRequest);\nlet AccountVoterInfo = class AccountVoterInfo extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountVoterInfo.prototype, \"owner\", void 0);\n__decorate([\n Struct.field('name')\n], AccountVoterInfo.prototype, \"proxy\", void 0);\n__decorate([\n Struct.field('name', { array: true })\n], AccountVoterInfo.prototype, \"producers\", void 0);\n__decorate([\n Struct.field('int64', { optional: true })\n], AccountVoterInfo.prototype, \"staked\", void 0);\n__decorate([\n Struct.field('bool')\n], AccountVoterInfo.prototype, \"is_proxy\", void 0);\n__decorate([\n Struct.field('uint32', { optional: true })\n], AccountVoterInfo.prototype, \"flags1\", void 0);\n__decorate([\n Struct.field('uint32')\n], AccountVoterInfo.prototype, \"reserved2\", void 0);\n__decorate([\n Struct.field('string')\n], AccountVoterInfo.prototype, \"reserved3\", void 0);\nAccountVoterInfo = __decorate([\n Struct.type('account_voter_info')\n], AccountVoterInfo);\nlet AccountRexInfoMaturities = class AccountRexInfoMaturities extends Struct {\n};\n__decorate([\n Struct.field('time_point', { optional: true })\n], AccountRexInfoMaturities.prototype, \"key\", void 0);\n__decorate([\n Struct.field('int64', { optional: true })\n], AccountRexInfoMaturities.prototype, \"value\", void 0);\n__decorate([\n Struct.field('time_point', { optional: true })\n], AccountRexInfoMaturities.prototype, \"first\", void 0);\n__decorate([\n Struct.field('int64', { optional: true })\n], AccountRexInfoMaturities.prototype, \"second\", void 0);\nAccountRexInfoMaturities = __decorate([\n Struct.type('account_rex_info_maturities')\n], AccountRexInfoMaturities);\nlet AccountRexInfo = class AccountRexInfo extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], AccountRexInfo.prototype, \"version\", void 0);\n__decorate([\n Struct.field('name')\n], AccountRexInfo.prototype, \"owner\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountRexInfo.prototype, \"vote_stake\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountRexInfo.prototype, \"rex_balance\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountRexInfo.prototype, \"matured_rex\", void 0);\n__decorate([\n Struct.field(AccountRexInfoMaturities, { array: true })\n], AccountRexInfo.prototype, \"rex_maturities\", void 0);\nAccountRexInfo = __decorate([\n Struct.type('account_rex_info')\n], AccountRexInfo);\nlet AccountObject = class AccountObject extends Struct {\n getPermission(permission) {\n const name = Name.from(permission);\n const match = this.permissions.find((p) => p.perm_name.equals(name));\n if (!match) {\n throw new Error(`Unknown permission ${name} on account ${this.account_name}.`);\n }\n return match;\n }\n};\n__decorate([\n Struct.field('name')\n], AccountObject.prototype, \"account_name\", void 0);\n__decorate([\n Struct.field('uint32')\n], AccountObject.prototype, \"head_block_num\", void 0);\n__decorate([\n Struct.field('time_point')\n], AccountObject.prototype, \"head_block_time\", void 0);\n__decorate([\n Struct.field('bool')\n], AccountObject.prototype, \"privileged\", void 0);\n__decorate([\n Struct.field('time_point')\n], AccountObject.prototype, \"last_code_update\", void 0);\n__decorate([\n Struct.field('time_point')\n], AccountObject.prototype, \"created\", void 0);\n__decorate([\n Struct.field('asset?')\n], AccountObject.prototype, \"core_liquid_balance\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountObject.prototype, \"ram_quota\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountObject.prototype, \"net_weight\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountObject.prototype, \"cpu_weight\", void 0);\n__decorate([\n Struct.field(AccountResourceLimit)\n], AccountObject.prototype, \"net_limit\", void 0);\n__decorate([\n Struct.field(AccountResourceLimit)\n], AccountObject.prototype, \"cpu_limit\", void 0);\n__decorate([\n Struct.field('uint64')\n], AccountObject.prototype, \"ram_usage\", void 0);\n__decorate([\n Struct.field(AccountPermission, { array: true })\n], AccountObject.prototype, \"permissions\", void 0);\n__decorate([\n Struct.field(AccountTotalResources)\n], AccountObject.prototype, \"total_resources\", void 0);\n__decorate([\n Struct.field(AccountSelfDelegatedBandwidth, { optional: true })\n], AccountObject.prototype, \"self_delegated_bandwidth\", void 0);\n__decorate([\n Struct.field(AccountRefundRequest, { optional: true })\n], AccountObject.prototype, \"refund_request\", void 0);\n__decorate([\n Struct.field(AccountVoterInfo, { optional: true })\n], AccountObject.prototype, \"voter_info\", void 0);\n__decorate([\n Struct.field(AccountRexInfo, { optional: true })\n], AccountObject.prototype, \"rex_info\", void 0);\nAccountObject = __decorate([\n Struct.type('account_object')\n], AccountObject);\nlet NewProducersEntry = class NewProducersEntry extends Struct {\n};\n__decorate([\n Struct.field('name')\n], NewProducersEntry.prototype, \"producer_name\", void 0);\n__decorate([\n Struct.field('public_key')\n], NewProducersEntry.prototype, \"block_signing_key\", void 0);\nNewProducersEntry = __decorate([\n Struct.type('new_producers_entry')\n], NewProducersEntry);\nlet NewProducers = class NewProducers extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], NewProducers.prototype, \"version\", void 0);\n__decorate([\n Struct.field(NewProducersEntry, { array: true })\n], NewProducers.prototype, \"producers\", void 0);\nNewProducers = __decorate([\n Struct.type('new_producers')\n], NewProducers);\nlet BlockExtension = class BlockExtension extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], BlockExtension.prototype, \"type\", void 0);\n__decorate([\n Struct.field('bytes')\n], BlockExtension.prototype, \"data\", void 0);\nBlockExtension = __decorate([\n Struct.type('block_extension')\n], BlockExtension);\nlet HeaderExtension = class HeaderExtension extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], HeaderExtension.prototype, \"type\", void 0);\n__decorate([\n Struct.field('bytes')\n], HeaderExtension.prototype, \"data\", void 0);\nHeaderExtension = __decorate([\n Struct.type('header_extension')\n], HeaderExtension);\n// fc \"mutable variant\" returned by get_block api\nclass TrxVariant {\n constructor(id, extra) {\n this.id = id;\n this.extra = extra;\n }\n static from(data) {\n let id;\n let extra;\n if (typeof data === 'string') {\n id = Checksum256.from(data);\n extra = {};\n }\n else {\n id = Checksum256.from(data.id);\n extra = data;\n }\n return new this(id, extra);\n }\n get transaction() {\n if (this.extra.packed_trx) {\n return Serializer.decode({ data: this.extra.packed_trx, type: Transaction });\n }\n }\n get signatures() {\n if (this.extra.signatures) {\n return this.extra.signatures.map(Signature.from);\n }\n }\n equals(other) {\n return this.id.equals(other.id);\n }\n toJSON() {\n return this.id;\n }\n}\nTrxVariant.abiName = 'trx_variant';\nlet GetBlockResponseTransactionReceipt = class GetBlockResponseTransactionReceipt extends TransactionReceipt {\n get id() {\n return this.trx.id;\n }\n};\n__decorate([\n Struct.field(TrxVariant)\n], GetBlockResponseTransactionReceipt.prototype, \"trx\", void 0);\nGetBlockResponseTransactionReceipt = __decorate([\n Struct.type('get_block_response_receipt')\n], GetBlockResponseTransactionReceipt);\nlet GetBlockResponse = class GetBlockResponse extends Struct {\n};\n__decorate([\n Struct.field('time_point')\n], GetBlockResponse.prototype, \"timestamp\", void 0);\n__decorate([\n Struct.field('name')\n], GetBlockResponse.prototype, \"producer\", void 0);\n__decorate([\n Struct.field('uint16')\n], GetBlockResponse.prototype, \"confirmed\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetBlockResponse.prototype, \"previous\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetBlockResponse.prototype, \"transaction_mroot\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetBlockResponse.prototype, \"action_mroot\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockResponse.prototype, \"schedule_version\", void 0);\n__decorate([\n Struct.field(NewProducers, { optional: true })\n], GetBlockResponse.prototype, \"new_producers\", void 0);\n__decorate([\n Struct.field('header_extension', { optional: true })\n], GetBlockResponse.prototype, \"header_extensions\", void 0);\n__decorate([\n Struct.field('any', { optional: true })\n], GetBlockResponse.prototype, \"new_protocol_features\", void 0);\n__decorate([\n Struct.field('signature')\n], GetBlockResponse.prototype, \"producer_signature\", void 0);\n__decorate([\n Struct.field(GetBlockResponseTransactionReceipt, { array: true })\n], GetBlockResponse.prototype, \"transactions\", void 0);\n__decorate([\n Struct.field('block_extension', { optional: true })\n], GetBlockResponse.prototype, \"block_extensions\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetBlockResponse.prototype, \"id\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockResponse.prototype, \"block_num\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockResponse.prototype, \"ref_block_prefix\", void 0);\nGetBlockResponse = __decorate([\n Struct.type('get_block_response')\n], GetBlockResponse);\nlet ActiveScheduleProducerAuthority = class ActiveScheduleProducerAuthority extends Struct {\n};\n__decorate([\n Struct.field('name')\n], ActiveScheduleProducerAuthority.prototype, \"producer_name\", void 0);\n__decorate([\n Struct.field('any')\n], ActiveScheduleProducerAuthority.prototype, \"authority\", void 0);\nActiveScheduleProducerAuthority = __decorate([\n Struct.type('active_schedule_producer_authority')\n], ActiveScheduleProducerAuthority);\nlet ActiveScheduleProducer = class ActiveScheduleProducer extends Struct {\n};\n__decorate([\n Struct.field('name')\n], ActiveScheduleProducer.prototype, \"producer_name\", void 0);\n__decorate([\n Struct.field(ActiveScheduleProducerAuthority)\n], ActiveScheduleProducer.prototype, \"authority\", void 0);\nActiveScheduleProducer = __decorate([\n Struct.type('active_schedule_producer')\n], ActiveScheduleProducer);\nlet ActiveSchedule = class ActiveSchedule extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], ActiveSchedule.prototype, \"version\", void 0);\n__decorate([\n Struct.field(ActiveScheduleProducer, { array: true })\n], ActiveSchedule.prototype, \"producers\", void 0);\nActiveSchedule = __decorate([\n Struct.type('active_schedule')\n], ActiveSchedule);\nlet BlockStateHeader = class BlockStateHeader extends Struct {\n};\n__decorate([\n Struct.field('time_point')\n], BlockStateHeader.prototype, \"timestamp\", void 0);\n__decorate([\n Struct.field('name')\n], BlockStateHeader.prototype, \"producer\", void 0);\n__decorate([\n Struct.field('uint16')\n], BlockStateHeader.prototype, \"confirmed\", void 0);\n__decorate([\n Struct.field('checksum256')\n], BlockStateHeader.prototype, \"previous\", void 0);\n__decorate([\n Struct.field('checksum256')\n], BlockStateHeader.prototype, \"transaction_mroot\", void 0);\n__decorate([\n Struct.field('checksum256')\n], BlockStateHeader.prototype, \"action_mroot\", void 0);\n__decorate([\n Struct.field('uint32')\n], BlockStateHeader.prototype, \"schedule_version\", void 0);\n__decorate([\n Struct.field(HeaderExtension, { array: true, optional: true })\n], BlockStateHeader.prototype, \"header_extensions\", void 0);\n__decorate([\n Struct.field('signature')\n], BlockStateHeader.prototype, \"producer_signature\", void 0);\nBlockStateHeader = __decorate([\n Struct.type('block_state_header')\n], BlockStateHeader);\nlet GetBlockHeaderStateResponse = class GetBlockHeaderStateResponse extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], GetBlockHeaderStateResponse.prototype, \"block_num\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockHeaderStateResponse.prototype, \"dpos_proposed_irreversible_blocknum\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockHeaderStateResponse.prototype, \"dpos_irreversible_blocknum\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetBlockHeaderStateResponse.prototype, \"id\", void 0);\n__decorate([\n Struct.field(BlockStateHeader)\n], GetBlockHeaderStateResponse.prototype, \"header\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"active_schedule\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"blockroot_merkle\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"producer_to_last_produced\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"producer_to_last_implied_irb\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"valid_block_signing_authority\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"confirm_count\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"pending_schedule\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"activated_protocol_features\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"additional_signatures\", void 0);\nGetBlockHeaderStateResponse = __decorate([\n Struct.type('get_block_header_state_response')\n], GetBlockHeaderStateResponse);\nlet GetInfoResponse = class GetInfoResponse extends Struct {\n getTransactionHeader(secondsAhead = 120) {\n const expiration = TimePointSec.fromMilliseconds(this.head_block_time.toMilliseconds() + secondsAhead * 1000);\n const id = this.last_irreversible_block_id;\n const prefixArray = id.array.subarray(8, 12);\n const prefix = new Uint32Array(prefixArray.buffer, prefixArray.byteOffset, 1)[0];\n return TransactionHeader.from({\n expiration,\n ref_block_num: Number(this.last_irreversible_block_num) & 0xffff,\n ref_block_prefix: prefix,\n });\n }\n};\n__decorate([\n Struct.field('string')\n], GetInfoResponse.prototype, \"server_version\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetInfoResponse.prototype, \"chain_id\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetInfoResponse.prototype, \"head_block_num\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetInfoResponse.prototype, \"last_irreversible_block_num\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetInfoResponse.prototype, \"last_irreversible_block_id\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetInfoResponse.prototype, \"head_block_id\", void 0);\n__decorate([\n Struct.field('time_point')\n], GetInfoResponse.prototype, \"head_block_time\", void 0);\n__decorate([\n Struct.field('name')\n], GetInfoResponse.prototype, \"head_block_producer\", void 0);\n__decorate([\n Struct.field('uint64')\n], GetInfoResponse.prototype, \"virtual_block_cpu_limit\", void 0);\n__decorate([\n Struct.field('uint64')\n], GetInfoResponse.prototype, \"virtual_block_net_limit\", void 0);\n__decorate([\n Struct.field('uint64')\n], GetInfoResponse.prototype, \"block_cpu_limit\", void 0);\n__decorate([\n Struct.field('uint64')\n], GetInfoResponse.prototype, \"block_net_limit\", void 0);\n__decorate([\n Struct.field('string?')\n], GetInfoResponse.prototype, \"server_version_string\", void 0);\n__decorate([\n Struct.field('uint32?')\n], GetInfoResponse.prototype, \"fork_db_head_block_num\", void 0);\n__decorate([\n Struct.field('checksum256?')\n], GetInfoResponse.prototype, \"fork_db_head_block_id\", void 0);\nGetInfoResponse = __decorate([\n Struct.type('get_info_response')\n], GetInfoResponse);\nlet GetTableByScopeResponseRow = class GetTableByScopeResponseRow extends Struct {\n};\n__decorate([\n Struct.field('name')\n], GetTableByScopeResponseRow.prototype, \"code\", void 0);\n__decorate([\n Struct.field('name')\n], GetTableByScopeResponseRow.prototype, \"scope\", void 0);\n__decorate([\n Struct.field('name')\n], GetTableByScopeResponseRow.prototype, \"table\", void 0);\n__decorate([\n Struct.field('name')\n], GetTableByScopeResponseRow.prototype, \"payer\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetTableByScopeResponseRow.prototype, \"count\", void 0);\nGetTableByScopeResponseRow = __decorate([\n Struct.type('get_table_by_scope_response_row')\n], GetTableByScopeResponseRow);\nlet GetTableByScopeResponse = class GetTableByScopeResponse extends Struct {\n};\n__decorate([\n Struct.field(GetTableByScopeResponseRow, { array: true })\n], GetTableByScopeResponse.prototype, \"rows\", void 0);\n__decorate([\n Struct.field('string')\n], GetTableByScopeResponse.prototype, \"more\", void 0);\nGetTableByScopeResponse = __decorate([\n Struct.type('get_table_by_scope_response')\n], GetTableByScopeResponse);\nlet OrderedActionsResult = class OrderedActionsResult extends Struct {\n};\n__decorate([\n Struct.field(UInt64)\n], OrderedActionsResult.prototype, \"global_action_seq\", void 0);\n__decorate([\n Struct.field(Int64)\n], OrderedActionsResult.prototype, \"account_action_seq\", void 0);\n__decorate([\n Struct.field(UInt32)\n], OrderedActionsResult.prototype, \"block_num\", void 0);\n__decorate([\n Struct.field(BlockTimestamp)\n], OrderedActionsResult.prototype, \"block_time\", void 0);\n__decorate([\n Struct.field('any')\n], OrderedActionsResult.prototype, \"action_trace\", void 0);\n__decorate([\n Struct.field('boolean?')\n], OrderedActionsResult.prototype, \"irrevirsible\", void 0);\nOrderedActionsResult = __decorate([\n Struct.type('ordered_action_result')\n], OrderedActionsResult);\nlet GetActionsResponse = class GetActionsResponse extends Struct {\n};\n__decorate([\n Struct.field(OrderedActionsResult, { array: true })\n], GetActionsResponse.prototype, \"actions\", void 0);\n__decorate([\n Struct.field(Int32)\n], GetActionsResponse.prototype, \"last_irreversible_block\", void 0);\n__decorate([\n Struct.field(Int32)\n], GetActionsResponse.prototype, \"head_block_num\", void 0);\n__decorate([\n Struct.field('boolean?')\n], GetActionsResponse.prototype, \"time_limit_exceeded_error\", void 0);\nGetActionsResponse = __decorate([\n Struct.type('get_actions_response')\n], GetActionsResponse);\nlet TransactionTrace = class TransactionTrace extends Struct {\n};\nTransactionTrace = __decorate([\n Struct.type('transaction_trace')\n], TransactionTrace);\nlet Trx = class Trx extends Struct {\n};\n__decorate([\n Struct.field('any')\n], Trx.prototype, \"actions\", void 0);\n__decorate([\n Struct.field('any')\n], Trx.prototype, \"context_free_actions\", void 0);\n__decorate([\n Struct.field('any')\n], Trx.prototype, \"context_free_data\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"delay_sec\", void 0);\n__decorate([\n Struct.field('string')\n], Trx.prototype, \"expiration\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"max_cpu_usage_ms\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"max_net_usage_words\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"ref_block_num\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"ref_block_prefix\", void 0);\n__decorate([\n Struct.field('string', { array: true })\n], Trx.prototype, \"signatures\", void 0);\nTrx = __decorate([\n Struct.type('trx')\n], Trx);\nlet TransactionInfo = class TransactionInfo extends Struct {\n};\n__decorate([\n Struct.field(TransactionReceipt)\n], TransactionInfo.prototype, \"receipt\", void 0);\n__decorate([\n Struct.field('trx')\n], TransactionInfo.prototype, \"trx\", void 0);\nTransactionInfo = __decorate([\n Struct.type('transaction_info')\n], TransactionInfo);\nlet GetTransactionResponse = class GetTransactionResponse extends Struct {\n};\n__decorate([\n Struct.field(Checksum256)\n], GetTransactionResponse.prototype, \"id\", void 0);\n__decorate([\n Struct.field(UInt32)\n], GetTransactionResponse.prototype, \"block_num\", void 0);\n__decorate([\n Struct.field(BlockTimestamp)\n], GetTransactionResponse.prototype, \"block_time\", void 0);\n__decorate([\n Struct.field(UInt32)\n], GetTransactionResponse.prototype, \"last_irreversible_block\", void 0);\n__decorate([\n Struct.field('any?')\n], GetTransactionResponse.prototype, \"traces\", void 0);\n__decorate([\n Struct.field('any')\n], GetTransactionResponse.prototype, \"trx\", void 0);\nGetTransactionResponse = __decorate([\n Struct.type('get_transaction_response')\n], GetTransactionResponse);\nlet GetKeyAccountsResponse = class GetKeyAccountsResponse extends Struct {\n};\n__decorate([\n Struct.field('name', { array: true })\n], GetKeyAccountsResponse.prototype, \"account_names\", void 0);\nGetKeyAccountsResponse = __decorate([\n Struct.type('get_key_accounts_response')\n], GetKeyAccountsResponse);\nlet GetControlledAccountsResponse = class GetControlledAccountsResponse extends Struct {\n};\n__decorate([\n Struct.field('name', { array: true })\n], GetControlledAccountsResponse.prototype, \"controlled_accounts\", void 0);\nGetControlledAccountsResponse = __decorate([\n Struct.type('get_controlled_accounts_response')\n], GetControlledAccountsResponse);\n\nvar types$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get AccountPermission () { return AccountPermission; },\n get AccountResourceLimit () { return AccountResourceLimit; },\n get AccountTotalResources () { return AccountTotalResources; },\n get AccountSelfDelegatedBandwidth () { return AccountSelfDelegatedBandwidth; },\n get AccountRefundRequest () { return AccountRefundRequest; },\n get AccountVoterInfo () { return AccountVoterInfo; },\n get AccountRexInfoMaturities () { return AccountRexInfoMaturities; },\n get AccountRexInfo () { return AccountRexInfo; },\n get AccountObject () { return AccountObject; },\n get NewProducersEntry () { return NewProducersEntry; },\n get NewProducers () { return NewProducers; },\n get BlockExtension () { return BlockExtension; },\n get HeaderExtension () { return HeaderExtension; },\n TrxVariant: TrxVariant,\n get GetBlockResponseTransactionReceipt () { return GetBlockResponseTransactionReceipt; },\n get GetBlockResponse () { return GetBlockResponse; },\n get ActiveScheduleProducerAuthority () { return ActiveScheduleProducerAuthority; },\n get ActiveScheduleProducer () { return ActiveScheduleProducer; },\n get ActiveSchedule () { return ActiveSchedule; },\n get BlockStateHeader () { return BlockStateHeader; },\n get GetBlockHeaderStateResponse () { return GetBlockHeaderStateResponse; },\n get GetInfoResponse () { return GetInfoResponse; },\n get GetTableByScopeResponseRow () { return GetTableByScopeResponseRow; },\n get GetTableByScopeResponse () { return GetTableByScopeResponse; },\n get OrderedActionsResult () { return OrderedActionsResult; },\n get GetActionsResponse () { return GetActionsResponse; },\n get TransactionTrace () { return TransactionTrace; },\n get Trx () { return Trx; },\n get TransactionInfo () { return TransactionInfo; },\n get GetTransactionResponse () { return GetTransactionResponse; },\n get GetKeyAccountsResponse () { return GetKeyAccountsResponse; },\n get GetControlledAccountsResponse () { return GetControlledAccountsResponse; }\n});\n\nclass ChainAPI {\n constructor(client) {\n this.client = client;\n }\n async get_abi(accountName) {\n return this.client.call({\n path: '/v1/chain/get_abi',\n params: { account_name: Name.from(accountName) },\n });\n }\n async get_account(accountName) {\n return this.client.call({\n path: '/v1/chain/get_account',\n params: { account_name: Name.from(accountName) },\n responseType: AccountObject,\n });\n }\n async get_block(block_num_or_id) {\n return this.client.call({\n path: '/v1/chain/get_block',\n params: { block_num_or_id },\n responseType: GetBlockResponse,\n });\n }\n async get_block_header_state(block_num_or_id) {\n return this.client.call({\n path: '/v1/chain/get_block_header_state',\n params: { block_num_or_id },\n responseType: GetBlockHeaderStateResponse,\n });\n }\n async get_currency_balance(contract, accountName, symbol) {\n const params = {\n account: Name.from(accountName),\n code: Name.from(contract),\n };\n if (symbol) {\n params.symbol = symbol;\n }\n return this.client.call({\n path: '/v1/chain/get_currency_balance',\n params,\n responseType: 'asset[]',\n });\n }\n async get_info() {\n return this.client.call({\n path: '/v1/chain/get_info',\n responseType: GetInfoResponse,\n });\n }\n async push_transaction(tx) {\n if (!isInstanceOf(tx, PackedTransaction)) {\n tx = PackedTransaction.fromSigned(SignedTransaction.from(tx));\n }\n return this.client.call({\n path: '/v1/chain/push_transaction',\n params: tx,\n });\n }\n async get_table_rows(params) {\n const type = params.type;\n let key_type = params.key_type;\n const someBound = params.lower_bound || params.upper_bound;\n if (!key_type && someBound) {\n // determine key type from bounds type\n if (isInstanceOf(someBound, UInt64)) {\n key_type = 'i64';\n }\n else if (isInstanceOf(someBound, UInt128)) {\n key_type = 'i128';\n }\n else if (isInstanceOf(someBound, Checksum256)) {\n key_type = 'sha256';\n }\n else if (isInstanceOf(someBound, Checksum160)) {\n key_type = 'ripemd160';\n }\n }\n if (!key_type) {\n key_type = 'name';\n }\n let json = params.json;\n if (json === undefined) {\n // if we know the row type don't ask the node to perform abi decoding\n json = type === undefined;\n }\n let upper_bound = params.upper_bound;\n if (upper_bound && typeof upper_bound !== 'string') {\n upper_bound = String(upper_bound);\n }\n let lower_bound = params.lower_bound;\n if (lower_bound && typeof lower_bound !== 'string') {\n lower_bound = String(lower_bound);\n }\n let scope = params.scope;\n if (typeof scope === 'undefined') {\n scope = String(Name.from(params.code));\n }\n else if (typeof scope !== 'string') {\n scope = String(scope);\n }\n // eslint-disable-next-line prefer-const\n let { rows, more, next_key } = await this.client.call({\n path: '/v1/chain/get_table_rows',\n params: {\n ...params,\n code: Name.from(params.code),\n table: Name.from(params.table),\n limit: params.limit !== undefined ? UInt32.from(params.limit) : undefined,\n scope,\n key_type,\n json,\n upper_bound,\n lower_bound,\n },\n });\n let ram_payers;\n if (params.show_payer) {\n ram_payers = [];\n rows = rows.map(({ data, payer }) => {\n ram_payers.push(Name.from(payer));\n return data;\n });\n }\n if (type) {\n if (json) {\n rows = rows.map((value) => {\n if (typeof value === 'string' && Bytes.isBytes(value)) {\n // this handles the case where nodeos bails on abi decoding and just returns a hex string\n return Serializer.decode({ data: Bytes.from(value), type });\n }\n else {\n return Serializer.decode({ object: value, type });\n }\n });\n }\n else {\n rows = rows\n .map((hex) => Bytes.from(hex))\n .map((data) => Serializer.decode({ data, type }));\n }\n }\n if (next_key && next_key.length > 0) {\n let indexType;\n // set index type so we can decode next_key in the response if present\n switch (key_type) {\n case 'i64':\n indexType = UInt64;\n break;\n case 'i128':\n indexType = UInt128;\n break;\n case 'name':\n indexType = Name;\n break;\n case 'float64':\n indexType = Float64;\n break;\n case 'float128':\n indexType = Float128;\n break;\n case 'sha256':\n indexType = Checksum256;\n break;\n case 'ripemd160':\n indexType = Checksum160;\n break;\n default:\n throw new Error(`Unsupported key type: ${key_type}`);\n }\n if (indexType === Name) {\n // names are sent back as an uint64 string instead of a name string..\n next_key = Name.from(Serializer.decode({ object: next_key, type: UInt64 }));\n }\n else {\n next_key = Serializer.decode({ object: next_key, type: indexType });\n }\n }\n else {\n next_key = undefined;\n }\n return { rows, more, next_key, ram_payers };\n }\n async get_table_by_scope(params) {\n return this.client.call({\n path: '/v1/chain/get_table_by_scope',\n params,\n responseType: GetTableByScopeResponse,\n });\n }\n}\n\nclass HistoryAPI {\n constructor(client) {\n this.client = client;\n }\n async get_actions(accountName, pos, offset) {\n return this.client.call({\n path: '/v1/history/get_actions',\n params: {\n account_name: Name.from(accountName),\n pos: Int32.from(pos),\n offset: Int32.from(offset),\n },\n responseType: GetActionsResponse,\n });\n }\n async get_transaction(id, options = {}) {\n return this.client.call({\n path: '/v1/history/get_transaction',\n params: {\n id: Checksum256.from(id),\n block_num_hint: options.blockNumHint && UInt32.from(options.blockNumHint),\n traces: options.excludeTraces === true ? false : undefined,\n },\n responseType: GetTransactionResponse,\n });\n }\n async get_key_accounts(publicKey) {\n return this.client.call({\n path: '/v1/history/get_key_accounts',\n params: { public_key: PublicKey.from(publicKey) },\n responseType: GetKeyAccountsResponse,\n });\n }\n async get_controlled_accounts(controllingAccount) {\n return this.client.call({\n path: '/v1/history/get_controlled_accounts',\n params: { controlling_account: Name.from(controllingAccount) },\n responseType: GetControlledAccountsResponse,\n });\n }\n}\n\nclass APIError extends Error {\n constructor(path, response) {\n let message;\n if (response.json && response.json.error) {\n message = `${APIError.formatError(response.json.error)} at ${path}`;\n }\n else {\n message = `HTTP ${response.status} at ${path}`;\n }\n super(message);\n this.path = path;\n this.response = response;\n }\n static formatError(error) {\n if (error.what === 'unspecified' &&\n error.details[0].file &&\n error.details[0].file === 'http_plugin.cpp' &&\n error.details[0].message.slice(0, 11) === 'unknown key') {\n // fix cryptic error messages from nodeos for missing accounts\n return 'Account not found';\n }\n else if (error.what === 'unspecified' && error.details && error.details.length > 0) {\n return error.details[0].message;\n }\n else if (error.what && error.what.length > 0) {\n return error.what;\n }\n else {\n return 'Unknown API error';\n }\n }\n /** The nodeos error object. */\n get error() {\n const { json } = this.response;\n return (json ? json.error : undefined);\n }\n /** The nodeos error name, e.g. `tx_net_usage_exceeded` */\n get name() {\n const { error } = this;\n return error ? error.name : 'unspecified';\n }\n /** The nodeos error code, e.g. `3080002`. */\n get code() {\n const { error } = this;\n return error ? error.code : 0;\n }\n /** List of exceptions, if any. */\n get details() {\n const { error } = this;\n return error ? error.details : [];\n }\n}\nAPIError.__className = 'APIError';\nclass APIClient {\n constructor(options) {\n this.v1 = {\n chain: new ChainAPI(this),\n history: new HistoryAPI(this),\n };\n if (options.provider) {\n this.provider = options.provider;\n }\n else if (options.url) {\n this.provider = new FetchProvider(options.url, options);\n }\n else {\n throw new Error('Missing url or provider');\n }\n }\n async call(args) {\n const response = await this.provider.call(args.path, args.params);\n const { json } = response;\n if (Math.floor(response.status / 100) !== 2 || (json && typeof json.error === 'object')) {\n throw new APIError(args.path, response);\n }\n if (args.responseType) {\n return abiDecode({ type: args.responseType, object: response.json });\n }\n return response.json || response.text;\n }\n}\nAPIClient.__className = 'APIClient';\n\nvar types = /*#__PURE__*/Object.freeze({\n __proto__: null,\n v1: types$1\n});\n\nexport { ABI, ABIDecoder, ABIEncoder, types as API, APIClient, APIError, Action, Asset, Authority, Base58, BlockTimestamp, Bytes, Checksum160, Checksum256, Checksum512, ExtendedAsset, FetchProvider, Float128, Float32, Float64, Int, Int128, Int16, Int32, Int64, Int8, KeyType, Name, PackedTransaction, PermissionLevel, PrivateKey, PublicKey, Serializer, Signature, SignedTransaction, Struct, TimePoint, TimePointSec, Transaction, TransactionExtension, TransactionHeader, TransactionReceipt, TypeAlias, UInt128, UInt16, UInt32, UInt64, UInt8, VarInt, VarUInt, Variant, isInstanceOf };\n//# sourceMappingURL=eosio-core.m.js.map\n","\n\n\n \n {#if showFilterHeader}\n \n {#each columns as col}\n \n {/each}\n {#if showExpandIcon}\n \n {/if}\n \n \n {#each columns as col}\n handleClickCol(e, col)}\n class={asStringArray([\n col.sortable ? \"isSortable\" : \"\",\n col.headerClass,\n ])}\n >\n {col.title}\n {#if sortBy === col.key}\n {@html sortOrder === 1 ? iconAsc : iconDesc}\n {/if}\n \n {/each}\n {#if showExpandIcon}\n \n \n \n\n \n {#each c_rows as row, n}\n \n {\n handleClickRow(e, row);\n }}\n class={asStringArray([\n classNameRow,\n row.$expanded && classNameRowExpanded,\n ])}\n >\n {#each columns as col}\n {\n handleClickCell(e, row, col.key);\n }}\n class={asStringArray([col.class, classNameCell])}\n >\n {#if col.renderComponent}\n \n {:else}\n {@html col.renderValue ? col.renderValue(row) : col.value(row)}\n {/if}\n \n {/each}\n {#if showExpandIcon}\n handleClickExpand(e, row)}\n class={asStringArray([\"isClickable\", classNameCellExpand])}\n >\n {@html row.$expanded ? iconExpand : iconExpanded}\n \n {/if}\n \n {#if row.$expanded}\n \n {/if}\n \n {/each}\n \n
\n {#if col.searchValue !== undefined}\n \n {:else if filterValues[col.key] !== undefined}\n \n \n {/each}\n \n {/if}\n \n {/if}\n
\n {/if}\n
\n \n
\n\n\n","/**\n * Codes used by the replica for rejecting a message.\n * See {@link https://sdk.dfinity.org/docs/interface-spec/#reject-codes | the interface spec}.\n */\nexport var ReplicaRejectCode;\n(function (ReplicaRejectCode) {\n ReplicaRejectCode[ReplicaRejectCode[\"SysFatal\"] = 1] = \"SysFatal\";\n ReplicaRejectCode[ReplicaRejectCode[\"SysTransient\"] = 2] = \"SysTransient\";\n ReplicaRejectCode[ReplicaRejectCode[\"DestinationInvalid\"] = 3] = \"DestinationInvalid\";\n ReplicaRejectCode[ReplicaRejectCode[\"CanisterReject\"] = 4] = \"CanisterReject\";\n ReplicaRejectCode[ReplicaRejectCode[\"CanisterError\"] = 5] = \"CanisterError\";\n})(ReplicaRejectCode || (ReplicaRejectCode = {}));\n//# sourceMappingURL=api.js.map","// tslint:disable:no-bitwise\nconst alphabet = 'abcdefghijklmnopqrstuvwxyz234567';\n// Build a lookup table for decoding.\nconst lookupTable = Object.create(null);\nfor (let i = 0; i < alphabet.length; i++) {\n lookupTable[alphabet[i]] = i;\n}\n// Add aliases for rfc4648.\nlookupTable['0'] = lookupTable.o;\nlookupTable['1'] = lookupTable.i;\n/**\n * @param input The input array to encode.\n * @returns A Base32 string encoding the input.\n */\nexport function encode(input) {\n // How many bits will we skip from the first byte.\n let skip = 0;\n // 5 high bits, carry from one byte to the next.\n let bits = 0;\n // The output string in base32.\n let output = '';\n function encodeByte(byte) {\n if (skip < 0) {\n // we have a carry from the previous byte\n bits |= byte >> -skip;\n }\n else {\n // no carry\n bits = (byte << skip) & 248;\n }\n if (skip > 3) {\n // Not enough data to produce a character, get us another one\n skip -= 8;\n return 1;\n }\n if (skip < 4) {\n // produce a character\n output += alphabet[bits >> 3];\n skip += 5;\n }\n return 0;\n }\n for (let i = 0; i < input.length;) {\n i += encodeByte(input[i]);\n }\n return output + (skip < 0 ? alphabet[bits >> 3] : '');\n}\n/**\n * @param input The base32 encoded string to decode.\n */\nexport function decode(input) {\n // how many bits we have from the previous character.\n let skip = 0;\n // current byte we're producing.\n let byte = 0;\n const output = new Uint8Array(((input.length * 4) / 3) | 0);\n let o = 0;\n function decodeChar(char) {\n // Consume a character from the stream, store\n // the output in this.output. As before, better\n // to use update().\n let val = lookupTable[char.toLowerCase()];\n if (val === undefined) {\n throw new Error(`Invalid character: ${JSON.stringify(char)}`);\n }\n // move to the high bits\n val <<= 3;\n byte |= val >>> skip;\n skip += 5;\n if (skip >= 8) {\n // We have enough bytes to produce an output\n output[o++] = byte;\n skip -= 8;\n if (skip > 0) {\n byte = (val << (5 - skip)) & 255;\n }\n else {\n byte = 0;\n }\n }\n }\n for (const c of input) {\n decodeChar(c);\n }\n return output.slice(0, o);\n}\n//# sourceMappingURL=base32.js.map","// tslint:disable:no-bitwise\n// This file is translated to JavaScript from\n// https://lxp32.github.io/docs/a-simple-example-crc32-calculation/\nconst lookUpTable = new Uint32Array([\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,\n 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,\n 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,\n 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,\n 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,\n 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,\n 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,\n 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,\n 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,\n 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,\n 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,\n 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,\n 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,\n 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,\n 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,\n 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,\n 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,\n 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,\n]);\n/**\n * Calculate the CRC32 of an ArrayBufferLike.\n * @param buf The BufferLike to calculate the CRC32 of.\n */\nexport function getCrc32(buf) {\n const b = new Uint8Array(buf);\n let crc = -1;\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < b.length; i++) {\n const byte = b[i];\n const t = (byte ^ crc) & 0xff;\n crc = lookUpTable[t] ^ (crc >>> 8);\n }\n return (crc ^ -1) >>> 0;\n}\n//# sourceMappingURL=getCrc.js.map","import { decode, encode } from './utils/base32';\nimport { getCrc32 } from './utils/getCrc';\nimport { sha224 } from './utils/sha224';\nconst SELF_AUTHENTICATING_SUFFIX = 2;\nconst ANONYMOUS_SUFFIX = 4;\nconst fromHexString = (hexString) => { var _a; return new Uint8Array(((_a = hexString.match(/.{1,2}/g)) !== null && _a !== void 0 ? _a : []).map(byte => parseInt(byte, 16))); };\nconst toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\nexport class Principal {\n constructor(_arr) {\n this._arr = _arr;\n this._isPrincipal = true;\n }\n static anonymous() {\n return new this(new Uint8Array([ANONYMOUS_SUFFIX]));\n }\n static selfAuthenticating(publicKey) {\n const sha = sha224(publicKey);\n return new this(new Uint8Array([...sha, SELF_AUTHENTICATING_SUFFIX]));\n }\n static from(other) {\n if (typeof other === 'string') {\n return Principal.fromText(other);\n }\n else if (typeof other === 'object' &&\n other !== null &&\n other._isPrincipal === true) {\n return new Principal(other._arr);\n }\n throw new Error(`Impossible to convert ${JSON.stringify(other)} to Principal.`);\n }\n static fromHex(hex) {\n return new this(fromHexString(hex));\n }\n static fromText(text) {\n const canisterIdNoDash = text.toLowerCase().replace(/-/g, '');\n let arr = decode(canisterIdNoDash);\n arr = arr.slice(4, arr.length);\n const principal = new this(arr);\n if (principal.toText() !== text) {\n throw new Error(`Principal \"${principal.toText()}\" does not have a valid checksum.`);\n }\n return principal;\n }\n static fromUint8Array(arr) {\n return new this(arr);\n }\n isAnonymous() {\n return this._arr.byteLength === 1 && this._arr[0] === ANONYMOUS_SUFFIX;\n }\n toUint8Array() {\n return this._arr;\n }\n toHex() {\n return toHexString(this._arr).toUpperCase();\n }\n toText() {\n const checksumArrayBuf = new ArrayBuffer(4);\n const view = new DataView(checksumArrayBuf);\n view.setUint32(0, getCrc32(this._arr));\n const checksum = new Uint8Array(checksumArrayBuf);\n const bytes = Uint8Array.from(this._arr);\n const array = new Uint8Array([...checksum, ...bytes]);\n const result = encode(array);\n const matches = result.match(/.{1,5}/g);\n if (!matches) {\n // This should only happen if there's no character, which is unreachable.\n throw new Error();\n }\n return matches.join('-');\n }\n toString() {\n return this.toText();\n }\n}\n//# sourceMappingURL=index.js.map","import { sha224 as jsSha224 } from 'js-sha256';\n/**\n * Returns the SHA224 hash of the buffer.\n * @param data Arraybuffer to encode\n */\nexport function sha224(data) {\n const shaObj = jsSha224.create();\n shaObj.update(data);\n return new Uint8Array(shaObj.array());\n}\n//# sourceMappingURL=sha224.js.map","/**\n * Concatenate multiple array buffers.\n * @param buffers The buffers to concatenate.\n */\nexport function concat(...buffers) {\n const result = new Uint8Array(buffers.reduce((acc, curr) => acc + curr.byteLength, 0));\n let index = 0;\n for (const b of buffers) {\n result.set(new Uint8Array(b), index);\n index += b.byteLength;\n }\n return result;\n}\n/**\n * Returns an hexadecimal representation of an array buffer.\n * @param bytes The array buffer.\n */\nexport function toHexString(bytes) {\n return new Uint8Array(bytes).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n/**\n * Return an array buffer from its hexadecimal representation.\n * @param hexString The hexadecimal string.\n */\nexport function fromHexString(hexString) {\n var _a;\n return new Uint8Array(((_a = hexString.match(/.{1,2}/g)) !== null && _a !== void 0 ? _a : []).map(byte => parseInt(byte, 16)));\n}\n/**\n * A class that abstracts a pipe-like ArrayBuffer.\n */\nexport class PipeArrayBuffer {\n /**\n * Creates a new instance of a pipe\n * @param buffer an optional buffer to start with\n * @param length an optional amount of bytes to use for the length.\n */\n constructor(buffer, length = (buffer === null || buffer === void 0 ? void 0 : buffer.byteLength) || 0) {\n this._buffer = buffer || new ArrayBuffer(0);\n this._view = new Uint8Array(this._buffer, 0, length);\n }\n get buffer() {\n // Return a copy of the buffer.\n return this._view.slice();\n }\n get byteLength() {\n return this._view.byteLength;\n }\n /**\n * Read `num` number of bytes from the front of the pipe.\n * @param num The number of bytes to read.\n */\n read(num) {\n const result = this._view.subarray(0, num);\n this._view = this._view.subarray(num);\n return result.slice().buffer;\n }\n readUint8() {\n const result = this._view[0];\n this._view = this._view.subarray(1);\n return result;\n }\n /**\n * Write a buffer to the end of the pipe.\n * @param buf The bytes to write.\n */\n write(buf) {\n const b = new Uint8Array(buf);\n const offset = this._view.byteLength;\n if (this._view.byteOffset + this._view.byteLength + b.byteLength >= this._buffer.byteLength) {\n // Alloc grow the view to include the new bytes.\n this.alloc(b.byteLength);\n }\n else {\n // Update the view to include the new bytes.\n this._view = new Uint8Array(this._buffer, this._view.byteOffset, this._view.byteLength + b.byteLength);\n }\n this._view.set(b, offset);\n }\n /**\n * Whether or not there is more data to read from the buffer\n */\n get end() {\n return this._view.byteLength === 0;\n }\n /**\n * Allocate a fixed amount of memory in the buffer. This does not affect the view.\n * @param amount A number of bytes to add to the buffer.\n */\n alloc(amount) {\n // Add a little bit of exponential growth.\n // tslint:disable-next-line:no-bitwise\n const b = new ArrayBuffer(((this._buffer.byteLength + amount) * 1.2) | 0);\n const v = new Uint8Array(b, 0, this._view.byteLength + amount);\n v.set(this._view);\n this._buffer = b;\n this._view = v;\n }\n}\n//# sourceMappingURL=buffer.js.map","/**\n * Hashes a string to a number. Algorithm can be found here:\n * https://caml.inria.fr/pub/papers/garrigue-polymorphic_variants-ml98.pdf\n * @param s\n */\nfunction idlHash(s) {\n const utf8encoder = new TextEncoder();\n const array = utf8encoder.encode(s);\n let h = 0;\n for (const c of array) {\n h = (h * 223 + c) % 2 ** 32;\n }\n return h;\n}\n/**\n *\n * @param label string\n * @returns number representing hashed label\n */\nexport function idlLabelToId(label) {\n if (/^_\\d+_$/.test(label) || /^_0x[0-9a-fA-F]+_$/.test(label)) {\n const num = +label.slice(1, -1);\n if (Number.isSafeInteger(num) && num >= 0 && num < 2 ** 32) {\n return num;\n }\n }\n return idlHash(label);\n}\n//# sourceMappingURL=hash.js.map","/* eslint-disable no-constant-condition */\n// tslint:disable:no-bitwise\n// Note: this file uses buffer-pipe, which on Node only, uses the Node Buffer\n// implementation, which isn't compatible with the NPM buffer package\n// which we use everywhere else. This means that we have to transform\n// one into the other, hence why every function that returns a Buffer\n// actually return `new Buffer(pipe.buffer)`.\n// TODO: The best solution would be to have our own buffer type around\n// Uint8Array which is standard.\nimport { PipeArrayBuffer as Pipe } from './buffer';\nfunction eob() {\n throw new Error('unexpected end of buffer');\n}\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param num number\n * @returns Buffer\n */\nexport function safeRead(pipe, num) {\n if (pipe.byteLength < num) {\n eob();\n }\n return pipe.read(num);\n}\n/**\n * @param pipe\n */\nexport function safeReadUint8(pipe) {\n const byte = pipe.readUint8();\n if (byte === undefined) {\n eob();\n }\n return byte;\n}\n/**\n * Encode a positive number (or bigint) into a Buffer. The number will be floored to the\n * nearest integer.\n * @param value The number to encode.\n */\nexport function lebEncode(value) {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n if (value < BigInt(0)) {\n throw new Error('Cannot leb encode negative values.');\n }\n const byteLength = (value === BigInt(0) ? 0 : Math.ceil(Math.log2(Number(value)))) + 1;\n const pipe = new Pipe(new ArrayBuffer(byteLength), 0);\n while (true) {\n const i = Number(value & BigInt(0x7f));\n value /= BigInt(0x80);\n if (value === BigInt(0)) {\n pipe.write(new Uint8Array([i]));\n break;\n }\n else {\n pipe.write(new Uint8Array([i | 0x80]));\n }\n }\n return pipe.buffer;\n}\n/**\n * Decode a leb encoded buffer into a bigint. The number will always be positive (does not\n * support signed leb encoding).\n * @param pipe A Buffer containing the leb encoded bits.\n */\nexport function lebDecode(pipe) {\n let weight = BigInt(1);\n let value = BigInt(0);\n let byte;\n do {\n byte = safeReadUint8(pipe);\n value += BigInt(byte & 0x7f).valueOf() * weight;\n weight *= BigInt(128);\n } while (byte >= 0x80);\n return value;\n}\n/**\n * Encode a number (or bigint) into a Buffer, with support for negative numbers. The number\n * will be floored to the nearest integer.\n * @param value The number to encode.\n */\nexport function slebEncode(value) {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n const isNeg = value < BigInt(0);\n if (isNeg) {\n value = -value - BigInt(1);\n }\n const byteLength = (value === BigInt(0) ? 0 : Math.ceil(Math.log2(Number(value)))) + 1;\n const pipe = new Pipe(new ArrayBuffer(byteLength), 0);\n while (true) {\n const i = getLowerBytes(value);\n value /= BigInt(0x80);\n // prettier-ignore\n if ((isNeg && value === BigInt(0) && (i & 0x40) !== 0)\n || (!isNeg && value === BigInt(0) && (i & 0x40) === 0)) {\n pipe.write(new Uint8Array([i]));\n break;\n }\n else {\n pipe.write(new Uint8Array([i | 0x80]));\n }\n }\n function getLowerBytes(num) {\n const bytes = num % BigInt(0x80);\n if (isNeg) {\n // We swap the bits here again, and remove 1 to do two's complement.\n return Number(BigInt(0x80) - bytes - BigInt(1));\n }\n else {\n return Number(bytes);\n }\n }\n return pipe.buffer;\n}\n/**\n * Decode a leb encoded buffer into a bigint. The number is decoded with support for negative\n * signed-leb encoding.\n * @param pipe A Buffer containing the signed leb encoded bits.\n */\nexport function slebDecode(pipe) {\n // Get the size of the buffer, then cut a buffer of that size.\n const pipeView = new Uint8Array(pipe.buffer);\n let len = 0;\n for (; len < pipeView.byteLength; len++) {\n if (pipeView[len] < 0x80) {\n // If it's a positive number, we reuse lebDecode.\n if ((pipeView[len] & 0x40) === 0) {\n return lebDecode(pipe);\n }\n break;\n }\n }\n const bytes = new Uint8Array(safeRead(pipe, len + 1));\n let value = BigInt(0);\n for (let i = bytes.byteLength - 1; i >= 0; i--) {\n value = value * BigInt(0x80) + BigInt(0x80 - (bytes[i] & 0x7f) - 1);\n }\n return -value - BigInt(1);\n}\n/**\n *\n * @param value bigint or number\n * @param byteLength number\n * @returns Buffer\n */\nexport function writeUIntLE(value, byteLength) {\n if (BigInt(value) < BigInt(0)) {\n throw new Error('Cannot write negative values.');\n }\n return writeIntLE(value, byteLength);\n}\n/**\n *\n * @param value\n * @param byteLength\n */\nexport function writeIntLE(value, byteLength) {\n value = BigInt(value);\n const pipe = new Pipe(new ArrayBuffer(Math.min(1, byteLength)), 0);\n let i = 0;\n let mul = BigInt(256);\n let sub = BigInt(0);\n let byte = Number(value % mul);\n pipe.write(new Uint8Array([byte]));\n while (++i < byteLength) {\n if (value < 0 && sub === BigInt(0) && byte !== 0) {\n sub = BigInt(1);\n }\n byte = Number((value / mul - sub) % BigInt(256));\n pipe.write(new Uint8Array([byte]));\n mul *= BigInt(256);\n }\n return pipe.buffer;\n}\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param byteLength number\n * @returns bigint\n */\nexport function readUIntLE(pipe, byteLength) {\n let val = BigInt(safeReadUint8(pipe));\n let mul = BigInt(1);\n let i = 0;\n while (++i < byteLength) {\n mul *= BigInt(256);\n const byte = BigInt(safeReadUint8(pipe));\n val = val + mul * byte;\n }\n return val;\n}\n/**\n *\n * @param pipe Pipe from buffer-pipe\n * @param byteLength number\n * @returns bigint\n */\nexport function readIntLE(pipe, byteLength) {\n let val = readUIntLE(pipe, byteLength);\n const mul = BigInt(2) ** (BigInt(8) * BigInt(byteLength - 1) + BigInt(7));\n if (val >= mul) {\n val -= mul * BigInt(2);\n }\n return val;\n}\n//# sourceMappingURL=leb128.js.map","// tslint:disable:max-classes-per-file\nimport { Principal as PrincipalId } from '@dfinity/principal';\nimport { concat, PipeArrayBuffer as Pipe } from './utils/buffer';\nimport { idlLabelToId } from './utils/hash';\nimport { lebDecode, lebEncode, safeRead, safeReadUint8, slebDecode, slebEncode, } from './utils/leb128';\nimport { readIntLE, readUIntLE, writeIntLE, writeUIntLE } from './utils/leb128';\nconst magicNumber = 'DIDL';\nfunction zipWith(xs, ys, f) {\n return xs.map((x, i) => f(x, ys[i]));\n}\n/**\n * An IDL Type Table, which precedes the data in the stream.\n */\nclass TypeTable {\n constructor() {\n // List of types. Needs to be an array as the index needs to be stable.\n this._typs = [];\n this._idx = new Map();\n }\n has(obj) {\n return this._idx.has(obj.name);\n }\n add(type, buf) {\n const idx = this._typs.length;\n this._idx.set(type.name, idx);\n this._typs.push(buf);\n }\n merge(obj, knot) {\n const idx = this._idx.get(obj.name);\n const knotIdx = this._idx.get(knot);\n if (idx === undefined) {\n throw new Error('Missing type index for ' + obj);\n }\n if (knotIdx === undefined) {\n throw new Error('Missing type index for ' + knot);\n }\n this._typs[idx] = this._typs[knotIdx];\n // Delete the type.\n this._typs.splice(knotIdx, 1);\n this._idx.delete(knot);\n }\n encode() {\n const len = lebEncode(this._typs.length);\n const buf = concat(...this._typs);\n return concat(len, buf);\n }\n indexOf(typeName) {\n if (!this._idx.has(typeName)) {\n throw new Error('Missing type index for ' + typeName);\n }\n return slebEncode(this._idx.get(typeName) || 0);\n }\n}\nexport class Visitor {\n visitType(t, data) {\n throw new Error('Not implemented');\n }\n visitPrimitive(t, data) {\n return this.visitType(t, data);\n }\n visitEmpty(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitBool(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitNull(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitReserved(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitText(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitNumber(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitInt(t, data) {\n return this.visitNumber(t, data);\n }\n visitNat(t, data) {\n return this.visitNumber(t, data);\n }\n visitFloat(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitFixedInt(t, data) {\n return this.visitNumber(t, data);\n }\n visitFixedNat(t, data) {\n return this.visitNumber(t, data);\n }\n visitPrincipal(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitConstruct(t, data) {\n return this.visitType(t, data);\n }\n visitVec(t, ty, data) {\n return this.visitConstruct(t, data);\n }\n visitOpt(t, ty, data) {\n return this.visitConstruct(t, data);\n }\n visitRecord(t, fields, data) {\n return this.visitConstruct(t, data);\n }\n visitTuple(t, components, data) {\n const fields = components.map((ty, i) => [`_${i}_`, ty]);\n return this.visitRecord(t, fields, data);\n }\n visitVariant(t, fields, data) {\n return this.visitConstruct(t, data);\n }\n visitRec(t, ty, data) {\n return this.visitConstruct(ty, data);\n }\n visitFunc(t, data) {\n return this.visitConstruct(t, data);\n }\n visitService(t, data) {\n return this.visitConstruct(t, data);\n }\n}\n/**\n * Represents an IDL type.\n */\nexport class Type {\n /* Display type name */\n display() {\n return this.name;\n }\n valueToString(x) {\n return toReadableString(x);\n }\n /* Implement `T` in the IDL spec, only needed for non-primitive types */\n buildTypeTable(typeTable) {\n if (!typeTable.has(this)) {\n this._buildTypeTableImpl(typeTable);\n }\n }\n}\nexport class PrimitiveType extends Type {\n checkType(t) {\n if (this.name !== t.name) {\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n return t;\n }\n _buildTypeTableImpl(typeTable) {\n // No type table encoding for Primitive types.\n return;\n }\n}\nexport class ConstructType extends Type {\n checkType(t) {\n if (t instanceof RecClass) {\n const ty = t.getType();\n if (typeof ty === 'undefined') {\n throw new Error('type mismatch with uninitialized type');\n }\n return ty;\n }\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n encodeType(typeTable) {\n return typeTable.indexOf(this.name);\n }\n}\n/**\n * Represents an IDL Empty, a type which has no inhabitants.\n * Since no values exist for this type, it cannot be serialised or deserialised.\n * Result types like `Result` should always succeed.\n */\nexport class EmptyClass extends PrimitiveType {\n accept(v, d) {\n return v.visitEmpty(this, d);\n }\n covariant(x) {\n return false;\n }\n encodeValue() {\n throw new Error('Empty cannot appear as a function argument');\n }\n valueToString() {\n throw new Error('Empty cannot appear as a value');\n }\n encodeType() {\n return slebEncode(-17 /* Empty */);\n }\n decodeValue() {\n throw new Error('Empty cannot appear as an output');\n }\n get name() {\n return 'empty';\n }\n}\n/**\n * Represents an IDL Bool\n */\nexport class BoolClass extends PrimitiveType {\n accept(v, d) {\n return v.visitBool(this, d);\n }\n covariant(x) {\n return typeof x === 'boolean';\n }\n encodeValue(x) {\n return new Uint8Array([x ? 1 : 0]);\n }\n encodeType() {\n return slebEncode(-2 /* Bool */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n switch (safeReadUint8(b)) {\n case 0:\n return false;\n case 1:\n return true;\n default:\n throw new Error('Boolean value out of range');\n }\n }\n get name() {\n return 'bool';\n }\n}\n/**\n * Represents an IDL Null\n */\nexport class NullClass extends PrimitiveType {\n accept(v, d) {\n return v.visitNull(this, d);\n }\n covariant(x) {\n return x === null;\n }\n encodeValue() {\n return new ArrayBuffer(0);\n }\n encodeType() {\n return slebEncode(-1 /* Null */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return null;\n }\n get name() {\n return 'null';\n }\n}\n/**\n * Represents an IDL Reserved\n */\nexport class ReservedClass extends PrimitiveType {\n accept(v, d) {\n return v.visitReserved(this, d);\n }\n covariant(x) {\n return true;\n }\n encodeValue() {\n return new ArrayBuffer(0);\n }\n encodeType() {\n return slebEncode(-16 /* Reserved */);\n }\n decodeValue(b, t) {\n if (t.name !== this.name) {\n t.decodeValue(b, t);\n }\n return null;\n }\n get name() {\n return 'reserved';\n }\n}\n/**\n * Represents an IDL Text\n */\nexport class TextClass extends PrimitiveType {\n accept(v, d) {\n return v.visitText(this, d);\n }\n covariant(x) {\n return typeof x === 'string';\n }\n encodeValue(x) {\n const buf = new TextEncoder().encode(x);\n const len = lebEncode(buf.byteLength);\n return concat(len, buf);\n }\n encodeType() {\n return slebEncode(-15 /* Text */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const len = lebDecode(b);\n const buf = safeRead(b, Number(len));\n const decoder = new TextDecoder('utf8', { fatal: true });\n return decoder.decode(buf);\n }\n get name() {\n return 'text';\n }\n valueToString(x) {\n return '\"' + x + '\"';\n }\n}\n/**\n * Represents an IDL Int\n */\nexport class IntClass extends PrimitiveType {\n accept(v, d) {\n return v.visitInt(this, d);\n }\n covariant(x) {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n return typeof x === 'bigint' || Number.isInteger(x);\n }\n encodeValue(x) {\n return slebEncode(x);\n }\n encodeType() {\n return slebEncode(-4 /* Int */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return slebDecode(b);\n }\n get name() {\n return 'int';\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Nat\n */\nexport class NatClass extends PrimitiveType {\n accept(v, d) {\n return v.visitNat(this, d);\n }\n covariant(x) {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n return (typeof x === 'bigint' && x >= BigInt(0)) || (Number.isInteger(x) && x >= 0);\n }\n encodeValue(x) {\n return lebEncode(x);\n }\n encodeType() {\n return slebEncode(-3 /* Nat */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return lebDecode(b);\n }\n get name() {\n return 'nat';\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Float\n */\nexport class FloatClass extends PrimitiveType {\n constructor(_bits) {\n super();\n this._bits = _bits;\n if (_bits !== 32 && _bits !== 64) {\n throw new Error('not a valid float type');\n }\n }\n accept(v, d) {\n return v.visitFloat(this, d);\n }\n covariant(x) {\n return typeof x === 'number' || x instanceof Number;\n }\n encodeValue(x) {\n const buf = new ArrayBuffer(this._bits / 8);\n const view = new DataView(buf);\n if (this._bits === 32) {\n view.setFloat32(0, x, true);\n }\n else {\n view.setFloat64(0, x, true);\n }\n return buf;\n }\n encodeType() {\n const opcode = this._bits === 32 ? -13 /* Float32 */ : -14 /* Float64 */;\n return slebEncode(opcode);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const bytes = safeRead(b, this._bits / 8);\n const view = new DataView(bytes);\n if (this._bits === 32) {\n return view.getFloat32(0, true);\n }\n else {\n return view.getFloat64(0, true);\n }\n }\n get name() {\n return 'float' + this._bits;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL fixed-width Int(n)\n */\nexport class FixedIntClass extends PrimitiveType {\n constructor(_bits) {\n super();\n this._bits = _bits;\n }\n accept(v, d) {\n return v.visitFixedInt(this, d);\n }\n covariant(x) {\n const min = BigInt(2) ** BigInt(this._bits - 1) * BigInt(-1);\n const max = BigInt(2) ** BigInt(this._bits - 1) - BigInt(1);\n if (typeof x === 'bigint') {\n return x >= min && x <= max;\n }\n else if (Number.isInteger(x)) {\n const v = BigInt(x);\n return v >= min && v <= max;\n }\n else {\n return false;\n }\n }\n encodeValue(x) {\n return writeIntLE(x, this._bits / 8);\n }\n encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-9 - offset);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const num = readIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n }\n else {\n return num;\n }\n }\n get name() {\n return `int${this._bits}`;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL fixed-width Nat(n)\n */\nexport class FixedNatClass extends PrimitiveType {\n constructor(bits) {\n super();\n this.bits = bits;\n }\n accept(v, d) {\n return v.visitFixedNat(this, d);\n }\n covariant(x) {\n const max = BigInt(2) ** BigInt(this.bits);\n if (typeof x === 'bigint' && x >= BigInt(0)) {\n return x < max;\n }\n else if (Number.isInteger(x) && x >= 0) {\n const v = BigInt(x);\n return v < max;\n }\n else {\n return false;\n }\n }\n encodeValue(x) {\n return writeUIntLE(x, this.bits / 8);\n }\n encodeType() {\n const offset = Math.log2(this.bits) - 3;\n return slebEncode(-5 - offset);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const num = readUIntLE(b, this.bits / 8);\n if (this.bits <= 32) {\n return Number(num);\n }\n else {\n return num;\n }\n }\n get name() {\n return `nat${this.bits}`;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Array\n * @param {Type} t\n */\nexport class VecClass extends ConstructType {\n constructor(_type) {\n super();\n this._type = _type;\n // If true, this vector is really a blob and we can just use memcpy.\n this._blobOptimization = false;\n if (_type instanceof FixedNatClass && _type.bits === 8) {\n this._blobOptimization = true;\n }\n }\n accept(v, d) {\n return v.visitVec(this, this._type, d);\n }\n covariant(x) {\n return Array.isArray(x) && x.every(v => this._type.covariant(v));\n }\n encodeValue(x) {\n const len = lebEncode(x.length);\n if (this._blobOptimization) {\n return concat(len, new Uint8Array(x));\n }\n return concat(len, ...x.map(d => this._type.encodeValue(d)));\n }\n _buildTypeTableImpl(typeTable) {\n this._type.buildTypeTable(typeTable);\n const opCode = slebEncode(-19 /* Vector */);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, concat(opCode, buffer));\n }\n decodeValue(b, t) {\n const vec = this.checkType(t);\n if (!(vec instanceof VecClass)) {\n throw new Error('Not a vector type');\n }\n const len = Number(lebDecode(b));\n if (this._blobOptimization) {\n return [...new Uint8Array(b.read(len))];\n }\n const rets = [];\n for (let i = 0; i < len; i++) {\n rets.push(this._type.decodeValue(b, vec._type));\n }\n return rets;\n }\n get name() {\n return `vec ${this._type.name}`;\n }\n display() {\n return `vec ${this._type.display()}`;\n }\n valueToString(x) {\n const elements = x.map(e => this._type.valueToString(e));\n return 'vec {' + elements.join('; ') + '}';\n }\n}\n/**\n * Represents an IDL Option\n * @param {Type} t\n */\nexport class OptClass extends ConstructType {\n constructor(_type) {\n super();\n this._type = _type;\n }\n accept(v, d) {\n return v.visitOpt(this, this._type, d);\n }\n covariant(x) {\n return Array.isArray(x) && (x.length === 0 || (x.length === 1 && this._type.covariant(x[0])));\n }\n encodeValue(x) {\n if (x.length === 0) {\n return new Uint8Array([0]);\n }\n else {\n return concat(new Uint8Array([1]), this._type.encodeValue(x[0]));\n }\n }\n _buildTypeTableImpl(typeTable) {\n this._type.buildTypeTable(typeTable);\n const opCode = slebEncode(-18 /* Opt */);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, concat(opCode, buffer));\n }\n decodeValue(b, t) {\n const opt = this.checkType(t);\n if (!(opt instanceof OptClass)) {\n throw new Error('Not an option type');\n }\n switch (safeReadUint8(b)) {\n case 0:\n return [];\n case 1:\n return [this._type.decodeValue(b, opt._type)];\n default:\n throw new Error('Not an option value');\n }\n }\n get name() {\n return `opt ${this._type.name}`;\n }\n display() {\n return `opt ${this._type.display()}`;\n }\n valueToString(x) {\n if (x.length === 0) {\n return 'null';\n }\n else {\n return `opt ${this._type.valueToString(x[0])}`;\n }\n }\n}\n/**\n * Represents an IDL Record\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class RecordClass extends ConstructType {\n constructor(fields = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitRecord(this, this._fields, d);\n }\n tryAsTuple() {\n const res = [];\n for (let i = 0; i < this._fields.length; i++) {\n const [key, type] = this._fields[i];\n if (key !== `_${i}_`) {\n return null;\n }\n res.push(type);\n }\n return res;\n }\n covariant(x) {\n return (typeof x === 'object' &&\n this._fields.every(([k, t]) => {\n // eslint-disable-next-line\n if (!x.hasOwnProperty(k)) {\n throw new Error(`Record is missing key \"${k}\".`);\n }\n return t.covariant(x[k]);\n }));\n }\n encodeValue(x) {\n const values = this._fields.map(([key]) => x[key]);\n const bufs = zipWith(this._fields, values, ([, c], d) => c.encodeValue(d));\n return concat(...bufs);\n }\n _buildTypeTableImpl(T) {\n this._fields.forEach(([_, value]) => value.buildTypeTable(T));\n const opCode = slebEncode(-20 /* Record */);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) => concat(lebEncode(idlLabelToId(key)), value.encodeType(T)));\n T.add(this, concat(opCode, len, concat(...fields)));\n }\n decodeValue(b, t) {\n const record = this.checkType(t);\n if (!(record instanceof RecordClass)) {\n throw new Error('Not a record type');\n }\n const x = {};\n let idx = 0;\n for (const [hash, type] of record._fields) {\n if (idx >= this._fields.length || idlLabelToId(this._fields[idx][0]) !== idlLabelToId(hash)) {\n // skip field\n type.decodeValue(b, type);\n continue;\n }\n const [expectKey, expectType] = this._fields[idx];\n x[expectKey] = expectType.decodeValue(b, type);\n idx++;\n }\n if (idx < this._fields.length) {\n throw new Error('Cannot find field ' + this._fields[idx][0]);\n }\n return x;\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `record {${fields.join('; ')}}`;\n }\n display() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.display());\n return `record {${fields.join('; ')}}`;\n }\n valueToString(x) {\n const values = this._fields.map(([key]) => x[key]);\n const fields = zipWith(this._fields, values, ([k, c], d) => k + '=' + c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n/**\n * Represents Tuple, a syntactic sugar for Record.\n * @param {Type} components\n */\nexport class TupleClass extends RecordClass {\n constructor(_components) {\n const x = {};\n _components.forEach((e, i) => (x['_' + i + '_'] = e));\n super(x);\n this._components = _components;\n }\n accept(v, d) {\n return v.visitTuple(this, this._components, d);\n }\n covariant(x) {\n // `>=` because tuples can be covariant when encoded.\n return (Array.isArray(x) &&\n x.length >= this._fields.length &&\n this._components.every((t, i) => t.covariant(x[i])));\n }\n encodeValue(x) {\n const bufs = zipWith(this._components, x, (c, d) => c.encodeValue(d));\n return concat(...bufs);\n }\n decodeValue(b, t) {\n const tuple = this.checkType(t);\n if (!(tuple instanceof TupleClass)) {\n throw new Error('not a tuple type');\n }\n if (tuple._components.length < this._components.length) {\n throw new Error('tuple mismatch');\n }\n const res = [];\n for (const [i, wireType] of tuple._components.entries()) {\n if (i >= this._components.length) {\n // skip value\n wireType.decodeValue(b, wireType);\n }\n else {\n res.push(this._components[i].decodeValue(b, wireType));\n }\n }\n return res;\n }\n display() {\n const fields = this._components.map(value => value.display());\n return `record {${fields.join('; ')}}`;\n }\n valueToString(values) {\n const fields = zipWith(this._components, values, (c, d) => c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n/**\n * Represents an IDL Variant\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class VariantClass extends ConstructType {\n constructor(fields = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitVariant(this, this._fields, d);\n }\n covariant(x) {\n return (typeof x === 'object' &&\n Object.entries(x).length === 1 &&\n this._fields.every(([k, v]) => {\n // eslint-disable-next-line\n return !x.hasOwnProperty(k) || v.covariant(x[k]);\n }));\n }\n encodeValue(x) {\n for (let i = 0; i < this._fields.length; i++) {\n const [name, type] = this._fields[i];\n // eslint-disable-next-line\n if (x.hasOwnProperty(name)) {\n const idx = lebEncode(i);\n const buf = type.encodeValue(x[name]);\n return concat(idx, buf);\n }\n }\n throw Error('Variant has no data: ' + x);\n }\n _buildTypeTableImpl(typeTable) {\n this._fields.forEach(([, type]) => {\n type.buildTypeTable(typeTable);\n });\n const opCode = slebEncode(-21 /* Variant */);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) => concat(lebEncode(idlLabelToId(key)), value.encodeType(typeTable)));\n typeTable.add(this, concat(opCode, len, ...fields));\n }\n decodeValue(b, t) {\n const variant = this.checkType(t);\n if (!(variant instanceof VariantClass)) {\n throw new Error('Not a variant type');\n }\n const idx = Number(lebDecode(b));\n if (idx >= variant._fields.length) {\n throw Error('Invalid variant index: ' + idx);\n }\n const [wireHash, wireType] = variant._fields[idx];\n for (const [key, expectType] of this._fields) {\n if (idlLabelToId(wireHash) === idlLabelToId(key)) {\n const value = expectType.decodeValue(b, wireType);\n return { [key]: value };\n }\n }\n throw new Error('Cannot find field hash ' + wireHash);\n }\n get name() {\n const fields = this._fields.map(([key, type]) => key + ':' + type.name);\n return `variant {${fields.join('; ')}}`;\n }\n display() {\n const fields = this._fields.map(([key, type]) => key + (type.name === 'null' ? '' : `:${type.display()}`));\n return `variant {${fields.join('; ')}}`;\n }\n valueToString(x) {\n for (const [name, type] of this._fields) {\n // eslint-disable-next-line\n if (x.hasOwnProperty(name)) {\n const value = type.valueToString(x[name]);\n if (value === 'null') {\n return `variant {${name}}`;\n }\n else {\n return `variant {${name}=${value}}`;\n }\n }\n }\n throw new Error('Variant has no data: ' + x);\n }\n}\n/**\n * Represents a reference to an IDL type, used for defining recursive data\n * types.\n */\nexport class RecClass extends ConstructType {\n constructor() {\n super(...arguments);\n this._id = RecClass._counter++;\n this._type = undefined;\n }\n accept(v, d) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return v.visitRec(this, this._type, d);\n }\n fill(t) {\n this._type = t;\n }\n getType() {\n return this._type;\n }\n covariant(x) {\n return this._type ? this._type.covariant(x) : false;\n }\n encodeValue(x) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.encodeValue(x);\n }\n _buildTypeTableImpl(typeTable) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n typeTable.add(this, new Uint8Array([]));\n this._type.buildTypeTable(typeTable);\n typeTable.merge(this, this._type.name);\n }\n decodeValue(b, t) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.decodeValue(b, t);\n }\n get name() {\n return `rec_${this._id}`;\n }\n display() {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return `μ${this.name}.${this._type.name}`;\n }\n valueToString(x) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.valueToString(x);\n }\n}\nRecClass._counter = 0;\nfunction decodePrincipalId(b) {\n const x = safeReadUint8(b);\n if (x !== 1) {\n throw new Error('Cannot decode principal');\n }\n const len = Number(lebDecode(b));\n return PrincipalId.fromUint8Array(new Uint8Array(safeRead(b, len)));\n}\n/**\n * Represents an IDL principal reference\n */\nexport class PrincipalClass extends PrimitiveType {\n accept(v, d) {\n return v.visitPrincipal(this, d);\n }\n covariant(x) {\n return x && x._isPrincipal;\n }\n encodeValue(x) {\n const buf = x.toUint8Array();\n const len = lebEncode(buf.byteLength);\n return concat(new Uint8Array([1]), len, buf);\n }\n encodeType() {\n return slebEncode(-24 /* Principal */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return decodePrincipalId(b);\n }\n get name() {\n return 'principal';\n }\n valueToString(x) {\n return `${this.name} \"${x.toText()}\"`;\n }\n}\n/**\n * Represents an IDL function reference.\n * @param argTypes Argument types.\n * @param retTypes Return types.\n * @param annotations Function annotations.\n */\nexport class FuncClass extends ConstructType {\n constructor(argTypes, retTypes, annotations = []) {\n super();\n this.argTypes = argTypes;\n this.retTypes = retTypes;\n this.annotations = annotations;\n }\n static argsToString(types, v) {\n if (types.length !== v.length) {\n throw new Error('arity mismatch');\n }\n return '(' + types.map((t, i) => t.valueToString(v[i])).join(', ') + ')';\n }\n accept(v, d) {\n return v.visitFunc(this, d);\n }\n covariant(x) {\n return (Array.isArray(x) && x.length === 2 && x[0] && x[0]._isPrincipal && typeof x[1] === 'string');\n }\n encodeValue([principal, methodName]) {\n const buf = principal.toUint8Array();\n const len = lebEncode(buf.byteLength);\n const canister = concat(new Uint8Array([1]), len, buf);\n const method = new TextEncoder().encode(methodName);\n const methodLen = lebEncode(method.byteLength);\n return concat(new Uint8Array([1]), canister, methodLen, method);\n }\n _buildTypeTableImpl(T) {\n this.argTypes.forEach(arg => arg.buildTypeTable(T));\n this.retTypes.forEach(arg => arg.buildTypeTable(T));\n const opCode = slebEncode(-22 /* Func */);\n const argLen = lebEncode(this.argTypes.length);\n const args = concat(...this.argTypes.map(arg => arg.encodeType(T)));\n const retLen = lebEncode(this.retTypes.length);\n const rets = concat(...this.retTypes.map(arg => arg.encodeType(T)));\n const annLen = lebEncode(this.annotations.length);\n const anns = concat(...this.annotations.map(a => this.encodeAnnotation(a)));\n T.add(this, concat(opCode, argLen, args, retLen, rets, annLen, anns));\n }\n decodeValue(b) {\n const x = safeReadUint8(b);\n if (x !== 1) {\n throw new Error('Cannot decode function reference');\n }\n const canister = decodePrincipalId(b);\n const mLen = Number(lebDecode(b));\n const buf = safeRead(b, mLen);\n const decoder = new TextDecoder('utf8', { fatal: true });\n const method = decoder.decode(buf);\n return [canister, method];\n }\n get name() {\n const args = this.argTypes.map(arg => arg.name).join(', ');\n const rets = this.retTypes.map(arg => arg.name).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) -> (${rets})${annon}`;\n }\n valueToString([principal, str]) {\n return `func \"${principal.toText()}\".${str}`;\n }\n display() {\n const args = this.argTypes.map(arg => arg.display()).join(', ');\n const rets = this.retTypes.map(arg => arg.display()).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) → (${rets})${annon}`;\n }\n encodeAnnotation(ann) {\n if (ann === 'query') {\n return new Uint8Array([1]);\n }\n else if (ann === 'oneway') {\n return new Uint8Array([2]);\n }\n else {\n throw new Error('Illeagal function annotation');\n }\n }\n}\nexport class ServiceClass extends ConstructType {\n constructor(fields) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitService(this, d);\n }\n covariant(x) {\n return x && x._isPrincipal;\n }\n encodeValue(x) {\n const buf = x.toUint8Array();\n const len = lebEncode(buf.length);\n return concat(new Uint8Array([1]), len, buf);\n }\n _buildTypeTableImpl(T) {\n this._fields.forEach(([_, func]) => func.buildTypeTable(T));\n const opCode = slebEncode(-23 /* Service */);\n const len = lebEncode(this._fields.length);\n const meths = this._fields.map(([label, func]) => {\n const labelBuf = new TextEncoder().encode(label);\n const labelLen = lebEncode(labelBuf.length);\n return concat(labelLen, labelBuf, func.encodeType(T));\n });\n T.add(this, concat(opCode, len, ...meths));\n }\n decodeValue(b) {\n return decodePrincipalId(b);\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `service {${fields.join('; ')}}`;\n }\n valueToString(x) {\n return `service \"${x.toText()}\"`;\n }\n}\n/**\n *\n * @param x\n * @returns {string}\n */\nfunction toReadableString(x) {\n return JSON.stringify(x, (_key, value) => typeof value === 'bigint' ? `BigInt(${value})` : value);\n}\n/**\n * Encode a array of values\n * @param argTypes\n * @param args\n * @returns {Buffer} serialised value\n */\nexport function encode(argTypes, args) {\n if (args.length < argTypes.length) {\n throw Error('Wrong number of message arguments');\n }\n const typeTable = new TypeTable();\n argTypes.forEach(t => t.buildTypeTable(typeTable));\n const magic = new TextEncoder().encode(magicNumber);\n const table = typeTable.encode();\n const len = lebEncode(args.length);\n const typs = concat(...argTypes.map(t => t.encodeType(typeTable)));\n const vals = concat(...zipWith(argTypes, args, (t, x) => {\n if (!t.covariant(x)) {\n throw new Error(`Invalid ${t.display()} argument: ${toReadableString(x)}`);\n }\n return t.encodeValue(x);\n }));\n return concat(magic, table, len, typs, vals);\n}\n/**\n * Decode a binary value\n * @param retTypes - Types expected in the buffer.\n * @param bytes - hex-encoded string, or buffer.\n * @returns Value deserialised to JS type\n */\nexport function decode(retTypes, bytes) {\n const b = new Pipe(bytes);\n if (bytes.byteLength < magicNumber.length) {\n throw new Error('Message length smaller than magic number');\n }\n const magicBuffer = safeRead(b, magicNumber.length);\n const magic = new TextDecoder().decode(magicBuffer);\n if (magic !== magicNumber) {\n throw new Error('Wrong magic number: ' + JSON.stringify(magic));\n }\n function readTypeTable(pipe) {\n const typeTable = [];\n const len = Number(lebDecode(pipe));\n for (let i = 0; i < len; i++) {\n const ty = Number(slebDecode(pipe));\n switch (ty) {\n case -18 /* Opt */:\n case -19 /* Vector */: {\n const t = Number(slebDecode(pipe));\n typeTable.push([ty, t]);\n break;\n }\n case -20 /* Record */:\n case -21 /* Variant */: {\n const fields = [];\n let objectLength = Number(lebDecode(pipe));\n let prevHash;\n while (objectLength--) {\n const hash = Number(lebDecode(pipe));\n if (hash >= Math.pow(2, 32)) {\n throw new Error('field id out of 32-bit range');\n }\n if (typeof prevHash === 'number' && prevHash >= hash) {\n throw new Error('field id collision or not sorted');\n }\n prevHash = hash;\n const t = Number(slebDecode(pipe));\n fields.push([hash, t]);\n }\n typeTable.push([ty, fields]);\n break;\n }\n case -22 /* Func */: {\n for (let k = 0; k < 2; k++) {\n let funcLength = Number(lebDecode(pipe));\n while (funcLength--) {\n slebDecode(pipe);\n }\n }\n const annLen = Number(lebDecode(pipe));\n safeRead(pipe, annLen);\n typeTable.push([ty, undefined]);\n break;\n }\n case -23 /* Service */: {\n let servLength = Number(lebDecode(pipe));\n while (servLength--) {\n const l = Number(lebDecode(pipe));\n safeRead(pipe, l);\n slebDecode(pipe);\n }\n typeTable.push([ty, undefined]);\n break;\n }\n default:\n throw new Error('Illegal op_code: ' + ty);\n }\n }\n const rawList = [];\n const length = Number(lebDecode(pipe));\n for (let i = 0; i < length; i++) {\n rawList.push(Number(slebDecode(pipe)));\n }\n return [typeTable, rawList];\n }\n const [rawTable, rawTypes] = readTypeTable(b);\n if (rawTypes.length < retTypes.length) {\n throw new Error('Wrong number of return values');\n }\n const table = rawTable.map(_ => Rec());\n function getType(t) {\n if (t < -24) {\n throw new Error('future value not supported');\n }\n if (t < 0) {\n switch (t) {\n case -1:\n return Null;\n case -2:\n return Bool;\n case -3:\n return Nat;\n case -4:\n return Int;\n case -5:\n return Nat8;\n case -6:\n return Nat16;\n case -7:\n return Nat32;\n case -8:\n return Nat64;\n case -9:\n return Int8;\n case -10:\n return Int16;\n case -11:\n return Int32;\n case -12:\n return Int64;\n case -13:\n return Float32;\n case -14:\n return Float64;\n case -15:\n return Text;\n case -16:\n return Reserved;\n case -17:\n return Empty;\n case -24:\n return Principal;\n default:\n throw new Error('Illegal op_code: ' + t);\n }\n }\n if (t >= rawTable.length) {\n throw new Error('type index out of range');\n }\n return table[t];\n }\n function buildType(entry) {\n switch (entry[0]) {\n case -19 /* Vector */: {\n const ty = getType(entry[1]);\n return Vec(ty);\n }\n case -18 /* Opt */: {\n const ty = getType(entry[1]);\n return Opt(ty);\n }\n case -20 /* Record */: {\n const fields = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n const record = Record(fields);\n const tuple = record.tryAsTuple();\n if (Array.isArray(tuple)) {\n return Tuple(...tuple);\n }\n else {\n return record;\n }\n }\n case -21 /* Variant */: {\n const fields = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n return Variant(fields);\n }\n case -22 /* Func */: {\n return Func([], [], []);\n }\n case -23 /* Service */: {\n return Service({});\n }\n default:\n throw new Error('Illegal op_code: ' + entry[0]);\n }\n }\n rawTable.forEach((entry, i) => {\n const t = buildType(entry);\n table[i].fill(t);\n });\n const types = rawTypes.map(t => getType(t));\n const output = retTypes.map((t, i) => {\n return t.decodeValue(b, types[i]);\n });\n // skip unused values\n for (let ind = retTypes.length; ind < types.length; ind++) {\n types[ind].decodeValue(b, types[ind]);\n }\n if (b.byteLength > 0) {\n throw new Error('decode: Left-over bytes');\n }\n return output;\n}\n// Export Types instances.\nexport const Empty = new EmptyClass();\nexport const Reserved = new ReservedClass();\nexport const Bool = new BoolClass();\nexport const Null = new NullClass();\nexport const Text = new TextClass();\nexport const Int = new IntClass();\nexport const Nat = new NatClass();\nexport const Float32 = new FloatClass(32);\nexport const Float64 = new FloatClass(64);\nexport const Int8 = new FixedIntClass(8);\nexport const Int16 = new FixedIntClass(16);\nexport const Int32 = new FixedIntClass(32);\nexport const Int64 = new FixedIntClass(64);\nexport const Nat8 = new FixedNatClass(8);\nexport const Nat16 = new FixedNatClass(16);\nexport const Nat32 = new FixedNatClass(32);\nexport const Nat64 = new FixedNatClass(64);\nexport const Principal = new PrincipalClass();\n/**\n *\n * @param types array of any types\n * @returns TupleClass from those types\n */\nexport function Tuple(...types) {\n return new TupleClass(types);\n}\n/**\n *\n * @param t IDL Type\n * @returns VecClass from that type\n */\nexport function Vec(t) {\n return new VecClass(t);\n}\n/**\n *\n * @param t IDL Type\n * @returns OptClass of Type\n */\nexport function Opt(t) {\n return new OptClass(t);\n}\n/**\n *\n * @param t Record of string and IDL Type\n * @returns RecordClass of string and Type\n */\nexport function Record(t) {\n return new RecordClass(t);\n}\n/**\n *\n * @param fields Record of string and IDL Type\n * @returns VariantClass\n */\nexport function Variant(fields) {\n return new VariantClass(fields);\n}\n/**\n *\n * @returns new RecClass\n */\nexport function Rec() {\n return new RecClass();\n}\n/**\n *\n * @param args array of IDL Types\n * @param ret array of IDL Types\n * @param annotations array of strings, [] by default\n * @returns new FuncClass\n */\nexport function Func(args, ret, annotations = []) {\n return new FuncClass(args, ret, annotations);\n}\n/**\n *\n * @param t Record of string and FuncClass\n * @returns ServiceClass\n */\nexport function Service(t) {\n return new ServiceClass(t);\n}\n//# sourceMappingURL=idl.js.map","/**\n * Concatenate multiple array buffers.\n * @param buffers The buffers to concatenate.\n */\nexport function concat(...buffers) {\n const result = new Uint8Array(buffers.reduce((acc, curr) => acc + curr.byteLength, 0));\n let index = 0;\n for (const b of buffers) {\n result.set(new Uint8Array(b), index);\n index += b.byteLength;\n }\n return result.buffer;\n}\n/**\n * Transforms a buffer to an hexadecimal string. This will use the buffer as an Uint8Array.\n * @param buffer The buffer to return the hexadecimal string of.\n */\nexport function toHex(buffer) {\n return [...new Uint8Array(buffer)].map(x => x.toString(16).padStart(2, '0')).join('');\n}\nconst hexRe = /^([0-9A-F]{2})*$/i.compile();\n/**\n * Transforms a hexadecimal string into an array buffer.\n * @param hex The hexadecimal string to use.\n */\nexport function fromHex(hex) {\n if (!hexRe.test(hex)) {\n throw new Error('Invalid hexadecimal string.');\n }\n const buffer = [...hex]\n .reduce((acc, curr, i) => {\n // tslint:disable-next-line:no-bitwise\n acc[(i / 2) | 0] = (acc[(i / 2) | 0] || '') + curr;\n return acc;\n }, [])\n .map(x => Number.parseInt(x, 16));\n return new Uint8Array(buffer).buffer;\n}\nexport function compare(b1, b2) {\n if (b1.byteLength !== b2.byteLength) {\n return b1.byteLength - b2.byteLength;\n }\n const u1 = new Uint8Array(b1);\n const u2 = new Uint8Array(b2);\n for (let i = 0; i < u1.length; i++) {\n if (u1[i] !== u2[i]) {\n return u1[i] - u2[i];\n }\n }\n return 0;\n}\n//# sourceMappingURL=buffer.js.map","import { lebEncode } from '@dfinity/candid';\nimport { Principal } from '@dfinity/principal';\nimport borc from 'borc';\nimport { sha256 as jsSha256 } from 'js-sha256';\nimport { compare, concat } from './utils/buffer';\n/**\n * sha256 hash the provided Buffer\n * @param data - input to hash function\n */\nexport function hash(data) {\n return jsSha256.create().update(new Uint8Array(data)).arrayBuffer();\n}\nfunction hashValue(value) {\n if (value instanceof borc.Tagged) {\n return hashValue(value.value);\n }\n else if (typeof value === 'string') {\n return hashString(value);\n }\n else if (typeof value === 'number') {\n return hash(lebEncode(value));\n }\n else if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {\n return hash(value);\n }\n else if (Array.isArray(value)) {\n const vals = value.map(hashValue);\n return hash(concat(...vals));\n }\n else if (value instanceof Principal) {\n return hash(value.toUint8Array());\n }\n else if (typeof value === 'object' &&\n value !== null &&\n typeof value.toHash === 'function') {\n return hashValue(value.toHash());\n // TODO This should be move to a specific async method as the webauthn flow required\n // the flow to be synchronous to ensure Safari touch id works.\n // } else if (value instanceof Promise) {\n // return value.then(x => hashValue(x));\n }\n else if (typeof value === 'bigint') {\n // Do this check much later than the other bigint check because this one is much less\n // type-safe.\n // So we want to try all the high-assurance type guards before this 'probable' one.\n return hash(lebEncode(value));\n }\n throw Object.assign(new Error(`Attempt to hash a value of unsupported type: ${value}`), {\n // include so logs/callers can understand the confusing value.\n // (when stringified in error message, prototype info is lost)\n value,\n });\n}\nconst hashString = (value) => {\n const encoded = new TextEncoder().encode(value);\n return hash(encoded);\n};\n/**\n * Get the RequestId of the provided ic-ref request.\n * RequestId is the result of the representation-independent-hash function.\n * https://sdk.dfinity.org/docs/interface-spec/index.html#hash-of-map\n * @param request - ic-ref request to hash into RequestId\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function requestIdOf(request) {\n const hashed = Object.entries(request)\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => {\n const hashedKey = hashString(key);\n const hashedValue = hashValue(value);\n return [hashedKey, hashedValue];\n });\n const traversed = hashed;\n const sorted = traversed.sort(([k1], [k2]) => {\n return compare(k1, k2);\n });\n const concatenated = concat(...sorted.map(x => concat(...x)));\n const requestId = hash(concatenated);\n return requestId;\n}\n//# sourceMappingURL=request_id.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Principal } from '@dfinity/principal';\nimport { requestIdOf } from './request_id';\nimport { concat, toHex } from './utils/buffer';\nconst domainSeparator = new TextEncoder().encode('\\x0Aic-request');\n/**\n * An Identity that can sign blobs.\n */\nexport class SignIdentity {\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n getPrincipal() {\n if (!this._principal) {\n this._principal = Principal.selfAuthenticating(new Uint8Array(this.getPublicKey().toDer()));\n }\n return this._principal;\n }\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n * @param request - internet computer request to transform\n */\n async transformRequest(request) {\n const { body } = request, fields = __rest(request, [\"body\"]);\n const requestId = await requestIdOf(body);\n return Object.assign(Object.assign({}, fields), { body: {\n content: body,\n sender_pubkey: this.getPublicKey().toDer(),\n sender_sig: await this.sign(concat(domainSeparator, requestId)),\n } });\n }\n}\nexport class AnonymousIdentity {\n getPrincipal() {\n return Principal.anonymous();\n }\n async transformRequest(request) {\n return Object.assign(Object.assign({}, request), { body: { content: request.body } });\n }\n}\n/**\n * Create an IdentityDescriptor from a @dfinity/authentication Identity\n * @param identity - identity describe in returned descriptor\n */\nexport function createIdentityDescriptor(identity) {\n const identityIndicator = 'getPublicKey' in identity\n ? { type: 'PublicKeyIdentity', publicKey: toHex(identity.getPublicKey().toDer()) }\n : { type: 'AnonymousIdentity' };\n return identityIndicator;\n}\n//# sourceMappingURL=auth.js.map","// tslint:disable:max-classes-per-file\n// This file is based on:\n// tslint:disable-next-line: max-line-length\n// https://github.com/dfinity-lab/dfinity/blob/9bca65f8edd65701ea6bdb00e0752f9186bbc893/docs/spec/public/index.adoc#cbor-encoding-of-requests-and-responses\nimport borc from 'borc';\nimport * as cbor from 'simple-cbor';\nimport { SelfDescribeCborSerializer } from 'simple-cbor';\nimport { concat, fromHex } from './utils/buffer';\n// We are using hansl/simple-cbor for CBOR serialization, to avoid issues with\n// encoding the uint64 values that the HTTP handler of the client expects for\n// canister IDs. However, simple-cbor does not yet provide deserialization so\n// we are using `Uint8Array` so that we can use the dignifiedquire/borc CBOR\n// decoder.\nclass PrincipalEncoder {\n get name() {\n return 'Principal';\n }\n get priority() {\n return 0;\n }\n match(value) {\n return value && value._isPrincipal === true;\n }\n encode(v) {\n return cbor.value.bytes(v.toUint8Array());\n }\n}\nclass BufferEncoder {\n get name() {\n return 'Buffer';\n }\n get priority() {\n return 1;\n }\n match(value) {\n return value instanceof ArrayBuffer || ArrayBuffer.isView(value);\n }\n encode(v) {\n return cbor.value.bytes(new Uint8Array(v));\n }\n}\nclass BigIntEncoder {\n get name() {\n return 'BigInt';\n }\n get priority() {\n return 1;\n }\n match(value) {\n return typeof value === `bigint`;\n }\n encode(v) {\n // Always use a bigint encoding.\n if (v > BigInt(0)) {\n return cbor.value.tagged(2, cbor.value.bytes(fromHex(v.toString(16))));\n }\n else {\n return cbor.value.tagged(3, cbor.value.bytes(fromHex((BigInt('-1') * v).toString(16))));\n }\n }\n}\nconst serializer = SelfDescribeCborSerializer.withDefaultEncoders(true);\nserializer.addEncoder(new PrincipalEncoder());\nserializer.addEncoder(new BufferEncoder());\nserializer.addEncoder(new BigIntEncoder());\nexport var CborTag;\n(function (CborTag) {\n CborTag[CborTag[\"Uint64LittleEndian\"] = 71] = \"Uint64LittleEndian\";\n CborTag[CborTag[\"Semantic\"] = 55799] = \"Semantic\";\n})(CborTag || (CborTag = {}));\n/**\n * Encode a JavaScript value into CBOR.\n */\nexport function encode(value) {\n return serializer.serialize(value);\n}\nfunction decodePositiveBigInt(buf) {\n const len = buf.byteLength;\n let res = BigInt(0);\n for (let i = 0; i < len; i++) {\n // tslint:disable-next-line:no-bitwise\n res = res * BigInt(0x100) + BigInt(buf[i]);\n }\n return res;\n}\n// A BORC subclass that decodes byte strings to ArrayBuffer instead of the Buffer class.\nclass Uint8ArrayDecoder extends borc.Decoder {\n createByteString(raw) {\n return concat(...raw);\n }\n createByteStringFromHeap(start, end) {\n if (start === end) {\n return new ArrayBuffer(0);\n }\n return new Uint8Array(this._heap.slice(start, end));\n }\n}\nexport function decode(input) {\n const buffer = new Uint8Array(input);\n const decoder = new Uint8ArrayDecoder({\n size: buffer.byteLength,\n tags: {\n // Override tags 2 and 3 for BigInt support (borc supports only BigNumber).\n 2: val => decodePositiveBigInt(val),\n 3: val => -decodePositiveBigInt(val),\n [CborTag.Semantic]: (value) => value,\n },\n });\n return decoder.decodeFirst(buffer);\n}\n//# sourceMappingURL=cbor.js.map","// tslint:enable:camel-case\n// The types of values allowed in the `request_type` field for submit requests.\nexport var SubmitRequestType;\n(function (SubmitRequestType) {\n SubmitRequestType[\"Call\"] = \"call\";\n})(SubmitRequestType || (SubmitRequestType = {}));\n/**\n * Create a random Nonce, based on date and a random suffix.\n */\nexport function makeNonce() {\n // Encode 128 bits.\n const buffer = new ArrayBuffer(16);\n const view = new DataView(buffer);\n const value = BigInt(+Date.now()) * BigInt(100000) + BigInt(Math.floor(Math.random() * 100000));\n view.setBigUint64(0, value);\n // tslint:disable-next-line:no-bitwise\n view.setBigUint64(1, value >> BigInt(64));\n return buffer;\n}\n//# sourceMappingURL=types.js.map","import { lebEncode } from '@dfinity/candid';\nimport * as cbor from 'simple-cbor';\nimport { makeNonce } from './types';\nconst NANOSECONDS_PER_MILLISECONDS = BigInt(1000000);\nconst REPLICA_PERMITTED_DRIFT_MILLISECONDS = BigInt(60 * 1000);\nexport class Expiry {\n constructor(deltaInMSec) {\n // Use bigint because it can overflow the maximum number allowed in a double float.\n this._value =\n (BigInt(Date.now()) + BigInt(deltaInMSec) - REPLICA_PERMITTED_DRIFT_MILLISECONDS) *\n NANOSECONDS_PER_MILLISECONDS;\n }\n toCBOR() {\n // TODO: change this to take the minimum amount of space (it always takes 8 bytes now).\n return cbor.value.u64(this._value.toString(16), 16);\n }\n toHash() {\n return lebEncode(this._value);\n }\n}\n/**\n * Create a Nonce transform, which takes a function that returns a Buffer, and adds it\n * as the nonce to every call requests.\n * @param nonceFn A function that returns a buffer. By default uses a semi-random method.\n */\nexport function makeNonceTransform(nonceFn = makeNonce) {\n return async (request) => {\n // Nonce are only useful for async calls, to prevent replay attacks. Other types of\n // calls don't need Nonce so we just skip creating one.\n if (request.endpoint === \"call\" /* Call */) {\n request.body.nonce = nonceFn();\n }\n };\n}\n/**\n * Create a transform that adds a delay (by default 5 minutes) to the expiry.\n *\n * @param delayInMilliseconds The delay to add to the call time, in milliseconds.\n */\nexport function makeExpiryTransform(delayInMilliseconds) {\n return async (request) => {\n request.body.ingress_expiry = new Expiry(delayInMilliseconds);\n };\n}\n//# sourceMappingURL=transforms.js.map","import { Principal } from '@dfinity/principal';\nimport { AnonymousIdentity } from '../../auth';\nimport * as cbor from '../../cbor';\nimport { requestIdOf } from '../../request_id';\nimport { fromHex } from '../../utils/buffer';\nimport { Expiry } from './transforms';\nimport { SubmitRequestType, } from './types';\nexport * from './transforms';\nexport { makeNonce } from './types';\nexport var RequestStatusResponseStatus;\n(function (RequestStatusResponseStatus) {\n RequestStatusResponseStatus[\"Received\"] = \"received\";\n RequestStatusResponseStatus[\"Processing\"] = \"processing\";\n RequestStatusResponseStatus[\"Replied\"] = \"replied\";\n RequestStatusResponseStatus[\"Rejected\"] = \"rejected\";\n RequestStatusResponseStatus[\"Unknown\"] = \"unknown\";\n RequestStatusResponseStatus[\"Done\"] = \"done\";\n})(RequestStatusResponseStatus || (RequestStatusResponseStatus = {}));\n// Default delta for ingress expiry is 5 minutes.\nconst DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS = 5 * 60 * 1000;\n// Root public key for the IC, encoded as hex\nconst IC_ROOT_KEY = '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814' +\n 'c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d968' +\n '5f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484' +\n 'b01291091c5f87b98883463f98091a0baaae';\nfunction getDefaultFetch() {\n const result = typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.fetch.bind(self)\n : global.fetch.bind(global)\n : window.fetch.bind(window);\n if (!result) {\n throw new Error('Could not find default `fetch` implementation.');\n }\n return result;\n}\n// A HTTP agent allows users to interact with a client of the internet computer\n// using the available methods. It exposes an API that closely follows the\n// public view of the internet computer, and is not intended to be exposed\n// directly to the majority of users due to its low-level interface.\n//\n// There is a pipeline to apply transformations to the request before sending\n// it to the client. This is to decouple signature, nonce generation and\n// other computations so that this class can stay as simple as possible while\n// allowing extensions.\nexport class HttpAgent {\n constructor(options = {}) {\n this.rootKey = fromHex(IC_ROOT_KEY);\n this._pipeline = [];\n this._rootKeyFetched = false;\n if (options.source) {\n if (!(options.source instanceof HttpAgent)) {\n throw new Error(\"An Agent's source can only be another HttpAgent\");\n }\n this._pipeline = [...options.source._pipeline];\n this._identity = options.source._identity;\n this._fetch = options.source._fetch;\n this._host = options.source._host;\n this._credentials = options.source._credentials;\n }\n else {\n this._fetch = options.fetch || getDefaultFetch() || fetch.bind(global);\n }\n if (options.host !== undefined) {\n if (!options.host.match(/^[a-z]+:/) && typeof window !== 'undefined') {\n this._host = new URL(window.location.protocol + '//' + options.host);\n }\n else {\n this._host = new URL(options.host);\n }\n }\n else if (options.source !== undefined) {\n // Safe to ignore here.\n this._host = options.source._host;\n }\n else {\n const location = typeof window !== 'undefined' ? window.location : undefined;\n if (!location) {\n throw new Error('Must specify a host to connect to.');\n }\n this._host = new URL(location + '');\n }\n if (options.credentials) {\n const { name, password } = options.credentials;\n this._credentials = `${name}${password ? ':' + password : ''}`;\n }\n this._identity = Promise.resolve(options.identity || new AnonymousIdentity());\n }\n addTransform(fn, priority = fn.priority || 0) {\n // Keep the pipeline sorted at all time, by priority.\n const i = this._pipeline.findIndex(x => (x.priority || 0) < priority);\n this._pipeline.splice(i >= 0 ? i : this._pipeline.length, 0, Object.assign(fn, { priority }));\n }\n async getPrincipal() {\n return (await this._identity).getPrincipal();\n }\n async call(canisterId, options, identity) {\n const id = (await (identity !== undefined ? await identity : await this._identity));\n const canister = Principal.from(canisterId);\n const ecid = options.effectiveCanisterId\n ? Principal.from(options.effectiveCanisterId)\n : canister;\n const sender = id.getPrincipal() || Principal.anonymous();\n const submit = {\n request_type: SubmitRequestType.Call,\n canister_id: canister,\n method_name: options.methodName,\n arg: options.arg,\n sender,\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = (await this._transform({\n request: {\n body: null,\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"call\" /* Call */,\n body: submit,\n }));\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n // Run both in parallel. The fetch is quite expensive, so we have plenty of time to\n // calculate the requestId locally.\n const [response, requestId] = await Promise.all([\n this._fetch('' + new URL(`/api/v2/canister/${ecid.toText()}/call`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body })),\n requestIdOf(submit),\n ]);\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return {\n requestId,\n response: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n },\n };\n }\n async query(canisterId, fields, identity) {\n const id = await (identity !== undefined ? await identity : await this._identity);\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n const request = {\n request_type: \"query\" /* Query */,\n canister_id: canister,\n method_name: fields.methodName,\n arg: fields.arg,\n sender,\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = await this._transform({\n request: {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"read\" /* Query */,\n body: request,\n });\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n const response = await this._fetch('' + new URL(`/api/v2/canister/${canister.toText()}/query`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body }));\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return cbor.decode(await response.arrayBuffer());\n }\n async readState(canisterId, fields, identity) {\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n const id = await (identity !== undefined ? await identity : await this._identity);\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = await this._transform({\n request: {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"read_state\" /* ReadState */,\n body: {\n request_type: \"read_state\" /* ReadState */,\n paths: fields.paths,\n sender,\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n },\n });\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n const response = await this._fetch('' + new URL(`/api/v2/canister/${canister}/read_state`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body }));\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return cbor.decode(await response.arrayBuffer());\n }\n async status() {\n const headers = this._credentials\n ? {\n Authorization: 'Basic ' + btoa(this._credentials),\n }\n : {};\n const response = await this._fetch('' + new URL(`/api/v2/status`, this._host), { headers });\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return cbor.decode(await response.arrayBuffer());\n }\n async fetchRootKey() {\n if (!this._rootKeyFetched) {\n // Hex-encoded version of the replica root key\n this.rootKey = (await this.status()).root_key;\n this._rootKeyFetched = true;\n }\n return this.rootKey;\n }\n _transform(request) {\n let p = Promise.resolve(request);\n for (const fn of this._pipeline) {\n p = p.then(r => fn(r).then(r2 => r2 || r));\n }\n return p;\n }\n}\n//# sourceMappingURL=index.js.map","import { Principal } from '@dfinity/principal';\nexport var ProxyMessageKind;\n(function (ProxyMessageKind) {\n ProxyMessageKind[\"Error\"] = \"err\";\n ProxyMessageKind[\"GetPrincipal\"] = \"gp\";\n ProxyMessageKind[\"GetPrincipalResponse\"] = \"gpr\";\n ProxyMessageKind[\"Query\"] = \"q\";\n ProxyMessageKind[\"QueryResponse\"] = \"qr\";\n ProxyMessageKind[\"Call\"] = \"c\";\n ProxyMessageKind[\"CallResponse\"] = \"cr\";\n ProxyMessageKind[\"ReadState\"] = \"rs\";\n ProxyMessageKind[\"ReadStateResponse\"] = \"rsr\";\n ProxyMessageKind[\"Status\"] = \"s\";\n ProxyMessageKind[\"StatusResponse\"] = \"sr\";\n})(ProxyMessageKind || (ProxyMessageKind = {}));\n// A Stub Agent that forwards calls to another Agent implementation.\nexport class ProxyStubAgent {\n constructor(_frontend, _agent) {\n this._frontend = _frontend;\n this._agent = _agent;\n }\n onmessage(msg) {\n switch (msg.type) {\n case ProxyMessageKind.GetPrincipal:\n this._agent.getPrincipal().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.GetPrincipalResponse,\n response: response.toText(),\n });\n });\n break;\n case ProxyMessageKind.Query:\n this._agent.query(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.QueryResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Call:\n this._agent.call(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.CallResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.ReadState:\n this._agent.readState(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.ReadStateResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Status:\n this._agent.status().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.StatusResponse,\n response,\n });\n });\n break;\n default:\n throw new Error(`Invalid message received: ${JSON.stringify(msg)}`);\n }\n }\n}\n// An Agent that forwards calls to a backend. The calls are serialized\nexport class ProxyAgent {\n constructor(_backend) {\n this._backend = _backend;\n this._nextId = 0;\n this._pendingCalls = new Map();\n this.rootKey = null;\n }\n onmessage(msg) {\n const id = msg.id;\n const maybePromise = this._pendingCalls.get(id);\n if (!maybePromise) {\n throw new Error('A proxy get the same message twice...');\n }\n this._pendingCalls.delete(id);\n const [resolve, reject] = maybePromise;\n switch (msg.type) {\n case ProxyMessageKind.Error:\n return reject(msg.error);\n case ProxyMessageKind.GetPrincipalResponse:\n case ProxyMessageKind.CallResponse:\n case ProxyMessageKind.QueryResponse:\n case ProxyMessageKind.ReadStateResponse:\n case ProxyMessageKind.StatusResponse:\n return resolve(msg.response);\n default:\n throw new Error(`Invalid message being sent to ProxyAgent: ${JSON.stringify(msg)}`);\n }\n }\n async getPrincipal() {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.GetPrincipal,\n }).then(principal => {\n if (typeof principal !== 'string') {\n throw new Error('Invalid principal received.');\n }\n return Principal.fromText(principal);\n });\n }\n readState(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.ReadState,\n args: [canisterId.toString(), fields],\n });\n }\n call(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Call,\n args: [canisterId.toString(), fields],\n });\n }\n status() {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Status,\n });\n }\n query(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Query,\n args: [canisterId.toString(), fields],\n });\n }\n async _sendAndWait(msg) {\n return new Promise((resolve, reject) => {\n this._pendingCalls.set(msg.id, [resolve, reject]);\n this._backend(msg);\n });\n }\n async fetchRootKey() {\n // Hex-encoded version of the replica root key\n const rootKey = (await this.status()).root_key;\n this.rootKey = rootKey;\n return rootKey;\n }\n}\n//# sourceMappingURL=proxy.js.map","export * from './api';\nexport * from './http';\nexport * from './proxy';\nexport function getDefaultAgent() {\n const agent = typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.ic.agent\n : global.ic.agent\n : window.ic.agent;\n if (!agent) {\n throw new Error('No Agent could be found.');\n }\n return agent;\n}\n//# sourceMappingURL=index.js.map","/**\n * This file is generated from the candid for asset management.\n */\n/* tslint:disable */\n// @ts-ignore\nexport default ({ IDL }) => {\n const canister_id = IDL.Principal;\n const wasm_module = IDL.Vec(IDL.Nat8);\n const CanisterSettings = IDL.Record({\n compute_allocation: IDL.Opt(IDL.Nat),\n memory_allocation: IDL.Opt(IDL.Nat),\n });\n return IDL.Service({\n provisional_create_canister_with_cycles: IDL.Func([IDL.Record({ amount: IDL.Opt(IDL.Nat), settings: IDL.Opt(CanisterSettings) })], [IDL.Record({ canister_id: canister_id })], []),\n create_canister: IDL.Func([], [IDL.Record({ canister_id: canister_id })], []),\n install_code: IDL.Func([\n IDL.Record({\n mode: IDL.Variant({ install: IDL.Null, reinstall: IDL.Null, upgrade: IDL.Null }),\n canister_id: canister_id,\n wasm_module: wasm_module,\n arg: IDL.Vec(IDL.Nat8),\n }),\n ], [], []),\n set_controller: IDL.Func([IDL.Record({ canister_id: canister_id, new_controller: IDL.Principal })], [], []),\n });\n};\n//# sourceMappingURL=management_idl.js.map","import { Actor } from '../actor';\nimport { Principal } from '@dfinity/principal';\nimport managementCanisterIdl from './management_idl';\n/* tslint:enable */\n/**\n * Create a management canister actor.\n * @param config\n */\nexport function getManagementCanister(config) {\n function transform(methodName, args, callConfig) {\n const first = args[0];\n let effectiveCanisterId = Principal.fromHex('');\n if (first && typeof first === 'object' && first.canister_id) {\n effectiveCanisterId = Principal.from(first.canister_id);\n }\n return { effectiveCanisterId };\n }\n return Actor.createActor(managementCanisterIdl, Object.assign(Object.assign(Object.assign({}, config), { canisterId: Principal.fromHex('') }), {\n callTransform: transform,\n queryTransform: transform,\n }));\n}\n//# sourceMappingURL=management.js.map","/**\n * An error that happens in the Agent. This is the root of all errors and should be used\n * everywhere in the Agent code (this package).\n *\n * @todo https://github.com/dfinity/agent-js/issues/420\n */\nexport class AgentError extends Error {\n}\n//# sourceMappingURL=errors.js.map","import * as base64Arraybuffer from 'base64-arraybuffer';\n/* tslint:disable */\n/* eslint-disable */\nlet wasm;\n// This WASM is generated from the BLS Rust code of the Agent RS (see\n// http://github.com/dfinity/agent-rs/)\n// Once the WASM is compiled, simply base64 encode it and include it in this string.\nconst wasmBytesBase64 = `\n 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\n g8AAEF8CQAJAIAZB6AFqEFoNACAGQShqEIQBDQAgBkGIPWoQS0EAIQcgBkGIwwBqQTgQchogBkG4IWpBOBByGiAGQYjA\n AGoQSyAGQcjEAGoQSyAGQcjJAGoQSyAGQcjMAGoQSyAGQagGahBLIAZBsAxqEEsgBkHIzwBqEEsgBkHQ1QBqEEsgBkHY\n 2wBqEEsgBkG4FWoQSyAGQZgjaiAGQcjJAGpBwAEQZxogBkHYJGogBkHIzABqQcABEGcaIAZBmCZqIAZBqAZqQcABEGca\n IAZB2CdqIAZBsAxqQcABEGcaIAZBmClqIAZByM8AakHAARBnGiAGQdgqaiAGQdDVAGpBwAEQZxogBkGYLGogBkHY2wBq\n QcABEGcaIAZB2C1qIAZBuBVqQcABEGcaIAZBuBVqQecAEHIaIAZBiMAAaiAGQShqEH8gBkGIwABqEBggBkGYI2ogBkEo\n ahB/A0AgB0HACkYEQCAGQbghaiAGQegBahBrIAYpA7ghIRcgBkG4IWpBARCdASAGQbghahBEIAYpA7ghIRYgBkGIwwBq\n IAZBuCFqEGsgBkGIwwBqQQEQnQEgBkGIwwBqEEQgBkG4IWogBkGIwwBqIBdCAoGnEE8gBkGIwABqIAZBKGogFkICgacQ\n bSAGQcjEAGogBkGIwABqEH8gBkG4IWoQKUEDaiIJQQJ2IgdBAWohAkEAIQgCQAJAAkADQAJAIAZBuCFqQQUQjAEhAyAC\n IAhGBEAgCUGYA0kNASACQecAQbCEwAAQPAALIAhB5wBGDQIgBkG4FWogCGogA0FwaiIDOgAAIAZBuCFqIANBGHRBGHUQ\n ngEgBkG4IWoQRCAGQbghakEEEDsgCEEBaiEIDAELCyAGQbgVaiACaiADOgAAIANBGHRBGHVBf2oiA0EBdiECIANBD0sN\n ASAGQYg9aiAGQZgjaiACQcABbGoQfwNAIAdBf0YEQCAGQYg9aiAGQcjEAGoQcyAGQZgjaiAGQYg9akHAARBnGgwICyAH\n QeYASw0DIAZBiMAAaiAGQZgjaiAGQbgVaiAHaiwAABAfIAdBf2ohByAGQYg9ahAYIAZBiD1qEBggBkGIPWoQGCAGQYg9\n ahAYIAZBiD1qIAZBiMAAahAMDAALAAtB5wBB5wBBoITAABA8AAsgAkEIQcCEwAAQPAALIAdB5wBB0ITAABA8AAUgBkHI\n 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\n UtcEAKAIAIgFBASACdCICcQRAIAAoAggMAQtB1LXBACABIAJyNgIAIAALIQEgACAENgIIIAEgBDYCDCAEIAA2AgwgBCAB\n NgIIC0EAIQVB6LjBACgCACIAIAZNDQBB6LjBACAAIAZrIgI2AgBB8LjBAEHwuMEAKAIAIgEgBmoiADYCACAAIAJBAXI2A\n gQgASAGQQNyNgIEIAFBCGoPCyAFDwsgASAHNgIYIAMoAhAiAARAIAEgADYCECAAIAE2AhgLIANBFGooAgAiAEUNACABQR\n RqIAA2AgAgACABNgIYCwJAIAVBEE8EQCADIAZBA3I2AgQgAyAGaiIEIAVBAXI2AgQgBCAFaiAFNgIAQeS4wQAoAgAiAAR\n AIABBA3YiAkEDdEHctcEAaiEAQey4wQAoAgAhBwJ/QdS1wQAoAgAiAUEBIAJBH3F0IgJxBEAgACgCCAwBC0HUtcEAIAEg\n AnI2AgAgAAshAiAAIAc2AgggAiAHNgIMIAcgADYCDCAHIAI2AggLQey4wQAgBDYCAEHkuMEAIAU2AgAMAQsgAyAFIAZqI\n gBBA3I2AgQgACADaiIAIAAoAgRBAXI2AgQLIANBCGoLtA8BA38jAEGAC2siAiQAIAJBCGoQSyACQcgBakE4EHIaIAJBAT\n YCgAIgAkGIAmpBOBByGiACQQE2AsACIAJByAJqQTgQchogAkEBNgKAAyACQYgDakE4EHIaIAJBATYCwAMgAkHIA2pBOBB\n yGiACQQE2AoAEIAJBiARqQQEQigEgAkHIBGpBOBByGiACQQE2AoAFIAJBiAVqQTgQchogAkEBNgLABSACQcgFaiABEIUB\n IAJBiAZqQTgQchogAkEBNgLABiACQcgGakE4EHIaIAJBATYCgAcgAkGIB2pBOBByGiACQQE2AsAHIAJByAdqQTgQchogA\n kEBNgKACCACQcgFahBYIQMgAkHICWpB4ITAABBfIAJBiApqIAJByAlqEIsBIAJByAFqIAJBiApqEKUBIAJByAlqQZiFwA\n AQXyACQYgKaiACQcgJahCLASACQYgCaiACQYgKahClASACQcgFahADIAJByAVqQQsQUiACQYgGaiACQcgFahClASACQYg\n GaiACQYgEahB4IAJBiAZqEEQgAkGIBmogAkHIBWoQSCACQYgFaiACQcgBahClASACQYgFaiACQYgGahBIIAJBiAZqIAJB\n iARqEHggAkGIBmoQRCACQYgGaiACQYgCahBIIAJBiAZqEEEgAkGIBmoQRCACQYgDaiACQYgGahClASACQcgDaiACQcgFa\n hClASACQcgDaiACQYgDahBIIAJByAdqIAJBiANqEKUBIAJByAdqEAMgAkHIBmogAkGIBWoQpQEgAkHIBmoQAyACQYgGai\n ACQcgBahClASACQYgGaiACQcgGahBIIAJByAdqIAJBiAZqEHggAkHIB2oQRCACQcgHaiACQYgDahBIIAJByAZqIAJBiAV\n qEEggAkGIBmogAkGIAmoQpQEgAkGIBmogAkHIBmoQSCACQcgHaiACQYgGahB4IAJByAdqEEQgAkGIBmogAkHIB2oQpQEg\n AkGIBmogAkGIBWoQSCACQYgGaiACQYgHahBcIQQgAkGIBWogAkGIBmoQpQEgAkGIBWogAkGIB2oQNCACQYgFaiACQcgHa\n hBIIAJBiANqIAJBiAVqEEggAkHIA2ogAkGIBWoQSCACQcgFaiABEEggAkHIBmogAkGIBWoQpQEgAkHIBmoQAyACQYgFai\n ACQcgGahClASACQYgFaiACQcgFahBIIAJByAVqIAJBiAZqEKUBIAJByAVqQQsQUiACQcgJakHQhcAAEF8gAkGICmogAkH\n ICWoQiwEgAkHIAmogAkGICmoQpQEgAkHIAmogAkGIB2oQSCACQYgDaiACQcgDakEBIARrIgEQeSACQcgGaiACQYgFaiAB\n EHkgAkGIBmogAkHIBWogARB5IAJBiAdqIAJByAJqIAEQeSACQYgKaiACQYgGaiACQYgHahAjIAJByARqIAJBiApqEKUBI\n AJByARqIAJByAZqEEggAkHIBGoQWCEBIAJBiAZqIAJByARqEKUBIAJBiAZqEEEgAkGIBmoQRCACQcgEaiACQYgGaiABIA\n NzEHkgAkGICmpBiIbAABBfIAJBiAhqIAJBiApqEIsBQTghAQNAIAFBoAVGRQRAIAJBiAhqIAJBiANqEEggAkHICWogAUG\n IhsAAahBfIAFBOGohASACQYgKaiACQcgJahCLASACQYgGaiACQYgKahClASACQYgIaiACQYgGahB4IAJBiAhqEEQMAQsL\n IAJByAhqIAJBiANqEIUBIAJByAlqQaiLwAAQXyACQYgKaiACQcgJahCLASACQYgGaiACQYgKahClASACQcgIaiACQYgGa\n hB4IAJByAhqEERBACEBA0AgAUH4A0ZFBEAgAkHICGogAkGIA2oQSCACQcgJaiABQeCLwABqEF8gAUE4aiEBIAJBiApqIA\n JByAlqEIsBIAJBiAZqIAJBiApqEKUBIAJByAhqIAJBiAZqEHggAkHICGoQRAwBCwsgAkGICmpB2I/AABBfIAJBiAlqIAJ\n BiApqEIsBQQAhAQNAIAFByAZGBEACQCACQcgJaiACQYgDahCFASACQcgKakHYlsAAEF8gAkGICmogAkHICmoQiwEgAkGI\n BmogAkGICmoQpQEgAkHICWogAkGIBmoQeCACQcgJahBEQQAhAQNAIAFBkAZGDQEgAkHICWogAkGIA2oQSCACQcgKaiABQ\n ZCXwABqEF8gAUE4aiEBIAJBiApqIAJByApqEIsBIAJBiAZqIAJBiApqEKUBIAJByAlqIAJBiAZqEHggAkHICWoQRAwACw\n ALBSACQYgJaiACQYgDahBIIAJByAlqIAFBkJDAAGoQXyABQThqIQEgAkGICmogAkHICWoQiwEgAkGIBmogAkGICmoQpQE\n gAkGICWogAkGIBmoQeCACQYgJahBEDAELCyACQYgJaiACQcgEahBIIAJBiAZqIAJBiAhqEKUBIAJBiAZqIAJByAlqEEgg\n AkEIaiACQYgGahClASACQYgGaiACQYgJahClASACQYgGaiACQcgIahBIIAJByABqIAJBiAZqEKUBIAJBiAZqIAJByAhqE\n KUBIAJBiAZqIAJByAlqEEggAkGIAWogAkGIBmoQpQEgACACQQhqQcABEGcaIAJBgAtqJAALzQ0CE38IfiMAQYADayIBJA\n AgADQCOCIUIBR+QoCAgBBaBEAgABASCyABQeABakHoABByGiABQcgBaiAAKQMAIhggGEI/hyIZIBggGRAxIAEgASkDyAE\n iFEL//////////wODNwPYASABQdABaikDACIXQgaGIBRCOoiEIRUgF0I6iCEaIABBCGoiCyEFIAAhBkEBIQcDQCAHQQZP\n BEAgAEEYaiEMIABBKGohCyAAQRBqIQcgACkDMCEYQQQhBkEAIQkgAUGgAWohDUEDIQpBAiEIQQchBQJAAkADQCAFQQpLD\n QIgBiAIIAYgCEsbIQ4gBiAKIAYgCksbQQN0QWhqIQ8gAUGYAWogBUEDdCIQIABqQVBqKQMAIhQgFEI/hyAYIBhCP4ciGR\n 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\n OBByGiACQQE2AvgMIAJBgA1qQTgQchogAkG4DWpBATYCACACQYAIakE4EHIaIAJBATYCuAggAkHACGpBOBByGiACQfgIa\n kEBNgIAIAJBgApqIABBgANqIgMQXiACQYAIaiACQYAKahCQASACQYAKaiABQYADaiIFEF4gAkGACGogAkGACmoQDyACQc\n AMahCpASAERQRAIAJBgApqIAMQXiACQcAMaiACQYAKahCQASACQYAKaiABQYACahBeIAJBwAxqIAJBgApqEA8LIAAoAoA\n GQQRHBEAgAkGACmogAEGAAmoQXiACQcAMaiACQYAKahCQASACQYAKaiAFEF4gAkHADGogAkGACmoQDwsgAkGABGogAkHA\n DGogAkGACGoQoQEgAkGABGoQZgsgAkGACGogABCOASACQYAKaiABEI4BIAJBgAhqIABBgAJqIgQQlgEgAkGACGoQrAEgA\n kGACmogAUGAAmoiBRCWASACQYAKahCsASACQYACaiACQYAIahCSASACQYACaiACQYAKahAZIAJBgAhqIAQQkgEgAkGACG\n ogAEGABGoiAxCWASACQYAIahCsASACQYAKaiAFEJIBIAJBgApqIAFBgARqIgUQlgEgAkGACmoQrAEgAkGABmogAkGACGo\n QkgEgAkGABmogAkGACmoQGSACQYAIaiACEJIBIAJBgAhqECsgAkGACmogAkGABGoQkgEgAkGACmoQKyACQYACaiACQYAI\n ahCWASAEIAJBgAJqEJIBIAQgAkGACmoQlgEgAkGABmogAkGACmoQlgEgAkGABGogAkGACGoQlgEgAkGACGogABCSASACQ\n YAIaiADEJYBIAJBgAhqEKwBIAJBgApqIAEQkgEgAkGACmogBRCWASACQYAKahCsASACQYAIaiACQYAKahAZIAJBgARqIA\n JBgAhqEJYBIAJBgAhqIAMQkgEgAkGACGogBRAZIAJBgApqIAJBgAhqEJIBIAJBgApqECsgAyACQYAEahCSASADIAJBgAp\n qEJYBIAJBgAZqIAJBgApqEJYBIAJBgAhqEGYgBCACQYAIahCWAQwDCyAAIAEQBgwECyACQcAMaiABQYAFahBeIAJBgAxq\n IAJBwAxqQcAAEGcaIAJBgAZqIAJBgAxqEKMBCyACQYAGahBmIAJBgAhqIAIQkgEgAkGACGoQKyACQYACaiACQYAIahCWA\n SAFIAJBgAJqEJIBIAJBgARqIAJBgAhqEJIBIAJBgAhqIAAQkgEgAkGACGogAxCWASACQYAIahCsASACQYAKaiABEJIBIA\n JBgApqIAFBgARqEJYBIAJBgApqEKwBIAJBgAhqIAJBgApqEBkgAkGABGogAkGACGoQlgEgAkGACGogAxCSAQJAIARBAkc\n EQCACQcAMaiABQYAFahBeIAJBgAhqIAJBwAxqEKIBDAELIAJBwAxqIAFBgAVqEF4gAkGADGogAkHADGpBwAAQZxogAkGA\n CGogAkGADGoQowELIAJBgAhqEGYgAkGACmogAkGACGoQkgEgAkGACmoQKyADIAJBgARqEJIBIAMgAkGACmoQlgEgAkGAB\n mogAkGACmoQlgEgAkGACGoQZiAFIAJBgAhqEJYBCyACQYAGahCsASACQYAGahBmIAAgAhCSASAAIAJBgAZqEJYBIABBBT\n YCgAYgABCZAQwBCyAAIAEQbAsgAkHADWokAAuaCQIPfwt+IwBBwAJrIgIkACACQeAAakGgp8AAEF8gAEE4EHIhDCACQZg\n BakHwABByGiACQZACakEwEHIaIAwQdCACIAEpAwAiFEL9//P/z///+QF+Qv//////////A4MiETcDiAIgAkHQAGogEUIA\n IAIpA2AiGCAYQj+HIhoQMSAUIAIpA1AiEXwiFiARVK0gAkHYAGopAwAgFEI/h3x8IhRCOocgASkDCCIRQj+HfCARIBRCB\n oYgFkI6iIQiEXwiEiARVK18IRNBASEDAkADQAJAIANBB0YEQCACQZACaiEJIAJB6ABqIQpBByEEIAJB4ABqIQ0gAkGIAm\n ohDkEGIQ8MAQsgA0EBdiIAQQFqIQUgCiAAayEGIAkgAEEDdCIHayEAIAdBCGohCCACQUBrIANBA3QiBCACQeAAamopAwA\n iFiAWQj+HIhQgAikDiAIiESARQj+HEDEgAkHIAGopAwAgEiAVfCIRIBJUrSATIBd8fHwgESACKQNAfCITIBFUrXwhEiAD\n QQFqIQcDQCADIAVNBEAgAkGIAmogBGogE0L9//P/z///+QF+Qv//////////A4MiETcDACACQTBqIBFCACAYIBoQMSACQ\n SBqIBFCACAWIBQQMSACQZgBaiADQQR0aiIAIAJBKGopAwAiGzcDCCAAIAIpAyAiGTcDACACKQMwIhEgE3wiFiARVK0gAk\n E4aikDACASfHwiFEI6hyABIAdBA3RqKQMAIhFCP4d8IBEgFEIGhiAWQjqIhCIRfCISIBFUrXwhEyAVIBl8IhUgGVStIBc\n gG3x8IRcgCUEIaiEJIApBAWohCiAHIQMMAwsgBkEGSw0DIAJBEGogAkHgAGogCGopAwAgAkHgAGogAGopAwB9IhEgEUI/\n hyACQYgCaiAAaikDACACQYgCaiAIaikDAH0iESARQj+HEDEgAikDECIRIBN8IhMgEVStIAJBGGopAwAgEnx8IRIgBUEBa\n iEFIABBeGohACAGQX9qIQYgCEEIaiEIDAALAAsLA0ACQCAEQQ1HBEAgDyAEQQF2IgBrIQUgDiAAQQN0IgtrIRAgDSALay\n EIIBMgF3wgEiAVfCITIBJUrXwhEiAEQQFqIQdBMCEAIAkhBiAKIQMDQCAAIAtGDQIgBUEGTQRAIAIgAyALaikDACAAIAh\n qKQMAfSIRIBFCP4cgACAQaikDACAGIAtqKQMAfSIRIBFCP4cQMSACKQMAIhEgE3wiEyARVK0gAkEIaikDACASfHwhEiAF\n QX9qIQUgBkEIaiEGIANBCGohAyAAQXhqIQAMAQsLIAVBB0HknsAAEDwACyAMIBJC//////////8DgzcDMCACQcACaiQAD\n wsgBEEDdCAMakFIaiATQv//////////A4M3AwAgEkI6hyABIAdBA3RqKQMAIhFCP4d8IBEgEkIGhiATQjqIhCIRfCISIB\n FUrXwhEyAXIARBBHQgAmpBOGoiAEEIaikDAH0gFSAAKQMAIhFUrX0hFyAOQQhqIQ4gDUEIaiENIA9BAWohDyAVIBF9IRU\n gByEEDAALAAsgBkEHQdSewAAQPAAL+QkBBH8jAEGACWsiAiQAIAJBgAhqIAAQXiACIAJBgAhqEF4gAkGACGogAEGAAWoi\n BBBeIAJBgAFqIAJBgAhqEF4gAkGACGogARBeIAIgAkGACGoQDyACQYAIaiABQYABaiIFEF4gAkGAAWogAkGACGoQDyAAK\n AKABiEDAkACQCABKAKABkECRwRAIANBAkYNASACQYAIaiAAQYAFahBeIAJBgAJqIAJBgAhqEF4gAkGACGogAUGABWoQXi\n ACQYACaiACQYAIahAPDAILIANBAkYEQCACQYAIaiAAQYAFahBeIAJBgAdqIAJBgAhqQcAAEGcaIAJBgAZqIAJBgAdqEIU\n BIAJBgAhqIAFBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGABmogAkGAB2oQSCACQYAIakE4EHIaIAJBATYCuAggAkHA\n CGpBOBByIAJB+AhqQQE2AgAgAkGACGogAkGABmoQpQEQsgEgAkGAAmogAkGACGpBgAEQZxoMAgsgAkGACGogAEGABWoQX\n iACQYACaiACQYAIahBeIAJBgAhqIAFBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGAAmogAkGAB2oQoAEMAQsgAkGACG\n ogAUGABWoQXiACQYACaiACQYAIahBeIAJBgAhqIABBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGAAmogAkGAB2oQoAE\n LIAJBgAhqIAAQXiACQYADaiACQYAIahBeIAJBgAhqIAEQXiACQYAEaiACQYAIahBeIAJBgAhqIAQQXiACQYADaiACQYAI\n ahCVASACQYADahCoASACQYAIaiAFEF4gAkGABGogAkGACGoQlQEgAkGABGoQqAEgAkGABWogAkGAA2oQXiACQYAFaiACQ\n YAEahAPIAJBgAZqIAIQXiACQYAGaiACQYABahCVASACQYAGahA6IAJBgAVqIAJBgAZqEJUBIAJBgAhqIAAQXiACQYADai\n ACQYAIahCQASACQYAIaiAAQYAFaiIDEF4gAkGAA2ogAkGACGoQlQEgAkGAA2oQqAEgAkGACGogARBeIAJBgARqIAJBgAh\n qEJABIAJBgAhqIAFBgAVqIgEQXiACQYAEaiACQYAIahCVASACQYAEahCoASACQYAHaiACQYADahBeIAJBgAdqIAJBgARq\n EA8gAkGABmogAhCQASACQYAGaiACQYACahCVASACQYAGahA6IAJBgAdqIAJBgAZqEJUBIAJBgAhqIAQQXiACQYADaiACQ\n YAIahCQASACQYAIaiADEF4gAkGAA2ogAkGACGoQlQEgAkGAA2oQqAEgAkGACGogBRBeIAJBgARqIAJBgAhqEJABIAJBgA\n hqIAEQXiACQYAEaiACQYAIahCVASACQYAEahCoASACQYAIaiACQYADahBeIAJBgAhqIAJBgARqEA8gAkGABmogAkGAAWo\n QkAEgAkGABmogAkGAAmoQlQEgAkGABmoQOiACQYAIaiACQYAGahCVASACQYABahBVIAIgAkGAAWoQlQEgACACIAJBgAVq\n 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\n GogAkGABWoQfSACQYAEahCoASACQYAFaiAAEJABIAJBgAVqIAQQlQEgAkGABWoQqAEgAkGABmogARBeIAJBgAZqIAYQlQ\n EgAkGABmoQqAEgAkGABWogAkGABmoQDyACQYAGaiACEJABIAJBgAZqIAJBgAJqEJUBIAJBgAZqIAJBgAVqELUBIAJBgAZ\n qEKgBIAJBgAVqIAIQkAEgAkGABWogAhCVASACIAJBgAVqEJUBIAIQqAEgAkGAAmpBDBCfASACQYACahBVIAJBgAJqEKgB\n IAJBgAdqIAJBgAFqEF4gAkGAB2ogAkGAAmoQlQEgAkGAB2oQqAEgAkGAAWogAkGAAmoQfSACQYABahCoASACQYAGakEME\n J8BIAJBgAZqEFUgAkGABmoQqAEgAkGABWogAkGABmoQkAEgAkGABWogAkGABGoQDyACQYACaiACQYADahCQASACQYACai\n ACQYABahAPIAJBgAVqIAJBgAJqELUBIAJBgAZqIAIQDyACQYABaiACQYAHahAPIAJBgAZqIAJBgAFqEJUBIAIgAkGAA2o\n QDyACQYAHaiACQYAEahAPIAJBgAdqIAIQlQEgACACQYAFahCQASAAEKgBIAMgAkGABmoQkAEgAxCoASAEIAJBgAdqEJAB\n IAQQqAEgAkGACGokAAv2BQEFfyMAQYAEayICJAAgAiAAEIUBIAIgARBIIAJBQGsgAEFAayIDEIUBIAJBQGsgAUFAayIFE\n EggAkGAAWogAEGAAWoiBBCFASACQYABaiABQYABaiIGEEggAkHAAWogABCFASACQcABaiADEHggAkHAAWoQRCACQYACai\n ABEIUBIAJBgAJqIAUQeCACQYACahBEIAJBwAFqIAJBgAJqEEggAkGAAmogAhClASACQYACaiACQUBrEHggAkHAAWogAkG\n AAmoQgAEgAkHAAWoQRCACQYACaiADEKUBIAJBgAJqIAQQeCACQYACahBEIAJBwAJqIAUQhQEgAkHAAmogBhB4IAJBwAJq\n EEQgAkGAAmogAkHAAmoQSCACQcACaiACQUBrEKUBIAJBwAJqIAJBgAFqEHggAkGAAmogAkHAAmoQgAEgAkGAAmoQRCACQ\n cACaiAAEKUBIAJBwAJqIAQQeCACQcACahBEIAJBgANqIAEQhQEgAkGAA2ogBhB4IAJBgANqEEQgAkHAAmogAkGAA2oQSC\n ACQYADaiACEKUBIAJBgANqIAJBgAFqEHggAkGAA2ogAkHAAmoQswEgAkGAA2oQRCACQcACaiACEKUBIAJBwAJqIAIQeCA\n CIAJBwAJqEHggAhBEIAJBgAFqQQwQUiACQcADaiACQUBrEIUBIAJBwANqIAJBgAFqEHggAkHAA2oQRCACQUBrIAJBgAFq\n EIABIAJBQGsQRCACQYADakEMEFIgAkHAAmogAkGAA2oQpQEgAkHAAmogAkGAAmoQSCACQYABaiACQcABahClASACQYABa\n iACQUBrEEggAkHAAmogAkGAAWoQswEgAkGAA2ogAhBIIAJBQGsgAkHAA2oQSCACQYADaiACQUBrEHggAiACQcABahBIIA\n JBwANqIAJBgAJqEEggAkHAA2ogAhB4IAAgAkHAAmoQpQEgABBEIAMgAkGAA2oQpQEgAxBEIAQgAkHAA2oQpQEgBBBEIAJ\n BgARqJAALxQUBBH8jAEHwEmsiACQAIAAQOEF/IQEgABCIAUUEQCAAQYADakE4EHIaIABBuANqQTgQchogAEG4A2ogAEGA\n A2oQVCAAQfAKakG4gMAAEF8gAEHwDWpB8IDAABBfIABB8ANqIABB8ApqIABB8A1qEEkgAEHwBGpBOBByGiAAQQE2AqgFI\n ABBsAVqQTgQchogAEHoBWpBATYCACAAQfAFakE4EHIaIABBATYCqAYgAEGwBmpBOBByGiAAQegGakEBNgIAIABB8AZqQT\n gQchogAEEBNgKoByAAQbAHakE4EHIaIABB6AdqQQE2AgBBf2ohAyAAQfAHahAqIABB8AdqIAAQfiAAQfAKahAqIABB8Ap\n qIABB8AdqEH4gAEHwDWoQKiAAQfANaiAAQfAHahB+IABB8A1qEJwBAkACQAJAA0AgAiEBIANBAkkNAyAAQfAKaiAAQfAE\n aiAAQfAFaiAAQfAGahAlIAFBxABNBEAgAEHwEGogAEHwBGogAEHwBWogAEHwBmoQRiABQQh0QdCrwABqIABB8BBqEJIBI\n AFBAWohAgJAAkAgAEG4A2ogA0F/aiIDEFcgAEGAA2ogAxBXa0EBag4DAQMAAwsgAEHwCmogAEHwB2ogAEHwBGogAEHwBW\n ogAEHwBmoQHiABQcMASw0DIABB8BBqIABB8ARqIABB8AVqIABB8AZqEEYgAkEIdEHQq8AAaiAAQfAQahCSASABQQJqIQI\n MAgsgAEHwCmogAEHwDWogAEHwBGogAEHwBWogAEHwBmoQHiABQcMASw0DIABB8BBqIABB8ARqIABB8AVqIABB8AZqEEYg\n AkEIdEHQq8AAaiAAQfAQahCSASABQQJqIQIMAQsLIAFBxQBBvIHAABA8AAtBxQBBxQBBzIHAABA8AAtBxQBBxQBB3IHAA\n BA8AAtBACEBCyAAQfASaiQAIAEL8gQBBH8jAEGADGsiAiQAIAIgABCOASACQYACahAvIAJBgARqIABBgAJqIgMQjgEgAk\n GABmoQLyACQYAIaiAAEI4BIAJBgApqIAEQjgEgAiABEBkgAkGABGogAUGAAmoiBBAZIAJBgAhqIAMQlgEgAkGACmogBBC\n WASACQYAIahCsASACQYAKahCsASACQYACaiACQYAIahCSASACQYACaiACQYAKahAZIAJBgAhqIAMQkgEgAkGACGogAEGA\n BGoiBRCWASACQYAKaiAEEJIBIAJBgApqIAFBgARqIgQQlgEgAkGACGoQrAEgAkGACmoQrAEgAkGABmogAkGACGoQkgEgA\n kGABmogAkGACmoQGSACQYAIaiACEJIBIAJBgAhqECsgAkGACmogAkGABGoQkgEgAkGACmoQKyACQYACaiACQYAIahCWAS\n ADIAJBgAJqEJIBIAMgAkGACmoQlgEgAkGABmogAkGACmoQlgEgAkGABGogAkGACGoQlgEgAkGACGogABCSASACQYAIaiA\n FEJYBIAJBgAhqEKwBIAJBgApqIAEQkgEgAkGACmogBBCWASACQYAKahCsASACQYAIaiACQYAKahAZIAJBgARqIAJBgAhq\n EJYBIAJBgAhqIAUQkgEgAkGACGogBBAZIAJBgApqIAJBgAhqEJIBIAJBgApqECsgBSACQYAEahCSASAFIAJBgApqEJYBI\n AJBgAZqIAJBgApqEJYBIAJBgAhqEGYgAyACQYAIahCWASACQYAGahCsASACQYAGahBmIAAgAhCSASAAIAJBgAZqEJYBIA\n BBBTYCgAYgABCZASACQYAMaiQAC68EAQV/IwBBkAZrIgIkACAAQUBrIQQCQCABQfgAaigCACABKAI4aqwgAEH4AGooAgA\n iAyAAKAI4IgVqrH5CgICAEFMNACAFQQJOBH8gABASIAAoAngFIAMLQQJIDQAgBBASCyACQaCnwAAQX0EAIQMgAkE4akHw\n ABByGiABQUBrIQUDQCADQThGBEAgAkHwAGohBkEAIQMDQCADQThGRQRAIAMgBmogAiADaikDADcDACADQQhqIQMMAQsLI\n AJBqAFqIAAQXyACQeABaiABEF8gAkGYAmogACABEAggAkGIA2ogBCAFEAggAkGoAWogBBBhIAJBqAFqEEQgAkHgAWogBR\n BhIAJB4AFqEEQgAkH4A2ogAkGoAWogAkHgAWoQCEEAIQMgAkHoBGpB8AAQchoDQCADQfAARkUEQCACQegEaiADaiACQZg\n CaiADaikDADcDACADQQhqIQMMAQsLIAJB6ARqIAJBiANqEGVBACEDA0AgA0HwAEZFBEAgAkGIA2ogA2oiASACQThqIANq\n KQMAIAEpAwB9NwMAIANBCGohAwwBCwsgAkGYAmogAkGIA2oQZSACQZgCahBFIAJB+ANqIAJB6ARqEGQgAkH4A2oQRSACQ\n dgFaiACQZgCahAFIAAgAkHYBWoQayAAQQM2AjggAkHYBWogAkH4A2oQBSAEIAJB2AVqEGsgAEECNgJ4IAJBkAZqJAAFIA\n JBOGogA2pCADcDACADQQhqIQMMAQsLC5QEAQF/IwBB0CJrIgMkACADQcAWakG4gMAAEF8gA0HIHGpB8IDAABBfIANBCGo\n gA0HAFmogA0HIHGoQSSADQYgBakE4EHIaIANBwAFqQTgQchogA0H4AWoQKgJAIAIQhAFFBEAgA0H4BGoQKiADQfgEaiAB\n EH4gA0H4BGoQSiADQfgHahBLIANB+AdqIAIQfyADQfgHahBHIANByBxqIANB+AdqEIUBIANBuAlqIANByBxqEIUBIANBy\n BxqIANBuAhqEIUBIANB+AlqIANByBxqEIUBIANBuApqECogA0G4DWoQYCADQbgKaiADQfgEahB+IANBwBNqECogA0HAE2\n ogA0H4BGoQfiADQcATahCcASADQcABaiADQYgBahBUQX9qIQIDQCACQQFNBEAgA0G4DWoQkwEgACADQbgNakGIBhBnGgw\n DBSADQbgNahAbIANBwBZqIANBuApqIANBuAlqIANB+AlqEBcCQAJAAkAgA0HAAWogAkF/aiICEFcgA0GIAWogAhBXa0EB\n ag4DAQIAAgsgA0HIHGogA0G4CmogA0H4BGogA0G4CWogA0H4CWoQFiADQcAWaiADQcgcahAGDAELIANByBxqIANBuApqI\n ANBwBNqIANBuAlqIANB+AlqEBYgA0HAFmogA0HIHGoQBgsgA0G4DWogA0HAFmoQBAwBCwALAAsgABBgCyADQdAiaiQAC8\n MDARV/A0AgAUHAAUYEQAJAIABBKGohCyAAQRRqKAIAIgwhCCAAQRBqKAIAIg0hAyAAQQxqKAIAIg4hAiAAKAIIIg8hASA\n AQRhqKAIAIhAhCiAAQRxqKAIAIhEhBCAAQSBqKAIAIhIhByAAQSRqKAIAIhMhBgNAIAchCSAEIQcgCiEEIAVBgAJGDQEg\n AiADcSEUIAIgA3MhFSAFIAtqKAIAIAVB9J7AAGooAgAgBEEadyAEQRV3cyAEQQd3cyAGaiAJIARBf3NxIAQgB3FyampqI\n gYgCGohCiAFQQRqIQUgAyEIIAIhAyABIQIgAUEedyABQRN3cyABQQp3cyAUIAEgFXFzaiAGaiEBIAkhBgwACwALBSAAIA\n FqIgNB6ABqIANBzABqKAIAIANBKGooAgAgA0EsaigCACICQRl3IAJBDndzIAJBA3ZzIANB4ABqKAIAIgJBD3cgAkENd3M\n gAkEKdnNqamo2AgAgAUEEaiEBDAELCyAAIAYgE2o2AiQgACAJIBJqNgIgIAAgByARajYCHCAAIAQgEGo2AhggACAIIAxq\n NgIUIAAgAyANajYCECAAIAIgDmo2AgwgACABIA9qNgIIC9YDAgZ/An4jAEHwAGsiASQAIAFBoKfAABBfIAFBOGogARBfI\n AAQRAJAAkACQCABAn8gACgCOCICQRBMBEAgAkF/ahA5DAELIAEpAzAiCEIBfCIHIAhUDQEgACkDMCIIQoCAgICAgICAgH\n 9RQQAgB0J/URsNAiABQThqIAggB3+nECghByABIAEpA2ggB0I6hnw3A2ggACABQThqEGIgABBEQQILIgMQLSAAQQhqIQQ\n DQCADRQ0DIAEgASkDCEI5hkKAgICAgICAgAKDIAEpAwBCAYeEIgc3AwAgASAAKQMAIAd9IgdC//////////8DgzcDOEEA\n IQIDQCAHQjqHIQcgAkEoRkUEQCABIAJqIgVBCGoiBiAFQRBqKQMAQjmGQoCAgICAgICAAoMgBikDAEIBh4QiCDcDACABI\n AJqQUBrIAIgBGopAwAgCH0gB3wiB0L//////////wODNwMAIAJBCGohAgwBCwsgASABKQMwQgGHIgg3AzAgASAAKQMwIA\n h9IAd8Igc3A2ggACABQThqIAdCP4enQQFqEE8gA0F/aiEDDAALAAtBoKLAAEEZQbyiwAAQWwALQdCiwABBH0G8osAAEFs\n ACyAAQQE2AjggAUHwAGokAAuhAwEBfyMAQZADayIGJAAgBkEIakHAABByGiAGQcgAakGoAhByGiAGQcgAahBDA0AgAQRA\n IAZByABqQQAQPiABQX9qIQEMAQUCQCACBEAgBkHIAGogAiADEHoLIAQEQCAGQcgAaiAEIAUQegsgBkGIA2pCADcDACAGQ\n YADakIANwMAIAZB+AJqQgA3AwAgBkIANwPwAiAGKAJIIQEgBigCTCECIAZByABqQYABED4DQCAGKAJIQf8DcUHAA0ZFBE\n AgBkHIAGpBABA+DAELCyAGQawBaiABNgIAIAZBqAFqIAI2AgAgBkHIAGoQEUEAIQJBACEBA0AgAUEgRkUEQCAGQfACaiA\n BaiABQXxxIAZqQdAAaigCACACQX9zQRhxdjoAACACQQhqIQIgAUEBaiEBDAELCyAGQcgAahBDQQAhAQNAIAFBIEZFBEAg\n BkEIaiABaiAGQfACaiABai0AADoAACABQQFqIQEMAQsLQQAhAQNAIAFBIEYNASAAIAFqIAZBCGogAWotAAA6AAAgAUEBa\n iEBDAALAAsLCyAGQZADaiQAC6EDAQN/IwBBgAZrIgEkACABIABBgAFqIgMQXiABQYABaiADEF4gAUGAAWoQMiABQYACai\n ABEF4gAUGAAmogAEGAAmoiAhAPIAFBgANqIAIQXiABQYADahAyIAIgAUGAAWoQkAEgAiABQYABahCVASACEKgBIAIQpwE\n gAhCnASACEKgBIAFBgANqQQwQnwEgAUGAA2oQVSABQYADahCoASABQYAEaiABQYADahBeIAFBgARqIAIQDyABQYAFaiAB\n QYABahBeIAFBgAVqIAFBgANqEJUBIAFBgAVqEKgBIAIgAUGAAmoQDyABQYACaiABQYADahCQASABQYACaiABQYADahCVA\n SABQYADaiABQYACahCVASABQYADahCoASABQYABaiABQYADahB9IAFBgAFqEKgBIAFBgAVqIAFBgAFqEA8gAUGABWogAU\n GABGoQlQEgAUGAAmogABCQASABQYACaiABEA8gACABQYABahCQASAAEKgBIAAgAUGAAmoQDyAAEKcBIAAQqAEgAyABQYA\n FahCQASADEKgBIAFBgAZqJAALhQMBBH8CQAJAIAFBgAJPBEAgAEEYaigCACEEAkACQCAAIAAoAgwiAkYEQCAAQRRBECAA\n QRRqIgIoAgAiAxtqKAIAIgENAUEAIQIMAgsgACgCCCIBIAI2AgwgAiABNgIIDAELIAIgAEEQaiADGyEDA0AgAyEFIAEiA\n kEUaiIDKAIAIgFFBEAgAkEQaiEDIAIoAhAhAQsgAQ0ACyAFQQA2AgALIARFDQIgACAAQRxqKAIAQQJ0QeS3wQBqIgEoAg\n BHBEAgBEEQQRQgBCgCECAARhtqIAI2AgAgAkUNAwwCCyABIAI2AgAgAg0BQdi1wQBB2LXBACgCAEF+IAAoAhx3cTYCAA8\n LIABBDGooAgAiAiAAQQhqKAIAIgBHBEAgACACNgIMIAIgADYCCA8LQdS1wQBB1LXBACgCAEF+IAFBA3Z3cTYCAAwBCyAC\n IAQ2AhggACgCECIBBEAgAiABNgIQIAEgAjYCGAsgAEEUaigCACIARQ0AIAJBFGogADYCACAAIAI2AhgLC7MCAQF/IwBBg\n AtrIgUkACAFEC8gBUGAAmoQLyAFQYAEahAvIAVBgAZqQTgQchogBUEBNgK4BiAFQcAGakE4EHIaIAVB+AZqQQE2AgAgBU\n GAB2pBOBByGiAFQQE2ArgHIAVBwAdqQTgQchogBUH4B2pBATYCACAFQYAIakE4EHIaIAVBATYCuAggBUHACGpBOBByGiA\n FQfgIakEBNgIAIAEgAiAFQYAGaiAFQYAHaiAFQYAIahAeIAVBgAhqIAMQoAEgBUGABmogBBCgASAFQYAJaiAFQYAGaiAF\n QYAHahCRASAFIAVBgAlqEJIBIAVBgAlqIAVBgAhqEJsBIAVBgARqIAVBgAlqEJIBIAVBgARqEGYgACAFIAVBgAJqIAVBg\n ARqEHYgAEEDNgKABiAFQYALaiQAC7ECAQF/IwBBgAtrIgQkACAEEC8gBEGAAmoQLyAEQYAEahAvIARBgAZqQTgQchogBE\n EBNgK4BiAEQcAGakE4EHIaIARB+AZqQQE2AgAgBEGAB2pBOBByGiAEQQE2ArgHIARBwAdqQTgQchogBEH4B2pBATYCACA\n EQYAIakE4EHIaIARBATYCuAggBEHACGpBOBByGiAEQfgIakEBNgIAIAEgBEGABmogBEGAB2ogBEGACGoQJSAEQYAIaiAC\n EKABIARBgAZqIAMQoAEgBEGACWogBEGABmogBEGAB2oQkQEgBCAEQYAJahCSASAEQYAJaiAEQYAIahCbASAEQYAEaiAEQ\n YAJahCSASAEQYAEahBmIAAgBCAEQYACaiAEQYAEahB2IABBAzYCgAYgBEGAC2okAAvJAgEDfyMAQcACayIBJAAgASAAQU\n BrIgMQhQEgARADIAFBQGsgAxCFASABQUBrIABBgAFqIgIQSCABQYABaiACEIUBIAFBgAFqEAMgAiABEKUBIAIgARB4IAI\n QRCACEE4gAhBOIAIQRCABQYABakEMEFIgAUHAAWogAUGAAWoQhQEgAUHAAWogAhBIIAFBgAJqIAEQhQEgAUGAAmogAUGA\n AWoQeCABQYACahBEIAIgAUFAaxBIIAFBQGsgAUGAAWoQpQEgAUFAayABQYABahB4IAFBgAFqIAFBQGsQeCABIAFBgAFqE\n IABIAEQRCABQYACaiABEEggAUGAAmogAUHAAWoQeCABQUBrIAAQpQEgAUFAayADEEggACABEKUBIAAQRCAAIAFBQGsQSC\n AAEE4gABBEIAMgAUGAAmoQpQEgAxBEIAFBwAJqJAALrQIBA38jAEGABGsiAiQAIAIgABBeIAJBgAFqIABBgAFqIgMQXiA\n CQYACakE4EHIaIAJBATYCuAIgAkHAAmpBOBByGiACQfgCakEBNgIAIAJBgANqIAMQXiACIAEQDyACQYABaiABQYABaiIE\n EA8gAkGAAmogBBCQASACQYACaiABEJUBIAJBgANqIAAQlQEgAkGAAmoQqAEgAkGAA2oQqAEgAkGAA2ogAkGAAmoQDyACQ\n YACaiACEJABIAJBgAJqEDogAkGAA2ogAkGAAmoQlQEgAkGAA2oQqAEgAkGAAmogAkGAAWoQkAEgAkGAAmoQOiADIAJBgA\n NqEJABIAMgAkGAAmoQlQEgAkGAAWoQVSAAIAJBgAFqEJABIAAgAhCVASAAEKwBIAJBgARqJAALvQIBA38jAEGACGsiASQ\n AIAEgABCOASABQYACaiAAQYAEaiICEI4BIAFBgARqIABBgAJqIgMQjgEgAUGABmoQLyAAECIgAUGABmogABCSASABQYAG\n aiAAEJYBIAAgAUGABmoQlgEgABCsASABELYBIAEQrwEgACABEJYBIAFBgAJqECIgAUGAAmoQZiABQYAGaiABQYACahCSA\n SABQYAGaiABQYACahCWASABQYACaiABQYAGahCWASABQYACahCsASABQYAEahAiIAFBgAZqIAFBgARqEJIBIAFBgAZqIA\n FBgARqEJYBIAFBgARqIAFBgAZqEJYBIAFBgARqEKwBIAMQrgEgAxCvASACELYBIAIQrwEgAyABQYACahCWASACIAFBgAR\n qEJYBIABBBTYCgAYgABCaASABQYAIaiQAC7ICAQN/IwBBgAhrIgEkACAAKAKABkEBRwRAIAEgABCOASABQYACaiAAQYAC\n aiIDEI4BIAFBgARqIABBgARqIgIQjgEgAUGABmogABCOASABECIgAUGAAmogAhAZIAFBgAJqEK8BIAFBgAJqEKwBIAFBg\n ARqECIgAUGABmogAxAZIAFBgAZqEK8BIAIgABCWASACIAMQlgEgAhCsASACECIgACABEJIBIAEgAUGAAmoQlgEgARCsAS\n ABIAFBgARqEJYBIAEgAUGABmoQlgEgARCsASABECsgAUGAAmoQZiABQYAEahBmIAAgAUGAAmoQlgEgAyABQYAEahCSASA\n DIAFBgAZqEJYBIAIgARCWASAAQQRBBSAAKAKABkF+cUECRhs2AoAGIAAQmQELIAFBgAhqJAALigIBAn8jAEHgAWsiAiQA\n IAAQRCACQQhqQTAQchogAkIBNwMAIAJBOGogABBfIAJB8ABqIAEQXyACQagBakE4EHIaIAAQdANAIAJBOGogAkHwAGoQN\n UF/TARAA0ACQCADQQBMDQAgAkHwAGpBARA7IAJBARA7IAJBqAFqIAJBOGoQayACQagBaiACQfAAahBiIAJBqAFqEEQgAk\n E4aiACQagBaiACKQPYAUI/h6dBAWoiARBPIAJBqAFqIAAQayACQagBaiACEGEgAkGoAWoQRCAAIAJBqAFqIAEQTyADQX9\n qIQMMAQsLBSACQQEQLSACQfAAakEBEC0gA0EBaiEDDAELCyACQeABaiQAC54CAQF/IwBBgA1rIgMkACADIAEQaiADEJkB\n IANBiAZqIAIQXyADQYgGahBEIANBwAZqIANBiAZqEF8gA0HABmpBAxAoGiADQcAGahBEIANB+AZqIAMQagJAIANBwAZqE\n FpFBEAgA0HABmoQKUF/aiECA0AgAkEBTQRAIANB+AZqEJoBDAMLIANB+AZqEBoCQAJAIANBwAZqIAJBf2oiAhBXIANBiA\n ZqIAIQV2tBAWoOAwECAAILIANB+AZqIAMQDgwBCyADEJMBIANB+AZqIAMQDiADEJMBDAALAAsgA0H4BmoQsAEgA0H4B2o\n QqQEgA0H4CGoQrQEgA0H4CmoQrQEgA0EBNgL4DAsgACADQfgGakGIBhBnGiADQYANaiQAC5ACAQJ/IwBBgAJrIgUkACAF\n QYABaiAAEF4gAiAFQYABahCQASAFQYABaiAAQYABahBeIAQgBUGAAWoQkAEgBUGAAWogAEGAAmoiBhBeIAUgBUGAAWoQX\n iAFQYABaiAGEF4gAyAFQYABahCQASAFQYABaiABQYABaiIGEF4gBSAFQYABahAPIAVBgAFqIAEQXiADIAVBgAFqEA8gAi\n ADEH0gAhCoASAEIAUQfSAEEKgBIAUgAhCQASACEFUgAhCoASAFQYABaiAGEF4gBSAFQYABahAPIAMgBBCQASAFQYABaiA\n BEF4gAyAFQYABahAPIAMgBRB9IAMQqAEgBBA6IAQQqAEgACABEAsgBUGAAmokAAvkAQECfyMAQcABayIDJAAgAxBLIAAg\n ASACQR91IgQgAnMgBEF/c2pBAm0iAkF/akEfdhBtIAAgAUHAAWogAkEBc0F/akEfdhBtIAAgAUGAA2ogAkECc0F/akEfd\n hBtIAAgAUHABGogAkEDc0F/akEfdhBtIAAgAUGABmogAkEEc0F/akEfdhBtIAAgAUHAB2ogAkEFc0F/akEfdhBtIAAgAU\n GACWogAkEGc0F/akEfdhBtIAAgAUHACmogAkEHc0F/akEfdhBtIAMgABB/IAMQpgEgACADIARBAXEQbSADQcABaiQAC+Q\n BAQJ/IwBBgANrIgMkACADECogACABIAJBH3UiBCACcyAEQX9zakECbSICQX9qQR92EG8gACABQYADaiACQQFzQX9qQR92\n EG8gACABQYAGaiACQQJzQX9qQR92EG8gACABQYAJaiACQQNzQX9qQR92EG8gACABQYAMaiACQQRzQX9qQR92EG8gACABQ\n YAPaiACQQVzQX9qQR92EG8gACABQYASaiACQQZzQX9qQR92EG8gACABQYAVaiACQQdzQX9qQR92EG8gAyAAEH4gAxCcAS\n AAIAMgBEEBcRBvIANBgANqJAALvAEBAn8jAEGwAWsiAiQAIAJBMBByIQIDQCADQTBGBEACQCABQTBqIQEgAkEwaiACEHV\n BACEDA0AgA0EwRg0BIAIgA2ogASADai0AADoAACADQQFqIQMMAAsACwUgAiADaiABIANqLQAAOgAAIANBAWohAwwBCwsg\n AkHwAGogAhB1IABBOBByIgBBATYCOCAAQUBrQTgQciAAQfgAakEBNgIAIAAgAkHwAGoQpQEgAkEwahClASACQbABaiQAC\n 9QBAQJ/IwBBgANrIgEkACABIAAQXiABQYABaiAAQYABaiICEF4gAUGAAmogABBeIAFBgAJqIAIQDyABIAIQlQEgAUGAAW\n oQVSABQYABaiAAEJUBIAEQqAEgAUGAAWoQqAEgACABEJABIAAgAUGAAWoQDyABQYABaiABQYACahCQASABQYABahBVIAF\n BgAFqIAFBgAJqEJUBIAFBgAFqEKgBIAFBgAFqEDogACABQYABahCVASABQYACahCnASACIAFBgAJqEJABIAAQrAEgAUGA\n A2okAAvEAQEBfyMAQYADayIDJAAgA0EIaiABEIUBAkAgAkUEQCADQQhqEAcMAQsgA0EIaiACEKUBCyADQcgAakHYo8AAE\n F8gA0GAAWogA0HIAGoQiwEgA0HAAWogA0EIahCFASADQcABahADIANBwAFqIAEQSCAAIAEQhQEgACADQQhqEEggA0GAAm\n ogA0HAAWoQhQEgABBYIQEgA0HAAmogABCFASADQcACahBBIANBwAJqEEQgACADQcACaiABEHkgA0GAA2okAAufAQEBfyM\n AQfAAayICJAAgAiABEF9BACEBIAJBOGpBOBByGiAAEEQCQCAAIAIQNUEASA0AA0AgAkEBEC0gAUEBaiEBIAAgAhA1QX9K\n DQALA0AgAUEATA0BIAJBARA7IAJBOGogABBrIAJBOGogAhBiIAJBOGoQRCAAIAJBOGogAikDaEI/h6dBAWoQTyABQX9qI\n QEMAAsACyACQfAAaiQAC7IBAQF/IwBBgAJrIgQkACAEQYABaiAAEF4gAyAEQYABahCQASAEQYABaiAAQYABahBeIAQgBE\n GAAWoQXiAEQYABaiAAQYACahBeIAIgBEGAAWoQkAEgASAEEJABIAEgAhAPIAMQMiAEEDIgAhAyIAEQpwEgARA6IAEQqAE\n gARBVIAEQqAEgAkEMEJ8BIANBAxCfASACEFUgAhCoASACIAQQfSACEKgBIAAQFCAEQYACaiQAC58BAQJ/IwBBgAJrIgIk\n ACAAIAEQXiAAEDIgAkGIAWpB2KTAABBfIAJBCGpBOBByGiACQQE2AkAgAkHIAGpBOBByIAJBgAFqQQE2AgAgAkHAAWogA\n kGIAWoQiwEgAkEIaiACQcABahClARCyASACQQhqEKgBIAJBCGoQVSACQQhqEKgBIAAgARAPIAAgAkEIahCVASAAEKsBIA\n JBgAJqJAALowEBAX8jAEEwayIGJAAgBkEQaiAAIAEQsQEgBiAGKAIUIgA2AhwgBiAGKAIQIgE2AhggBkEIaiACIAMQsQE\n gBiAGKAIMIgI2AiQgBiAGKAIIIgM2AiAgBiAEIAUQsQEgBiAGKAIEIgQ2AiwgBiAGKAIAIgU2AiggASAAIAMgAiAFIAQQ\n ACAGQShqEKQBIAZBIGoQpAEgBkEYahCkASAGQTBqJAALiAECA38DfiMAQRBrIgIkAAN+IANBOEYEfiACQRBqJAAgBgUgA\n iAAIANqIgQpAwAiBSAFQj+HIAGsIgUgBUI/hxAxIAQgAikDACIHIAZ8IgVC//////////8DgzcDACAFIAdUrSACQQhqKQ\n MAIAZCP4d8fEIGhiAFQjqIhCEGIANBCGohAwwBCwsLhAECA38BfiMAQUBqIgEkACABQQhqIAAQXyABQQhqEEQgAUE4aiE\n CQQYhA0HcAiEAAn8DQEEAIANBAEgNARogAikDACIEUARAIAJBeGohAiAAQUZqIQAgA0F/aiEDDAELCwN/IARQBH8gAAUg\n AEEBaiEAIARCAn8hBAwBCwsLIAFBQGskAAuHAQEBfyMAQcABayIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByGiAAQfgAa\n kEBNgIAIAEQUCABQYgBakE4EHIaIABBgAFqIAFBgAEQZxogAEGAAmpBOBByGiAAQbgCakEBNgIAIABBvAJqIAFBhAFqQT\n wQZxogAEH4AmpBATYCACABQcABaiQAC48BAQJ/IwBBgAJrIgEkACAAEKwBIAEgABBeIAFBgAFqQTgQchogAUEBNgK4ASA\n BQcABakE4EHIaIAFB+AFqQQE2AgAgASAAQYABaiICEJUBIAEQOiABQYABaiABEJABIAFBgAFqIAIQlQEgAiABEJABIAIg\n ABCVASAAIAFBgAFqEJABIAAQrAEgAUGAAmokAAt9AgF/An4jAEGAAWsiASQAIAFBCGogABCFASABQQhqEBIgAUHIAGogA\n UEIahCDAUEIIQADQCAAQThGRQRAIAFByABqIABqKQMAIAKEIQIgAEEIaiEADAELCyABKQNIIQMgAUGAAWokACACQn98IA\n NCAYVCf3yDQjqIp0EBcQuJAQIBfwJ+IAAgACkDMCABQT9xrSIDhiAAKQMoQTogAWtBP3GtIgSHhDcDMCAAQShqIQFBBiE\n CA0AgAkEBTQRAIAAgACkDACADhkL//////////wODNwMABSABIAEpAwAgA4ZC//////////8DgyABQXhqIgEpAwAgBIeE\n NwMAIAJBf2ohAgwBCwsLiQECAX8CfiAAIAApA2BBOiABQTpwIgFrrSIEhyAAKQNoIAGtIgOGhDcDaCAAQeAAaiEBQQ0hA\n gNAIAJBAU0EQCAAIAApAwAgA4ZC//////////8DgzcDAAUgASABKQMAIAOGQv//////////A4MgAUF4aiIBKQMAIASHhD\n cDACACQX9qIQIMAQsLC3EBAX8jAEFAaiIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByGiAAQfgAakEBNgIAIAFBCGpBOBB\n yGiAAQYABakE4EHIaIABBuAFqQQE2AgAgAEG8AWogAUEEakE8EGcaIABB+AFqQQE2AgAgAUFAayQAC4EBAgF/AX4gAEHw\n ABByIQADQCACQThGBEACQCAAIAEpAzAiA0I6hzcDOCAAIANC//////////8DgzcDMCAAQUBrIQBBACECA0AgAkEwRg0BI\n AAgAmpCADcDACACQQhqIQIMAAsACwUgACACaiABIAJqKQMANwMAIAJBCGohAgwBCwsLdQECfiAAIANCIIgiBSABQiCIIg\n Z+IAIgA358IAEgBH58IANC/////w+DIgIgAUL/////D4MiAX4iA0IgiCACIAZ+fCICQiCIfCABIAV+IAJC/////w+DfCI\n BQiCIfDcDCCAAIANC/////w+DIAFCIIaENwMAC3YBAn8jAEHAAWsiASQAIAEgABCFASABQUBrIAAQhQEgAUGAAWogAEFA\n ayICEIUBIAEgAhB4IAFBQGsgABB4IAFBQGsQRCACIAFBQGsQSCABQYABahBBIAAgAUGAAWoQeCABEEQgABBEIAAgARBII\n AFBwAFqJAALkwEBAn9B0LXBAEHQtcEAKAIAQQFqNgIAAkACQEGYucEAKAIAQQFGBEBBnLnBAEGcucEAKAIAQQFqIgA2Ag\n AgAEECSw0CQaC5wQAoAgAiAUF/Sg0BDAILQZi5wQBCgYCAgBA3AwBBoLnBACgCACIAQQBIDQFBoLnBACAANgIAAAtBoLn\n BACABNgIAIABBAUsNAAALAAtnAQJ/IwBBQGoiAiQAIAAQRCACIAAQhQECQCABRQRAIAAQBwwBCyAAIAEQpQELQQAhAQNA\n IAFBAUsgA3JFBEAgABADIAFBAEchAyABIAFFaiEBDAELCyAAIAIQSCAAEBIgAkFAayQAC18CAX8EfkIBIQNBMCECA38gA\n kF4RgR/IARCAYYgA3ynQX9qBSABIAJqKQMAIgUgACACaikDACIGfUI6hyADgyAEhCEEIAJBeGohAiAFIAaFQn98QjqHIA\n ODIQMMAQsLC2ACAX8EfkIBIQNB6AAhAgN/IAJBeEYEfyAEQgGGIAN8p0F/agUgASACaikDACIFIAAgAmopAwAiBn1COoc\n gA4MgBIQhBCACQXhqIQIgBSAGhUJ/fEI6hyADgyEDDAELCwt3AQN/IwBBgAJrIgIkACACIAEQXiACQYABaiABEF4gAhAy\n IAJBgAFqIAIQDyAAIAJBgAFqEJcBIABBgAJqIgMgAkGAAWoQlwEgAEGABGoiBCACQYABahCXASADIAEQogEgBCACEKIBI\n ABBBTYCgAYgAkGAAmokAAt6AQF/IwBB4ANrIgEkACABQYABakHApcAAEF8gAUG4AWpB+KXAABBfIAEgAUGAAWogAUG4AW\n oQSSABQfACakGwpsAAEF8gAUGoA2pB6KbAABBfIAFB8AFqIAFB8AJqIAFBqANqEEkgACABIAFB8AFqED8gAUHgA2okAAt\n nACAAQQF2IAByIgBBAnYgAHIiAEEEdiAAciIAQQh2IAByIgBBEHYgAHIiACAAQQF2QdWq1aoFcWsiAEECdkGz5syZA3Eg\n AEGz5syZA3FqIgBBBHYgAGpBj568+ABxQYGChAhsQRh2C2cBAn8jAEGAAWsiASQAIAEgABCFASABQUBrQTgQchogAUEBN\n gJ4IAEgAEFAayICEHggARBBIAFBQGsgARClASABQUBrIAIQeCACIAEQpQEgAiAAEHggACABQUBrEKUBIAFBgAFqJAALaA\n IBfwJ+IAFBP3GtIQNBOiABa0E/ca0hBEEAIQEDQCABQTBGBEAgACAAKQMwIAOHNwMwBSAAIAFqIgIgAkEIaikDACAEhkL\n //////////wODIAIpAwAgA4eENwMAIAFBCGohAQwBCwsLbAEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYC\n ACADQSxqQQI2AgAgA0ICNwIMIANBlKjAADYCCCADQQI2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACE\n HAAC2wBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakECNgIAIANCAjcCDCADQbCqwAA2AgggA0\n ECNgIkIAMgA0EgajYCGCADIANBBGo2AiggAyADNgIgIANBCGogAhBwAAtlAQJ/IAAgACgCACICQQhqIgM2AgAgACACQQN\n 2QTxxakEoaiICIAFB/wFxIAIoAgBBCHRyNgIAAkACQCADRQRAIABBADYCACAAIAAoAgRBAWo2AgQMAQsgA0H/A3ENAQsg\n ABARCwtnAQF/IwBBgAJrIgMkACAAECogACABEJABIABBgAFqIgEgAhCQASAAQYACahCwASAAEKgBIAMgABAmIANBgAFqI\n AEQXiADQYABahAyIANBgAFqIAMQe0UEQCAAEJgBCyADQYACaiQAC18BAn8jAEGAAWsiASQAIAAQqAEgASAAEIUBIAFBQG\n sgAEFAayICEIUBIAEQAyABQUBrEAMgASABQUBrEHggAUEAEDQgACABEEggARBBIAEQRCACIAEQSCABQYABaiQAC10BAn8\n jAEFAaiIBJAAgAUEIakGgp8AAEF8gAUEIaiAAKAI4QX9qEDkiAhAtIAAgAUEIahBjIABBASACQQFqQR9xdCICNgI4IAJB\n gICAEE4EQCAAEBILIAFBQGskAAtfAgF/AX4jAEHwAGsiASQAIAFBoKfAABBfIAApAwAhAiABQThqIAAQXyAAQQEQOyABQ\n ThqIAEQYSABQThqEEQgAUE4akEBEDsgACABQThqIAJCAoGnEE8gAUHwAGokAAt7AQJ/IABBKGohAgNAIAFBgAJGBEAgAE\n LnzKfQ1tDrs7t/NwIIIABCADcCACAAQSBqQquzj/yRo7Pw2wA3AgAgAEEYakL/pLmIxZHagpt/NwIAIABBEGpC8ua746O\n n/aelfzcCAAUgASACakEANgIAIAFBBGohAQwBCwsLaQICfwF+IAAgACkDACIDQv//////////A4M3AwBBCCEBA0AgA0I6\n hyEDIAFBMEYEQCAAIAApAzAgA3w3AzAFIAAgAWoiAiACKQMAIAN8IgNC//////////8DgzcDACABQQhqIQEMAQsLC2oCA\n n8BfiAAIAApAwAiA0L//////////wODNwMAQQghAQNAIANCOochAyABQegARgRAIAAgACkDaCADfDcDaAUgACABaiICIA\n IpAwAgA3wiA0L//////////wODNwMAIAFBCGohAQwBCwsLWQEBfyMAQYADayIEJAAgBCADEF4gBBBAIARBgAFqIAEQXiA\n EQYACaiACEF4gBEGAAWogBBAPIARBgAJqIAQQDyAAIARBgAFqIARBgAJqEJEBIARBgANqJAALWQECfyMAQUBqIgEkAAJA\n IAAQhAENACABQQEQigEgAEGAAWoiAiABEFkNACACQQAQNCAAIAIQSCAAEBIgAEFAayIAIAIQSCAAEBIgAiABEKUBCyABQ\n UBrJAALVwEBfyMAQbABayICJAAgATQCOCAANAI4fkKAgIAQWQRAIAAQEgsgAkEIaiAAIAEQCCACQfgAaiACQQhqEAUgAC\n ACQfgAahBrIABBAjYCOCACQbABaiQAC08BAn8jAEFAaiIDJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByIABB+ABqQQE2AgA\n gAyABEIsBIAAgAxClASADIAIQiwEgAxClASADQUBrJAALWQECfyMAQYABayIBJAACQCAAEIgBDQAgARBQIABBgAJqIgIg\n ARB7DQAgAhBAIAAgAhAPIAAQqwEgAEGAAWoiACACEA8gABCrASACIAEQkAELIAFBgAFqJAALSwEBfyMAQUBqIgEkACAAQ\n TgQciIAQQE2AjggAUEBEIoBIABBQGsgAUHAABBnGiAAQYABakE4EHIaIABBuAFqQQE2AgAgAUFAayQAC0sBAn8jAEHwAG\n siASQAIAAQd0UEQCABQaCnwAAQXyABQThqIAAQgwEgASABQThqEGIgARBEIAFBOGogARA1IQILIAFB8ABqJAAgAgtPAQF\n /IwBBgAFrIgIkACAAIAEQhQEgABADIAJByABqQdikwAAQXyACQQhqIAJByABqEIsBIAAgARBIIAAgAkEIahB4IAAQEiAC\n QYABaiQAC0kBAn8DQCABQThGRQRAIAAgAWoiAiACKQMAQgGGNwMAIAFBCGohAQwBCwsgACAAKAI4QQF0IgE2AjggAUGAg\n IAQTgRAIAAQEgsLQgIBfwJ+QQAgAmusIQQDQCADQThHBEAgACADaiICIAIpAwAiBSABIANqKQMAhSAEgyAFhTcDACADQQ\n hqIQMMAQsLC0YBAn8jAEFAaiIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByIABB+ABqQQE2AgAgAUEBEIoBIAAgARClARC\n yASABQUBrJAALTgEBfyMAQYAEayIBJAAgABAvIAEQLyABQYACahAvIABBgAJqIAFBgAIQZxogAEGABGogAUGAAmpBgAIQ\n ZxogAEEANgKABiABQYAEaiQAC0sBAX8jAEFAaiICJAACQCAAKAI4IAFsQYCAgBBOBEAgAiABEIoBIAAgAhBIDAELIAAgA\n RAoGiAAIAAoAjggAWw2AjgLIAJBQGskAAtKAAJ/IAFBgIDEAEcEQEEBIAAoAhggASAAQRxqKAIAKAIQEQMADQEaCyACRQ\n RAQQAPCyAAKAIYIAJBACAAQRxqKAIAKAIMEQUACwtCAQF/IwBBQGoiAiQAIAJBCGpBgIDAABBfIAEgAkEIahBrIAEQRCA\n AIAEQayAAQQMQKBogABBEIAAQKSACQUBrJAALSQECfyMAQcABayIBJAAgASAAEF4gAUGAAWogABCFASAAIABBQGsiAhCl\n ASAAEEEgAiABQYABahClASAAIAEQlQEgAUHAAWokAAtIAQF/IwBB4AFrIgEkACABQeihwAAQXyABQThqIAAgARAIIAFBq\n AFqIAFBOGoQBSAAIAFBqAFqEGsgAEECNgI4IAFB4AFqJAALPgEBfyABQTpuIQIgAUGVA00EQCAAIAJBA3RqKQMAQgEgAU\n H//wNxQTpwrYaDQgBVDwsgAkEHQdSdwAAQPAALQAIBfwF+IwBBgAFrIgEkACABQQhqIAAQhQEgAUEIahASIAFByABqIAF\n BCGoQgwEgASkDSCABQYABaiQAQgKBpws8AQF/IwBBgAFrIgIkACACIAAQhQEgAkFAayABEIUBIAIQEiACQUBrEBIgAiAC\n QUBrEDUgAkGAAWokAEULPAIBfwF+A38gAUE4RgR/IAJCf3xCgICAgICAgIAEg0I6iKcFIAAgAWopAwAgAoQhAiABQQhqI\n QEMAQsLC0cBAX8jAEEgayIDJAAgA0EUakEANgIAIANB9KrAADYCECADQgE3AgQgAyABNgIcIAMgADYCGCADIANBGGo2Ag\n AgAyACEHAACzkBAX8jAEFAaiICJAAgAiAAEIUBIAIQByABBEAgASACEKUBCyACEAMgAiAAEEggAhAsIAJBQGskAAs6AQF\n /IABBOBByIQADQCACQTBGRQRAIABBCBAtIAAgACkDACABIAJqMQAAfDcDACACQQFqIQIMAQsLCzQBAX8gAEE4EHIiAEEB\n NgI4IABBQGtBOBByIABB+ABqQQE2AgAgACABEKUBIAFBQGsQpQELMAEBfyAAQTgQciEAA0AgAkE4RwRAIAAgAmogASACa\n ikDADcDACACQQhqIQIMAQsLCz8BAX8jAEGAAmsiASQAIAAQUSABEG4gACABEJIBIABBgAJqEK0BIABBgARqEK0BIABBAT\n YCgAYgAUGAAmokAAswAQJ/A0AgAkE4RwRAIAAgAmoiAyADKQMAIAEgAmopAwB8NwMAIAJBCGohAgwBCwsLMAECfwNAIAJ\n BOEcEQCAAIAJqIgMgAykDACABIAJqKQMAfTcDACACQQhqIQIMAQsLCzABAn8DQCACQThHBEAgACACaiIDIAEgAmopAwAg\n AykDAH03AwAgAkEIaiECDAELCwsxAQJ/A0AgAkHwAEcEQCAAIAJqIgMgAykDACABIAJqKQMAfTcDACACQQhqIQIMAQsLC\n zEBAn8DQCACQfAARwRAIAAgAmoiAyADKQMAIAEgAmopAwB8NwMAIAJBCGohAgwBCwsLOQECfyMAQYABayIBJAAgASAAQY\n ABaiICEF4gAiAAEJABIAEQVSAAIAEQkAEgABCsASABQYABaiQACzMBAX8gAgRAIAAhAwNAIAMgAS0AADoAACABQQFqIQE\n gA0EBaiEDIAJBf2oiAg0ACwsgAAtIAQN/IwBBEGsiASQAIAAoAgwhAyAAKAIIIgJFBEBB9KrAAEErQaCrwAAQWwALIAEg\n AzYCCCABIAA2AgQgASACNgIAIAEQcQALMgEBfyAAQgE3AwBBCCEBA0AgAUE4RkUEQCAAIAFqQgA3AwAgAUEIaiEBDAELC\n yAAEFYLNwAgABBRIAAgARCSASAAQYACaiABQYACahCSASAAQYAEaiABQYAEahCSASAAIAEoAoAGNgKABgsoAQF/A0AgAk\n E4RwRAIAAgAmogASACaikDADcDACACQQhqIQIMAQsLCzMAIAAgARCSASAAQYACaiABQYACahCSASAAQYAEaiABQYAEahC\n SASAAIAEoAoAGNgKABgsoACAAIAEgAhB5IABBQGsgAUFAayACEHkgAEGAAWogAUGAAWogAhB5Cy4BAX8jAEGAAWsiASQA\n IAAQLyABEFAgACABEJABIABBgAFqEKkBIAFBgAFqJAALLQAgACABIAIQjwEgAEGAAWogAUGAAWogAhCPASAAQYACaiABQ\n YACaiACEI8BCzQBAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQaSowAA2AgQgAkH0qsAANgIAIAIQaAALPgEBfyMAQR\n BrIgEkACABQQhqIABBCGooAgA2AgAgASAAKQIANwMAIAEoAgAiAEEUaigCABogACgCBBoQMwALKQEBfyABBEAgACECA0A\n gAkEAOgAAIAJBAWohAiABQX9qIgENAAsLIAALKwEBfyMAQcABayICJAAgAhBLIAIgARB/IAIQpgEgACACEAwgAkHAAWok\n AAsiAQF/A0AgAUE4RwRAIAAgAWpCADcDACABQQhqIQEMAQsLCycBAX8jAEFAaiICJAAgAkEIaiABEF0gACACQQhqEIsBI\n AJBQGskAAsrACAAEFEgACABEJIBIABBgAJqIAIQkgEgAEGABGogAxCSASAAQQU2AoAGCyMBAX8jAEFAaiIBJAAgASAAEI\n UBIAEQEiABEFogAUFAayQACykAIAAgARBhIAAgACgCOCABKAI4aiIBNgI4IAFBgICAEE4EQCAAEBILCyUAIAAgASACEE8\n gAEEAIAJrIAAoAjgiACABKAI4c3EgAHM2AjgLIwADQCACBEAgACABLQAAED4gAkF/aiECIAFBAWohAQwBCwsLIgACQCAA\n IAEQWUUNACAAQUBrIAFBQGsQWUUNAEEBDwtBAAskAAJAIABBfE0EQCAARQRAQQQhAAwCCyAAEAEiAA0BCwALIAALJwEBf\n yMAQYABayICJAAgAiABEF4gAhA6IAAgAhCVASACQYABaiQACycAIAAgARCQASAAQYABaiABQYABahCQASAAQYACaiABQY\n ACahCQAQslACAAIAEQpQEgAEFAayABQUBrEKUBIABBgAFqIAFBgAFqEKUBCyUBAX8jAEFAaiICJAAgAiABEIUBIAIQQSA\n AIAIQeCACQUBrJAALKAEBfyMAQYACayICJAAgAiABEI4BIAIQKyAAIAIQlgEgAkGAAmokAAsjAEGEAiACSQRAIAJBhAIg\n AxA9AAsgACACNgIEIAAgATYCAAsiAQF/IwBB8ABrIgIkACACIAEQMCAAIAIQBSACQfAAaiQACxwAAkAgABB3RQ0AIABBg\n AFqEHdFDQBBAQ8LQQALHwAgAEE4EHIiAEEBNgI4IAAgARBrIAAgASgCODYCOAseAAJAIAAQhwFFDQAgAEGAAWoQhwFFDQ\n BBAQ8LQQALGwACQCAAEHdFDQAgAEFAaxB3RQ0AQQEPC0EACx4AAkAgABCHAUUNACAAQYACahCHAUUNAEEBDwtBAAsaAQF\n /IAAQWCIBIABBQGsQWCABcyAAEHdxcwsaACAAQTgQciIAQQE2AjggACABEJ0BIAAQVgsZACAAQTgQciIAQQE2AjggACAB\n EGsgABBWCxcAIAAQRCAAKAIAQX8gAUEfcXRBf3NxCxoAIAAgARBfIAAgAhAkIAAgAhBjIAAgAhAkCxwAIAAQLyAAIAEQk\n AEgAEGAAWogAUGAAWoQkAELGAAgACABIAIQeSAAQUBrIAFBQGsgAhB5CxYAIAAgARClASAAQUBrIAFBQGsQpQELGAAgAB\n AvIAAgARCQASAAQYABaiACEJABCxgAIAAgARCQASAAQYABaiABQYABahCQAQsZACAAEK4BIABBgAJqELYBIABBgARqEK4\n BCxcAIAAQsgEgAEFAaxBpIABBgAFqELIBCxQAIAAgARB4IABBQGsgAUFAaxB4CxgAIAAgARCVASAAQYABaiABQYABahCV\n AQsYACAAEKYBIABBgAFqIgAQpgEgACABEA8LGQAgABCpASAAQYABahCwASAAQYACahCpAQsZACAAEKwBIABBgAJqEKwBI\n ABBgARqEKwBCxkAIAAQqgEgAEGAAmoQqgEgAEGABGoQqgELFgAgABAvIAAgARCQASAAQYABahCpAQsWACAAQYABaiIAEK\n gBIAAQOiAAEKgBCxQAIAAQRCAAIAApAwAgAax8NwMACxQAIAAQRCAAIAApAwAgAax9NwMACxEAIAAgARBSIABBQGsgARB\n SCxEAIAAgARBIIABBQGsgARBICxQAIAAgARCQASAAQYABaiACEJABCxIAIAAgARAPIABBgAFqIAEQDwsUACAAIAEQoAEg\n AEGAAWogARCgAQsRACAAKAIEBEAgACgCABAJCwsSACAAIAEQayAAIAEoAjg2AjgLDwAgAEFAayIAEEEgABBECw0AIAAQT\n iAAQUBrEE4LDQAgABBEIABBQGsQRAsPACAAELIBIABBQGsQsgELEAAgABCrASAAQYABahCrAQsNACAAEBIgAEFAaxASCx\n AAIAAQqAEgAEGAAWoQqAELEAAgABCpASAAQYABahCpAQsPACAAQYABahA6IAAQrAELEAAgABCnASAAQYABahCnAQsOACA\n AEGkgAEFAaxCyAQsQACAAIAI2AgQgACABNgIACw0AIAAQdCAAQQE2AjgLDAAgABBBIAAgARB4CwwAIAAgARBrIAAQVgsN\n ACAAEDogACABEJUBCwsAIAAQOiAAEKwBCwwAQunQotvMouq7RgsDAAELAwABCwv+PZoCAEGCgMAACwcBAAAAAQI0AEG4g\n MAAC9sBuF8jku11BwFjT+D5WE+pA2dPnKtLeD0Akew9ffXy9AMD1g8fDSwgAK1vjPCZwa4A8DtNkAEAAADzStxtEor3AI\n uwH1tTsFYDgvLFYx+X7AAysL/NHtseAkehVLifHyMCQHo6ogw4sQGz4sMPAAAAAHNyYy9ibHMxMjM4MS9wYWlyLnJzqAA\n QABQAAAAHAQAACQAAAKgAEAAUAAAADAEAAA0AAACoABAAFAAAABEBAAANAAAAAAAAAAEAAAD///8Dv/+W/78AaQM7VYAd\n moCAAefMIPV1pkwBp+1zAEGogsAACyz+//7///8BAosAgILYBPYB4Y1oiW++kwLOdqvfPagdAMZpulHOdt8Dy1nGFwBB4\n ILAAAuRAZABEAATAAAA0AEAABgAAACQARAAEwAAANQBAAARAAAAkAEQABMAAADWAQAAHAAAAHNyYy9ibHMxMjM4MS9lY3\n AucnMAkAEQABMAAAAZBQAADQAAAJABEAATAAAAGwUAAAkAAACQARAAEwAAABwFAAARAAAAkAEQABMAAAAfBQAAHAAAAAA\n AAAABAAEAAAABAjQAQaCEwAALuSCQARAAEwAAAGcEAAARAAAAkAEQABMAAABsBAAADQAAAJABEAATAAAAbgQAABUAAACQ\n ARAAEwAAAHAEAAAgAAAAHUxYLQgo9ADXXz44aOPbAInJGoj9roEBomOjmrkPTgGY6rCCSW3JAoBOWs9QOu4AimlEAQAAA\n ADgKxeO6UjMAXSpOluMVsgAolXvNe/8FADngsIBPcnDA8EWIDvuPnUAusRiAAwgWgDRCCkuAQAAALgh6L1iEMUA3/4Vlz\n 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\n GZYzb76G2KA7ycH+3PFk8AK2qmngEAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAbxEQABIAAAB8AQAAFAAAAAA\n AAABhdHRlbXB0IHRvIGRpdmlkZSB3aXRoIG92ZXJmbG93c3JjL2JsczEyMzgxL2ZwLnJzAAAAbxEQABIAAAASAgAADQAA\n AG8REAASAAAAHgIAACYAAABvERAAEgAAAB4CAAAjAAAAbxEQABIAAAAkAgAAFwAAAG8REAASAAAAJAIAABQAAAAAAAAAq\n qr//////gHu//9UrP//AupBYg9rDyoBw5z9ShTOEwJLd2TXrEtDAu3pxpKm+V8Cox4RoAEAAABAEhAAFAAAABUBAAATAA\n AAQBIQABQAAAAeAQAAGAAAAEASEAAUAAAAJAEAABwAAABzcmMvYmxzMTIzODEvZWNwMi5ycwAAAAAEAEGQpcAAC7wGQBI\n QABQAAADmAgAACQAAAEASEAAUAAAA7gIAAA0AAABAEhAAFAAAAP4CAAAhAAAAuL0hwchWgAD1+24BqskAA7pwFz2uR7YA\n RNEK7ADpUwN65MZREMUtA0kBgkmkwiMALyuqJAAAAAB+KwRdBX2sAflVF+WERDwDNJME9ce9GwJp12rYgmRCA9BrWWVPJ\n 4gA6DRrH9hnnAAFtgI+AQAAAAEouAiGVJMBeKIo6w5zsgIjyRINFpWmAQq1nU73MqoCm/2tGjUu2gJxczJjhFufAHdSXc\n 4AAAAAvnlf8F8HqQJqaAc710nDAfOzmulytSoB0pm8jp0W+gEoPsuZi8IrAKw0qwwzzakDAkpsYAAAAACrqv/////+Ae7\n //1Ss//8C6kFiD2sPKgHDnP1KFM4TAkt3ZNesS0MC7enGkqb5XwKjHhGgAQAAAAgUEAALAAAAjwEAAA8AAAAIFBAACwAA\n AKcBAAATAAAACBQQAAsAAACqAQAADQAAAHNyYy9obWFjLnJzADQUEAAgAAAAVBQQABIAAAADAAAAAAAAAAEAAAAEAAAAa\n W5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyAgYnV0IHRoZSBpbmRleCBpcyAwMDAxMDIwMzA0MDUwNjA3MDgwOT\n EwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ\n 0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5\n ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OQAAQBUQABAAAABQFRAAIgAAAHJhbmdlIGVuZCBpb\n mRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIG\n EgYE5vbmVgIHZhbHVlALAVEAAcAAAA7gEAAB4AAABsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAEGIrMAACwEBAEH\n IrMAACwEBAEGIrcAACwEBAEHIrcAACwEBAEGIrsAACwEBAEHIrsAACwEBAEGIr8AACwEBAEHIr8AACwEBAEGIsMAACwEB\n AEHIsMAACwEBAEGIscAACwEBAEHIscAACwEBAEGIssAACwEBAEHIssAACwEBAEGIs8AACwEBAEHIs8AACwEBAEGItMAAC\n wEBAEHItMAACwEBAEGItcAACwEBAEHItcAACwEBAEGItsAACwEBAEHItsAACwEBAEGIt8AACwEBAEHIt8AACwEBAEGIuM\n AACwEBAEHIuMAACwEBAEGIucAACwEBAEHIucAACwEBAEGIusAACwEBAEHIusAACwEBAEGIu8AACwEBAEHIu8AACwEBAEG\n IvMAACwEBAEHIvMAACwEBAEGIvcAACwEBAEHIvcAACwEBAEGIvsAACwEBAEHIvsAACwEBAEGIv8AACwEBAEHIv8AACwEB\n AEGIwMAACwEBAEHIwMAACwEBAEGIwcAACwEBAEHIwcAACwEBAEGIwsAACwEBAEHIwsAACwEBAEGIw8AACwEBAEHIw8AAC\n wEBAEGIxMAACwEBAEHIxMAACwEBAEGIxcAACwEBAEHIxcAACwEBAEGIxsAACwEBAEHIxsAACwEBAEGIx8AACwEBAEHIx8\n AACwEBAEGIyMAACwEBAEHIyMAACwEBAEGIycAACwEBAEHIycAACwEBAEGIysAACwEBAEHIysAACwEBAEGIy8AACwEBAEH\n Iy8AACwEBAEGIzMAACwEBAEHIzMAACwEBAEGIzcAACwEBAEHIzcAACwEBAEGIzsAACwEBAEHIzsAACwEBAEGIz8AACwEB\n AEHIz8AACwEBAEGI0MAACwEBAEHI0MAACwEBAEGI0cAACwEBAEHI0cAACwEBAEGI0sAACwEBAEHI0sAACwEBAEGI08AAC\n wEBAEHI08AACwEBAEGI1MAACwEBAEHI1MAACwEBAEGI1cAACwEBAEHI1cAACwEBAEGI1sAACwEBAEHI1sAACwEBAEGI18\n AACwEBAEHI18AACwEBAEGI2MAACwEBAEHI2MAACwEBAEGI2cAACwEBAEHI2cAACwEBAEGI2sAACwEBAEHI2sAACwEBAEG\n I28AACwEBAEHI28AACwEBAEGI3MAACwEBAEHI3MAACwEBAEGI3cAACwEBAEHI3cAACwEBAEGI3sAACwEBAEHI3sAACwEB\n AEGI38AACwEBAEHI38AACwEBAEGI4MAACwEBAEHI4MAACwEBAEGI4cAACwEBAEHI4cAACwEBAEGI4sAACwEBAEHI4sAAC\n wEBAEGI48AACwEBAEHI48AACwEBAEGI5MAACwEBAEHI5MAACwEBAEGI5cAACwEBAEHI5cAACwEBAEGI5sAACwEBAEHI5s\n AACwEBAEGI58AACwEBAEHI58AACwEBAEGI6MAACwEBAEHI6MAACwEBAEGI6cAACwEBAEHI6cAACwEBAEGI6sAACwEBAEH\n I6sAACwEBAEGI68AACwEBAEHI68AACwEBAEGI7MAACwEBAEHI7MAACwEBAEGI7cAACwEBAEHI7cAACwEBAEGI7sAACwEB\n AEHI7sAACwEBAEGI78AACwEBAEHI78AACwEBAEGI8MAACwEBAEHI8MAACwEBAEGI8cAACwEBAEHI8cAACwEBAEGI8sAAC\n wEBAEHI8sAACwEBAEGI88AACwEBAEHI88AACwEBAEGI9MAACwEBAEHI9MAACwEBAEGI9cAACwEBAEHI9cAACwEBAEGI9s\n AACwEBAEHI9sAACwEBAEGI98AACwEBAEHI98AACwEBAEGI+MAACwEBAEHI+MAACwEBAEGI+cAACwEBAEHI+cAACwEBAEG\n I+sAACwEBAEHI+sAACwEBAEGI+8AACwEBAEHI+8AACwEBAEGI/MAACwEBAEHI/MAACwEBAEGI/cAACwEBAEHI/cAACwEB\n AEGI/sAACwEBAEHI/sAACwEBAEGI/8AACwEBAEHI/8AACwEBAEGIgMEACwEBAEHIgMEACwEBAEGIgcEACwEBAEHIgcEAC\n wEBAEGIgsEACwEBAEHIgsEACwEBAEGIg8EACwEBAEHIg8EACwEBAEGIhMEACwEBAEHIhMEACwEBAEGIhcEACwEBAEHIhc\n EACwEBAEGIhsEACwEBAEHIhsEACwEBAEGIh8EACwEBAEHIh8EACwEBAEGIiMEACwEBAEHIiMEACwEBAEGIicEACwEBAEH\n IicEACwEBAEGIisEACwEBAEHIisEACwEBAEGIi8EACwEBAEHIi8EACwEBAEGIjMEACwEBAEHIjMEACwEBAEGIjcEACwEB\n AEHIjcEACwEBAEGIjsEACwEBAEHIjsEACwEBAEGIj8EACwEBAEHIj8EACwEBAEGIkMEACwEBAEHIkMEACwEBAEGIkcEAC\n wEBAEHIkcEACwEBAEGIksEACwEBAEHIksEACwEBAEGIk8EACwEBAEHIk8EACwEBAEGIlMEACwEBAEHIlMEACwEBAEGIlc\n EACwEBAEHIlcEACwEBAEGIlsEACwEBAEHIlsEACwEBAEGIl8EACwEBAEHIl8EACwEBAEGImMEACwEBAEHImMEACwEBAEG\n ImcEACwEBAEHImcEACwEBAEGImsEACwEBAEHImsEACwEBAEGIm8EACwEBAEHIm8EACwEBAEGInMEACwEBAEHInMEACwEB\n AEGIncEACwEBAEHIncEACwEBAEGInsEACwEBAEHInsEACwEBAEGIn8EACwEBAEHIn8EACwEBAEGIoMEACwEBAEHIoMEAC\n wEBAEGIocEACwEBAEHIocEACwEBAEGIosEACwEBAEHIosEACwEBAEGIo8EACwEBAEHIo8EACwEBAEGIpMEACwEBAEHIpM\n EACwEBAEGIpcEACwEBAEHIpcEACwEBAEGIpsEACwEBAEHIpsEACwEBAEGIp8EACwEBAEHIp8EACwEBAEGIqMEACwEBAEH\n IqMEACwEBAEGIqcEACwEBAEHIqcEACwEBAEGIqsEACwEBAEHIqsEACwEBAEGIq8EACwEBAEHIq8EACwEBAEGIrMEACwEB\n AEHIrMEACwEBAEGIrcEACwEBAEHIrcEACwEBAEGIrsEACwEBAEHIrsEACwEBAEGIr8EACwEBAEHIr8EACwEBAEGIsMEAC\n wEBAEHIsMEACwEBAEGIscEACwEBAEHIscEACwEBAEGIssEACwEBAEHIssEACwEBAEGIs8EACwEBAEHIs8EACwEBAEGItM\n EACwEBAEHItMEACwEBAEGItcEACwEBAEHItcEACwEBAHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2V\n kLWJ5AwVydXN0Yx0xLjQ5LjAgKGUxODg0YThlMyAyMDIwLTEyLTI5KQZ3YWxydXMGMC4xOC4wDHdhc20tYmluZGdlbhIw\n LjIuNzAgKGI2MzU1YzI3MCk=\n`.replace(/[^0-9a-zA-Z/+]/g, '');\nconst wasmBytes = base64Arraybuffer.decode(wasmBytesBase64);\n/**\n * @returns {number}\n */\nexport function bls_init() {\n let ret = wasm.bls_init();\n return ret;\n}\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n return [ptr, arg.length];\n}\n/**\n * @param {Uint8Array} sig\n * @param {Uint8Array} m\n * @param {Uint8Array} w\n * @returns {number}\n */\nexport function bls_verify(sig, m, w) {\n const [ptr0, len0] = passArray8ToWasm0(sig, wasm.__wbindgen_malloc);\n const [ptr1, len1] = passArray8ToWasm0(m, wasm.__wbindgen_malloc);\n const [ptr2, len2] = passArray8ToWasm0(w, wasm.__wbindgen_malloc);\n const ret = wasm.bls_verify(ptr0, len0, ptr1, len1, ptr2, len2);\n return ret;\n}\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n }\n else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n }\n else {\n return instance;\n }\n }\n}\nasync function init() {\n const imports = {};\n const { instance, module } = await load(wasmBytes, imports);\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n return wasm;\n}\n/**\n * If `module_or_path` is {RequestInfo} or {URL}, makes a request and\n * for everything else, calls `WebAssembly.instantiate` directly.\n *\n * @param {InitInput | Promise} module_or_path\n *\n * @returns {Promise}\n */\nexport default init;\n//# sourceMappingURL=bls.js.map","import init, { bls_init, bls_verify } from '../vendor/bls/bls';\nexport let verify;\n/**\n *\n * @param pk primary key: Uint8Array\n * @param sig signature: Uint8Array\n * @param msg message: Uint8Array\n * @returns Promise resolving a boolean\n */\nexport async function blsVerify(pk, sig, msg) {\n if (!verify) {\n await init();\n if (bls_init() !== 0) {\n throw new Error('Cannot initialize BLS');\n }\n verify = (pk1, sig1, msg1) => {\n // Reorder things from what the WASM expects (sig, m, w).\n return bls_verify(sig1, msg1, pk1) === 0;\n };\n }\n return verify(pk, sig, msg);\n}\n//# sourceMappingURL=bls.js.map","import { getDefaultAgent } from './agent';\nimport * as cbor from './cbor';\nimport { AgentError } from './errors';\nimport { hash } from './request_id';\nimport { blsVerify } from './utils/bls';\nimport { concat, fromHex, toHex } from './utils/buffer';\n/**\n * A certificate needs to be verified (using {@link Certificate.prototype.verify})\n * before it can be used.\n */\nexport class UnverifiedCertificateError extends AgentError {\n constructor() {\n super(`Cannot lookup unverified certificate. Call 'verify()' first.`);\n }\n}\n/**\n * Make a human readable string out of a hash tree.\n * @param tree\n */\nexport function hashTreeToString(tree) {\n const indent = (s) => s\n .split('\\n')\n .map(x => ' ' + x)\n .join('\\n');\n function labelToString(label) {\n const decoder = new TextDecoder(undefined, { fatal: true });\n try {\n return JSON.stringify(decoder.decode(label));\n }\n catch (e) {\n return `data(...${label.byteLength} bytes)`;\n }\n }\n switch (tree[0]) {\n case 0 /* Empty */:\n return '()';\n case 1 /* Fork */: {\n const left = hashTreeToString(tree[1]);\n const right = hashTreeToString(tree[2]);\n return `sub(\\n left:\\n${indent(left)}\\n---\\n right:\\n${indent(right)}\\n)`;\n }\n case 2 /* Labeled */: {\n const label = labelToString(tree[1]);\n const sub = hashTreeToString(tree[2]);\n return `label(\\n label:\\n${indent(label)}\\n sub:\\n${indent(sub)}\\n)`;\n }\n case 3 /* Leaf */: {\n return `leaf(...${tree[1].byteLength} bytes)`;\n }\n case 4 /* Pruned */: {\n return `pruned(${toHex(new Uint8Array(tree[1]))}`;\n }\n default: {\n return `unknown(${JSON.stringify(tree[0])})`;\n }\n }\n}\nfunction isBufferEqual(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n const a8 = new Uint8Array(a);\n const b8 = new Uint8Array(b);\n for (let i = 0; i < a8.length; i++) {\n if (a8[i] !== b8[i]) {\n return false;\n }\n }\n return true;\n}\nexport class Certificate {\n constructor(response, _agent = getDefaultAgent()) {\n this._agent = _agent;\n this.verified = false;\n this._rootKey = null;\n this.cert = cbor.decode(new Uint8Array(response.certificate));\n }\n lookup(path) {\n this.checkState();\n return lookup_path(path, this.cert.tree);\n }\n async verify() {\n const rootHash = await reconstruct(this.cert.tree);\n const derKey = await this._checkDelegation(this.cert.delegation);\n const sig = this.cert.signature;\n const key = extractDER(derKey);\n const msg = concat(domain_sep('ic-state-root'), rootHash);\n const res = await blsVerify(new Uint8Array(key), new Uint8Array(sig), new Uint8Array(msg));\n this.verified = res;\n return res;\n }\n checkState() {\n if (!this.verified) {\n throw new UnverifiedCertificateError();\n }\n }\n async _checkDelegation(d) {\n if (!d) {\n if (!this._rootKey) {\n if (this._agent.rootKey) {\n this._rootKey = this._agent.rootKey;\n return this._rootKey;\n }\n throw new Error(`Agent does not have a rootKey. Do you need to call 'fetchRootKey'?`);\n }\n return this._rootKey;\n }\n const cert = new Certificate(d, this._agent);\n if (!(await cert.verify())) {\n throw new Error('fail to verify delegation certificate');\n }\n const lookup = cert.lookup(['subnet', d.subnet_id, 'public_key']);\n if (!lookup) {\n throw new Error(`Could not find subnet key for subnet 0x${toHex(d.subnet_id)}`);\n }\n return lookup;\n }\n}\nconst DER_PREFIX = fromHex('308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100');\nconst KEY_LENGTH = 96;\nfunction extractDER(buf) {\n const expectedLength = DER_PREFIX.byteLength + KEY_LENGTH;\n if (buf.byteLength !== expectedLength) {\n throw new TypeError(`BLS DER-encoded public key must be ${expectedLength} bytes long`);\n }\n const prefix = buf.slice(0, DER_PREFIX.byteLength);\n if (!isBufferEqual(prefix, DER_PREFIX)) {\n throw new TypeError(`BLS DER-encoded public key is invalid. Expect the following prefix: ${DER_PREFIX}, but get ${prefix}`);\n }\n return buf.slice(DER_PREFIX.byteLength);\n}\n/**\n * @param t\n */\nexport async function reconstruct(t) {\n switch (t[0]) {\n case 0 /* Empty */:\n return hash(domain_sep('ic-hashtree-empty'));\n case 4 /* Pruned */:\n return t[1];\n case 3 /* Leaf */:\n return hash(concat(domain_sep('ic-hashtree-leaf'), t[1]));\n case 2 /* Labeled */:\n return hash(concat(domain_sep('ic-hashtree-labeled'), t[1], await reconstruct(t[2])));\n case 1 /* Fork */:\n return hash(concat(domain_sep('ic-hashtree-fork'), await reconstruct(t[1]), await reconstruct(t[2])));\n default:\n throw new Error('unreachable');\n }\n}\nfunction domain_sep(s) {\n const len = new Uint8Array([s.length]);\n const str = new TextEncoder().encode(s);\n return concat(len, str);\n}\n/**\n * @param path\n * @param tree\n */\nexport function lookup_path(path, tree) {\n if (path.length === 0) {\n switch (tree[0]) {\n case 3 /* Leaf */: {\n return new Uint8Array(tree[1]).buffer;\n }\n default: {\n return undefined;\n }\n }\n }\n const label = typeof path[0] === 'string' ? new TextEncoder().encode(path[0]) : path[0];\n const t = find_label(label, flatten_forks(tree));\n if (t) {\n return lookup_path(path.slice(1), t);\n }\n}\nfunction flatten_forks(t) {\n switch (t[0]) {\n case 0 /* Empty */:\n return [];\n case 1 /* Fork */:\n return flatten_forks(t[1]).concat(flatten_forks(t[2]));\n default:\n return [t];\n }\n}\nfunction find_label(l, trees) {\n if (trees.length === 0) {\n return undefined;\n }\n for (const t of trees) {\n if (t[0] === 2 /* Labeled */) {\n const p = t[1];\n if (isBufferEqual(l, p)) {\n return t[2];\n }\n }\n }\n}\n//# sourceMappingURL=certificate.js.map","import { RequestStatusResponseStatus } from '../agent';\nimport { Certificate } from '../certificate';\nimport { toHex } from '../utils/buffer';\nexport * as strategy from './strategy';\nexport { defaultStrategy } from './strategy';\n/**\n * Polls the IC to check the status of the given request then\n * returns the response bytes once the request has been processed.\n * @param agent The agent to use to poll read_state.\n * @param canisterId The effective canister ID.\n * @param requestId The Request ID to poll status for.\n * @param strategy A polling strategy.\n */\nexport async function pollForResponse(agent, canisterId, requestId, strategy) {\n const path = [new TextEncoder().encode('request_status'), requestId];\n const state = await agent.readState(canisterId, { paths: [path] });\n const cert = new Certificate(state, agent);\n const verified = await cert.verify();\n if (!verified) {\n throw new Error('Fail to verify certificate');\n }\n const maybeBuf = cert.lookup([...path, new TextEncoder().encode('status')]);\n let status;\n if (typeof maybeBuf === 'undefined') {\n // Missing requestId means we need to wait\n status = RequestStatusResponseStatus.Unknown;\n }\n else {\n status = new TextDecoder().decode(maybeBuf);\n }\n switch (status) {\n case RequestStatusResponseStatus.Replied: {\n return cert.lookup([...path, 'reply']);\n }\n case RequestStatusResponseStatus.Received:\n case RequestStatusResponseStatus.Unknown:\n case RequestStatusResponseStatus.Processing:\n // Execute the polling strategy, then retry.\n await strategy(canisterId, requestId, status);\n return pollForResponse(agent, canisterId, requestId, strategy);\n case RequestStatusResponseStatus.Rejected: {\n const rejectCode = new Uint8Array(cert.lookup([...path, 'reject_code']))[0];\n const rejectMessage = new TextDecoder().decode(cert.lookup([...path, 'reject_message']));\n throw new Error(`Call was rejected:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Reject code: ${rejectCode}\\n` +\n ` Reject text: ${rejectMessage}\\n`);\n }\n case RequestStatusResponseStatus.Done:\n // This is _technically_ not an error, but we still didn't see the `Replied` status so\n // we don't know the result and cannot decode it.\n throw new Error(`Call was marked as done but we never saw the reply:\\n` +\n ` Request ID: ${toHex(requestId)}\\n`);\n }\n throw new Error('unreachable');\n}\n//# sourceMappingURL=index.js.map","import { Buffer } from 'buffer/';\nimport { getDefaultAgent, ReplicaRejectCode, } from './agent';\nimport { getManagementCanister } from './canisters/management';\nimport { AgentError } from './errors';\nimport { IDL } from '@dfinity/candid';\nimport { pollForResponse, strategy } from './polling';\nimport { Principal } from '@dfinity/principal';\nimport { toHex } from './utils/buffer';\nexport class ActorCallError extends AgentError {\n constructor(canisterId, methodName, type, props) {\n super([\n `Call failed:`,\n ` Canister: ${canisterId.toText()}`,\n ` Method: ${methodName} (${type})`,\n ...Object.getOwnPropertyNames(props).map(n => ` \"${n}\": ${JSON.stringify(props[n])}`),\n ].join('\\n'));\n this.canisterId = canisterId;\n this.methodName = methodName;\n this.type = type;\n this.props = props;\n }\n}\nexport class QueryCallRejectedError extends ActorCallError {\n constructor(canisterId, methodName, result) {\n var _a;\n super(canisterId, methodName, 'query', {\n Status: result.status,\n Code: (_a = ReplicaRejectCode[result.reject_code]) !== null && _a !== void 0 ? _a : `Unknown Code \"${result.reject_code}\"`,\n Message: result.reject_message,\n });\n this.result = result;\n }\n}\nexport class UpdateCallRejectedError extends ActorCallError {\n constructor(canisterId, methodName, requestId, response) {\n super(canisterId, methodName, 'update', {\n 'Request ID': toHex(requestId),\n 'HTTP status code': response.status.toString(),\n 'HTTP status text': response.statusText,\n });\n this.requestId = requestId;\n this.response = response;\n }\n}\n/**\n * The mode used when installing a canister.\n */\nexport var CanisterInstallMode;\n(function (CanisterInstallMode) {\n CanisterInstallMode[\"Install\"] = \"install\";\n CanisterInstallMode[\"Reinstall\"] = \"reinstall\";\n CanisterInstallMode[\"Upgrade\"] = \"upgrade\";\n})(CanisterInstallMode || (CanisterInstallMode = {}));\nconst metadataSymbol = Symbol.for('ic-agent-metadata');\n/**\n * An actor base class. An actor is an object containing only functions that will\n * return a promise. These functions are derived from the IDL definition.\n */\nexport class Actor {\n constructor(metadata) {\n this[metadataSymbol] = Object.freeze(metadata);\n }\n /**\n * Get the Agent class this Actor would call, or undefined if the Actor would use\n * the default agent (global.ic.agent).\n * @param actor The actor to get the agent of.\n */\n static agentOf(actor) {\n return actor[metadataSymbol].config.agent;\n }\n /**\n * Get the interface of an actor, in the form of an instance of a Service.\n * @param actor The actor to get the interface of.\n */\n static interfaceOf(actor) {\n return actor[metadataSymbol].service;\n }\n static canisterIdOf(actor) {\n return Principal.from(actor[metadataSymbol].config.canisterId);\n }\n static async install(fields, config) {\n const mode = fields.mode === undefined ? CanisterInstallMode.Install : fields.mode;\n // Need to transform the arg into a number array.\n const arg = fields.arg ? [...new Uint8Array(fields.arg)] : [];\n // Same for module.\n const wasmModule = [...new Uint8Array(fields.module)];\n const canisterId = typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n await getManagementCanister(config).install_code({\n mode: { [mode]: null },\n arg,\n wasm_module: wasmModule,\n canister_id: canisterId,\n });\n }\n static async createCanister(config) {\n const { canister_id: canisterId } = await getManagementCanister(config || {}).provisional_create_canister_with_cycles({ amount: [], settings: [] });\n return canisterId;\n }\n static async createAndInstallCanister(interfaceFactory, fields, config) {\n const canisterId = await this.createCanister(config);\n await this.install(Object.assign({}, fields), Object.assign(Object.assign({}, config), { canisterId }));\n return this.createActor(interfaceFactory, Object.assign(Object.assign({}, config), { canisterId }));\n }\n static createActorClass(interfaceFactory) {\n const service = interfaceFactory({ IDL });\n class CanisterActor extends Actor {\n constructor(config) {\n const canisterId = typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n super({\n config: Object.assign(Object.assign(Object.assign({}, DEFAULT_ACTOR_CONFIG), config), { canisterId }),\n service,\n });\n for (const [methodName, func] of service._fields) {\n this[methodName] = _createActorMethod(this, methodName, func);\n }\n }\n }\n return CanisterActor;\n }\n static createActor(interfaceFactory, configuration) {\n return new (this.createActorClass(interfaceFactory))(configuration);\n }\n}\n// IDL functions can have multiple return values, so decoding always\n// produces an array. Ensure that functions with single or zero return\n// values behave as expected.\nfunction decodeReturnValue(types, msg) {\n const returnValues = IDL.decode(types, Buffer.from(msg));\n switch (returnValues.length) {\n case 0:\n return undefined;\n case 1:\n return returnValues[0];\n default:\n return returnValues;\n }\n}\nconst DEFAULT_ACTOR_CONFIG = {\n pollingStrategyFactory: strategy.defaultStrategy,\n};\nfunction _createActorMethod(actor, methodName, func) {\n let caller;\n if (func.annotations.includes('query')) {\n caller = async (options, ...args) => {\n var _a, _b;\n // First, if there's a config transformation, call it.\n options = Object.assign(Object.assign({}, options), (_b = (_a = actor[metadataSymbol].config).queryTransform) === null || _b === void 0 ? void 0 : _b.call(_a, methodName, args, Object.assign(Object.assign({}, actor[metadataSymbol].config), options)));\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const cid = Principal.from(options.canisterId || actor[metadataSymbol].config.canisterId);\n const arg = IDL.encode(func.argTypes, args);\n const result = await agent.query(cid, { methodName, arg });\n switch (result.status) {\n case \"rejected\" /* Rejected */:\n throw new QueryCallRejectedError(cid, methodName, result);\n case \"replied\" /* Replied */:\n return decodeReturnValue(func.retTypes, result.reply.arg);\n }\n };\n }\n else {\n caller = async (options, ...args) => {\n var _a, _b;\n // First, if there's a config transformation, call it.\n options = Object.assign(Object.assign({}, options), (_b = (_a = actor[metadataSymbol].config).callTransform) === null || _b === void 0 ? void 0 : _b.call(_a, methodName, args, Object.assign(Object.assign({}, actor[metadataSymbol].config), options)));\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const { canisterId, effectiveCanisterId, pollingStrategyFactory } = Object.assign(Object.assign(Object.assign({}, DEFAULT_ACTOR_CONFIG), actor[metadataSymbol].config), options);\n const cid = Principal.from(canisterId);\n const ecid = effectiveCanisterId !== undefined ? Principal.from(effectiveCanisterId) : cid;\n const arg = IDL.encode(func.argTypes, args);\n const { requestId, response } = await agent.call(cid, {\n methodName,\n arg,\n effectiveCanisterId: ecid,\n });\n if (!response.ok) {\n throw new UpdateCallRejectedError(cid, methodName, requestId, response);\n }\n const pollStrategy = pollingStrategyFactory();\n const responseBytes = await pollForResponse(agent, ecid, requestId, pollStrategy);\n if (responseBytes !== undefined) {\n return decodeReturnValue(func.retTypes, responseBytes);\n }\n else if (func.retTypes.length === 0) {\n return undefined;\n }\n else {\n throw new Error(`Call was returned undefined, but type [${func.retTypes.join(',')}].`);\n }\n };\n }\n const handler = (...args) => caller({}, ...args);\n handler.withOptions =\n (options) => (...args) => caller(options, ...args);\n return handler;\n}\n//# sourceMappingURL=actor.js.map","import { toHex } from '../utils/buffer';\nconst FIVE_MINUTES_IN_MSEC = 5 * 60 * 1000;\n/**\n * A best practices polling strategy: wait 2 seconds before the first poll, then 1 second\n * with an exponential backoff factor of 1.2. Timeout after 5 minutes.\n */\nexport function defaultStrategy() {\n return chain(conditionalDelay(once(), 1000), backoff(1000, 1.2), timeout(FIVE_MINUTES_IN_MSEC));\n}\n/**\n * Predicate that returns true once.\n */\nexport function once() {\n let first = true;\n return async () => {\n if (first) {\n first = false;\n return true;\n }\n return false;\n };\n}\n/**\n * Delay the polling once.\n * @param condition A predicate that indicates when to delay.\n * @param timeInMsec The amount of time to delay.\n */\nexport function conditionalDelay(condition, timeInMsec) {\n return async (canisterId, requestId, status) => {\n if (await condition(canisterId, requestId, status)) {\n return new Promise(resolve => setTimeout(resolve, timeInMsec));\n }\n };\n}\n/**\n * Error out after a maximum number of polling has been done.\n * @param count The maximum attempts to poll.\n */\nexport function maxAttempts(count) {\n let attempts = count;\n return async (canisterId, requestId, status) => {\n if (--attempts <= 0) {\n throw new Error(`Failed to retrieve a reply for request after ${count} attempts:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`);\n }\n };\n}\n/**\n * Throttle polling.\n * @param throttleInMsec Amount in millisecond to wait between each polling.\n */\nexport function throttle(throttleInMsec) {\n return () => new Promise(resolve => setTimeout(resolve, throttleInMsec));\n}\n/**\n * Reject a call after a certain amount of time.\n * @param timeInMsec Time in milliseconds before the polling should be rejected.\n */\nexport function timeout(timeInMsec) {\n const end = Date.now() + timeInMsec;\n return async (canisterId, requestId, status) => {\n if (Date.now() > end) {\n throw new Error(`Request timed out after ${timeInMsec} msec:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`);\n }\n };\n}\n/**\n * A strategy that throttle, but using an exponential backoff strategy.\n * @param startingThrottleInMsec The throttle in milliseconds to start with.\n * @param backoffFactor The factor to multiple the throttle time between every poll. For\n * example if using 2, the throttle will double between every run.\n */\nexport function backoff(startingThrottleInMsec, backoffFactor) {\n let currentThrottling = startingThrottleInMsec;\n return () => new Promise(resolve => setTimeout(() => {\n currentThrottling *= backoffFactor;\n resolve();\n }, currentThrottling));\n}\n/**\n * Chain multiple polling strategy. This _chains_ the strategies, so if you pass in,\n * say, two throttling strategy of 1 second, it will result in a throttle of 2 seconds.\n * @param strategies A strategy list to chain.\n */\nexport function chain(...strategies) {\n return async (canisterId, requestId, status) => {\n for (const a of strategies) {\n await a(canisterId, requestId, status);\n }\n };\n}\n//# sourceMappingURL=strategy.js.map","/**\n * Return an array buffer from its hexadecimal representation.\n * @param hexString The hexadecimal string.\n */\nexport function fromHexString(hexString) {\n var _a;\n return new Uint8Array(((_a = hexString.match(/.{1,2}/g)) !== null && _a !== void 0 ? _a : []).map(byte => parseInt(byte, 16))).buffer;\n}\n/**\n * Returns an hexadecimal representation of an array buffer.\n * @param bytes The array buffer.\n */\nexport function toHexString(bytes) {\n return new Uint8Array(bytes).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n//# sourceMappingURL=buffer.js.map","export const bufEquals = (b1, b2) => {\n if (b1.byteLength !== b2.byteLength)\n return false;\n const u1 = new Uint8Array(b1);\n const u2 = new Uint8Array(b2);\n for (let i = 0; i < u1.length; i++) {\n if (u1[i] !== u2[i])\n return false;\n }\n return true;\n};\nexport const encodeLenBytes = (len) => {\n if (len <= 0x7f) {\n return 1;\n }\n else if (len <= 0xff) {\n return 2;\n }\n else if (len <= 0xffff) {\n return 3;\n }\n else if (len <= 0xffffff) {\n return 4;\n }\n else {\n throw new Error('Length too long (> 4 bytes)');\n }\n};\nexport const encodeLen = (buf, offset, len) => {\n if (len <= 0x7f) {\n buf[offset] = len;\n return 1;\n }\n else if (len <= 0xff) {\n buf[offset] = 0x81;\n buf[offset + 1] = len;\n return 2;\n }\n else if (len <= 0xffff) {\n buf[offset] = 0x82;\n buf[offset + 1] = len >> 8;\n buf[offset + 2] = len;\n return 3;\n }\n else if (len <= 0xffffff) {\n buf[offset] = 0x83;\n buf[offset + 1] = len >> 16;\n buf[offset + 2] = len >> 8;\n buf[offset + 3] = len;\n return 4;\n }\n else {\n throw new Error('Length too long (> 4 bytes)');\n }\n};\nexport const decodeLenBytes = (buf, offset) => {\n if (buf[offset] < 0x80)\n return 1;\n if (buf[offset] === 0x80)\n throw new Error('Invalid length 0');\n if (buf[offset] === 0x81)\n return 2;\n if (buf[offset] === 0x82)\n return 3;\n if (buf[offset] === 0x83)\n return 4;\n throw new Error('Length too long (> 4 bytes)');\n};\nexport const decodeLen = (buf, offset) => {\n const lenBytes = decodeLenBytes(buf, offset);\n if (lenBytes === 1)\n return buf[offset];\n else if (lenBytes === 2)\n return buf[offset + 1];\n else if (lenBytes === 3)\n return (buf[offset + 1] << 8) + buf[offset + 2];\n else if (lenBytes === 4)\n return (buf[offset + 1] << 16) + (buf[offset + 2] << 8) + buf[offset + 3];\n throw new Error('Length too long (> 4 bytes)');\n};\n/**\n * A DER encoded `SEQUENCE(OID)` for DER-encoded-COSE\n */\nexport const DER_COSE_OID = Uint8Array.from([\n ...[0x30, 0x0c],\n ...[0x06, 0x0a],\n ...[0x2b, 0x06, 0x01, 0x04, 0x01, 0x83, 0xb8, 0x43, 0x01, 0x01], // DER encoded COSE\n]);\n/**\n * A DER encoded `SEQUENCE(OID)` for the Ed25519 algorithm\n */\nexport const ED25519_OID = Uint8Array.from([\n ...[0x30, 0x05],\n ...[0x06, 0x03],\n ...[0x2b, 0x65, 0x70], // id-Ed25519 OID\n]);\n/**\n * A DER encoded `SEQUENCE(OID)` for secp256k1 with the ECDSA algorithm\n */\nexport const SECP256K1_OID = Uint8Array.from([\n ...[0x30, 0x10],\n ...[0x06, 0x07],\n ...[0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01],\n ...[0x06, 0x05],\n ...[0x2b, 0x81, 0x04, 0x00, 0x0a], // OID secp256k1\n]);\n/**\n * Wraps the given `payload` in a DER encoding tagged with the given encoded `oid` like so:\n * `SEQUENCE(oid, BITSTRING(payload))`\n *\n * @param payload The payload to encode as the bit string\n * @param oid The DER encoded (and SEQUENCE wrapped!) OID to tag the payload with\n */\nexport function wrapDER(payload, oid) {\n // The Bit String header needs to include the unused bit count byte in its length\n const bitStringHeaderLength = 2 + encodeLenBytes(payload.byteLength + 1);\n const len = oid.byteLength + bitStringHeaderLength + payload.byteLength;\n let offset = 0;\n const buf = new Uint8Array(1 + encodeLenBytes(len) + len);\n // Sequence\n buf[offset++] = 0x30;\n // Sequence Length\n offset += encodeLen(buf, offset, len);\n // OID\n buf.set(oid, offset);\n offset += oid.byteLength;\n // Bit String Header\n buf[offset++] = 0x03;\n offset += encodeLen(buf, offset, payload.byteLength + 1);\n // 0 padding\n buf[offset++] = 0x00;\n buf.set(new Uint8Array(payload), offset);\n return buf;\n}\n/**\n * Extracts a payload from the given `derEncoded` data, and checks that it was tagged with the given `oid`.\n *\n * `derEncoded = SEQUENCE(oid, BITSTRING(payload))`\n *\n * @param derEncoded The DER encoded and tagged data\n * @param oid The DER encoded (and SEQUENCE wrapped!) expected OID\n * @returns The unwrapped payload\n */\nexport const unwrapDER = (derEncoded, oid) => {\n let offset = 0;\n const expect = (n, msg) => {\n if (buf[offset++] !== n) {\n throw new Error('Expected: ' + msg);\n }\n };\n const buf = new Uint8Array(derEncoded);\n expect(0x30, 'sequence');\n offset += decodeLenBytes(buf, offset);\n if (!bufEquals(buf.slice(offset, offset + oid.byteLength), oid)) {\n throw new Error('Not the expected OID.');\n }\n offset += oid.byteLength;\n expect(0x03, 'bit string');\n const payloadLen = decodeLen(buf, offset) - 1; // Subtracting 1 to account for the 0 padding\n offset += decodeLenBytes(buf, offset);\n expect(0x00, '0 padding');\n const result = buf.slice(offset);\n if (payloadLen !== result.length) {\n throw new Error(`DER payload mismatch: Expected length ${payloadLen} actual length ${result.length}`);\n }\n return result;\n};\n//# sourceMappingURL=der.js.map","import { SignIdentity } from '@dfinity/agent';\nimport * as tweetnacl from 'tweetnacl';\nimport { fromHexString, toHexString } from '../buffer';\nimport { ED25519_OID, unwrapDER, wrapDER } from './der';\nexport class Ed25519PublicKey {\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n constructor(key) {\n this.rawKey = key;\n this.derKey = Ed25519PublicKey.derEncode(key);\n }\n static from(key) {\n return this.fromDer(key.toDer());\n }\n static fromRaw(rawKey) {\n return new Ed25519PublicKey(rawKey);\n }\n static fromDer(derKey) {\n return new Ed25519PublicKey(this.derDecode(derKey));\n }\n static derEncode(publicKey) {\n return wrapDER(publicKey, ED25519_OID).buffer;\n }\n static derDecode(key) {\n const unwrapped = unwrapDER(key, ED25519_OID);\n if (unwrapped.length !== this.RAW_KEY_LENGTH) {\n throw new Error('An Ed25519 public key must be exactly 32bytes long');\n }\n return unwrapped;\n }\n toDer() {\n return this.derKey;\n }\n toRaw() {\n return this.rawKey;\n }\n}\n// The length of Ed25519 public keys is always 32 bytes.\nEd25519PublicKey.RAW_KEY_LENGTH = 32;\nexport class Ed25519KeyIdentity extends SignIdentity {\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n constructor(publicKey, _privateKey) {\n super();\n this._privateKey = _privateKey;\n this._publicKey = Ed25519PublicKey.from(publicKey);\n }\n static generate(seed) {\n if (seed && seed.length !== 32) {\n throw new Error('Ed25519 Seed needs to be 32 bytes long.');\n }\n const { publicKey, secretKey } = seed === undefined ? tweetnacl.sign.keyPair() : tweetnacl.sign.keyPair.fromSeed(seed);\n return new this(Ed25519PublicKey.fromRaw(publicKey), secretKey);\n }\n static fromParsedJson(obj) {\n const [publicKeyDer, privateKeyRaw] = obj;\n return new Ed25519KeyIdentity(Ed25519PublicKey.fromDer(fromHexString(publicKeyDer)), fromHexString(privateKeyRaw));\n }\n static fromJSON(json) {\n const parsed = JSON.parse(json);\n if (Array.isArray(parsed)) {\n if (typeof parsed[0] === 'string' && typeof parsed[1] === 'string') {\n return this.fromParsedJson([parsed[0], parsed[1]]);\n }\n else {\n throw new Error('Deserialization error: JSON must have at least 2 items.');\n }\n }\n throw new Error(`Deserialization error: Invalid JSON type for string: ${JSON.stringify(json)}`);\n }\n static fromKeyPair(publicKey, privateKey) {\n return new Ed25519KeyIdentity(Ed25519PublicKey.fromRaw(publicKey), privateKey);\n }\n static fromSecretKey(secretKey) {\n const keyPair = tweetnacl.sign.keyPair.fromSecretKey(new Uint8Array(secretKey));\n return Ed25519KeyIdentity.fromKeyPair(keyPair.publicKey, keyPair.secretKey);\n }\n /**\n * Serialize this key to JSON.\n */\n toJSON() {\n return [toHexString(this._publicKey.toDer()), toHexString(this._privateKey)];\n }\n /**\n * Return a copy of the key pair.\n */\n getKeyPair() {\n return {\n secretKey: this._privateKey,\n publicKey: this._publicKey,\n };\n }\n /**\n * Return the public key.\n */\n getPublicKey() {\n return this._publicKey;\n }\n /**\n * Signs a blob of data, with this identity's private key.\n * @param challenge - challenge to sign with this identity's secretKey, producing a signature\n */\n async sign(challenge) {\n const blob = new Uint8Array(challenge);\n const signature = tweetnacl.sign.detached(blob, new Uint8Array(this._privateKey)).buffer;\n return signature;\n }\n}\n//# sourceMappingURL=ed25519.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { requestIdOf, SignIdentity, } from '@dfinity/agent';\nimport { Principal } from '@dfinity/principal';\nimport * as cbor from 'simple-cbor';\nimport { fromHexString, toHexString } from '../buffer';\nconst domainSeparator = new TextEncoder().encode('\\x1Aic-request-auth-delegation');\nconst requestDomainSeparator = new TextEncoder().encode('\\x0Aic-request');\nfunction _parseBlob(value) {\n if (typeof value !== 'string' || value.length < 64) {\n throw new Error('Invalid public key.');\n }\n return fromHexString(value);\n}\n/**\n * A single delegation object that is signed by a private key. This is constructed by\n * `DelegationChain.create()`.\n *\n * {@see DelegationChain}\n */\nexport class Delegation {\n constructor(pubkey, expiration, targets) {\n this.pubkey = pubkey;\n this.expiration = expiration;\n this.targets = targets;\n }\n toCBOR() {\n // Expiration field needs to be encoded as a u64 specifically.\n return cbor.value.map(Object.assign({ pubkey: cbor.value.bytes(this.pubkey), expiration: cbor.value.u64(this.expiration.toString(16), 16) }, (this.targets && {\n targets: cbor.value.array(this.targets.map(t => cbor.value.bytes(t.toUint8Array()))),\n })));\n }\n toJSON() {\n // every string should be hex and once-de-hexed,\n // discoverable what it is (e.g. de-hex to get JSON with a 'type' property, or de-hex to DER\n // with an OID). After de-hex, if it's not obvious what it is, it's an ArrayBuffer.\n return Object.assign({ expiration: this.expiration.toString(16), pubkey: toHexString(this.pubkey) }, (this.targets && { targets: this.targets.map(p => p.toHex()) }));\n }\n}\n/**\n * Sign a single delegation object for a period of time.\n *\n * @param from The identity that lends its delegation.\n * @param to The identity that receives the delegation.\n * @param expiration An expiration date for this delegation.\n * @param targets Limit this delegation to the target principals.\n */\nasync function _createSingleDelegation(from, to, expiration, targets) {\n const delegation = new Delegation(to.toDer(), BigInt(+expiration) * BigInt(1000000), // In nanoseconds.\n targets);\n // The signature is calculated by signing the concatenation of the domain separator\n // and the message.\n // Note: To ensure Safari treats this as a user gesture, ensure to not use async methods\n // besides the actualy webauthn functionality (such as `sign`). Safari will de-register\n // a user gesture if you await an async call thats not fetch, xhr, or setTimeout.\n const challenge = new Uint8Array([\n ...domainSeparator,\n ...new Uint8Array(requestIdOf(delegation)),\n ]);\n const signature = await from.sign(challenge);\n return {\n delegation,\n signature,\n };\n}\n/**\n * A chain of delegations. This is JSON Serializable.\n * This is the object to serialize and pass to a DelegationIdentity. It does not keep any\n * private keys.\n */\nexport class DelegationChain {\n constructor(delegations, publicKey) {\n this.delegations = delegations;\n this.publicKey = publicKey;\n }\n /**\n * Create a delegation chain between two (or more) keys. By default, the expiration time\n * will be very short (15 minutes).\n *\n * To build a chain of more than 2 identities, this function needs to be called multiple times,\n * passing the previous delegation chain into the options argument. For example:\n *\n * @example\n * const rootKey = createKey();\n * const middleKey = createKey();\n * const bottomeKey = createKey();\n *\n * const rootToMiddle = await DelegationChain.create(\n * root, middle.getPublicKey(), Date.parse('2100-01-01'),\n * );\n * const middleToBottom = await DelegationChain.create(\n * middle, bottom.getPublicKey(), Date.parse('2100-01-01'), { previous: rootToMiddle },\n * );\n *\n * // We can now use a delegation identity that uses the delegation above:\n * const identity = DelegationIdentity.fromDelegation(bottomKey, middleToBottom);\n *\n * @param from The identity that will delegate.\n * @param to The identity that gets delegated. It can now sign messages as if it was the\n * identity above.\n * @param expiration The length the delegation is valid. By default, 15 minutes from calling\n * this function.\n * @param options A set of options for this delegation. expiration and previous\n * @param options.previous - Another DelegationChain that this chain should start with.\n * @param options.targets - targets that scope the delegation (e.g. Canister Principals)\n */\n static async create(from, to, expiration = new Date(Date.now() + 15 * 60 * 1000), options = {}) {\n var _a, _b;\n const delegation = await _createSingleDelegation(from, to, expiration, options.targets);\n return new DelegationChain([...(((_a = options.previous) === null || _a === void 0 ? void 0 : _a.delegations) || []), delegation], ((_b = options.previous) === null || _b === void 0 ? void 0 : _b.publicKey) || from.getPublicKey().toDer());\n }\n /**\n * Creates a DelegationChain object from a JSON string.\n *\n * @param json The JSON string to parse.\n */\n static fromJSON(json) {\n const { publicKey, delegations } = typeof json === 'string' ? JSON.parse(json) : json;\n if (!Array.isArray(delegations)) {\n throw new Error('Invalid delegations.');\n }\n const parsedDelegations = delegations.map(signedDelegation => {\n const { delegation, signature } = signedDelegation;\n const { pubkey, expiration, targets } = delegation;\n if (targets !== undefined && !Array.isArray(targets)) {\n throw new Error('Invalid targets.');\n }\n return {\n delegation: new Delegation(_parseBlob(pubkey), BigInt(`0x${expiration}`), // expiration in JSON is an hexa string (See toJSON() below).\n targets &&\n targets.map((t) => {\n if (typeof t !== 'string') {\n throw new Error('Invalid target.');\n }\n return Principal.fromHex(t);\n })),\n signature: _parseBlob(signature),\n };\n });\n return new this(parsedDelegations, _parseBlob(publicKey));\n }\n /**\n * Creates a DelegationChain object from a list of delegations and a DER-encoded public key.\n *\n * @param delegations The list of delegations.\n * @param publicKey The DER-encoded public key of the key-pair signing the first delegation.\n */\n static fromDelegations(delegations, publicKey) {\n return new this(delegations, publicKey);\n }\n toJSON() {\n return {\n delegations: this.delegations.map(signedDelegation => {\n const { delegation, signature } = signedDelegation;\n const { targets } = delegation;\n return {\n delegation: Object.assign({ expiration: delegation.expiration.toString(16), pubkey: toHexString(delegation.pubkey) }, (targets && {\n targets: targets.map(t => t.toHex()),\n })),\n signature: toHexString(signature),\n };\n }),\n publicKey: toHexString(this.publicKey),\n };\n }\n}\n/**\n * An Identity that adds delegation to a request. Everywhere in this class, the name\n * innerKey refers to the SignIdentity that is being used to sign the requests, while\n * originalKey is the identity that is being borrowed. More identities can be used\n * in the middle to delegate.\n */\nexport class DelegationIdentity extends SignIdentity {\n constructor(_inner, _delegation) {\n super();\n this._inner = _inner;\n this._delegation = _delegation;\n }\n /**\n * Create a delegation without having access to delegateKey.\n *\n * @param key The key used to sign the reqyests.\n * @param delegation A delegation object created using `createDelegation`.\n */\n static fromDelegation(key, delegation) {\n return new this(key, delegation);\n }\n getDelegation() {\n return this._delegation;\n }\n getPublicKey() {\n return {\n toDer: () => this._delegation.publicKey,\n };\n }\n sign(blob) {\n return this._inner.sign(blob);\n }\n async transformRequest(request) {\n const { body } = request, fields = __rest(request, [\"body\"]);\n const requestId = await requestIdOf(body);\n return Object.assign(Object.assign({}, fields), { body: {\n content: body,\n sender_sig: await this.sign(new Uint8Array([...requestDomainSeparator, ...new Uint8Array(requestId)])),\n sender_delegation: this._delegation.delegations,\n sender_pubkey: this._delegation.publicKey,\n } });\n }\n}\n//# sourceMappingURL=delegation.js.map","import { SignIdentity } from '@dfinity/agent';\nimport borc from 'borc';\nimport * as tweetnacl from 'tweetnacl';\nimport { fromHexString, toHexString } from '../buffer';\nimport { DER_COSE_OID, wrapDER } from './der';\nfunction _coseToDerEncodedBlob(cose) {\n return wrapDER(cose, DER_COSE_OID).buffer;\n}\n/**\n * From the documentation;\n * The authData is a byte array described in the spec. Parsing it will involve slicing bytes from\n * the array and converting them into usable objects.\n *\n * See https://webauthn.guide/#registration (subsection \"Example: Parsing the authenticator data\").\n *\n * @param authData The authData field of the attestation response.\n * @returns The COSE key of the authData.\n */\nfunction _authDataToCose(authData) {\n const dataView = new DataView(new ArrayBuffer(2));\n const idLenBytes = authData.slice(53, 55);\n [...new Uint8Array(idLenBytes)].forEach((v, i) => dataView.setUint8(i, v));\n const credentialIdLength = dataView.getUint16(0);\n // Get the public key object.\n return authData.slice(55 + credentialIdLength);\n}\nexport class CosePublicKey {\n constructor(_cose) {\n this._cose = _cose;\n this._encodedKey = _coseToDerEncodedBlob(_cose);\n }\n toDer() {\n return this._encodedKey;\n }\n getCose() {\n return this._cose;\n }\n}\n/**\n * Create a challenge from a string or array. The default challenge is always the same\n * because we don't need to verify the authenticity of the key on the server (we don't\n * register our keys with the IC). Any challenge would do, even one per key, randomly\n * generated.\n *\n * @param challenge The challenge to transform into a byte array. By default a hard\n * coded string.\n */\nfunction _createChallengeBuffer(challenge = '') {\n if (typeof challenge === 'string') {\n return Uint8Array.from(challenge, c => c.charCodeAt(0));\n }\n else {\n return challenge;\n }\n}\n/**\n * Create a credentials to authenticate with a server. This is necessary in order in\n * WebAuthn to get credentials IDs (which give us the public key and allow us to\n * sign), but in the case of the Internet Computer, we don't actually need to register\n * it, so we don't.\n * @param credentialCreationOptions an optional CredentialCreationOptions object\n */\nasync function _createCredential(credentialCreationOptions) {\n const creds = (await navigator.credentials.create(credentialCreationOptions !== null && credentialCreationOptions !== void 0 ? credentialCreationOptions : {\n publicKey: {\n authenticatorSelection: {\n userVerification: 'preferred',\n },\n attestation: 'direct',\n challenge: _createChallengeBuffer(),\n pubKeyCredParams: [{ type: 'public-key', alg: PubKeyCoseAlgo.ECDSA_WITH_SHA256 }],\n rp: {\n name: 'Internet Identity Service',\n },\n user: {\n id: tweetnacl.randomBytes(16),\n name: 'Internet Identity',\n displayName: 'Internet Identity',\n },\n },\n }));\n // Validate that it's the correct type at runtime, since WebAuthn does not HAVE to\n // reply with a PublicKeyCredential.\n if (creds.response === undefined || !(creds.rawId instanceof ArrayBuffer)) {\n return null;\n }\n else {\n return creds;\n }\n}\n// See https://www.iana.org/assignments/cose/cose.xhtml#algorithms for a complete\n// list of these algorithms. We only list the ones we support here.\nvar PubKeyCoseAlgo;\n(function (PubKeyCoseAlgo) {\n PubKeyCoseAlgo[PubKeyCoseAlgo[\"ECDSA_WITH_SHA256\"] = -7] = \"ECDSA_WITH_SHA256\";\n})(PubKeyCoseAlgo || (PubKeyCoseAlgo = {}));\n/**\n * A SignIdentity that uses `navigator.credentials`. See https://webauthn.guide/ for\n * more information about WebAuthentication.\n */\nexport class WebAuthnIdentity extends SignIdentity {\n constructor(rawId, cose) {\n super();\n this.rawId = rawId;\n this._publicKey = new CosePublicKey(cose);\n }\n /**\n * Create an identity from a JSON serialization.\n * @param json - json to parse\n */\n static fromJSON(json) {\n const { publicKey, rawId } = JSON.parse(json);\n if (typeof publicKey !== 'string' || typeof rawId !== 'string') {\n throw new Error('Invalid JSON string.');\n }\n return new this(fromHexString(rawId), fromHexString(publicKey));\n }\n /**\n * Create an identity.\n * @param credentialCreationOptions an optional CredentialCreationOptions Challenge\n */\n static async create(credentialCreationOptions) {\n const creds = await _createCredential(credentialCreationOptions);\n if (!creds || creds.type !== 'public-key') {\n throw new Error('Could not create credentials.');\n }\n const response = creds.response;\n if (!(response.attestationObject instanceof ArrayBuffer)) {\n throw new Error('Was expecting an attestation response.');\n }\n // Parse the attestationObject as CBOR.\n const attObject = borc.decodeFirst(new Uint8Array(response.attestationObject));\n return new this(creds.rawId, _authDataToCose(attObject.authData));\n }\n getPublicKey() {\n return this._publicKey;\n }\n async sign(blob) {\n const result = (await navigator.credentials.get({\n publicKey: {\n allowCredentials: [\n {\n type: 'public-key',\n id: this.rawId,\n },\n ],\n challenge: blob,\n userVerification: 'preferred',\n },\n }));\n const response = result.response;\n if (response.signature instanceof ArrayBuffer &&\n response.authenticatorData instanceof ArrayBuffer) {\n const cbor = borc.encode(new borc.Tagged(55799, {\n authenticator_data: new Uint8Array(response.authenticatorData),\n client_data_json: new TextDecoder().decode(response.clientDataJSON),\n signature: new Uint8Array(response.signature),\n }));\n if (!cbor) {\n throw new Error('failed to encode cbor');\n }\n return cbor.buffer;\n }\n else {\n throw new Error('Invalid response from WebAuthn.');\n }\n }\n /**\n * Allow for JSON serialization of all information needed to reuse this identity.\n */\n toJSON() {\n return {\n publicKey: toHexString(this._publicKey.getCose()),\n rawId: toHexString(this.rawId),\n };\n }\n}\n//# sourceMappingURL=webauthn.js.map","import { AnonymousIdentity, } from '@dfinity/agent';\nimport { isDelegationValid } from '@dfinity/authentication';\nimport { Delegation, DelegationChain, DelegationIdentity, Ed25519KeyIdentity, } from '@dfinity/identity';\nconst KEY_LOCALSTORAGE_KEY = 'identity';\nconst KEY_LOCALSTORAGE_DELEGATION = 'delegation';\nconst IDENTITY_PROVIDER_DEFAULT = 'https://identity.ic0.app';\nconst IDENTITY_PROVIDER_ENDPOINT = '#authorize';\nasync function _deleteStorage(storage) {\n await storage.remove(KEY_LOCALSTORAGE_KEY);\n await storage.remove(KEY_LOCALSTORAGE_DELEGATION);\n}\nexport class LocalStorage {\n constructor(prefix = 'ic-', _localStorage) {\n this.prefix = prefix;\n this._localStorage = _localStorage;\n }\n get(key) {\n return Promise.resolve(this._getLocalStorage().getItem(this.prefix + key));\n }\n set(key, value) {\n this._getLocalStorage().setItem(this.prefix + key, value);\n return Promise.resolve();\n }\n remove(key) {\n this._getLocalStorage().removeItem(this.prefix + key);\n return Promise.resolve();\n }\n _getLocalStorage() {\n if (this._localStorage) {\n return this._localStorage;\n }\n const ls = typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.localStorage\n : global.localStorage\n : window.localStorage;\n if (!ls) {\n throw new Error('Could not find local storage.');\n }\n return ls;\n }\n}\nexport class AuthClient {\n constructor(_identity, _key, _chain, _storage, \n // A handle on the IdP window.\n _idpWindow, \n // The event handler for processing events from the IdP.\n _eventHandler) {\n this._identity = _identity;\n this._key = _key;\n this._chain = _chain;\n this._storage = _storage;\n this._idpWindow = _idpWindow;\n this._eventHandler = _eventHandler;\n }\n static async create(options = {}) {\n var _a;\n const storage = (_a = options.storage) !== null && _a !== void 0 ? _a : new LocalStorage('ic-');\n let key = null;\n if (options.identity) {\n key = options.identity;\n }\n else {\n const maybeIdentityStorage = await storage.get(KEY_LOCALSTORAGE_KEY);\n if (maybeIdentityStorage) {\n try {\n key = Ed25519KeyIdentity.fromJSON(maybeIdentityStorage);\n }\n catch (e) {\n // Ignore this, this means that the localStorage value isn't a valid Ed25519KeyIdentity\n // serialization.\n }\n }\n }\n let identity = new AnonymousIdentity();\n let chain = null;\n if (key) {\n try {\n const chainStorage = await storage.get(KEY_LOCALSTORAGE_DELEGATION);\n if (chainStorage) {\n chain = DelegationChain.fromJSON(chainStorage);\n // Verify that the delegation isn't expired.\n if (!isDelegationValid(chain)) {\n await _deleteStorage(storage);\n key = null;\n }\n else {\n identity = DelegationIdentity.fromDelegation(key, chain);\n }\n }\n }\n catch (e) {\n console.error(e);\n // If there was a problem loading the chain, delete the key.\n await _deleteStorage(storage);\n key = null;\n }\n }\n return new this(identity, key, chain, storage);\n }\n _handleSuccess(message, onSuccess) {\n var _a;\n const delegations = message.delegations.map(signedDelegation => {\n return {\n delegation: new Delegation(signedDelegation.delegation.pubkey, signedDelegation.delegation.expiration, signedDelegation.delegation.targets),\n signature: signedDelegation.signature.buffer,\n };\n });\n const delegationChain = DelegationChain.fromDelegations(delegations, message.userPublicKey.buffer);\n const key = this._key;\n if (!key) {\n return;\n }\n this._chain = delegationChain;\n this._identity = DelegationIdentity.fromDelegation(key, this._chain);\n (_a = this._idpWindow) === null || _a === void 0 ? void 0 : _a.close();\n onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess();\n this._removeEventListener();\n }\n getIdentity() {\n return this._identity;\n }\n async isAuthenticated() {\n return !this.getIdentity().getPrincipal().isAnonymous() && this._chain !== null;\n }\n async login(options) {\n var _a, _b, _c;\n let key = this._key;\n if (!key) {\n // Create a new key (whether or not one was in storage).\n key = Ed25519KeyIdentity.generate();\n this._key = key;\n await this._storage.set(KEY_LOCALSTORAGE_KEY, JSON.stringify(key));\n }\n // Create the URL of the IDP. (e.g. https://XXXX/#authorize)\n const identityProviderUrl = new URL(((_a = options === null || options === void 0 ? void 0 : options.identityProvider) === null || _a === void 0 ? void 0 : _a.toString()) || IDENTITY_PROVIDER_DEFAULT);\n // Set the correct hash if it isn't already set.\n identityProviderUrl.hash = IDENTITY_PROVIDER_ENDPOINT;\n // If `login` has been called previously, then close/remove any previous windows\n // and event listeners.\n (_b = this._idpWindow) === null || _b === void 0 ? void 0 : _b.close();\n this._removeEventListener();\n // Add an event listener to handle responses.\n this._eventHandler = this._getEventHandler(identityProviderUrl, options);\n window.addEventListener('message', this._eventHandler);\n // Open a new window with the IDP provider.\n this._idpWindow = (_c = window.open(identityProviderUrl.toString(), 'idpWindow')) !== null && _c !== void 0 ? _c : undefined;\n }\n _getEventHandler(identityProviderUrl, options) {\n return async (event) => {\n var _a, _b;\n if (event.origin !== identityProviderUrl.origin) {\n return;\n }\n const message = event.data;\n switch (message.kind) {\n case 'authorize-ready': {\n // IDP is ready. Send a message to request authorization.\n const request = {\n kind: 'authorize-client',\n sessionPublicKey: new Uint8Array((_a = this._key) === null || _a === void 0 ? void 0 : _a.getPublicKey().toDer()),\n maxTimeToLive: options === null || options === void 0 ? void 0 : options.maxTimeToLive,\n };\n (_b = this._idpWindow) === null || _b === void 0 ? void 0 : _b.postMessage(request, identityProviderUrl.origin);\n break;\n }\n case 'authorize-client-success':\n // Create the delegation chain and store it.\n try {\n this._handleSuccess(message, options === null || options === void 0 ? void 0 : options.onSuccess);\n // Setting the storage is moved out of _handleSuccess to make\n // it a sync function. Having _handleSuccess as an async function\n // messes up the jest tests for some reason.\n if (this._chain) {\n await this._storage.set(KEY_LOCALSTORAGE_DELEGATION, JSON.stringify(this._chain.toJSON()));\n }\n }\n catch (err) {\n this._handleFailure(err.message, options === null || options === void 0 ? void 0 : options.onError);\n }\n break;\n case 'authorize-client-failure':\n this._handleFailure(message.text, options === null || options === void 0 ? void 0 : options.onError);\n break;\n default:\n break;\n }\n };\n }\n _handleFailure(errorMessage, onError) {\n var _a;\n (_a = this._idpWindow) === null || _a === void 0 ? void 0 : _a.close();\n onError === null || onError === void 0 ? void 0 : onError(errorMessage);\n this._removeEventListener();\n }\n _removeEventListener() {\n if (this._eventHandler) {\n window.removeEventListener('message', this._eventHandler);\n }\n this._eventHandler = undefined;\n }\n async logout(options = {}) {\n _deleteStorage(this._storage);\n // Reset this auth client to a non-authenticated state.\n this._identity = new AnonymousIdentity();\n this._key = null;\n this._chain = null;\n if (options.returnTo) {\n try {\n window.history.pushState({}, '', options.returnTo);\n }\n catch (e) {\n window.location.href = options.returnTo;\n }\n }\n }\n}\n//# sourceMappingURL=index.js.map","import { DelegationChain } from '@dfinity/identity';\nimport { Principal } from '@dfinity/principal';\nconst DEFAULT_IDENTITY_PROVIDER_URL = 'https://auth.ic0.app/authorize';\nfunction toHexString(bytes) {\n return new Uint8Array(bytes).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\nfunction _getDefaultLocation() {\n if (typeof window === 'undefined') {\n throw new Error('Could not find default location.');\n }\n return window.location.origin;\n}\n/**\n * Create a URL that can be used to redirect the browser to request authentication (e.g. using\n * the authentication provider). Will throw if some options are invalid.\n * @param options An option with all options for the authentication request.\n */\nexport function createAuthenticationRequestUrl(options) {\n var _a, _b, _c;\n const url = new URL((_b = (_a = options.identityProvider) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : DEFAULT_IDENTITY_PROVIDER_URL);\n url.searchParams.set('response_type', 'token');\n url.searchParams.set('login_hint', toHexString(options.publicKey.toDer()));\n url.searchParams.set('redirect_uri', (_c = options.redirectUri) !== null && _c !== void 0 ? _c : _getDefaultLocation());\n url.searchParams.set('scope', options.scope\n .map(p => {\n if (typeof p === 'string') {\n return Principal.fromText(p);\n }\n else {\n return p;\n }\n })\n .map(p => p.toString())\n .join(' '));\n url.searchParams.set('state', '');\n return url;\n}\n/**\n * Returns an AccessToken from the Window object. This cannot be used in Node, instead use\n * the {@link getAccessTokenFromURL} function.\n *\n * An access token is needed to create a DelegationChain object.\n */\nexport function getAccessTokenFromWindow() {\n if (typeof window === 'undefined') {\n return null;\n }\n return getAccessTokenFromURL(new URL(window.location.href));\n}\n/**\n * Analyze a URL and try to extract an AccessToken from it.\n * @param url The URL to look into.\n */\nexport function getAccessTokenFromURL(url) {\n // Remove the `#` at the start.\n const hashParams = new URLSearchParams(new URL(url.toString()).hash.substr(1));\n return hashParams.get('access_token');\n}\n/**\n * Create a DelegationChain from an AccessToken extracted from a redirect URL.\n * @param accessToken The access token extracted from a redirect URL.\n */\nexport function createDelegationChainFromAccessToken(accessToken) {\n // Transform the HEXADECIMAL string into the JSON it represents.\n if (/[^0-9a-fA-F]/.test(accessToken) || accessToken.length % 2) {\n throw new Error('Invalid hexadecimal string for accessToken.');\n }\n const chainJson = [...accessToken]\n .reduce((acc, curr, i) => {\n // tslint:disable-next-line:no-bitwise\n acc[(i / 2) | 0] = (acc[(i / 2) | 0] || '') + curr;\n return acc;\n }, [])\n .map(x => Number.parseInt(x, 16))\n .map(x => String.fromCharCode(x))\n .join('');\n return DelegationChain.fromJSON(chainJson);\n}\n/**\n * Analyze a DelegationChain and validate that it's valid, ie. not expired and apply to the\n * scope.\n * @param chain The chain to validate.\n * @param checks Various checks to validate on the chain.\n */\nexport function isDelegationValid(chain, checks) {\n // Verify that the no delegation is expired. If any are in the chain, returns false.\n for (const { delegation } of chain.delegations) {\n // prettier-ignore\n if (+new Date(Number(delegation.expiration / BigInt(1000000))) <= +Date.now()) {\n return false;\n }\n }\n // Check the scopes.\n const scopes = [];\n const maybeScope = checks === null || checks === void 0 ? void 0 : checks.scope;\n if (maybeScope) {\n if (Array.isArray(maybeScope)) {\n scopes.push(...maybeScope.map(s => (typeof s === 'string' ? Principal.fromText(s) : s)));\n }\n else {\n scopes.push(typeof maybeScope === 'string' ? Principal.fromText(maybeScope) : maybeScope);\n }\n }\n for (const s of scopes) {\n const scope = s.toText();\n for (const { delegation } of chain.delegations) {\n if (delegation.targets === undefined) {\n continue;\n }\n let none = true;\n for (const target of delegation.targets) {\n if (target.toText() === scope) {\n none = false;\n break;\n }\n }\n if (none) {\n return false;\n }\n }\n }\n return true;\n}\n//# sourceMappingURL=index.js.map","export const idlFactory = ({ IDL }) => {\n return IDL.Service({\n 'chat' : IDL.Func([IDL.Text], [IDL.Text], []),\n 'getcls' : IDL.Func([], [IDL.Text], []),\n 'storecls' : IDL.Func([IDL.Text], [IDL.Text], []),\n 'storeid' : IDL.Func([IDL.Text, IDL.Text], [IDL.Text], []),\n });\n};\nexport const init = ({ IDL }) => { return []; };\n","import { Actor, HttpAgent } from \"@dfinity/agent\";\n\n// Imports and re-exports candid interface\nimport { idlFactory } from './spda.did.js';\nexport { idlFactory } from './spda.did.js';\n// CANISTER_ID is replaced by webpack based on node environment\nexport const canisterId = process.env.SPDA_CANISTER_ID;\n\n/**\n * \n * @param {string | import(\"@dfinity/principal\").Principal} canisterId Canister ID of Agent\n * @param {{agentOptions?: import(\"@dfinity/agent\").HttpAgentOptions; actorOptions?: import(\"@dfinity/agent\").ActorConfig}} [options]\n * @return {import(\"@dfinity/agent\").ActorSubclass}\n */\n export const createActor = (canisterId, options) => {\n const agent = new HttpAgent({ ...options?.agentOptions });\n \n // Fetch root key for certificate validation during development\n if(process.env.NODE_ENV !== \"production\") {\n agent.fetchRootKey().catch(err=>{\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n }\n\n // Creates an actor with using the candid interface and the HttpAgent\n return Actor.createActor(idlFactory, {\n agent,\n canisterId,\n ...options?.actorOptions,\n });\n};\n \n/**\n * A ready-to-use agent for the spda canister\n * @type {import(\"@dfinity/agent\").ActorSubclass}\n */\n export const spda = createActor(canisterId);\n","\n\n {title}\n\n
\n\n\n","import './global.css';\n\nimport App from './App.svelte';\n\nconst app = new App({\n\ttarget: document.body,\n\tprops: {\n\t\tname: 'world'\n\t}\n});\n\nexport default app;\n"],"names":["module","exports","arr","Array","isArray","i","arr2","length","obj","__esModule","iter","Symbol","iterator","Object","prototype","toString","call","from","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","value","err","TypeError","arrayWithHoles","iterableToArrayLimit","nonIterableRest","arrayWithoutHoles","iterableToArray","nonIterableSpread","_typeof2","constructor","_typeof","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","error","Promise","then","_asyncToGenerator","fn","self","this","args","arguments","apply","_chainInfo","_chainToNetworkConsta","runtime_1","runtime","undefined$1","Op","hasOwn","hasOwnProperty","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","defineProperty","enumerable","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","state","GenStateSuspendedStart","method","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","type","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","AsyncIterator","PromiseImpl","invoke","result","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","async","keys","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","DEFAULT_SYMBOL","DEFAULT_SYSTEM_DOMAIN","DEFAULT_CHAIN","getContractConstants","chain","systemDomain","proxyInfo","includes","EOSIO","EOSIO_TOKEN","ACCOUNT_INFO","PROXY_INFO_ACCOUNT","EOSIO_MSIG","EOSIO_RAM","EOSIO_STAKE","EOSIO_PRODS","EOSIO_NULL","EOSIO_RAMFEE","EOSIO_VPAY","EOSIO_BPAY","EOSIO_REX","NEWACCOUNT_NAME_PARAM","indexOf","EOSIO_MSIG_APPROVALS_TABLE","EOSIO_MSIG_PROPOSALS_TABLE","TRANSFER_ACTION","DELEGATE_BW_ACTION","UNDELEGATE_BW_ACTION","VOTE_PRODUCER_ACTION","BUY_RAM_ACTION","BUY_RAM_BYTES_ACTION","SELL_RAM_ACTION","dapps","description","shortDescription","symbol","partner","statistics","accounts","logo","website","app","telegram","medium","twitter","github","chains","discord","exchanges","linkGenerator","token","pair","account","pair_base","toLowerCase","pair_quote","_","__","toUpperCase","SCATTER_DESKTOP","SCATTER_DESKTOP_MANUAL","SCATTER_EXTENSION","LEDGER","LEDGER_USB","LEDGER_BLE","LEDGER_WEBUSB","LEDGER_WEBHID","LYNX","PROTON","ANCHOR","SIMPLEOS","EOSAUTH","CLEOS","EOSC","CLIO","KEYCAT","TREZOR","SQRL","WOMBAT","WAX_CLOUD_WALLET","historyTypesFeatures","actionFilter","tokenFilter","dateFilter","contractActionFilter","total","dfuse","hyperion","chainInfo","local","text","image","testnet","jungle","jungle3","kylin","eos","proton","wax","telos","fio","bos","xec","coffe","remme","generateProviderEndpoints","chainId","actionEndpoints","port","protocol","host","substr","httpEndpoint","blockchain","ACTIONS_ENDPOINTS","CHAIN_ID","constants","ALOHA_PROXY_URL","API_URL","ATOMICASSETS_API","BLOKS_PROXY","CHAIN","CHAIN_START_DATE","Date","CORE_PRECISION","CORE_SYMBOL","DEFAULT_ENDPOINTS","DISPLAY_CHAIN","DOMAIN_TITLE","HISTORY_TYPES","HYPERION_URL","KEY_PREFIX","LIGHT_API","NFTS_ENABLED","PROVIDER_ENDPOINTS","REX_ENABLED","SIMPLEASSETS_API","SUPPORTS_FREE_CPU","SUPPORTS_RENTBW","TRANSACTIONS_ENDPOINTS","VOTING_ENABLED","ACTIONS_ENDPOINTS$1","CHAIN_ID$1","constants$1","ACTIONS_ENDPOINTS$2","CHAIN_ID$2","constants$2","ACTIONS_ENDPOINTS$3","CHAIN_ID$3","constants$3","ACTIONS_ENDPOINTS$4","CHAIN_ID$4","constants$4","MAX_VOTES","ACTIONS_ENDPOINTS$5","CHAIN_ID$5","constants$5","ACTIONS_ENDPOINTS$6","CHAIN_ID$6","constants$6","SYSTEM_DOMAIN","ACTIONS_ENDPOINTS$7","CHAIN_ID$7","constants$7","ACTIONS_ENDPOINTS$8","CHAIN_ID$8","constants$8","DISABLE_MEMO","FIO_FEES_ACCOUNT","ACTIONS_ENDPOINTS$a","CHAIN_ID$a","constants$a","ACTIONS_ENDPOINTS$b","CHAIN_ID$b","constants$b","ACTIONS_ENDPOINTS$c","CHAIN_ID$c","constants$c","ACTIONS_ENDPOINTS$d","CHAIN_ID$d","CHAIN_START_DATE$d","constants$d","ACTIONS_ENDPOINTS$e","CHAIN_ID$e","constants$e","ACTIONS_ENDPOINTS$f","CHAIN_ID$f","CHAIN_START_DATE$f","constants$f","ACTIONS_ENDPOINTS$g","CHAIN_ID$g","constants$g","ACTIONS_ENDPOINTS$h","CHAIN_ID$h","constants$h","ACTIONS_ENDPOINTS$i","CHAIN_ID$i","constants$i","chainToNetworkConstantsMap","constants$j","Constants","instance","_proto","initialize","_initialize","_callee","_context","setNetwork","setCommon","_x","_setNetwork","_callee2","networkConstants","_context2","setConstants","setContract","_x2","commonConstants","MAX_RPC_SYNC_SECONDS_BEHIND","IMAGE_PROXY","WRAP_CONTRACT","BLOKS_API","PROTON_API","METAL_PROTON_ENDPOINT","SWAP_URL","WRAP_SERVER_URL","getCommonConstants","contractConstants","newConstants","_Object$entries","entries","_Object$entries$_i","t","e","n","r","a","o","s","l","h","y","w","p","c","u","d","g","f","v","k","m","x","E","return","b","C","A","catch","anchor","backgroundColor","firstChild","removeChild","window","location","href","split","Math","floor","random","test","navigator","userAgent","options","classPrefix","injectStyles","requestStatus","requestAccount","walletType","backButton","closeModal","hide","activeCancel","activeRequest","setupElements","styleEl","font","document","createElement","rel","replace","appendChild","createTextNode","head","containerEl","clearDuplicateContainers","createEl","className","onclick","target","stopPropagation","body","requestEl","class","tag","dispatchEvent","CustomEvent","getElementsByClassName","textContent","remove","setAttribute","classList","clearTimers","show","add","displayRequest","clone","setInfoKey","encode","margin","errorCorrectionLevel","innerHTML","t0","console","warn","addEventListener","preventDefault","src","isIdentity","showLoading","onRequest","onSessionRequest","metadata","sameDevice","timeout","now","toISOString","countdownTimer","setInterval","getScheme","closeTimer","clearTimeout","onSuccess","setTimeout","onFailure","code","message","String","default","Reflect","construct","sham","Proxy","bind","Map","has","get","set","ReferenceError","S","hash","fill","charCodeAt","z","N","P","Uint8Array","T","fromCharCode","U","K","O","B","k1","r1","wa","I","M","data","buffer","R","F","G","L","D","j","map","V","W","sha256","update","digest","H","q","Y","Z","isNegative","negate","decimalToBinary","signedDecimalToBinary","binaryToDecimal","signedBinaryToDecimal","base58ToBinary","binaryToBase58","base64ToBinary","KeyType","publicKeyDataSize","privateKeyDataSize","signatureDataSize","stringToPublicKey","publicKeyToLegacyString","publicKeyToString","convertLegacyPublicKey","convertK1ToLegacyPublicKey","decode","Buffer","concat","convertLegacyPublicKeys","stringToPrivateKey","privateKeyToLegacyString","privateKeyToString","stringToSignature","signatureToString","J","skippedBinaryExtension","Q","array","textEncoder","textDecoder","readPos","TextEncoder","TextDecoder","reserve","ceil","haveReadData","restartRead","asUint8Array","byteOffset","pushArray","pushUint8ArrayChecked","getUint8Array","skip","pushUint16","getUint16","pushUint32","getUint32","pushNumberAsUint64","getUint64AsNumber","pushVaruint32","getVaruint32","pushVarint32","getVarint32","pushFloat32","Float32Array","getFloat32","pushFloat64","Float64Array","getFloat64","pushName","RegExp","getName","endsWith","pushBytes","getBytes","pushString","getString","pushSymbolCode","getSymbolCode","pushSymbol","precision","getSymbol","pushAsset","trim","getAsset","pushPublicKey","getPublicKey","pushPrivateKey","getPrivateKey","pushSignature","getSignature","X","startsWith","$","parse","Number","ee","round","te","re","ne","ae","ie","se","match","oe","ue","ce","parseInt","le","fe","pe","JSON","stringify","base","serialize","fields","extensionOf","he","deserialize","ye","findIndex","de","ve","arrayOf","ge","me","optionalOf","be","xe","ke","we","Ae","Se","assign","aliasOfName","baseName","ze","Ee","bool","uint8","int8","uint16","int16","uint32","uint64","int64","int32","varuint32","varint32","uint128","int128","float32","float64","float128","bytes","bytesAsUint8Array","string","time_point","time_point_sec","block_timestamp_type","symbol_code","asset","checksum160","checksum256","checksum512","public_key","private_key","signature","typeName","Ne","Pe","Te","types","new_type_name","structs","variants","Ce","header","timestamp","id","expiration","ref_block_num","block_num","ref_block_prefix","Ue","actions","Ke","authorization","Oe","Be","Ie","Ve","null_t","any_array","any_object","index","Me","We","useShortForm","Re","Fe","Ge","Le","De","je","He","filter","qe","SerializerState","SerialBuffer","supportedAbiVersion","dateToTimePoint","timePointToDate","dateToTimePointSec","timePointSecToDate","dateToBlockTimestamp","blockTimestampToDate","stringToSymbol","symbolToString","arrayToHex","hexToUint8Array","createInitialTypes","createAbiTypes","getType","getTypesFromAbi","transactionHeader","serializeActionData","serializeAction","deserializeActionData","deserializeAction","serializeAnyvar","deserializeAnyvar","deserializeAnyvarShort","serializeAnyObject","deserializeAnyObject","serializeAnyArray","deserializeAnyArray","serializeQuery","Ye","ec","Ze","Je","fromString","fromElliptic","getPublic","getX","toArray","getY","toLegacyString","toElliptic","keyPair","pub","isValid","validate","Qe","Xe","recoveryParam","toBinary","verify","recover","recoverPubKey","keyFromPublic","$e","getPrivate","toArrayLike","keyFromPrivate","sign","canonical","pers","et","generateKeyPair","secureEnv","genKeyPair","ecOptions","publicKey","privateKey","PrivateKey","PublicKey","Signature","constructElliptic","tt","rt","nt","availableKeys","getAvailableKeys","requiredKeys","serializedTransaction","serializedContextFreeData","signatures","at","version","tables","ricardian_clauses","error_messages","abi_extensions","it","contracts","cachedAbis","rpc","authorityProvider","abiProvider","signatureProvider","abiTypes","transactionTypes","rawAbiToJson","jsonToRawAbi","getCachedAbi","getRawAbi","abi","rawAbi","getAbi","getTransactionAbis","context_free_actions","Set","accountName","all","getContract","serializeTransaction","max_net_usage_words","max_cpu_usage_ms","delay_sec","transaction_extensions","serializeContextFreeData","deserializeTransaction","serializeActions","deserializeActions","deserializeActionsSync","deserializeTransactionWithActions","deflateSerializedArray","deflate","level","inflateSerializedArray","inflate","transact","broadcast","compression","blocksBehind","useLastIrreversible","expireSeconds","get_info","generateTapos","hasRequiredTaposFields","t1","t2","t3","t4","t5","context_free_data","getRequiredKeys","transaction","chain_id","abis","pushCompressedSignedTransaction","pushSignedTransaction","transactWithDelay","query","tryRefBlockFromGetInfo","send_transaction","processed","action_traces","return_value","push_transaction","head_block_num","last_irreversible_block_num","tryGetBlockInfo","tryGetBlockHeaderState","get_block_header_state","get_block_info","get_block","last_irreversible_block_id","last_irreversible_block_time","with","ot","buildTransaction","st","getAccountKeys","get_account","permissions","find","perm_name","required_auth","log","checkIfKeysMatchTransaction","actor","permission","some","contextFreeGroups","api","associateContextFree","send","serializedData","cfd","cfa","contextFreeAction","contextFreeData","action","as","ut","ct","lt","ft","post","account_name","pt","ht","block_num_or_id","yt","dt","vt","gt","mt","bt","xt","kt","wt","_t","At","St","zt","Et","json","lower_bound","limit","Nt","Pt","Tt","Ct","Ut","Kt","available_keys","required_keys","Ot","Bt","pos","offset","It","Mt","block_num_hint","Rt","Ft","Gt","Lt","controlling_account","Dt","jt","FAILED","UNSUBMITTED","PENDING","PASSED","Vt","Wt","KycStatus","Ht","flag","qt","Yt","content","reduce","Zt","Jt","get_table_rows","table","scope","validKycProviders","rows","blisted","kyc_provider","Qt","Xt","getValidKycProviders","upper_bound","kyc","kyc_level","isLightKYCVerified","every","$t","er","expectedTier","tier","status","tr","rr","nr","ar","SUCCESS","FAIL","PROCESSING","ir","counterCurrency","price","number","priceChangePercent","marketCap","volume","sr","contract","rank","rates","or","quoteId","estimatedFee","currency","network","ur","cr","lr","fr","pr","hr","baseSymbol","baseAmount","quoteSymbol","yr","dr","vr","gr","mr","br","xr","kr","wr","_r","table_key","index_position","key_type","show_payer","Ar","Sr","index_name","encode_type","index_value","zr","Er","Nr","Pr","Tr","packed_context_free_data","packed_trx","nextEndpoint","Cr","Ur","Kr","Or","Br","Ir","Mr","Rr","get_raw_abi","Fr","Gr","Lr","Dr","code_as_wasm","jr","details","except","Vr","maxRetries","get_currency_balance","get_currency_stats","get_producer_schedule","get_producers","get_scheduled_transactions","get_activated_protocol_features","get_abi","get_raw_code_and_abi","get_code","get_kv_table_rows","get_table_by_scope","history_get_actions","history_get_transaction","history_get_key_accounts","history_get_controlled_accounts","db_size_get","fetchKycCountries","checkUserKycStatus","applyForKyc","currentLocation","otcQuote","otcOrder","generateAddress","withdrawMetal","withdrawalHistoryMetal","getTokenPrices","getWithdrawalFee","endpoints","currentEndpoint","shift","isFetchError","ok","head_block_time","getTime","MAX_SECONDS_BEHIND","Wr","Api","ApiInterfaces","JsonRpc","Numeric","RpcInterfaces","RpcError","Serialize","JsSignatureProvider","Key","crypto","Uint32Array","getRandomValues","fromBuffer","randomKey","link","storage","removeSession","identifier","auth","restore","channel","encrypt","Aes","requestKey","privateToPublic","nonce","ciphertext","checksum","transport","fetch","url","headers","toFixed","Accept","prepare","makeSignatureProvider","makeAuthorityProvider","abiCache","pendingAbis","nameToId","serviceAddress","service","requestOptions","zlib","scheme","delete","createCallbackUrl","v4","createRequest","SigningRequest","callback","background","sendRequest","flags","rejected","cancel","race","sa","sp","ResolvedSigningRequest","fromPayload","request","getInfo","fuel_sig","unshift","payload","signer","checkIdentity","identify","identity","getChainId","alloc","PlaceholderName","PlaceholderPermission","signerKey","threshold","weight","login","session_name","request_key","getRawInfo","return_path","link_ch","link_key","link_name","storeSession","accountData","write","session","restoreSession","sessionKey","listSessions","read","touchSession","clearSessions","fromTransaction","setCallback","setBroadcast","splice","join","readyState","OPEN","CONNECTING","close","onmessage","Blob","FileReader","onload","onerror","readAsText","ArrayBuffer","onopen","onclose","min","pow","PlaceholderAuth","CancelError","IdentityError","Link","LinkChannelSession","LinkFallbackSession","LinkSession","SessionError","pako","zlib_deflate","utils","strings","msg","ZStream","Deflate","chunkSize","windowBits","memLevel","strategy","to","opt","raw","gzip","ended","chunks","strm","avail_out","deflateInit2","deflateSetHeader","dictionary","dict","string2buf","deflateSetDictionary","_dict_set","input","deflator","mode","_mode","next_in","avail_in","output","Buf8","next_out","onEnd","onData","buf2binstring","shrinkBuf","deflateEnd","chunk","flattenChunks","deflateRaw","zlib_inflate","GZheader","Inflate","inflateInit2","Z_OK","inflateGetHeader","inflateSetDictionary","inflator","next_out_utf8","tail","utf8str","allowBufError","Z_FINISH","Z_NO_FLUSH","binstring2buf","Z_NEED_DICT","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","inflateRaw","ungzip","TYPED_OK","Uint16Array","Int32Array","_has","sources","source","buf","size","subarray","fnTyped","dest","src_offs","len","dest_offs","fnUntyped","setTyped","on","Buf16","Buf32","STR_APPLY_OK","STR_APPLY_UIA_OK","_utf8len","str","c2","m_pos","str_len","buf_len","max","out","c_len","utf16buf","adler","s1","s2","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","crcTable","makeTable","crc","end","configuration_table","trees","adler32","crc32","MAX_MATCH","MIN_LOOKAHEAD","HCRC_STATE","BUSY_STATE","FINISH_STATE","errorCode","zero","flush_pending","pending","pending_buf","pending_out","total_out","flush_block_only","last","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","start","_w_size","window_size","hash_size","total_in","insert","ins_h","hash_shift","hash_mask","deflate_fast","flush","hash_head","bflush","match_length","_tr_tally","max_lazy_match","MIN_MATCH","last_lit","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","func","DeflateState","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","HEAP_SIZE","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","MAX_BITS","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","deflateResetKeep","data_type","_tr_init","deflateReset","ret","max_block_size","max_start","deflateInit","old_flush","beg","val","hcrc","extra","comment","time","os","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","avail","tmpDict","dictLength","deflateInfo","xflags","extra_len","_in","_out","dmax","wsize","whave","wnext","s_window","hold","bits","lcode","dcode","lmask","dmask","here","op","dist","from_source","lencode","distcode","lenbits","distbits","top","dolen","dodist","sane","inflate_fast","inflate_table","TYPE","BAD","zswap32","InflateState","havedict","check","wbits","ncode","nlen","ndist","have","lens","work","lendyn","distdyn","back","was","inflateResetKeep","inflateReset","inflateReset2","lenfix","distfix","virgin","fixedtables","sym","updatewindow","copy","inflateInit","put","left","here_bits","here_op","here_val","last_bits","last_op","last_val","opts","hbuf","order","inf_leave","inflateInfo","lbase","lext","dbase","dext","lens_index","codes","table_index","incr","low","mask","root","curr","drop","used","huff","base_index","count","MAXBITS","offs","extra_index","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","D_CODES","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","send_bits","send_code","tree","bi_reverse","res","gen_codes","next_code","init_block","LITERALS","END_BLOCK","bi_windup","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","lc","lx","build_tree","desc","node","stree","xbits","overflow","gen_bitlen","scan_tree","curlen","prevlen","nextlen","max_count","min_count","REP_3_6","REPZ_3_10","REPZ_11_138","send_tree","static_init_done","stored_len","copy_block","LENGTH_CODES","L_CODES","tr_static_init","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","BL_CODES","build_bl_tree","lcodes","dcodes","blcodes","send_all_trees","STATIC_TREES","bi_flush","RequestFlagsNone","RequestFlagsBroadcast","RequestFlagsBackground","ChainName","UNKNOWN","EOS","TELOS","JUNGLE","KYLIN","WORBLI","BOS","MEETONE","INSIGHTS","BEOS","WAX","FIO","req","fromData","getSignatureDigest","getData","setSignature","getSignatureData","byteLength","getRequiredAbis","getRawActions","requiresTapos","getRawTransaction","fetchAbis","resolveActions","resolveTransaction","expire_seconds","transactionType","idType","shouldBroadcast","getIdentity","getIdentityPermission","toJSON","rbn","rid","ex","getTransactionId","getCallback","sig","tx","bn","idToName","appLogo","appName","customStyleOptions","hideSelector","selectorContainerEl","showSelector","setUpSelectorContainer","modalBackgroundColor","logoBackgroundColor","isLogoRound","optionBackgroundColor","optionFontColor","primaryFontColor","secondaryFontColor","linkColor","selectorEl","displayWalletSelector","alt","cloneNode","keyPrefix","localStorage","setItem","storageKey","getItem","removeItem","ConnectWallet","transportOptions","selectorOptions","linkOptions","storagePrefix","removeEventListener","loginResult","isDeepEqual","isDeepStrictEqual","_require$codes","ERR_AMBIGUOUS_ARGUMENT","ERR_INVALID_ARG_TYPE","ERR_INVALID_ARG_VALUE","ERR_INVALID_RETURN_VALUE","ERR_MISSING_ARGS","AssertionError","inspect","_require$types","isPromise","isRegExp","objectAssign","objectIs","is","lazyLoadComparison","comparison","warned","assert","NO_EXCEPTION_SENTINEL","innerFail","innerOk","argLen","generatedMessage","actual","expected","operator","stackStartFn","_len","_key","fail","internalMessage","argsLen","process","emitWarning","errArgs","equal","notEqual","deepEqual","notDeepEqual","deepStrictEqual","notDeepStrictEqual","strictEqual","notStrictEqual","Comparison","_this","Constructor","_classCallCheck","compareExceptionKey","expectedException","isPrototypeOf","getActual","checkIsPromise","waitForActual","promiseFn","resultPromise","expectsError","fnType","expectsNoError","strict","_len6","_key6","throws","_len2","_key2","rejects","_len3","_key3","doesNotThrow","_len4","_key4","doesNotReject","_len5","_key5","ifError","newErr","origStack","stack","tmp2","tmp1","_defineProperty","_defineProperties","props","descriptor","_possibleConstructorReturn","_assertThisInitialized","_wrapNativeSuper","Class","_cache","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","isNativeReflectConstruct","Parent","search","this_len","substring","blue","green","red","white","kReadableOperator","strictEqualObject","notStrictEqualObject","notIdentical","copyError","inspectValue","compact","customInspect","maxArrayLength","Infinity","showHidden","breakLength","showProxy","sorted","getters","_Error","stackTraceLimit","stderr","isTTY","getColorDepth","other","lastPos","skipped","actualInspected","actualLines","expectedLines","indicator","inputLength","columns","maxCount","repeat","maxLines","_actualLines","printedLines","skippedMsg","cur","expectedLine","actualLine","divergingLines","createErrDiff","_res","knownOperators","captureStackTrace","protoProps","subClass","superClass","_inherits","custom","recurseTimes","ctx","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptor","_objectSpread","util","createErrorType","Base","NodeError","_Base","arg1","arg2","arg3","getMessage","oneOf","thing","determiner","reason","inspected","RangeError","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","regexFlagsSupported","arrayFromSet","arrayFromMap","objectGetOwnPropertySymbols","numberIsNaN","uncurryThis","propertyIsEnumerable","objectToString","isAnyArrayBuffer","isArrayBufferView","isDate","isMap","isSet","isNativeError","isBoxedPrimitive","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isFloat32Array","isFloat64Array","isNonIndex","getOwnNonIndexProperties","compare","innerDeepEqual","val1","val2","memos","buf1","buf2","val1Tag","keys1","keys2","keyCheck","areSimilarTypedArrays","areSimilarFloatArrays","_keys","_keys2","valueOf","Boolean","BigInt","isEqualBoxedPrimitive","getEnumerables","iterationType","aKeys","bKeys","symbolKeysA","symbolKeysB","_symbolKeysB","position","val2MemoA","val2MemoB","areEq","objEquiv","setHasEqualElement","memo","setValues","findLooseMatchingPrimitives","prim","setMightHaveLoosePrim","altValue","mapMightHaveLoosePrim","item","curB","mapHasEqualEntry","key1","item1","key2","aValues","bValues","_val","setEquiv","aEntries","_aEntries$i","item2","bEntries","_i2","_bEntries$_i","mapEquiv","keysA","_Buffer","ALPHABET","BASE_MAP","xc","BASE","LEADER","FACTOR","iFACTOR","decodeUnsafe","psz","zeroes","b256","carry","it3","it4","vch","allocUnsafe","isBuffer","pbegin","pend","b58","it1","it2","chars","lookup","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","arraybuffer","b64","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","fromByteArray","extraBytes","parts","maxChunkLength","len2","encodeChunk","num","BigInteger","fromNumber","proto","__bigi","isBigInteger","check_ver","am","DB","DM","DV","FV","F1","BI_FP","F2","vv","BI_RC","int2char","intAt","nbv","fromInt","nbits","Classic","Montgomery","mp","invDigit","mpl","mph","um","mt2","op_and","op_or","op_xor","op_andnot","lbit","cbit","NullExp","nNop","Barrett","r2","q3","ONE","dlShiftTo","mu","divide","convert","compareTo","mod","revert","divRemTo","mulTo","multiplyTo","sqrTo","squareTo","abs","ZERO","subTo","copyTo","u0","clamp","drShiftTo","fromRadix","mi","sh","lShiftTo","bs","cbs","bm","ds","rShiftTo","pm","ts","ms","nsh","ys","y0","d1","d2","qd","isEven","exp","toRadix","km","bitLength","modPowInt","multiplyUpperTo","multiplyLowerTo","dAddOffset","lowprimes","lplim","LN2","signum","cs","intValue","dMultiply","testBit","bitwiseTo","shiftLeft","isProbablePrime","nextBytes","changeBit","addTo","modInt","millerRabin","n1","subtract","getLowestSetBit","shiftRight","bases","modPow","byteValue","shortValue","equals","and","xor","andNot","not","bitCount","setBit","clearBit","flipBit","multiply","remainder","divideAndRemainder","g2","is1","modInverse","ac","gcd","square","fromByteArrayUnsigned","byteArray","toByteArrayUnsigned","fromDERInteger","toDERInteger","fromHex","hex","toBuffer","zeros","padding","toHex","globalObject","BigNumber","isNumeric","mathceil","mathfloor","bignumberError","tooManyDigits","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","bitFloor","coeffToString","yc","intCheck","isOdd","toExponential","toFixedPoint","zs","configObject","div","convertBase","parseNumeric","pow2_53","random53bitInt","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","prefix","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","alphabet","caseChanged","isNum","_isBigNumber","DEBUG","format","rm","c0","maxOrMin","normalise","sd","ni","rd","pows10","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","config","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","minimum","dp","rand","sum","plus","decimal","toBaseOut","baseIn","baseOut","arrL","callerIsToString","temp","xlo","xhi","klo","khi","aL","bL","cmp","prod","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","NaN","p1","p2","absoluteValue","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","isInteger","times","integerValue","isEqualTo","eq","isFinite","isGreaterThan","isGreaterThanOrEqualTo","gte","isLessThan","isLessThanOrEqualTo","lte","isPositive","isZero","minus","xLTy","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","shiftedBy","squareRoot","sqrt","rep","toFormat","g1","intPart","fractionPart","isNeg","intDigits","toFraction","md","d0","n0","toNumber","toPrecision","inherits","superCtor","super_","TempCtor","BN","endian","isBN","negative","words","_init","wordSize","parseHex4Bits","parseHexByte","lowerBound","parseBase","mul","right","_initNumber","_initArray","_parseHex","_parseBase","off","strip","limbLen","limbPow","word","imuln","_iaddn","_expand","_normSign","groupSizes","groupBases","smallMulTo","lo","ncarry","rword","maxJ","groupBase","modn","idivn","ArrayType","reqLength","littleEndian","andln","iushrn","clz32","_countBits","_zeroBits","hi","zeroBits","toTwos","width","inotn","iaddn","fromTwos","testn","notn","ineg","neg","iuor","ior","uor","iuand","iand","uand","iuxor","ixor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","sub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","hncarry","bigMulTo","makeRBT","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","ws","convert13b","stub","ph","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","carryMask","newCarry","ishln","hint","extended","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","bhi","diff","qj","divmod","positive","divn","umod","divRound","dm","acc","egcd","yp","xp","im","jm","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gten","ltn","lten","eqn","Red","toRed","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","_strip","outLen","mod3","one","nOne","lpow","inv","wnd","current","currentLen","mont","ieee754","customInspectSymbol","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","encodingOrOffset","encoding","isEncoding","isView","arrayView","isInstance","fromArrayBuffer","fromArrayLike","fromArrayView","SharedArrayBuffer","checked","fromObject","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","units","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","foo","typedArraySupport","poolSize","allocUnsafeSlow","_isBuffer","list","swap16","swap32","swap64","toLocaleString","thisStart","thisEnd","thisCopy","targetCopy","hexSliceLookupTable","checkOffset","ext","checkInt","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","readUintLE","readUIntLE","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","leadSurrogate","base64clean","dst","i16","Bignumber","MT","POS_INT","NEG_INT","BYTE_STRING","UTF8_STRING","ARRAY","MAP","TAG","SIMPLE_FLOAT","DATE_STRING","DATE_EPOCH","POS_BIGINT","NEG_BIGINT","DECIMAL_FRAC","BIGFLOAT","BASE64URL_EXPECTED","BASE64_EXPECTED","BASE16_EXPECTED","CBOR","URI","BASE64URL","BASE64","REGEXP","MIME","NUMBYTES","TWO","FOUR","EIGHT","INDEFINITE","SIMPLE","FALSE","TRUE","NULL","UNDEFINED","SYMS","PARENT","BREAK","STREAM","SHIFT32","SHIFT16","MAX_SAFE_HIGH","NEG_ONE","TEN","OBJECT","stdlib","foreign","pushInt","pushInt32","pushInt32Neg","pushInt64","pushInt64Neg","pushFloat","pushFloatSingle","pushFloatDouble","pushTrue","pushFalse","pushUndefined","pushNull","pushInfinity","pushInfinityNeg","pushNaN","pushNaNNeg","pushArrayStart","pushArrayStartFixed","pushArrayStartFixed32","pushArrayStartFixed64","pushObjectStart","pushObjectStartFixed","pushObjectStartFixed32","pushObjectStartFixed64","pushByteString","pushByteStringStart","pushUtf8String","pushUtf8StringStart","pushSimpleUnassigned","pushTagStart","pushTagStart4","pushTagStart8","pushTagUnassigned","pushBreak","jumpTable","readUInt16","readUInt32","INT_P","octet","UINT_P_8","UINT_P_16","UINT_P_32","UINT_P_64","INT_N","UINT_N_8","UINT_N_16","UINT_N_32","UINT_N_64","step","BYTE_STRING_8","BYTE_STRING_16","BYTE_STRING_32","BYTE_STRING_64","BYTE_STRING_BREAK","UTF8_STRING_8","UTF8_STRING_16","UTF8_STRING_32","UTF8_STRING_64","UTF8_STRING_BREAK","ARRAY_8","ARRAY_16","ARRAY_32","ARRAY_64","ARRAY_BREAK","MAP_8","MAP_16","MAP_32","MAP_64","MAP_BREAK","TAG_KNOWN","TAG_BIGNUM_POS","TAG_BIGNUM_NEG","TAG_FRAC","TAG_BIGNUM_FLOAT","TAG_UNASSIGNED","TAG_BASE64_URL","TAG_BASE64","TAG_BASE16","TAG_MORE_1","TAG_MORE_2","TAG_MORE_4","TAG_MORE_8","SIMPLE_UNASSIGNED","SIMPLE_FALSE","SIMPLE_TRUE","SIMPLE_NULL","SIMPLE_UNDEFINED","SIMPLE_BYTE","SIMPLE_FLOAT_HALF","mant","SIMPLE_FLOAT_SINGLE","SIMPLE_FLOAT_DOUBLE","ERROR","parser","Simple","Tagged","URL","Decoder","nextPowerOf2","_heap","_heap8","_buffer","_reset","_knownTags","arrayBufferToBignumber","tags","_depth","_parents","_currentParent","_ref","ref","_closeParent","_push","createTag","createByteString","createUtf8String","createMap","createObject","createArray","_dec","hasChildren","tmpKey","buildMap","_createParent","tagNumber","typ","createByteStringFromHeap","createInt","createInt32","buildInt32","createInt64","f1","f2","buildInt64","createFloat","createFloatSingle","createFloatDouble","createInt32Neg","createInt64Neg","createTrue","createFalse","createNull","createUndefined","createInfinity","createInfinityNeg","createNaN","createNaNNeg","createUtf8StringFromHeap","createSimpleUnassigned","_createArrayStartFixed","len1","len3","len4","_createObjectStartFixed","_decode","decodeFirst","decodeAll","static","enc","Diagnose","super","fl","isNegativeZero","collectObject","HALF","FLOAT","DOUBLE","MAXINT_BN","BUF_NAN","BUF_INF_NEG","BUF_INF_POS","Encoder","streaming","stream","semanticTypes","_pushUrl","_pushBigNumber","addTypes","genTypes","addSemanticType","fun","old","resultMethod","resultLength","finalize","pushWrite","_pushUInt8","_pushUInt16BE","_pushUInt32BE","_pushDoubleBE","_pushNaN","_pushInfinity","_pushFloat","writeHalf","parseHalf","_pushInt","orig","_pushIntNum","_pushNumber","_pushString","_pushBoolean","_pushUndefined","_pushArray","pushAny","_pushTag","_pushDate","_pushBuffer","_pushNoFilter","_pushRegexp","_pushSet","_pushBigint","dec","slide","_pushMap","_pushRawMap","_pushObject","encodeCBOR","keyLength","sort","keySorter","toType","diagnose","hasParent","converters","u32","s16","lenA","lenB","Rand","generate","_rand","getByte","msCrypto","uint_max","fixup_uint32","x_pos","scrub_vec","Global","SBOX","INV_SBOX","SUB_MIX","INV_SUB_MIX","init","RCON","sx","x4","x8","_results","bufferToArray","AES","_doReset","blockSize","keySize","invKsRow","keyWords","ksRow","ksRows","_nRounds","_keySchedule","_invKeySchedule","encryptBlock","_doCryptBlock","decryptBlock","scrub","keySchedule","s0","s3","aes","Transform","GHASH","StreamCipher","iv","decrypt","_finID","_cipher","_prev","_secCache","_decrypt","_alen","_ghash","_authTag","_called","_update","rump","_final","final","xorTest","getAuthTag","setAuthTag","setAAD","ciphers","createCipher","Cipher","createCipheriv","Cipheriv","deciphers","createDecipher","Decipher","createDecipheriv","Decipheriv","modes","listCiphers","getCiphers","AuthCipher","ebtk","Splitter","_last","_autopadding","cache","padded","unpad","setAutoPadding","setTo","autoPadding","modelist","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","suite","password","padBuff","fromArray","ghash","block","_multiply","lsb_Vi","Vi","Zi","abl","bl","cipher","pad","encryptStart","encryptByte","byteParam","shiftIn","getBlock","incr32","basex","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","boundsError","readBigUInt64BE","readBigInt64LE","readBigInt64BE","writeBigUInt64LE","writeBigUInt64BE","writeBigInt64LE","writeBigInt64BE","errors","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_BUFFER_OUT_OF_BOUNDS","received","BufferBigIntNotDefined","Long","ByteBuffer","capacity","DEFAULT_CAPACITY","DEFAULT_ENDIAN","DEFAULT_NOASSERT","EMPTY_BUFFER","view","markedOffset","VERSION","LITTLE_ENDIAN","BIG_ENDIAN","ByteBufferPrototype","__isByteBuffer__","stringFromCharCode","stringSource","stringDestination","ps","ieee754_read","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","ieee754_write","accessor","allocate","buffers","isByteBuffer","bi","bb","fromBase64","fromBinary","fromUTF8","fromDebug","writeBitSet","relative","writeVarint32","writeByte","readBitSet","readVarint32","readByte","readBytes","writeBytes","append","capacity0","resize","capacity1","writeInt16","capacity2","writeShort","readInt16","readShort","writeUint16","capacity3","writeUInt16","readUint16","writeInt32","capacity4","writeInt","readInt32","readInt","writeUint32","capacity5","writeUInt32","readUint32","writeInt64","capacity6","high","writeLong","readInt64","readLong","writeUint64","capacity7","writeUInt64","readUint64","readUInt64","writeFloat32","capacity8","readFloat32","readFloat","writeFloat64","capacity9","readFloat64","readDouble","MAX_VARINT32_BYTES","calculateVarint32","zigZagEncode32","zigZagDecode32","capacity10","writeVarint32ZigZag","readVarint32ZigZag","MAX_VARINT64_BYTES","calculateVarint64","part0","toInt","part1","shiftRightUnsigned","part2","zigZagEncode64","unsigned","toSigned","toUnsigned","zigZagDecode64","writeVarint64","capacity11","writeVarint64ZigZag","readVarint64","fromBits","readVarint64ZigZag","writeCString","utfx","calculateUTF16asUTF8","capacity12","encodeUTF16toUTF8","readCString","decodeUTF8toUTF16","writeIString","capacity13","readIString","readUTF8String","METRICS_BYTES","METRICS_CHARS","writeUTF8String","capacity14","writeString","calculateUTF8Chars","calculateUTF8Bytes","calculateString","metrics","decodeUTF8","cp","UTF8toUTF16","readString","writeVString","capacity15","readVString","capacity16","appendTo","clear","begin","targetOffset","sourceOffset","sourceLimit","targetRelative","ensureCapacity","flip","LE","BE","bigEndian","prepend","prependTo","printDebug","toDebug","forceCopy","toArrayBuffer","toUTF8","toBase64","toColumns","lxiv","aout","ain","btoa","atob","charCode","asc","ch","rs","ho","hm","hl","c1","UTF16toUTF8","encodeUTF8","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","applyBind","StringDecoder","CipherBase","hashMode","_finalOrDigest","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_toString","_transform","_flush","fin","functions","label","duration","expression","tuple","md5","RIPEMD160","sha","HashNoConstructor","_hash","Hash","alg","zeroBuffer","makeHash","core_md5","olda","oldb","oldc","oldd","md5_ff","md5_gg","md5_hh","md5_ii","safe_add","md5_cmn","cnt","lsw","Legacy","ZEROS","Hmac","blocksize","_alg","ipad","_ipad","opad","_opad","global","__self__","DOMException","support","viewClasses","normalizeName","normalizeValue","iteratorFor","items","Headers","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","blob","promise","readAsArrayBuffer","bufferClone","Body","_initBody","_bodyInit","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","arrayBuffer","readArrayBufferAsText","formData","oldValue","thisArg","methods","Request","upcased","credentials","signal","referrer","form","decodeURIComponent","Response","bodyInit","statusText","response","redirectStatuses","redirect","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","responseURL","responseText","ontimeout","onabort","open","withCredentials","responseType","setRequestHeader","onreadystatechange","polyfill","ponyfill","hasSymbols","toStr","origDefineProperty","supportsDescriptors","arePropertyDescriptorsSupported","predicate","defineProperties","predicates","dijkstra","single_source_shortest_paths","graph","predecessors","costs","closest","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","PriorityQueue","make","empty","cost","extract_shortest_path_from_predecessor_list","nodes","find_path","queue","sorter","default_sorter","Point","Curve","Gx","Gy","fromAffine","infinity","pOverFour","pLength","pointFromX","beta","isInfinity","isOnCurve","affineX","affineY","lhs","rhs","nQ","getCurveByName","curves","curve","THREE","_zInv","compressed","zInv","y1","twice","v2","v3","x1v2","zu2","x3","y3","z3","y1z1","y1sqz1","hBit","eBit","multiplyTwo","both","jBit","kBit","getEncoded","decodeFrom","elliptic","eddsa","getNAF","getJSF","BaseCurve","conf","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","precomputed","point","_fixedNafMul","doubles","_getDoubles","naf","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","jsf","ja","jb","decodePoint","encodeCompressed","_encode","precompute","power","_getBeta","_hasDoubles","dbl","EdwardsCurve","twisted","mOneA","dd","oneC","zOne","_mulA","_mulC","y2","pointFromY","normalize","fromJSON","_extDbl","nx","ny","nz","_projDbl","_extAdd","_projAdd","mulAdd","k2","jmulAdd","zi","eqXToP","short","edwards","MontCurve","i4","a24","aa","diffAdd","da","cb","jumlAdd","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","isRed","inf","JPoint","lambda","betas","_getEndoRoots","lambdas","basis","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","_endoSplit","v1","q1","q2","ax","_endoWnafMulAdd","npoints","ncoeffs","pre","endoMul","obj2point","ys1","dyinv","_precompute","zinv","zinv2","ay","pz2","z2","u1","u2","h2","h3","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","yyu4","kbase","pz3","PresetCurve","defineCurve","sha384","sha512","HmacDRBG","KeyPair","EC","nh","priv","fromPrivate","fromPublic","drbg","persEnc","entropy","hmacStrength","entropyEnc","ns2","_truncateToN","truncOnly","bkey","ns1","kp","kpX","sinv","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","_importPrivate","privEnc","_importPublic","pubEnc","derive","_importDER","Position","place","getLength","initial","octetLen","rmPadding","constructLength","octets","slen","toDER","backHalf","parseBytes","EDDSA","pointClass","encodingLength","secret","keyFromSecret","hashInt","messagePrefix","Rencoded","encodePoint","s_","pubBytes","makeSignature","SG","intFromLE","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","cachedProperty","params","_secret","_pub","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","minAssert","minUtils","zero2","m8","m14","m24","computer","second","crypt","toLongObj","getSharedSecret","ebuf","encryption_key","cbuf","toBinaryBuffer","decipher","cryptoJsDecrypt","cryptoJsEncrypt","uniqueNonce","unique_nonce_entropy","_long","isLong","ecc","unsafeRandomKey","cpuEntropyBits","seedPrivate","seed","fromSeed","wif","pubkey_prefix","toPublic","isValidPublic","pubkey","isValidPrivate","signHash","dataSha256","verifyHash","recoverHash","resultEncoding","key_utils","enforceType","ECSignature","deterministicGenerateK","checkSig","HmacSHA256","verifyRaw","nR","eNeg","calcPubKeyRecoveryParam","N_OVER_TWO","rBa","sBa","sequence","toCompact","toScriptSignature","hashType","hashTypeBuffer","parseCompact","fromDER","rLen","sLen","rB","sB","parseScriptSignature","hashTypeMod","createHash","createHmac","sha1","ripemd160","commonApi","objectApi","_interopRequireDefault","_toConsumableArray2","_slicedToArray2","ecurve","secp256k1","keyUtils","promiseAsync","toWif","checkEncode","fromPoint","KB","toUncompressed","KBP","getChildKey","parseKey","privateStr","versionKey","checkDecode","keyType","_match","keyString","isWif","fromWif","random32ByteBuffer","safe","initialized","pvt","pvtError","unitTest","addEntropy","cpuEntropy","entropyCount","child","cG","bin","fromStringOrThrow","prefix_match","fromStringHex","base58","_ref$cpuEntropyBits","_ref$safe","_entropyCount","hash_array","externalEntropyArray","browserEntropy","ints","_ints","entropyPos","i2","newCheck","keyBuffer","_checksum","collected","lastCount","lowEntropySamples","floatingPointCount","log2","pct","entropyStr","screen","height","colorDepth","availHeight","availWidth","pixelDepth","language","history","mimeType","mimeTypes","suffixes","start_t","ecdsa","signatureCache","verifyHex","verifyBuffer","recoverPublicKey","recoverPublicKeyFromBuffer","der","ecsignature","lenR","lenS","__assign","__awaiter","_arguments","fulfilled","__generator","trys","ops","verb","__read","__spreadArray","il","__values","pako_1","ser","abiAbi","transactionAbi","jsonAbi","reload","cachedAbi","e_1","_a","uniqueAccounts","actionPromises","_b","_c","name_1","e_2","e_2_1","e_3","contextFreeData_1","contextFreeData_1_1","e_3_1","deserializedTransaction","deserializedCFActions","deserializedActions","serializedArray","compressedSerializedArray","pushTransactionArgs","_f","_g","compressedSerializedTransaction","compressedSerializedContextFreeData","taposBlockNumber","refBlock","eosjs_numeric_1","eosjs_rpcerror_1","data_1","data_1_1","e_1_1","endpoint","fetchBuiltin","path","blockNumOrId","rawCodeAndAbi","_h","_j","_k","blockNumHint","controllingAccount","hash_js_1","base58Chars","base64Chars","base58Map","base58M","create_base58_map","base64Map","base64M","create_base64_map","bignum","srcDigit","minDigits","s_1","s_1_1","base58ToBinaryVarSize","bignum_1","bignum_1_1","bignum_2","bignum_2_1","groups","group","digit0","digit1","digit2","digit3","digestSuffixRipemd160","stringToKey","whole","keyToString","whole_1","byte","extendStatics","__extends","_super","numeric","fatal","newArray","charToSymbol","amount","foundDigit","checkDateParse","date","serializeUnknown","deserializeUnknown","serializeStruct","allowExtensions","field","deserializeStruct","serializeVariant","deserializeVariant","serializeArray","e_4","data_2","data_2_1","e_4_1","deserializeArray","serializeOptional","deserializeOptional","serializeExtension","deserializeExtension","us","sec","slot","createType","attrs","checkRange","converted","initialTypes","e_5","e_6","e_7","e_8","e_9","e_5_1","_l","e_6_1","_m","_o","_p","name_2","e_7_1","types_1","types_1_1","_q","e_9_1","e_8_1","eosjs_api_1","eosjs_jsonrpc_1","_createClass","staticProps","message_size","dividend","divisor","n_pad","get_n_pad_bytes","_divmod$map2","sliceIterator","msg_bit_size_most","msg_bit_size_least","data_view","setUint8","setUint32","rP","sP","AP","BP","CP","DP","EP","_T","add_modulo32","rol32","KP","h_i","firstSource","nextSource","keysArray","nextIndex","nextKey","ReflectOwnKeys","ReflectApply","receiver","NumberIsNaN","EventEmitter","once","emitter","errorListener","removeListener","resolver","eventTargetAgnosticAddListener","handler","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","that","_addListener","events","existing","warning","newListener","emit","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","setMaxListeners","getMaxListeners","doError","listeners","addListener","prependListener","prependOnceListener","originalListener","spliceOne","removeAllListeners","rawListeners","eventNames","MD5","salt","keyBits","ivLen","keyLen","keyStart","ivStart","digestLength","hashBlocks","bytesHashed","finished","clean","dataLength","dataPos","bitLenHi","bitLenLo","padLength","_saveState","_restoreState","HMAC","inner","outer","istate","ostate","hmac","fillBuffer","counter","hkdfSalt","hkdf","okm","hmac_","bufpos","pbkdf2","iterations","dkLen","prf","ctr","dk","factory","createObjectURL","revokeObjectURL","ERROR_MESSAGE","funcType","bound","binder","boundLength","boundArgs","Empty","implementation","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","decodeURI","encodeURI","encodeURIComponent","eval","EvalError","FinalizationRegistry","Int8Array","Int16Array","parseFloat","Uint8ClampedArray","URIError","WeakMap","WeakRef","WeakSet","doEval","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","rePropName","reEscapeChar","stringToPath","quote","subString","getBaseIntrinsic","alias","intrinsicName","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","origSymbol","hasSymbolSham","symObj","syms","HashBase","_block","_blockSize","_blockOffset","_length","_finalized","throwIfNotStringOrBuffer","_digest","common","ripemd","sha224","BlockHash","pendingTotal","outSize","_delta8","_delta32","join32","_pad","rotl32","sum32","sum32_3","sum32_4","Kh","Ah","Bh","Ch","Dh","Eh","rh","toHex32","split32","shaCommon","sum32_5","ft_1","sha1_K","SHA1","SHA256","SHA224","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","T1","T2","SHA512","SHA384","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","ah","al","bh","cl","dh","dl","eh","el","fh","gh","gl","hh","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","rotr32","p32","isSurrogatePair","htonl","zero8","predResist","minEntropy","_reseed","reseedInterval","nonceEnc","_hmac","kmac","reseed","addEnc","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","fnToStr","isFnRegex","generatorFunc","getGeneratorFunc","getPolyfill","shim","availableTypedArrays","globalThis","typedArrays","$slice","toStrTags","gOPD","typedArray","superProto","anyTrue","getter","tryTypedArrays","URLWithLegacySupport","defaultBase","protocolMap","defaultProtocol","urlParsed","pathname","username","hostname","origin","searchParams","userPass","WebSocket","MozWebSocket","WINDOW","JS_SHA256_NO_WINDOW","WEB_WORKER","NODE_JS","JS_SHA256_NO_NODE_JS","versions","COMMON_JS","JS_SHA256_NO_COMMON_JS","AMD","ARRAY_BUFFER","JS_SHA256_NO_ARRAY_BUFFER","HEX_CHARS","EXTRA","SHIFT","OUTPUT_TYPES","blocks","JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW","createOutputMethod","outputType","is224","Sha256","createMethod","nodeWrap","algorithm","nodeMethod","createHmacOutputMethod","HmacSha256","createHmacMethod","sharedMemory","h0","h1","h4","h5","h6","h7","hBytes","finalized","hashed","oKeyPad","iKeyPad","notString","lastByteIndex","maj","ab","cd","bc","dataView","innerHash","__isLong__","INT_CACHE","UINT_CACHE","cachedObj","UZERO","TWO_PWR_64_DBL","MAX_UNSIGNED_VALUE","TWO_PWR_63_DBL","MIN_VALUE","MAX_VALUE","TWO_PWR_32_DBL","lowBits","highBits","pow_dbl","radix","radixToPower","fromValue","TWO_PWR_16_DBL","TWO_PWR_24","UONE","LongPrototype","radixLong","rem1","remDiv","digits","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","notEquals","neq","lessThan","comp","lessThanOrEqual","greaterThan","greaterThanOrEqual","thisNeg","otherNeg","addend","a48","a32","a16","a00","b48","b32","b16","c48","c32","c16","c00","subtrahend","multiplier","b00","approx","shru","shr","approxRes","approxRem","numBits","toBytesLE","toBytesBE","ARRAY16","rotl","fnF","fnG","fnH","fnI","keysShim","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","isObject","isFunction","isArguments","isString","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","keysWorksWithArguments","flush_mode","_flush_mode","Z_MEM_ERROR","last_avail_out","HASH","read_buf","level_flags","dictid","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","env","argv","binding","cwd","chdir","umask","canPromise","QRCode","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","canvas","argsNum","isLastArgCb","getContext","toCanvas","render","toDataURL","renderToDataURL","getSymbolSize","getRowColCoords","posCount","intervals","positions","getPositions","coords","posLength","Mode","ALPHA_NUM_CHARS","AlphanumericData","ALPHANUMERIC","getBitsLength","bitBuffer","BitBuffer","bufIndex","putBit","getLengthInBits","BitMatrix","reservedBit","row","col","reserved","isReserved","encodeUtf8","ByteData","BYTE","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","getTotalCodewordsCount","defaultValue","Utils","G15_BCH","getBCHDigit","getEncodedBits","EXP_TABLE","LOG_TABLE","KanjiData","KANJI","toSJIS","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","getMaskAt","maskPattern","getPenaltyN1","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","applyMask","pattern","getBestMask","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","penalty","VersionCheck","Regex","NUMERIC","ccBits","MIXED","getCharCountIndicator","getBestModeForData","dataStr","testNumeric","testAlphanumeric","testKanji","NumericData","remainingNum","GF","coeff","divident","generateECPolynomial","degree","poly","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Segments","setupFormatInfo","matrix","createSymbol","segments","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","dataTotalCodewordsBits","getSymbolTotalCodewords","remainingByte","totalCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","dcData","ecData","maxDataSize","dataSize","createCodewords","createData","moduleCount","modules","setupFinderPattern","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","inc","bitIndex","byteIndex","dark","setupData","toSJISFunc","setToSJISFunction","Polynomial","genPoly","paddedData","buff","kanji","BYTE_KANJI","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","getStringByteLength","unescape","getSegments","regex","exec","getSegmentsFromString","numSegs","alphaNumSegs","byteSegs","kanjiSegs","isKanjiModeEnabled","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","seg","segs","buildNodes","prevNodeIds","nodeGroup","currentNodeIds","prevNodeId","buildGraph","optimizedSegs","prevSeg","toSJISFunction","CODEWORDS_COUNT","digit","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","getCapacity","usableBits","ecl","currentVersion","getBestVersionForMixedData","getBestVersionForDataLength","qrData","canvasEl","getCanvasElement","getOptions","getImageWidth","createImageData","qrToImageData","clearRect","style","clearCanvas","putImageData","rendererOpts","quality","getColorAttrib","color","attrib","svgCmd","cmd","qrcodesize","bg","light","moveBy","newRow","lineLength","qrToPath","viewBox","svgTag","hex2rgba","hexCode","hexValue","scale","getScale","qrSize","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor","rawBytes","objectKeys","Duplex","Readable","Writable","allowHalfOpen","readable","onend","_writableState","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","PassThrough","ReadableState","debug","EElistenerCount","Stream","OurUint8Array","debugUtil","debuglog","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","decoder","_read","destroy","_destroy","readableAddChunk","addToFront","skipChunkCheck","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","_undestroy","undestroy","isPaused","setEncoding","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","resume","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipe","pipeOpts","endFn","stdout","unpipe","onunpipe","unpipeInfo","hasUnpiped","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","pause","event","dests","ev","_fromList","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","_transformState","transforming","writecb","writechunk","needTransform","writeencoding","prefinish","_write","err2","CorkedRequest","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","rState","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_this2","_Object$create","enumerableOnly","symbols","hasStrings","_getString","_getBuffer","nb","getOwnPropertyDescriptors","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","called","onlegacyfinish","writableEnded","readableEnded","onrequest","setHeader","isRequest","destroyer","closed","popCallback","streams","destroys","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","pipeline","T_1","sl","fn1","fn2","fn3","fn4","fn5","tl","copyProps","SafeBuffer","ecparams","loadPublicKey","xbuf","loadCompressedPublicKey","ybuf","loadUncompressedPublicKey","savePublicKey","contextRandomize","privateKeyVerify","seckey","privateKeyNegate","privateKeyTweakAdd","tweak","tweaked","privateKeyTweakMul","publicKeyVerify","publicKeyCreate","publicKeyConvert","publicKeyNegate","publicKeyCombine","pubkeys","pairs","publicKeyTweakAdd","publicKeyTweakMul","signatureNormalize","signatureExport","sigR","sigS","posR","posS","outputlen","signatureImport","ecdsaSign","noncefn","_noncefn","recid","ecdsaVerify","msg32","sigObj","sigr","sigs","ecdsaRecover","ecdh","hashfn","scalar","cond","isUint8Array","isCompressed","toTypeString","getAssertedOutput","finalSize","_finalSize","accum","assigned","Algorithm","Sha","_w","rotl30","Sha1","rotl5","Sha224","sigma0","sigma1","gamma0","Sha384","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","writeInt64BE","Sha512","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","__importStar","__export","cbor","BufferClasses","JsonDefaultCborEncoder","_serializer","_stable","priority","undefined_","doubleFloat","null_","serializeValue","ToCborEncoder","toCBOR","CborSerializer","_encoders","stable","addEncoder","removeEncoder","encoder","getEncoderFor","chosenEncoder","SelfDescribeCborSerializer","_concat","newBuffer","_serializeValue","major","minor","padStart","_serializeNumber","_serializeString","utf8","charcode","uSmall","u8","u16","u64","iSmall","i8","i32","i64","newI64","reduceRight","true_","false_","tagged","keyA","keyB","localeCompare","singleFloat","single","EE","_isStdio","didOnEnd","cleanup","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","utf8CheckExtraBytes","utf8CheckIncomplete","nacl","gf","randombytes","_0","_9","gf0","gf1","_121665","D2","ts64","vn","yi","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","inp","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x5","x6","x7","x9","x10","x11","x12","x13","x14","x15","core_salsa20","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","mpos","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","t6","t7","leftover","crypto_onetimeauth","outpos","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","car25519","sel25519","pack25519","neq25519","par25519","unpack25519","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b10","b11","b12","b13","b14","b15","inv25519","pow2523","crypto_scalarmult","x32","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","d3","d4","d5","d6","d7","d8","d9","hibit","h8","h9","r0","r3","r4","r5","r6","r7","r8","r9","mac","macpos","want","crypto_box_afternm","crypto_box_open_afternm","crypto_hashblocks_hl","th","wh","wl","crypto_hash","cswap","pack","ty","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","modL","crypto_sign","sm","smlen","crypto_sign_open","chk","den","den2","den4","den6","unpackneg","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_secretbox_BOXZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","secretbox","box","nonceLength","overheadLength","scalarMult","scalarLength","groupElementLength","secretKey","before","checkBoxLengths","after","fromSecretKey","publicKeyLength","secretKeyLength","sharedKeyLength","signedMsg","mlen","detached","seedLength","signatureLength","hashLength","setPRNG","trace","isArgumentsObject","whichTypedArray","isTypedArray","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isArrayBuffer","working","isDataViewToString","isDataView","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isBigInt64Array","isBigUint64Array","isWeakMap","isWeakSet","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","descriptors","formatRegExp","objects","isNull","noDeprecation","throwDeprecation","traceDeprecation","debugs","debugEnvRegex","NODE_DEBUG","debugEnv","seen","stylize","stylizeNoColor","colors","isBoolean","_extend","isUndefined","stylizeWithColor","formatValue","styleType","styles","primitive","simple","isNumber","formatPrimitive","visibleKeys","idx","arrayToHash","isError","formatError","braces","toUTCString","formatProperty","formatArray","reduceToSingleString","pid","isNullOrUndefined","isSymbol","isPrimitive","months","getHours","getMinutes","getSeconds","getDate","getMonth","prop","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","original","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","rnds8","rng","uuid","byteToHex","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","tmh","hashfunc","generateUUID","namespace","stringToBytes","DNS","getOutputLength","inputLength8","safeAdd","md5cmn","md5ff","md5gg","md5hh","md5ii","v35","length32","hexTab","md5ToHexEncodedArray","wordsToMd5","length8","bytesToWords","rnds","ROTL","_t2","foundName","util_1","ZodErrorCode","arrayToEnum","quotelessJson","ZodError","_newTarget","addError","addErrors","subs","flatten","fieldErrors","formErrors","actualProto","errorMessage","pathString","isOptional","schema","def","_def","ZodTypes","intersection","union","ZodCodeGenerator","serial","randomId","findBySchema","findById","dump","setType","bigint","boolean","null","any","unknown","void","literal","literalType","enum","objectLines","shape","childSchema","childType","OPTKEY","baseStruct","tupleLines","elSchema","elType","baseTuple","function","returns","promValue","unionLines","valueType","lazy","lazyType","nativeEnum","keyof","assertNever","ZodError_1","defaultErrorMap","_ctx","invalid_type","nonempty_array_is_empty","unrecognized_keys","invalid_union","invalid_literal_value","invalid_enum_value","invalid_arguments","invalid_return_type","invalid_date","invalid_string","validation","too_small","inclusive","too_big","custom_error","errorUtil","errToObj","objectUtil","base_1","intersection_1","object_1","mergeShapes","firstKeys","secondKeys","sharedKeys","sharedShape","sharedKeys_1","ZodIntersection","mergeObjects","mergedShape","ZodObject","checks","items_1","getValidEnumValues","validKeys","filtered","validKeys_1","getValues","objectValues","string_1","ZodString","number_1","ZodNumber","bigint_1","ZodBigInt","boolean_1","ZodBoolean","date_1","ZodDate","undefined_1","ZodUndefined","null_1","ZodNull","any_1","ZodAny","unknown_1","ZodUnknown","void_1","ZodVoid","array_1","ZodArray","union_1","ZodUnion","tuple_1","ZodTuple","record_1","ZodRecord","function_1","ZodFunction","lazy_1","ZodLazy","literal_1","ZodLiteral","enum_1","ZodEnum","nativeEnum_1","ZodNativeEnum","keyof_1","promise_1","ZodPromise","ZodType","Schema","ZodSchema","parser_1","ZodParsedType","codegen_1","stringType","numberType","bigIntType","booleanType","dateType","undefinedType","nullType","anyType","unknownType","voidType","arrayType","objectType","unionType","intersectionType","tupleType","recordType","functionType","enumType","nativeEnumType","promiseType","keyofType","ZodKeyof","ostring","optional","onumber","oboolean","codegen","refine","cls","late","lazycreate","isScalar","returnValue","__rest","defaultErrorMap_1","getParsedType","checker","arr_1","makeError","errorData","errorArg","ctxArg","defaultError","errorMap","ZodParser","schemaDef","baseParams","parsedType","schemaSeen","isNonprimitive","nan","nonempty","zerr","isEmpty","shapeKeys_1","extraKeys","unionErrors","option","filteredErrors","parsedTuple","tupleData","itemParser","argsError","argumentsError","returnsError","returnTypeError","objValue","customChecks_1","noMethodCheck","minLength","_refinement","maxLength","ZodNonEmptyArray","index_1","safeParse","success","parseAsync","refinement","nullable","enumValues","returnType","implement","errorUtil_1","int","nonpositive","nonnegative","objectUtil_1","isScalar_1","AugmentFactory","augmentation","objectDefToJson","nonstrict","_params","augment","extend","merge","pick","omit","partial","newShape","primitives","nonprimitives","deepPartial","fieldSchema","emailRegex","uuidRegex","_regex","email","regexp","schemas","possibleNames","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","amdO","definition","nmd","paths","children","tar","add_location","element","file","column","char","__svelte_meta","blank_object","run_all","fns","is_function","safe_not_equal","src_url_equal_anchor","src_url_equal","element_src","is_empty","create_slot","$$scope","slot_ctx","get_slot_context","get_slot_changes","dirty","lets","merged","update_slot_base","slot_definition","slot_changes","get_slot_context_fn","slot_context","get_all_dirty_from_scope","null_to_empty","current_component","is_hydrating","append_styles","style_sheet_id","append_styles_to","getRootNode","ownerDocument","get_root_for_style","getElementById","append_stylesheet","insertBefore","detach","parentNode","destroy_each","detaching","svg_element","createElementNS","space","set_input_value","set_style","important","setProperty","select_option","select","__value","selected","selectedIndex","custom_event","detail","bubbles","createEvent","initCustomEvent","HtmlTag","html","nodeName","childNodes","set_current_component","component","get_current_component","onMount","$$","on_mount","createEventDispatcher","callbacks","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","update_scheduled","add_render_callback","flushing","seen_callbacks","fragment","before_update","after_update","outroing","outros","group_outros","check_outros","transition_in","transition_out","globals","SvelteElement","create_component","mount_component","customElement","on_destroy","new_on_destroy","destroy_component","create_fragment","not_equal","parent_component","on_disconnect","skip_bound","ready","rest","make_dirty","hydrate","intro","dispatch_dev","append_dev","insert_dev","detach_dev","listen_dev","has_prevent_default","has_stop_propagation","modifiers","dispose","listen","attr_dev","attribute","removeAttribute","getAttribute","attr","set_data_dev","wholeText","validate_each_argument","validate_slots","slot_key","HTMLElement","attachShadow","connectedCallback","slotted","attributeChangedCallback","_oldValue","newValue","disconnectedCallback","$destroy","$on","$set","$$props","$$set","SvelteComponentDev","$$inline","$capture_state","$inject_state","__decorate","decorators","decorate","arrayEquals","hexLookup","buildHexLookup","rv","secureRandom","didWarn","isInstanceOf","someClass","instanceClass","isAlienInstance","instanceClassName","Bytes","hexToArray","readVaruint32","readArray","hexString","utf8String","newSize","appending","droppingFirst","toABI","writeVaruint32","writeArray","abiName","Checksum","byteSize","Checksum256","Checksum512","Checksum160","indexFor","K1","R1","WA","Int","isSigned","byteWidth","promote","aType","bType","cast","fromType","fromBytes","toValue","truncate","otherType","adding","subtracting","by","multiplying","behavior","dividing","divCeil","Int64","Int8","Int16","Int32","Int128","UInt8","UInt16","UInt32","UInt64","UInt128","VarInt","VarUInt","synthesizeABI","aliases","resolveAbiType","extension","abiAlias","abiFields","struct","abiBase","abiVariant","variant","ABI","abiTypeString","toTypeDescriptor","StringType","fromABI","BoolType","buildTypeLookup","additional","builtins","Asset","SymbolCode","BlockTimestamp","ExtendedAsset","Float128","Float32","Float64","Name","TimePoint","TimePointSec","getTypeName","Struct","DecodingError","underlyingError","codingPath","abiDecode","customTypes","ResolvedType","synthesized","resolved","resolveType","ABIDecoder","decodeBinary","decodeObject","__className","Resolved","isExtension","canRead","decodeInner","abiType","allFields","vIdx","vType","vName","Variant","variantName","ensure","setPosition","getPosition","advance","EncodingError","abiEncode","isTypeDescriptor","rootName","rootType","ABIEncoder","encodeAny","valueExists","encodeInner","pageSize","pages","setFloat32","setFloat64","structFields","walk","FieldsOwner","variantIdx","otherVariant","Float","rawValue","stringToName","nameToString","TimePointBase","fromMilliseconds","toMilliseconds","fromDate","fromInteger","toDate","numTypes","numStructs","numFields","numActions","ricardian_contract","numTables","index_type","key_names","numKeyNames","key_types","numKeyTypes","numClauses","numErrors","numExtensions","numVariants","clause","resolveAll","typeDef","getStruct","getVariant","getActionType","actionName","fullName","fromFloat","fromParts","convertFloat","convertUnits","toSymbolPrecision","maxPrecision","symbolNamePattern","toSymbolName","toRawSymbolCode","toRawSymbol","float","charsToSymbolName","quantity","rawSymbol","Base58","ErrorCode","charMap","E_INVALID","decodeVar","ripemd160Checksum","dsha256Checksum","round1","round2","decodeCheck","encoded","decoded","E_CHECKSUM","decodeRipemd160Check","encodeCheck","encodeRipemd160Check","startPos","otherKey","getCurve","otherSig","recoverDigest","recoverMessage","verifyDigest","verifyMessage","PermissionLevel_1","PermissionLevel","otherPerm","Action_1","Action","isBytes","otherAction","arrayEquatableEquals","decodeData","typeOrAbi","Transaction_1","TransactionExtension","TransactionHeader","Transaction","resolveAction","signingDigest","SignedTransaction","PackedTransaction","signed","getTransaction","getSignedTransaction","TransactionReceipt","Authority_1","Weight","typeAlias","KeyWeight","PermissionLevelWeight","WaitWeight","Authority","waits","waitThreshold","wait","keyThreshold","keyWeight","hasPermission","includePartial","wait_sec","Serializer","synthesize","objectify","AccountPermission","AccountResourceLimit","AccountTotalResources","AccountSelfDelegatedBandwidth","AccountRefundRequest","AccountVoterInfo","AccountRexInfoMaturities","AccountRexInfo","AccountObject","getPermission","NewProducersEntry","NewProducers","BlockExtension","HeaderExtension","TrxVariant","GetBlockResponseTransactionReceipt","trx","GetBlockResponse","ActiveScheduleProducerAuthority","ActiveScheduleProducer","ActiveSchedule","BlockStateHeader","GetBlockHeaderStateResponse","GetInfoResponse","getTransactionHeader","secondsAhead","prefixArray","GetTableByScopeResponseRow","GetTableByScopeResponse","OrderedActionsResult","GetActionsResponse","TransactionTrace","Trx","TransactionInfo","GetTransactionResponse","GetKeyAccountsResponse","GetControlledAccountsResponse","APIError","what","property","searchValue","sortable","headerClass","renderValue","renderComponent","levels","updates","to_null_out","accounted_for","spread_props","$expanded","sortBy","sortOrder","filterSelections","expanded","expandRowKey","expandSingle","iconAsc","iconDesc","iconExpand","iconExpanded","showExpandIcon","classNameTable","classNameThead","classNameTbody","classNameSelect","classNameRow","classNameCell","classNameRowExpanded","classNameExpandedContent","classNameCellExpand","dispatch","sortFunction","columnByKey","showFilterHeader","filterOptions","filterValues","asStringArray","calculateFilterValues","updateSortOrder","colKey","handleClickCol","handleClickRow","handleClickExpand","keyVal","handleClickCell","colspan","c_rows","toLocaleLowerCase","filterValue","$sortOn","selected_option","querySelector","ReplicaRejectCode","lookupTable","lookUpTable","_isPrincipal","shaObj","fromText","decodeChar","principal","toText","isAnonymous","toUint8Array","checksumArrayBuf","getCrc32","PipeArrayBuffer","_view","idlLabelToId","isSafeInteger","idlHash","eob","safeRead","safeReadUint8","lebEncode","lebDecode","slebEncode","getLowerBytes","slebDecode","pipeView","magicNumber","zipWith","TypeTable","_typs","_idx","knot","knotIdx","Visitor","visitType","visitPrimitive","visitEmpty","visitBool","visitNull","visitReserved","visitText","visitNumber","visitInt","visitNat","visitFloat","visitFixedInt","visitFixedNat","visitPrincipal","visitConstruct","visitVec","visitOpt","visitRecord","visitTuple","components","visitVariant","visitRec","visitFunc","visitService","Type","display","valueToString","toReadableString","buildTypeTable","typeTable","_buildTypeTableImpl","PrimitiveType","checkType","ConstructType","RecClass","encodeType","EmptyClass","accept","covariant","encodeValue","decodeValue","BoolClass","NullClass","ReservedClass","TextClass","IntClass","NatClass","FloatClass","_bits","FixedIntClass","FixedNatClass","VecClass","_type","_blobOptimization","opCode","rets","OptClass","RecordClass","_fields","tryAsTuple","expectKey","expectType","TupleClass","_components","wireType","VariantClass","wireHash","_id","_counter","decodePrincipalId","PrincipalClass","FuncClass","argTypes","retTypes","annotations","methodName","canister","methodLen","retLen","annLen","anns","encodeAnnotation","ann","ServiceClass","meths","labelBuf","magic","typs","vals","magicBuffer","rawTable","rawTypes","prevHash","objectLength","funcLength","servLength","rawList","readTypeTable","Rec","Null","Bool","Nat","Nat8","Nat16","Nat32","Nat64","Text","Reserved","Vec","Opt","Record","Tuple","Func","Service","buildType","ind","hexRe","compile","hashValue","hashString","toHash","requestIdOf","domainSeparator","getPrincipal","_principal","toDer","requestId","sender_pubkey","sender_sig","AnonymousIdentity","serializer","CborTag","SubmitRequestType","decodePositiveBigInt","Uint8ArrayDecoder","Semantic","NANOSECONDS_PER_MILLISECONDS","REPLICA_PERMITTED_DRIFT_MILLISECONDS","Expiry","deltaInMSec","_value","RequestStatusResponseStatus","DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS","HttpAgent","rootKey","_pipeline","_rootKeyFetched","_identity","_fetch","_host","_credentials","getDefaultFetch","addTransform","canisterId","ecid","effectiveCanisterId","sender","submit","request_type","Call","canister_id","method_name","ingress_expiry","transformedRequest","Authorization","transformRequest","root_key","ProxyMessageKind","getDefaultAgent","agent","ic","IDL","Principal","wasm_module","CanisterSettings","compute_allocation","memory_allocation","provisional_create_canister_with_cycles","settings","create_canister","install_code","install","reinstall","upgrade","set_controller","new_controller","getManagementCanister","callConfig","callTransform","queryTransform","AgentError","wasm","wasmBytesBase64","wasmBytes","cachegetUint8Memory0","passArray8ToWasm0","malloc","ptr","memory","imports","WebAssembly","instantiate","Instance","load","__wbindgen_wasm_module","blsVerify","bls_init","pk1","sig1","msg1","ptr0","len0","__wbindgen_malloc","ptr1","ptr2","bls_verify","UnverifiedCertificateError","isBufferEqual","Certificate","_agent","verified","_rootKey","cert","certificate","checkState","lookup_path","rootHash","reconstruct","derKey","_checkDelegation","delegation","expectedLength","DER_PREFIX","extractDER","domain_sep","subnet_id","find_label","flatten_forks","pollForResponse","readState","maybeBuf","Unknown","Replied","Received","Processing","Rejected","rejectCode","rejectMessage","Done","ActorCallError","QueryCallRejectedError","Status","Code","reject_code","Message","reject_message","UpdateCallRejectedError","CanisterInstallMode","metadataSymbol","for","freeze","Install","wasmModule","interfaceFactory","createCanister","createActor","DEFAULT_ACTOR_CONFIG","_createActorMethod","configuration","createActorClass","decodeReturnValue","returnValues","pollingStrategyFactory","strategies","condition","startingThrottleInMsec","backoffFactor","currentThrottling","backoff","timeInMsec","caller","cid","reply","pollStrategy","responseBytes","withOptions","encodeLenBytes","encodeLen","decodeLenBytes","ED25519_OID","Ed25519PublicKey","rawKey","derEncode","fromDer","derDecode","oid","bitStringHeaderLength","derEncoded","expect","bufEquals","payloadLen","lenBytes","decodeLen","RAW_KEY_LENGTH","toRaw","Ed25519KeyIdentity","_privateKey","_publicKey","fromRaw","publicKeyDer","privateKeyRaw","fromParsedJson","fromKeyPair","getKeyPair","challenge","requestDomainSeparator","_parseBlob","Delegation","targets","delegations","_createSingleDelegation","previous","signedDelegation","DelegationIdentity","_inner","_delegation","getDelegation","sender_delegation","PubKeyCoseAlgo","KEY_LOCALSTORAGE_KEY","KEY_LOCALSTORAGE_DELEGATION","_deleteStorage","LocalStorage","_localStorage","_getLocalStorage","ls","AuthClient","_chain","_storage","_idpWindow","_eventHandler","maybeIdentityStorage","chainStorage","scopes","maybeScope","none","isDelegationValid","fromDelegation","_handleSuccess","delegationChain","userPublicKey","_removeEventListener","identityProviderUrl","identityProvider","_getEventHandler","kind","sessionPublicKey","maxTimeToLive","postMessage","_handleFailure","onError","returnTo","pushState","idlFactory","spda","agentOptions","actorOptions","auctionsLoadingText","auctionsCompleteText","appIdentifier","getFOOBARFaucetURL","getFOOBARExchangeURL","displayRequestError","parseDateTimeString","dateTimeString","client","proton_cls","auctionLengthSeconds","auctionBiddingPeriodSeconds","bitcoinPrice","init_secs_utc","now_secs_utc","auction_period","selectorOptionsTemplate","transportOptionsTemplate","fetchDataUpdateTimeSeconds","fetchDataIntervalSeconds","auctionNFTId","top_bid","bid_increment","bid1","bid2","bid3","currentAuction","auctionBids","nfts","isUserRegistered","registered_indicator","auctionsLoaded","signedInInternetIdentity","totalCredit","initAuth","isAuthenticated","signInInternetIdentity","signOutInternetIdentity","logout","principal_id","ic_storecls","dfinity_result","storecls","deposit","getCredits","getSystemTableValues","withdraw","user","getParameters","paramname","claimNFT","getBids","getNFTs","getAuctions","createLink","reconnect","isBidTime","getNFTCollectionURL","getRemainingAuctionTimeS","getAvailableCredit","credit","bid","bidder","bidamount","system_params","system_result","system_init_date","getAuctionTimes","nfts_result","rest_url","nftid","nftdata","bids_params","bids_result","top_bid_foobar","inputBidAmount","minBidAmount","credit_params","credit_result","fetchData","getBitcoinPrice","reguser","current_price","bid_amount_foobar","bid_amount_asset","nft_id","btcprice","isRegisteredAndLoggedIn","isLoggedIn","canBid","isAuctionTimeRunning","getFirstBidTime","bidStartTime","bidTime","bidtime","canClaim","hasHighestBid","winner","innerText","firstBidTime","firstBidTimeSeconds","auctionPeriodEnd","asset_id","nft1image","nft1Collection","nft1name","nft1Id","nft1desc","nft2image","nft2name","isNextNFTUpcomingAuction","imageSource","template","immutable_data","nftTextId","collection","template_mint","issued_supply","isLeaderboardVisible","claimNFTName","disabled","placeholder","interval","clearInterval"],"sourceRoot":""}
\n\n\t
\n\n\t\t\n\n\t\t{#if session}\n\t\tOpen NFT Collection\n\t\tGet free FOOBAR\n\t\tBuy FOOBAR\n\t\t\n\t{:else}\n\t\t\n\t\t{/if}\n\t
\n\t{#if session}\n\t

Welcome back {session.auth.actor}!

\n\t

{#if isUserRegistered} You are ready to go! {:else} Please deposit FOOBAR to start bidding!{/if}

\n\t{/if}\n\t
\n\t
\n\t
\n\t\t

Claim previous auction

\n\t\t

\n\t\t\"claim\n\t\t

\n\t
\n\t
\n\t\t

Credit Transfer

\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\"FOOBAR\"/\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\tAvailable Credit: {getAvailableCredit()}\n\t\t\t\t\n\t\t\t\t\t\"FOOBAR\"/\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\t\n\t
\n\t
\n\t\t\n\t\t

Current Auction | #{auction_period} | {getRemainingAuctionTimeS()}

\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

\n\t\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\"nft\n\t\t\t\t
\n\t\t\t\t

\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t

Auction Leaderboard

\n\t\t\t\t

{bid1}

\n\t\t\t\t

{bid2}

\n\t\t\t\t

{bid3}

\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t

Make Your Bid

\n\t\t\t\t\t

\n\t\t\t\t\t\tTotal Credit: {totalCredit}\n\t\t\t\t\t

\n\t\t\t\t\t

Remaining Bid Time: {getRemainingAuctionTimeS()}

\n\t\t\t\t\t

Auction in cooldown

\n\t\t\t\t\t\n\t\t\t\t\t\"FOOBAR\"/\n\t\t\t\t\t\n\t\t\t\t\t

You need to be logged in and registered to bid for this auction

\n\t\t\t\t
\n\t\t\t
\t\t\t\n\t\t
\n\t\t{#if nfts.length > 1}\n\t\t
\n\t\t\t

Next Auction

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t

\n\t\t\t\t\"next\n\t\t\t
\n\t\t
\n\t\t{/if}\n\t
\n\n\t\n