~Webmodule~ to include a "Buy button" with streamlined crypto-pay transaction.
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

1 zeile
5.9MB

  1. {"version":3,"sources":["../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/libsodium-wrappers/dist/modules/libsodium-wrappers.js","../../src/constants.ts","../../src/validators.ts","../../src/taquito-utils.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/inherits/inherits_browser.js","../../../../../src/types/beacon/BeaconMessageType.ts","../../../../../src/types/beacon/PermissionScope.ts","../../../../../src/types/beacon/NetworkType.ts","../../../../../src/types/tezos/OperationTypes.ts","../../../../src/types/Origin.ts","../../../../src/types/ExtensionMessageTarget.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/superPropBase.js","../../../../src/types/ColorMode.ts","../../../src/colorMode.ts","../../../../../src/ui/alert/Pairing.ts","../../../../src/utils/replace-in-template.ts","../../../../../src/ui/alert/alert-templates.ts","../../../../src/utils/platform.ts","../../../../src/utils/get-tzip10-link.ts","../../../../../src/ui/alert/wallet-lists.ts","../../../../../src/ui/alert/Alert.ts","../../../../src/utils/qr.ts","../../../../../src/ui/alert/PairingAlert.ts","../../../../../src/ui/toast/Toast.ts","../../../../../src/ui/toast/toast-templates.ts","../../../../src/types/BeaconErrorType.ts","../../../../src/utils/shorten-string.ts","../../../src/events.ts","../../../../../src/clients/beacon-client/BeaconClient.ts","../../../../src/managers/StorageManager.ts","../../../../src/managers/PermissionValidator.ts","../../../../src/managers/AccountManager.ts","../../../../../src/clients/client/Client.ts","../../../../src/managers/AppMetadataManager.ts","../../../../src/interceptors/IncomingRequestInterceptor.ts","../../../../src/interceptors/OutgoingResponseInterceptor.ts","../../../../../src/clients/wallet-client/WalletClient.ts","../../../../../src/types/beacon/SigningType.ts","../../../src/beacon-message-events.ts","../../../../src/utils/tezblock-blockexplorer.ts","../../../../src/utils/block-explorer.ts","../../../../../src/types/transport/TransportStatus.ts","../../../../../src/types/transport/TransportType.ts","../../../../../src/clients/dapp-client/DAppClient.ts","../../../../src/errors/BeaconError.ts","../../../../src/errors/BroadcastBeaconError.ts","../../../../src/errors/NetworkNotSupportedBeaconError.ts","../../../../src/errors/NoAddressBeaconError.ts","../../../../src/errors/NoPrivateKeyBeaconError.ts","../../../../src/errors/NotGrantedBeaconError.ts","../../../../src/errors/ParametersInvalidBeaconError.ts","../../../../src/errors/TooManyOperationsBeaconError.ts","../../../../src/errors/TransactionInvalidBeaconError.ts","../../../../src/errors/UnknownBeaconError.ts","../../../../src/transports/PostMessageTransport.ts","../../../../../src/types/storage/StorageKey.ts","../../../../src/managers/PeerManager.ts","../../../../src/transports/Transport.ts","../../../../src/transports/P2PTransport.ts","../../../../../src/types/storage/StorageKeyReturnDefaults.ts","../../../../src/storage/ChromeStorage.ts","../../../../src/storage/LocalStorage.ts","../../../../src/errors/AbortedBeaconError.ts","../../../../src/storage/getStorage.ts","../../../../src/utils/available-transports.ts","../../../../src/transports/DappP2PTransport.ts","../../../../src/transports/DappPostMessageTransport.ts","../../../../src/transports/WalletP2PTransport.ts","../../../../src/errors/SignatureTypeNotSupportedBeaconError.ts","../node_modules/safe-buffer/index.js","../node_modules/buffer/index.js","../node_modules/react/jsx-runtime.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../../src/utils/Logger.ts","../../../../src/utils/crypto.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/react/index.js","../../../../src/utils/exposed-promise.ts","../../../src/MockWindow.ts","../node_modules/process/browser.js","../../../src/constants.ts","../node_modules/webpack/buildin/global.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../../../../src/utils/generate-uuid.ts","../../src/michelson-map.ts","../../src/tokens/token.ts","../../src/tokens/bigmap.ts","../../src/tokens/or.ts","../../src/tokens/pair.ts","../../src/tokens/comparable/nat.ts","../../src/tokens/comparable/string.ts","../../src/tokens/comparable/address.ts","../../src/tokens/map.ts","../../src/tokens/comparable/bool.ts","../../src/tokens/contract.ts","../../src/tokens/list.ts","../../src/tokens/comparable/mutez.ts","../../src/tokens/comparable/bytes.ts","../../src/tokens/option.ts","../../src/tokens/comparable/timestamp.ts","../../src/tokens/comparable/int.ts","../../src/tokens/unit.ts","../../src/tokens/key.ts","../../src/tokens/comparable/key_hash.ts","../../src/tokens/signature.ts","../../src/tokens/lambda.ts","../../src/tokens/operation.ts","../../src/tokens/set.ts","../../src/tokens/chain-id.ts","../../src/tokens/ticket.ts","../../src/tokens/never.ts","../../src/tokens/sapling-state.ts","../../src/tokens/sapling-transaction.ts","../../src/tokens/bls12-381-fr.ts","../../src/tokens/bls12-381-g1.ts","../../src/tokens/bls12-381-g2.ts","../../src/tokens/tokens.ts","../../src/tokens/createToken.ts","../../src/schema/storage.ts","../../src/schema/parameter.ts","../../src/taquito-michelson-encoder.ts","../node_modules/@taquito/taquito/node_modules/bignumber.js/bignumber.js","../../../../src/utils/get-sender-id.ts","../node_modules/@ledgerhq/errors/dist/index.js","../node_modules/axios/lib/utils.js","../../../../../src/matrix-client/models/MatrixClientEvent.ts","../node_modules/minimalistic-assert/index.js","../node_modules/elliptic/lib/elliptic/utils.js","../node_modules/bs58check/index.js","../node_modules/@taquito/rpc/node_modules/bignumber.js/bignumber.js","../node_modules/events/events.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@taquito/michelson-encoder/node_modules/bignumber.js/bignumber.js","../node_modules/core-util-is/lib/util.js","../node_modules/hash.js/lib/hash/utils.js","../node_modules/elliptic/node_modules/bn.js/lib/bn.js","../../../../src/utils/get-account-identifier.ts","../../src/status_code.ts","../../src/taquito-http-utils.ts","../node_modules/cipher-base/index.js","../node_modules/process-nextick-args/index.js","../node_modules/webpack/buildin/module.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/randombytes/browser.js","../node_modules/create-hash/browser.js","../node_modules/readable-stream/errors-browser.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/sha.js/hash.js","../node_modules/stream-http/node_modules/readable-stream/lib/_stream_duplex.js","../../../src/Serializer.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../../../src/matrix-client/models/MatrixMessage.ts","../../../../../src/matrix-client/utils/events.ts","../../src/utils/utils.ts","../../src/opkind.ts","../../src/taquito-rpc.ts","../node_modules/tslib/tslib.es6.js","../../../../src/internal/util/isFunction.ts","../../../src/internal/config.ts","../../../../src/internal/util/hostReportError.ts","../../../src/internal/Observer.ts","../../../../src/internal/util/isObject.ts","../../../../src/internal/util/UnsubscriptionError.ts","../../../src/internal/Subscription.ts","../../../../src/internal/symbol/rxSubscriber.ts","../../../src/internal/Subscriber.ts","../../../../src/internal/util/identity.ts","../../../../src/internal/util/pipe.ts","../../../src/internal/Observable.ts","../../../../src/internal/util/toSubscriber.ts","../../../../src/internal/util/canReportError.ts","../../../../src/internal/util/ObjectUnsubscribedError.ts","../../../src/internal/SubjectSubscription.ts","../../../src/internal/Subject.ts","../../../../src/internal/scheduler/AsyncAction.ts","../../../../src/internal/scheduler/Action.ts","../../../../src/internal/scheduler/QueueAction.ts","../../../src/internal/Scheduler.ts","../../../../src/internal/scheduler/AsyncScheduler.ts","../../../../src/internal/scheduler/queue.ts","../../../../src/internal/scheduler/QueueScheduler.ts","../../../../src/internal/observable/empty.ts","../../../../src/internal/util/isScheduler.ts","../../../../src/internal/util/subscribeToArray.ts","../../../src/internal/Notification.ts","../../../../src/internal/scheduled/scheduleArray.ts","../../../../src/internal/observable/fromArray.ts","../../../../src/internal/observable/of.ts","../../../../src/internal/observable/throwError.ts","../../../../src/internal/operators/observeOn.ts","../../../src/internal/ReplaySubject.ts","../../../src/internal/OuterSubscriber.ts","../../../src/internal/InnerSubscriber.ts","../../../../src/internal/symbol/iterator.ts","../../../../src/internal/util/isPromise.ts","../../../../src/internal/util/subscribeTo.ts","../../../../src/internal/util/subscribeToObservable.ts","../../../../src/internal/util/subscribeToPromise.ts","../../../../src/internal/util/subscribeToIterable.ts","../../../../src/internal/util/subscribeToResult.ts","../../../../src/internal/observable/combineLatest.ts","../../../../src/internal/scheduled/scheduled.ts","../../../../src/internal/util/isInteropObservable.ts","../../../../src/internal/scheduled/scheduleObservable.ts","../../../../src/internal/scheduled/schedulePromise.ts","../../../../src/internal/util/isIterable.ts","../../../../src/internal/scheduled/scheduleIterable.ts","../../../../src/internal/observable/from.ts","../../../../src/internal/observable/defer.ts","../../../../src/internal/scheduler/async.ts","../../../../src/internal/util/isNumeric.ts","../../../../src/internal/observable/timer.ts","../../../../src/internal/observable/range.ts","../../../../src/internal/operators/map.ts","../../../src/internal/innerSubscribe.ts","../../../../src/internal/operators/mergeMap.ts","../../../../src/internal/operators/concatAll.ts","../../../../src/internal/operators/mergeAll.ts","../../../../src/internal/observable/concat.ts","../../../../src/internal/observable/never.ts","../../../../src/internal/operators/tap.ts","../../../../src/internal/operators/shareReplay.ts","../../../../src/internal/operators/filter.ts","../../../../src/internal/util/EmptyError.ts","../../../../src/internal/util/ArgumentOutOfRangeError.ts","../../../../src/internal/operators/take.ts","../../../../src/internal/operators/defaultIfEmpty.ts","../../../../src/internal/operators/throwIfEmpty.ts","../../../../src/internal/operators/first.ts","../../../../src/internal/operators/distinctUntilChanged.ts","../../../../src/internal/operators/takeWhile.ts","../../../../src/internal/operators/switchMap.ts","../../../../src/internal/operators/distinctUntilKeyChanged.ts","../../../../src/internal/operators/timeoutWith.ts","../../../../src/internal/util/isDate.ts","../../../../src/internal/operators/concatMap.ts","../../../../src/internal/operators/mapTo.ts","../../../../src/internal/operators/retry.ts","../../../../src/internal/operators/takeUntil.ts","../../../../src/internal/operators/catchError.ts","../../../../src/internal/operators/refCount.ts","../../../../src/internal/observable/ConnectableObservable.ts","../../../../src/internal/operators/multicast.ts","../../../../src/internal/operators/publishReplay.ts","../../../../src/internal/operators/pluck.ts","../../src/micheline.ts","../../src/scan.ts","../../src/michelson-types.ts","../../src/macros.ts","../../src/micheline-parser.ts","../../src/micheline-emitter.ts","../../src/base58.ts","../../src/utils.ts","../../src/michelson-validator.ts","../../src/binary.ts","../../src/michelson-typecheck.ts","../../src/michelson-contract.ts","../../src/forger/rpc-forger.ts","../../src/injector/rpc-injector.ts","../../src/signer/noop.ts","../../src/operations/types.ts","../../src/operations/operation-errors.ts","../../src/wallet/receipt.ts","../../src/wallet/operation.ts","../../src/wallet/delegation-operation.ts","../../src/wallet/origination-operation.ts","../../src/wallet/transaction-operation.ts","../../src/wallet/operation-factory.ts","../../../../src/internal/operators/startWith.ts","../../src/operations/operation-emitter.ts","../../src/operations/operations.ts","../../../../src/internal/operators/switchMapTo.ts","../../src/tz/rpc-tz-provider.ts","../../src/contract/estimate.ts","../../src/format.ts","../../src/contract/errors.ts","../../src/contract/prepare.ts","../../src/contract/rpc-estimate-provider.ts","../../src/operations/batch-operation.ts","../../src/batch/rpc-batch-provider.ts","../../src/operations/delegate-operation.ts","../../src/operations/origination-operation.ts","../../src/operations/reveal-operation.ts","../../src/operations/transaction-operation.ts","../../src/wallet/wallet.ts","../../src/wallet/legacy.ts","../../src/contract/lambda-view.ts","../../src/contract/contract.ts","../../src/contract/big-map.ts","../../src/contract/sapling-state-abstraction.ts","../../src/contract/semantic.ts","../../src/contract/rpc-contract-provider.ts","../../src/parser/michel-codec-parser.ts","../../src/packer/rpc-packer.ts","../../src/context.ts","../../src/subscribe/filters.ts","../../src/subscribe/observable-subscription.ts","../../src/subscribe/polling-provider.ts","../../src/version.ts","../../src/forger/composite-forger.ts","../../src/parser/noop-parser.ts","../../src/packer/michel-codec-packer.ts","../../src/taquito.ts","../node_modules/buffer-xor/index.js","../node_modules/hash.js/lib/hash/common.js","../node_modules/asn1.js/lib/asn1/base/buffer.js","../../../src/debug.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/axios/index.js","../node_modules/u2f-api/index.js","../node_modules/path-browserify/index.js","../node_modules/browserify-aes/aes.js","../node_modules/evp_bytestokey/index.js","../node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/parse-asn1/index.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_getMapData.js","../../../../../src/transports/clients/MessageBasedClient.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../../../../../src/transports/clients/CommunicationClient.ts","../node_modules/qrcode-generator/qrcode.js","../node_modules/object-assign/index.js","../node_modules/isarray/index.js","../node_modules/md5.js/index.js","../node_modules/util-deprecate/browser.js","../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/ripemd160/index.js","../node_modules/sha.js/index.js","../node_modules/stream-browserify/node_modules/readable-stream/readable-browser.js","../node_modules/stream-browserify/node_modules/safe-buffer/index.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/des.js/lib/des/cipher.js","../node_modules/browserify-aes/browser.js","../node_modules/browserify-aes/modes/index.js","../node_modules/brorand/index.js","../node_modules/browserify-rsa/index.js","../node_modules/bn.js/lib/bn.js","../node_modules/elliptic/lib/elliptic.js","../node_modules/elliptic/lib/elliptic/curves.js","../node_modules/hash.js/lib/hash.js","../node_modules/safer-buffer/safer.js","../node_modules/asn1.js/lib/asn1/base/node.js","../node_modules/asn1.js/lib/asn1/base/reporter.js","../node_modules/asn1.js/lib/asn1/constants/der.js","../node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","../node_modules/stream-http/node_modules/safe-buffer/index.js","../node_modules/url/url.js","../../xml-http-request-event-target.ts","../node_modules/lodash/isArray.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_root.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/isObject.js","../../src/taquito-beacon-wallet.ts","../../src/index.js","../../../../../src/transports/clients/P2PCommunicationClient.ts","../node_modules/crypto-browserify/index.js","../node_modules/hash-base/index.js","../node_modules/readable-stream/readable-browser.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/sha.js/sha256.js","../node_modules/sha.js/sha512.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/timers-browserify/main.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/create-hmac/browser.js","../node_modules/create-hash/md5.js","../node_modules/pbkdf2/browser.js","../node_modules/pbkdf2/lib/precondition.js","../node_modules/pbkdf2/lib/default-encoding.js","../node_modules/pbkdf2/lib/sync-browser.js","../node_modules/pbkdf2/lib/to-buffer.js","../node_modules/des.js/lib/des/utils.js","../node_modules/des.js/lib/des/des.js","../node_modules/browserify-aes/modes/ctr.js","../node_modules/browserify-aes/incr32.js","../node_modules/browserify-aes/authCipher.js","../node_modules/browserify-aes/streamCipher.js","../node_modules/diffie-hellman/lib/generatePrime.js","../node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","../node_modules/miller-rabin/lib/mr.js","../node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/hash.js/lib/hash/sha/common.js","../node_modules/hash.js/lib/hash/sha/256.js","../node_modules/hash.js/lib/hash/sha/512.js","../node_modules/asn1.js/lib/asn1.js","../node_modules/asn1.js/node_modules/bn.js/lib/bn.js","../node_modules/asn1.js/lib/asn1/encoders/index.js","../node_modules/asn1.js/lib/asn1/encoders/der.js","../node_modules/asn1.js/lib/asn1/decoders/index.js","../node_modules/asn1.js/lib/asn1/decoders/der.js","../node_modules/public-encrypt/mgf.js","../node_modules/public-encrypt/xor.js","../node_modules/public-encrypt/withPublic.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/stream-http/index.js","../node_modules/stream-http/lib/capability.js","../node_modules/stream-http/lib/response.js","../node_modules/stream-http/node_modules/readable-stream/readable-browser.js","../node_modules/stream-http/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/stream-http/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/eq.js","../node_modules/lodash/_toKey.js","../node_modules/blakejs/util.js","../node_modules/react-dom/index.js","../../../../../src/transports/clients/PostMessageClient.ts","../node_modules/fast-json-stable-stringify/index.js","../../src/TransportU2F.js","../../src/Transport.js","../../src/taquito-ledger-signer.ts","../../../../src/utils/utils.ts","../../../../../src/matrix-client/models/MatrixRoom.ts","../../../../src/matrix-client/MatrixClientStore.ts","../../../../src/matrix-client/MatrixHttpClient.ts","../../../../../src/matrix-client/services/MatrixRoomService.ts","../../../../../src/matrix-client/services/MatrixUserService.ts","../../../../../src/matrix-client/services/MatrixEventService.ts","../../../../src/matrix-client/MatrixClientEventEmitter.ts","../../../../src/matrix-client/MatrixClient.ts","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/libsodium/dist/modules/libsodium.js","../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/sha.js/sha.js","../node_modules/sha.js/sha1.js","../node_modules/sha.js/sha224.js","../node_modules/sha.js/sha384.js","../node_modules/stream-browserify/index.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/BufferList.js","../node_modules/setimmediate/setImmediate.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/stream-browserify/node_modules/readable-stream/writable-browser.js","../node_modules/stream-browserify/node_modules/readable-stream/duplex-browser.js","../node_modules/stream-browserify/node_modules/readable-stream/transform.js","../node_modules/stream-browserify/node_modules/readable-stream/passthrough.js","../node_modules/create-hmac/legacy.js","../node_modules/browserify-sign/algos.js","../node_modules/pbkdf2/lib/async.js","../node_modules/browserify-cipher/browser.js","../node_modules/browserify-des/index.js","../node_modules/des.js/lib/des.js","../node_modules/des.js/lib/des/cbc.js","../node_modules/des.js/lib/des/ede.js","../node_modules/browserify-aes/encrypter.js","../node_modules/browserify-aes/modes/ecb.js","../node_modules/browserify-aes/modes/cbc.js","../node_modules/browserify-aes/modes/cfb.js","../node_modules/browserify-aes/modes/cfb8.js","../node_modules/browserify-aes/modes/cfb1.js","../node_modules/browserify-aes/modes/ofb.js","../node_modules/browserify-aes/ghash.js","../node_modules/browserify-aes/decrypter.js","../node_modules/browserify-des/modes.js","../node_modules/diffie-hellman/browser.js","../node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","../node_modules/diffie-hellman/lib/dh.js","../node_modules/browserify-sign/browser/index.js","../node_modules/browserify-sign/browser/sign.js","../node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/elliptic/lib/elliptic/curve/mont.js","../node_modules/elliptic/lib/elliptic/curve/edwards.js","../node_modules/hash.js/lib/hash/sha.js","../node_modules/hash.js/lib/hash/sha/1.js","../node_modules/hash.js/lib/hash/sha/224.js","../node_modules/hash.js/lib/hash/sha/384.js","../node_modules/hash.js/lib/hash/ripemd.js","../node_modules/hash.js/lib/hash/hmac.js","../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/elliptic/lib/elliptic/eddsa/index.js","../node_modules/elliptic/lib/elliptic/eddsa/key.js","../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../node_modules/parse-asn1/asn1.js","../node_modules/asn1.js/lib/asn1/api.js","../node_modules/asn1.js/lib/asn1/encoders/pem.js","../node_modules/asn1.js/lib/asn1/decoders/pem.js","../node_modules/asn1.js/lib/asn1/base/index.js","../node_modules/asn1.js/lib/asn1/constants/index.js","../node_modules/parse-asn1/certificate.js","../node_modules/parse-asn1/fixProc.js","../node_modules/browserify-sign/browser/verify.js","../node_modules/create-ecdh/browser.js","../node_modules/create-ecdh/node_modules/bn.js/lib/bn.js","../node_modules/public-encrypt/browser.js","../node_modules/public-encrypt/publicEncrypt.js","../node_modules/public-encrypt/privateDecrypt.js","../node_modules/randomfill/browser.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/bs58check/base.js","../node_modules/bs58/index.js","../node_modules/base-x/src/index.js","../../index.ts","../../xml-http-request.ts","../node_modules/stream-http/lib/request.js","../node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/BufferList.js","../node_modules/stream-http/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/to-arraybuffer/index.js","../node_modules/xtend/immutable.js","../node_modules/builtin-status-codes/browser.js","../node_modules/node-libs-browser/node_modules/punycode/punycode.js","../node_modules/url/util.js","../node_modules/querystring-es3/index.js","../node_modules/querystring-es3/decode.js","../node_modules/querystring-es3/encode.js","../node_modules/https-browserify/index.js","../node_modules/os-browserify/browser.js","../../progress-event.ts","../../errors.ts","../../xml-http-request-upload.ts","../node_modules/cookiejar/cookiejar.js","../node_modules/lodash/get.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/memoize.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/toString.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/set.js","../node_modules/lodash/_baseSet.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_isIndex.js","../node_modules/blakejs/index.js","../node_modules/blakejs/blake2b.js","../node_modules/blakejs/blake2s.js","../node_modules/u2f-api/lib/u2f-api.js","../node_modules/u2f-api/lib/google-u2f-api.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js"],"names":["module","exports","_classCallCheck","instance","Constructor","TypeError","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_defineProperties","target","props","i","length","descriptor","_createClass","protoProps","staticProps","prototype","e","r","sodium","onload","define","t","a","ready","then","_sodium_init","Error","E","x","k","S","T","w","Y","B","A","K","M","I","N","L","U","O","C","R","P","G","X","D","F","V","H","z","j","q","W","J","Q","Z","$","ee","te","re","ae","_e","ne","se","ce","oe","he","pe","ye","ie","le","ue","de","ve","ge","be","fe","me","Ee","xe","ke","Se","Te","we","Ye","Be","Ae","Ke","Me","Ie","Ne","Le","Ue","Oe","Ce","Re","Pe","Ge","Xe","De","Fe","Ve","He","ze","je","qe","We","Je","Qe","Ze","$e","et","tt","rt","at","_t","nt","st","ct","ot","ht","pt","yt","it","lt","ut","dt","vt","gt","bt","ft","mt","Et","xt","kt","St","Tt","wt","Yt","Bt","At","Kt","Mt","It","Nt","Lt","Ut","Ot","Ct","Rt","Pt","Gt","Xt","Dt","Ft","Vt","Ht","zt","jt","qt","_","n","c","toLowerCase","s","UTF8ToString","Uint8Array","randombytes_buf","crypto_secretbox_NONCEBYTES","crypto_secretbox_KEYBYTES","crypto_secretbox_easy","o","crypto_secretbox_open_easy","memcmp","useBackupModule","TextEncoder","encode","unescape","encodeURIComponent","charCodeAt","TextDecoder","fatal","decode","Math","ceil","decodeURIComponent","escape","String","fromCharCode","apply","Array","slice","call","h","p","y","pop","m","ORIGINAL","ORIGINAL_NO_PADDING","URLSAFE","URLSAFE_NO_PADDING","floor","l","u","push","address","_sodium_bin2base64","g","to_Uint8Array","v","keys","this","d","HEAPU8","set","_malloc","message","_free","b","f","_crypto_aead_chacha20poly1305_abytes","_crypto_aead_chacha20poly1305_npubbytes","_crypto_aead_chacha20poly1305_keybytes","_crypto_aead_chacha20poly1305_decrypt","_crypto_box_macbytes","_crypto_aead_chacha20poly1305_decrypt_detached","_crypto_aead_chacha20poly1305_encrypt","_crypto_aead_chacha20poly1305_encrypt_detached","ciphertext","mac","_crypto_aead_chacha20poly1305_ietf_abytes","_crypto_aead_chacha20poly1305_ietf_npubbytes","_crypto_aead_chacha20poly1305_ietf_keybytes","_crypto_aead_chacha20poly1305_ietf_decrypt","_crypto_aead_chacha20poly1305_ietf_decrypt_detached","_crypto_aead_chacha20poly1305_ietf_encrypt","_crypto_aead_chacha20poly1305_ietf_encrypt_detached","_crypto_aead_chacha20poly1305_ietf_keygen","_crypto_aead_chacha20poly1305_keygen","_crypto_aead_xchacha20poly1305_ietf_abytes","_crypto_aead_xchacha20poly1305_ietf_npubbytes","_crypto_aead_xchacha20poly1305_ietf_keybytes","_crypto_aead_xchacha20poly1305_ietf_decrypt","_crypto_aead_xchacha20poly1305_ietf_decrypt_detached","_crypto_aead_xchacha20poly1305_ietf_encrypt","_crypto_aead_xchacha20poly1305_ietf_encrypt_detached","_crypto_aead_xchacha20poly1305_ietf_keygen","_crypto_auth_keybytes","_crypto_auth_bytes","_crypto_auth","_crypto_auth_hmacsha256_keybytes","_crypto_auth_hmacsha256_bytes","_crypto_auth_hmacsha256","_crypto_auth_hmacsha256_keygen","_crypto_auth_hmacsha256_verify","_crypto_auth_hmacsha512_keybytes","_crypto_auth_hmacsha512_bytes","_crypto_auth_hmacsha512","_crypto_auth_hmacsha512_keygen","_crypto_auth_hmacsha512_verify","_crypto_auth_keygen","_crypto_auth_verify","_crypto_box_publickeybytes","_crypto_box_secretkeybytes","_crypto_box_beforenmbytes","_crypto_box_beforenm","_crypto_box_curve25519xchacha20poly1305_publickeybytes","_crypto_box_curve25519xchacha20poly1305_secretkeybytes","_crypto_box_curve25519xchacha20poly1305_keypair","publicKey","privateKey","keyType","_crypto_box_curve25519xchacha20poly1305_sealbytes","_crypto_box_curve25519xchacha20poly1305_seal","_crypto_box_curve25519xchacha20poly1305_seal_open","_crypto_box_noncebytes","_crypto_box_detached","_crypto_box_easy","_crypto_box_easy_afternm","_crypto_box_keypair","_crypto_box_open_detached","_crypto_box_open_easy","_crypto_box_open_easy_afternm","_crypto_box_sealbytes","_crypto_box_seal","_crypto_box_seal_open","_crypto_box_seedbytes","_crypto_box_seed_keypair","_crypto_core_ristretto255_bytes","_crypto_core_ristretto255_add","_crypto_core_ristretto255_from_hash","_crypto_core_ristretto255_is_valid_point","_crypto_core_ristretto255_random","_crypto_core_ristretto255_scalarbytes","_crypto_core_ristretto255_scalar_add","_crypto_core_ristretto255_scalar_complement","_crypto_core_ristretto255_scalar_invert","_crypto_core_ristretto255_scalar_mul","_crypto_core_ristretto255_scalar_negate","_crypto_core_ristretto255_scalar_reduce","_crypto_core_ristretto255_scalar_sub","_crypto_core_ristretto255_sub","_crypto_generichash","_crypto_generichash_blake2b_saltbytes","_crypto_generichash_blake2b_personalbytes","_crypto_generichash_blake2b_salt_personal","_crypto_generichash_final","_crypto_generichash_init","_crypto_generichash_keybytes","_crypto_generichash_keygen","_crypto_generichash_update","_crypto_hash_bytes","_crypto_hash","_crypto_hash_sha256_bytes","_crypto_hash_sha256","_crypto_hash_sha256_final","_crypto_hash_sha256_init","_crypto_hash_sha256_update","_crypto_hash_sha512_bytes","_crypto_hash_sha512","_crypto_hash_sha512_final","_crypto_hash_sha512_init","_crypto_hash_sha512_update","_crypto_kdf_keybytes","_crypto_kdf_derive_from_key","_crypto_kdf_keygen","_crypto_kx_publickeybytes","_crypto_kx_secretkeybytes","_crypto_kx_sessionkeybytes","_crypto_kx_client_session_keys","sharedRx","sharedTx","_crypto_kx_keypair","_crypto_kx_seedbytes","_crypto_kx_seed_keypair","_crypto_kx_server_session_keys","_crypto_onetimeauth_keybytes","_crypto_onetimeauth_bytes","_crypto_onetimeauth","_crypto_onetimeauth_final","_crypto_onetimeauth_init","_crypto_onetimeauth_keygen","_crypto_onetimeauth_update","_crypto_onetimeauth_verify","_crypto_pwhash_saltbytes","_crypto_pwhash","_crypto_pwhash_scryptsalsa208sha256_saltbytes","_crypto_pwhash_scryptsalsa208sha256","_crypto_pwhash_scryptsalsa208sha256_ll","_crypto_pwhash_scryptsalsa208sha256_strbytes","_crypto_pwhash_scryptsalsa208sha256_str","_crypto_pwhash_scryptsalsa208sha256_str_verify","_crypto_pwhash_strbytes","_crypto_pwhash_str","_crypto_pwhash_str_needs_rehash","_crypto_pwhash_str_verify","_crypto_scalarmult_scalarbytes","_crypto_scalarmult_bytes","_crypto_scalarmult","_crypto_scalarmult_base","_crypto_scalarmult_ristretto255_scalarbytes","_crypto_scalarmult_ristretto255_bytes","_crypto_scalarmult_ristretto255","_crypto_scalarmult_ristretto255_base","_crypto_secretbox_noncebytes","_crypto_secretbox_keybytes","_crypto_secretbox_macbytes","_crypto_secretbox_detached","cipher","_crypto_secretbox_easy","_crypto_secretbox_keygen","_crypto_secretbox_open_detached","_crypto_secretbox_open_easy","_crypto_secretstream_xchacha20poly1305_headerbytes","_crypto_secretstream_xchacha20poly1305_keybytes","_crypto_secretstream_xchacha20poly1305_init_pull","_crypto_secretstream_xchacha20poly1305_init_push","state","header","_crypto_secretstream_xchacha20poly1305_keygen","_crypto_secretstream_xchacha20poly1305_abytes","_crypto_secretstream_xchacha20poly1305_pull","tag","_crypto_secretstream_xchacha20poly1305_push","_crypto_secretstream_xchacha20poly1305_rekey","_crypto_shorthash_keybytes","_crypto_shorthash_bytes","_crypto_shorthash","_crypto_shorthash_keygen","_crypto_shorthash_siphashx24_keybytes","_crypto_shorthash_siphashx24_bytes","_crypto_shorthash_siphashx24","_crypto_sign_secretkeybytes","_crypto_sign_bytes","_crypto_sign","_crypto_sign_detached","_crypto_sign_publickeybytes","_crypto_sign_ed25519_pk_to_curve25519","_crypto_sign_ed25519_sk_to_curve25519","_crypto_sign_ed25519_sk_to_pk","_crypto_sign_seedbytes","_crypto_sign_ed25519_sk_to_seed","_crypto_sign_final_create","_crypto_sign_final_verify","_crypto_sign_init","_crypto_sign_keypair","_crypto_sign_open","_crypto_sign_seed_keypair","_crypto_sign_update","_crypto_sign_verify_detached","_crypto_stream_chacha20_keybytes","_crypto_stream_chacha20_noncebytes","_crypto_stream_chacha20","_crypto_stream_chacha20_ietf_noncebytes","_crypto_stream_chacha20_ietf_keybytes","_crypto_stream_chacha20_ietf_xor","_crypto_stream_chacha20_ietf_xor_ic","_crypto_stream_chacha20_keygen","_crypto_stream_chacha20_xor","_crypto_stream_chacha20_xor_ic","_crypto_stream_keybytes","_crypto_stream_keygen","_crypto_stream_xchacha20_keybytes","_crypto_stream_xchacha20_keygen","_crypto_stream_xchacha20_noncebytes","_crypto_stream_xchacha20_xor","_crypto_stream_xchacha20_xor_ic","_randombytes_buf","_randombytes_seedbytes","_randombytes_buf_deterministic","_randombytes_close","_randombytes_random","setValue","Runtime","addFunction","_randombytes_set_implementation","_randombytes_stir","_randombytes_uniform","_sodium_version_string","subarray","add","base64_variants","compare","from_base64","result_bin_len_p","b64_end_p","_sodium_base642bin","getValue","from_hex","hex_end_p","_sodium_hex2bin","from_string","increment","is_zero","libsodium","memzero","output_formats","pad","_sodium_pad","unpad","_sodium_unpad","symbols","sort","to_base64","to_hex","to_string","ValidationResult","bs58check","validatePrefixedValue","prefixes","match","RegExp","join","exec","NO_PREFIX_MATCHED","prefixKey","prefix","isValidPrefix","contractAddress","decoded","decodeUnsafe","prefixLength","INVALID_LENGTH","VALID","INVALID_CHECKSUM","implicitPrefix","Prefix","TZ1","TZ2","TZ3","contractPrefix","KT1","signaturePrefix","EDSIG","P2SIG","SPSIG","SIG","pkPrefix","EDPK","SPPK","P2PK","validateAddress","validateChain","NET","validateKeyHash","validateSignature","validatePublicKey","blake","encodeExpr","b58cencode","blake2b","hex2buf","payloadAr","from","buffer","b58decode","payload","buf","pref","tz1","toString","tz2","tz3","buf2hex","encodePubKey","substring","KT","encodeKey","encodeKeyHash","hex","map","parseInt","byteArray","hexParts","forEach","byte","paddedHex","bytes2Char","_typeof","Symbol","iterator","constructor","_possibleConstructorReturn","self","assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","result","Super","getPrototypeOf","NewTarget","arguments","_setPrototypeOf","setPrototypeOf","__proto__","_inherits","subClass","superClass","create","ctor","superCtor","super_","TempCtor","BeaconMessageType","PermissionScope","NetworkType","TezosOperationType","Origin","ExtensionMessageTarget","property","receiver","get","base","object","hasOwnProperty","desc","getOwnPropertyDescriptor","ColorMode","replaceInTemplate","text","alertTemplates","getTzip10Link","url","defaultExtensions","Platform","WalletType","toastTemplates","document","shadowRoot","shortenString","BeaconErrorType","BeaconEvent","SigningType","TransportStatus","TransportType","Logger","StorageKey","undefined","require","Buffer","copyProps","src","dst","SafeBuffer","arg","encodingOrOffset","alloc","allocUnsafe","allocUnsafeSlow","size","fill","encoding","SlowBuffer","base64","ieee754","isArray","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","ArrayBuffer","array","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","string","isEncoding","actual","write","fromString","isBuffer","len","checked","copy","val","type","data","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","indexOf","lastIndexOf","arr","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","offset","Number","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","str","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","INSPECT_MAX_BYTES","global","foo","typedArraySupport","poolSize","_augment","species","_isBuffer","concat","list","pos","swap16","swap32","swap64","equals","inspect","max","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","replace","stringtrim","base64clean","_toConsumableArray","arrayLikeToArray","iter","unsupportedIterableToArray","_slicedToArray","_n","_d","_s","_i","next","done","err","ExposedPromiseStatus","cbs","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","nextTick","args","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","umask","SDK_VERSION","BEACON_VERSION","Function","window","_getPrototypeOf","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","error","Promise","_asyncToGenerator","fn","michelsonMapTypeSymbol","for","errorType","mapType","valueMap","Map","keyMap","setType","isMichelsonMap","keySchema","Schema","valueSchema","removeType","fromLiteral","MichelsonMap","typecheckKey","Typecheck","typecheckValue","assertTypecheckValue","MapTypecheckError","assertTypecheckKey","serializeDeterministically","entries","values","strKey","delete","has","clear","cb","token","baseMessage","annot","annotText","idx","fac","createToken","typeWithoutAnnotations","removeArgsRec","prim","annots","hasAnnotations","ExtractSignature","ExtractSchema","o1","o2","Token","TokenValidationError","KeySchema","ValueSchema","isValid","BigMapValidationError","Encode","EncodeObject","Execute","semantic","BigMapToken","current","ToKey","int","JSON","stringify","label","leftToken","keyCount","OrToken","rightToken","newSig","sig","semantics","traversal","getLeftValue","getRightValue","leftValue","rightValue","findToken","tok","ComparableToken","val1","val2","labelVal1","ToBigMapKey","collapse","PairToken","tokens","cnt","leftSig","rightSig","toFixed","bigNumber","NatValidationError","isNegative","NatToken","nat1","nat2","StringToken","AddressValidationError","AddressToken","address1","address2","isImplicit","startsWith","MapValidationError","BoolToken","ContractValidationError","ContractToken","ListValidationError","schema","reduce","prev","ListToken","MutezToken","MutezValidationError","mutez1","mutez2","BytesToken","test","BytesValidationError","convertUint8ArrayToHexString","subToken","toISOString","TimestampToken","IntToken","IntValidationError","int1","int2","_val","UnitValue","UnitToken","_val1","_val2","KeyValidationError","KeyToken","KeyHashValidationError","KeyHashToken","SignatureValidationError","SignatureToken","LambdaToken","parameters","returns","OperationToken","SetValidationError","SetToken","ChainIDValidationError","ChainIDToken","ticketerType","amountType","_args","EncodeTicketError","TicketToken","ticketer","amount","NeverTokenError","NeverToken","SaplingStateToken","SaplingStateValidationError","validateBytes","SaplingTransactionValidationError","SaplingTransactionToken","Bls12381frValidationError","Bls12381frToken","Bls12381g1ValidationError","Bls12381g1Token","Bls12381g2ValidationError","Bls12381g2Token","MapToken","OptionToken","find","InvalidTokenError","schemaTypeSymbol","deepEqual","ac","bc","every","root","bigMap","isExpressionExtended","exp","isSchema","fromRPCResponse","storage","script","removeTopLevelAnnotation","isInteger","ex","ExecuteOnBigMapDiff","diff","eltFormat","ExecuteOnBigMapValue","EncodeBigMapKey","_value","ComputeState","tx","contents","metadata","operation_result","big_map_diff","FindFirstInTopLevelPair","valueType","findValue","valueToFind","sch","parameter","ParameterSchema","isMultipleEntryPoint","reverse","ExtractSignatures","globalObject","BigNumber","isNumeric","mathceil","mathfloor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","bitFloor","coeffToString","xc","yc","intCheck","isOdd","toExponential","charAt","toFixedPoint","zs","clone","configObject","div","convertBase","parseNumeric","valueOf","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","ALPHABET","alphabet","caseChanged","isNum","_isBigNumber","search","round","DEBUG","toUpperCase","format","rm","id","c0","maxOrMin","method","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","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","minimum","random","pow2_53","random53bitInt","dp","rand","Uint32Array","splice","sum","plus","decimal","toBaseOut","baseIn","baseOut","arrL","sign","callerIsToString","multiply","temp","xlo","xhi","carry","klo","khi","aL","bL","cmp","subtract","more","prod","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","NaN","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","p1","p2","absoluteValue","abs","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","mod","times","integerValue","isEqualTo","eq","isGreaterThan","isGreaterThanOrEqualTo","gte","isLessThan","isLessThanOrEqualTo","lte","isPositive","isZero","minus","xLTy","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","precision","shiftedBy","squareRoot","sqrt","rep","toFormat","split","g1","g2","intPart","fractionPart","isNeg","intDigits","toFraction","md","d0","d1","d2","n0","n1","toNumber","toPrecision","errorClasses","deserializers","addCustomErrorDeserializer","deserializer","createCustomErrorClass","fields","assign","stack","TransportRaceCondition","TransportError","StatusCodes","PIN_REMAINING_ATTEMPTS","INCORRECT_LENGTH","MISSING_CRITICAL_PARAMETER","COMMAND_INCOMPATIBLE_FILE_STRUCTURE","SECURITY_STATUS_NOT_SATISFIED","CONDITIONS_OF_USE_NOT_SATISFIED","INCORRECT_DATA","NOT_ENOUGH_MEMORY_SPACE","REFERENCED_DATA_NOT_FOUND","FILE_ALREADY_EXISTS","INCORRECT_P1_P2","INS_NOT_SUPPORTED","CLA_NOT_SUPPORTED","TECHNICAL_PROBLEM","OK","MEMORY_PROBLEM","NO_EF_SELECTED","INVALID_OFFSET","FILE_NOT_FOUND","INCONSISTENT_FILE","ALGORITHM_NOT_SUPPORTED","INVALID_KCV","CODE_NOT_INITIALIZED","ACCESS_CONDITION_NOT_FULFILLED","CONTRADICTION_SECRET_CODE_STATUS","CONTRADICTION_INVALIDATION","CODE_BLOCKED","MAX_VALUE_REACHED","GP_AUTH_FAILED","LICENSING","HALTED","TransportStatusError","statusCode","statusText","smsg","getAltStatusMessage","statusCodeStr","bind","isUndefined","isObject","isPlainObject","isFunction","isArrayBuffer","isFormData","FormData","isArrayBufferView","isString","isNumber","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","merge","assignValue","extend","thisArg","stripBOM","content","MatrixClientEventType","assert","msg","equal","utils","BN","minAssert","minUtils","toArray","zero2","getNAF","num","bits","naf","bitLength","ws","andln","isubn","iushrn","getJSF","k1","k2","jsf","m8","cmpn","u1","u2","m14","m24","cachedProperty","computer","parseBytes","intFromLE","createHash","bs58checkBase","tmp","update","digest","ReflectOwnKeys","ReflectApply","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","EventEmitter","init","emitter","errorListener","resolver","eventTargetAgnosticAddListener","handler","flags","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","prepend","events","existing","warning","newListener","unshift","warned","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","addEventListener","wrapListener","removeEventListener","setMaxListeners","getMaxListeners","doError","er","context","position","originalListener","shift","index","spliceOne","rawListeners","eventNames","_assertThisInitialized","ReferenceError","objectToString","isBoolean","isNull","isNullOrUndefined","isSymbol","isRegExp","isError","isPrimitive","inherits","isSurrogatePair","htonl","word","zero8","enc","toHex32","endian","join32","split32","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","ah","al","bh","sum64_hi","bl","sum64_lo","sum64_4_hi","ch","cl","dh","dl","sum64_4_lo","sum64_5_hi","eh","el","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","number","isBN","negative","words","red","_init","wordSize","parseHex","parseBase","left","right","_initNumber","_initArray","_parseHex","_parseBase","strip","limbLen","limbPow","total","imuln","_iaddn","dest","_expand","_normSign","zeros","groupSizes","groupBases","smallMulTo","ncarry","rword","maxJ","padding","groupBase","modn","idivn","toBuffer","toArrayLike","ArrayType","reqLength","clz32","_countBits","_zeroBits","zeroBits","toTwos","width","inotn","iaddn","fromTwos","testn","notn","ineg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","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","mulTo","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","convert13b","stub","ph","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","carryMask","newCarry","ishln","hint","extended","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","addn","subn","iabs","_ishlnsubmul","_wordDiv","mode","bhi","qj","divmod","positive","divn","umod","divRound","dm","r2","acc","egcd","isEven","yp","xp","im","jm","gcd","_invmp","x1","x2","delta","invm","bincn","ucmp","gtn","gten","ltn","lten","eqn","Red","toRed","ctx","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","input","output","outLen","mod3","one","nOne","lpow","inv","wnd","currentLen","mont","STATUS_CODE","XMLHttpRequestCTOR","node","XMLHttpRequest","status","body","innerEvent","serialize","prop","item","serialized","createXHR","createRequest","query","headers","json","mimeType","request","open","setRequestHeader","overrideMimeType","parse","response","HttpResponseError","ontimeout","onerror","HttpRequestFailed","dataStr","send","Transform","StringDecoder","CipherBase","hashMode","_finalOrDigest","final","_final","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_update","_toString","setAutoPadding","getAuthTag","setAuthTag","setAAD","_transform","_flush","fin","arg1","arg2","arg3","webpackPolyfill","deprecate","paths","children","nb","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","utf8CheckExtraBytes","utf8CheckIncomplete","pna","objectKeys","Duplex","util","Readable","Writable","options","readable","allowHalfOpen","onend","_writableState","ended","onEndNT","highWaterMark","_readableState","destroyed","_destroy","MAX_BYTES","MAX_UINT32","msCrypto","generated","MD5","RIPEMD160","sha","Base","Hash","hash","_hash","alg","codes","createErrorType","NodeError","_Base","getMessage","oneOf","expected","thing","determiner","this_len","endsWith","getBuffer","blockSize","finalSize","_block","_finalSize","_blockSize","_len","block","accum","assigned","remainder","lowBits","highBits","_unsupportedIterableToArray","minLen","OpKind","getByPath","setByPath","castToBigNumber","returnArray","defaultRPCOptions","chain","httpBackend","createURL","path","getBlockHash","getLiveBlocks","getBalance","balance","getStorage","getScript","getContract","contractResponse","getManagerKey","getDelegate","delegate","NOT_FOUND","getBigMapKey","getBigMapExpr","expr","getDelegates","deactivated","frozen_balance","frozen_balance_by_cycle","deposit","fees","rewards","rest","staking_balance","delegated_contracts","delegated_balance","grace_period","getConstants","castedResponse","getBlock","getBlockHeader","getBlockMetadata","getBakingRights","getEndorsingRights","getBallotList","getBallots","getCurrentPeriodKind","getCurrentProposal","getCurrentQuorum","getVotesListings","getProposals","forgeOperations","injectOperation","signedOpBytes","preapplyOperations","ops","getEntrypoints","contract","runOperation","op","runCode","getChainId","packData","gas","formattedGas","tryBigNumber","getRpcUrl","getCurrentPeriod","getSuccessorPeriod","getSaplingDiffById","getSaplingDiffByContract","extendStatics","__extends","__","SafeSubscriber","_parentSubscriber","Subject","delay","InnerSubscriber","sourceReference","Literal","ScanError","isSpace","isIdentStart","isIdent","isDigit","isHex","scan","scanComments","Ident","first","last","Bytes","ii","esc","Comment","Protocol","refContract","DefaultProtocol","PsDELPH1","MacroError","assertArgs","assertNoAnnots","assertIntArg","parsePairUnpairExpr","annotations","agg","lexpr","ai","ann","rexpr","an","parseSetMapCadr","vann","term","filterAnnotations","mkPrim","pairRe","unpairRe","cadrRe","setCadrRe","mapCadrRe","diipRe","duupRe","MichelineParseError","JSONParseError","errEOF","isAnnotation","intRe","bytesRe","opt","expand","expandMacros","proto","protocol","mayRename","top","trimLast","leaf","PtEdo2Zk","PsFLorena","PtGRANADs","macro","parseListExpr","scanner","ref","expectBracket","parseExpr","parseArgs","parseSequenceExpr","seq","itm","parseSequence","parseList","parseMichelineExpression","parseScript","parseData","parseJSON","lev","indent","newline","down","Formatter","sha256","ror","s0","s1","t1","t2","base58alphabetFwd","byteAt","decodeBase58Check","decodeBase58","computed","noArgInstructionIDs","instructionIDs","simpleComparableTypeIDs","typeIDs","MichelsonValidationError","MichelsonError","isPrim","assertPrim","assertSeq","assertPrimOrSeq","isPrimOrSeq","assertNatural","assertIntLiteral","assertMichelsonInstruction","assertMichelsonType","assertMichelsonPackableType","assertMichelsonPassableType","assertMichelsonContract","assertMichelsonPushableType","assertMichelsonData","assertMichelsonComparableType","assertMichelsonBigMapStorableType","traverseType","assertMichelsonStorableType","mapElts","ent","sec","isInstruction","assertDataListIfAny","Tag","primitives","primTags","ContractID","PublicKeyHashID","PublicKeyID","writeBytes","writeUint8","writeUint16","writeUint32","writeInt16","writeInt32","boundsErr","cap","readBytes","reader","Reader","readUint8","readUint16","readUint32","readInt16","readInt32","readPublicKeyHash","ED25519","SECP256K1","P256","readAddress","Implicit","Originated","dec","entryPoint","writePublicKeyHash","readPublicKey","ln","writeExpr","wr","tf","Writer","Sequence","Int","BigInt","Prim0","Prim","isOrData","isOptionData","getWriteTransformFunc","isPairType","isPairData","MichelsonTypeError","tc","unpackComb","elt","checkDecodeTezosID","hexBytes","pkh","pk","writePublicKey","writeAddress","parseDate","getTime","writePassThrough","isPushInstruction","stackState","MichelsonInstructionError","typeID","typeArgs","assertScalarTypesEqual","field","unpackAnnotations","aArgs","bArgs","assertStacksEqual","assertTypeAnnotationsValid","compareMichelsonData","tComb","aComb","bComb","LongInteger","localeCompare","aa","bb","compareBytes","assertDataValidInternal","dc","isDecimal","isNatural","decodePublicKeyHashBytes","ep","decodeAddressBytes","decodePublicKeyBytes","functionTypeInternal","failed","inst","traceCallback","trace","in","instructionListType","instruction","typeIds","ids","rethrow","rethrowTypeGuard","argAnn","ensureStacksEqual","ensureTypesEqual","ensureComparableType","ensurePackableType","ensureStorableType","ensurePushableType","ensureBigMapStorableType","instructionAnn","emptyFields","emptyVar","assertNum","annotate","annotateVar","def","ia","annotateField","insAnn","defField","fieldAnn","insFieldAnn","insVarAnn","varAnn","getN","getNth","updateNth","varSuffix","branchType","br0","br1","retStack","specialFields","retArgs","va","specialVar","toLocaleLowerCase","contractEntryPoint","addr","contractSection","tail","lefta","righta","head","assertContractValid","section","isContract","contractEntryPoints","param","getArg","assertDataValid","Parser","Contract","parseTypeExpression","parseDataExpression","entryPoints","isDataValid","assertParameterValid","isParameterValid","functionType","typesec","DEFAULT_GAS_LIMIT","DEFAULT_FEE","DEFAULT_STORAGE_LIMIT","Protocols","forge","branch","rpc","inject","signedOperationBytes","UnconfiguredSignerError","publicKeyHash","secretKey","_bytes","_watermark","attachKind","kind","findWithKind","isKind","isOpWithFee","isOpRequireReveal","hasMetadata","hasMetadataWithResult","errors","lastError","with","flattenOperationResult","results","returnedResults","fee","internal_operation_results","flattenErrors","internalResult","ALLOCATION_BURN","ORIGINATION_BURN","operationResults","totalGas","totalStorage","totalFee","totalOriginationBurn","totalAllocationBurn","totalPaidStorageDiff","originated_contracts","consumed_gas","paid_storage_size_diff","totalStorageBurn","opHash","_newHead$","_operationResult","_includedInBlock","_included","newHead$","tap","newHead","lastHead","level","MissedBlockDuringConfirmationError","shareReplay","bufferSize","refCount","confirmed$","operations","opGroup","subscribe","toPromise","receipt","getCurrentConfirmation","combineLatest","foundAtBlock","isInCurrentBranch","tipBlockIdentifier","tipBlockHeader","inclusionBlock","levelDiff","tipBlockLevel","Set","confirmationObservable","confirmations","defaultConfirmationCount","conf","distinctUntilChanged","previousHead","expectedConfirmation","currentConfirmation","completed","confirmation","revealOperation","REVEAL","delegationOperation","DELEGATION","originationOperation","operationResult","ORIGINATION","wallet","transactionOperation","TRANSACTION","pollingTimer","sharedHeadOb","scheduler","confirmationPollingTimeoutSecond","switchMap","distinctUntilKeyChanged","timeoutWith","throwError","cacheUntilObs","sharedHeadObs","defer","timer","source","subject","createNewHeadObservable","confirmationPollingIntervalSecond","getConfirmationPollingInterval","createPastBlockWalker","startBlock","of","range","startWith","concatMap","createHeadObservableFromConfig","blockIdentifier","observableSequence","createOperation","createTransactionOperation","createDelegationOperation","createOriginationOperation","DefaultLambdaAddresses","ChainIds","Pt24m4xi","PsBABY5H","PsBabyM1","PsCARTHA","SIGNATURE_STUB","constructOps","cOps","headCounter","counterFunction","counters","ACTIVATION","getSource","getFee","cops","gas_limit","storage_limit","getContextCounter","counter","getScopeCounter","countersScope","signer","isRevealOpNeeded","isAccountRevealRequired","isRevealRequiredForOpType","manager","opRequireReveal","operation","prepareOpAndSimulation","getCounterHashAndProtocol","preparedOpSimulation","opOb","preparedOp","blockHeaderPromise","blockMetaPromise","counterPromise","all","next_protocol","prepareOperationEstimation","preValidate","prepared","forgedOperation","signature","chain_id","preapplyOperation","forgeOperation","forger","opbytes","simulate","opResponse","estimate","estimator","gasLimit","storageLimit","calculatedFee","calculatedGas","calculatedStorage","estimation","suggestedFeeMutez","signOperation","forgedBytes","signed","sbytes","prefixSig","TezosOperationError","TezosPreapplyFailureError","injector","raw","_pollingConfig$","_currentHeadPromise","currentHead$","polling$","interval","timeoutAt","_foundAt","POSITIVE_INFINITY","activate","secret","MINIMAL_FEE_MUTEZ","_milligasLimit","_storageLimit","opSize","minimalFeePerStorageByteMutez","baseFeeMutez","roundUp","nanotez","operationFeeMutez","minimalFeeMutez","burnFeeMutez","createEstimateInstanceFromProperties","estimateProperties","milligasLimit","Estimate","createArrayEstimateInstancesFromProperties","getDecimal","to","bigNum","smartContractMethodName","sigs","mutez","InvalidCodeParameter","storageType","contractStorage","InvalidInitParameter","TRANSFER","destination","public_key","mergeLimits","userDefinedLimit","defaultLimits","ALLOCATION_STORAGE","ORIGINATION_STORAGE","OP_SIZE_REVEAL","getAccountLimits","numberOfOps","hard_gas_limit_per_operation","hard_gas_limit_per_block","hard_storage_limit_per_operation","cost_per_byte","ajustGasForBatchOperation","gasLimitBlock","gaslimitOp","getEstimationPropertiesFromOperationContent","costPerByte","totalMilligas","consumed_milligas","prepareEstimate","params","preparedSimulation","originate","DEFAULT_PARAMS","parser","prepareCodeOrigination","isRevealNeeded","addRevealOp","transfer","setDelegate","sourceOrDefault","batch","registerDelegate","reveal","sumProp","filter","BATCH_KINDS","withTransfer","withContractCall","toTransferParams","withDelegation","withActivation","withOrigination","getRPCOp","estimates","revealNeeded","estimated","estimatedReveal","signedOperation","BatchOperation","delegationOp","consumedGas","contractProvider","originatedContracts","originationOp","storageDiff","storageSize","storage_size","revealOp","txResult","transactionOp","walletProvider","mapOperation","mapTransferParamsToWalletParams","mapOriginateParamsToWalletParams","mapDelegateParamsToWalletParams","sendOperations","operationFactory","walletCommand","forceRefetch","_pkh","getPKH","mappedParams","contractAbstractionComposer","entrypoints","blockHeader","chainId","lambdaContract","viewContract","viewMethod","contractParameter","voidLambda","createVoidLambda","execute","methods","default","getView","callback","contractArgs","entrypoint","callbackContract","DEFAULT_SMART_CONTRACT_METHOD_NAME","provider","parameterSchema","isMultipleEntrypoint","isAnonymous","Wallet","currentContract","callbackParametersSchema","customLambdaAddress","lambdaAddress","EDONET","FLORENCENET","GRANADANET","MAINNET","UndefinedLambdaContractError","LambdaView","failedWith","validateArgs","InvalidParameterError","storageProvider","views","_initializeMethods","smartContractMethodSchema","ContractMethod","contractProviderTypeSymbol","entrypointParamWithoutCallback","smartContractMethodSchemaWithoutCallback","parametersCallback","smartContractMethodCallbackSchema","ContractView","keyToEncode","getBigMapKeyByID","getMultipleValues","keysToEncode","batchSize","getBigMapKeysByID","getSaplingDiff","getSaplingDiffByID","getId","big_map","sapling_state","SaplingStateAbstraction","contractSchema","encodedKey","packer","packed","encodedExpr","bigMapValue","getBlockForRequest","bigMapValues","keysBatch","getBigMapValueOrUndefined","addRevealOperationIfNeeded","preparedOrigination","forgedOrigination","OriginationOperation","InvalidDelegationSource","opBytes","DelegateOperation","estimateReveal","RevealOperation","getNextProto","parsedParams","formatCodeParam","formatInitParam","parsedCode","parsedInit","defaultConfig","shouldObservableSubscriptionRetry","observableSubscriptionRetryFunction","retry","_rpc","_signer","_proto","_config","NoopSigner","_counters","tz","RPCBatchProvider","_rpcClient","_forger","RpcForger","_injector","RpcInjector","_walletProvider","_parser","_packer","RpcPacker","isAnyProtocolActive","constants","blockTime","time_between_blocks","minimal_block_delay","confirmationPollingInterval","delay_per_missing_endorsement","initial_endorsers","endorsers_per_block","Context","evaluateOpFilter","opHashFilter","sourceFilter","kindFilter","some","destinationFilter","evaluateExpression","evaluateFilter","filters","filterOrExp","obs","shouldRetry","operatorFunction","errorListeners","messageListeners","closeListeners","completed$","NEVER","remove","close","POLL_INTERVAL","newBlock$","publishReplay","_filter","pluck","subscribeOperation","complete","forgers","lastResult","currentResult","ForgingMismatchError","_options","_context","_wallet","setProvider","stream","setRpcProvider","setStreamProvider","setSignerProvider","setForgerProvider","setWalletProvider","setPackerProvider","getFactory","_stream","addExtension","configureContext","getVersionInfo","BlockHash","pending","pendingTotal","outSize","hmacStrength","padLength","_delta8","_delta32","_pad","_digest","Reporter","DecoderBuffer","EncoderBuffer","reporter","isEncoderBuffer","isDecoderBuffer","save","restore","isEmpty","skip","fail","_reporterState","debug","_arrayLikeToArray","arr2","normalizeArray","parts","allowAboveRoot","up","xs","resolvedPath","resolvedAbsolute","normalize","isAbsolute","trailingSlash","relative","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","dirname","hasRoot","matchedSlash","basename","extname","startDot","startPart","preDotState","asUInt32Array","scrubVec","cryptBlock","keySchedule","SUB_MIX","SBOX","nRounds","t0","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s2","s3","ksRow","RCON","INV_SBOX","INV_SUB_MIX","sx","x4","x8","AES","_key","_reset","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","decryptBlock","m1","scrub","password","salt","keyBits","ivLen","keyLen","iv","used","keyStart","ivStart","BaseCurve","zero","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","curve","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","step","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","ja","jb","decodePoint","pointFromX","encodeCompressed","_encode","compact","getX","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","asn1","aesid","fixProc","ciphers","compat","parseKeys","passphrase","subtype","ndata","stripped","certificate","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","RSAPublicKey","subjectPublicKey","subjectPrivateKey","pub_key","DSAparam","decrypt","kde","kdeparams","iters","algo","cipherText","keylen","pbkdf2Sync","createDecipheriv","EncryptedPrivateKey","PrivateKey","RSAPrivateKey","ECPrivateKey","priv_key","DSAPrivateKey","nativeCreate","getNative","isKeyable","__data__","_createForOfIteratorHelper","allowArrayLike","normalCompletion","didErr","_e2","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","maskPattern","moduleCount","modules","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","QRUtil","getPatternPosition","getBCHTypeNumber","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","qrBitBuffer","put","getMode","getLength","getLengthInBits","totalDataCount","dataCount","putBit","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","createBytes","addData","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","alt","opts","mr","rect","qrSvg","scalable","escapeXml","createDataURL","createImgTag","img","escaped","createASCII","r1","blocks","blocksLastLineNoMargin","ascii","_createHalfASCII","white","black","line","renderTo2dContext","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","unknownChar","QRMode","QRMaskPattern","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","digit","errorCorrectLength","QRMath","gexp","sameCount","darkCount","EXP_TABLE","LOG_TABLE","_num","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","_buffer","_length","bufIndex","_mode","_data","strToNum","chatToNum","getCode","byteArrayOutputStream","writeByte","_str","_pos","_buflen","height","getPixel","gif","_width","_height","pixel","writeString","writeShort","raster","getLZWRaster","lzwMinCodeSize","clearCode","endCode","table","lzwTable","byteOut","bitOut","_out","_bitBuffer","bitOutputStream","dataIndex","contains","flush","_map","_size","gifImage","setPixel","_base64","writeEncoded","padlen","base64EncodeOutputStream","utf8","charcode","toUTF8Array","propIsEnumerable","propertyIsEnumerable","toObject","test1","test2","test3","letter","shouldUseNative","HashBase","ARRAY16","_a","_b","_c","rotl","fnF","fnG","fnH","fnI","_blockOffset","localStorage","ERR_STREAM_PREMATURE_CLOSE","eos","called","onlegacyfinish","onfinish","writableEnded","finished","readableEnded","endEmitted","onclose","onrequest","req","setHeader","abort","isRequest","zl","zr","sl","sr","hl","hr","fn1","fn2","fn3","fn4","fn5","ar","br","cr","dr","tl","tr","Algorithm","sha1","sha224","sha384","sha512","Stream","PassThrough","CorkedRequest","entry","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","setImmediate","WritableState","internalUtil","OurUint8Array","realHasInstance","destroyImpl","nop","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","destroy","doWrite","chunk","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","hasInstance","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","Cipher","bufferOff","_updateDecrypt","_updateEncrypt","_flushBuffer","inputOff","outputOff","_finalEncrypt","_finalDecrypt","_unpad","deciphers","modes","createCipher","createCipheriv","Cipheriv","createDecipher","Decipher","Decipheriv","listCiphers","getCiphers","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","Rand","generate","_rand","getBytes","getByte","getr","priv","modulus","prime1","prime2","crt","blinds","blinder","publicExponent","unblinder","blind","blinded","c1","c2","qinv","coefficient","exponent1","m2","exponent2","move","_move","modrn","allocate","_toArrayLikeLE","_toArrayLikeBE","isNegNum","elliptic","curves","ec","eddsa","pre","PresetCurve","short","edwards","isInfinity","defineCurve","lambda","basis","common","ripemd","hmac","ripemd160","safer","Safer","kStringMaxLength","MAX_LENGTH","MAX_STRING_LENGTH","tags","Node","parent","_baseState","reverseArgs","choice","optional","any","use","useDecoder","explicit","implicit","_wrap","stateProps","cstate","child","_useArgs","newKey","_decode","wrapResult","prevObj","present","prevKey","enterKey","_peekTag","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","track","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","entity","_use","_createEncoderBuffer","_encodeValue","_skipDefault","primitive","_encodeChoice","_encodePrimitive","cls","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","ReporterError","pathLen","now","inherited","elem","partial","captureStackTrace","tagClass","0","1","2","3","tagClassByName","tagByName","punycode","Url","slashes","auth","host","port","hostname","pathname","href","urlParse","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","toASCII","qm","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","baseGetTag","isObjectLike","freeGlobal","freeSelf","baseIsNative","requiredScopes","client","validateRequiredScopesOrFail","permissionScopes","mandatoryScope","scope","MissingRequiredScopes","requestPermissions","getActiveAccount","account","BeaconWalletNotInitialized","removeDefaultParams","formatParameters","operatedParams","permissions","scopes","OPERATION_REQUEST","requestOperation","operationDetails","disconnect","clearActiveAccount","setActiveAccount","subscribers","log","date","dispatch","rng","pseudoRandomBytes","prng","createHmac","Hmac","algos","algoKeys","hashes","getHashes","pbkdf2","aes","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createSign","Sign","createVerify","Verify","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","_finalized","throwIfNotStringOrBuffer","pipeline","ReadableState","EElistenerCount","debugUtil","debuglog","createReadableStreamAsyncIterator","BufferList","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","readableObjectMode","pipes","pipesCount","flowing","reading","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","awaitDrain","readingMore","decoder","_read","readableAddChunk","addToFront","skipChunkCheck","emitReadable","emitReadable_","onEofChunk","chunkInvalid","addChunk","maybeReadMore","isPaused","setEncoding","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","resume","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","ondrain","ondata","cleanedUp","pipeOnDrain","pause","event","dests","ev","wrap","asyncIterator","_fromList","iterable","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","rState","ERR_INVALID_OPT_VALUE","duplexKey","highWaterMarkFrom","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","err2","Sha256","_w","maj","sigma0","sigma1","gamma0","_f","_g","_h","T1","T2","Sha512","Ch","xl","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","fh","gh","hh","fl","gl","xh","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","readableHwm","readableHighWaterMark","needMoreData","hasStrings","copyFromBufferString","copyFromBuffer","fromListPartial","increasedAwaitDrain","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","_this2","Legacy","md5","ZEROS","blocksize","_alg","ipad","_ipad","opad","_opad","MAX_ALLOC","iterations","checkParameters","sizes","rmd160","saltLen","shaFunc","rmd160Func","getDigest","ipad1","ipad2","DK","block1","destPos","hLen","ip","inL","inR","outL","outR","rip","pc1","r28shl","pc2table","pc2","sTable","substitute","permuteTable","padSplit","group","DESState","DES","_desState","deriveKeys","shiftTable","kL","kR","inp","inOff","outOff","_encrypt","_decrypt","lStart","rStart","keyL","keyR","incr32","_cipher","_prev","encrypt","chunkNum","_cache","GHASH","StreamCipher","ck","_ghash","_finID","ghash","toPad","ivBits","calcIv","_secCache","_alen","_authTag","_called","rump","xorTest","findPrime","simpleSieve","fermatTest","TWENTYFOUR","millerRabin","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","_getPrimes","n2","bn","brorand","MillerRabin","_randbelow","min_bytes","_randrange","stop","rone","rn1","getDivisor","ch32","maj32","p32","ft_1","s0_256","s1_256","g0_256","g1_256","shaCommon","sha256_K","SHA256","sha512_K","SHA512","ch64_hi","yh","yl","zh","ch64_lo","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","bignum","decoders","encoders","der","pem","DEREncoder","tree","DERNode","encodedTag","encodeTag","lenOctets","unused","ident","objid","time","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","numArray","_getEncoder","dataBuffer","defaultBuffer","DERDecoder","derDecodeTag","oct","tagStr","derDecodeLen","decodedTag","_skipUntilEnd","possibleEnd","numstr","printstr","identifiers","subident","second","year","mon","day","hour","UTC","_getDecoder","i2ops","seed","paddedMsg","paramsSerializer","serializedParams","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","defaults","adapter","getDefaultAdapter","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","username","Authorization","btoa","fullPath","baseURL","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","responseType","responseText","onabort","timeoutErrorMessage","xsrfValue","withCredentials","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","cancel","enhanceError","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","axiosKeys","otherKeys","Cancel","ClientRequest","statusCodes","http","defaultProtocol","location","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","fetch","ReadableStream","writableStream","WritableStream","abortController","AbortController","blobConstructor","Blob","xhr","getXHR","XDomainRequest","checkTypeSupport","haveArrayBuffer","haveSlice","arraybuffer","msstream","mozchunkedarraybuffer","vbArray","VBArray","capability","rStates","readyStates","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","fetchTimer","rawHeaders","trailers","rawTrailers","_fetchResponse","statusMessage","_destroyed","_resumeFetch","pipeTo","catch","getReader","_xhr","matches","_charset","charsetMatch","_onXHRProgress","responseBody","MSStreamReader","onprogress","readAsArrayBuffer","isKey","stringToPath","getRawTag","symToStringTag","toStringTag","other","uint32ToHex","normalizeInput","debugPrint","testSpeed","hashFn","startMs","genMs","hashHex","hashMs","ms","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","cycles","aobj","bobj","seen","seenIndex","wrapU2FTransportError","originalError","webSafe64","attemptExchange","keyHandle","apdu","wrapApdu","challenge","signRequest","appId","origin","timeoutMillis","signatureData","transportInstances","scrambleKey","u2fError","setScrambleKey","setUnwrap","TransportU2F","isSupported","supported","listen","observer","unsubscribed","unsubscribe","statusList","cla","ins","sw","busyPromise","resolveBusy","unresponsiveReached","exchange","setDebugMode","setExchangeTimeout","setExchangeUnresponsiveTimeout","decorateAppAPIMethods","decorateAppAPIMethod","_appAPIlock","openTimeout","listenTimeoutId","listenTimeout","Transport","ErrorMessage_ListenTimeout","ErrorMessage_NoDeviceFound","transformPathToBuffer","element","extractValue","idxLength","idxValueStart","DerivationType","transport","prompt","derivationType","CLA","INS_GET_PUBLIC_KEY","INS_PROMPT_PUBLIC_KEY","INS_SIGN","FIRST_MESSAGE_SEQUENCE","LAST_MESSAGE_SEQUENCE","OTHER_MESSAGE_SEQUENCE","_publicKeyHash","_publicKey","getLedgerpublicKey","responseLedger","publicKeyLength","rawPublicKey","compressedPublicKey","compressPublicKey","getPrefixes","prefPk","crypto_generichash","prefPkh","watermark","watermarkedBytes","transactionHex","appendWatermark","watermarkedBytes2buff","messageToSend","chunkSize","buff","chunkOperation","signWithLedger","ledgerResponse","rLength","idxLengthSVal","validateResponse","rValue","sValue","signatureBuffer","prefSig","MatrixRoom","Fragment","StrictMode","Profiler","Suspense","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","isReactComponent","setState","forceUpdate","isPureReactComponent","__self","__source","defaultProps","$$typeof","_owner","_status","_result","ReactCurrentDispatcher","ReactCurrentBatchConfig","transition","ReactCurrentOwner","IsSomeRendererActing","Children","only","Component","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","createElement","createFactory","createRef","forwardRef","render","isValidElement","lazy","_payload","memo","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","ba","ca","da","ea","fa","ha","ka","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","oa","pa","qa","ma","na","la","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ra","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","displayName","Qa","_render","Ra","Sa","Ta","nodeName","Va","_valueTracker","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","ownerDocument","eb","db","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","textContent","kb","lb","mb","ob","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeType","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","sb","tb","style","setProperty","ub","menuitem","area","embed","keygen","link","meta","wbr","vb","wb","is","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","cc","sibling","fc","gc","hc","ic","jc","kc","lc","mc","nc","oc","pc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","pointerId","vc","wc","lanePriority","unstable_runWithPriority","priority","hydrate","containerInfo","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","bd","cd","LN2","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","nd","od","keyCode","charCode","pd","qd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Jd","clipboardData","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","Od","Alt","Control","Meta","Shift","Pd","Rd","repeat","locale","which","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Zd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","$d","documentMode","color","datetime","email","month","tel","week","oninput","detachEvent","attachEvent","nextSibling","compareDocumentPosition","HTMLIFrameElement","contentWindow","contentEditable","selectionStart","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","Yb","af","bf","cf","df","capture","passive","Nb","ef","ff","parentWindow","gf","hf","char","jf","kf","lf","mf","autoFocus","nf","__html","pf","qf","sf","previousSibling","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","childContextTypes","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","shouldComponentUpdate","Mg","contextType","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","elementType","Vg","implementation","Wg","Xg","Yg","Zg","$g","documentElement","tagName","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","wh","Ah","Bh","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","bi","ci","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","ji","ki","li","mi","baseLanes","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","getDerivedStateFromError","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","yi","zi","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onClick","onclick","createElementNS","createTextNode","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","WeakMap","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","aj","display","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","hj","insertBefore","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","rj","sj","tj","uj","vj","wj","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","onCommitFiberRoot","fk","gk","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","hasAttribute","sk","uk","hk","unstable_observedBits","unmount","querySelectorAll","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","isDisabled","supportsFiber","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","performance","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","requestAnimationFrame","port2","port1","onmessage","postMessage","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","isGeneratorFunction","genFun","mark","awrap","async","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","totalMemory","TOTAL_MEMORY","onAbort","print","printErr","onRuntimeInitialized","importScripts","locateFile","__dirname","SA","readFileSync","EA","mA","readbuffer","scriptArgs","currentScript","thisProgram","quit","wasmBinary","noExitRuntime","Memory","initial","grow","PA","Table","Module","Instance","memory","Int8Array","Int16Array","Int32Array","Uint16Array","Float32Array","Float64Array","fround","AA","IA","gA","BA","CA","QA","iA","nA","aA","rA","oA","eA","tA","cA","fA","yA","sA","wA","hA","DA","uA","zA","FI","pA","lA","FA","GA","kA","_A","HA","YA","bA","BB","YI","MI","gB","NI","LI","KI","oI","VA","vI","UA","vA","NA","RA","MA","dA","JA","xA","LA","KA","qA","XA","TA","WA","jA","ZA","OA","zI","jI","tI","iB","pI","cI","wI","sI","aI","rI","eI","bI","mI","IB","uI","hI","ZI","VI","RI","EB","xI","fI","JI","SI","AB","$A","AI","II","gI","BI","CI","iI","nI","qI","yI","DI","lI","hB","GI","WI","kI","_I","HI","UI","dI","XI","TI","OI","$I","CB","QB","nB","aB","rB","oB","eB","tB","cB","fB","yB","sB","wB","ga","EI","QI","instantiate","RuntimeError","HEAP8","HEAP16","HEAP32","HEAPU16","HEAPU32","HEAPF32","HEAPF64","INITIAL_MEMORY","func","dynCall_v","dynCall_vi","wasmMemory","preRun","postRun","monitorRunDependencies","preloadedImages","preloadedAudios","credentials","arrayBuffer","asm","instantiateWasm","instantiateStreaming","1024","getRandomValue","1062","copyWithin","hardwareConcurrency","atob","___wasm_call_ctors","_crypto_aead_chacha20poly1305_ietf_nsecbytes","_crypto_aead_chacha20poly1305_ietf_messagebytes_max","_crypto_aead_chacha20poly1305_nsecbytes","_crypto_aead_chacha20poly1305_messagebytes_max","_crypto_aead_xchacha20poly1305_ietf_nsecbytes","_crypto_aead_xchacha20poly1305_ietf_messagebytes_max","_crypto_box_messagebytes_max","_crypto_box_detached_afternm","_crypto_box_open_detached_afternm","_crypto_generichash_bytes_min","_crypto_generichash_bytes_max","_crypto_generichash_bytes","_crypto_generichash_keybytes_min","_crypto_generichash_keybytes_max","_crypto_generichash_statebytes","_crypto_kdf_bytes_min","_crypto_kdf_bytes_max","_crypto_kdf_contextbytes","_crypto_pwhash_alg_argon2i13","_crypto_pwhash_alg_argon2id13","_crypto_pwhash_alg_default","_crypto_pwhash_bytes_min","_crypto_pwhash_bytes_max","_crypto_pwhash_passwd_min","_crypto_pwhash_passwd_max","_crypto_pwhash_strprefix","_crypto_pwhash_opslimit_min","_crypto_pwhash_opslimit_max","_crypto_pwhash_memlimit_min","_crypto_pwhash_memlimit_max","_crypto_pwhash_opslimit_interactive","_crypto_pwhash_memlimit_interactive","_crypto_pwhash_opslimit_moderate","_crypto_pwhash_memlimit_moderate","_crypto_pwhash_opslimit_sensitive","_crypto_pwhash_memlimit_sensitive","_crypto_pwhash_str_alg","_crypto_secretbox_messagebytes_max","_crypto_secretstream_xchacha20poly1305_statebytes","_crypto_secretstream_xchacha20poly1305_messagebytes_max","_crypto_secretstream_xchacha20poly1305_tag_message","_crypto_secretstream_xchacha20poly1305_tag_push","_crypto_secretstream_xchacha20poly1305_tag_rekey","_crypto_secretstream_xchacha20poly1305_tag_final","_crypto_sign_statebytes","_crypto_sign_messagebytes_max","_randombytes","_sodium_bin2hex","_sodium_base64_encoded_len","_sodium_library_version_major","_sodium_library_version_minor","_sodium_library_minimal","___errno_location","__growWasmMemory","calledRun","setStatus","preInit","WebAssembly","enumerableOnly","sym","custom","_getString","_getBuffer","getOwnPropertyDescriptors","defineProperties","_objectSpread","depth","customInspect","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_Object$create","ERR_MISSING_ARGS","destroyer","closed","popCallback","streams","destroys","Sha","rotl30","Sha1","rotl5","Sha224","Sha384","EE","_isStdio","didOnEnd","cleanup","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","channel","installMessageChannelImplementation","html","installReadyStateChangeImplementation","task","ZERO_BUF","subtle","toBrowser","checks","browserPbkdf2","importKey","deriveBits","resolvePromise","prom","checkNative","resp","aesModes","desModes","ebtk","suite","des","EDE","modeName","_des","des3","CBCState","_cbcInit","_cbcState","superProto","EDEState","k3","_edeState","MODES","AuthCipher","Splitter","_autopadding","PADDING","cache","setTo","padBuff","encryptStart","encryptByte","byteParam","shiftIn","ZEROES","fromArray","_multiply","lsbVi","abl","_last","padded","autoPadding","generatePrime","DH","ENCODINGS","genc","SEVEN","setPublicKey","pub","_pub","setPrivateKey","_priv","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","formatReturnValue","checkPrime","__gen","generateKeys","_gen","getPublicKey","computeSecret","getPrime","front","getPrivateKey","getGenerator","verify","algorithms","_hashType","_tag","_signType","EC","getKey","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","hashType","signType","curveId","keyFromPrivate","toDER","ecSign","dsaSign","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","inf","JPoint","zOne","betas","_getEndoRoots","lambdas","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","y1","y2","len1","_endoSplit","v1","v2","q1","q2","ax","rhs","_endoWnafMulAdd","npoints","ncoeffs","fromJSON","endoMul","obj2point","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","negate","zinv","zinv2","ay","pz2","z2","h2","h3","nz","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","z3","pz3","eqXToP","MontCurve","i4","a24","diffAdd","jumlAdd","EdwardsCurve","twisted","mOneA","oneC","_mulA","_mulC","lhs","pointFromY","_extDbl","_projDbl","_extAdd","_projAdd","sha1_K","SHA1","SHA224","SHA384","inner","outer","HmacDRBG","KeyPair","Signature","keyPair","fromPrivate","keyFromPublic","fromPublic","genKeyPair","drbg","pers","persEnc","entropy","entropyEnc","nonce","ns2","_truncateToN","truncOnly","bkey","getPrivate","ns1","kp","kpX","recoveryParam","canonical","sinv","getPublic","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","predResist","minEntropy","_reseed","reseedInterval","nonceEnc","_hmac","kmac","reseed","addEnc","_importPrivate","privEnc","_importPublic","pubEnc","reason","derive","_importDER","Position","place","octetLen","rmPadding","constructLength","octets","slen","backHalf","EDDSA","pointClass","encodingLength","keyFromSecret","hashInt","Rencoded","encodePoint","s_","pubBytes","makeSignature","SG","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","_secret","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","AlgorithmIdentifier","bitstr","null_","PrivateKeyInfo","octstr","EncryptedPrivateKeyInfo","ECParameters","namedCurve","Entity","_createNamed","Generated","_initNamed","PEMEncoder","PEMDecoder","lines","_reverse","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","bool","TBSCertificate","X509Certificate","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherKey","match2","checkValue","pubkey","ecVerify","unpacked","montp","dsaVerify","padNum","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","inenc","mgf","withPublic","iHash","hLen2","ps","dblen","maskedDb","maskedSeed","oaep","cur","nonZero","pkcs1","zBuffer","dif","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","uint","Axios","mergeConfig","createInstance","axios","instanceConfig","CancelToken","isCancel","promises","spread","isAxiosError","InterceptorManager","dispatchRequest","interceptors","interceptor","fulfilled","rejected","getUri","handlers","eject","transformData","throwIfCancellationRequested","throwIfRequested","fns","normalizedName","description","fileName","lineNumber","columnNumber","expires","domain","secure","cookie","toGMTString","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","originURL","msie","userAgent","urlParsingNode","resolveURL","requestURL","executor","base58","checksumFn","decodeRaw","checksum","newChecksum","basex","_Buffer","BASE_MAP","LEADER","FACTOR","iFACTOR","psz","zeroes","b256","it3","it4","vch","pbegin","pend","b58","it1","it2","toArrayBuffer","preferBinary","_opts","_body","_headers","useFetch","decideMode","_fetchTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","headersObj","headersList","keyName","signal","controller","_fetchAbortController","requestTimeout","_connect","_response","statusValid","flushHeaders","setNoDelay","setSocketKeepAlive","arrayCopy","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","ucs2decode","extra","ucs2encode","digitToBasic","flag","adapt","numPoints","firstTime","baseMinusTMin","basic","oldi","baseMinusT","inputLength","bias","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","qs","regexp","maxKeys","kstr","vstr","stringifyPrimitive","ks","https","validateParams","endianness","loadavg","uptime","freemem","MAX_VALUE","totalmem","cpus","release","appVersion","networkInterfaces","getNetworkInterfaces","arch","platform","tmpdir","tmpDir","EOL","homedir","ProgressEvent","CookieAccessInfo","Cookie","cookiestr","request_domain","request_path","expiration_date","explicit_path","explicit_domain","noscript","All","freeze","toValueString","cookie_str_splitter","CookieJar","cookies_list","setCookie","collidesWith","getCookie","cookie_name","access_info","getCookies","pair","access_domain","cookie_domain","wildcard","setCookies","successful","baseGet","castPath","toKey","reIsDeepProp","reIsPlainProp","objectProto","nativeObjectToString","isOwn","unmasked","memoizeCapped","rePropName","reEscapeChar","quote","subString","memoize","MapCache","memoized","Cache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","ListCache","hashClear","hashDelete","hashGet","hashHas","hashSet","isMasked","toSource","reIsHostCtor","funcProto","funcToString","reIsNative","coreJsData","maskSrcKey","uid","IE_PROTO","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","assocIndexOf","getMapData","baseToString","arrayMap","symbolProto","symbolToString","iteratee","baseSet","isIndex","customizer","lastIndex","nested","newValue","objValue","baseAssignValue","reIsUint","b2b","b2s","blake2bHex","blake2bInit","blake2bUpdate","blake2bFinal","blake2s","blake2sHex","blake2sInit","blake2sUpdate","blake2sFinal","ADD64AA","o0","ADD64AC","B2B_GET32","B2B_G","ix","iy","x0","y0","xor0","xor1","BLAKE2B_IV32","SIGMA82","blake2bCompress","outlen","B2S_GET32","B2S_G","ROTR32","BLAKE2S_IV","SIGMA","blake2sCompress","API","chromeApi","isBrowser","isSafari","isEDGE","_backend","getBackend","notSupported","u2f","native","ensureSupport","register","ErrorCodes","ErrorNames","makeError","errorCode","metaData","deferPromise","backend","_ensureSupport","registerRequests","signRequests","makeDefault","CANCELLED","OTHER_ERROR","BAD_REQUEST","CONFIGURATION_UNSUPPORTED","DEVICE_INELIGIBLE","TIMEOUT","EXTENSION_ID","MessageTypes","Request","Response","SignRequest","SignResponse","RegisterRequest","RegisterResponse","port_","getMessagePort","chrome","U2F_SIGN_REQUEST","sendMessage","getIframePort_","getChromeRuntimePort_","connect","WrappedChromeRuntimePort_","eventName","onMessage","iframeOrigin","iframe","hasCalledBack","EXTENSION_TIMEOUT_SEC","waitingForPort_","reqCounter_","callbackMap_","getPortSingleton_","responseHandler_","reqId","opt_timeoutSeconds","timeoutSeconds","requestId","U2F_REGISTER_REQUEST","jsx","jsxs"],"mappings":"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,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,GAAGb,EAAEa,EAAE,GAAG,IAAI,EAAEb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,IAAI,IAAIwnK,GAAGznK,EAAE,GAAG,EAAEZ,EAAEa,EAAE,GAAG,GAAGb,EAAEa,EAAE,GAAG,IAAI,EAAEb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,GAAGb,EAAEa,EAAE,GAAG,IAAI,EAAEb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,IAAI,IAAIwnK,GAAGznK,EAAE,GAAG,EAAEZ,EAAEa,EAAE,GAAG,GAAGb,EAAEa,EAAE,GAAG,IAAI,EAAEb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,GAAGb,EAAEa,EAAE,GAAG,IAAI,EAAEb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,IAAI,IAAIwnK,GAAGznK,EAAE,GAAG,EAAEZ,EAAEa,EAAE,GAAG,GAAGb,EAAEa,EAAE,GAAG,IAAI,EAAEb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,GAAGb,EAAEa,EAAE,GAAG,IAAI,EAAEb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,IAAI,IAAIwnK,GAAGznK,EAAE,GAAG,EAAEZ,EAAEa,EAAE,GAAG,GAAGb,EAAEa,EAAE,GAAG,IAAI,EAAEb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,GAAGb,EAAEa,EAAE,GAAG,IAAI,EAAEb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,GAAG,IAAI,IAAIwnK,GAAGznK,EAAE,GAAG,EAAEZ,EAAEa,EAAE,GAAG,GAAGb,EAAEa,EAAE,GAAG,IAAI,EAAEb,EAAEa,EAAE,GAAG,IAAI,GAAGb,EAAEa,EAAE,G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CACE,mEACA,oEAEF,CACE,kEACA,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,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,sEAINp/C,IAAK,CACH+a,IAAK,EACLqkC,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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A,GACA,GACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,GAOO6W,KAAI,SAAU1f,GACnB,OAAW,EAAJA,MAMLyL,EAAI,IAAI+7B,YAAY,IACpB58B,EAAI,IAAI48B,YAAY,IAC1B,SAAS82J,EAAiBrzI,EAAKqR,GAC7B,IAAIz9D,EAAI,EAGR,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAClB4M,EAAE5M,GAAKosD,EAAIzgD,EAAE3L,GACb4M,EAAE5M,EAAI,IAAMu/L,EAAav/L,GAe3B,IAXA4M,EAAE,IAAMA,EAAE,IAAMw/C,EAAIxrD,EACpBgM,EAAE,IAAMA,EAAE,IAAOw/C,EAAIxrD,EAAI,WAIrB68D,IACF7wD,EAAE,KAAOA,EAAE,IACXA,EAAE,KAAOA,EAAE,KAIR5M,EAAI,EAAGA,EAAI,GAAIA,IAClB+L,EAAE/L,GAAK++L,EAAU3yI,EAAI/+C,EAAG,EAAIrN,GAO9B,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAElBg/L,EAAM,EAAG,EAAG,GAAI,GAAIQ,EAAY,GAAJx/L,EAAS,GAAIw/L,EAAY,GAAJx/L,EAAS,IAC1Dg/L,EAA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,EAAES,GAAKT,EAAEhD,GAAI,IAC3BgD,EAAE/L,GAAK+L,EAAE/L,GAAK+L,EAAES,GAAKxB,EACrBe,EAAEG,GAAK8yL,EAAOjzL,EAAEG,GAAKH,EAAE/L,GAAI,GAC3B+L,EAAEhD,GAAKgD,EAAEhD,GAAKgD,EAAEG,GAChBH,EAAES,GAAKwyL,EAAOjzL,EAAES,GAAKT,EAAEhD,GAAI,GAM7B,SAASi2L,EAAQ1+L,EAAG0K,GAClB,OAAQ1K,IAAM0K,EAAM1K,GAAM,GAAK0K,EAIjC,IAAMi0L,EAAa,IAAIn3J,YAAY,CACjC,WACA,WACA,WACA,WACA,WACA,WACA,UACA,aAGIo3J,EAAQ,IAAI/1L,WAAW,CAC3B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,IAII4C,EAA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","file":"static/js/2.7f706534.chunk.js","sourcesContent":["module.exports = require(\"regenerator-runtime\");\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","!function(e){function t(e,t){\"use strict\";var r,a=t.ready.then((function(){function a(){if(0!==r._sodium_init())throw new Error(\"libsodium was not correctly initialized.\");for(var t=[\"crypto_aead_chacha20poly1305_decrypt\",\"crypto_aead_chacha20poly1305_decrypt_detached\",\"crypto_aead_chacha20poly1305_encrypt\",\"crypto_aead_chacha20poly1305_encrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_decrypt\",\"crypto_aead_chacha20poly1305_ietf_decrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_encrypt\",\"crypto_aead_chacha20poly1305_ietf_encrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_keygen\",\"crypto_aead_chacha20poly1305_keygen\",\"crypto_aead_xchacha20poly1305_ietf_decrypt\",\"crypto_aead_xchacha20poly1305_ietf_decrypt_detached\",\"crypto_aead_xchacha20poly1305_ietf_encrypt\",\"crypto_aead_xchacha20poly1305_ietf_encrypt_detached\",\"crypto_aead_xchacha20poly1305_ietf_keygen\",\"crypto_auth\",\"crypto_auth_hmacsha256\",\"crypto_auth_hmacsha256_keygen\",\"crypto_auth_hmacsha256_verify\",\"crypto_auth_hmacsha512\",\"crypto_auth_hmacsha512_keygen\",\"crypto_auth_hmacsha512_verify\",\"crypto_auth_keygen\",\"crypto_auth_verify\",\"crypto_box_beforenm\",\"crypto_box_curve25519xchacha20poly1305_keypair\",\"crypto_box_curve25519xchacha20poly1305_seal\",\"crypto_box_curve25519xchacha20poly1305_seal_open\",\"crypto_box_detached\",\"crypto_box_easy\",\"crypto_box_easy_afternm\",\"crypto_box_keypair\",\"crypto_box_open_detached\",\"crypto_box_open_easy\",\"crypto_box_open_easy_afternm\",\"crypto_box_seal\",\"crypto_box_seal_open\",\"crypto_box_seed_keypair\",\"crypto_core_ristretto255_add\",\"crypto_core_ristretto255_from_hash\",\"crypto_core_ristretto255_is_valid_point\",\"crypto_core_ristretto255_random\",\"crypto_core_ristretto255_scalar_add\",\"crypto_core_ristretto255_scalar_complement\",\"crypto_core_ristretto255_scalar_invert\",\"crypto_core_ristretto255_scalar_mul\",\"crypto_core_ristretto255_scalar_negate\",\"crypto_core_ristretto255_scalar_random\",\"crypto_core_ristretto255_scalar_reduce\",\"crypto_core_ristretto255_scalar_sub\",\"crypto_core_ristretto255_sub\",\"crypto_generichash\",\"crypto_generichash_blake2b_salt_personal\",\"crypto_generichash_final\",\"crypto_generichash_init\",\"crypto_generichash_keygen\",\"crypto_generichash_update\",\"crypto_hash\",\"crypto_hash_sha256\",\"crypto_hash_sha256_final\",\"crypto_hash_sha256_init\",\"crypto_hash_sha256_update\",\"crypto_hash_sha512\",\"crypto_hash_sha512_final\",\"crypto_hash_sha512_init\",\"crypto_hash_sha512_update\",\"crypto_kdf_derive_from_key\",\"crypto_kdf_keygen\",\"crypto_kx_client_session_keys\",\"crypto_kx_keypair\",\"crypto_kx_seed_keypair\",\"crypto_kx_server_session_keys\",\"crypto_onetimeauth\",\"crypto_onetimeauth_final\",\"crypto_onetimeauth_init\",\"crypto_onetimeauth_keygen\",\"crypto_onetimeauth_update\",\"crypto_onetimeauth_verify\",\"crypto_pwhash\",\"crypto_pwhash_scryptsalsa208sha256\",\"crypto_pwhash_scryptsalsa208sha256_ll\",\"crypto_pwhash_scryptsalsa208sha256_str\",\"crypto_pwhash_scryptsalsa208sha256_str_verify\",\"crypto_pwhash_str\",\"crypto_pwhash_str_needs_rehash\",\"crypto_pwhash_str_verify\",\"crypto_scalarmult\",\"crypto_scalarmult_base\",\"crypto_scalarmult_ristretto255\",\"crypto_scalarmult_ristretto255_base\",\"crypto_secretbox_detached\",\"crypto_secretbox_easy\",\"crypto_secretbox_keygen\",\"crypto_secretbox_open_detached\",\"crypto_secretbox_open_easy\",\"crypto_secretstream_xchacha20poly1305_init_pull\",\"crypto_secretstream_xchacha20poly1305_init_push\",\"crypto_secretstream_xchacha20poly1305_keygen\",\"crypto_secretstream_xchacha20poly1305_pull\",\"crypto_secretstream_xchacha20poly1305_push\",\"crypto_secretstream_xchacha20poly1305_rekey\",\"crypto_shorthash\",\"crypto_shorthash_keygen\",\"crypto_shorthash_siphashx24\",\"crypto_sign\",\"crypto_sign_detached\",\"crypto_sign_ed25519_pk_to_curve25519\",\"crypto_sign_ed25519_sk_to_curve25519\",\"crypto_sign_ed25519_sk_to_pk\",\"crypto_sign_ed25519_sk_to_seed\",\"crypto_sign_final_create\",\"crypto_sign_final_verify\",\"crypto_sign_init\",\"crypto_sign_keypair\",\"crypto_sign_open\",\"crypto_sign_seed_keypair\",\"crypto_sign_update\",\"crypto_sign_verify_detached\",\"crypto_stream_chacha20\",\"crypto_stream_chacha20_ietf_xor\",\"crypto_stream_chacha20_ietf_xor_ic\",\"crypto_stream_chacha20_keygen\",\"crypto_stream_chacha20_xor\",\"crypto_stream_chacha20_xor_ic\",\"crypto_stream_keygen\",\"crypto_stream_xchacha20_keygen\",\"crypto_stream_xchacha20_xor\",\"crypto_stream_xchacha20_xor_ic\",\"randombytes_buf\",\"randombytes_buf_deterministic\",\"randombytes_close\",\"randombytes_random\",\"randombytes_set_implementation\",\"randombytes_stir\",\"randombytes_uniform\",\"sodium_version_string\"],a=[E,x,k,S,T,w,Y,B,A,K,M,I,N,L,U,O,C,R,P,G,X,D,F,V,H,z,j,q,W,J,Q,Z,$,ee,te,re,ae,_e,ne,se,ce,oe,he,pe,ye,ie,le,ue,de,ve,ge,be,fe,me,Ee,xe,ke,Se,Te,we,Ye,Be,Ae,Ke,Me,Ie,Ne,Le,Ue,Oe,Ce,Re,Pe,Ge,Xe,De,Fe,Ve,He,ze,je,qe,We,Je,Qe,Ze,$e,et,tt,rt,at,_t,nt,st,ct,ot,ht,pt,yt,it,lt,ut,dt,vt,gt,bt,ft,mt,Et,xt,kt,St,Tt,wt,Yt,Bt,At,Kt,Mt,It,Nt,Lt,Ut,Ot,Ct,Rt,Pt,Gt,Xt,Dt,Ft,Vt,Ht,zt,jt,qt],_=0;_<a.length;_++)\"function\"==typeof r[\"_\"+t[_]]&&(e[t[_]]=a[_]);var n=[\"SODIUM_LIBRARY_VERSION_MAJOR\",\"SODIUM_LIBRARY_VERSION_MINOR\",\"crypto_aead_chacha20poly1305_ABYTES\",\"crypto_aead_chacha20poly1305_IETF_ABYTES\",\"crypto_aead_chacha20poly1305_IETF_KEYBYTES\",\"crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX\",\"crypto_aead_chacha20poly1305_IETF_NPUBBYTES\",\"crypto_aead_chacha20poly1305_IETF_NSECBYTES\",\"crypto_aead_chacha20poly1305_KEYBYTES\",\"crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX\",\"crypto_aead_chacha20poly1305_NPUBBYTES\",\"crypto_aead_chacha20poly1305_NSECBYTES\",\"crypto_aead_chacha20poly1305_ietf_ABYTES\",\"crypto_aead_chacha20poly1305_ietf_KEYBYTES\",\"crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX\",\"crypto_aead_chacha20poly1305_ietf_NPUBBYTES\",\"crypto_aead_chacha20poly1305_ietf_NSECBYTES\",\"crypto_aead_xchacha20poly1305_IETF_ABYTES\",\"crypto_aead_xchacha20poly1305_IETF_KEYBYTES\",\"crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX\",\"crypto_aead_xchacha20poly1305_IETF_NPUBBYTES\",\"crypto_aead_xchacha20poly1305_IETF_NSECBYTES\",\"crypto_aead_xchacha20poly1305_ietf_ABYTES\",\"crypto_aead_xchacha20poly1305_ietf_KEYBYTES\",\"crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX\",\"crypto_aead_xchacha20poly1305_ietf_NPUBBYTES\",\"crypto_aead_xchacha20poly1305_ietf_NSECBYTES\",\"crypto_auth_BYTES\",\"crypto_auth_KEYBYTES\",\"crypto_auth_hmacsha256_BYTES\",\"crypto_auth_hmacsha256_KEYBYTES\",\"crypto_auth_hmacsha512256_BYTES\",\"crypto_auth_hmacsha512256_KEYBYTES\",\"crypto_auth_hmacsha512_BYTES\",\"crypto_auth_hmacsha512_KEYBYTES\",\"crypto_box_BEFORENMBYTES\",\"crypto_box_MACBYTES\",\"crypto_box_MESSAGEBYTES_MAX\",\"crypto_box_NONCEBYTES\",\"crypto_box_PUBLICKEYBYTES\",\"crypto_box_SEALBYTES\",\"crypto_box_SECRETKEYBYTES\",\"crypto_box_SEEDBYTES\",\"crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES\",\"crypto_box_curve25519xchacha20poly1305_MACBYTES\",\"crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX\",\"crypto_box_curve25519xchacha20poly1305_NONCEBYTES\",\"crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES\",\"crypto_box_curve25519xchacha20poly1305_SEALBYTES\",\"crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES\",\"crypto_box_curve25519xchacha20poly1305_SEEDBYTES\",\"crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES\",\"crypto_box_curve25519xsalsa20poly1305_MACBYTES\",\"crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX\",\"crypto_box_curve25519xsalsa20poly1305_NONCEBYTES\",\"crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES\",\"crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES\",\"crypto_box_curve25519xsalsa20poly1305_SEEDBYTES\",\"crypto_core_ed25519_BYTES\",\"crypto_core_ed25519_HASHBYTES\",\"crypto_core_ed25519_NONREDUCEDSCALARBYTES\",\"crypto_core_ed25519_SCALARBYTES\",\"crypto_core_ed25519_UNIFORMBYTES\",\"crypto_core_hchacha20_CONSTBYTES\",\"crypto_core_hchacha20_INPUTBYTES\",\"crypto_core_hchacha20_KEYBYTES\",\"crypto_core_hchacha20_OUTPUTBYTES\",\"crypto_core_hsalsa20_CONSTBYTES\",\"crypto_core_hsalsa20_INPUTBYTES\",\"crypto_core_hsalsa20_KEYBYTES\",\"crypto_core_hsalsa20_OUTPUTBYTES\",\"crypto_core_ristretto255_BYTES\",\"crypto_core_ristretto255_HASHBYTES\",\"crypto_core_ristretto255_NONREDUCEDSCALARBYTES\",\"crypto_core_ristretto255_SCALARBYTES\",\"crypto_core_salsa2012_CONSTBYTES\",\"crypto_core_salsa2012_INPUTBYTES\",\"crypto_core_salsa2012_KEYBYTES\",\"crypto_core_salsa2012_OUTPUTBYTES\",\"crypto_core_salsa20_CONSTBYTES\",\"crypto_core_salsa20_INPUTBYTES\",\"crypto_core_salsa20_KEYBYTES\",\"crypto_core_salsa20_OUTPUTBYTES\",\"crypto_generichash_BYTES\",\"crypto_generichash_BYTES_MAX\",\"crypto_generichash_BYTES_MIN\",\"crypto_generichash_KEYBYTES\",\"crypto_generichash_KEYBYTES_MAX\",\"crypto_generichash_KEYBYTES_MIN\",\"crypto_generichash_blake2b_BYTES\",\"crypto_generichash_blake2b_BYTES_MAX\",\"crypto_generichash_blake2b_BYTES_MIN\",\"crypto_generichash_blake2b_KEYBYTES\",\"crypto_generichash_blake2b_KEYBYTES_MAX\",\"crypto_generichash_blake2b_KEYBYTES_MIN\",\"crypto_generichash_blake2b_PERSONALBYTES\",\"crypto_generichash_blake2b_SALTBYTES\",\"crypto_hash_BYTES\",\"crypto_hash_sha256_BYTES\",\"crypto_hash_sha512_BYTES\",\"crypto_kdf_BYTES_MAX\",\"crypto_kdf_BYTES_MIN\",\"crypto_kdf_CONTEXTBYTES\",\"crypto_kdf_KEYBYTES\",\"crypto_kdf_blake2b_BYTES_MAX\",\"crypto_kdf_blake2b_BYTES_MIN\",\"crypto_kdf_blake2b_CONTEXTBYTES\",\"crypto_kdf_blake2b_KEYBYTES\",\"crypto_kx_PUBLICKEYBYTES\",\"crypto_kx_SECRETKEYBYTES\",\"crypto_kx_SEEDBYTES\",\"crypto_kx_SESSIONKEYBYTES\",\"crypto_onetimeauth_BYTES\",\"crypto_onetimeauth_KEYBYTES\",\"crypto_onetimeauth_poly1305_BYTES\",\"crypto_onetimeauth_poly1305_KEYBYTES\",\"crypto_pwhash_ALG_ARGON2I13\",\"crypto_pwhash_ALG_ARGON2ID13\",\"crypto_pwhash_ALG_DEFAULT\",\"crypto_pwhash_BYTES_MAX\",\"crypto_pwhash_BYTES_MIN\",\"crypto_pwhash_MEMLIMIT_INTERACTIVE\",\"crypto_pwhash_MEMLIMIT_MAX\",\"crypto_pwhash_MEMLIMIT_MIN\",\"crypto_pwhash_MEMLIMIT_MODERATE\",\"crypto_pwhash_MEMLIMIT_SENSITIVE\",\"crypto_pwhash_OPSLIMIT_INTERACTIVE\",\"crypto_pwhash_OPSLIMIT_MAX\",\"crypto_pwhash_OPSLIMIT_MIN\",\"crypto_pwhash_OPSLIMIT_MODERATE\",\"crypto_pwhash_OPSLIMIT_SENSITIVE\",\"crypto_pwhash_PASSWD_MAX\",\"crypto_pwhash_PASSWD_MIN\",\"crypto_pwhash_SALTBYTES\",\"crypto_pwhash_STRBYTES\",\"crypto_pwhash_argon2i_BYTES_MAX\",\"crypto_pwhash_argon2i_BYTES_MIN\",\"crypto_pwhash_argon2i_SALTBYTES\",\"crypto_pwhash_argon2i_STRBYTES\",\"crypto_pwhash_argon2id_BYTES_MAX\",\"crypto_pwhash_argon2id_BYTES_MIN\",\"crypto_pwhash_argon2id_SALTBYTES\",\"crypto_pwhash_argon2id_STRBYTES\",\"crypto_pwhash_scryptsalsa208sha256_BYTES_MAX\",\"crypto_pwhash_scryptsalsa208sha256_BYTES_MIN\",\"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE\",\"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX\",\"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN\",\"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE\",\"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE\",\"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX\",\"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN\",\"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE\",\"crypto_pwhash_scryptsalsa208sha256_SALTBYTES\",\"crypto_pwhash_scryptsalsa208sha256_STRBYTES\",\"crypto_scalarmult_BYTES\",\"crypto_scalarmult_SCALARBYTES\",\"crypto_scalarmult_curve25519_BYTES\",\"crypto_scalarmult_curve25519_SCALARBYTES\",\"crypto_scalarmult_ed25519_BYTES\",\"crypto_scalarmult_ed25519_SCALARBYTES\",\"crypto_scalarmult_ristretto255_BYTES\",\"crypto_scalarmult_ristretto255_SCALARBYTES\",\"crypto_secretbox_KEYBYTES\",\"crypto_secretbox_MACBYTES\",\"crypto_secretbox_MESSAGEBYTES_MAX\",\"crypto_secretbox_NONCEBYTES\",\"crypto_secretbox_xchacha20poly1305_KEYBYTES\",\"crypto_secretbox_xchacha20poly1305_MACBYTES\",\"crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX\",\"crypto_secretbox_xchacha20poly1305_NONCEBYTES\",\"crypto_secretbox_xsalsa20poly1305_KEYBYTES\",\"crypto_secretbox_xsalsa20poly1305_MACBYTES\",\"crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX\",\"crypto_secretbox_xsalsa20poly1305_NONCEBYTES\",\"crypto_secretstream_xchacha20poly1305_ABYTES\",\"crypto_secretstream_xchacha20poly1305_HEADERBYTES\",\"crypto_secretstream_xchacha20poly1305_KEYBYTES\",\"crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX\",\"crypto_secretstream_xchacha20poly1305_NPUBBYTES\",\"crypto_secretstream_xchacha20poly1305_TAG_FINAL\",\"crypto_secretstream_xchacha20poly1305_TAG_MESSAGE\",\"crypto_secretstream_xchacha20poly1305_TAG_PUSH\",\"crypto_secretstream_xchacha20poly1305_TAG_REKEY\",\"crypto_shorthash_BYTES\",\"crypto_shorthash_KEYBYTES\",\"crypto_shorthash_siphash24_BYTES\",\"crypto_shorthash_siphash24_KEYBYTES\",\"crypto_shorthash_siphashx24_BYTES\",\"crypto_shorthash_siphashx24_KEYBYTES\",\"crypto_sign_BYTES\",\"crypto_sign_MESSAGEBYTES_MAX\",\"crypto_sign_PUBLICKEYBYTES\",\"crypto_sign_SECRETKEYBYTES\",\"crypto_sign_SEEDBYTES\",\"crypto_sign_ed25519_BYTES\",\"crypto_sign_ed25519_MESSAGEBYTES_MAX\",\"crypto_sign_ed25519_PUBLICKEYBYTES\",\"crypto_sign_ed25519_SECRETKEYBYTES\",\"crypto_sign_ed25519_SEEDBYTES\",\"crypto_stream_KEYBYTES\",\"crypto_stream_MESSAGEBYTES_MAX\",\"crypto_stream_NONCEBYTES\",\"crypto_stream_chacha20_IETF_KEYBYTES\",\"crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX\",\"crypto_stream_chacha20_IETF_NONCEBYTES\",\"crypto_stream_chacha20_KEYBYTES\",\"crypto_stream_chacha20_MESSAGEBYTES_MAX\",\"crypto_stream_chacha20_NONCEBYTES\",\"crypto_stream_chacha20_ietf_KEYBYTES\",\"crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX\",\"crypto_stream_chacha20_ietf_NONCEBYTES\",\"crypto_stream_salsa2012_KEYBYTES\",\"crypto_stream_salsa2012_MESSAGEBYTES_MAX\",\"crypto_stream_salsa2012_NONCEBYTES\",\"crypto_stream_salsa208_KEYBYTES\",\"crypto_stream_salsa208_MESSAGEBYTES_MAX\",\"crypto_stream_salsa208_NONCEBYTES\",\"crypto_stream_salsa20_KEYBYTES\",\"crypto_stream_salsa20_MESSAGEBYTES_MAX\",\"crypto_stream_salsa20_NONCEBYTES\",\"crypto_stream_xchacha20_KEYBYTES\",\"crypto_stream_xchacha20_MESSAGEBYTES_MAX\",\"crypto_stream_xchacha20_NONCEBYTES\",\"crypto_stream_xsalsa20_KEYBYTES\",\"crypto_stream_xsalsa20_MESSAGEBYTES_MAX\",\"crypto_stream_xsalsa20_NONCEBYTES\",\"crypto_verify_16_BYTES\",\"crypto_verify_32_BYTES\",\"crypto_verify_64_BYTES\"];for(_=0;_<n.length;_++)\"function\"==typeof(c=r[\"_\"+n[_].toLowerCase()])&&(e[n[_]]=c());var s=[\"SODIUM_VERSION_STRING\",\"crypto_pwhash_STRPREFIX\",\"crypto_pwhash_scryptsalsa208sha256_STRPREFIX\"];for(_=0;_<s.length;_++){var c;\"function\"==typeof(c=r[\"_\"+s[_].toLowerCase()])&&(e[s[_]]=r.UTF8ToString(c()))}}r=t;try{a();var _=new Uint8Array([98,97,108,108,115]),n=e.randombytes_buf(e.crypto_secretbox_NONCEBYTES),s=e.randombytes_buf(e.crypto_secretbox_KEYBYTES),c=e.crypto_secretbox_easy(_,n,s),o=e.crypto_secretbox_open_easy(c,n,s);if(e.memcmp(_,o))return}catch(e){if(null==r.useBackupModule)throw new Error(\"Both wasm and asm failed to load\"+e)}r.useBackupModule(),a()}));function _(e){if(\"function\"==typeof TextEncoder)return(new TextEncoder).encode(e);e=unescape(encodeURIComponent(e));for(var t=new Uint8Array(e.length),r=0,a=e.length;r<a;r++)t[r]=e.charCodeAt(r);return t}function n(e){if(\"function\"==typeof TextDecoder)return new TextDecoder(\"utf-8\",{fatal:!0}).decode(e);var t=Math.ceil(e.length/8192);if(t<=1)try{return decodeURIComponent(escape(String.fromCharCode.apply(null,e)))}catch(e){throw new TypeError(\"The encoded data was not valid.\")}for(var r=\"\",a=0,_=0;_<t;_++){var s=Array.prototype.slice.call(e,8192*_+a,8192*(_+1)+a);if(0!=s.length){var c,o=s.length,h=0;do{var p=s[--o];p>=240?(h=4,c=!0):p>=224?(h=3,c=!0):p>=192?(h=2,c=!0):p<128&&(h=1,c=!0)}while(!c);for(var y=h-(s.length-o),i=0;i<y;i++)a--,s.pop();r+=n(s)}}return r}function s(e){e=m(null,e,\"input\");for(var t,r,a,_=\"\",n=0;n<e.length;n++)a=87+(r=15&e[n])+(r-10>>8&-39)<<8|87+(t=e[n]>>>4)+(t-10>>8&-39),_+=String.fromCharCode(255&a)+String.fromCharCode(a>>>8);return _}var c={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function o(e){if(null==e)return c.URLSAFE_NO_PADDING;if(e!==c.ORIGINAL&&e!==c.ORIGINAL_NO_PADDING&&e!==c.URLSAFE&&e!=c.URLSAFE_NO_PADDING)throw new Error(\"unsupported base64 variant\");return e}function h(e,t){t=o(t),e=m(_,e,\"input\");var a,_=[],s=0|Math.floor(e.length/3),c=e.length-3*s,h=4*s+(0!==c?0==(2&t)?4:2+(c>>>1):0),p=new l(h+1),y=u(e);return _.push(y),_.push(p.address),0===r._sodium_bin2base64(p.address,p.length,y,e.length,t)&&g(_,\"conversion failed\"),p.length=h,a=n(p.to_Uint8Array()),v(_),a}function p(e,t){var r=t||\"uint8array\";if(!y(r))throw new Error(r+\" output format is not available\");if(e instanceof l){if(\"uint8array\"===r)return e.to_Uint8Array();if(\"text\"===r)return n(e.to_Uint8Array());if(\"hex\"===r)return s(e.to_Uint8Array());if(\"base64\"===r)return h(e.to_Uint8Array(),c.URLSAFE_NO_PADDING);throw new Error('What is output format \"'+r+'\"?')}if(\"object\"==typeof e){for(var a=Object.keys(e),_={},o=0;o<a.length;o++)_[a[o]]=p(e[a[o]],r);return _}if(\"string\"==typeof e)return e;throw new TypeError(\"Cannot format output\")}function y(e){for(var t=[\"uint8array\",\"text\",\"hex\",\"base64\"],r=0;r<t.length;r++)if(t[r]===e)return!0;return!1}function i(e){if(e){if(\"string\"!=typeof e)throw new TypeError(\"When defined, the output format must be a string\");if(!y(e))throw new Error(e+\" is not a supported output format\")}}function l(e){this.length=e,this.address=d(e)}function u(e){var t=d(e.length);return r.HEAPU8.set(e,t),t}function d(e){var t=r._malloc(e);if(0===t)throw{message:\"_malloc() failed\",length:e};return t}function v(e){if(e)for(var t=0;t<e.length;t++)a=e[t],r._free(a);var a}function g(e,t){throw v(e),new Error(t)}function b(e,t){throw v(e),new TypeError(t)}function f(e,t,r){null==t&&b(e,r+\" cannot be null or undefined\")}function m(e,t,r){return f(e,t,r),t instanceof Uint8Array?t:\"string\"==typeof t?_(t):void b(e,\"unsupported input type for \"+r)}function E(e,t,a,_,n,s){var c=[];i(s);var o=null;null!=e&&(o=u(e=m(c,e,\"secret_nonce\")),e.length,c.push(o)),t=m(c,t,\"ciphertext\");var h,y=r._crypto_aead_chacha20poly1305_abytes(),d=t.length;d<y&&b(c,\"ciphertext is too short\"),h=u(t),c.push(h);var f=null,E=0;null!=a&&(f=u(a=m(c,a,\"additional_data\")),E=a.length,c.push(f)),_=m(c,_,\"public_nonce\");var x,k=0|r._crypto_aead_chacha20poly1305_npubbytes();_.length!==k&&b(c,\"invalid public_nonce length\"),x=u(_),c.push(x),n=m(c,n,\"key\");var S,T=0|r._crypto_aead_chacha20poly1305_keybytes();n.length!==T&&b(c,\"invalid key length\"),S=u(n),c.push(S);var w=new l(d-r._crypto_aead_chacha20poly1305_abytes()|0),Y=w.address;if(c.push(Y),0===r._crypto_aead_chacha20poly1305_decrypt(Y,null,o,h,d,0,f,E,0,x,S)){var B=p(w,s);return v(c),B}g(c,\"ciphertext cannot be decrypted using that key\")}function x(e,t,a,_,n,s,c){var o=[];i(c);var h=null;null!=e&&(h=u(e=m(o,e,\"secret_nonce\")),e.length,o.push(h));var y=u(t=m(o,t,\"ciphertext\")),d=t.length;o.push(y),a=m(o,a,\"mac\");var f,E=0|r._crypto_box_macbytes();a.length!==E&&b(o,\"invalid mac length\"),f=u(a),o.push(f);var x=null,k=0;null!=_&&(x=u(_=m(o,_,\"additional_data\")),k=_.length,o.push(x)),n=m(o,n,\"public_nonce\");var S,T=0|r._crypto_aead_chacha20poly1305_npubbytes();n.length!==T&&b(o,\"invalid public_nonce length\"),S=u(n),o.push(S),s=m(o,s,\"key\");var w,Y=0|r._crypto_aead_chacha20poly1305_keybytes();s.length!==Y&&b(o,\"invalid key length\"),w=u(s),o.push(w);var B=new l(0|d),A=B.address;if(o.push(A),0===r._crypto_aead_chacha20poly1305_decrypt_detached(A,h,y,d,0,f,x,k,0,S,w)){var K=p(B,c);return v(o),K}g(o,\"ciphertext cannot be decrypted using that key\")}function k(e,t,a,_,n,s){var c=[];i(s);var o=u(e=m(c,e,\"message\")),h=e.length;c.push(o);var y=null,d=0;null!=t&&(y=u(t=m(c,t,\"additional_data\")),d=t.length,c.push(y));var f=null;null!=a&&(f=u(a=m(c,a,\"secret_nonce\")),a.length,c.push(f)),_=m(c,_,\"public_nonce\");var E,x=0|r._crypto_aead_chacha20poly1305_npubbytes();_.length!==x&&b(c,\"invalid public_nonce length\"),E=u(_),c.push(E),n=m(c,n,\"key\");var k,S=0|r._crypto_aead_chacha20poly1305_keybytes();n.length!==S&&b(c,\"invalid key length\"),k=u(n),c.push(k);var T=new l(h+r._crypto_aead_chacha20poly1305_abytes()|0),w=T.address;if(c.push(w),0===r._crypto_aead_chacha20poly1305_encrypt(w,null,o,h,0,y,d,0,f,E,k)){var Y=p(T,s);return v(c),Y}g(c,\"invalid usage\")}function S(e,t,a,_,n,s){var c=[];i(s);var o=u(e=m(c,e,\"message\")),h=e.length;c.push(o);var y=null,d=0;null!=t&&(y=u(t=m(c,t,\"additional_data\")),d=t.length,c.push(y));var f=null;null!=a&&(f=u(a=m(c,a,\"secret_nonce\")),a.length,c.push(f)),_=m(c,_,\"public_nonce\");var E,x=0|r._crypto_aead_chacha20poly1305_npubbytes();_.length!==x&&b(c,\"invalid public_nonce length\"),E=u(_),c.push(E),n=m(c,n,\"key\");var k,S=0|r._crypto_aead_chacha20poly1305_keybytes();n.length!==S&&b(c,\"invalid key length\"),k=u(n),c.push(k);var T=new l(0|h),w=T.address;c.push(w);var Y=new l(0|r._crypto_aead_chacha20poly1305_abytes()),B=Y.address;if(c.push(B),0===r._crypto_aead_chacha20poly1305_encrypt_detached(w,B,null,o,h,0,y,d,0,f,E,k)){var A=p({ciphertext:T,mac:Y},s);return v(c),A}g(c,\"invalid usage\")}function T(e,t,a,_,n,s){var c=[];i(s);var o=null;null!=e&&(o=u(e=m(c,e,\"secret_nonce\")),e.length,c.push(o)),t=m(c,t,\"ciphertext\");var h,y=r._crypto_aead_chacha20poly1305_ietf_abytes(),d=t.length;d<y&&b(c,\"ciphertext is too short\"),h=u(t),c.push(h);var f=null,E=0;null!=a&&(f=u(a=m(c,a,\"additional_data\")),E=a.length,c.push(f)),_=m(c,_,\"public_nonce\");var x,k=0|r._crypto_aead_chacha20poly1305_ietf_npubbytes();_.length!==k&&b(c,\"invalid public_nonce length\"),x=u(_),c.push(x),n=m(c,n,\"key\");var S,T=0|r._crypto_aead_chacha20poly1305_ietf_keybytes();n.length!==T&&b(c,\"invalid key length\"),S=u(n),c.push(S);var w=new l(d-r._crypto_aead_chacha20poly1305_ietf_abytes()|0),Y=w.address;if(c.push(Y),0===r._crypto_aead_chacha20poly1305_ietf_decrypt(Y,null,o,h,d,0,f,E,0,x,S)){var B=p(w,s);return v(c),B}g(c,\"ciphertext cannot be decrypted using that key\")}function w(e,t,a,_,n,s,c){var o=[];i(c);var h=null;null!=e&&(h=u(e=m(o,e,\"secret_nonce\")),e.length,o.push(h));var y=u(t=m(o,t,\"ciphertext\")),d=t.length;o.push(y),a=m(o,a,\"mac\");var f,E=0|r._crypto_box_macbytes();a.length!==E&&b(o,\"invalid mac length\"),f=u(a),o.push(f);var x=null,k=0;null!=_&&(x=u(_=m(o,_,\"additional_data\")),k=_.length,o.push(x)),n=m(o,n,\"public_nonce\");var S,T=0|r._crypto_aead_chacha20poly1305_ietf_npubbytes();n.length!==T&&b(o,\"invalid public_nonce length\"),S=u(n),o.push(S),s=m(o,s,\"key\");var w,Y=0|r._crypto_aead_chacha20poly1305_ietf_keybytes();s.length!==Y&&b(o,\"invalid key length\"),w=u(s),o.push(w);var B=new l(0|d),A=B.address;if(o.push(A),0===r._crypto_aead_chacha20poly1305_ietf_decrypt_detached(A,h,y,d,0,f,x,k,0,S,w)){var K=p(B,c);return v(o),K}g(o,\"ciphertext cannot be decrypted using that key\")}function Y(e,t,a,_,n,s){var c=[];i(s);var o=u(e=m(c,e,\"message\")),h=e.length;c.push(o);var y=null,d=0;null!=t&&(y=u(t=m(c,t,\"additional_data\")),d=t.length,c.push(y));var f=null;null!=a&&(f=u(a=m(c,a,\"secret_nonce\")),a.length,c.push(f)),_=m(c,_,\"public_nonce\");var E,x=0|r._crypto_aead_chacha20poly1305_ietf_npubbytes();_.length!==x&&b(c,\"invalid public_nonce length\"),E=u(_),c.push(E),n=m(c,n,\"key\");var k,S=0|r._crypto_aead_chacha20poly1305_ietf_keybytes();n.length!==S&&b(c,\"invalid key length\"),k=u(n),c.push(k);var T=new l(h+r._crypto_aead_chacha20poly1305_ietf_abytes()|0),w=T.address;if(c.push(w),0===r._crypto_aead_chacha20poly1305_ietf_encrypt(w,null,o,h,0,y,d,0,f,E,k)){var Y=p(T,s);return v(c),Y}g(c,\"invalid usage\")}function B(e,t,a,_,n,s){var c=[];i(s);var o=u(e=m(c,e,\"message\")),h=e.length;c.push(o);var y=null,d=0;null!=t&&(y=u(t=m(c,t,\"additional_data\")),d=t.length,c.push(y));var f=null;null!=a&&(f=u(a=m(c,a,\"secret_nonce\")),a.length,c.push(f)),_=m(c,_,\"public_nonce\");var E,x=0|r._crypto_aead_chacha20poly1305_ietf_npubbytes();_.length!==x&&b(c,\"invalid public_nonce length\"),E=u(_),c.push(E),n=m(c,n,\"key\");var k,S=0|r._crypto_aead_chacha20poly1305_ietf_keybytes();n.length!==S&&b(c,\"invalid key length\"),k=u(n),c.push(k);var T=new l(0|h),w=T.address;c.push(w);var Y=new l(0|r._crypto_aead_chacha20poly1305_ietf_abytes()),B=Y.address;if(c.push(B),0===r._crypto_aead_chacha20poly1305_ietf_encrypt_detached(w,B,null,o,h,0,y,d,0,f,E,k)){var A=p({ciphertext:T,mac:Y},s);return v(c),A}g(c,\"invalid usage\")}function A(e){var t=[];i(e);var a=new l(0|r._crypto_aead_chacha20poly1305_ietf_keybytes()),_=a.address;t.push(_),r._crypto_aead_chacha20poly1305_ietf_keygen(_);var n=p(a,e);return v(t),n}function K(e){var t=[];i(e);var a=new l(0|r._crypto_aead_chacha20poly1305_keybytes()),_=a.address;t.push(_),r._crypto_aead_chacha20poly1305_keygen(_);var n=p(a,e);return v(t),n}function M(e,t,a,_,n,s){var c=[];i(s);var o=null;null!=e&&(o=u(e=m(c,e,\"secret_nonce\")),e.length,c.push(o)),t=m(c,t,\"ciphertext\");var h,y=r._crypto_aead_xchacha20poly1305_ietf_abytes(),d=t.length;d<y&&b(c,\"ciphertext is too short\"),h=u(t),c.push(h);var f=null,E=0;null!=a&&(f=u(a=m(c,a,\"additional_data\")),E=a.length,c.push(f)),_=m(c,_,\"public_nonce\");var x,k=0|r._crypto_aead_xchacha20poly1305_ietf_npubbytes();_.length!==k&&b(c,\"invalid public_nonce length\"),x=u(_),c.push(x),n=m(c,n,\"key\");var S,T=0|r._crypto_aead_xchacha20poly1305_ietf_keybytes();n.length!==T&&b(c,\"invalid key length\"),S=u(n),c.push(S);var w=new l(d-r._crypto_aead_xchacha20poly1305_ietf_abytes()|0),Y=w.address;if(c.push(Y),0===r._crypto_aead_xchacha20poly1305_ietf_decrypt(Y,null,o,h,d,0,f,E,0,x,S)){var B=p(w,s);return v(c),B}g(c,\"ciphertext cannot be decrypted using that key\")}function I(e,t,a,_,n,s,c){var o=[];i(c);var h=null;null!=e&&(h=u(e=m(o,e,\"secret_nonce\")),e.length,o.push(h));var y=u(t=m(o,t,\"ciphertext\")),d=t.length;o.push(y),a=m(o,a,\"mac\");var f,E=0|r._crypto_box_macbytes();a.length!==E&&b(o,\"invalid mac length\"),f=u(a),o.push(f);var x=null,k=0;null!=_&&(x=u(_=m(o,_,\"additional_data\")),k=_.length,o.push(x)),n=m(o,n,\"public_nonce\");var S,T=0|r._crypto_aead_xchacha20poly1305_ietf_npubbytes();n.length!==T&&b(o,\"invalid public_nonce length\"),S=u(n),o.push(S),s=m(o,s,\"key\");var w,Y=0|r._crypto_aead_xchacha20poly1305_ietf_keybytes();s.length!==Y&&b(o,\"invalid key length\"),w=u(s),o.push(w);var B=new l(0|d),A=B.address;if(o.push(A),0===r._crypto_aead_xchacha20poly1305_ietf_decrypt_detached(A,h,y,d,0,f,x,k,0,S,w)){var K=p(B,c);return v(o),K}g(o,\"ciphertext cannot be decrypted using that key\")}function N(e,t,a,_,n,s){var c=[];i(s);var o=u(e=m(c,e,\"message\")),h=e.length;c.push(o);var y=null,d=0;null!=t&&(y=u(t=m(c,t,\"additional_data\")),d=t.length,c.push(y));var f=null;null!=a&&(f=u(a=m(c,a,\"secret_nonce\")),a.length,c.push(f)),_=m(c,_,\"public_nonce\");var E,x=0|r._crypto_aead_xchacha20poly1305_ietf_npubbytes();_.length!==x&&b(c,\"invalid public_nonce length\"),E=u(_),c.push(E),n=m(c,n,\"key\");var k,S=0|r._crypto_aead_xchacha20poly1305_ietf_keybytes();n.length!==S&&b(c,\"invalid key length\"),k=u(n),c.push(k);var T=new l(h+r._crypto_aead_xchacha20poly1305_ietf_abytes()|0),w=T.address;if(c.push(w),0===r._crypto_aead_xchacha20poly1305_ietf_encrypt(w,null,o,h,0,y,d,0,f,E,k)){var Y=p(T,s);return v(c),Y}g(c,\"invalid usage\")}function L(e,t,a,_,n,s){var c=[];i(s);var o=u(e=m(c,e,\"message\")),h=e.length;c.push(o);var y=null,d=0;null!=t&&(y=u(t=m(c,t,\"additional_data\")),d=t.length,c.push(y));var f=null;null!=a&&(f=u(a=m(c,a,\"secret_nonce\")),a.length,c.push(f)),_=m(c,_,\"public_nonce\");var E,x=0|r._crypto_aead_xchacha20poly1305_ietf_npubbytes();_.length!==x&&b(c,\"invalid public_nonce length\"),E=u(_),c.push(E),n=m(c,n,\"key\");var k,S=0|r._crypto_aead_xchacha20poly1305_ietf_keybytes();n.length!==S&&b(c,\"invalid key length\"),k=u(n),c.push(k);var T=new l(0|h),w=T.address;c.push(w);var Y=new l(0|r._crypto_aead_xchacha20poly1305_ietf_abytes()),B=Y.address;if(c.push(B),0===r._crypto_aead_xchacha20poly1305_ietf_encrypt_detached(w,B,null,o,h,0,y,d,0,f,E,k)){var A=p({ciphertext:T,mac:Y},s);return v(c),A}g(c,\"invalid usage\")}function U(e){var t=[];i(e);var a=new l(0|r._crypto_aead_xchacha20poly1305_ietf_keybytes()),_=a.address;t.push(_),r._crypto_aead_xchacha20poly1305_ietf_keygen(_);var n=p(a,e);return v(t),n}function O(e,t,a){var _=[];i(a);var n=u(e=m(_,e,\"message\")),s=e.length;_.push(n),t=m(_,t,\"key\");var c,o=0|r._crypto_auth_keybytes();t.length!==o&&b(_,\"invalid key length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_auth_bytes()),y=h.address;if(_.push(y),0==(0|r._crypto_auth(y,n,s,0,c))){var d=p(h,a);return v(_),d}g(_,\"invalid usage\")}function C(e,t,a){var _=[];i(a);var n=u(e=m(_,e,\"message\")),s=e.length;_.push(n),t=m(_,t,\"key\");var c,o=0|r._crypto_auth_hmacsha256_keybytes();t.length!==o&&b(_,\"invalid key length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_auth_hmacsha256_bytes()),y=h.address;if(_.push(y),0==(0|r._crypto_auth_hmacsha256(y,n,s,0,c))){var d=p(h,a);return v(_),d}g(_,\"invalid usage\")}function R(e){var t=[];i(e);var a=new l(0|r._crypto_auth_hmacsha256_keybytes()),_=a.address;t.push(_),r._crypto_auth_hmacsha256_keygen(_);var n=p(a,e);return v(t),n}function P(e,t,a){var _=[];e=m(_,e,\"tag\");var n,s=0|r._crypto_auth_hmacsha256_bytes();e.length!==s&&b(_,\"invalid tag length\"),n=u(e),_.push(n);var c=u(t=m(_,t,\"message\")),o=t.length;_.push(c),a=m(_,a,\"key\");var h,p=0|r._crypto_auth_hmacsha256_keybytes();a.length!==p&&b(_,\"invalid key length\"),h=u(a),_.push(h);var y=0==(0|r._crypto_auth_hmacsha256_verify(n,c,o,0,h));return v(_),y}function G(e,t,a){var _=[];i(a);var n=u(e=m(_,e,\"message\")),s=e.length;_.push(n),t=m(_,t,\"key\");var c,o=0|r._crypto_auth_hmacsha512_keybytes();t.length!==o&&b(_,\"invalid key length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_auth_hmacsha512_bytes()),y=h.address;if(_.push(y),0==(0|r._crypto_auth_hmacsha512(y,n,s,0,c))){var d=p(h,a);return v(_),d}g(_,\"invalid usage\")}function X(e){var t=[];i(e);var a=new l(0|r._crypto_auth_hmacsha512_keybytes()),_=a.address;t.push(_),r._crypto_auth_hmacsha512_keygen(_);var n=p(a,e);return v(t),n}function D(e,t,a){var _=[];e=m(_,e,\"tag\");var n,s=0|r._crypto_auth_hmacsha512_bytes();e.length!==s&&b(_,\"invalid tag length\"),n=u(e),_.push(n);var c=u(t=m(_,t,\"message\")),o=t.length;_.push(c),a=m(_,a,\"key\");var h,p=0|r._crypto_auth_hmacsha512_keybytes();a.length!==p&&b(_,\"invalid key length\"),h=u(a),_.push(h);var y=0==(0|r._crypto_auth_hmacsha512_verify(n,c,o,0,h));return v(_),y}function F(e){var t=[];i(e);var a=new l(0|r._crypto_auth_keybytes()),_=a.address;t.push(_),r._crypto_auth_keygen(_);var n=p(a,e);return v(t),n}function V(e,t,a){var _=[];e=m(_,e,\"tag\");var n,s=0|r._crypto_auth_bytes();e.length!==s&&b(_,\"invalid tag length\"),n=u(e),_.push(n);var c=u(t=m(_,t,\"message\")),o=t.length;_.push(c),a=m(_,a,\"key\");var h,p=0|r._crypto_auth_keybytes();a.length!==p&&b(_,\"invalid key length\"),h=u(a),_.push(h);var y=0==(0|r._crypto_auth_verify(n,c,o,0,h));return v(_),y}function H(e,t,a){var _=[];i(a),e=m(_,e,\"publicKey\");var n,s=0|r._crypto_box_publickeybytes();e.length!==s&&b(_,\"invalid publicKey length\"),n=u(e),_.push(n),t=m(_,t,\"privateKey\");var c,o=0|r._crypto_box_secretkeybytes();t.length!==o&&b(_,\"invalid privateKey length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_box_beforenmbytes()),y=h.address;if(_.push(y),0==(0|r._crypto_box_beforenm(y,n,c))){var d=p(h,a);return v(_),d}g(_,\"invalid usage\")}function z(e){var t=[];i(e);var a=new l(0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes()),_=a.address;t.push(_);var n=new l(0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes()),s=n.address;t.push(s),r._crypto_box_curve25519xchacha20poly1305_keypair(_,s);var c=p({publicKey:a,privateKey:n,keyType:\"curve25519\"},e);return v(t),c}function j(e,t,a){var _=[];i(a);var n=u(e=m(_,e,\"message\")),s=e.length;_.push(n),t=m(_,t,\"publicKey\");var c,o=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();t.length!==o&&b(_,\"invalid publicKey length\"),c=u(t),_.push(c);var h=new l(s+r._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),y=h.address;_.push(y),r._crypto_box_curve25519xchacha20poly1305_seal(y,n,s,0,c);var d=p(h,a);return v(_),d}function q(e,t,a,_){var n=[];i(_),e=m(n,e,\"ciphertext\");var s,c=r._crypto_box_curve25519xchacha20poly1305_sealbytes(),o=e.length;o<c&&b(n,\"ciphertext is too short\"),s=u(e),n.push(s),t=m(n,t,\"publicKey\");var h,y=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();t.length!==y&&b(n,\"invalid publicKey length\"),h=u(t),n.push(h),a=m(n,a,\"secretKey\");var d,g=0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes();a.length!==g&&b(n,\"invalid secretKey length\"),d=u(a),n.push(d);var f=new l(o-r._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),E=f.address;n.push(E),r._crypto_box_curve25519xchacha20poly1305_seal_open(E,s,o,0,h,d);var x=p(f,_);return v(n),x}function W(e,t,a,_,n){var s=[];i(n);var c=u(e=m(s,e,\"message\")),o=e.length;s.push(c),t=m(s,t,\"nonce\");var h,y=0|r._crypto_box_noncebytes();t.length!==y&&b(s,\"invalid nonce length\"),h=u(t),s.push(h),a=m(s,a,\"publicKey\");var d,f=0|r._crypto_box_publickeybytes();a.length!==f&&b(s,\"invalid publicKey length\"),d=u(a),s.push(d),_=m(s,_,\"privateKey\");var E,x=0|r._crypto_box_secretkeybytes();_.length!==x&&b(s,\"invalid privateKey length\"),E=u(_),s.push(E);var k=new l(0|o),S=k.address;s.push(S);var T=new l(0|r._crypto_box_macbytes()),w=T.address;if(s.push(w),0==(0|r._crypto_box_detached(S,w,c,o,0,h,d,E))){var Y=p({ciphertext:k,mac:T},n);return v(s),Y}g(s,\"invalid usage\")}function J(e,t,a,_,n){var s=[];i(n);var c=u(e=m(s,e,\"message\")),o=e.length;s.push(c),t=m(s,t,\"nonce\");var h,y=0|r._crypto_box_noncebytes();t.length!==y&&b(s,\"invalid nonce length\"),h=u(t),s.push(h),a=m(s,a,\"publicKey\");var d,f=0|r._crypto_box_publickeybytes();a.length!==f&&b(s,\"invalid publicKey length\"),d=u(a),s.push(d),_=m(s,_,\"privateKey\");var E,x=0|r._crypto_box_secretkeybytes();_.length!==x&&b(s,\"invalid privateKey length\"),E=u(_),s.push(E);var k=new l(o+r._crypto_box_macbytes()|0),S=k.address;if(s.push(S),0==(0|r._crypto_box_easy(S,c,o,0,h,d,E))){var T=p(k,n);return v(s),T}g(s,\"invalid usage\")}function Q(e,t,a,_){var n=[];i(_);var s=u(e=m(n,e,\"message\")),c=e.length;n.push(s),t=m(n,t,\"nonce\");var o,h=0|r._crypto_box_noncebytes();t.length!==h&&b(n,\"invalid nonce length\"),o=u(t),n.push(o),a=m(n,a,\"sharedKey\");var y,d=0|r._crypto_box_beforenmbytes();a.length!==d&&b(n,\"invalid sharedKey length\"),y=u(a),n.push(y);var f=new l(c+r._crypto_box_macbytes()|0),E=f.address;if(n.push(E),0==(0|r._crypto_box_easy_afternm(E,s,c,0,o,y))){var x=p(f,_);return v(n),x}g(n,\"invalid usage\")}function Z(e){var t=[];i(e);var a=new l(0|r._crypto_box_publickeybytes()),_=a.address;t.push(_);var n=new l(0|r._crypto_box_secretkeybytes()),s=n.address;if(t.push(s),0==(0|r._crypto_box_keypair(_,s))){var c={publicKey:p(a,e),privateKey:p(n,e),keyType:\"x25519\"};return v(t),c}g(t,\"internal error\")}function $(e,t,a,_,n,s){var c=[];i(s);var o=u(e=m(c,e,\"ciphertext\")),h=e.length;c.push(o),t=m(c,t,\"mac\");var y,d=0|r._crypto_box_macbytes();t.length!==d&&b(c,\"invalid mac length\"),y=u(t),c.push(y),a=m(c,a,\"nonce\");var f,E=0|r._crypto_box_noncebytes();a.length!==E&&b(c,\"invalid nonce length\"),f=u(a),c.push(f),_=m(c,_,\"publicKey\");var x,k=0|r._crypto_box_publickeybytes();_.length!==k&&b(c,\"invalid publicKey length\"),x=u(_),c.push(x),n=m(c,n,\"privateKey\");var S,T=0|r._crypto_box_secretkeybytes();n.length!==T&&b(c,\"invalid privateKey length\"),S=u(n),c.push(S);var w=new l(0|h),Y=w.address;if(c.push(Y),0==(0|r._crypto_box_open_detached(Y,o,y,h,0,f,x,S))){var B=p(w,s);return v(c),B}g(c,\"incorrect key pair for the given ciphertext\")}function ee(e,t,a,_,n){var s=[];i(n),e=m(s,e,\"ciphertext\");var c,o=r._crypto_box_macbytes(),h=e.length;h<o&&b(s,\"ciphertext is too short\"),c=u(e),s.push(c),t=m(s,t,\"nonce\");var y,d=0|r._crypto_box_noncebytes();t.length!==d&&b(s,\"invalid nonce length\"),y=u(t),s.push(y),a=m(s,a,\"publicKey\");var f,E=0|r._crypto_box_publickeybytes();a.length!==E&&b(s,\"invalid publicKey length\"),f=u(a),s.push(f),_=m(s,_,\"privateKey\");var x,k=0|r._crypto_box_secretkeybytes();_.length!==k&&b(s,\"invalid privateKey length\"),x=u(_),s.push(x);var S=new l(h-r._crypto_box_macbytes()|0),T=S.address;if(s.push(T),0==(0|r._crypto_box_open_easy(T,c,h,0,y,f,x))){var w=p(S,n);return v(s),w}g(s,\"incorrect key pair for the given ciphertext\")}function te(e,t,a,_){var n=[];i(_);var s=u(e=m(n,e,\"ciphertext\")),c=e.length;n.push(s),t=m(n,t,\"nonce\");var o,h=0|r._crypto_box_noncebytes();t.length!==h&&b(n,\"invalid nonce length\"),o=u(t),n.push(o),a=m(n,a,\"sharedKey\");var y,d=0|r._crypto_box_beforenmbytes();a.length!==d&&b(n,\"invalid sharedKey length\"),y=u(a),n.push(y);var f=new l(c-r._crypto_box_macbytes()|0),E=f.address;if(n.push(E),0==(0|r._crypto_box_open_easy_afternm(E,s,c,0,o,y))){var x=p(f,_);return v(n),x}g(n,\"incorrect secret key for the given ciphertext\")}function re(e,t,a){var _=[];i(a);var n=u(e=m(_,e,\"message\")),s=e.length;_.push(n),t=m(_,t,\"publicKey\");var c,o=0|r._crypto_box_publickeybytes();t.length!==o&&b(_,\"invalid publicKey length\"),c=u(t),_.push(c);var h=new l(s+r._crypto_box_sealbytes()|0),y=h.address;if(_.push(y),0==(0|r._crypto_box_seal(y,n,s,0,c))){var d=p(h,a);return v(_),d}g(_,\"invalid usage\")}function ae(e,t,a,_){var n=[];i(_),e=m(n,e,\"ciphertext\");var s,c=r._crypto_box_sealbytes(),o=e.length;o<c&&b(n,\"ciphertext is too short\"),s=u(e),n.push(s),t=m(n,t,\"publicKey\");var h,y=0|r._crypto_box_publickeybytes();t.length!==y&&b(n,\"invalid publicKey length\"),h=u(t),n.push(h),a=m(n,a,\"privateKey\");var d,f=0|r._crypto_box_secretkeybytes();a.length!==f&&b(n,\"invalid privateKey length\"),d=u(a),n.push(d);var E=new l(o-r._crypto_box_sealbytes()|0),x=E.address;if(n.push(x),0==(0|r._crypto_box_seal_open(x,s,o,0,h,d))){var k=p(E,_);return v(n),k}g(n,\"incorrect key pair for the given ciphertext\")}function _e(e,t){var a=[];i(t),e=m(a,e,\"seed\");var _,n=0|r._crypto_box_seedbytes();e.length!==n&&b(a,\"invalid seed length\"),_=u(e),a.push(_);var s=new l(0|r._crypto_box_publickeybytes()),c=s.address;a.push(c);var o=new l(0|r._crypto_box_secretkeybytes()),h=o.address;if(a.push(h),0==(0|r._crypto_box_seed_keypair(c,h,_))){var y={publicKey:p(s,t),privateKey:p(o,t),keyType:\"x25519\"};return v(a),y}g(a,\"invalid usage\")}function ne(e,t,a){var _=[];i(a),e=m(_,e,\"p\");var n,s=0|r._crypto_core_ristretto255_bytes();e.length!==s&&b(_,\"invalid p length\"),n=u(e),_.push(n),t=m(_,t,\"q\");var c,o=0|r._crypto_core_ristretto255_bytes();t.length!==o&&b(_,\"invalid q length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_core_ristretto255_bytes()),y=h.address;if(_.push(y),0==(0|r._crypto_core_ristretto255_add(y,n,c))){var d=p(h,a);return v(_),d}g(_,\"inputs is invalid element\")}function se(e,t){var a=[];i(t);var _=u(e=m(a,e,\"r\"));e.length,a.push(_);var n=new l(0|r._crypto_core_ristretto255_bytes()),s=n.address;if(a.push(s),0==(0|r._crypto_core_ristretto255_from_hash(s,_))){var c=p(n,t);return v(a),c}g(a,\"invalid usage\")}function ce(e,t){var a=[];i(t);var _=u(e=m(a,e,\"point\"));e.length,a.push(_);var n=1==(0|r._crypto_core_ristretto255_is_valid_point(_));return v(a),n}function oe(e){var t=[];i(e);var a=new l(0|r._crypto_core_ristretto255_bytes()),_=a.address;t.push(_),r._crypto_core_ristretto255_random(_);var n=p(a,e);return v(t),n}function he(e,t,a){var _=[];i(a),e=m(_,e,\"x\");var n,s=0|r._crypto_core_ristretto255_scalarbytes();e.length!==s&&b(_,\"invalid x length\"),n=u(e),_.push(n),t=m(_,t,\"y\");var c,o=0|r._crypto_core_ristretto255_scalarbytes();t.length!==o&&b(_,\"invalid y length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_core_ristretto255_scalarbytes()),y=h.address;_.push(y),r._crypto_core_ristretto255_scalar_add(y,n,c);var d=p(h,a);return v(_),d}function pe(e,t){var a=[];i(t);var _=u(e=m(a,e,\"s\"));e.length,a.push(_);var n=new l(0|r._crypto_core_ristretto255_scalarbytes()),s=n.address;a.push(s),r._crypto_core_ristretto255_scalar_complement(s,_);var c=p(n,t);return v(a),c}function ye(e,t){var a=[];i(t);var _=u(e=m(a,e,\"s\"));e.length,a.push(_);var n=new l(0|r._crypto_core_ristretto255_scalarbytes()),s=n.address;if(a.push(s),0==(0|r._crypto_core_ristretto255_scalar_invert(s,_))){var c=p(n,t);return v(a),c}g(a,\"invalid reciprocate\")}function ie(e,t,a){var _=[];i(a),e=m(_,e,\"x\");var n,s=0|r._crypto_core_ristretto255_scalarbytes();e.length!==s&&b(_,\"invalid x length\"),n=u(e),_.push(n),t=m(_,t,\"y\");var c,o=0|r._crypto_core_ristretto255_scalarbytes();t.length!==o&&b(_,\"invalid y length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_core_ristretto255_scalarbytes()),y=h.address;_.push(y),r._crypto_core_ristretto255_scalar_mul(y,n,c);var d=p(h,a);return v(_),d}function le(e,t){var a=[];i(t);var _=u(e=m(a,e,\"s\"));e.length,a.push(_);var n=new l(0|r._crypto_core_ristretto255_scalarbytes()),s=n.address;a.push(s),r._crypto_core_ristretto255_scalar_negate(s,_);var c=p(n,t);return v(a),c}function ue(e){var t=[];i(e);var a=new l(0|r._crypto_core_ristretto255_scalarbytes()),_=a.address;t.push(_),r._crypto_core_ristretto255_random(_);var n=p(a,e);return v(t),n}function de(e,t){var a=[];i(t);var _=u(e=m(a,e,\"sample\"));e.length,a.push(_);var n=new l(0|r._crypto_core_ristretto255_scalarbytes()),s=n.address;a.push(s),r._crypto_core_ristretto255_scalar_reduce(s,_);var c=p(n,t);return v(a),c}function ve(e,t,a){var _=[];i(a),e=m(_,e,\"x\");var n,s=0|r._crypto_core_ristretto255_scalarbytes();e.length!==s&&b(_,\"invalid x length\"),n=u(e),_.push(n),t=m(_,t,\"y\");var c,o=0|r._crypto_core_ristretto255_scalarbytes();t.length!==o&&b(_,\"invalid y length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_core_ristretto255_scalarbytes()),y=h.address;_.push(y),r._crypto_core_ristretto255_scalar_sub(y,n,c);var d=p(h,a);return v(_),d}function ge(e,t,a){var _=[];i(a),e=m(_,e,\"p\");var n,s=0|r._crypto_core_ristretto255_bytes();e.length!==s&&b(_,\"invalid p length\"),n=u(e),_.push(n),t=m(_,t,\"q\");var c,o=0|r._crypto_core_ristretto255_bytes();t.length!==o&&b(_,\"invalid q length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_core_ristretto255_bytes()),y=h.address;if(_.push(y),0==(0|r._crypto_core_ristretto255_sub(y,n,c))){var d=p(h,a);return v(_),d}g(_,\"inputs is invalid element\")}function be(e,t,a,_){var n=[];i(_),f(n,e,\"hash_length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&b(n,\"hash_length must be an unsigned integer\");var s=u(t=m(n,t,\"message\")),c=t.length;n.push(s);var o=null,h=0;null!=a&&(o=u(a=m(n,a,\"key\")),h=a.length,n.push(o));var y=new l(e|=0),d=y.address;if(n.push(d),0==(0|r._crypto_generichash(d,e,s,c,0,o,h))){var E=p(y,_);return v(n),E}g(n,\"invalid usage\")}function fe(e,t,a,_,n){var s=[];i(n),f(s,e,\"subkey_len\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&b(s,\"subkey_len must be an unsigned integer\");var c=null,o=0;null!=t&&(c=u(t=m(s,t,\"key\")),o=t.length,s.push(c)),a=m(s,a,\"id\");var h,y=0|r._crypto_generichash_blake2b_saltbytes();a.length!==y&&b(s,\"invalid id length\"),h=u(a),s.push(h),_=m(s,_,\"ctx\");var d,E=0|r._crypto_generichash_blake2b_personalbytes();_.length!==E&&b(s,\"invalid ctx length\"),d=u(_),s.push(d);var x=new l(0|e),k=x.address;if(s.push(k),0==(0|r._crypto_generichash_blake2b_salt_personal(k,e,null,0,0,c,o,h,d))){var S=p(x,n);return v(s),S}g(s,\"invalid usage\")}function me(e,t,a){var _=[];i(a),f(_,e,\"state_address\"),f(_,t,\"hash_length\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&b(_,\"hash_length must be an unsigned integer\");var n=new l(t|=0),s=n.address;if(_.push(s),0==(0|r._crypto_generichash_final(e,s,t))){var c=(r._free(e),p(n,a));return v(_),c}g(_,\"invalid usage\")}function Ee(e,t,a){var _=[];i(a);var n=null,s=0;null!=e&&(n=u(e=m(_,e,\"key\")),s=e.length,_.push(n)),f(_,t,\"hash_length\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&b(_,\"hash_length must be an unsigned integer\");var c=new l(357).address;if(0==(0|r._crypto_generichash_init(c,n,s,t))){var o=c;return v(_),o}g(_,\"invalid usage\")}function xe(e){var t=[];i(e);var a=new l(0|r._crypto_generichash_keybytes()),_=a.address;t.push(_),r._crypto_generichash_keygen(_);var n=p(a,e);return v(t),n}function ke(e,t,a){var _=[];i(a),f(_,e,\"state_address\");var n=u(t=m(_,t,\"message_chunk\")),s=t.length;_.push(n),0!=(0|r._crypto_generichash_update(e,n,s))&&g(_,\"invalid usage\"),v(_)}function Se(e,t){var a=[];i(t);var _=u(e=m(a,e,\"message\")),n=e.length;a.push(_);var s=new l(0|r._crypto_hash_bytes()),c=s.address;if(a.push(c),0==(0|r._crypto_hash(c,_,n,0))){var o=p(s,t);return v(a),o}g(a,\"invalid usage\")}function Te(e,t){var a=[];i(t);var _=u(e=m(a,e,\"message\")),n=e.length;a.push(_);var s=new l(0|r._crypto_hash_sha256_bytes()),c=s.address;if(a.push(c),0==(0|r._crypto_hash_sha256(c,_,n,0))){var o=p(s,t);return v(a),o}g(a,\"invalid usage\")}function we(e,t){var a=[];i(t),f(a,e,\"state_address\");var _=new l(0|r._crypto_hash_sha256_bytes()),n=_.address;if(a.push(n),0==(0|r._crypto_hash_sha256_final(e,n))){var s=(r._free(e),p(_,t));return v(a),s}g(a,\"invalid usage\")}function Ye(e){var t=[];i(e);var a=new l(104).address;if(0==(0|r._crypto_hash_sha256_init(a))){var _=a;return v(t),_}g(t,\"invalid usage\")}function Be(e,t,a){var _=[];i(a),f(_,e,\"state_address\");var n=u(t=m(_,t,\"message_chunk\")),s=t.length;_.push(n),0!=(0|r._crypto_hash_sha256_update(e,n,s))&&g(_,\"invalid usage\"),v(_)}function Ae(e,t){var a=[];i(t);var _=u(e=m(a,e,\"message\")),n=e.length;a.push(_);var s=new l(0|r._crypto_hash_sha512_bytes()),c=s.address;if(a.push(c),0==(0|r._crypto_hash_sha512(c,_,n,0))){var o=p(s,t);return v(a),o}g(a,\"invalid usage\")}function Ke(e,t){var a=[];i(t),f(a,e,\"state_address\");var _=new l(0|r._crypto_hash_sha512_bytes()),n=_.address;if(a.push(n),0==(0|r._crypto_hash_sha512_final(e,n))){var s=(r._free(e),p(_,t));return v(a),s}g(a,\"invalid usage\")}function Me(e){var t=[];i(e);var a=new l(208).address;if(0==(0|r._crypto_hash_sha512_init(a))){var _=a;return v(t),_}g(t,\"invalid usage\")}function Ie(e,t,a){var _=[];i(a),f(_,e,\"state_address\");var n=u(t=m(_,t,\"message_chunk\")),s=t.length;_.push(n),0!=(0|r._crypto_hash_sha512_update(e,n,s))&&g(_,\"invalid usage\"),v(_)}function Ne(e,t,a,n,s){var c=[];i(s),f(c,e,\"subkey_len\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&b(c,\"subkey_len must be an unsigned integer\"),f(c,t,\"subkey_id\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&b(c,\"subkey_id must be an unsigned integer\"),\"string\"!=typeof a&&b(c,\"ctx must be a string\"),a=_(a+\"\\0\"),null!=h&&a.length-1!==h&&b(c,\"invalid ctx length\");var o=u(a),h=a.length-1;c.push(o),n=m(c,n,\"key\");var y,d=0|r._crypto_kdf_keybytes();n.length!==d&&b(c,\"invalid key length\"),y=u(n),c.push(y);var g=new l(0|e),E=g.address;c.push(E),r._crypto_kdf_derive_from_key(E,e,t,t>>>24>>>8,o,y);var x=p(g,s);return v(c),x}function Le(e){var t=[];i(e);var a=new l(0|r._crypto_kdf_keybytes()),_=a.address;t.push(_),r._crypto_kdf_keygen(_);var n=p(a,e);return v(t),n}function Ue(e,t,a,_){var n=[];i(_),e=m(n,e,\"clientPublicKey\");var s,c=0|r._crypto_kx_publickeybytes();e.length!==c&&b(n,\"invalid clientPublicKey length\"),s=u(e),n.push(s),t=m(n,t,\"clientSecretKey\");var o,h=0|r._crypto_kx_secretkeybytes();t.length!==h&&b(n,\"invalid clientSecretKey length\"),o=u(t),n.push(o),a=m(n,a,\"serverPublicKey\");var y,d=0|r._crypto_kx_publickeybytes();a.length!==d&&b(n,\"invalid serverPublicKey length\"),y=u(a),n.push(y);var f=new l(0|r._crypto_kx_sessionkeybytes()),E=f.address;n.push(E);var x=new l(0|r._crypto_kx_sessionkeybytes()),k=x.address;if(n.push(k),0==(0|r._crypto_kx_client_session_keys(E,k,s,o,y))){var S=p({sharedRx:f,sharedTx:x},_);return v(n),S}g(n,\"invalid usage\")}function Oe(e){var t=[];i(e);var a=new l(0|r._crypto_kx_publickeybytes()),_=a.address;t.push(_);var n=new l(0|r._crypto_kx_secretkeybytes()),s=n.address;if(t.push(s),0==(0|r._crypto_kx_keypair(_,s))){var c={publicKey:p(a,e),privateKey:p(n,e),keyType:\"x25519\"};return v(t),c}g(t,\"internal error\")}function Ce(e,t){var a=[];i(t),e=m(a,e,\"seed\");var _,n=0|r._crypto_kx_seedbytes();e.length!==n&&b(a,\"invalid seed length\"),_=u(e),a.push(_);var s=new l(0|r._crypto_kx_publickeybytes()),c=s.address;a.push(c);var o=new l(0|r._crypto_kx_secretkeybytes()),h=o.address;if(a.push(h),0==(0|r._crypto_kx_seed_keypair(c,h,_))){var y={publicKey:p(s,t),privateKey:p(o,t),keyType:\"x25519\"};return v(a),y}g(a,\"internal error\")}function Re(e,t,a,_){var n=[];i(_),e=m(n,e,\"serverPublicKey\");var s,c=0|r._crypto_kx_publickeybytes();e.length!==c&&b(n,\"invalid serverPublicKey length\"),s=u(e),n.push(s),t=m(n,t,\"serverSecretKey\");var o,h=0|r._crypto_kx_secretkeybytes();t.length!==h&&b(n,\"invalid serverSecretKey length\"),o=u(t),n.push(o),a=m(n,a,\"clientPublicKey\");var y,d=0|r._crypto_kx_publickeybytes();a.length!==d&&b(n,\"invalid clientPublicKey length\"),y=u(a),n.push(y);var f=new l(0|r._crypto_kx_sessionkeybytes()),E=f.address;n.push(E);var x=new l(0|r._crypto_kx_sessionkeybytes()),k=x.address;if(n.push(k),0==(0|r._crypto_kx_server_session_keys(E,k,s,o,y))){var S=p({sharedRx:f,sharedTx:x},_);return v(n),S}g(n,\"invalid usage\")}function Pe(e,t,a){var _=[];i(a);var n=u(e=m(_,e,\"message\")),s=e.length;_.push(n),t=m(_,t,\"key\");var c,o=0|r._crypto_onetimeauth_keybytes();t.length!==o&&b(_,\"invalid key length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_onetimeauth_bytes()),y=h.address;if(_.push(y),0==(0|r._crypto_onetimeauth(y,n,s,0,c))){var d=p(h,a);return v(_),d}g(_,\"invalid usage\")}function Ge(e,t){var a=[];i(t),f(a,e,\"state_address\");var _=new l(0|r._crypto_onetimeauth_bytes()),n=_.address;if(a.push(n),0==(0|r._crypto_onetimeauth_final(e,n))){var s=(r._free(e),p(_,t));return v(a),s}g(a,\"invalid usage\")}function Xe(e,t){var a=[];i(t);var _=null;null!=e&&(_=u(e=m(a,e,\"key\")),e.length,a.push(_));var n=new l(144).address;if(0==(0|r._crypto_onetimeauth_init(n,_))){var s=n;return v(a),s}g(a,\"invalid usage\")}function De(e){var t=[];i(e);var a=new l(0|r._crypto_onetimeauth_keybytes()),_=a.address;t.push(_),r._crypto_onetimeauth_keygen(_);var n=p(a,e);return v(t),n}function Fe(e,t,a){var _=[];i(a),f(_,e,\"state_address\");var n=u(t=m(_,t,\"message_chunk\")),s=t.length;_.push(n),0!=(0|r._crypto_onetimeauth_update(e,n,s))&&g(_,\"invalid usage\"),v(_)}function Ve(e,t,a){var _=[];e=m(_,e,\"hash\");var n,s=0|r._crypto_onetimeauth_bytes();e.length!==s&&b(_,\"invalid hash length\"),n=u(e),_.push(n);var c=u(t=m(_,t,\"message\")),o=t.length;_.push(c),a=m(_,a,\"key\");var h,p=0|r._crypto_onetimeauth_keybytes();a.length!==p&&b(_,\"invalid key length\"),h=u(a),_.push(h);var y=0==(0|r._crypto_onetimeauth_verify(n,c,o,0,h));return v(_),y}function He(e,t,a,_,n,s,c){var o=[];i(c),f(o,e,\"keyLength\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&b(o,\"keyLength must be an unsigned integer\");var h=u(t=m(o,t,\"password\")),y=t.length;o.push(h),a=m(o,a,\"salt\");var d,E=0|r._crypto_pwhash_saltbytes();a.length!==E&&b(o,\"invalid salt length\"),d=u(a),o.push(d),f(o,_,\"opsLimit\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&b(o,\"opsLimit must be an unsigned integer\"),f(o,n,\"memLimit\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&b(o,\"memLimit must be an unsigned integer\"),f(o,s,\"algorithm\"),(\"number\"!=typeof s||(0|s)!==s||s<0)&&b(o,\"algorithm must be an unsigned integer\");var x=new l(0|e),k=x.address;if(o.push(k),0==(0|r._crypto_pwhash(k,e,0,h,y,0,d,_,0,n,s))){var S=p(x,c);return v(o),S}g(o,\"invalid usage\")}function ze(e,t,a,_,n,s){var c=[];i(s),f(c,e,\"keyLength\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&b(c,\"keyLength must be an unsigned integer\");var o=u(t=m(c,t,\"password\")),h=t.length;c.push(o),a=m(c,a,\"salt\");var y,d=0|r._crypto_pwhash_scryptsalsa208sha256_saltbytes();a.length!==d&&b(c,\"invalid salt length\"),y=u(a),c.push(y),f(c,_,\"opsLimit\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&b(c,\"opsLimit must be an unsigned integer\"),f(c,n,\"memLimit\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&b(c,\"memLimit must be an unsigned integer\");var E=new l(0|e),x=E.address;if(c.push(x),0==(0|r._crypto_pwhash_scryptsalsa208sha256(x,e,0,o,h,0,y,_,0,n))){var k=p(E,s);return v(c),k}g(c,\"invalid usage\")}function je(e,t,a,_,n,s,c){var o=[];i(c);var h=u(e=m(o,e,\"password\")),y=e.length;o.push(h);var d=u(t=m(o,t,\"salt\")),E=t.length;o.push(d),f(o,a,\"opsLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&b(o,\"opsLimit must be an unsigned integer\"),f(o,_,\"r\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&b(o,\"r must be an unsigned integer\"),f(o,n,\"p\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&b(o,\"p must be an unsigned integer\"),f(o,s,\"keyLength\"),(\"number\"!=typeof s||(0|s)!==s||s<0)&&b(o,\"keyLength must be an unsigned integer\");var x=new l(0|s),k=x.address;if(o.push(k),0==(0|r._crypto_pwhash_scryptsalsa208sha256_ll(h,y,d,E,a,0,_,n,k,s))){var S=p(x,c);return v(o),S}g(o,\"invalid usage\")}function qe(e,t,a,_){var n=[];i(_);var s=u(e=m(n,e,\"password\")),c=e.length;n.push(s),f(n,t,\"opsLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&b(n,\"opsLimit must be an unsigned integer\"),f(n,a,\"memLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&b(n,\"memLimit must be an unsigned integer\");var o=new l(0|r._crypto_pwhash_scryptsalsa208sha256_strbytes()).address;if(n.push(o),0==(0|r._crypto_pwhash_scryptsalsa208sha256_str(o,s,c,0,t,0,a))){var h=r.UTF8ToString(o);return v(n),h}g(n,\"invalid usage\")}function We(e,t,a){var n=[];i(a),\"string\"!=typeof e&&b(n,\"hashed_password must be a string\"),e=_(e+\"\\0\"),null!=c&&e.length-1!==c&&b(n,\"invalid hashed_password length\");var s=u(e),c=e.length-1;n.push(s);var o=u(t=m(n,t,\"password\")),h=t.length;n.push(o);var p=0==(0|r._crypto_pwhash_scryptsalsa208sha256_str_verify(s,o,h,0));return v(n),p}function Je(e,t,a,_){var n=[];i(_);var s=u(e=m(n,e,\"password\")),c=e.length;n.push(s),f(n,t,\"opsLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&b(n,\"opsLimit must be an unsigned integer\"),f(n,a,\"memLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&b(n,\"memLimit must be an unsigned integer\");var o=new l(0|r._crypto_pwhash_strbytes()).address;if(n.push(o),0==(0|r._crypto_pwhash_str(o,s,c,0,t,0,a))){var h=r.UTF8ToString(o);return v(n),h}g(n,\"invalid usage\")}function Qe(e,t,a,n){var s=[];i(n),\"string\"!=typeof e&&b(s,\"hashed_password must be a string\"),e=_(e+\"\\0\"),null!=o&&e.length-1!==o&&b(s,\"invalid hashed_password length\");var c=u(e),o=e.length-1;s.push(c),f(s,t,\"opsLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&b(s,\"opsLimit must be an unsigned integer\"),f(s,a,\"memLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&b(s,\"memLimit must be an unsigned integer\");var h=0!=(0|r._crypto_pwhash_str_needs_rehash(c,t,0,a));return v(s),h}function Ze(e,t,a){var n=[];i(a),\"string\"!=typeof e&&b(n,\"hashed_password must be a string\"),e=_(e+\"\\0\"),null!=c&&e.length-1!==c&&b(n,\"invalid hashed_password length\");var s=u(e),c=e.length-1;n.push(s);var o=u(t=m(n,t,\"password\")),h=t.length;n.push(o);var p=0==(0|r._crypto_pwhash_str_verify(s,o,h,0));return v(n),p}function $e(e,t,a){var _=[];i(a),e=m(_,e,\"privateKey\");var n,s=0|r._crypto_scalarmult_scalarbytes();e.length!==s&&b(_,\"invalid privateKey length\"),n=u(e),_.push(n),t=m(_,t,\"publicKey\");var c,o=0|r._crypto_scalarmult_scalarbytes();t.length!==o&&b(_,\"invalid publicKey length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_scalarmult_bytes()),y=h.address;if(_.push(y),0==(0|r._crypto_scalarmult(y,n,c))){var d=p(h,a);return v(_),d}g(_,\"weak public key\")}function et(e,t){var a=[];i(t),e=m(a,e,\"privateKey\");var _,n=0|r._crypto_scalarmult_scalarbytes();e.length!==n&&b(a,\"invalid privateKey length\"),_=u(e),a.push(_);var s=new l(0|r._crypto_scalarmult_scalarbytes()),c=s.address;if(a.push(c),0==(0|r._crypto_scalarmult_base(c,_))){var o=p(s,t);return v(a),o}g(a,\"insecure scalar\")}function tt(e,t,a){var _=[];i(a),e=m(_,e,\"scalar\");var n,s=0|r._crypto_scalarmult_ristretto255_scalarbytes();e.length!==s&&b(_,\"invalid scalar length\"),n=u(e),_.push(n),t=m(_,t,\"privateKey\");var c,o=0|r._crypto_scalarmult_ristretto255_bytes();t.length!==o&&b(_,\"invalid privateKey length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_scalarmult_ristretto255_bytes()),y=h.address;if(_.push(y),0==(0|r._crypto_scalarmult_ristretto255(y,n,c))){var d=p(h,a);return v(_),d}g(_,\"input is zero element\")}function rt(e,t){var a=[];i(t);var _=u(e=m(a,e,\"scalar\"));e.length,a.push(_);var n=new l(0|r._crypto_core_ristretto255_bytes()),s=n.address;if(a.push(s),0==(0|r._crypto_scalarmult_ristretto255_base(s,_))){var c=p(n,t);return v(a),c}g(a,\"scalar is 0\")}function at(e,t,a,_){var n=[];i(_);var s=u(e=m(n,e,\"message\")),c=e.length;n.push(s),t=m(n,t,\"nonce\");var o,h=0|r._crypto_secretbox_noncebytes();t.length!==h&&b(n,\"invalid nonce length\"),o=u(t),n.push(o),a=m(n,a,\"key\");var y,d=0|r._crypto_secretbox_keybytes();a.length!==d&&b(n,\"invalid key length\"),y=u(a),n.push(y);var f=new l(0|c),E=f.address;n.push(E);var x=new l(0|r._crypto_secretbox_macbytes()),k=x.address;if(n.push(k),0==(0|r._crypto_secretbox_detached(E,k,s,c,0,o,y))){var S=p({mac:x,cipher:f},_);return v(n),S}g(n,\"invalid usage\")}function _t(e,t,a,_){var n=[];i(_);var s=u(e=m(n,e,\"message\")),c=e.length;n.push(s),t=m(n,t,\"nonce\");var o,h=0|r._crypto_secretbox_noncebytes();t.length!==h&&b(n,\"invalid nonce length\"),o=u(t),n.push(o),a=m(n,a,\"key\");var y,d=0|r._crypto_secretbox_keybytes();a.length!==d&&b(n,\"invalid key length\"),y=u(a),n.push(y);var f=new l(c+r._crypto_secretbox_macbytes()|0),E=f.address;if(n.push(E),0==(0|r._crypto_secretbox_easy(E,s,c,0,o,y))){var x=p(f,_);return v(n),x}g(n,\"invalid usage\")}function nt(e){var t=[];i(e);var a=new l(0|r._crypto_secretbox_keybytes()),_=a.address;t.push(_),r._crypto_secretbox_keygen(_);var n=p(a,e);return v(t),n}function st(e,t,a,_,n){var s=[];i(n);var c=u(e=m(s,e,\"ciphertext\")),o=e.length;s.push(c),t=m(s,t,\"mac\");var h,y=0|r._crypto_secretbox_macbytes();t.length!==y&&b(s,\"invalid mac length\"),h=u(t),s.push(h),a=m(s,a,\"nonce\");var d,f=0|r._crypto_secretbox_noncebytes();a.length!==f&&b(s,\"invalid nonce length\"),d=u(a),s.push(d),_=m(s,_,\"key\");var E,x=0|r._crypto_secretbox_keybytes();_.length!==x&&b(s,\"invalid key length\"),E=u(_),s.push(E);var k=new l(0|o),S=k.address;if(s.push(S),0==(0|r._crypto_secretbox_open_detached(S,c,h,o,0,d,E))){var T=p(k,n);return v(s),T}g(s,\"wrong secret key for the given ciphertext\")}function ct(e,t,a,_){var n=[];i(_),e=m(n,e,\"ciphertext\");var s,c=r._crypto_secretbox_macbytes(),o=e.length;o<c&&b(n,\"ciphertext is too short\"),s=u(e),n.push(s),t=m(n,t,\"nonce\");var h,y=0|r._crypto_secretbox_noncebytes();t.length!==y&&b(n,\"invalid nonce length\"),h=u(t),n.push(h),a=m(n,a,\"key\");var d,f=0|r._crypto_secretbox_keybytes();a.length!==f&&b(n,\"invalid key length\"),d=u(a),n.push(d);var E=new l(o-r._crypto_secretbox_macbytes()|0),x=E.address;if(n.push(x),0==(0|r._crypto_secretbox_open_easy(x,s,o,0,h,d))){var k=p(E,_);return v(n),k}g(n,\"wrong secret key for the given ciphertext\")}function ot(e,t,a){var _=[];i(a),e=m(_,e,\"header\");var n,s=0|r._crypto_secretstream_xchacha20poly1305_headerbytes();e.length!==s&&b(_,\"invalid header length\"),n=u(e),_.push(n),t=m(_,t,\"key\");var c,o=0|r._crypto_secretstream_xchacha20poly1305_keybytes();t.length!==o&&b(_,\"invalid key length\"),c=u(t),_.push(c);var h=new l(52).address;if(0==(0|r._crypto_secretstream_xchacha20poly1305_init_pull(h,n,c))){var p=h;return v(_),p}g(_,\"invalid usage\")}function ht(e,t){var a=[];i(t),e=m(a,e,\"key\");var _,n=0|r._crypto_secretstream_xchacha20poly1305_keybytes();e.length!==n&&b(a,\"invalid key length\"),_=u(e),a.push(_);var s=new l(52).address,c=new l(0|r._crypto_secretstream_xchacha20poly1305_headerbytes()),o=c.address;if(a.push(o),0==(0|r._crypto_secretstream_xchacha20poly1305_init_push(s,o,_))){var h={state:s,header:p(c,t)};return v(a),h}g(a,\"invalid usage\")}function pt(e){var t=[];i(e);var a=new l(0|r._crypto_secretstream_xchacha20poly1305_keybytes()),_=a.address;t.push(_),r._crypto_secretstream_xchacha20poly1305_keygen(_);var n=p(a,e);return v(t),n}function yt(e,t,a,_){var n=[];i(_),f(n,e,\"state_address\"),t=m(n,t,\"cipher\");var s,c=r._crypto_secretstream_xchacha20poly1305_abytes(),o=t.length;o<c&&b(n,\"cipher is too short\"),s=u(t),n.push(s);var h=null,y=0;null!=a&&(h=u(a=m(n,a,\"ad\")),y=a.length,n.push(h));var g=new l(o-r._crypto_secretstream_xchacha20poly1305_abytes()|0),E=g.address;n.push(E);var x,k=(x=d(1),n.push(x),(k=0===r._crypto_secretstream_xchacha20poly1305_pull(e,E,0,x,s,o,0,h,y)&&{tag:r.HEAPU8[x],message:g})&&{message:p(k.message,_),tag:k.tag});return v(n),k}function it(e,t,a,_,n){var s=[];i(n),f(s,e,\"state_address\");var c=u(t=m(s,t,\"message_chunk\")),o=t.length;s.push(c);var h=null,y=0;null!=a&&(h=u(a=m(s,a,\"ad\")),y=a.length,s.push(h)),f(s,_,\"tag\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&b(s,\"tag must be an unsigned integer\");var d=new l(o+r._crypto_secretstream_xchacha20poly1305_abytes()|0),E=d.address;if(s.push(E),0==(0|r._crypto_secretstream_xchacha20poly1305_push(e,E,0,c,o,0,h,y,0,_))){var x=p(d,n);return v(s),x}g(s,\"invalid usage\")}function lt(e,t){var a=[];return i(t),f(a,e,\"state_address\"),r._crypto_secretstream_xchacha20poly1305_rekey(e),v(a),!0}function ut(e,t,a){var _=[];i(a);var n=u(e=m(_,e,\"message\")),s=e.length;_.push(n),t=m(_,t,\"key\");var c,o=0|r._crypto_shorthash_keybytes();t.length!==o&&b(_,\"invalid key length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_shorthash_bytes()),y=h.address;if(_.push(y),0==(0|r._crypto_shorthash(y,n,s,0,c))){var d=p(h,a);return v(_),d}g(_,\"invalid usage\")}function dt(e){var t=[];i(e);var a=new l(0|r._crypto_shorthash_keybytes()),_=a.address;t.push(_),r._crypto_shorthash_keygen(_);var n=p(a,e);return v(t),n}function vt(e,t,a){var _=[];i(a);var n=u(e=m(_,e,\"message\")),s=e.length;_.push(n),t=m(_,t,\"key\");var c,o=0|r._crypto_shorthash_siphashx24_keybytes();t.length!==o&&b(_,\"invalid key length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_shorthash_siphashx24_bytes()),y=h.address;if(_.push(y),0==(0|r._crypto_shorthash_siphashx24(y,n,s,0,c))){var d=p(h,a);return v(_),d}g(_,\"invalid usage\")}function gt(e,t,a){var _=[];i(a);var n=u(e=m(_,e,\"message\")),s=e.length;_.push(n),t=m(_,t,\"privateKey\");var c,o=0|r._crypto_sign_secretkeybytes();t.length!==o&&b(_,\"invalid privateKey length\"),c=u(t),_.push(c);var h=new l(e.length+r._crypto_sign_bytes()|0),y=h.address;if(_.push(y),0==(0|r._crypto_sign(y,null,n,s,0,c))){var d=p(h,a);return v(_),d}g(_,\"invalid usage\")}function bt(e,t,a){var _=[];i(a);var n=u(e=m(_,e,\"message\")),s=e.length;_.push(n),t=m(_,t,\"privateKey\");var c,o=0|r._crypto_sign_secretkeybytes();t.length!==o&&b(_,\"invalid privateKey length\"),c=u(t),_.push(c);var h=new l(0|r._crypto_sign_bytes()),y=h.address;if(_.push(y),0==(0|r._crypto_sign_detached(y,null,n,s,0,c))){var d=p(h,a);return v(_),d}g(_,\"invalid usage\")}function ft(e,t){var a=[];i(t),e=m(a,e,\"edPk\");var _,n=0|r._crypto_sign_publickeybytes();e.length!==n&&b(a,\"invalid edPk length\"),_=u(e),a.push(_);var s=new l(0|r._crypto_scalarmult_scalarbytes()),c=s.address;if(a.push(c),0==(0|r._crypto_sign_ed25519_pk_to_curve25519(c,_))){var o=p(s,t);return v(a),o}g(a,\"invalid key\")}function mt(e,t){var a=[];i(t),e=m(a,e,\"edSk\");var _,n=0|r._crypto_sign_secretkeybytes();e.length!==n&&b(a,\"invalid edSk length\"),_=u(e),a.push(_);var s=new l(0|r._crypto_scalarmult_scalarbytes()),c=s.address;if(a.push(c),0==(0|r._crypto_sign_ed25519_sk_to_curve25519(c,_))){var o=p(s,t);return v(a),o}g(a,\"invalid key\")}function Et(e,t){var a=[];i(t),e=m(a,e,\"privateKey\");var _,n=0|r._crypto_sign_secretkeybytes();e.length!==n&&b(a,\"invalid privateKey length\"),_=u(e),a.push(_);var s=new l(0|r._crypto_sign_publickeybytes()),c=s.address;if(a.push(c),0==(0|r._crypto_sign_ed25519_sk_to_pk(c,_))){var o=p(s,t);return v(a),o}g(a,\"invalid key\")}function xt(e,t){var a=[];i(t),e=m(a,e,\"privateKey\");var _,n=0|r._crypto_sign_secretkeybytes();e.length!==n&&b(a,\"invalid privateKey length\"),_=u(e),a.push(_);var s=new l(0|r._crypto_sign_seedbytes()),c=s.address;if(a.push(c),0==(0|r._crypto_sign_ed25519_sk_to_seed(c,_))){var o=p(s,t);return v(a),o}g(a,\"invalid key\")}function kt(e,t,a){var _=[];i(a),f(_,e,\"state_address\"),t=m(_,t,\"privateKey\");var n,s=0|r._crypto_sign_secretkeybytes();t.length!==s&&b(_,\"invalid privateKey length\"),n=u(t),_.push(n);var c=new l(0|r._crypto_sign_bytes()),o=c.address;if(_.push(o),0==(0|r._crypto_sign_final_create(e,o,null,n))){var h=(r._free(e),p(c,a));return v(_),h}g(_,\"invalid usage\")}function St(e,t,a,_){var n=[];i(_),f(n,e,\"state_address\"),t=m(n,t,\"signature\");var s,c=0|r._crypto_sign_bytes();t.length!==c&&b(n,\"invalid signature length\"),s=u(t),n.push(s),a=m(n,a,\"publicKey\");var o,h=0|r._crypto_sign_publickeybytes();a.length!==h&&b(n,\"invalid publicKey length\"),o=u(a),n.push(o);var p=0==(0|r._crypto_sign_final_verify(e,s,o));return v(n),p}function Tt(e){var t=[];i(e);var a=new l(208).address;if(0==(0|r._crypto_sign_init(a))){var _=a;return v(t),_}g(t,\"internal error\")}function wt(e){var t=[];i(e);var a=new l(0|r._crypto_sign_publickeybytes()),_=a.address;t.push(_);var n=new l(0|r._crypto_sign_secretkeybytes()),s=n.address;if(t.push(s),0==(0|r._crypto_sign_keypair(_,s))){var c={publicKey:p(a,e),privateKey:p(n,e),keyType:\"ed25519\"};return v(t),c}g(t,\"internal error\")}function Yt(e,t,a){var _=[];i(a),e=m(_,e,\"signedMessage\");var n,s=r._crypto_sign_bytes(),c=e.length;c<s&&b(_,\"signedMessage is too short\"),n=u(e),_.push(n),t=m(_,t,\"publicKey\");var o,h=0|r._crypto_sign_publickeybytes();t.length!==h&&b(_,\"invalid publicKey length\"),o=u(t),_.push(o);var y=new l(c-r._crypto_sign_bytes()|0),d=y.address;if(_.push(d),0==(0|r._crypto_sign_open(d,null,n,c,0,o))){var f=p(y,a);return v(_),f}g(_,\"incorrect signature for the given public key\")}function Bt(e,t){var a=[];i(t),e=m(a,e,\"seed\");var _,n=0|r._crypto_sign_seedbytes();e.length!==n&&b(a,\"invalid seed length\"),_=u(e),a.push(_);var s=new l(0|r._crypto_sign_publickeybytes()),c=s.address;a.push(c);var o=new l(0|r._crypto_sign_secretkeybytes()),h=o.address;if(a.push(h),0==(0|r._crypto_sign_seed_keypair(c,h,_))){var y={publicKey:p(s,t),privateKey:p(o,t),keyType:\"ed25519\"};return v(a),y}g(a,\"invalid usage\")}function At(e,t,a){var _=[];i(a),f(_,e,\"state_address\");var n=u(t=m(_,t,\"message_chunk\")),s=t.length;_.push(n),0!=(0|r._crypto_sign_update(e,n,s))&&g(_,\"invalid usage\"),v(_)}function Kt(e,t,a){var _=[];e=m(_,e,\"signature\");var n,s=0|r._crypto_sign_bytes();e.length!==s&&b(_,\"invalid signature length\"),n=u(e),_.push(n);var c=u(t=m(_,t,\"message\")),o=t.length;_.push(c),a=m(_,a,\"publicKey\");var h,p=0|r._crypto_sign_publickeybytes();a.length!==p&&b(_,\"invalid publicKey length\"),h=u(a),_.push(h);var y=0==(0|r._crypto_sign_verify_detached(n,c,o,0,h));return v(_),y}function Mt(e,t,a,_){var n=[];i(_),f(n,e,\"outLength\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&b(n,\"outLength must be an unsigned integer\"),t=m(n,t,\"key\");var s,c=0|r._crypto_stream_chacha20_keybytes();t.length!==c&&b(n,\"invalid key length\"),s=u(t),n.push(s),a=m(n,a,\"nonce\");var o,h=0|r._crypto_stream_chacha20_noncebytes();a.length!==h&&b(n,\"invalid nonce length\"),o=u(a),n.push(o);var y=new l(0|e),d=y.address;n.push(d),r._crypto_stream_chacha20(d,e,0,o,s);var g=p(y,_);return v(n),g}function It(e,t,a,_){var n=[];i(_);var s=u(e=m(n,e,\"input_message\")),c=e.length;n.push(s),t=m(n,t,\"nonce\");var o,h=0|r._crypto_stream_chacha20_ietf_noncebytes();t.length!==h&&b(n,\"invalid nonce length\"),o=u(t),n.push(o),a=m(n,a,\"key\");var y,d=0|r._crypto_stream_chacha20_ietf_keybytes();a.length!==d&&b(n,\"invalid key length\"),y=u(a),n.push(y);var f=new l(0|c),E=f.address;if(n.push(E),0===r._crypto_stream_chacha20_ietf_xor(E,s,c,0,o,y)){var x=p(f,_);return v(n),x}g(n,\"invalid usage\")}function Nt(e,t,a,_,n){var s=[];i(n);var c=u(e=m(s,e,\"input_message\")),o=e.length;s.push(c),t=m(s,t,\"nonce\");var h,y=0|r._crypto_stream_chacha20_ietf_noncebytes();t.length!==y&&b(s,\"invalid nonce length\"),h=u(t),s.push(h),f(s,a,\"nonce_increment\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&b(s,\"nonce_increment must be an unsigned integer\"),_=m(s,_,\"key\");var d,E=0|r._crypto_stream_chacha20_ietf_keybytes();_.length!==E&&b(s,\"invalid key length\"),d=u(_),s.push(d);var x=new l(0|o),k=x.address;if(s.push(k),0===r._crypto_stream_chacha20_ietf_xor_ic(k,c,o,0,h,a,d)){var S=p(x,n);return v(s),S}g(s,\"invalid usage\")}function Lt(e){var t=[];i(e);var a=new l(0|r._crypto_stream_chacha20_keybytes()),_=a.address;t.push(_),r._crypto_stream_chacha20_keygen(_);var n=p(a,e);return v(t),n}function Ut(e,t,a,_){var n=[];i(_);var s=u(e=m(n,e,\"input_message\")),c=e.length;n.push(s),t=m(n,t,\"nonce\");var o,h=0|r._crypto_stream_chacha20_noncebytes();t.length!==h&&b(n,\"invalid nonce length\"),o=u(t),n.push(o),a=m(n,a,\"key\");var y,d=0|r._crypto_stream_chacha20_keybytes();a.length!==d&&b(n,\"invalid key length\"),y=u(a),n.push(y);var f=new l(0|c),E=f.address;if(n.push(E),0===r._crypto_stream_chacha20_xor(E,s,c,0,o,y)){var x=p(f,_);return v(n),x}g(n,\"invalid usage\")}function Ot(e,t,a,_,n){var s=[];i(n);var c=u(e=m(s,e,\"input_message\")),o=e.length;s.push(c),t=m(s,t,\"nonce\");var h,y=0|r._crypto_stream_chacha20_noncebytes();t.length!==y&&b(s,\"invalid nonce length\"),h=u(t),s.push(h),f(s,a,\"nonce_increment\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&b(s,\"nonce_increment must be an unsigned integer\"),_=m(s,_,\"key\");var d,E=0|r._crypto_stream_chacha20_keybytes();_.length!==E&&b(s,\"invalid key length\"),d=u(_),s.push(d);var x=new l(0|o),k=x.address;if(s.push(k),0===r._crypto_stream_chacha20_xor_ic(k,c,o,0,h,a,0,d)){var S=p(x,n);return v(s),S}g(s,\"invalid usage\")}function Ct(e){var t=[];i(e);var a=new l(0|r._crypto_stream_keybytes()),_=a.address;t.push(_),r._crypto_stream_keygen(_);var n=p(a,e);return v(t),n}function Rt(e){var t=[];i(e);var a=new l(0|r._crypto_stream_xchacha20_keybytes()),_=a.address;t.push(_),r._crypto_stream_xchacha20_keygen(_);var n=p(a,e);return v(t),n}function Pt(e,t,a,_){var n=[];i(_);var s=u(e=m(n,e,\"input_message\")),c=e.length;n.push(s),t=m(n,t,\"nonce\");var o,h=0|r._crypto_stream_xchacha20_noncebytes();t.length!==h&&b(n,\"invalid nonce length\"),o=u(t),n.push(o),a=m(n,a,\"key\");var y,d=0|r._crypto_stream_xchacha20_keybytes();a.length!==d&&b(n,\"invalid key length\"),y=u(a),n.push(y);var f=new l(0|c),E=f.address;if(n.push(E),0===r._crypto_stream_xchacha20_xor(E,s,c,0,o,y)){var x=p(f,_);return v(n),x}g(n,\"invalid usage\")}function Gt(e,t,a,_,n){var s=[];i(n);var c=u(e=m(s,e,\"input_message\")),o=e.length;s.push(c),t=m(s,t,\"nonce\");var h,y=0|r._crypto_stream_xchacha20_noncebytes();t.length!==y&&b(s,\"invalid nonce length\"),h=u(t),s.push(h),f(s,a,\"nonce_increment\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&b(s,\"nonce_increment must be an unsigned integer\"),_=m(s,_,\"key\");var d,E=0|r._crypto_stream_xchacha20_keybytes();_.length!==E&&b(s,\"invalid key length\"),d=u(_),s.push(d);var x=new l(0|o),k=x.address;if(s.push(k),0===r._crypto_stream_xchacha20_xor_ic(k,c,o,0,h,a,0,d)){var S=p(x,n);return v(s),S}g(s,\"invalid usage\")}function Xt(e,t){var a=[];i(t),f(a,e,\"length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&b(a,\"length must be an unsigned integer\");var _=new l(0|e),n=_.address;a.push(n),r._randombytes_buf(n,e);var s=p(_,t);return v(a),s}function Dt(e,t,a){var _=[];i(a),f(_,e,\"length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&b(_,\"length must be an unsigned integer\"),t=m(_,t,\"seed\");var n,s=0|r._randombytes_seedbytes();t.length!==s&&b(_,\"invalid seed length\"),n=u(t),_.push(n);var c=new l(0|e),o=c.address;_.push(o),r._randombytes_buf_deterministic(o,e,n);var h=p(c,a);return v(_),h}function Ft(e){i(e),r._randombytes_close()}function Vt(e){i(e);var t=r._randombytes_random()>>>0;return v([]),t}function Ht(e,t){var a=[];i(t);for(var _=r._malloc(24),n=0;n<6;n++)r.setValue(_+4*n,r.Runtime.addFunction(e[[\"implementation_name\",\"random\",\"stir\",\"uniform\",\"buf\",\"close\"][n]]),\"i32\");0!=(0|r._randombytes_set_implementation(_))&&g(a,\"unsupported implementation\"),v(a)}function zt(e){i(e),r._randombytes_stir()}function jt(e,t){var a=[];i(t),f(a,e,\"upper_bound\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&b(a,\"upper_bound must be an unsigned integer\");var _=r._randombytes_uniform(e)>>>0;return v(a),_}function qt(){var e=r._sodium_version_string(),t=r.UTF8ToString(e);return v([]),t}return l.prototype.to_Uint8Array=function(){var e=new Uint8Array(this.length);return e.set(r.HEAPU8.subarray(this.address,this.address+this.length)),e},e.add=function(e,t){if(!(e instanceof Uint8Array&&t instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can added\");var r=e.length,a=0,_=0;if(t.length!=e.length)throw new TypeError(\"Arguments must have the same length\");for(_=0;_<r;_++)a>>=8,a+=e[_]+t[_],e[_]=255&a},e.base64_variants=c,e.compare=function(e,t){if(!(e instanceof Uint8Array&&t instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be compared\");if(e.length!==t.length)throw new TypeError(\"Only instances of identical length can be compared\");for(var r=0,a=1,_=e.length;_-- >0;)r|=t[_]-e[_]>>8&a,a&=(t[_]^e[_])-1>>8;return r+r+a-1},e.from_base64=function(e,t){t=o(t);var a,_=[],n=new l(3*(e=m(_,e,\"input\")).length/4),s=u(e),c=d(4),h=d(4);return _.push(s),_.push(n.address),_.push(n.result_bin_len_p),_.push(n.b64_end_p),0!==r._sodium_base642bin(n.address,n.length,s,e.length,0,c,h,t)&&g(_,\"invalid input\"),r.getValue(h,\"i32\")-s!==e.length&&g(_,\"incomplete input\"),n.length=r.getValue(c,\"i32\"),a=n.to_Uint8Array(),v(_),a},e.from_hex=function(e){var t,a=[],_=new l((e=m(a,e,\"input\")).length/2),n=u(e),s=d(4);return a.push(n),a.push(_.address),a.push(_.hex_end_p),0!==r._sodium_hex2bin(_.address,_.length,n,e.length,0,0,s)&&g(a,\"invalid input\"),r.getValue(s,\"i32\")-n!==e.length&&g(a,\"incomplete input\"),t=_.to_Uint8Array(),v(a),t},e.from_string=_,e.increment=function(e){if(!(e instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be incremented\");for(var t=256,r=0,a=e.length;r<a;r++)t>>=8,t+=e[r],e[r]=255&t},e.is_zero=function(e){if(!(e instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be checked\");for(var t=0,r=0,a=e.length;r<a;r++)t|=e[r];return 0===t},e.libsodium=t,e.memcmp=function(e,t){if(!(e instanceof Uint8Array&&t instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be compared\");if(e.length!==t.length)throw new TypeError(\"Only instances of identical length can be compared\");for(var r=0,a=0,_=e.length;a<_;a++)r|=e[a]^t[a];return 0===r},e.memzero=function(e){if(!(e instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be wiped\");for(var t=0,r=e.length;t<r;t++)e[t]=0},e.output_formats=function(){return[\"uint8array\",\"text\",\"hex\",\"base64\"]},e.pad=function(e,t){if(!(e instanceof Uint8Array))throw new TypeError(\"buffer must be a Uint8Array\");if((t|=0)<=0)throw new Error(\"block size must be > 0\");var a,_=[],n=d(4),s=1,c=0,o=0|e.length,h=new l(o+t);_.push(n),_.push(h.address);for(var p=h.address,y=h.address+o+t;p<y;p++)r.HEAPU8[p]=e[c],c+=s=1&~((65535&((o-=s)>>>48|o>>>32|o>>>16|o))-1>>16);return 0!==r._sodium_pad(n,h.address,e.length,t,h.length)&&g(_,\"internal error\"),h.length=r.getValue(n,\"i32\"),a=h.to_Uint8Array(),v(_),a},e.unpad=function(e,t){if(!(e instanceof Uint8Array))throw new TypeError(\"buffer must be a Uint8Array\");if((t|=0)<=0)throw new Error(\"block size must be > 0\");var a=[],_=u(e),n=d(4);return a.push(_),a.push(n),0!==r._sodium_unpad(n,_,e.length,t)&&g(a,\"unsupported/invalid padding\"),e=(e=new Uint8Array(e)).subarray(0,r.getValue(n,\"i32\")),v(a),e},e.ready=a,e.symbols=function(){return Object.keys(e).sort()},e.to_base64=h,e.to_hex=s,e.to_string=n,e}var r=\"object\"==typeof e.sodium&&\"function\"==typeof e.sodium.onload?e.sodium.onload:null;\"function\"==typeof define&&define.amd?define([\"exports\",\"libsodium\"],t):\"object\"==typeof exports&&\"string\"!=typeof exports.nodeName?t(exports,require(\"libsodium\")):e.sodium=t(e.commonJsStrict={},e.libsodium),r&&e.sodium.ready.then((function(){r(e.sodium)}))}(this);\n","export enum DEFAULT_GAS_LIMIT {\n DELEGATION = 10600,\n ORIGINATION = 10600,\n TRANSFER = 10600,\n REVEAL = 10600,\n}\nexport enum DEFAULT_FEE {\n DELEGATION = 1257,\n ORIGINATION = 10000,\n TRANSFER = 10000,\n REVEAL = 1420,\n}\nexport enum DEFAULT_STORAGE_LIMIT {\n DELEGATION = 0,\n ORIGINATION = 257,\n TRANSFER = 257,\n REVEAL = 0,\n}\n\nexport enum Protocols {\n Pt24m4xi = 'Pt24m4xiPbLDhVgVfABUjirbmda3yohdN82Sp9FeuAXJ4eV9otd',\n PsBABY5H = 'PsBABY5HQTSkA4297zNHfsZNKtxULfL18y95qb3m53QJiXGmrbU',\n PsBabyM1 = 'PsBabyM1eUXZseaJdmXFApDSBqj8YBfwELoxZHHW77EMcAbbwAS',\n PsCARTHA = 'PsCARTHAGazKbHtnKfLzQg3kms52kSRpgnDY982a9oYsSXRLQEb',\n PsDELPH1 = 'PsDELPH1Kxsxt8f9eWbxQeRxkjfbxoqM52jvs5Y5fBxWWh4ifpo',\n PtEdo2Zk = 'PtEdo2ZkT9oKpimTah6x2embF25oss54njMuPzkJTEi5RqfdZFA',\n PsFLorena = 'PsFLorenaUUuikDWvMDr6fGBRG8kt3e3D3fHoXK1j1BFRxeSH4i',\n PtGRANADs = 'PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV'\n}\n\nexport const protocols = {\n '004': [Protocols.Pt24m4xi],\n '005': [Protocols.PsBABY5H, Protocols.PsBabyM1],\n '006': [Protocols.PsCARTHA],\n '007': [Protocols.PsDELPH1],\n '008': [Protocols.PtEdo2Zk], // edonet v2\n '009': [Protocols.PsFLorena],\n '010': [Protocols.PtGRANADs]\n};\n\nexport enum DefaultLambdaAddresses {\n MAINNET = 'KT1CPuTzwC7h7uLXd5WQmpMFso1HxrLBUtpE',\n CARTHAGENET = 'KT1VAy1o1FGiXYfD3YT7x7k5eF5HSHhmc1u6',\n DELPHINET = 'KT19abMFs3haqyKYwqdLjK9GbtofryZLvpiK',\n EDONET = 'KT1A64nVZDccAHGAsf1ZyVajXZcbiwjV3SnN',\n FLORENCENET = 'KT1KCe3YqGnudsiCWb5twbe2DH5T3EMdLpSE',\n GRANADANET = 'KT1BCun2vsA4GBQvsKAuGD5x873MfW2jsN9z'\n}\n\nexport enum ChainIds {\n MAINNET = \"NetXdQprcVkpaWU\",\n CARTHAGENET = \"NetXjD3HPJJjmcd\",\n DELPHINET = \"NetXm8tYqnMWky1\",\n EDONET = \"NetXSgo1ZT2DRUG\",\n FLORENCENET = \"NetXxkAx4woPLyu\",\n GRANADANET = \"NetXz969SFaFn8k\" \n}\n","import { prefix, prefixLength, Prefix } from './constants';\n\nconst bs58check = require('bs58check');\n\nexport enum ValidationResult {\n NO_PREFIX_MATCHED,\n INVALID_CHECKSUM,\n INVALID_LENGTH,\n VALID,\n}\n\nexport function isValidPrefix(value: any): value is Prefix {\n if (typeof value !== 'string') {\n return false;\n }\n\n return value in prefix;\n}\n /**\n * @description This function is called by the validation functions ([[validateAddress]], [[validateChain]], [[validateContractAddress]], [[validateKeyHash]], [[validateSignature]], [[validatePublicKey]]).\n * Verify if the value has the right prefix or return `NO_PREFIX_MATCHED`,\n * decode the value using base58 and return `INVALID_CHECKSUM` if it fails,\n * check if the length of the value matches the prefix type or return `INVALID_LENGTH`.\n * If all checks pass, return `VALID`.\n *\n * @param value Value to validate\n * @param prefixes prefix the value should have\n */\nfunction validatePrefixedValue(value: any, prefixes: Prefix[]) {\n const match = new RegExp(`^(${prefixes.join('|')})`).exec(value);\n if (!match || match.length === 0) {\n return ValidationResult.NO_PREFIX_MATCHED;\n }\n\n const prefixKey = match[0];\n\n if (!isValidPrefix(prefixKey)) {\n return ValidationResult.NO_PREFIX_MATCHED;\n }\n\n // Remove annotation from contract address before doing the validation\n const contractAddress = /^(KT1\\w{33})(\\%(.*))?/.exec(value);\n if (contractAddress) {\n value = contractAddress[1];\n }\n\n // decodeUnsafe return undefined if decoding fail\n let decoded = bs58check.decodeUnsafe(value);\n if (!decoded) {\n return ValidationResult.INVALID_CHECKSUM;\n }\n\n decoded = decoded.slice(prefix[prefixKey].length);\n if (decoded.length !== prefixLength[prefixKey]) {\n return ValidationResult.INVALID_LENGTH;\n }\n\n return ValidationResult.VALID;\n}\n\nconst implicitPrefix = [Prefix.TZ1, Prefix.TZ2, Prefix.TZ3];\nconst contractPrefix = [Prefix.KT1];\nconst signaturePrefix = [Prefix.EDSIG, Prefix.P2SIG, Prefix.SPSIG, Prefix.SIG];\nconst pkPrefix = [Prefix.EDPK, Prefix.SPPK, Prefix.P2PK];\n\n /**\n * @description Used to check if an address or a contract address is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validateAddress } from '@taquito/utils';\n * const pkh = 'tz1L9r8mWmRPndRhuvMCWESLGSVeFzQ9NAWx'\n * const validation = validateAddress(pkh)\n * console.log(validation)\n * // This example return 3 which correspond to VALID\n * ```\n */\nexport function validateAddress(value: any): ValidationResult {\n return validatePrefixedValue(value, [...implicitPrefix, ...contractPrefix]);\n}\n /**\n * @description Used to check if a chain id is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validateChain } from '@taquito/utils';\n * const chainId = 'NetXdQprcVkpaWU'\n * const validation = validateChain(chainId)\n * console.log(validation)\n * // This example return 3 which correspond to VALID\n * ```\n */\nexport function validateChain(value: any): ValidationResult {\n return validatePrefixedValue(value, [Prefix.NET]);\n}\n /**\n * @description Used to check if a contract address is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validateContractAddress } from '@taquito/utils';\n * const contractAddress = 'KT1JVErLYTgtY8uGGZ4mso2npTSxqVLDRVbC'\n * const validation = validateContractAddress(contractAddress)\n * console.log(validation)\n * // This example return 3 which correspond to VALID\n * ```\n */\nexport function validateContractAddress(value: any): ValidationResult {\n return validatePrefixedValue(value, contractPrefix);\n}\n /**\n * @description Used to check if a key hash is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validateKeyHash } from '@taquito/utils';\n * const keyHashWithoutPrefix = '1L9r8mWmRPndRhuvMCWESLGSVeFzQ9NAWx'\n * const validation = validateKeyHash(keyHashWithoutPrefix)\n * console.log(validation)\n * // This example return 0 which correspond to NO_PREFIX_MATCHED\n * ```\n */\nexport function validateKeyHash(value: any): ValidationResult {\n return validatePrefixedValue(value, implicitPrefix);\n}\n /**\n * @description Used to check if a signature is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validateSignature } from '@taquito/utils';\n * const signature = 'edsigtkpiSSschcaCt9pUVrpNPf7TTcgvgDEDD6NCEHMy8NNQJCGnMfLZzYoQj74yLjo9wx6MPVV29CvVzgi7qEcEUok3k7AuMg'\n * const validation = validateSignature(signature)\n * console.log(validation)\n * // This example return 3 which correspond to VALID\n * ```\n */\nexport function validateSignature(value: any): ValidationResult {\n return validatePrefixedValue(value, signaturePrefix);\n}\n /**\n * @description Used to check if a signature is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validatePublicKey } from '@taquito/utils';\n * const publicKey = 'edsigtkpiSSschcaCt9pUVrpNPf7TTcgvgDEDD6NCEHMy8NNQJCGnMfLZzYoQj74yLjo9wx6MPVV29CvVzgi7qEcEUok3k7AuMg'\n * const validation = validatePublicKey(publicKey)\n * console.log(validation)\n * // This example return 3 which correspond to VALID\n * ```\n */\nexport function validatePublicKey(value: any): ValidationResult {\n return validatePrefixedValue(value, pkPrefix);\n}\n","/**\n * @packageDocumentation\n * @module @taquito/utils\n */\n\n/*\n * Some code in this file is originally from sotez and eztz\n * Copyright (c) 2018 Andrew Kishino\n * Copyright (c) 2017 Stephen Andrews\n */\n\nimport { Buffer } from 'buffer';\nimport { prefix } from './constants';\nconst blake = require('blakejs');\nconst bs58check = require('bs58check');\n\nexport * from './validators';\nexport { VERSION } from './version';\n\nexport { prefix, Prefix, prefixLength } from './constants';\n\n/**\n *\n * @description Hash a string using the BLAKE2b algorithm, base58 encode the hash obtained and appends the prefix 'expr' to it\n *\n * @param value Value in hex\n */\nexport function encodeExpr(value: string) {\n const blakeHash = blake.blake2b(hex2buf(value), null, 32);\n return b58cencode(blakeHash, prefix['expr']);\n}\n\n/**\n *\n * @description Return the operation hash of a signed operation \n * @param value Value in hex of a signed operation\n */\n export function encodeOpHash(value: string) {\n const blakeHash = blake.blake2b(hex2buf(value), null, 32);\n return b58cencode(blakeHash, prefix.o);\n}\n\n/**\n *\n * @description Base58 encode a string or a Uint8Array and append a prefix to it\n *\n * @param value Value to base58 encode\n * @param prefix prefix to append to the encoded string\n */\nexport function b58cencode(value: string | Uint8Array, prefix: Uint8Array) {\n const payloadAr = typeof value === 'string' ? Uint8Array.from(Buffer.from(value, 'hex')) : value;\n\n const n = new Uint8Array(prefix.length + payloadAr.length);\n n.set(prefix);\n n.set(payloadAr, prefix.length);\n\n return bs58check.encode(Buffer.from(n.buffer));\n}\n\n/**\n *\n * @description Base58 decode a string and remove the prefix from it\n *\n * @param value Value to base58 decode\n * @param prefix prefix to remove from the decoded string\n */\nexport const b58cdecode = (enc: string, prefixArg: Uint8Array): Uint8Array =>\n bs58check.decode(enc).slice(prefixArg.length);\n\n/**\n *\n * @description Base58 decode a string with predefined prefix\n *\n * @param value Value to base58 decode\n */\nexport function b58decode(payload: string) {\n const buf: Buffer = bs58check.decode(payload);\n\n const prefixMap = {\n [prefix.tz1.toString()]: '0000',\n [prefix.tz2.toString()]: '0001',\n [prefix.tz3.toString()]: '0002',\n };\n\n let pref = prefixMap[new Uint8Array(buf.slice(0, 3)).toString()];\n if (pref) {\n // tz addresses\n const hex = buf2hex(buf.slice(3));\n return pref + hex;\n } else {\n // other (kt addresses)\n return '01' + buf2hex(buf.slice(3, 42)) + '00';\n }\n}\n\n/**\n *\n * @description Base58 encode a public key using predefined prefix\n *\n * @param value Public Key to base58 encode\n */\nexport function encodePubKey(value: string) {\n if (value.substring(0, 2) === '00') {\n const pref: { [key: string]: Uint8Array } = {\n '0000': prefix.tz1,\n '0001': prefix.tz2,\n '0002': prefix.tz3,\n };\n\n return b58cencode(value.substring(4), pref[value.substring(0, 4)]);\n }\n\n return b58cencode(value.substring(2, 42), prefix.KT);\n}\n\n/**\n *\n * @description Base58 encode a key according to its prefix\n *\n * @param value Key to base58 encode\n */\nexport function encodeKey(value: string) {\n if (value[0] === '0') {\n const pref: { [key: string]: Uint8Array } = {\n '00': new Uint8Array([13, 15, 37, 217]),\n '01': new Uint8Array([3, 254, 226, 86]),\n '02': new Uint8Array([3, 178, 139, 127]),\n };\n\n return b58cencode(value.substring(2), pref[value.substring(0, 2)]);\n }\n}\n\n/**\n *\n * @description Base58 encode a key hash according to its prefix\n *\n * @param value Key to base58 encode\n */\nexport function encodeKeyHash(value: string) {\n if (value[0] === '0') {\n const pref: { [key: string]: Uint8Array } = {\n '00': new Uint8Array([6, 161, 159]),\n '01': new Uint8Array([6, 161, 161]),\n '02': new Uint8Array([6, 161, 164]),\n };\n\n return b58cencode(value.substring(2), pref[value.substring(0, 2)]);\n }\n}\n\n/**\n *\n * @description Convert an hex string to a Uint8Array\n *\n * @param hex Hex string to convert\n */\nexport const hex2buf = (hex: string): Uint8Array => {\n return new Uint8Array(hex.match(/[\\da-f]{2}/gi)!.map((h) => parseInt(h, 16)));\n};\n\n/**\n *\n * @description Merge 2 buffers together\n *\n * @param b1 First buffer\n * @param b2 Second buffer\n */\nexport const mergebuf = (b1: Uint8Array, b2: Uint8Array): Uint8Array => {\n const r = new Uint8Array(b1.length + b2.length);\n r.set(b1);\n r.set(b2, b1.length);\n return r;\n};\n\n/**\n *\n * @description Flatten a michelson json representation to an array\n *\n * @param s michelson json\n */\nexport const mic2arr = function me2(s: any): any {\n let ret: any = [];\n if (Object.prototype.hasOwnProperty.call(s, 'prim')) {\n if (s.prim === 'Pair') {\n ret.push(me2(s.args[0]));\n ret = ret.concat(me2(s.args[1]));\n } else if (s.prim === 'Elt') {\n ret = {\n key: me2(s.args[0]),\n val: me2(s.args[1]),\n };\n } else if (s.prim === 'True') {\n ret = true;\n } else if (s.prim === 'False') {\n ret = false;\n }\n } else if (Array.isArray(s)) {\n const sc = s.length;\n for (let i = 0; i < sc; i++) {\n const n = me2(s[i]);\n if (typeof n.key !== 'undefined') {\n if (Array.isArray(ret)) {\n ret = {\n keys: [],\n vals: [],\n };\n }\n ret.keys.push(n.key);\n ret.vals.push(n.val);\n } else {\n ret.push(n);\n }\n }\n } else if (Object.prototype.hasOwnProperty.call(s, 'string')) {\n ret = s.string;\n } else if (Object.prototype.hasOwnProperty.call(s, 'int')) {\n ret = parseInt(s.int, 10);\n } else {\n ret = s;\n }\n return ret;\n};\n\n/**\n *\n * @description Convert a buffer to an hex string\n *\n * @param buffer Buffer to convert\n */\nexport const buf2hex = (buffer: Buffer): string => {\n const byteArray = new Uint8Array(buffer);\n const hexParts: string[] = [];\n byteArray.forEach((byte: any) => {\n const hex = byte.toString(16);\n const paddedHex = `00${hex}`.slice(-2);\n hexParts.push(paddedHex);\n });\n return hexParts.join('');\n};\n\n/**\n *\n * @description Convert a string to bytes\n *\n * @param str String to convert\n */\nexport function char2Bytes(str: string) {\n return Buffer.from(str, 'utf8').toString('hex');\n}\n\n/**\n *\n * @description Convert bytes to a string\n *\n * @param str Bytes to convert\n */\nexport function bytes2Char(hex: string): string {\n return Buffer.from(hex2buf(hex)).toString('utf8');\n}\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\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","export var BeaconMessageType;\n(function (BeaconMessageType) {\n BeaconMessageType[\"PermissionRequest\"] = \"permission_request\";\n BeaconMessageType[\"SignPayloadRequest\"] = \"sign_payload_request\";\n // EncryptPayloadRequest = 'encrypt_payload_request',\n BeaconMessageType[\"OperationRequest\"] = \"operation_request\";\n BeaconMessageType[\"BroadcastRequest\"] = \"broadcast_request\";\n BeaconMessageType[\"PermissionResponse\"] = \"permission_response\";\n BeaconMessageType[\"SignPayloadResponse\"] = \"sign_payload_response\";\n // EncryptPayloadResponse = 'encrypt_payload_response',\n BeaconMessageType[\"OperationResponse\"] = \"operation_response\";\n BeaconMessageType[\"BroadcastResponse\"] = \"broadcast_response\";\n BeaconMessageType[\"Acknowledge\"] = \"acknowledge\";\n BeaconMessageType[\"Disconnect\"] = \"disconnect\";\n BeaconMessageType[\"Error\"] = \"error\";\n})(BeaconMessageType || (BeaconMessageType = {}));\n//# sourceMappingURL=BeaconMessageType.js.map","export var PermissionScope;\n(function (PermissionScope) {\n PermissionScope[\"SIGN\"] = \"sign\";\n PermissionScope[\"OPERATION_REQUEST\"] = \"operation_request\";\n PermissionScope[\"ENCRYPT\"] = \"encrypt\";\n PermissionScope[\"THRESHOLD\"] = \"threshold\"; // Allows the DApp to sign transactions below a certain threshold. This is currently not fully defined and unused\n})(PermissionScope || (PermissionScope = {}));\n//# sourceMappingURL=PermissionScope.js.map","export var NetworkType;\n(function (NetworkType) {\n NetworkType[\"MAINNET\"] = \"mainnet\";\n NetworkType[\"DELPHINET\"] = \"delphinet\";\n NetworkType[\"EDONET\"] = \"edonet\";\n NetworkType[\"FLORENCENET\"] = \"florencenet\";\n NetworkType[\"GRANADANET\"] = \"granadanet\";\n NetworkType[\"CUSTOM\"] = \"custom\";\n})(NetworkType || (NetworkType = {}));\n//# sourceMappingURL=NetworkType.js.map","/**\n * @publicapi\n * @category Tezos\n */\nexport var TezosOperationType;\n(function (TezosOperationType) {\n TezosOperationType[\"ENDORSEMENT\"] = \"endorsement\";\n TezosOperationType[\"SEED_NONCE_REVELATION\"] = \"seed_nonce_revelation\";\n TezosOperationType[\"DOUBLE_ENDORSEMENT_EVIDENCE\"] = \"double_endorsement_evidence\";\n TezosOperationType[\"DOUBLE_BAKING_EVIDENCE\"] = \"double_baking_evidence\";\n TezosOperationType[\"ACTIVATE_ACCOUNT\"] = \"activate_account\";\n TezosOperationType[\"PROPOSALS\"] = \"proposals\";\n TezosOperationType[\"BALLOT\"] = \"ballot\";\n TezosOperationType[\"REVEAL\"] = \"reveal\";\n TezosOperationType[\"TRANSACTION\"] = \"transaction\";\n TezosOperationType[\"ORIGINATION\"] = \"origination\";\n TezosOperationType[\"DELEGATION\"] = \"delegation\";\n})(TezosOperationType || (TezosOperationType = {}));\n//# sourceMappingURL=OperationTypes.js.map","/**\n * @internalapi\n */\nexport var Origin;\n(function (Origin) {\n Origin[\"WEBSITE\"] = \"website\";\n Origin[\"EXTENSION\"] = \"extension\";\n Origin[\"P2P\"] = \"p2p\";\n})(Origin || (Origin = {}));\n//# sourceMappingURL=Origin.js.map","/**\n * @internalapi\n */\nexport var ExtensionMessageTarget;\n(function (ExtensionMessageTarget) {\n ExtensionMessageTarget[\"BACKGROUND\"] = \"toBackground\";\n ExtensionMessageTarget[\"PAGE\"] = \"toPage\";\n ExtensionMessageTarget[\"EXTENSION\"] = \"toExtension\";\n})(ExtensionMessageTarget || (ExtensionMessageTarget = {}));\n//# sourceMappingURL=ExtensionMessageTarget.js.map","import superPropBase from \"@babel/runtime/helpers/esm/superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","export var ColorMode;\n(function (ColorMode) {\n ColorMode[\"LIGHT\"] = \"light\";\n ColorMode[\"DARK\"] = \"dark\";\n})(ColorMode || (ColorMode = {}));\n//# sourceMappingURL=ColorMode.js.map","import { ColorMode } from './types/ColorMode';\nlet colorMode = ColorMode.LIGHT;\nexport const setColorMode = (mode) => {\n colorMode = mode;\n};\nexport const getColorMode = () => colorMode;\n//# sourceMappingURL=colorMode.js.map","var __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};\nimport { Serializer } from '../../Serializer';\nimport { ExtensionMessageTarget, NetworkType, availableTransports } from '../..';\nimport { windowRef } from '../../MockWindow';\nimport { getTzip10Link } from '../../utils/get-tzip10-link';\nimport { isAndroid, isIOS } from '../../utils/platform';\nimport { desktopList, extensionList, iOSList, webList } from './wallet-lists';\nconst serializer = new Serializer();\nconst defaultExtensions = [\n 'ookjlbkiijinhpmnjffcofjonbfbgaoc',\n 'gpfndedineagiepkpinficbcbbgjoenn' // Beacon\n];\nexport var Platform;\n(function (Platform) {\n Platform[Platform[\"DESKTOP\"] = 0] = \"DESKTOP\";\n Platform[Platform[\"IOS\"] = 1] = \"IOS\";\n Platform[Platform[\"ANDROID\"] = 2] = \"ANDROID\";\n})(Platform || (Platform = {}));\nexport var WalletType;\n(function (WalletType) {\n WalletType[\"IOS\"] = \"ios\";\n WalletType[\"ANDROID\"] = \"android\";\n WalletType[\"EXTENSION\"] = \"extension\";\n WalletType[\"DESKTOP\"] = \"desktop\";\n WalletType[\"WEB\"] = \"web\";\n})(WalletType || (WalletType = {}));\n/**\n * @internalapi\n *\n */\nexport class Pairing {\n static getPlatfrom() {\n return __awaiter(this, void 0, void 0, function* () {\n return isAndroid(window) ? Platform.ANDROID : isIOS(window) ? Platform.IOS : Platform.DESKTOP;\n });\n }\n static getPairingInfo(pairingPayload, statusUpdateHandler, mobileWalletHandler, platform) {\n return __awaiter(this, void 0, void 0, function* () {\n const activePlatform = platform !== null && platform !== void 0 ? platform : (yield Pairing.getPlatfrom());\n const pairingCode = pairingPayload.p2pSyncCode;\n const postmessageSyncCode = pairingPayload.postmessageSyncCode;\n const preferredNetwork = pairingPayload.preferredNetwork;\n switch (activePlatform) {\n case Platform.DESKTOP:\n return Pairing.getDesktopPairingAlert(pairingCode, statusUpdateHandler, postmessageSyncCode, mobileWalletHandler, preferredNetwork);\n case Platform.IOS:\n return Pairing.getIOSPairingAlert(pairingCode, statusUpdateHandler, preferredNetwork);\n case Platform.ANDROID:\n return Pairing.getAndroidPairingAlert(pairingCode, statusUpdateHandler, preferredNetwork);\n default:\n throw new Error('platform unknown');\n }\n });\n }\n static getDesktopPairingAlert(pairingCode, statusUpdateHandler, postmessageSyncCode, mobileWalletHandler, network) {\n return __awaiter(this, void 0, void 0, function* () {\n const availableExtensions = yield availableTransports.availableExtensions;\n availableExtensions.forEach((ext) => {\n const index = defaultExtensions.indexOf(ext.id);\n if (index >= 0) {\n defaultExtensions.splice(index, 1);\n }\n });\n return {\n walletLists: [\n {\n title: 'Browser Extensions',\n type: WalletType.EXTENSION,\n wallets: [\n ...availableExtensions.map((app) => {\n var _a, _b, _c, _d, _e;\n const ext = extensionList.find((extEl) => extEl.id === app.id);\n return {\n key: (_a = ext === null || ext === void 0 ? void 0 : ext.key) !== null && _a !== void 0 ? _a : app.id,\n name: (_b = app.name) !== null && _b !== void 0 ? _b : ext === null || ext === void 0 ? void 0 : ext.name,\n logo: (_c = app.iconUrl) !== null && _c !== void 0 ? _c : ext === null || ext === void 0 ? void 0 : ext.logo,\n shortName: (_d = app.shortName) !== null && _d !== void 0 ? _d : ext === null || ext === void 0 ? void 0 : ext.shortName,\n color: (_e = app.color) !== null && _e !== void 0 ? _e : ext === null || ext === void 0 ? void 0 : ext.color,\n enabled: true,\n clickHandler() {\n return __awaiter(this, void 0, void 0, function* () {\n if (postmessageSyncCode) {\n const postmessageCode = yield serializer.serialize(yield postmessageSyncCode());\n const message = {\n target: ExtensionMessageTarget.EXTENSION,\n payload: postmessageCode,\n targetId: app.id\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n windowRef.postMessage(message, windowRef.location.origin);\n }\n statusUpdateHandler(WalletType.EXTENSION, this);\n });\n }\n };\n }),\n ...extensionList\n .filter((app) => defaultExtensions.some((extId) => extId === app.id))\n .map((app) => ({\n key: app.key,\n name: app.name,\n shortName: app.shortName,\n color: app.color,\n logo: app.logo,\n enabled: false,\n clickHandler: () => {\n // Don't do anything\n }\n }))\n ].sort((a, b) => a.key.localeCompare(b.key))\n },\n {\n title: 'Desktop & Web Wallets',\n type: WalletType.DESKTOP,\n wallets: [\n ...desktopList.map((app) => ({\n key: app.key,\n name: app.name,\n shortName: app.shortName,\n color: app.color,\n logo: app.logo,\n enabled: true,\n clickHandler() {\n return __awaiter(this, void 0, void 0, function* () {\n const code = yield serializer.serialize(yield pairingCode());\n const link = getTzip10Link(app.deepLink, code);\n window.open(link, '_blank');\n statusUpdateHandler(WalletType.DESKTOP, this, true);\n });\n }\n })),\n ...(yield Pairing.getWebList(pairingCode, statusUpdateHandler, network))\n ].sort((a, b) => a.key.localeCompare(b.key))\n },\n {\n title: 'Mobile Wallets',\n type: WalletType.IOS,\n wallets: [\n ...iOSList.map((app) => ({\n key: app.key,\n name: app.name,\n shortName: app.shortName,\n color: app.color,\n logo: app.logo,\n enabled: true,\n clickHandler() {\n return __awaiter(this, void 0, void 0, function* () {\n const code = yield serializer.serialize(yield pairingCode());\n mobileWalletHandler(code);\n statusUpdateHandler(WalletType.IOS, this, true);\n });\n }\n }))\n ].sort((a, b) => a.key.localeCompare(b.key))\n }\n ],\n buttons: []\n };\n });\n }\n static getIOSPairingAlert(pairingCode, statusUpdateHandler, network) {\n return __awaiter(this, void 0, void 0, function* () {\n return {\n walletLists: [\n {\n title: 'Mobile Wallets',\n type: WalletType.IOS,\n wallets: iOSList\n .map((app) => ({\n key: app.key,\n name: app.name,\n shortName: app.shortName,\n color: app.color,\n logo: app.logo,\n enabled: true,\n clickHandler() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const code = yield serializer.serialize(yield pairingCode());\n const link = getTzip10Link((_a = app.deepLink) !== null && _a !== void 0 ? _a : app.universalLink, code);\n // iOS does not trigger deeplinks with `window.open(...)`. The only way is using a normal link. So we have to work around that.\n const a = document.createElement('a');\n a.setAttribute('href', link);\n a.dispatchEvent(new MouseEvent('click', { view: window, bubbles: true, cancelable: true }));\n statusUpdateHandler(WalletType.IOS, this, true);\n });\n }\n }))\n .sort((a, b) => a.key.localeCompare(b.key))\n },\n {\n title: 'Web Wallets',\n type: WalletType.WEB,\n wallets: [\n ...(yield Pairing.getWebList(pairingCode, statusUpdateHandler, network))\n ].sort((a, b) => a.key.localeCompare(b.key))\n }\n ],\n buttons: []\n };\n });\n }\n static getAndroidPairingAlert(pairingCode, statusUpdateHandler, network) {\n return __awaiter(this, void 0, void 0, function* () {\n return {\n walletLists: [\n {\n title: 'Web Wallets',\n type: WalletType.WEB,\n wallets: [\n ...(yield Pairing.getWebList(pairingCode, statusUpdateHandler, network))\n ].sort((a, b) => a.key.localeCompare(b.key))\n }\n ],\n buttons: [\n {\n title: 'Mobile Wallets',\n text: 'Connect Wallet',\n clickHandler: () => __awaiter(this, void 0, void 0, function* () {\n const code = yield serializer.serialize(yield pairingCode());\n const qrLink = getTzip10Link('tezos://', code);\n window.open(qrLink, '_blank');\n statusUpdateHandler(WalletType.ANDROID);\n })\n }\n ]\n };\n });\n }\n static getWebList(pairingCode, statusUpdateHandler, network) {\n return __awaiter(this, void 0, void 0, function* () {\n return webList\n .map((app) => ({\n key: app.key,\n name: app.name,\n shortName: app.shortName,\n color: app.color,\n logo: app.logo,\n enabled: true,\n clickHandler() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const code = yield serializer.serialize(yield pairingCode());\n const link = getTzip10Link((_a = app.links[network]) !== null && _a !== void 0 ? _a : app.links[NetworkType.MAINNET], code);\n window.open(link, '_blank');\n statusUpdateHandler(WalletType.WEB, this, true);\n });\n }\n }))\n .sort((a, b) => a.key.localeCompare(b.key));\n });\n }\n}\n//# sourceMappingURL=Pairing.js.map","export const replaceInTemplate = (text, placeholder, value) => text.split(`{{${placeholder}}}`).join(value);\n//# sourceMappingURL=replace-in-template.js.map","export const alertTemplates = { \"container\": \"<div id=\\\"beacon-alert-modal-{{id}}\\\" class=\\\"beacon-alert__base animated fadeIn\\\">\\n <div class=\\\"beacon-modal__wrapper\\\">\\n <div class=\\\"beacon-modal__header\\\">\\n <svg\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n id=\\\"Guides\\\"\\n x=\\\"0\\\"\\n y=\\\"0\\\"\\n version=\\\"1.1\\\"\\n viewBox=\\\"0 0 179.2 43\\\"\\n xml:space=\\\"preserve\\\"\\n width=\\\"140\\\"\\n height=\\\"40\\\"\\n >\\n <style>\\n .st0 {\\n fill: #3880ff;\\n }\\n .st1 {\\n fill: #fff;\\n }\\n </style>\\n <path\\n d=\\\"M45 19v.9c0 .3-.2 7.5-3.4 13.2-3.3 5.6-9.4 9.3-9.7 9.5l-.8.4-1.3-.8-7.6-4.4c-.5-.3-.9-.6-1.4-.9-.4-.3-.7-.5-1.1-.8-.8-.7-1.5-1.4-2.1-2.2-.9-1.1-1.6-2.4-2.1-3.7-.9-2.3-1.3-4.8-1.2-7.5.8-.4 1.6-.6 2.4-.6h.6c-.2 2.4.1 4.6.8 6.6 1 2.8 2.9 5.1 5.5 6.6l7.4 4.3c.2-.1.4-.2.6-.4 1.9-1.3 5.3-4.1 7.3-7.6 2.2-3.9 2.8-8.9 3-10.8L38.8 19c.3-1 .4-2.1.5-3.2L45 19z\\\"\\n class=\\\"st0\\\"\\n />\\n <path\\n d=\\\"M36.3 4.1v10.3c0 .5 0 1.1-.1 1.6s-.1.9-.2 1.3c-.2 1-.5 2-.9 3-.5 1.3-1.3 2.6-2.2 3.7-1.5 1.9-3.5 3.6-5.9 4.8-.9-.6-1.6-1.3-2-2.4 2.1-1 3.9-2.3 5.2-4 1.9-2.3 3-5.1 3-8.1V5.9l-.6-.3c-2-1-6.1-2.6-10.1-2.6-4.5 0-9.1 2-10.9 2.9v3.6c-1 .3-2 .7-3 1.1V4.1l.8-.4C9.7 3.5 16 0 22.5 0s12.8 3.5 13.1 3.6l.7.5z\\\"\\n class=\\\"st0\\\"\\n />\\n <path\\n d=\\\"M10.5 16.5l-7.4 4.3v.7c.2 2.1.9 6.5 2.9 10 2.2 3.9 6.2 6.9 7.9 8l3.1-1.8c.8.7 1.6 1.4 2.5 2L13.8 43l-.8-.5c-.3-.2-6.4-3.9-9.7-9.5C.1 27.4 0 20.2 0 19.9V19l1.3-.8L9 13.9c.5-.3.9-.5 1.4-.7.4-.2.8-.4 1.3-.5 1-.4 2-.6 3-.7 1.4-.2 2.9-.2 4.3 0 2.4.3 4.8 1.2 7.1 2.7 0 1-.4 2-1 2.9-1.9-1.3-4-2.2-6-2.5-3.1-.6-6-.1-8.6 1.4z\\\"\\n class=\\\"st0\\\"\\n />\\n <g>\\n <path\\n d=\\\"M73.9 23c.9 1 1.3 2.3 1.3 3.7 0 1.9-.6 3.4-1.9 4.5-1.3 1.1-3.1 1.7-5.5 1.7h-8.6v-23h8.4c2.3 0 4.1.5 5.3 1.5 1.2 1 1.8 2.4 1.8 4.2 0 1.5-.4 2.7-1.2 3.6-.8.9-1.8 1.5-3.1 1.8 1.5.3 2.6 1 3.5 2zm-11.7-3h5c1.5 0 2.6-.3 3.4-1 .8-.7 1.2-1.6 1.2-2.8 0-1.2-.4-2.1-1.1-2.8-.8-.7-1.9-1-3.5-1h-4.8V20zm8.7 9.4c.9-.7 1.3-1.7 1.3-3s-.4-2.3-1.3-3c-.9-.7-2.1-1.1-3.7-1.1h-5v8.2h5c1.6-.1 2.8-.4 3.7-1.1zM95.3 24.6H81c.1 2.1.6 3.6 1.7 4.6s2.4 1.5 4 1.5c1.4 0 2.6-.4 3.6-1.1 1-.7 1.6-1.7 1.8-2.9h3.2c-.2 1.2-.7 2.4-1.5 3.3-.8 1-1.7 1.7-2.9 2.3-1.2.5-2.6.8-4.1.8-1.7 0-3.2-.4-4.6-1.1-1.3-.7-2.4-1.8-3.1-3.2-.8-1.4-1.1-3-1.1-4.9 0-1.9.4-3.5 1.1-4.9.8-1.4 1.8-2.5 3.1-3.2 1.3-.7 2.9-1.1 4.6-1.1 1.7 0 3.3.4 4.6 1.1 1.3.7 2.3 1.7 3 3 .7 1.2 1 2.6 1 4.1.1.7 0 1.2-.1 1.7zm-3.5-4.8c-.5-.9-1.2-1.6-2.1-2-.9-.4-1.8-.7-2.8-.7-1.6 0-3 .5-4.1 1.5-1.1 1-1.7 2.5-1.8 4.5h11.5c0-1.3-.2-2.4-.7-3.3zM111.2 16c1.2.9 2.1 2 2.5 3.5V15h3v18h-3v-4.6c-.5 1.5-1.3 2.6-2.5 3.5-1.2.9-2.7 1.3-4.4 1.3-1.6 0-3-.4-4.3-1.1-1.2-.7-2.2-1.8-2.9-3.2-.7-1.4-1.1-3-1.1-4.9 0-1.9.4-3.5 1.1-4.9.7-1.4 1.7-2.5 2.9-3.2 1.2-.7 2.7-1.1 4.3-1.1 1.7-.1 3.1.4 4.4 1.2zm-8 3.1c-1.1 1.2-1.7 2.8-1.7 4.8 0 2.1.5 3.7 1.7 4.8 1.1 1.2 2.6 1.8 4.4 1.8 1.2 0 2.2-.3 3.2-.8.9-.5 1.7-1.3 2.2-2.3.5-1 .8-2.1.8-3.5 0-1.3-.3-2.5-.8-3.5s-1.2-1.8-2.2-2.3c-.9-.5-2-.8-3.2-.8-1.9.1-3.3.7-4.4 1.8zM135 16.6c1.5 1.2 2.4 2.9 2.8 4.9h-3.1c-.2-1.3-.8-2.3-1.8-3-1-.7-2.2-1.1-3.6-1.1-1 0-2 .2-2.9.7-.9.5-1.6 1.2-2.1 2.2-.5 1-.8 2.2-.8 3.7s.3 2.7.8 3.7 1.2 1.7 2.1 2.2c.9.5 1.8.7 2.9.7 1.4 0 2.6-.4 3.6-1.1 1-.7 1.6-1.8 1.8-3h3.1c-.3 2.1-1.3 3.7-2.8 4.9-1.5 1.2-3.4 1.8-5.7 1.8-1.7 0-3.2-.4-4.6-1.1-1.3-.7-2.4-1.8-3.1-3.2-.8-1.4-1.1-3-1.1-4.9 0-1.9.4-3.5 1.1-4.9.8-1.4 1.8-2.5 3.1-3.2 1.3-.7 2.9-1.1 4.6-1.1 2.3-.1 4.2.6 5.7 1.8zM154.5 15.9c1.4.7 2.4 1.8 3.2 3.2.8 1.4 1.2 3 1.2 4.9 0 1.9-.4 3.5-1.2 4.9-.8 1.4-1.8 2.4-3.2 3.2-1.4.7-2.9 1.1-4.6 1.1-1.7 0-3.3-.4-4.6-1.1-1.4-.7-2.4-1.8-3.2-3.2-.8-1.4-1.2-3-1.2-4.9 0-1.9.4-3.5 1.2-4.9.8-1.4 1.9-2.5 3.2-3.2 1.4-.7 2.9-1.1 4.6-1.1 1.7-.1 3.2.3 4.6 1.1zm-7.6 2.2c-.9.5-1.6 1.2-2.2 2.2-.6 1-.8 2.2-.8 3.7 0 1.4.3 2.7.8 3.6.6 1 1.3 1.7 2.2 2.2.9.5 1.9.7 3 .7s2.1-.2 3-.7c.9-.5 1.6-1.2 2.2-2.2.6-1 .8-2.2.8-3.6 0-1.5-.3-2.7-.8-3.7-.6-1-1.3-1.7-2.2-2.2-.9-.5-1.9-.7-3-.7s-2.1.2-3 .7zM177.3 16.7c1.3 1.3 1.9 3.3 1.9 5.8v10.4h-3V22.8c0-1.8-.5-3.2-1.4-4.1-.9-1-2.2-1.4-3.7-1.4-1.6 0-2.9.5-3.9 1.6s-1.5 2.6-1.5 4.6V33h-3V15h3v4.3c.5-1.5 1.3-2.6 2.4-3.4 1.2-.8 2.5-1.2 4-1.2 2.2 0 3.9.6 5.2 2z\\\"\\n class=\\\"st1\\\"\\n />\\n </g>\\n </svg>\\n <div id=\\\"beacon-alert-{{id}}-close\\\" class=\\\"beacon-modal__close__wrapper\\\">\\n <div class=\\\"beacon-modal__close__icon\\\">\\n <div class=\\\"beacon-modal__close__line1\\\"></div>\\n <div class=\\\"beacon-modal__close__line2\\\"></div>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"beacon-modal__base\\\">\\n <div id=\\\"beacon-modal__content\\\">\\n <div>\\n <p class=\\\"beacon-alert__title\\\">\\n {{callToAction}}\\n </p>\\n\\n {{main}}\\n\\n <div class=\\\"beacon-action__container\\\">\\n {{buttons}}\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n</div>\\n\", \"default\": { \"html\": \"<div id=\\\"beacon-main-text\\\" class=\\\"beacon-alert__text\\\">\\n {{body}}\\n</div>\\n\", \"css\": \":host {\\n --animation-duration: 300ms;\\n all: initial;\\n}\\n\\n@keyframes fadeIn {\\n from {\\n opacity: 0;\\n }\\n to {\\n opacity: 1;\\n }\\n}\\n\\n@keyframes fadeOut {\\n from {\\n opacity: 1;\\n }\\n to {\\n opacity: 0;\\n }\\n}\\n\\n.animated {\\n animation-duration: var(--animation-duration);\\n animation-fill-mode: both;\\n}\\n\\n.fadeIn {\\n animation-name: fadeIn;\\n}\\n\\n.fadeOut {\\n animation-name: fadeOut;\\n}\\n\\n.beacon-modal__wrapper {\\n position: relative;\\n top: 0;\\n display: inline-block;\\n z-index: 2147483000;\\n max-width: 500px;\\n width: 80%;\\n padding: 24px;\\n}\\n\\n@media (min-height: 700px) {\\n .beacon-modal__wrapper {\\n top: 50%;\\n transform: translateY(-50%);\\n }\\n}\\n\\n.theme__light .beacon-modal__base,\\n.theme__light .beacon-modal__close__wrapper {\\n background: #fff;\\n}\\n\\n.theme__dark .beacon-modal__base,\\n.theme__dark .beacon-modal__close__wrapper {\\n background: #27334c;\\n}\\n\\n.beacon-modal__base,\\n.beacon-modal__close__wrapper {\\n box-shadow: 0 12px 24px 0 rgba(0, 0, 0, 0.1);\\n}\\n\\n.beacon-modal__base {\\n margin: 0 auto;\\n border-radius: 32px;\\n overflow: hidden;\\n}\\n\\n.beacon-modal__header {\\n padding: 16px 0;\\n width: 100%;\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: center;\\n}\\n\\n.beacon-modal__headerLogo {\\n width: 100%;\\n max-width: 320px;\\n margin: 20px auto;\\n height: 100%;\\n}\\n\\na,\\nbutton {\\n cursor: pointer;\\n}\\n\\n.beacon-modal__close__wrapper {\\n position: absolute;\\n top: 44px;\\n right: 24px;\\n z-index: 10000;\\n cursor: pointer;\\n border-radius: 100%;\\n}\\n\\n.beacon-modal__close__icon {\\n width: 16px;\\n height: 16px;\\n position: relative;\\n top: 0;\\n right: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n transform: rotate(45deg);\\n margin: 8px;\\n}\\n\\n.beacon-modal__close__line1 {\\n position: absolute;\\n width: 90%;\\n}\\n\\n.beacon-modal__close__line2 {\\n position: absolute;\\n width: 90%;\\n transform: rotate(90deg);\\n}\\n\\n.theme__light .beacon-modal__close__line2,\\n.theme__light .beacon-modal__close__line1 {\\n border: 1px solid #000;\\n}\\n\\n.theme__dark .beacon-modal__close__line2,\\n.theme__dark .beacon-modal__close__line1 {\\n border: 1px solid #fff;\\n}\\n\\n.beacon-alert__base {\\n position: fixed;\\n overflow-y: scroll;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n z-index: 2147482999;\\n background-color: rgb(17 17 17 / 0.84);\\n text-align: center;\\n -ms-overflow-style: none;\\n scrollbar-width: none;\\n font-family: Roboto, Helvetica, sans-serif;\\n}\\n\\n.beacon-alert__base::-webkit-scrollbar {\\n display: none;\\n}\\n\\n.beacon-alert__title {\\n text-align: center;\\n}\\n\\n.beacon-alert__text,\\n.beacon-alert__title {\\n margin: 0 auto;\\n padding: 0 0 24px;\\n}\\n\\n.margin__bottom {\\n margin-bottom: 16px;\\n}\\n\\n.beacon-alert__title {\\n font-size: 18px;\\n}\\n\\n.theme__light .beacon-alert__title {\\n color: #3b3d40;\\n}\\n\\n.theme__dark .beacon-alert__title,\\n.theme__dark .beacon-alert__text {\\n color: #7c99d6;\\n}\\n\\n.beacon-alert__text {\\n color: #000;\\n font-size: 14px;\\n}\\n\\n.beacon-modal__button,\\n.beacon-modal__button--outline {\\n height: 36px;\\n font-size: 14px;\\n letter-spacing: 0.84px;\\n margin-bottom: 4px;\\n margin-inline-end: 2px;\\n margin-inline-start: 2px;\\n margin-left: 2px;\\n margin-right: 2px;\\n margin-top: 4px;\\n padding-inline-end: 15.4px;\\n padding-inline-start: 15.4px;\\n padding-left: 15.4px;\\n padding-right: 15.4px;\\n overflow-wrap: break-word;\\n pointer-events: auto;\\n text-align: center;\\n border-radius: 4px;\\n border: 2px solid #3880ff;\\n}\\n\\n.beacon-modal__button {\\n background: #3880ff;\\n color: #fff;\\n}\\n\\n.beacon-modal__button--outline {\\n background: #fff;\\n color: #444444;\\n border: 1px solid #444444;\\n}\\n\\n.beacon-alert__image {\\n width: 200px;\\n height: 200px;\\n box-sizing: border-box;\\n box-shadow: 0 10px 20px 0 rgba(17, 17, 17, 0.12);\\n border: 1px solid rgba(17, 17, 17, 0.04);\\n border-radius: 16px;\\n}\\n.connect__btn {\\n margin: 24px 0;\\n width: 100%;\\n}\\n\\n#beacon-modal__content {\\n padding: 24px;\\n}\\n\\n#beacon-switch {\\n margin-top: 24px;\\n}\\n\\n#beacon-title {\\n margin: 0 0 24px;\\n}\\n\\na {\\n text-decoration: none;\\n}\\n\\npre {\\n white-space: pre-wrap; /* css-3 */\\n white-space: -moz-pre-wrap; /* Mozilla, since 1999 */\\n white-space: -pre-wrap; /* Opera 4-6 */\\n white-space: -o-pre-wrap; /* Opera 7 */\\n word-wrap: break-word; /* Internet Explorer 5.5+ */\\n padding: 16px;\\n background: #ececec;\\n line-height: 1.25rem;\\n}\\n\" }, \"pair\": { \"html\": \"<span id=\\\"pairing-container\\\"></span>\\n\\n<div id=\\\"beacon-main-text\\\" class=\\\"beacon-alert__text\\\">\\n <p id=\\\"beacon-title\\\" class=\\\"beacon-list__title\\\">\\n Scan QR code with a Beacon-compatible wallet.\\n <a href=\\\"https://docs.walletbeacon.io/supported-wallets\\\" target=\\\"_blank\\\">Learn more</a>\\n </p>\\n {{body}}\\n</div>\\n\\n<div id=\\\"beacon--switch__container\\\">\\n <button id=\\\"beacon-switch\\\" class=\\\"beacon-modal__button--outline\\\"></button>\\n</div>\\n\\n<div id=\\\"beacon--disclaimer\\\"></div>\\n\", \"css\": \"#beacon-main-text {\\n display: initial;\\n}\\n.beacon-selection__container {\\n padding: 16px 16px 0;\\n}\\n.beacon-selection__list {\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n text-decoration: none;\\n padding-bottom: 12px;\\n align-items: center;\\n}\\n.beacon-list__title {\\n text-align: left;\\n font-size: 12px;\\n}\\n.beacon-list__wrapper:nth-child(-n + 3) {\\n padding: 0 0 1rem;\\n}\\n.theme__light .beacon-list__title {\\n color: #7c828b;\\n}\\n.theme__dark .beacon-list__title,\\n.theme__dark #beacon--disclaimer {\\n color: #7c99d6;\\n}\\n\\n.beacon-selection__name {\\n font-size: 1rem;\\n font-weight: 600;\\n text-align: left;\\n}\\n.theme__light .beacon-selection__name,\\n.theme__light .beacon--selection__name__lg {\\n color: #3b3d40;\\n}\\n.theme__dark .beacon-selection__name,\\n.theme__dark .beacon--selection__name__lg {\\n color: #6183ff;\\n}\\n.beacon-selection__img {\\n width: 48px;\\n height: 48px;\\n box-shadow: 0 4px 12px 0 rgba(17, 17, 17, 0.24);\\n border-radius: 16px;\\n background-color: #fff;\\n}\\n.beacon--selection__name__lg {\\n font-size: 1.5rem;\\n font-weight: 600;\\n text-align: center;\\n padding: 1rem 0;\\n}\\n.beacon--selected__container {\\n padding: 2rem 0 0;\\n}\\n#beacon--qr__copy__container {\\n height: 0;\\n}\\n#beacon--qr__copy {\\n display: none;\\n position: relative;\\n top: -190px;\\n left: 138px;\\n margin: 0;\\n}\\n#beacon--qr__container {\\n margin-left: auto;\\n margin-right: auto;\\n}\\n#beacon--qr__container:hover #beacon--qr__copy {\\n display: block;\\n}\\n.disabled {\\n cursor: initial;\\n}\\n.disabled span,\\n.disabled img {\\n opacity: 0.48;\\n}\\n.disabled p {\\n text-align: left;\\n margin: 0;\\n font-size: 10px;\\n font-weight: 300;\\n}\\n.disabled img {\\n -webkit-filter: grayscale(100%);\\n -moz-filter: grayscale(100%);\\n -ms-filter: grayscale(100%);\\n -o-filter: grayscale(100%);\\n filter: grayscale(100%);\\n filter: gray;\\n}\\n\\n#beacon--disclaimer {\\n text-align: left;\\n padding-top: 24px;\\n font-size: 0.875rem;\\n}\\n.progress-line,\\n.progress-line:before {\\n height: 3px;\\n width: -webkit-fill-available;\\n margin-left: -24px;\\n margin-right: -24px;\\n}\\n.progress-line {\\n background-color: #a7c4f7;\\n display: -webkit-flex;\\n display: flex;\\n}\\n.progress-line:before {\\n background-color: #3880ff;\\n content: '';\\n -webkit-animation: running-progress 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\\n animation: running-progress 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\\n}\\n@-webkit-keyframes running-progress {\\n 0% {\\n margin-left: 0px;\\n margin-right: 100%;\\n }\\n 50% {\\n margin-left: 25%;\\n margin-right: 0%;\\n }\\n 100% {\\n margin-left: 100%;\\n margin-right: 0;\\n }\\n}\\n@keyframes running-progress {\\n 0% {\\n margin-left: 0px;\\n margin-right: 100%;\\n }\\n 50% {\\n margin-left: 25%;\\n margin-right: 0%;\\n }\\n 100% {\\n margin-left: 100%;\\n margin-right: 0;\\n }\\n}\\n\" } };\n//# sourceMappingURL=alert-templates.js.map","// Helper functions from https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/platform.ts\nexport const testUserAgent = (win, expr) => expr.test(win.navigator.userAgent);\nconst matchMedia = (win, query) => win.matchMedia(query).matches;\nexport const isMobile = (win) => matchMedia(win, '(any-pointer:coarse)');\n// const isCordova = (win: any): boolean => Boolean(win.cordova || win.phonegap || win.PhoneGap)\n// const isCapacitorNative = (win: any): boolean => {\n// const capacitor = win.Capacitor\n// return Boolean(capacitor && capacitor.isNative)\n// }\n// const isHybrid = (win: Window): boolean => isCordova(win) || isCapacitorNative(win)\n// const isMobileWeb = (win: Window): boolean => isMobile(win) && !isHybrid(win)\nconst isIpad = (win) => {\n // iOS 12 and below\n if (testUserAgent(win, /iPad/i)) {\n return true;\n }\n // iOS 13+\n if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {\n return true;\n }\n return false;\n};\nexport const isIOS = (win) => testUserAgent(win, /iPhone|iPod/i) || isIpad(win);\nexport const isAndroid = (win) => testUserAgent(win, /android|sink/i);\nexport const isDesktop = (win) => !isMobile(win);\n//# sourceMappingURL=platform.js.map","export const getTzip10Link = (url, payload) => `${url}?type=tzip10&data=${payload}`;\n//# sourceMappingURL=get-tzip10-link.js.map","export const extensionList = [\n {\n \"key\": \"spire_chrome\",\n \"id\": \"gpfndedineagiepkpinficbcbbgjoenn\",\n \"name\": \"Spire\",\n \"shortName\": \"Spire\",\n \"color\": \"\",\n \"logo\": \"data:image/png;base64,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\",\n \"link\": \"https://spirewallet.com/\"\n },\n {\n \"key\": \"temple_chrome\",\n \"id\": \"ookjlbkiijinhpmnjffcofjonbfbgaoc\",\n \"name\": \"Temple Wallet\",\n \"shortName\": \"Temple\",\n \"color\": \"\",\n \"logo\": \"data:image/png;base64,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\",\n \"link\": \"https://templewallet.com/\"\n }\n];\nexport const desktopList = [\n {\n \"key\": \"galleon_desktop\",\n \"name\": \"Galleon\",\n \"shortName\": \"Galleon\",\n \"color\": \"\",\n \"logo\": \"data:image/png;base64,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\",\n \"deepLink\": \"galleon://\"\n },\n {\n \"key\": \"umami_desktop\",\n \"name\": \"Umami\",\n \"shortName\": \"Umami\",\n \"color\": \"\",\n \"logo\": \"data:image/png;base64,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\",\n \"deepLink\": \"umami://\"\n }\n];\nexport const webList = [\n {\n \"key\": \"kukai_web\",\n \"name\": \"Kukai Wallet\",\n \"shortName\": \"Kukai\",\n \"color\": \"\",\n \"logo\": \"data:image/png;base64,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\",\n \"links\": {\n \"mainnet\": \"https://wallet.kukai.app\",\n \"delphinet\": \"https://testnet.kukai.app\",\n \"edonet\": \"https://edonet.kukai.app\",\n \"florencenet\": \"https://florencenet.kukai.app\",\n \"granadanet\": \"https://granadanet.kukai.app\"\n }\n }\n];\nexport const iOSList = [\n {\n \"key\": \"airgap_ios\",\n \"name\": \"AirGap Wallet\",\n \"shortName\": \"AirGap\",\n \"color\": \"rgb(4, 235, 204)\",\n \"logo\": \"data:image/png;base64,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\",\n \"universalLink\": \"https://wallet.airgap.it\",\n \"deepLink\": \"airgap-wallet://\"\n }\n];\n//# sourceMappingURL=wallet-lists.js.map","// Taken from https://github.com/WalletConnect/walletconnect-monorepo/blob/master/packages/qrcode-modal/src/browser.ts\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};\nimport { getColorMode } from '../../colorMode';\nimport { generateGUID } from '../../utils/generate-uuid';\nimport { replaceInTemplate } from '../../utils/replace-in-template';\nimport { alertTemplates } from './alert-templates';\nimport { preparePairingAlert } from './PairingAlert';\nlet lastFocusedElement;\nlet document;\nif (typeof window !== 'undefined' && typeof window.document !== 'undefined') {\n document = window.document;\n}\nconst timeout = {};\nconst addQR = (dataString) => {\n if (typeof dataString === 'string') {\n return `<div id=\"beacon--qr__container\"><div id=\"beacon--qr__copy__container\"><button class=\"beacon-modal__button--outline\" id=\"beacon--qr__copy\">Copy</button></div></div>${dataString}`;\n }\n return '';\n};\nconst formatAlert = (id, body, title, buttons, hasPairingPayload) => {\n const callToAction = title;\n const buttonsHtml = buttons.map((button, index) => `<button id=\"beacon-alert-${id}-${index}\" class=\"beacon-modal__button${button.style === 'outline' ? '--outline' : ''}\">${button.text}</button>`);\n let allStyles = alertTemplates.default.css;\n if (hasPairingPayload) {\n allStyles += alertTemplates.pair.css;\n }\n let alertContainer = alertTemplates.container;\n alertContainer = replaceInTemplate(alertContainer, 'main', hasPairingPayload ? alertTemplates.pair.html : alertTemplates.default.html);\n alertContainer = replaceInTemplate(alertContainer, 'callToAction', callToAction);\n alertContainer = replaceInTemplate(alertContainer, 'buttons', buttonsHtml.join(' '));\n alertContainer = replaceInTemplate(alertContainer, 'body', body);\n alertContainer = replaceInTemplate(alertContainer, 'id', id);\n if (alertContainer.indexOf('{{') >= 0) {\n const start = alertContainer.indexOf('{{');\n const end = alertContainer.indexOf('}}');\n console.error('Not all placeholders replaced!', alertContainer.substr(start, end - start));\n throw new Error('Not all placeholders replaced!');\n }\n return {\n style: allStyles,\n html: alertContainer\n };\n};\n/**\n * Close an alert by ID\n *\n * @param id ID of alert\n */\nconst closeAlert = (id) => new Promise((resolve) => {\n var _a;\n const wrapper = document.getElementById(`beacon-alert-wrapper-${id}`);\n if (!wrapper) {\n return resolve();\n }\n const elm = (_a = wrapper.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById(`beacon-alert-modal-${id}`);\n if (elm) {\n const animationDuration = 300;\n const localTimeout = timeout[id];\n if (localTimeout) {\n clearTimeout(localTimeout);\n timeout[id] = undefined;\n }\n elm.className = elm.className.replace('fadeIn', 'fadeOut');\n window.setTimeout(() => {\n const parent = wrapper.parentNode;\n if (parent) {\n parent.removeChild(wrapper);\n }\n if (lastFocusedElement) {\n ;\n lastFocusedElement.focus(); // set focus back to last focussed element\n }\n resolve();\n }, animationDuration);\n }\n else {\n resolve();\n }\n});\n/**\n * Close all alerts\n */\nconst closeAlerts = () => __awaiter(void 0, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(void 0, void 0, void 0, function* () {\n const openAlertElements = document.querySelectorAll('[id^=\"beacon-alert-wrapper-\"]');\n if (openAlertElements.length > 0) {\n const alertIds = [];\n openAlertElements.forEach((element) => __awaiter(void 0, void 0, void 0, function* () {\n alertIds.push(element.id.split('-')[3]);\n }));\n yield Promise.all(alertIds.map(closeAlert));\n resolve();\n }\n else {\n resolve();\n }\n }));\n});\n/**\n * Show an alert\n *\n * @param alertConfig The configuration of the alert\n */\n// eslint-disable-next-line complexity\nconst openAlert = (alertConfig) => __awaiter(void 0, void 0, void 0, function* () {\n var _a, _b;\n const body = alertConfig.body;\n const title = alertConfig.title;\n const timer = alertConfig.timer;\n const pairingPayload = alertConfig.pairingPayload;\n const disclaimer = alertConfig.disclaimerText;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const closeButtonCallback = alertConfig.closeButtonCallback;\n yield closeAlerts();\n const id = (yield generateGUID()).split('-').join('');\n const shadowRootEl = document.createElement('div');\n shadowRootEl.setAttribute('id', `beacon-alert-wrapper-${id}`);\n const shadowRoot = shadowRootEl.attachShadow({ mode: 'open' });\n const wrapper = document.createElement('div');\n wrapper.setAttribute('tabindex', `0`); // Make modal focussable\n shadowRoot.appendChild(wrapper);\n const buttons = [\n ...((_b = (_a = alertConfig.buttons) === null || _a === void 0 ? void 0 : _a.map((button) => {\n var _a, _b;\n return ({\n text: button.text,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n actionCallback: (_a = button.actionCallback) !== null && _a !== void 0 ? _a : (() => Promise.resolve()),\n style: (_b = button.style) !== null && _b !== void 0 ? _b : 'outline'\n });\n })) !== null && _b !== void 0 ? _b : [])\n ];\n const formattedBody = pairingPayload ? addQR(body) : body !== null && body !== void 0 ? body : '';\n const { style, html } = formatAlert(id, formattedBody, title, buttons, !!(pairingPayload === null || pairingPayload === void 0 ? void 0 : pairingPayload.p2pSyncCode));\n wrapper.innerHTML = html;\n const styleEl = document.createElement('style');\n styleEl.textContent = style;\n shadowRoot.appendChild(styleEl);\n if (timer) {\n timeout[id] = window.setTimeout(() => __awaiter(void 0, void 0, void 0, function* () {\n yield closeAlert(id);\n }), timer);\n }\n document.body.prepend(shadowRootEl);\n const closeButton = shadowRoot.getElementById(`beacon-alert-${id}-close`);\n const closeButtonClick = () => __awaiter(void 0, void 0, void 0, function* () {\n if (closeButtonCallback) {\n closeButtonCallback();\n }\n yield closeAlert(id);\n });\n if (disclaimer) {\n const disclaimerContainer = shadowRoot.getElementById(`beacon--disclaimer`);\n if (disclaimerContainer) {\n disclaimerContainer.innerHTML = disclaimer;\n }\n }\n const colorMode = getColorMode();\n const elm = shadowRoot.getElementById(`beacon-alert-modal-${id}`);\n if (elm) {\n elm.classList.add(`theme__${colorMode}`);\n elm.addEventListener('click', closeButtonClick); // Backdrop click dismisses alert\n }\n const modal = shadowRoot.querySelectorAll('.beacon-modal__wrapper');\n if (modal.length > 0) {\n modal[0].addEventListener('click', (event) => {\n event.stopPropagation();\n });\n }\n lastFocusedElement = document.activeElement; // Store which element has been focussed before the alert is shown\n wrapper.focus(); // Focus alert for accessibility\n buttons.forEach((button, index) => {\n const buttonElement = shadowRoot.getElementById(`beacon-alert-${id}-${index}`);\n if (buttonElement) {\n buttonElement.addEventListener('click', () => __awaiter(void 0, void 0, void 0, function* () {\n yield closeAlert(id);\n if (button.actionCallback) {\n yield button.actionCallback();\n }\n }));\n }\n });\n if (closeButton) {\n closeButton.addEventListener('click', () => __awaiter(void 0, void 0, void 0, function* () {\n yield closeButtonClick();\n }));\n }\n window.addEventListener('keydown', (event) => __awaiter(void 0, void 0, void 0, function* () {\n if (event.key === 'Escape') {\n yield closeButtonClick();\n }\n }));\n if (pairingPayload) {\n yield preparePairingAlert(shadowRoot, pairingPayload);\n }\n return id;\n});\nexport { closeAlert, closeAlerts, openAlert };\n//# sourceMappingURL=Alert.js.map","import * as qrcode from 'qrcode-generator';\nimport { Logger } from './Logger';\nconst logger = new Logger('QR');\n/**\n * Convert data to a QR code\n *\n * @param payload The data to be encoded as a QR code\n * @param type How the QR code will be encoded\n */\nexport const getQrData = (payload, type) => {\n const typeNumber = 0;\n const errorCorrectionLevel = 'L';\n const qr = qrcode(typeNumber, errorCorrectionLevel);\n if (payload.length > 500) {\n logger.warn('getQrData', 'The size of the payload in the QR code is quite long and some devices might not be able to scan it anymore. To reduce the QR size, try using a shorter \"name\", \"appUrl\" and \"iconUrl\"');\n }\n try {\n qr.addData(payload);\n qr.make();\n if (type === 'svg') {\n return qr.createSvgTag();\n }\n else if (type === 'ascii') {\n const length = qr.getModuleCount();\n const black = '\\x1B[40m \\x1B[0m';\n const white = '\\x1B[47m \\x1B[0m';\n const whiteLine = new Array(length + 3).join(white);\n const blackLine = new Array(length + 3).join(black);\n let ascii = '';\n ascii += `${blackLine}\\n`;\n ascii += `${whiteLine}\\n`;\n for (let x = 0; x < length; x++) {\n ascii += white;\n for (let y = 0; y < length; y++) {\n ascii += qr.isDark(x, y) ? black : white;\n }\n ascii += `${white}\\n`;\n }\n ascii += whiteLine;\n ascii += blackLine;\n return ascii;\n }\n else {\n return qr.createDataURL();\n }\n }\n catch (qrError) {\n console.error('error', qrError);\n throw qrError;\n }\n};\n//# sourceMappingURL=qr.js.map","var __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};\nimport { Serializer } from '../../Serializer';\nimport { generateGUID } from '../../utils/generate-uuid';\nimport { Logger } from '../../utils/Logger';\nimport { isAndroid, isIOS } from '../../utils/platform';\nimport { closeAlerts } from './Alert';\nimport { Pairing, WalletType } from './Pairing';\nimport { getQrData } from '../../utils/qr';\nimport { getTzip10Link } from '../../utils/get-tzip10-link';\nconst logger = new Logger('Alert');\nconst serializer = new Serializer();\nexport const preparePairingAlert = (shadowRoot, pairingPayload) => __awaiter(void 0, void 0, void 0, function* () {\n const info = yield Pairing.getPairingInfo(pairingPayload, (_walletType, _wallet, keepOpen) => __awaiter(void 0, void 0, void 0, function* () {\n if (keepOpen) {\n return;\n }\n yield closeAlerts();\n }), () => __awaiter(void 0, void 0, void 0, function* () {\n switchPlatform();\n }));\n const container = shadowRoot.getElementById(`pairing-container`);\n if (!container) {\n throw new Error('container not found');\n }\n const buttonListWrapper = document.createElement('span');\n container.appendChild(buttonListWrapper);\n info.buttons.forEach((button) => __awaiter(void 0, void 0, void 0, function* () {\n const randomId = yield generateGUID();\n const x = `\n <div class=\"beacon-list__title\">${button.title}</div>\n\t\t<button class=\"beacon-modal__button connect__btn\">${button.text}</button>\n\t\t `;\n const el = document.createElement('a');\n el.id = `button_${randomId}`;\n el.innerHTML = x;\n buttonListWrapper.appendChild(el);\n const buttonEl = shadowRoot.getElementById(el.id);\n if (buttonEl) {\n buttonEl.addEventListener('click', () => __awaiter(void 0, void 0, void 0, function* () {\n button.clickHandler();\n }));\n }\n }));\n info.walletLists.forEach((list) => {\n const listWrapperEl = document.createElement('div');\n listWrapperEl.classList.add('beacon-list__wrapper');\n container.appendChild(listWrapperEl);\n const listTitleEl = document.createElement('div');\n listTitleEl.classList.add('beacon-list__title');\n listTitleEl.innerHTML = list.title;\n listWrapperEl.appendChild(listTitleEl);\n const listEl = document.createElement('span');\n listWrapperEl.appendChild(listEl);\n list.wallets.forEach((wallet) => __awaiter(void 0, void 0, void 0, function* () {\n const altTag = `Open in ${wallet.name}`;\n const walletKey = wallet.key;\n const x = `\n\t\t\t<a tabindex=\"0\" alt=\"${altTag}\" id=\"wallet_${walletKey}\"\n\t\t\t target=\"_blank\" class=\"beacon-selection__list${wallet.enabled ? '' : ' disabled'}\">\n\t\t\t <div class=\"beacon-selection__name\">${wallet.name}\n\t\t\t ${wallet.enabled ? '' : '<p>Not installed</p>'}\n\t\t\t </div>\n\t\t\t ${wallet.logo\n ? `<div>\n\t\t\t <img class=\"beacon-selection__img\" src=\"${wallet.logo}\"/>\n\t\t\t </div>`\n : '<svg class=\"beacon-selection__img\" aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"wallet\" class=\"svg-inline--fa fa-wallet fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" style=\"enable-background:new 0 0 512 512;\" xml:space=\"preserve\"><path d=\"M376.2,181H152.9c-5.2,0-9.4-4.2-9.4-9.4s4.2-9.4,9.4-9.4h225c5.2,0,9.4-4.2,9.4-9.4c0-15.5-12.6-28.1-28.1-28.1H143.5c-20.7,0-37.5,16.8-37.5,37.5v187.5c0,20.7,16.8,37.5,37.5,37.5h232.7c16.4,0,29.8-12.6,29.8-28.1v-150C406,193.6,392.7,181,376.2,181z M349.8,302.9c-10.4,0-18.8-8.4-18.8-18.8s8.4-18.8,18.8-18.8s18.8,8.4,18.8,18.8S360.1,302.9,349.8,302.9z\"/></svg>'}\n\t\t\t</a>\n\t\t\t `;\n const el = document.createElement('span');\n el.innerHTML = x;\n listEl.appendChild(el);\n const walletEl = shadowRoot.getElementById(`wallet_${walletKey}`);\n const completeHandler = (event) => __awaiter(void 0, void 0, void 0, function* () {\n if (event && event.key !== 'Enter') {\n return;\n }\n wallet.clickHandler();\n const modalEl = shadowRoot.getElementById('beacon-modal__content');\n if (modalEl && list.type !== WalletType.EXTENSION && list.type !== WalletType.IOS) {\n modalEl.innerHTML = `${wallet.logo\n ? `<p class=\"beacon-alert__title\">Establishing Connection..</p>\n <div id=\"beacon-toast-loader\" class=\"progress-line\"></div>\n <div class=\"beacon--selected__container\">\n <img class=\"beacon-selection__img\" src=\"${wallet.logo}\"/>\n <div class=\"beacon--selection__name__lg\">${wallet.name}</div>\n </div>`\n : ''}\n `;\n }\n });\n if (walletEl) {\n walletEl.addEventListener('click', () => completeHandler());\n walletEl.addEventListener('keydown', completeHandler);\n }\n }));\n });\n const qr = shadowRoot.getElementById(`beacon--qr__container`);\n const copyButton = shadowRoot.getElementById(`beacon--qr__copy`);\n const titleEl = shadowRoot.getElementById(`beacon-title`);\n const platform = isAndroid(window) ? 'android' : isIOS(window) ? 'ios' : 'desktop';\n const mainText = shadowRoot.getElementById(`beacon-main-text`);\n const walletList = shadowRoot.getElementById(`pairing-container`);\n const switchButton = shadowRoot.getElementById(`beacon--switch__container`);\n // if (mainText && walletList && switchButton && copyButton && qr && titleEl) {\n const fn = () => __awaiter(void 0, void 0, void 0, function* () {\n const code = pairingPayload\n ? yield serializer.serialize(yield pairingPayload.p2pSyncCode())\n : '';\n navigator.clipboard.writeText(code).then(() => {\n if (copyButton) {\n copyButton.innerText = 'Copied';\n }\n logger.log('Copying to clipboard was successful!');\n }, (err) => {\n logger.error('Could not copy text to clipboard: ', err);\n });\n });\n let qrShown = false;\n const showPlatform = (type) => __awaiter(void 0, void 0, void 0, function* () {\n const platformSwitch = shadowRoot.getElementById(`beacon-switch`);\n if (platformSwitch) {\n platformSwitch.innerHTML =\n type === 'none' ? 'Pair wallet on same device' : 'Pair wallet on another device';\n }\n if (mainText && walletList && switchButton && copyButton && qr && titleEl) {\n mainText.style.display = 'none';\n titleEl.style.textAlign = 'center';\n walletList.style.display = 'none';\n switchButton.style.display = 'initial';\n switch (type) {\n case 'ios':\n walletList.style.display = 'initial';\n break;\n case 'android':\n walletList.style.display = 'initial';\n break;\n case 'desktop':\n walletList.style.display = 'initial';\n titleEl.style.textAlign = 'left';\n mainText.style.display = 'none';\n switchButton.style.display = 'initial';\n break;\n default:\n if (!qrShown) {\n const code = yield serializer.serialize(yield pairingPayload.p2pSyncCode());\n const uri = getTzip10Link('tezos://', code);\n const qrSVG = getQrData(uri, 'svg');\n const qrString = qrSVG.replace('<svg', `<svg class=\"beacon-alert__image\"`);\n qr.insertAdjacentHTML('afterbegin', qrString);\n if (copyButton) {\n copyButton.addEventListener('click', fn);\n }\n if (qr) {\n qr.addEventListener('click', fn);\n }\n qrShown = true;\n }\n // QR code\n mainText.style.display = 'initial';\n }\n }\n });\n let showQr = false;\n const switchPlatform = () => {\n showPlatform(showQr ? 'none' : platform);\n showQr = !showQr;\n };\n switchPlatform();\n {\n const platformSwitch = shadowRoot.getElementById(`beacon-switch`);\n if (platformSwitch) {\n platformSwitch.addEventListener('click', switchPlatform);\n }\n }\n});\n//# sourceMappingURL=PairingAlert.js.map","var __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};\nimport { getColorMode } from '../../colorMode';\nimport { replaceInTemplate } from '../../utils/replace-in-template';\nimport { generateGUID } from '../../utils/generate-uuid';\nimport { toastTemplates } from './toast-templates';\nlet document;\nif (typeof window !== 'undefined' && typeof window.document !== 'undefined') {\n document = window.document;\n}\nconst EXPAND_AFTER = 5 * 1000;\nlet timeout;\nlet expandTimeout;\nlet globalToastConfig;\nconst createActionItem = (toastAction) => __awaiter(void 0, void 0, void 0, function* () {\n const { text, actionText, actionCallback } = toastAction;\n const id = yield generateGUID();\n const wrapper = document.createElement('div');\n wrapper.classList.add('beacon-toast__action__item');\n if (actionCallback) {\n wrapper.innerHTML = text.length > 0 ? `<p>${text}</p>` : ``;\n wrapper.innerHTML += `<p><a id=\"${id}\">${actionText}</a></p>`;\n }\n else if (actionText) {\n wrapper.innerHTML =\n text.length > 0 ? `<p class=\"beacon-toast__action__item__subtitle\">${text}</p>` : ``;\n wrapper.innerHTML += `<p>${actionText}</p>`;\n }\n else {\n wrapper.innerHTML = `<p>${text}</p>`;\n }\n if (actionCallback) {\n wrapper.addEventListener('click', actionCallback);\n }\n return wrapper;\n});\nconst removeAllChildNodes = (parent) => {\n while (parent.firstChild) {\n parent.removeChild(parent.firstChild);\n }\n};\nconst formatToastText = (html) => {\n var _a, _b;\n const walletIcon = (_a = globalToastConfig === null || globalToastConfig === void 0 ? void 0 : globalToastConfig.walletInfo) === null || _a === void 0 ? void 0 : _a.icon;\n const walletName = (_b = globalToastConfig === null || globalToastConfig === void 0 ? void 0 : globalToastConfig.walletInfo) === null || _b === void 0 ? void 0 : _b.name;\n let wallet = '';\n if (walletIcon) {\n wallet += `<span class=\"beacon-toast__wallet__container\"><img class=\"beacon-toast__content__img\" src=\"${walletIcon}\">`;\n }\n if (walletName) {\n wallet += `<strong>${walletName}</strong></span>`;\n }\n else {\n wallet += `Wallet`;\n }\n return replaceInTemplate(html, 'wallet', wallet);\n};\nconst getToastHTML = (config) => {\n const text = config.body;\n let html = replaceInTemplate(toastTemplates.default.html, 'text', text);\n html = formatToastText(html);\n return {\n style: toastTemplates.default.css,\n html\n };\n};\n/**\n * Close a toast\n */\nconst closeToast = () => new Promise((resolve) => {\n var _a;\n globalToastConfig = undefined;\n const wrapper = document.getElementById('beacon-toast-wrapper');\n if (!wrapper) {\n return resolve();\n }\n const elm = (_a = wrapper.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('beacon-toast');\n if (elm) {\n const animationDuration = 300;\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n elm.className = elm.className.replace('fadeIn', 'fadeOut');\n window.setTimeout(() => {\n const parent = wrapper.parentNode;\n if (parent) {\n parent.removeChild(wrapper);\n }\n resolve();\n }, animationDuration);\n }\n else {\n resolve();\n }\n});\nconst registerClick = (shadowRoot, id, callback) => {\n const button = shadowRoot.getElementById(id);\n if (button) {\n button.addEventListener('click', () => __awaiter(void 0, void 0, void 0, function* () {\n yield callback(button);\n }));\n }\n return button;\n};\nconst showElement = (shadowRoot, id) => {\n const el = shadowRoot.getElementById(id);\n if (el) {\n el.classList.remove('hide');\n el.classList.add('show');\n }\n};\nconst hideElement = (shadowRoot, id) => {\n const el = shadowRoot.getElementById(id);\n if (el) {\n el.classList.add('hide');\n el.classList.remove('show');\n }\n};\n// const showLoader = (): void => {\n// showElement('beacon-toast-loader')\n// }\nconst hideLoader = (shadowRoot) => {\n hideElement(shadowRoot, 'beacon-toast-loader');\n showElement(shadowRoot, 'beacon-toast-loader-placeholder');\n};\n// const showToggle = (): void => {\n// showElement('beacon-toast-button-expand')\n// hideElement('beacon-toast-button-close')\n// }\nconst showClose = (shadowRoot) => {\n showElement(shadowRoot, 'beacon-toast-button-close');\n hideElement(shadowRoot, 'beacon-toast-button-expand');\n};\nconst collapseList = (shadowRoot) => {\n const expandButton = shadowRoot.getElementById('beacon-toast-button-expand');\n const list = shadowRoot.getElementById('beacon-toast-list');\n if (expandButton && list) {\n expandButton.classList.remove('beacon-toast__upside_down');\n list.classList.add('hide');\n list.classList.remove('show');\n }\n};\nconst expandList = (shadowRoot) => {\n const expandButton = shadowRoot.getElementById('beacon-toast-button-expand');\n const list = shadowRoot.getElementById('beacon-toast-list');\n if (expandButton && list) {\n expandButton.classList.add('beacon-toast__upside_down');\n list.classList.remove('hide');\n list.classList.add('show');\n }\n};\nconst expandOrCollapseList = (shadowRoot) => {\n const expandButton = shadowRoot.getElementById('beacon-toast-button-expand');\n const list = shadowRoot.getElementById('beacon-toast-list');\n if (expandButton && list) {\n if (expandButton.classList.contains('beacon-toast__upside_down')) {\n collapseList(shadowRoot);\n }\n else {\n expandList(shadowRoot);\n }\n }\n};\nconst addActionsToToast = (shadowRoot, toastConfig, list) => __awaiter(void 0, void 0, void 0, function* () {\n const actions = toastConfig.actions;\n if (actions && actions.length > 0) {\n const actionPromises = actions.map((action) => __awaiter(void 0, void 0, void 0, function* () {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n return createActionItem(action);\n }));\n const actionItems = yield Promise.all(actionPromises);\n actionItems.forEach((item) => list.appendChild(item));\n const poweredByBeacon = document.createElement('small');\n poweredByBeacon.classList.add('beacon-toast__powered');\n poweredByBeacon.innerHTML = toastTemplates.default.poweredByBeacon;\n list.appendChild(poweredByBeacon);\n }\n else {\n showClose(shadowRoot);\n collapseList(shadowRoot);\n }\n});\nconst createNewToast = (toastConfig) => __awaiter(void 0, void 0, void 0, function* () {\n globalToastConfig = toastConfig;\n const timer = toastConfig.timer;\n const shadowRootEl = document.createElement('div');\n shadowRootEl.setAttribute('id', 'beacon-toast-wrapper');\n const shadowRoot = shadowRootEl.attachShadow({ mode: 'open' });\n const wrapper = document.createElement('div');\n const { style, html } = getToastHTML(toastConfig);\n wrapper.innerHTML = html;\n const styleEl = document.createElement('style');\n styleEl.textContent = style;\n shadowRoot.appendChild(wrapper);\n shadowRoot.appendChild(styleEl);\n if (timer) {\n timeout = window.setTimeout(() => __awaiter(void 0, void 0, void 0, function* () {\n yield closeToast();\n }), timer);\n }\n document.body.prepend(shadowRootEl);\n const colorMode = getColorMode();\n const elm = shadowRoot.getElementById(`beacon-toast`);\n if (elm) {\n elm.classList.add(`theme__${colorMode}`);\n }\n const list = shadowRoot.getElementById('beacon-toast-list');\n if (list) {\n yield addActionsToToast(shadowRoot, toastConfig, list);\n }\n const openWalletButtonEl = shadowRoot.getElementById('beacon-open-wallet');\n if (openWalletButtonEl) {\n if (toastConfig.openWalletAction) {\n openWalletButtonEl.addEventListener('click', () => {\n if (toastConfig.openWalletAction) {\n toastConfig.openWalletAction();\n }\n });\n }\n else {\n openWalletButtonEl.classList.add('hide');\n }\n }\n if (globalToastConfig.state === 'loading') {\n expandTimeout = window.setTimeout(() => __awaiter(void 0, void 0, void 0, function* () {\n const expandButton = shadowRoot.getElementById('beacon-toast-button-expand');\n if (expandButton && !expandButton.classList.contains('beacon-toast__upside_down')) {\n expandOrCollapseList(shadowRoot);\n }\n }), EXPAND_AFTER);\n }\n registerClick(shadowRoot, 'beacon-toast-button-done', () => __awaiter(void 0, void 0, void 0, function* () {\n yield closeToast();\n }));\n const closeButton = registerClick(shadowRoot, 'beacon-toast-button-close', () => __awaiter(void 0, void 0, void 0, function* () {\n yield closeToast();\n }));\n if (closeButton && globalToastConfig.state === 'loading') {\n closeButton.classList.add('hide');\n }\n registerClick(shadowRoot, 'beacon-toast-button-expand', () => __awaiter(void 0, void 0, void 0, function* () {\n expandOrCollapseList(shadowRoot);\n }));\n});\nconst updateToast = (toastConfig) => __awaiter(void 0, void 0, void 0, function* () {\n globalToastConfig = Object.assign(Object.assign({}, globalToastConfig), toastConfig);\n const timer = toastConfig.timer;\n const wrapper = document.getElementById('beacon-toast-wrapper');\n if (!wrapper) {\n return;\n }\n const shadowRoot = wrapper.shadowRoot;\n if (!shadowRoot) {\n return;\n }\n const list = shadowRoot.getElementById('beacon-toast-list');\n if (list) {\n removeAllChildNodes(list);\n yield addActionsToToast(shadowRoot, toastConfig, list);\n }\n const toastTextEl = shadowRoot.getElementById('beacon-text');\n if (toastTextEl) {\n toastTextEl.innerHTML = formatToastText(toastConfig.body);\n }\n if (timer) {\n timeout = window.setTimeout(() => __awaiter(void 0, void 0, void 0, function* () {\n yield closeToast();\n }), timer);\n }\n const doneButton = shadowRoot.getElementById('beacon-toast-button-done');\n if (doneButton) {\n doneButton.addEventListener('click', () => __awaiter(void 0, void 0, void 0, function* () {\n yield closeToast();\n }));\n }\n});\n/**\n * Create a new toast\n *\n * @param toastConfig Configuration of the toast\n */\nconst openToast = (toastConfig) => __awaiter(void 0, void 0, void 0, function* () {\n var _a;\n if (expandTimeout) {\n clearTimeout(expandTimeout);\n }\n const wrapper = document.getElementById('beacon-toast-wrapper');\n if (wrapper) {\n if (toastConfig.forceNew) {\n yield closeToast();\n yield createNewToast(toastConfig);\n }\n else {\n yield updateToast(toastConfig);\n }\n }\n else {\n yield createNewToast(toastConfig);\n }\n if (globalToastConfig && globalToastConfig.state === 'finished') {\n const shadowRoot = (_a = document.getElementById('beacon-toast-wrapper')) === null || _a === void 0 ? void 0 : _a.shadowRoot;\n if (shadowRoot) {\n hideLoader(shadowRoot);\n showClose(shadowRoot);\n expandList(shadowRoot);\n }\n }\n return;\n});\nexport { closeToast, openToast };\n//# sourceMappingURL=Toast.js.map","export const toastTemplates = { \"default\": { \"html\": \"<div id=\\\"beacon-toast\\\" class=\\\"beacon-toast__base animated fadeIn\\\">\\n <div class=\\\"beacon-toast__content\\\">\\n <p id=\\\"beacon-text\\\">\\n {{text}}\\n <a id=\\\"beacon-open-wallet\\\" class=\\\"beacon-toast__wallet__link\\\"\\n >Open\\n <svg\\n aria-hidden=\\\"true\\\"\\n focusable=\\\"false\\\"\\n data-prefix=\\\"fas\\\"\\n data-icon=\\\"external-link-alt\\\"\\n class=\\\"svg-inline--fa fa-external-link-alt fa-w-16\\\"\\n role=\\\"img\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n viewBox=\\\"0 0 512 512\\\"\\n >\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z\\\"\\n ></path></svg\\n ></a>\\n </p>\\n\\n <svg\\n id=\\\"beacon-toast-button-expand\\\"\\n class=\\\"beacon-toast__more\\\"\\n aria-hidden=\\\"true\\\"\\n focusable=\\\"false\\\"\\n data-prefix=\\\"fas\\\"\\n data-icon=\\\"angle-down\\\"\\n class=\\\"svg-inline--fa fa-angle-down fa-w-10\\\"\\n role=\\\"img\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n viewBox=\\\"0 0 320 512\\\"\\n >\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\\\"\\n ></path>\\n </svg>\\n <svg\\n id=\\\"beacon-toast-button-close\\\"\\n class=\\\"beacon-toast__more\\\"\\n aria-hidden=\\\"true\\\"\\n focusable=\\\"false\\\"\\n data-prefix=\\\"fal\\\"\\n data-icon=\\\"times\\\"\\n class=\\\"svg-inline--fa fa-times fa-w-10\\\"\\n role=\\\"img\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n viewBox=\\\"0 0 320 512\\\"\\n >\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"M193.94 256L296.5 153.44l21.15-21.15c3.12-3.12 3.12-8.19 0-11.31l-22.63-22.63c-3.12-3.12-8.19-3.12-11.31 0L160 222.06 36.29 98.34c-3.12-3.12-8.19-3.12-11.31 0L2.34 120.97c-3.12 3.12-3.12 8.19 0 11.31L126.06 256 2.34 379.71c-3.12 3.12-3.12 8.19 0 11.31l22.63 22.63c3.12 3.12 8.19 3.12 11.31 0L160 289.94 262.56 392.5l21.15 21.15c3.12 3.12 8.19 3.12 11.31 0l22.63-22.63c3.12-3.12 3.12-8.19 0-11.31L193.94 256z\\\"\\n ></path>\\n </svg>\\n </div>\\n <div id=\\\"beacon-toast-loader\\\" class=\\\"progress-line\\\"></div>\\n <hr id=\\\"beacon-toast-loader-placeholder\\\" class=\\\"hide\\\" />\\n <div id=\\\"beacon-toast-list\\\" class=\\\"beacon-toast__more--action\\\"></div>\\n</div>\\n\", \"css\": \":host {\\n --animation-duration: 300ms;\\n all: initial;\\n}\\n\\n@keyframes fadeIn {\\n from {\\n opacity: 0;\\n }\\n to {\\n opacity: 1;\\n }\\n}\\n\\n@keyframes fadeOut {\\n from {\\n opacity: 1;\\n }\\n to {\\n opacity: 0;\\n }\\n}\\n\\n.animated {\\n animation-duration: var(--animation-duration);\\n animation-fill-mode: both;\\n}\\n\\n.fadeIn {\\n animation-name: fadeIn;\\n}\\n\\n.fadeOut {\\n animation-name: fadeOut;\\n}\\n\\n.beacon-toast__base {\\n position: fixed;\\n top: 16px;\\n right: 16px;\\n z-index: 2147483000;\\n margin: 0 auto;\\n border-radius: 8px;\\n overflow: hidden;\\n box-shadow: 0 12px 24px 0 rgba(0, 0, 0, 0.1);\\n flex-direction: column;\\n}\\n@media (max-width: 576px) {\\n .beacon-toast__base {\\n top: 8px;\\n right: 8px;\\n left: 8px;\\n }\\n .beacon-toast__wallet__outer {\\n flex-wrap: wrap;\\n }\\n .beacon-toast__wallet__link {\\n flex: 0 0 100%;\\n margin-left: 0 !important;\\n }\\n}\\n\\n.theme__light.beacon-toast__base {\\n background: #fff;\\n}\\n\\n.theme__dark.beacon-toast__base {\\n background: #27334c;\\n}\\n\\n.theme__dark p {\\n color: #6183ff;\\n}\\n\\na {\\n text-decoration: none;\\n color: #3880ff;\\n}\\n\\na svg {\\n width: 12px;\\n margin-left: 2px;\\n}\\n\\na:visited {\\n color: #3880ff;\\n}\\n\\nhr {\\n height: 1px;\\n color: rgba(0, 0, 0, 0.12);\\n background-color: rgba(0, 0, 0, 0.12);\\n border: none;\\n width: 100%;\\n margin: 0;\\n display: none;\\n}\\n\\n.show {\\n display: block !important;\\n}\\n\\n.hide {\\n display: none !important;\\n}\\n\\n#beacon-toast-list {\\n display: none;\\n}\\n\\n.beacon-toast__upside_down {\\n transform: rotate(180deg);\\n}\\n\\n.beacon-toast__content {\\n justify-content: space-between;\\n min-height: 56px;\\n height: 0;\\n}\\n\\n.beacon-toast__action__item,\\n.beacon-toast__powered a,\\n.beacon-toast__wallet__container,\\n#beacon-text,\\n.beacon-toast__action__item p,\\n.beacon-toast__wallet__outer {\\n align-items: center;\\n}\\n\\n.beacon-toast__content,\\n.beacon-toast__base,\\n.beacon-toast__action__item,\\n.beacon-toast__powered a,\\n#beacon-text,\\n.beacon-toast__wallet__container,\\n.beacon-toast__wallet__outer {\\n display: flex;\\n}\\n\\n.beacon-toast__content,\\n.beacon-toast__action__item,\\n.beacon-toast__powered a {\\n padding: 0 16px;\\n font-family: Roboto, Helvetica, sans-serif;\\n}\\n\\n#beacon-text strong {\\n display: contents;\\n}\\n.beacon-toast__wallet__link {\\n margin-left: 12px;\\n}\\n.beacon-toast__wallet__link svg {\\n margin-left: 4px;\\n}\\n.beacon-toast__powered a {\\n margin: 4px 0 12px;\\n font-size: 12px;\\n opacity: 0.64;\\n}\\n\\n.beacon-toast__powered svg {\\n width: 20px;\\n height: 20px;\\n margin: 0 2px 0 4px;\\n}\\n\\n.beacon-toast__action__item {\\n font-size: 14px;\\n max-width: 40ch;\\n}\\n\\n.beacon-toast__action__item p {\\n margin-right: 8px;\\n}\\n\\n.beacon-toast__action__item__subtitle,\\n.beacon-toast__powered a {\\n min-width: 88px;\\n color: rgba(0, 0, 0, 0.54);\\n}\\n\\n.theme__dark .beacon-toast__powered a {\\n color: #7c99d6;\\n}\\n\\n.beacon-toast__content__img {\\n width: 24px;\\n height: 24px;\\n margin-right: 4px;\\n image-rendering: -moz-crisp-edges; /* Firefox */\\n image-rendering: -o-crisp-edges; /* Opera */\\n image-rendering: -webkit-optimize-contrast; /* Webkit (non-standard naming) */\\n image-rendering: crisp-edges;\\n -ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */\\n}\\n\\n.beacon-toast__more {\\n width: 14px;\\n transition: transform 0.5s;\\n}\\n\\na,\\n.beacon-toast__more {\\n cursor: pointer;\\n}\\n\\na:hover {\\n opacity: 0.64;\\n}\\n\\n.theme__dark .beacon-toast__more {\\n color: #7c99d6;\\n}\\n\\n.beacon-toast__more--action {\\n margin: 8px 0;\\n}\\n\\n#beacon-text {\\n padding-right: 24px;\\n}\\n\\n.progress-line,\\n.progress-line:before {\\n height: 3px;\\n width: 100%;\\n margin: 0;\\n}\\n.progress-line {\\n background-color: #a7c4f7;\\n display: -webkit-flex;\\n display: flex;\\n}\\n.progress-line:before {\\n background-color: #3880ff;\\n content: '';\\n -webkit-animation: running-progress 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\\n animation: running-progress 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\\n}\\n@-webkit-keyframes running-progress {\\n 0% {\\n margin-left: 0px;\\n margin-right: 100%;\\n }\\n 50% {\\n margin-left: 25%;\\n margin-right: 0%;\\n }\\n 100% {\\n margin-left: 100%;\\n margin-right: 0;\\n }\\n}\\n@keyframes running-progress {\\n 0% {\\n margin-left: 0px;\\n margin-right: 100%;\\n }\\n 50% {\\n margin-left: 25%;\\n margin-right: 0%;\\n }\\n 100% {\\n margin-left: 100%;\\n margin-right: 0;\\n }\\n}\\n\", \"poweredByBeacon\": \"<a href=\\\"https://walletbeacon.io\\\" target=\\\"_blank\\\">\\n powered by\\n <svg\\n id=\\\"f63e95a9-fd19-4487-bc1a-09eb2f066704\\\"\\n data-name=\\\"Guides\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"65\\\"\\n height=\\\"65\\\"\\n viewBox=\\\"0 0 65 65\\\"\\n >\\n <title>beacon_logo</title>\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"M59.66,29.52v1.06c0,.37-.18,9.07-4.11,15.88S44.16,57.75,43.84,57.93l-.91.54-1.61-.93-9.19-5.3a14.68,14.68,0,0,1-1.63-1.06h0a14.09,14.09,0,0,1-1.29-1,17.63,17.63,0,0,1-2.56-2.7,18.58,18.58,0,0,1-2.56-4.51,21.53,21.53,0,0,1-1.5-9,6.21,6.21,0,0,1,2.93-.73c.25,0,.49,0,.74,0a18.29,18.29,0,0,0,1,7.93,15.06,15.06,0,0,0,6.67,8l8.93,5.16c.2-.13.43-.3.68-.48,2.26-1.6,6.42-4.92,8.86-9.13C55.12,39.94,55.8,34,56,31.57l-3.79-2.19a23,23,0,0,0,.6-3.83Z\\\"\\n />\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"M49.22,11.43V23.89c0,.65,0,1.3-.1,1.94v0c-.06.55-.13,1.1-.24,1.63A18,18,0,0,1,47.82,31a19.11,19.11,0,0,1-2.62,4.49,21.37,21.37,0,0,1-7.07,5.8,6.08,6.08,0,0,1-2.42-2.84A18.1,18.1,0,0,0,42,33.7h0a15.12,15.12,0,0,0,3.58-9.81V13.6c-.21-.11-.47-.21-.74-.35-2.52-1.16-7.47-3.1-12.36-3.1-5.42,0-11,2.4-13.08,3.45V18a22.54,22.54,0,0,0-3.63,1.38V11.43l.92-.52c.33-.18,8-4.38,15.79-4.38s15.48,4.2,15.8,4.38Z\\\"\\n />\\n <path\\n fill=\\\"currentColor\\\"\\n d=\\\"M18,26.4,9,31.55q0,.35.06.78a31.63,31.63,0,0,0,3.49,12.28c2.71,4.71,7.55,8.3,9.53,9.64l3.79-2.19a23.33,23.33,0,0,0,3,2.44l-6.88,4-.92-.54c-.31-.18-7.75-4.69-11.68-11.5S5.36,30.92,5.35,30.56V29.49L7,28.55l9.17-5.29c.57-.32,1.14-.61,1.72-.87a13.46,13.46,0,0,1,1.55-.61A17.52,17.52,0,0,1,23,20.91a19.2,19.2,0,0,1,5.19,0,21.49,21.49,0,0,1,8.55,3.24,6.29,6.29,0,0,1-1.25,3.51,17.9,17.9,0,0,0-7.3-3.06A15.14,15.14,0,0,0,18,26.4Z\\\"\\n />\\n </svg>\\n Beacon\\n</a>\\n\" } };\n//# sourceMappingURL=toast-templates.js.map","export var BeaconErrorType;\n(function (BeaconErrorType) {\n /**\n * {@link BroadcastBeaconError}\n *\n * Will be returned if the user chooses that the transaction is broadcast but there is an error (eg. node not available).\n *\n * Returned by: Broadcast | Operation Request\n */\n BeaconErrorType[\"BROADCAST_ERROR\"] = \"BROADCAST_ERROR\";\n /**\n * {@link NetworkNotSupportedBeaconError}\n *\n * Will be returned if the selected network is not supported by the wallet / extension.\n *\n * Returned by: Permission\n */\n BeaconErrorType[\"NETWORK_NOT_SUPPORTED\"] = \"NETWORK_NOT_SUPPORTED\";\n /**\n * {@link NoAddressBeaconError}\n *\n * Will be returned if there is no address present for the protocol / network requested.\n *\n * Returned by: Permission\n */\n BeaconErrorType[\"NO_ADDRESS_ERROR\"] = \"NO_ADDRESS_ERROR\";\n /**\n * {@link NoPrivateKeyBeaconError}\n *\n * Will be returned if the private key matching the sourceAddress could not be found.\n *\n * Returned by: Sign\n */\n BeaconErrorType[\"NO_PRIVATE_KEY_FOUND_ERROR\"] = \"NO_PRIVATE_KEY_FOUND_ERROR\";\n /**\n * {@link NotGrantedBeaconError}\n *\n * Will be returned if the signature was blocked // (Not needed?) Permission: Will be returned if the permissions requested by the App were not granted.\n *\n * Returned by: Sign\n */\n BeaconErrorType[\"NOT_GRANTED_ERROR\"] = \"NOT_GRANTED_ERROR\";\n /**\n * {@link ParametersInvalidBeaconError}\n *\n * Will be returned if any of the parameters are invalid.\n *\n * Returned by: Operation Request\n */\n BeaconErrorType[\"PARAMETERS_INVALID_ERROR\"] = \"PARAMETERS_INVALID_ERROR\";\n /**\n * {@link TooManyOperationsBeaconError}\n *\n * Will be returned if too many operations were in the request and they were not able to fit into a single operation group.\n *\n * Returned by: Operation Request\n */\n BeaconErrorType[\"TOO_MANY_OPERATIONS\"] = \"TOO_MANY_OPERATIONS\";\n /**\n * {@link TransactionInvalidBeaconError}\n *\n * Will be returned if the transaction is not parsable or is rejected by the node.\n *\n * Returned by: Broadcast\n */\n BeaconErrorType[\"TRANSACTION_INVALID_ERROR\"] = \"TRANSACTION_INVALID_ERROR\";\n /**\n * {@link SignatureTypeNotSupportedBeaconError}\n *\n * Will be returned if the signing type is not supported.\n *\n * Returned by: Sign\n */\n BeaconErrorType[\"SIGNATURE_TYPE_NOT_SUPPORTED\"] = \"SIGNATURE_TYPE_NOT_SUPPORTED\";\n // TODO: ENCRYPTION\n // /**\n // * {@link EncryptionTypeNotSupportedBeaconError}\n // *\n // * Will be returned if the encryption type is not supported.\n // *\n // * Returned by: Encrypt\n // */\n // ENCRYPTION_TYPE_NOT_SUPPORTED = 'ENCRYPTION_TYPE_NOT_SUPPORTED',\n /**\n * {@link AbortedBeaconError}\n *\n * Will be returned if the request was aborted by the user or the wallet.\n *\n * Returned by: Permission | Operation Request | Sign Request | Broadcast\n */\n BeaconErrorType[\"ABORTED_ERROR\"] = \"ABORTED_ERROR\";\n /**\n * {@link UnknownBeaconError}\n *\n * Used as a wildcard if an unexpected error occured.\n *\n * Returned by: Permission | Operation Request | Sign Request | Broadcast\n */\n BeaconErrorType[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n})(BeaconErrorType || (BeaconErrorType = {}));\n//# sourceMappingURL=BeaconErrorType.js.map","export const shortenString = (text) => {\n if (text.length >= 12) {\n return `${text.substr(0, 5)}...${text.substr(-5)}`;\n }\n return text;\n};\n//# sourceMappingURL=shorten-string.js.map","var __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};\nimport { openAlert, closeAlerts } from './ui/alert/Alert';\nimport { closeToast, openToast } from './ui/toast/Toast';\nimport { Logger } from './utils/Logger';\nimport { shortenString } from './utils/shorten-string';\nimport { BeaconErrorType } from './types/BeaconErrorType';\nimport { UnknownBeaconError, BeaconError } from '.';\nimport { isMobile } from './utils/platform';\nconst logger = new Logger('BeaconEvents');\nconst SUCCESS_TIMER = 5 * 1000;\nconst SVG_EXTERNAL = `<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"external-link-alt\" class=\"svg-inline--fa fa-external-link-alt fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z\"></path></svg>`;\n/**\n * The different events that can be emitted by the beacon-sdk\n */\nexport var BeaconEvent;\n(function (BeaconEvent) {\n BeaconEvent[\"PERMISSION_REQUEST_SENT\"] = \"PERMISSION_REQUEST_SENT\";\n BeaconEvent[\"PERMISSION_REQUEST_SUCCESS\"] = \"PERMISSION_REQUEST_SUCCESS\";\n BeaconEvent[\"PERMISSION_REQUEST_ERROR\"] = \"PERMISSION_REQUEST_ERROR\";\n BeaconEvent[\"OPERATION_REQUEST_SENT\"] = \"OPERATION_REQUEST_SENT\";\n BeaconEvent[\"OPERATION_REQUEST_SUCCESS\"] = \"OPERATION_REQUEST_SUCCESS\";\n BeaconEvent[\"OPERATION_REQUEST_ERROR\"] = \"OPERATION_REQUEST_ERROR\";\n BeaconEvent[\"SIGN_REQUEST_SENT\"] = \"SIGN_REQUEST_SENT\";\n BeaconEvent[\"SIGN_REQUEST_SUCCESS\"] = \"SIGN_REQUEST_SUCCESS\";\n BeaconEvent[\"SIGN_REQUEST_ERROR\"] = \"SIGN_REQUEST_ERROR\";\n // TODO: ENCRYPTION\n // ENCRYPT_REQUEST_SENT = 'ENCRYPT_REQUEST_SENT',\n // ENCRYPT_REQUEST_SUCCESS = 'ENCRYPT_REQUEST_SUCCESS',\n // ENCRYPT_REQUEST_ERROR = 'ENCRYPT_REQUEST_ERROR',\n BeaconEvent[\"BROADCAST_REQUEST_SENT\"] = \"BROADCAST_REQUEST_SENT\";\n BeaconEvent[\"BROADCAST_REQUEST_SUCCESS\"] = \"BROADCAST_REQUEST_SUCCESS\";\n BeaconEvent[\"BROADCAST_REQUEST_ERROR\"] = \"BROADCAST_REQUEST_ERROR\";\n BeaconEvent[\"ACKNOWLEDGE_RECEIVED\"] = \"ACKNOWLEDGE_RECEIVED\";\n BeaconEvent[\"LOCAL_RATE_LIMIT_REACHED\"] = \"LOCAL_RATE_LIMIT_REACHED\";\n BeaconEvent[\"NO_PERMISSIONS\"] = \"NO_PERMISSIONS\";\n BeaconEvent[\"ACTIVE_ACCOUNT_SET\"] = \"ACTIVE_ACCOUNT_SET\";\n BeaconEvent[\"ACTIVE_TRANSPORT_SET\"] = \"ACTIVE_TRANSPORT_SET\";\n BeaconEvent[\"SHOW_PREPARE\"] = \"SHOW_PREPARE\";\n BeaconEvent[\"HIDE_UI\"] = \"HIDE_UI\";\n BeaconEvent[\"PAIR_INIT\"] = \"PAIR_INIT\";\n BeaconEvent[\"PAIR_SUCCESS\"] = \"PAIR_SUCCESS\";\n BeaconEvent[\"CHANNEL_CLOSED\"] = \"CHANNEL_CLOSED\";\n BeaconEvent[\"INTERNAL_ERROR\"] = \"INTERNAL_ERROR\";\n BeaconEvent[\"UNKNOWN\"] = \"UNKNOWN\";\n})(BeaconEvent || (BeaconEvent = {}));\n/**\n * Show a \"Request sent\" toast\n */\nconst showSentToast = (data) => __awaiter(void 0, void 0, void 0, function* () {\n let openWalletAction;\n const actions = [];\n if (data.walletInfo.deeplink) {\n if (data.walletInfo.type === 'web' ||\n (data.walletInfo.type === 'mobile' && isMobile(window)) ||\n (data.walletInfo.type === 'desktop' && !isMobile(window))) {\n const link = data.walletInfo.deeplink;\n openWalletAction = () => __awaiter(void 0, void 0, void 0, function* () {\n const a = document.createElement('a');\n a.setAttribute('href', link);\n a.setAttribute('target', '_blank');\n a.dispatchEvent(new MouseEvent('click', { view: window, bubbles: true, cancelable: true }));\n });\n }\n }\n actions.push({\n text: `<strong>No answer from your wallet received yet. Please make sure the wallet is open.</strong>`\n });\n actions.push({\n text: 'Did you make a mistake?',\n actionText: 'Cancel Request',\n actionCallback: () => __awaiter(void 0, void 0, void 0, function* () {\n yield closeToast();\n })\n });\n actions.push({\n text: 'Wallet not receiving request?',\n actionText: 'Reset Connection',\n actionCallback: () => __awaiter(void 0, void 0, void 0, function* () {\n yield closeToast();\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const resetCallback = data.extraInfo.resetCallback;\n if (resetCallback) {\n logger.log('showSentToast', 'resetCallback invoked');\n yield resetCallback();\n }\n })\n });\n openToast({\n body: `<span class=\"beacon-toast__wallet__outer\">Request sent to&nbsp;{{wallet}}<span>`,\n walletInfo: data.walletInfo,\n state: 'loading',\n actions,\n openWalletAction\n }).catch((toastError) => console.error(toastError));\n});\nconst showAcknowledgedToast = (data) => __awaiter(void 0, void 0, void 0, function* () {\n openToast({\n body: '<span class=\"beacon-toast__wallet__outer\">Awaiting confirmation in&nbsp;{{wallet}}<span>',\n state: 'acknowledge',\n walletInfo: data.walletInfo\n }).catch((toastError) => console.error(toastError));\n});\nconst showPrepare = (data) => __awaiter(void 0, void 0, void 0, function* () {\n const text = data.walletInfo ? `Preparing Request for {{wallet}}...` : 'Preparing Request...';\n openToast({\n body: `<span class=\"beacon-toast__wallet__outer\">${text}<span>`,\n state: 'prepare',\n walletInfo: data.walletInfo\n }).catch((toastError) => console.error(toastError));\n});\nconst hideUI = () => __awaiter(void 0, void 0, void 0, function* () {\n closeToast();\n closeAlerts();\n});\n/**\n * Show a \"No Permission\" alert\n */\nconst showNoPermissionAlert = () => __awaiter(void 0, void 0, void 0, function* () {\n yield openAlert({\n title: 'No Permission',\n body: 'Please allow the wallet to handle this type of request.'\n });\n});\n/**\n * Show an error toast\n *\n * @param beaconError The beacon error\n */\nconst showErrorToast = (response, buttons) => __awaiter(void 0, void 0, void 0, function* () {\n const error = response.errorResponse.errorType\n ? BeaconError.getError(response.errorResponse.errorType, response.errorResponse.errorData)\n : new UnknownBeaconError();\n const actions = [\n {\n text: `<strong>${error.title}</strong>`\n },\n {\n text: error.description\n }\n ];\n if (response.errorResponse.errorType === BeaconErrorType.TRANSACTION_INVALID_ERROR &&\n response.errorResponse.errorData) {\n actions.push({\n text: '',\n actionText: 'Show Details',\n actionCallback: () => __awaiter(void 0, void 0, void 0, function* () {\n yield closeToast();\n yield openAlert({\n title: error.title,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n body: error.fullDescription,\n buttons\n });\n })\n });\n }\n yield openToast({\n body: `{{wallet}}&nbsp;has returned an error`,\n timer: response.errorResponse.errorType === BeaconErrorType.ABORTED_ERROR\n ? SUCCESS_TIMER\n : undefined,\n state: 'finished',\n walletInfo: response.walletInfo,\n actions\n });\n});\n/**\n * Show a rate limit reached toast\n */\nconst showRateLimitReached = () => __awaiter(void 0, void 0, void 0, function* () {\n openAlert({\n title: 'Error',\n body: 'Rate limit reached. Please slow down',\n buttons: [{ text: 'Done', style: 'outline' }],\n timer: 3000\n }).catch((toastError) => console.error(toastError));\n});\n/**\n * Show a \"connection successful\" alert for 1.5 seconds\n */\nconst showExtensionConnectedAlert = () => __awaiter(void 0, void 0, void 0, function* () {\n yield closeAlerts();\n});\n/**\n * Show a \"channel closed\" alert for 1.5 seconds\n */\nconst showChannelClosedAlert = () => __awaiter(void 0, void 0, void 0, function* () {\n yield openAlert({\n title: 'Channel closed',\n body: `Your peer has closed the connection.`,\n buttons: [{ text: 'Done', style: 'outline' }],\n timer: 1500\n });\n});\nconst showInternalErrorAlert = (data) => __awaiter(void 0, void 0, void 0, function* () {\n const alertConfig = {\n title: 'Internal Error',\n body: `${data}`,\n buttons: [{ text: 'Done', style: 'outline' }]\n };\n yield openAlert(alertConfig);\n});\n/**\n * Show a connect alert with QR code\n *\n * @param data The data that is emitted by the PAIR_INIT event\n */\nconst showPairAlert = (data) => __awaiter(void 0, void 0, void 0, function* () {\n const alertConfig = {\n title: 'Choose your preferred wallet',\n body: `<p></p>`,\n pairingPayload: {\n p2pSyncCode: data.p2pPeerInfo,\n postmessageSyncCode: data.postmessagePeerInfo,\n preferredNetwork: data.preferredNetwork\n },\n // eslint-disable-next-line @typescript-eslint/unbound-method\n closeButtonCallback: data.abortedHandler,\n disclaimerText: data.disclaimerText\n };\n yield openAlert(alertConfig);\n});\n/**\n * Show a \"Permission Granted\" alert\n *\n * @param data The data that is emitted by the PERMISSION_REQUEST_SUCCESS event\n */\nconst showPermissionSuccessAlert = (data) => __awaiter(void 0, void 0, void 0, function* () {\n const { output } = data;\n yield openToast({\n body: `{{wallet}}&nbsp;has granted permission`,\n timer: SUCCESS_TIMER,\n walletInfo: data.walletInfo,\n state: 'finished',\n actions: [\n {\n text: 'Address',\n actionText: `<strong>${shortenString(output.address)}</strong>`\n },\n {\n text: 'Network',\n actionText: `${output.network.type}`\n },\n {\n text: 'Permissions',\n actionText: output.scopes.join(', ')\n }\n ]\n });\n});\n/**\n * Show an \"Operation Broadcasted\" alert\n *\n * @param data The data that is emitted by the OPERATION_REQUEST_SUCCESS event\n */\nconst showOperationSuccessAlert = (data) => __awaiter(void 0, void 0, void 0, function* () {\n const { account, output, blockExplorer } = data;\n yield openToast({\n body: `{{wallet}}&nbsp;successfully submitted operation`,\n timer: SUCCESS_TIMER,\n state: 'finished',\n walletInfo: data.walletInfo,\n actions: [\n {\n text: `<strong>${shortenString(output.transactionHash)}</strong>`,\n actionText: `Open Blockexplorer ${SVG_EXTERNAL}`,\n actionCallback: () => __awaiter(void 0, void 0, void 0, function* () {\n const link = yield blockExplorer.getTransactionLink(output.transactionHash, account.network);\n window.open(link, '_blank');\n yield closeToast();\n })\n }\n ]\n });\n});\n/**\n * Show a \"Transaction Signed\" alert\n *\n * @param data The data that is emitted by the SIGN_REQUEST_SUCCESS event\n */\nconst showSignSuccessAlert = (data) => __awaiter(void 0, void 0, void 0, function* () {\n const output = data.output;\n yield openToast({\n body: `{{wallet}}&nbsp;successfully signed payload`,\n timer: SUCCESS_TIMER,\n state: 'finished',\n walletInfo: data.walletInfo,\n actions: [\n {\n text: `Signature: <strong>${shortenString(output.signature)}</strong>`,\n actionText: 'Copy to clipboard',\n actionCallback: () => __awaiter(void 0, void 0, void 0, function* () {\n navigator.clipboard.writeText(output.signature).then(() => {\n logger.log('showSignSuccessAlert', 'Copying to clipboard was successful!');\n }, (err) => {\n logger.error('showSignSuccessAlert', 'Could not copy text to clipboard: ', err);\n });\n yield closeToast();\n })\n }\n ]\n });\n});\n/**\n * Show a \"Transaction Signed\" alert\n *\n * @param data The data that is emitted by the ENCRYPT_REQUEST_SUCCESS event\n */\n// TODO: ENCRYPTION\n// const showEncryptSuccessAlert = async (\n// data: BeaconEventType[BeaconEvent.ENCRYPT_REQUEST_SUCCESS]\n// ): Promise<void> => {\n// const output = data.output\n// await openToast({\n// body: `{{wallet}}&nbsp;successfully ${\n// data.output.cryptoOperation === EncryptionOperation.ENCRYPT ? 'encrypted' : 'decrypted'\n// } payload`,\n// timer: SUCCESS_TIMER,\n// state: 'finished',\n// walletInfo: data.walletInfo,\n// actions: [\n// {\n// text: `Payload: <strong>${shortenString(output.payload)}</strong>`,\n// actionText: 'Copy to clipboard',\n// actionCallback: async (): Promise<void> => {\n// navigator.clipboard.writeText(output.payload).then(\n// () => {\n// logger.log('showSignSuccessAlert', 'Copying to clipboard was successful!')\n// },\n// (err) => {\n// logger.error('showSignSuccessAlert', 'Could not copy text to clipboard: ', err)\n// }\n// )\n// await closeToast()\n// }\n// }\n// ]\n// })\n// }\n/**\n * Show a \"Broadcasted\" alert\n *\n * @param data The data that is emitted by the BROADCAST_REQUEST_SUCCESS event\n */\nconst showBroadcastSuccessAlert = (data) => __awaiter(void 0, void 0, void 0, function* () {\n const { network, output, blockExplorer } = data;\n yield openToast({\n body: `{{wallet}}&nbsp;successfully injected operation`,\n timer: SUCCESS_TIMER,\n state: 'finished',\n walletInfo: data.walletInfo,\n actions: [\n {\n text: `<strong>${shortenString(output.transactionHash)}</strong>`,\n actionText: `Open Blockexplorer ${SVG_EXTERNAL}`,\n actionCallback: () => __awaiter(void 0, void 0, void 0, function* () {\n const link = yield blockExplorer.getTransactionLink(output.transactionHash, network);\n window.open(link, '_blank');\n yield closeToast();\n })\n }\n ]\n });\n});\nconst emptyHandler = () => () => __awaiter(void 0, void 0, void 0, function* () {\n //\n});\n/**\n * The default event handlers\n */\nexport const defaultEventCallbacks = {\n [BeaconEvent.PERMISSION_REQUEST_SENT]: showSentToast,\n [BeaconEvent.PERMISSION_REQUEST_SUCCESS]: showPermissionSuccessAlert,\n [BeaconEvent.PERMISSION_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.OPERATION_REQUEST_SENT]: showSentToast,\n [BeaconEvent.OPERATION_REQUEST_SUCCESS]: showOperationSuccessAlert,\n [BeaconEvent.OPERATION_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.SIGN_REQUEST_SENT]: showSentToast,\n [BeaconEvent.SIGN_REQUEST_SUCCESS]: showSignSuccessAlert,\n [BeaconEvent.SIGN_REQUEST_ERROR]: showErrorToast,\n // TODO: ENCRYPTION\n // [BeaconEvent.ENCRYPT_REQUEST_SENT]: showSentToast,\n // [BeaconEvent.ENCRYPT_REQUEST_SUCCESS]: showEncryptSuccessAlert,\n // [BeaconEvent.ENCRYPT_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.BROADCAST_REQUEST_SENT]: showSentToast,\n [BeaconEvent.BROADCAST_REQUEST_SUCCESS]: showBroadcastSuccessAlert,\n [BeaconEvent.BROADCAST_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.ACKNOWLEDGE_RECEIVED]: showAcknowledgedToast,\n [BeaconEvent.LOCAL_RATE_LIMIT_REACHED]: showRateLimitReached,\n [BeaconEvent.NO_PERMISSIONS]: showNoPermissionAlert,\n [BeaconEvent.ACTIVE_ACCOUNT_SET]: emptyHandler(),\n [BeaconEvent.ACTIVE_TRANSPORT_SET]: emptyHandler(),\n [BeaconEvent.SHOW_PREPARE]: showPrepare,\n [BeaconEvent.HIDE_UI]: hideUI,\n [BeaconEvent.PAIR_INIT]: showPairAlert,\n [BeaconEvent.PAIR_SUCCESS]: showExtensionConnectedAlert,\n [BeaconEvent.CHANNEL_CLOSED]: showChannelClosedAlert,\n [BeaconEvent.INTERNAL_ERROR]: showInternalErrorAlert,\n [BeaconEvent.UNKNOWN]: emptyHandler()\n};\n/**\n * @internalapi\n *\n * Handles beacon events\n */\nexport class BeaconEventHandler {\n constructor(eventsToOverride = {}, overrideAll) {\n this.callbackMap = {\n [BeaconEvent.PERMISSION_REQUEST_SENT]: [defaultEventCallbacks.PERMISSION_REQUEST_SENT],\n [BeaconEvent.PERMISSION_REQUEST_SUCCESS]: [defaultEventCallbacks.PERMISSION_REQUEST_SUCCESS],\n [BeaconEvent.PERMISSION_REQUEST_ERROR]: [defaultEventCallbacks.PERMISSION_REQUEST_ERROR],\n [BeaconEvent.OPERATION_REQUEST_SENT]: [defaultEventCallbacks.OPERATION_REQUEST_SENT],\n [BeaconEvent.OPERATION_REQUEST_SUCCESS]: [defaultEventCallbacks.OPERATION_REQUEST_SUCCESS],\n [BeaconEvent.OPERATION_REQUEST_ERROR]: [defaultEventCallbacks.OPERATION_REQUEST_ERROR],\n [BeaconEvent.SIGN_REQUEST_SENT]: [defaultEventCallbacks.SIGN_REQUEST_SENT],\n [BeaconEvent.SIGN_REQUEST_SUCCESS]: [defaultEventCallbacks.SIGN_REQUEST_SUCCESS],\n [BeaconEvent.SIGN_REQUEST_ERROR]: [defaultEventCallbacks.SIGN_REQUEST_ERROR],\n // TODO: ENCRYPTION\n // [BeaconEvent.ENCRYPT_REQUEST_SENT]: [defaultEventCallbacks.ENCRYPT_REQUEST_SENT],\n // [BeaconEvent.ENCRYPT_REQUEST_SUCCESS]: [defaultEventCallbacks.ENCRYPT_REQUEST_SUCCESS],\n // [BeaconEvent.ENCRYPT_REQUEST_ERROR]: [defaultEventCallbacks.ENCRYPT_REQUEST_ERROR],\n [BeaconEvent.BROADCAST_REQUEST_SENT]: [defaultEventCallbacks.BROADCAST_REQUEST_SENT],\n [BeaconEvent.BROADCAST_REQUEST_SUCCESS]: [defaultEventCallbacks.BROADCAST_REQUEST_SUCCESS],\n [BeaconEvent.BROADCAST_REQUEST_ERROR]: [defaultEventCallbacks.BROADCAST_REQUEST_ERROR],\n [BeaconEvent.ACKNOWLEDGE_RECEIVED]: [defaultEventCallbacks.ACKNOWLEDGE_RECEIVED],\n [BeaconEvent.LOCAL_RATE_LIMIT_REACHED]: [defaultEventCallbacks.LOCAL_RATE_LIMIT_REACHED],\n [BeaconEvent.NO_PERMISSIONS]: [defaultEventCallbacks.NO_PERMISSIONS],\n [BeaconEvent.ACTIVE_ACCOUNT_SET]: [defaultEventCallbacks.ACTIVE_ACCOUNT_SET],\n [BeaconEvent.ACTIVE_TRANSPORT_SET]: [defaultEventCallbacks.ACTIVE_TRANSPORT_SET],\n [BeaconEvent.SHOW_PREPARE]: [defaultEventCallbacks.SHOW_PREPARE],\n [BeaconEvent.HIDE_UI]: [defaultEventCallbacks.HIDE_UI],\n [BeaconEvent.PAIR_INIT]: [defaultEventCallbacks.PAIR_INIT],\n [BeaconEvent.PAIR_SUCCESS]: [defaultEventCallbacks.PAIR_SUCCESS],\n [BeaconEvent.CHANNEL_CLOSED]: [defaultEventCallbacks.CHANNEL_CLOSED],\n [BeaconEvent.INTERNAL_ERROR]: [defaultEventCallbacks.INTERNAL_ERROR],\n [BeaconEvent.UNKNOWN]: [defaultEventCallbacks.UNKNOWN]\n };\n if (overrideAll) {\n this.setAllHandlers();\n }\n this.overrideDefaults(eventsToOverride);\n }\n /**\n * A method to subscribe to a specific beacon event and register a callback\n *\n * @param event The event being emitted\n * @param eventCallback The callback that will be invoked\n */\n on(event, eventCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n const listeners = this.callbackMap[event] || [];\n listeners.push(eventCallback);\n this.callbackMap[event] = listeners;\n });\n }\n /**\n * Emit a beacon event\n *\n * @param event The event being emitted\n * @param data The data to be emit\n */\n emit(event, data, eventCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n const listeners = this.callbackMap[event];\n if (listeners && listeners.length > 0) {\n listeners.forEach((listener) => __awaiter(this, void 0, void 0, function* () {\n try {\n yield listener(data, eventCallback);\n }\n catch (listenerError) {\n logger.error(`error handling event ${event}`, listenerError);\n }\n }));\n }\n });\n }\n /**\n * Override beacon event default callbacks. This can be used to disable default alert/toast behaviour\n *\n * @param eventsToOverride An object with the events to override\n */\n overrideDefaults(eventsToOverride) {\n Object.keys(eventsToOverride).forEach((untypedEvent) => {\n const eventType = untypedEvent;\n const event = eventsToOverride[eventType];\n if (event) {\n this.callbackMap[eventType] = [event.handler];\n }\n });\n }\n /**\n * Set all event callbacks to a specific handler.\n */\n setAllHandlers(handler) {\n Object.keys(this.callbackMap).forEach((untypedEvent) => {\n const eventType = untypedEvent;\n this.callbackMap[eventType] = [];\n if (handler) {\n this.callbackMap[eventType].push(handler);\n }\n else {\n this.callbackMap[eventType].push((...data) => {\n logger.log(untypedEvent, ...data);\n });\n }\n });\n }\n}\n//# sourceMappingURL=events.js.map","var __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};\nimport { ExposedPromise } from '../../utils/exposed-promise';\nimport { generateGUID } from '../../utils/generate-uuid';\nimport { getKeypairFromSeed, toHex } from '../../utils/crypto';\nimport { StorageKey } from '../..';\nimport { BeaconEventHandler } from '../../events';\nimport { SDK_VERSION } from '../../constants';\nimport { windowRef } from '../../MockWindow';\n/**\n * @internalapi\n *\n * The beacon client is an abstract client that handles everything that is shared between all other clients.\n * Specifically, it handles managing the beaconId and and the local keypair.\n */\nexport class BeaconClient {\n constructor(config) {\n /** The beaconId is a public key that is used to identify one specific application (dapp or wallet).\n * This is used inside a message to specify the sender, for example.\n */\n this._beaconId = new ExposedPromise();\n this.events = new BeaconEventHandler();\n /**\n * The local keypair that is used for the communication encryption\n */\n this._keyPair = new ExposedPromise();\n if (!config.name) {\n throw new Error('Name not set');\n }\n if (!config.storage) {\n throw new Error('Storage not set');\n }\n this.name = config.name;\n this.iconUrl = config.iconUrl;\n this.appUrl = config.appUrl;\n this.storage = config.storage;\n // TODO: This is a temporary \"fix\" to prevent users from creating multiple Client instances\n if (windowRef.beaconCreatedClientInstance) {\n console.warn('[BEACON] It looks like you created multiple Beacon SDK Client instances. This can lead to problems. Only create one instance and re-use it everywhere.');\n }\n else {\n ;\n windowRef.beaconCreatedClientInstance = true;\n }\n this.initSDK().catch(console.error);\n }\n get beaconId() {\n return this._beaconId.promise;\n }\n get keyPair() {\n return this._keyPair.promise;\n }\n /**\n * This resets the SDK. After using this method, this instance is no longer usable. You will have to instanciate a new client.\n */\n destroy() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.removeBeaconEntriesFromStorage();\n windowRef.beaconCreatedClientInstance = false;\n });\n }\n /**\n * This method initializes the SDK by setting some values in the storage and generating a keypair.\n */\n initSDK() {\n return __awaiter(this, void 0, void 0, function* () {\n this.storage.set(StorageKey.BEACON_SDK_VERSION, SDK_VERSION).catch(console.error);\n this.loadOrCreateBeaconSecret().catch(console.error);\n return this.keyPair.then((keyPair) => {\n this._beaconId.resolve(toHex(keyPair.publicKey));\n });\n });\n }\n /**\n * Removes all beacon values from the storage.\n */\n removeBeaconEntriesFromStorage() {\n return __awaiter(this, void 0, void 0, function* () {\n const allKeys = Object.values(StorageKey);\n yield Promise.all(allKeys.map((key) => this.storage.delete(key)));\n });\n }\n /**\n * This method tries to load the seed from storage, if it doesn't exist, a new one will be created and persisted.\n */\n loadOrCreateBeaconSecret() {\n return __awaiter(this, void 0, void 0, function* () {\n const storageValue = yield this.storage.get(StorageKey.BEACON_SDK_SECRET_SEED);\n if (storageValue && typeof storageValue === 'string') {\n this._keyPair.resolve(yield getKeypairFromSeed(storageValue));\n }\n else {\n const key = yield generateGUID();\n yield this.storage.set(StorageKey.BEACON_SDK_SECRET_SEED, key);\n this._keyPair.resolve(yield getKeypairFromSeed(key));\n }\n });\n }\n}\n//# sourceMappingURL=BeaconClient.js.map","var __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};\n/* eslint-disable prefer-arrow/prefer-arrow-functions */\nfunction fixArrayType(array) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return array;\n}\n/* eslint-enable prefer-arrow/prefer-arrow-functions */\n/**\n * @internalapi\n *\n * The StorageManager provides CRUD functionality for specific entities and persists them to the provided storage.\n */\nexport class StorageManager {\n constructor(storage, storageKey) {\n this.storage = storage;\n this.storageKey = storageKey;\n }\n getAll() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.get(this.storageKey);\n });\n }\n getOne(predicate) {\n return __awaiter(this, void 0, void 0, function* () {\n const entities = yield this.storage.get(this.storageKey);\n return fixArrayType(entities).find(predicate);\n });\n }\n addOne(element, predicate, overwrite = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const entities = yield this.storage.get(this.storageKey);\n if (!fixArrayType(entities).some(predicate)) {\n fixArrayType(entities).push(element);\n }\n else if (overwrite) {\n for (let i = 0; i < entities.length; i++) {\n if (predicate(fixArrayType(entities)[i])) {\n entities[i] = element;\n }\n }\n }\n return this.storage.set(this.storageKey, entities);\n });\n }\n remove(predicate) {\n return __awaiter(this, void 0, void 0, function* () {\n const entities = yield this.storage.get(this.storageKey);\n const filteredEntities = fixArrayType(entities).filter((entity) => !predicate(entity));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.storage.set(this.storageKey, filteredEntities);\n });\n }\n removeAll() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.delete(this.storageKey);\n });\n }\n}\n//# sourceMappingURL=StorageManager.js.map","var __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};\nimport { BeaconMessageType, PermissionScope } from '..';\nimport { getAccountIdentifier } from '../utils/get-account-identifier';\n/**\n * @internalapi\n *\n * The PermissionValidator is used to check if permissions for a certain message type have been given\n */\nexport class PermissionValidator {\n /**\n * Check if permissions were given for a certain message type.\n *\n * PermissionRequest and BroadcastRequest will always return true.\n *\n * @param message Beacon Message\n */\n static hasPermission(message, getOne, getAll) {\n return __awaiter(this, void 0, void 0, function* () {\n switch (message.type) {\n case BeaconMessageType.PermissionRequest:\n case BeaconMessageType.BroadcastRequest: {\n return true;\n }\n case BeaconMessageType.OperationRequest: {\n const accountIdentifier = yield getAccountIdentifier(message.sourceAddress, message.network);\n const permission = yield getOne(accountIdentifier);\n if (!permission) {\n return false;\n }\n return permission.scopes.includes(PermissionScope.OPERATION_REQUEST);\n }\n case BeaconMessageType.SignPayloadRequest: {\n const permissions = yield getAll();\n const filteredPermissions = permissions.filter((permission) => permission.address === message.sourceAddress);\n if (filteredPermissions.length === 0) {\n return false;\n }\n return filteredPermissions.some((permission) => permission.scopes.includes(PermissionScope.SIGN));\n }\n default:\n throw new Error('Message not handled');\n }\n });\n }\n}\n//# sourceMappingURL=PermissionValidator.js.map","var __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};\nimport { StorageKey } from '..';\nimport { StorageManager } from './StorageManager';\nimport { PermissionValidator } from './PermissionValidator';\n/**\n * @internalapi\n *\n * The AccountManager provides CRUD functionality for account entities and persists them to the provided storage.\n */\nexport class AccountManager {\n constructor(storage) {\n this.storageManager = new StorageManager(storage, StorageKey.ACCOUNTS);\n }\n getAccounts() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.getAll();\n });\n }\n getAccount(accountIdentifier) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.getOne((account) => account.accountIdentifier === accountIdentifier);\n });\n }\n addAccount(accountInfo) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.addOne(accountInfo, (account) => account.accountIdentifier === accountInfo.accountIdentifier);\n });\n }\n removeAccount(accountIdentifier) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.remove((account) => account.accountIdentifier === accountIdentifier);\n });\n }\n removeAccounts(accountIdentifiers) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.remove((account) => accountIdentifiers.includes(account.accountIdentifier));\n });\n }\n removeAllAccounts() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.removeAll();\n });\n }\n hasPermission(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return PermissionValidator.hasPermission(message, this.getAccount.bind(this), this.getAccounts.bind(this));\n });\n }\n}\n//# sourceMappingURL=AccountManager.js.map","var __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};\nimport { ExposedPromise, ExposedPromiseStatus } from '../../utils/exposed-promise';\nimport { Serializer, TransportStatus, BeaconMessageType } from '../..';\nimport { BeaconEventHandler, BeaconEvent } from '../../events';\nimport { BeaconClient } from '../beacon-client/BeaconClient';\nimport { AccountManager } from '../../managers/AccountManager';\nimport { generateGUID } from '../../utils/generate-uuid';\nimport { BEACON_VERSION } from '../../constants';\nimport { getSenderId } from '../../utils/get-sender-id';\nimport { Logger } from '../../utils/Logger';\nconst logger = new Logger('Client');\n/**\n * @internalapi\n *\n * This abstract class handles the a big part of the logic that is shared between the dapp and wallet client.\n * For example, it selects and manages the transport and accounts.\n */\nexport class Client extends BeaconClient {\n constructor(config) {\n var _a, _b;\n super(config);\n /**\n * How many requests can be sent after another\n */\n this.rateLimit = 2;\n /**\n * The time window in seconds in which the \"rateLimit\" is checked\n */\n this.rateLimitWindowInSeconds = 5;\n /**\n * Stores the times when requests have been made to determine if the rate limit has been reached\n */\n this.requestCounter = [];\n this._transport = new ExposedPromise();\n this.events = new BeaconEventHandler(config.eventHandlers, (_a = config.disableDefaultEvents) !== null && _a !== void 0 ? _a : false);\n this.accountManager = new AccountManager(config.storage);\n this.matrixNodes = (_b = config.matrixNodes) !== null && _b !== void 0 ? _b : [];\n this.handleResponse = (message, connectionInfo) => {\n throw new Error(`not overwritten${JSON.stringify(message)} - ${JSON.stringify(connectionInfo)}`);\n };\n }\n get transport() {\n return this._transport.promise;\n }\n /**\n * Returns the connection status of the Client\n */\n get connectionStatus() {\n var _a, _b;\n return (_b = (_a = this._transport.promiseResult) === null || _a === void 0 ? void 0 : _a.connectionStatus) !== null && _b !== void 0 ? _b : TransportStatus.NOT_CONNECTED;\n }\n /**\n * Returns whether or not the transaport is ready\n */\n get ready() {\n return this.transport.then(() => undefined);\n }\n /**\n * Return all locally known accounts\n */\n getAccounts() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.accountManager.getAccounts();\n });\n }\n /**\n * Return the account by ID\n * @param accountIdentifier The ID of an account\n */\n getAccount(accountIdentifier) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.accountManager.getAccount(accountIdentifier);\n });\n }\n /**\n * Remove the account by ID\n * @param accountIdentifier The ID of an account\n */\n removeAccount(accountIdentifier) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.accountManager.removeAccount(accountIdentifier);\n });\n }\n /**\n * Remove all locally stored accounts\n */\n removeAllAccounts() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.accountManager.removeAllAccounts();\n });\n }\n /**\n * Add a new request (current timestamp) to the pending requests, remove old ones and check if we are above the limit\n */\n addRequestAndCheckIfRateLimited() {\n return __awaiter(this, void 0, void 0, function* () {\n const now = new Date().getTime();\n this.requestCounter = this.requestCounter.filter((date) => date + this.rateLimitWindowInSeconds * 1000 > now);\n this.requestCounter.push(now);\n return this.requestCounter.length > this.rateLimit;\n });\n }\n /**\n * This method initializes the client. It will check if the connection should be established to a\n * browser extension or if the P2P transport should be used.\n *\n * @param transport A transport that can be provided by the user\n */\n init(transport) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._transport.status === ExposedPromiseStatus.RESOLVED) {\n return (yield this.transport).type;\n }\n yield this.setTransport(transport); // Let users define their own transport\n return transport.type;\n });\n }\n /**\n * Returns the metadata of this DApp\n */\n getOwnAppMetadata() {\n return __awaiter(this, void 0, void 0, function* () {\n return {\n senderId: yield getSenderId(yield this.beaconId),\n name: this.name,\n icon: this.iconUrl\n };\n });\n }\n /**\n * Return all known peers\n */\n getPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n return (yield this.transport).getPeers();\n });\n }\n /**\n * Add a new peer to the known peers\n * @param peer The new peer to add\n */\n addPeer(peer) {\n return __awaiter(this, void 0, void 0, function* () {\n return (yield this.transport).addPeer(peer);\n });\n }\n destroy() {\n const _super = Object.create(null, {\n destroy: { get: () => super.destroy }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (this._transport.status === ExposedPromiseStatus.RESOLVED) {\n yield (yield this.transport).disconnect();\n }\n yield _super.destroy.call(this);\n });\n }\n /**\n * A \"setter\" for when the transport needs to be changed.\n */\n setTransport(transport) {\n return __awaiter(this, void 0, void 0, function* () {\n if (transport) {\n if (this._transport.isSettled()) {\n // If the promise has already been resolved we need to create a new one.\n this._transport = ExposedPromise.resolve(transport);\n }\n else {\n this._transport.resolve(transport);\n }\n }\n else {\n if (this._transport.isSettled()) {\n // If the promise has already been resolved we need to create a new one.\n this._transport = new ExposedPromise();\n }\n }\n yield this.events.emit(BeaconEvent.ACTIVE_TRANSPORT_SET, transport);\n });\n }\n addListener(transport) {\n return __awaiter(this, void 0, void 0, function* () {\n transport\n .addListener((message, connectionInfo) => __awaiter(this, void 0, void 0, function* () {\n if (typeof message === 'string') {\n const deserializedMessage = (yield new Serializer().deserialize(message));\n this.handleResponse(deserializedMessage, connectionInfo);\n }\n }))\n .catch((error) => logger.error('addListener', error));\n });\n }\n sendDisconnectToPeer(peer, transport) {\n return __awaiter(this, void 0, void 0, function* () {\n const request = {\n id: yield generateGUID(),\n version: BEACON_VERSION,\n senderId: yield getSenderId(yield this.beaconId),\n type: BeaconMessageType.Disconnect\n };\n const payload = yield new Serializer().serialize(request);\n const selectedTransport = transport !== null && transport !== void 0 ? transport : (yield this.transport);\n yield selectedTransport.send(payload, peer);\n });\n }\n}\n//# sourceMappingURL=Client.js.map","var __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};\nimport { StorageKey } from '..';\nimport { StorageManager } from './StorageManager';\n/**\n * @internalapi\n *\n * The AppMetadataManager provides CRUD functionality for app-metadata entities and persists them to the provided storage.\n */\nexport class AppMetadataManager {\n constructor(storage) {\n this.storageManager = new StorageManager(storage, StorageKey.APP_METADATA_LIST);\n }\n getAppMetadataList() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.getAll();\n });\n }\n getAppMetadata(senderId) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.getOne((appMetadata) => appMetadata.senderId === senderId);\n });\n }\n addAppMetadata(appMetadata) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.addOne(appMetadata, (appMetadataElement) => appMetadataElement.senderId === appMetadata.senderId);\n });\n }\n removeAppMetadata(senderId) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.remove((appMetadata) => appMetadata.senderId === senderId);\n });\n }\n removeAppMetadatas(senderIds) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.remove((appMetadata) => senderIds.includes(appMetadata.senderId));\n });\n }\n removeAllAppMetadata() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.removeAll();\n });\n }\n}\n//# sourceMappingURL=AppMetadataManager.js.map","var __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};\nimport { assertNever } from '../utils/assert-never';\nimport { BeaconMessageType } from '..';\nimport { Logger } from '../utils/Logger';\nconst logger = new Logger('IncomingRequestInterceptor');\n/**\n * @internalapi\n *\n * The IncomingRequestInterceptor is used in the WalletClient to intercept an incoming request and enrich it with data, like app metadata.\n */\nexport class IncomingRequestInterceptor {\n /**\n * The method that is called during the interception\n *\n * @param config\n */\n static intercept(config) {\n return __awaiter(this, void 0, void 0, function* () {\n const { message, connectionInfo, appMetadataManager, interceptorCallback } = config;\n // TODO: Remove v1 compatibility in later version\n if (message.beaconId && !message.senderId) {\n message.senderId = message.beaconId;\n delete message.beaconId;\n }\n switch (message.type) {\n case BeaconMessageType.PermissionRequest:\n {\n // TODO: Remove v1 compatibility in later version\n if (message.appMetadata.beaconId && !message.appMetadata.senderId) {\n message.appMetadata.senderId = message.appMetadata.beaconId;\n delete message.appMetadata.beaconId;\n }\n yield appMetadataManager.addAppMetadata(message.appMetadata);\n const request = message;\n interceptorCallback(request, connectionInfo);\n }\n break;\n case BeaconMessageType.OperationRequest:\n {\n const appMetadata = yield IncomingRequestInterceptor.getAppMetadata(appMetadataManager, message.senderId);\n const request = Object.assign({ appMetadata }, message);\n interceptorCallback(request, connectionInfo);\n }\n break;\n case BeaconMessageType.SignPayloadRequest:\n {\n const appMetadata = yield IncomingRequestInterceptor.getAppMetadata(appMetadataManager, message.senderId);\n const request = Object.assign({ appMetadata }, message);\n interceptorCallback(request, connectionInfo);\n }\n break;\n // TODO: ENCRYPTION\n // case BeaconMessageType.EncryptPayloadRequest:\n // {\n // const appMetadata: AppMetadata = await IncomingRequestInterceptor.getAppMetadata(\n // appMetadataManager,\n // message.senderId\n // )\n // const request: EncryptPayloadRequestOutput = {\n // appMetadata,\n // ...message\n // }\n // interceptorCallback(request, connectionInfo)\n // }\n // break\n case BeaconMessageType.BroadcastRequest:\n {\n const appMetadata = yield IncomingRequestInterceptor.getAppMetadata(appMetadataManager, message.senderId);\n const request = Object.assign({ appMetadata }, message);\n interceptorCallback(request, connectionInfo);\n }\n break;\n default:\n logger.log('intercept', 'Message not handled');\n assertNever(message);\n }\n });\n }\n static getAppMetadata(appMetadataManager, senderId) {\n return __awaiter(this, void 0, void 0, function* () {\n const appMetadata = yield appMetadataManager.getAppMetadata(senderId);\n if (!appMetadata) {\n throw new Error('AppMetadata not found');\n }\n return appMetadata;\n });\n }\n}\n//# sourceMappingURL=IncomingRequestInterceptor.js.map","var __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};\nimport { assertNever } from '../utils/assert-never';\nimport { BeaconMessageType } from '..';\nimport { BEACON_VERSION } from '../constants';\nimport { getAddressFromPublicKey } from '../utils/crypto';\nimport { getAccountIdentifier } from '../utils/get-account-identifier';\nimport { BeaconErrorType } from '../types/BeaconErrorType';\nimport { Logger } from '../utils/Logger';\nconst logger = new Logger('OutgoingResponseInterceptor');\n/**\n * @internalapi\n *\n * The OutgoingResponseInterceptor is used in the WalletClient to intercept an outgoing response and enrich it with data.\n */\nexport class OutgoingResponseInterceptor {\n static intercept(config) {\n return __awaiter(this, void 0, void 0, function* () {\n const { senderId, request, message, ownAppMetadata, permissionManager, appMetadataManager, interceptorCallback } = config;\n // TODO: Remove v1 compatibility in later version\n const interceptorCallbackWrapper = (msg) => {\n const untypedMessage = msg;\n untypedMessage.beaconId = msg.senderId;\n interceptorCallback(msg);\n };\n switch (message.type) {\n case BeaconMessageType.Error: {\n const response = {\n type: message.type,\n version: BEACON_VERSION,\n senderId,\n id: message.id,\n errorType: message.errorType\n };\n if (message.errorType === BeaconErrorType.TRANSACTION_INVALID_ERROR && message.errorData) {\n const errorData = message.errorData;\n // Check if error data is in correct format\n if (Array.isArray(errorData) &&\n errorData.every((item) => Boolean(item.kind) && Boolean(item.id))) {\n response.errorData = message.errorData;\n }\n else {\n logger.warn('ErrorData provided is not in correct format. It needs to be an array of RPC errors. It will not be included in the message sent to the dApp');\n }\n }\n interceptorCallbackWrapper(response);\n break;\n }\n case BeaconMessageType.Acknowledge: {\n const response = {\n type: message.type,\n version: BEACON_VERSION,\n senderId,\n id: message.id\n };\n interceptorCallbackWrapper(response);\n break;\n }\n case BeaconMessageType.PermissionResponse: {\n const response = Object.assign({ senderId, version: BEACON_VERSION, appMetadata: ownAppMetadata }, message);\n // TODO: Migration code. Remove sometime after 1.0.0 release.\n const publicKey = response.publicKey || response.pubkey || response.pubKey;\n const address = yield getAddressFromPublicKey(publicKey);\n const appMetadata = yield appMetadataManager.getAppMetadata(request.senderId);\n if (!appMetadata) {\n throw new Error('AppMetadata not found');\n }\n const permission = {\n accountIdentifier: yield getAccountIdentifier(address, response.network),\n senderId: request.senderId,\n appMetadata,\n website: '',\n address,\n publicKey,\n network: response.network,\n scopes: response.scopes,\n connectedAt: new Date().getTime()\n };\n permissionManager.addPermission(permission).catch(console.error);\n interceptorCallbackWrapper(response);\n break;\n }\n case BeaconMessageType.OperationResponse:\n {\n const response = Object.assign({ senderId, version: BEACON_VERSION }, message);\n interceptorCallbackWrapper(response);\n }\n break;\n case BeaconMessageType.SignPayloadResponse:\n {\n const response = Object.assign({ senderId, version: BEACON_VERSION }, message);\n interceptorCallbackWrapper(response);\n }\n break;\n // TODO: ENCRYPTION\n // case BeaconMessageType.EncryptPayloadResponse:\n // {\n // const response: EncryptPayloadResponse = {\n // senderId,\n // version: BEACON_VERSION,\n // ...message\n // }\n // interceptorCallbackWrapper(response)\n // }\n // break\n case BeaconMessageType.BroadcastResponse:\n {\n const response = Object.assign({ senderId, version: BEACON_VERSION }, message);\n interceptorCallbackWrapper(response);\n }\n break;\n default:\n logger.log('intercept', 'Message not handled');\n assertNever(message);\n }\n });\n }\n}\n//# sourceMappingURL=OutgoingResponseInterceptor.js.map","var __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};\nimport { Serializer, Client, LocalStorage, TransportStatus, WalletP2PTransport } from '../..';\nimport { PermissionManager } from '../../managers/PermissionManager';\nimport { AppMetadataManager } from '../../managers/AppMetadataManager';\nimport { IncomingRequestInterceptor } from '../../interceptors/IncomingRequestInterceptor';\nimport { OutgoingResponseInterceptor } from '../../interceptors/OutgoingResponseInterceptor';\nimport { BeaconMessageType } from '../../types/beacon/BeaconMessageType';\nimport { getSenderId } from '../../utils/get-sender-id';\nimport { ExposedPromise } from '../../utils/exposed-promise';\nimport { Logger } from '../../utils/Logger';\nconst logger = new Logger('WalletClient');\n/**\n * @publicapi\n *\n * The WalletClient has to be used in the wallet. It handles all the logic related to connecting to beacon-compatible\n * dapps and handling/responding to requests.\n *\n * @category Wallet\n */\nexport class WalletClient extends Client {\n constructor(config) {\n super(Object.assign({ storage: new LocalStorage() }, config));\n /**\n * Returns whether or not the transport is connected\n */\n this._isConnected = new ExposedPromise();\n /**\n * This array stores pending requests, meaning requests we received and have not yet handled / sent a response.\n */\n this.pendingRequests = [];\n this.permissionManager = new PermissionManager(new LocalStorage());\n this.appMetadataManager = new AppMetadataManager(new LocalStorage());\n }\n get isConnected() {\n return this._isConnected.promise;\n }\n init() {\n const _super = Object.create(null, {\n init: { get: () => super.init }\n });\n return __awaiter(this, void 0, void 0, function* () {\n const keyPair = yield this.keyPair; // We wait for keypair here so the P2P Transport creation is not delayed and causing issues\n const p2pTransport = new WalletP2PTransport(this.name, keyPair, this.storage, this.matrixNodes, this.iconUrl, this.appUrl);\n return _super.init.call(this, p2pTransport);\n });\n }\n /**\n * This method initiates a connection to the P2P network and registers a callback that will be called\n * whenever a message is received.\n *\n * @param newMessageCallback The callback that will be invoked for every message the transport receives.\n */\n connect(newMessageCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n this.handleResponse = (message, connectionContext) => __awaiter(this, void 0, void 0, function* () {\n if (message.type === BeaconMessageType.Disconnect) {\n const transport = yield this.transport;\n const peers = yield transport.getPeers();\n const peer = peers.find((peerEl) => peerEl.senderId === message.senderId);\n if (peer) {\n yield this.removePeer(peer);\n }\n return;\n }\n if (!this.pendingRequests.some((request) => request[0].id === message.id)) {\n this.pendingRequests.push([message, connectionContext]);\n if (message.version !== '1') {\n yield this.sendAcknowledgeResponse(message, connectionContext);\n }\n yield IncomingRequestInterceptor.intercept({\n message,\n connectionInfo: connectionContext,\n appMetadataManager: this.appMetadataManager,\n interceptorCallback: newMessageCallback\n });\n }\n });\n return this._connect();\n });\n }\n /**\n * The method will attempt to initiate a connection using the active transport.\n */\n _connect() {\n return __awaiter(this, void 0, void 0, function* () {\n const transport = (yield this.transport);\n if (transport.connectionStatus === TransportStatus.NOT_CONNECTED) {\n yield transport.connect();\n transport\n .addListener((message, connectionInfo) => __awaiter(this, void 0, void 0, function* () {\n if (typeof message === 'string') {\n const deserializedMessage = (yield new Serializer().deserialize(message));\n this.handleResponse(deserializedMessage, connectionInfo);\n }\n }))\n .catch((error) => logger.log('_connect', error));\n this._isConnected.resolve(true);\n }\n else {\n // NO-OP\n }\n });\n }\n /**\n * This method sends a response for a specific request back to the DApp\n *\n * @param message The BeaconResponseMessage that will be sent back to the DApp\n */\n respond(message) {\n return __awaiter(this, void 0, void 0, function* () {\n const request = this.pendingRequests.find((pendingRequest) => pendingRequest[0].id === message.id);\n if (!request) {\n throw new Error('No matching request found!');\n }\n this.pendingRequests = this.pendingRequests.filter((pendingRequest) => pendingRequest[0].id !== message.id);\n yield OutgoingResponseInterceptor.intercept({\n senderId: yield getSenderId(yield this.beaconId),\n request: request[0],\n message,\n ownAppMetadata: yield this.getOwnAppMetadata(),\n permissionManager: this.permissionManager,\n appMetadataManager: this.appMetadataManager,\n interceptorCallback: (response) => __awaiter(this, void 0, void 0, function* () {\n yield this.respondToMessage(response, request[1]);\n })\n });\n });\n }\n getAppMetadataList() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.appMetadataManager.getAppMetadataList();\n });\n }\n getAppMetadata(senderId) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.appMetadataManager.getAppMetadata(senderId);\n });\n }\n removeAppMetadata(senderId) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.appMetadataManager.removeAppMetadata(senderId);\n });\n }\n removeAllAppMetadata() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.appMetadataManager.removeAllAppMetadata();\n });\n }\n getPermissions() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.permissionManager.getPermissions();\n });\n }\n getPermission(accountIdentifier) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.permissionManager.getPermission(accountIdentifier);\n });\n }\n removePermission(accountIdentifier) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.permissionManager.removePermission(accountIdentifier);\n });\n }\n removeAllPermissions() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.permissionManager.removeAllPermissions();\n });\n }\n /**\n * Add a new peer to the known peers\n * @param peer The new peer to add\n */\n addPeer(peer, sendPairingResponse = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const extendedPeer = Object.assign(Object.assign({}, peer), { senderId: yield getSenderId(peer.publicKey) });\n return (yield this.transport).addPeer(extendedPeer, sendPairingResponse);\n });\n }\n removePeer(peer, sendDisconnectToPeer = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const removePeerResult = (yield this.transport).removePeer(peer);\n yield this.removePermissionsForPeers([peer]);\n if (sendDisconnectToPeer) {\n yield this.sendDisconnectToPeer(peer);\n }\n return removePeerResult;\n });\n }\n removeAllPeers(sendDisconnectToPeers = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const peers = yield (yield this.transport).getPeers();\n const removePeerResult = (yield this.transport).removeAllPeers();\n yield this.removePermissionsForPeers(peers);\n if (sendDisconnectToPeers) {\n const disconnectPromises = peers.map((peer) => this.sendDisconnectToPeer(peer));\n yield Promise.all(disconnectPromises);\n }\n return removePeerResult;\n });\n }\n removePermissionsForPeers(peersToRemove) {\n return __awaiter(this, void 0, void 0, function* () {\n const permissions = yield this.permissionManager.getPermissions();\n const peerIdsToRemove = peersToRemove.map((peer) => peer.senderId);\n // Remove all permissions with origin of the specified peer\n const permissionsToRemove = permissions.filter((permission) => peerIdsToRemove.includes(permission.appMetadata.senderId));\n const permissionIdentifiersToRemove = permissionsToRemove.map((permissionInfo) => permissionInfo.accountIdentifier);\n yield this.permissionManager.removePermissions(permissionIdentifiersToRemove);\n });\n }\n /**\n * Send an acknowledge message back to the sender\n *\n * @param message The message that was received\n */\n sendAcknowledgeResponse(request, connectionContext) {\n return __awaiter(this, void 0, void 0, function* () {\n // Acknowledge the message\n const acknowledgeResponse = {\n id: request.id,\n type: BeaconMessageType.Acknowledge\n };\n yield OutgoingResponseInterceptor.intercept({\n senderId: yield getSenderId(yield this.beaconId),\n request,\n message: acknowledgeResponse,\n ownAppMetadata: yield this.getOwnAppMetadata(),\n permissionManager: this.permissionManager,\n appMetadataManager: this.appMetadataManager,\n interceptorCallback: (response) => __awaiter(this, void 0, void 0, function* () {\n yield this.respondToMessage(response, connectionContext);\n })\n });\n });\n }\n /**\n * An internal method to send a BeaconMessage to the DApp\n *\n * @param response Send a message back to the DApp\n */\n respondToMessage(response, connectionContext) {\n return __awaiter(this, void 0, void 0, function* () {\n const serializedMessage = yield new Serializer().serialize(response);\n if (connectionContext) {\n const peerInfos = yield this.getPeers();\n const peer = peerInfos.find((peerInfo) => peerInfo.publicKey === connectionContext.id);\n yield (yield this.transport).send(serializedMessage, peer);\n }\n else {\n yield (yield this.transport).send(serializedMessage);\n }\n });\n }\n}\n//# sourceMappingURL=WalletClient.js.map","export var SigningType;\n(function (SigningType) {\n SigningType[\"RAW\"] = \"raw\";\n SigningType[\"OPERATION\"] = \"operation\";\n SigningType[\"MICHELINE\"] = \"micheline\"; // \"05\" prefix\n})(SigningType || (SigningType = {}));\n//# sourceMappingURL=SigningType.js.map","import { BeaconEvent } from './events';\nimport { BeaconMessageType } from '.';\nexport const messageEvents = {\n [BeaconMessageType.PermissionRequest]: {\n sent: BeaconEvent.PERMISSION_REQUEST_SENT,\n success: BeaconEvent.PERMISSION_REQUEST_SUCCESS,\n error: BeaconEvent.PERMISSION_REQUEST_ERROR\n },\n [BeaconMessageType.PermissionResponse]: {\n sent: BeaconEvent.UNKNOWN,\n success: BeaconEvent.UNKNOWN,\n error: BeaconEvent.UNKNOWN\n },\n [BeaconMessageType.OperationRequest]: {\n sent: BeaconEvent.OPERATION_REQUEST_SENT,\n success: BeaconEvent.OPERATION_REQUEST_SUCCESS,\n error: BeaconEvent.OPERATION_REQUEST_ERROR\n },\n [BeaconMessageType.OperationResponse]: {\n sent: BeaconEvent.UNKNOWN,\n success: BeaconEvent.UNKNOWN,\n error: BeaconEvent.UNKNOWN\n },\n [BeaconMessageType.SignPayloadRequest]: {\n sent: BeaconEvent.SIGN_REQUEST_SENT,\n success: BeaconEvent.SIGN_REQUEST_SUCCESS,\n error: BeaconEvent.SIGN_REQUEST_ERROR\n },\n [BeaconMessageType.SignPayloadResponse]: {\n sent: BeaconEvent.UNKNOWN,\n success: BeaconEvent.UNKNOWN,\n error: BeaconEvent.UNKNOWN\n },\n // TODO: ENCRYPTION\n // [BeaconMessageType.EncryptPayloadRequest]: {\n // sent: BeaconEvent.ENCRYPT_REQUEST_SENT,\n // success: BeaconEvent.ENCRYPT_REQUEST_SUCCESS,\n // error: BeaconEvent.ENCRYPT_REQUEST_ERROR\n // },\n // [BeaconMessageType.EncryptPayloadResponse]: {\n // sent: BeaconEvent.UNKNOWN,\n // success: BeaconEvent.UNKNOWN,\n // error: BeaconEvent.UNKNOWN\n // },\n [BeaconMessageType.BroadcastRequest]: {\n sent: BeaconEvent.BROADCAST_REQUEST_SENT,\n success: BeaconEvent.BROADCAST_REQUEST_SUCCESS,\n error: BeaconEvent.BROADCAST_REQUEST_ERROR\n },\n [BeaconMessageType.BroadcastResponse]: {\n sent: BeaconEvent.UNKNOWN,\n success: BeaconEvent.UNKNOWN,\n error: BeaconEvent.UNKNOWN\n },\n [BeaconMessageType.Acknowledge]: {\n sent: BeaconEvent.UNKNOWN,\n success: BeaconEvent.UNKNOWN,\n error: BeaconEvent.UNKNOWN\n },\n [BeaconMessageType.Disconnect]: {\n sent: BeaconEvent.UNKNOWN,\n success: BeaconEvent.UNKNOWN,\n error: BeaconEvent.UNKNOWN\n },\n [BeaconMessageType.Error]: {\n sent: BeaconEvent.UNKNOWN,\n success: BeaconEvent.UNKNOWN,\n error: BeaconEvent.UNKNOWN\n }\n};\n//# sourceMappingURL=beacon-message-events.js.map","var __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};\nimport { NetworkType } from '..';\nimport { BlockExplorer } from './block-explorer';\nexport class TezblockBlockExplorer extends BlockExplorer {\n constructor(rpcUrls = {\n [NetworkType.MAINNET]: 'https://tezblock.io',\n [NetworkType.DELPHINET]: 'https://delphinet.tezblock.io',\n [NetworkType.EDONET]: 'https://edonet.tezblock.io',\n [NetworkType.FLORENCENET]: 'https://florencenet.tezblock.io',\n [NetworkType.GRANADANET]: 'https://granadanet.tezblock.io',\n [NetworkType.CUSTOM]: 'https://granadanet.tezblock.io'\n }) {\n super(rpcUrls);\n this.rpcUrls = rpcUrls;\n }\n getAddressLink(address, network) {\n return __awaiter(this, void 0, void 0, function* () {\n const blockExplorer = yield this.getLinkForNetwork(network);\n return `${blockExplorer}/account/${address}`;\n });\n }\n getTransactionLink(transactionId, network) {\n return __awaiter(this, void 0, void 0, function* () {\n const blockExplorer = yield this.getLinkForNetwork(network);\n return `${blockExplorer}/transaction/${transactionId}`;\n });\n }\n}\n//# sourceMappingURL=tezblock-blockexplorer.js.map","var __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};\nexport class BlockExplorer {\n constructor(rpcUrls) {\n this.rpcUrls = rpcUrls;\n }\n getLinkForNetwork(network) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.rpcUrls[network.type];\n });\n }\n}\n//# sourceMappingURL=block-explorer.js.map","export var TransportStatus;\n(function (TransportStatus) {\n TransportStatus[\"NOT_CONNECTED\"] = \"NOT_CONNECTED\";\n TransportStatus[\"CONNECTING\"] = \"CONNECTING\";\n TransportStatus[\"CONNECTED\"] = \"CONNECTED\";\n})(TransportStatus || (TransportStatus = {}));\n//# sourceMappingURL=TransportStatus.js.map","/**\n * @internalapi\n */\nexport var TransportType;\n(function (TransportType) {\n TransportType[\"CHROME_MESSAGE\"] = \"chrome_message\";\n TransportType[\"POST_MESSAGE\"] = \"post_message\";\n TransportType[\"LEDGER\"] = \"ledger\";\n TransportType[\"P2P\"] = \"p2p\";\n})(TransportType || (TransportType = {}));\n//# sourceMappingURL=TransportType.js.map","var __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};\nimport { ExposedPromise } from '../../utils/exposed-promise';\nimport { Logger } from '../../utils/Logger';\nimport { generateGUID } from '../../utils/generate-uuid';\nimport { BeaconEvent } from '../../events';\nimport { BEACON_VERSION } from '../../constants';\nimport { getAddressFromPublicKey } from '../../utils/crypto';\nimport { Client, TransportType, StorageKey, BeaconMessageType, PermissionScope, NetworkType, Serializer, LocalStorage, BeaconError, Origin, PostMessageTransport, DappP2PTransport, DappPostMessageTransport, AppMetadataManager } from '../..';\nimport { messageEvents } from '../../beacon-message-events';\nimport { getAccountIdentifier } from '../../utils/get-account-identifier';\nimport { TezblockBlockExplorer } from '../../utils/tezblock-blockexplorer';\nimport { BeaconErrorType } from '../../types/BeaconErrorType';\nimport { getSenderId } from '../../utils/get-sender-id';\nimport { SigningType } from '../../types/beacon/SigningType';\nimport { ColorMode } from '../../types/ColorMode';\nimport { getColorMode, setColorMode } from '../../colorMode';\nimport { desktopList, extensionList, iOSList, webList } from '../../ui/alert/wallet-lists';\nconst logger = new Logger('DAppClient');\n/**\n * @publicapi\n *\n * The DAppClient has to be used in decentralized applications. It handles all the logic related to connecting to beacon-compatible\n * wallets and sending requests.\n *\n * @category DApp\n */\nexport class DAppClient extends Client {\n constructor(config) {\n var _a, _b, _c;\n super(Object.assign({ storage: config && config.storage ? config.storage : new LocalStorage() }, config));\n /**\n * A map of requests that are currently \"open\", meaning we have sent them to a wallet and are still awaiting a response.\n */\n this.openRequests = new Map();\n /**\n * The currently active account. For all requests that are associated to a specific request (operation request, signing request),\n * the active account is used to determine the network and destination wallet\n */\n this._activeAccount = new ExposedPromise();\n /**\n * The currently active peer. This is used to address a peer in case the active account is not set. (Eg. for permission requests)\n */\n this._activePeer = new ExposedPromise();\n this.blockExplorer = (_a = config.blockExplorer) !== null && _a !== void 0 ? _a : new TezblockBlockExplorer();\n this.preferredNetwork = (_b = config.preferredNetwork) !== null && _b !== void 0 ? _b : NetworkType.MAINNET;\n setColorMode((_c = config.colorMode) !== null && _c !== void 0 ? _c : ColorMode.LIGHT);\n this.disclaimerText = config.disclaimerText;\n this.appMetadataManager = new AppMetadataManager(this.storage);\n this.activeAccountLoaded = this.storage\n .get(StorageKey.ACTIVE_ACCOUNT)\n .then((activeAccountIdentifier) => __awaiter(this, void 0, void 0, function* () {\n if (activeAccountIdentifier) {\n yield this.setActiveAccount(yield this.accountManager.getAccount(activeAccountIdentifier));\n }\n else {\n yield this.setActiveAccount(undefined);\n }\n }))\n .catch((storageError) => __awaiter(this, void 0, void 0, function* () {\n yield this.setActiveAccount(undefined);\n console.error(storageError);\n }));\n this.handleResponse = (message, connectionInfo) => __awaiter(this, void 0, void 0, function* () {\n var _d;\n const openRequest = this.openRequests.get(message.id);\n logger.log('handleResponse', 'Received message', message, connectionInfo);\n if (openRequest && message.type === BeaconMessageType.Acknowledge) {\n logger.log(`acknowledge message received for ${message.id}`);\n console.timeLog(message.id, 'acknowledge');\n this.events\n .emit(BeaconEvent.ACKNOWLEDGE_RECEIVED, {\n message,\n extraInfo: {},\n walletInfo: yield this.getWalletInfo()\n })\n .catch(console.error);\n }\n else if (openRequest) {\n if (message.type === BeaconMessageType.PermissionResponse && message.appMetadata) {\n yield this.appMetadataManager.addAppMetadata(message.appMetadata);\n }\n console.timeLog(message.id, 'response');\n console.timeEnd(message.id);\n if (message.type === BeaconMessageType.Error || message.errorType) {\n // TODO: Remove \"any\" once we remove support for v1 wallets\n openRequest.reject(message);\n }\n else {\n openRequest.resolve({ message, connectionInfo });\n }\n this.openRequests.delete(message.id);\n }\n else {\n if (message.type === BeaconMessageType.Disconnect) {\n const relevantTransport = connectionInfo.origin === Origin.P2P\n ? this.p2pTransport\n : (_d = this.postMessageTransport) !== null && _d !== void 0 ? _d : (yield this.transport);\n if (relevantTransport) {\n // TODO: Handle removing it from the right transport (if it was received from the non-active transport)\n const peers = yield relevantTransport.getPeers();\n const peer = peers.find((peerEl) => peerEl.senderId === message.senderId);\n if (peer) {\n yield relevantTransport.removePeer(peer);\n yield this.removeAccountsForPeers([peer]);\n yield this.events.emit(BeaconEvent.CHANNEL_CLOSED);\n }\n else {\n logger.error('handleDisconnect', 'cannot find peer for sender ID', message.senderId);\n }\n }\n }\n else {\n logger.error('handleResponse', 'no request found for id ', message.id);\n }\n }\n });\n }\n initInternalTransports() {\n return __awaiter(this, void 0, void 0, function* () {\n const keyPair = yield this.keyPair;\n if (this.postMessageTransport || this.p2pTransport) {\n return;\n }\n this.postMessageTransport = new DappPostMessageTransport(this.name, keyPair, this.storage);\n yield this.addListener(this.postMessageTransport);\n this.p2pTransport = new DappP2PTransport(this.name, keyPair, this.storage, this.matrixNodes, this.iconUrl, this.appUrl);\n yield this.addListener(this.p2pTransport);\n });\n }\n init(transport) {\n const _super = Object.create(null, {\n init: { get: () => super.init }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (this._initPromise) {\n return this._initPromise;\n }\n try {\n yield this.activeAccountLoaded;\n }\n catch (_a) {\n //\n }\n this._initPromise = new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n if (transport) {\n yield this.addListener(transport);\n resolve(yield _super.init.call(this, transport));\n }\n else if (this._transport.isSettled()) {\n yield (yield this.transport).connect();\n resolve(yield _super.init.call(this, yield this.transport));\n }\n else {\n const activeAccount = yield this.getActiveAccount();\n const stopListening = () => {\n if (this.postMessageTransport) {\n this.postMessageTransport.stopListeningForNewPeers().catch(console.error);\n }\n if (this.p2pTransport) {\n this.p2pTransport.stopListeningForNewPeers().catch(console.error);\n }\n };\n yield this.initInternalTransports();\n if (!this.postMessageTransport || !this.p2pTransport) {\n return;\n }\n this.postMessageTransport.connect().then().catch(console.error);\n if (activeAccount && activeAccount.origin) {\n const origin = activeAccount.origin.type;\n // Select the transport that matches the active account\n if (origin === Origin.EXTENSION) {\n resolve(yield _super.init.call(this, this.postMessageTransport));\n }\n else if (origin === Origin.P2P) {\n resolve(yield _super.init.call(this, this.p2pTransport));\n }\n }\n else {\n const p2pTransport = this.p2pTransport;\n const postMessageTransport = this.postMessageTransport;\n postMessageTransport\n .listenForNewPeer((peer) => {\n logger.log('init', 'postmessage transport peer connected', peer);\n this.events\n .emit(BeaconEvent.PAIR_SUCCESS, peer)\n .catch((emitError) => console.warn(emitError));\n this.setActivePeer(peer).catch(console.error);\n this.setTransport(this.postMessageTransport).catch(console.error);\n stopListening();\n resolve(TransportType.POST_MESSAGE);\n })\n .catch(console.error);\n p2pTransport\n .listenForNewPeer((peer) => {\n logger.log('init', 'p2p transport peer connected', peer);\n this.events\n .emit(BeaconEvent.PAIR_SUCCESS, peer)\n .catch((emitError) => console.warn(emitError));\n this.setActivePeer(peer).catch(console.error);\n this.setTransport(this.p2pTransport).catch(console.error);\n stopListening();\n resolve(TransportType.P2P);\n })\n .catch(console.error);\n PostMessageTransport.getAvailableExtensions()\n .then(() => __awaiter(this, void 0, void 0, function* () {\n this.events\n .emit(BeaconEvent.PAIR_INIT, {\n p2pPeerInfo: () => {\n p2pTransport.connect().then().catch(console.error);\n return p2pTransport.getPairingRequestInfo();\n },\n postmessagePeerInfo: () => postMessageTransport.getPairingRequestInfo(),\n preferredNetwork: this.preferredNetwork,\n abortedHandler: () => {\n this._initPromise = undefined;\n },\n disclaimerText: this.disclaimerText\n })\n .catch((emitError) => console.warn(emitError));\n }))\n .catch((error) => {\n this._initPromise = undefined;\n console.error(error);\n });\n }\n }\n }));\n return this._initPromise;\n });\n }\n /**\n * Returns the active account\n */\n getActiveAccount() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._activeAccount.promise;\n });\n }\n /**\n * Sets the active account\n *\n * @param account The account that will be set as the active account\n */\n setActiveAccount(account) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._activeAccount.isSettled()) {\n // If the promise has already been resolved we need to create a new one.\n this._activeAccount = ExposedPromise.resolve(account);\n }\n else {\n this._activeAccount.resolve(account);\n }\n if (account) {\n const origin = account.origin.type;\n yield this.initInternalTransports();\n // Select the transport that matches the active account\n if (origin === Origin.EXTENSION) {\n yield this.setTransport(this.postMessageTransport);\n }\n else if (origin === Origin.P2P) {\n yield this.setTransport(this.p2pTransport);\n }\n const peer = yield this.getPeer(account);\n yield this.setActivePeer(peer);\n }\n else {\n yield this.setActivePeer(undefined);\n yield this.setTransport(undefined);\n }\n yield this.storage.set(StorageKey.ACTIVE_ACCOUNT, account ? account.accountIdentifier : undefined);\n yield this.events.emit(BeaconEvent.ACTIVE_ACCOUNT_SET, account);\n return;\n });\n }\n /**\n * Clear the active account\n */\n clearActiveAccount() {\n return this.setActiveAccount();\n }\n setColorMode(colorMode) {\n return __awaiter(this, void 0, void 0, function* () {\n return setColorMode(colorMode);\n });\n }\n getColorMode() {\n return __awaiter(this, void 0, void 0, function* () {\n return getColorMode();\n });\n }\n /**\n * @deprecated\n *\n * Use getOwnAppMetadata instead\n */\n getAppMetadata() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.getOwnAppMetadata();\n });\n }\n showPrepare() {\n return __awaiter(this, void 0, void 0, function* () {\n const walletInfo = yield (() => __awaiter(this, void 0, void 0, function* () {\n try {\n return yield this.getWalletInfo();\n }\n catch (_a) {\n return undefined;\n }\n }))();\n yield this.events.emit(BeaconEvent.SHOW_PREPARE, { walletInfo });\n });\n }\n hideUI() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.events.emit(BeaconEvent.HIDE_UI);\n });\n }\n /**\n * Will remove the account from the local storage and set a new active account if necessary.\n *\n * @param accountIdentifier ID of the account\n */\n removeAccount(accountIdentifier) {\n const _super = Object.create(null, {\n removeAccount: { get: () => super.removeAccount }\n });\n return __awaiter(this, void 0, void 0, function* () {\n const removeAccountResult = _super.removeAccount.call(this, accountIdentifier);\n const activeAccount = yield this.getActiveAccount();\n if (activeAccount && activeAccount.accountIdentifier === accountIdentifier) {\n yield this.setActiveAccount(undefined);\n }\n return removeAccountResult;\n });\n }\n /**\n * Remove all accounts and set active account to undefined\n */\n removeAllAccounts() {\n const _super = Object.create(null, {\n removeAllAccounts: { get: () => super.removeAllAccounts }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.removeAllAccounts.call(this);\n yield this.setActiveAccount(undefined);\n });\n }\n /**\n * Removes a peer and all the accounts that have been connected through that peer\n *\n * @param peer Peer to be removed\n */\n removePeer(peer, sendDisconnectToPeer = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const transport = yield this.transport;\n const removePeerResult = transport.removePeer(peer);\n yield this.removeAccountsForPeers([peer]);\n if (sendDisconnectToPeer) {\n yield this.sendDisconnectToPeer(peer, transport);\n }\n return removePeerResult;\n });\n }\n /**\n * Remove all peers and all accounts that have been connected through those peers\n */\n removeAllPeers(sendDisconnectToPeers = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const transport = yield this.transport;\n const peers = yield transport.getPeers();\n const removePeerResult = transport.removeAllPeers();\n yield this.removeAccountsForPeers(peers);\n if (sendDisconnectToPeers) {\n const disconnectPromises = peers.map((peer) => this.sendDisconnectToPeer(peer, transport));\n yield Promise.all(disconnectPromises);\n }\n return removePeerResult;\n });\n }\n /**\n * Allows the user to subscribe to specific events that are fired in the SDK\n *\n * @param internalEvent The event to subscribe to\n * @param eventCallback The callback that will be called when the event occurs\n */\n subscribeToEvent(internalEvent, eventCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.events.on(internalEvent, eventCallback);\n });\n }\n /**\n * Check if we have permissions to send the specific message type to the active account.\n * If no active account is set, only permission requests are allowed.\n *\n * @param type The type of the message\n */\n checkPermissions(type) {\n return __awaiter(this, void 0, void 0, function* () {\n if (type === BeaconMessageType.PermissionRequest) {\n return true;\n }\n const activeAccount = yield this.getActiveAccount();\n if (!activeAccount) {\n throw yield this.sendInternalError('No active account set!');\n }\n const permissions = activeAccount.scopes;\n switch (type) {\n case BeaconMessageType.OperationRequest:\n return permissions.includes(PermissionScope.OPERATION_REQUEST);\n case BeaconMessageType.SignPayloadRequest:\n return permissions.includes(PermissionScope.SIGN);\n // TODO: ENCRYPTION\n // case BeaconMessageType.EncryptPayloadRequest:\n // return permissions.includes(PermissionScope.ENCRYPT)\n case BeaconMessageType.BroadcastRequest:\n return true;\n default:\n return false;\n }\n });\n }\n /**\n * Send a permission request to the DApp. This should be done as the first step. The wallet will respond\n * with an publicKey and permissions that were given. The account returned will be set as the \"activeAccount\"\n * and will be used for the following requests.\n *\n * @param input The message details we need to prepare the PermissionRequest message.\n */\n requestPermissions(input) {\n return __awaiter(this, void 0, void 0, function* () {\n const request = {\n appMetadata: yield this.getOwnAppMetadata(),\n type: BeaconMessageType.PermissionRequest,\n network: input && input.network ? input.network : { type: NetworkType.MAINNET },\n scopes: input && input.scopes\n ? input.scopes\n : [PermissionScope.OPERATION_REQUEST, PermissionScope.SIGN]\n };\n const { message, connectionInfo } = yield this.makeRequest(request).catch((requestError) => __awaiter(this, void 0, void 0, function* () {\n throw yield this.handleRequestError(request, requestError);\n }));\n // TODO: Migration code. Remove sometime after 1.0.0 release.\n const publicKey = message.publicKey || message.pubkey || message.pubKey;\n const address = yield getAddressFromPublicKey(publicKey);\n const accountInfo = {\n accountIdentifier: yield getAccountIdentifier(address, message.network),\n senderId: message.senderId,\n origin: {\n type: connectionInfo.origin,\n id: connectionInfo.id\n },\n address,\n publicKey,\n network: message.network,\n scopes: message.scopes,\n threshold: message.threshold,\n connectedAt: new Date().getTime()\n };\n yield this.accountManager.addAccount(accountInfo);\n yield this.setActiveAccount(accountInfo);\n const output = Object.assign(Object.assign({}, message), { address,\n accountInfo });\n yield this.notifySuccess(request, {\n account: accountInfo,\n output,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: yield this.getWalletInfo()\n });\n return output;\n });\n }\n /**\n * This method will send a \"SignPayloadRequest\" to the wallet. This method is meant to be used to sign\n * arbitrary data (eg. a string). It will return the signature in the format of \"edsig...\"\n *\n * @param input The message details we need to prepare the SignPayloadRequest message.\n */\n requestSignPayload(input) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!input.payload) {\n throw yield this.sendInternalError('Payload must be provided');\n }\n const activeAccount = yield this.getActiveAccount();\n if (!activeAccount) {\n throw yield this.sendInternalError('No active account!');\n }\n const payload = input.payload;\n if (typeof payload !== 'string') {\n throw new Error('Payload must be a string');\n }\n const signingType = (() => {\n switch (input.signingType) {\n case SigningType.OPERATION:\n if (!payload.startsWith('03')) {\n throw new Error('When using signing type \"OPERATION\", the payload must start with prefix \"03\"');\n }\n return SigningType.OPERATION;\n case SigningType.MICHELINE:\n if (!payload.startsWith('05')) {\n throw new Error('When using signing type \"MICHELINE\", the payload must start with prefix \"05\"');\n }\n return SigningType.MICHELINE;\n case SigningType.RAW:\n default:\n return SigningType.RAW;\n }\n })();\n const request = {\n type: BeaconMessageType.SignPayloadRequest,\n signingType,\n payload,\n sourceAddress: input.sourceAddress || activeAccount.address\n };\n const { message, connectionInfo } = yield this.makeRequest(request).catch((requestError) => __awaiter(this, void 0, void 0, function* () {\n throw yield this.handleRequestError(request, requestError);\n }));\n yield this.notifySuccess(request, {\n account: activeAccount,\n output: message,\n connectionContext: connectionInfo,\n walletInfo: yield this.getWalletInfo()\n });\n return message;\n });\n }\n /**\n * This method will send an \"EncryptPayloadRequest\" to the wallet. This method is meant to be used to encrypt or decrypt\n * arbitrary data (eg. a string). It will return the encrypted or decrypted payload\n *\n * @param input The message details we need to prepare the EncryptPayloadRequest message.\n */\n // TODO: ENCRYPTION\n // public async requestEncryptPayload(\n // input: RequestEncryptPayloadInput\n // ): Promise<EncryptPayloadResponseOutput> {\n // if (!input.payload) {\n // throw await this.sendInternalError('Payload must be provided')\n // }\n // const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n // if (!activeAccount) {\n // throw await this.sendInternalError('No active account!')\n // }\n // const payload = input.payload\n // if (typeof payload !== 'string') {\n // throw new Error('Payload must be a string')\n // }\n // if (typeof input.encryptionCryptoOperation === 'undefined') {\n // throw new Error('encryptionCryptoOperation must be defined')\n // }\n // if (typeof input.encryptionType === 'undefined') {\n // throw new Error('encryptionType must be defined')\n // }\n // const request: EncryptPayloadRequestInput = {\n // type: BeaconMessageType.EncryptPayloadRequest,\n // cryptoOperation: input.encryptionCryptoOperation,\n // encryptionType: input.encryptionType,\n // payload,\n // sourceAddress: input.sourceAddress || activeAccount.address\n // }\n // const { message, connectionInfo } = await this.makeRequest<\n // EncryptPayloadRequest,\n // EncryptPayloadResponse\n // >(request).catch(async (requestError: ErrorResponse) => {\n // throw await this.handleRequestError(request, requestError)\n // })\n // await this.notifySuccess(request, {\n // account: activeAccount,\n // output: message,\n // connectionContext: connectionInfo,\n // walletInfo: await this.getWalletInfo()\n // })\n // return message\n // }\n /**\n * This method sends an OperationRequest to the wallet. This method should be used for all kinds of operations,\n * eg. transaction or delegation. Not all properties have to be provided. Data like \"counter\" and fees will be\n * fetched and calculated by the wallet (but they can still be provided if required).\n *\n * @param input The message details we need to prepare the OperationRequest message.\n */\n requestOperation(input) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!input.operationDetails) {\n throw yield this.sendInternalError('Operation details must be provided');\n }\n const activeAccount = yield this.getActiveAccount();\n if (!activeAccount) {\n throw yield this.sendInternalError('No active account!');\n }\n const request = {\n type: BeaconMessageType.OperationRequest,\n network: activeAccount.network || { type: NetworkType.MAINNET },\n operationDetails: input.operationDetails,\n sourceAddress: activeAccount.address || ''\n };\n const { message, connectionInfo } = yield this.makeRequest(request).catch((requestError) => __awaiter(this, void 0, void 0, function* () {\n throw yield this.handleRequestError(request, requestError);\n }));\n yield this.notifySuccess(request, {\n account: activeAccount,\n output: message,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: yield this.getWalletInfo()\n });\n return message;\n });\n }\n /**\n * Sends a \"BroadcastRequest\" to the wallet. This method can be used to inject an already signed transaction\n * to the network.\n *\n * @param input The message details we need to prepare the BroadcastRequest message.\n */\n requestBroadcast(input) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!input.signedTransaction) {\n throw yield this.sendInternalError('Signed transaction must be provided');\n }\n const network = input.network || { type: NetworkType.MAINNET };\n const request = {\n type: BeaconMessageType.BroadcastRequest,\n network,\n signedTransaction: input.signedTransaction\n };\n const { message, connectionInfo } = yield this.makeRequest(request).catch((requestError) => __awaiter(this, void 0, void 0, function* () {\n throw yield this.handleRequestError(request, requestError);\n }));\n yield this.notifySuccess(request, {\n network,\n output: message,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: yield this.getWalletInfo()\n });\n return message;\n });\n }\n setActivePeer(peer) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._activePeer.isSettled()) {\n // If the promise has already been resolved we need to create a new one.\n this._activePeer = ExposedPromise.resolve(peer);\n }\n else {\n this._activePeer.resolve(peer);\n }\n if (peer) {\n yield this.initInternalTransports();\n if (peer.type === 'postmessage-pairing-response') {\n yield this.setTransport(this.postMessageTransport);\n }\n else if (peer.type === 'p2p-pairing-response') {\n yield this.setTransport(this.p2pTransport);\n }\n }\n return;\n });\n }\n /**\n * A \"setter\" for when the transport needs to be changed.\n */\n setTransport(transport) {\n const _super = Object.create(null, {\n setTransport: { get: () => super.setTransport }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (!transport) {\n this._initPromise = undefined;\n }\n return _super.setTransport.call(this, transport);\n });\n }\n /**\n * This method will emit an internal error message.\n *\n * @param errorMessage The error message to send.\n */\n sendInternalError(errorMessage) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.events.emit(BeaconEvent.INTERNAL_ERROR, errorMessage);\n throw new Error(errorMessage);\n });\n }\n /**\n * This method will remove all accounts associated with a specific peer.\n *\n * @param peersToRemove An array of peers for which accounts should be removed\n */\n removeAccountsForPeers(peersToRemove) {\n return __awaiter(this, void 0, void 0, function* () {\n const accounts = yield this.accountManager.getAccounts();\n const peerIdsToRemove = peersToRemove.map((peer) => peer.senderId);\n // Remove all accounts with origin of the specified peer\n const accountsToRemove = accounts.filter((account) => peerIdsToRemove.includes(account.senderId));\n const accountIdentifiersToRemove = accountsToRemove.map((accountInfo) => accountInfo.accountIdentifier);\n yield this.accountManager.removeAccounts(accountIdentifiersToRemove);\n // Check if one of the accounts that was removed was the active account and if yes, set it to undefined\n const activeAccount = yield this.getActiveAccount();\n if (activeAccount) {\n if (accountIdentifiersToRemove.includes(activeAccount.accountIdentifier)) {\n yield this.setActiveAccount(undefined);\n }\n }\n });\n }\n /**\n * This message handles errors that we receive from the wallet.\n *\n * @param request The request we sent\n * @param beaconError The error we received\n */\n handleRequestError(request, beaconError) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.error('handleRequestError', 'error response', beaconError);\n if (beaconError.errorType) {\n const buttons = [];\n if (beaconError.errorType === BeaconErrorType.NO_PRIVATE_KEY_FOUND_ERROR) {\n const actionCallback = () => __awaiter(this, void 0, void 0, function* () {\n const operationRequest = request;\n // if the account we requested is not available, we remove it locally\n let accountInfo;\n if (operationRequest.sourceAddress && operationRequest.network) {\n const accountIdentifier = yield getAccountIdentifier(operationRequest.sourceAddress, operationRequest.network);\n accountInfo = yield this.getAccount(accountIdentifier);\n if (accountInfo) {\n yield this.removeAccount(accountInfo.accountIdentifier);\n }\n }\n });\n buttons.push({ text: 'Remove account', actionCallback });\n }\n const peer = yield this.getPeer();\n const activeAccount = yield this.getActiveAccount();\n // If we sent a permission request, received an error and there is no active account, we need to reset the DAppClient.\n // This most likely means that the user rejected the first permission request after pairing a wallet, so we \"forget\" the paired wallet to allow the user to pair again.\n if (request.type === BeaconMessageType.PermissionRequest &&\n (yield this.getActiveAccount()) === undefined) {\n this._initPromise = undefined;\n this.postMessageTransport = undefined;\n this.p2pTransport = undefined;\n yield this.setTransport();\n yield this.setActivePeer();\n }\n this.events\n .emit(messageEvents[request.type].error, { errorResponse: beaconError, walletInfo: yield this.getWalletInfo(peer, activeAccount) }, buttons)\n .catch((emitError) => logger.error('handleRequestError', emitError));\n throw BeaconError.getError(beaconError.errorType, beaconError.errorData);\n }\n throw beaconError;\n });\n }\n /**\n * This message will send an event when we receive a successful response to one of the requests we sent.\n *\n * @param request The request we sent\n * @param response The response we received\n */\n notifySuccess(request, response) {\n return __awaiter(this, void 0, void 0, function* () {\n this.events\n .emit(messageEvents[request.type].success, response)\n .catch((emitError) => console.warn(emitError));\n });\n }\n getWalletInfo(peer, account) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n const selectedAccount = account ? account : yield this.getActiveAccount();\n const selectedPeer = peer ? peer : yield this.getPeer(selectedAccount);\n let walletInfo;\n if (selectedAccount) {\n walletInfo = yield this.appMetadataManager.getAppMetadata(selectedAccount.senderId);\n }\n const typedPeer = selectedPeer;\n if (!walletInfo) {\n walletInfo = {\n name: typedPeer.name,\n icon: typedPeer.icon\n };\n }\n const lowerCaseCompare = (str1, str2) => {\n if (str1 && str2) {\n return str1.toLowerCase() === str2.toLowerCase();\n }\n return false;\n };\n let selectedApp;\n let type;\n // TODO: Remove once all wallets send the icon?\n if (iOSList.find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name))) {\n selectedApp = iOSList.find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name));\n type = 'mobile';\n }\n else if (webList.find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name))) {\n selectedApp = webList.find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name));\n type = 'web';\n }\n else if (desktopList.find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name))) {\n selectedApp = desktopList.find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name));\n type = 'desktop';\n }\n else if (extensionList.find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name))) {\n selectedApp = extensionList.find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name));\n type = 'extension';\n }\n if (selectedApp) {\n let deeplink;\n if (selectedApp.hasOwnProperty('links')) {\n deeplink = selectedApp.links[(_a = selectedAccount === null || selectedAccount === void 0 ? void 0 : selectedAccount.network.type) !== null && _a !== void 0 ? _a : this.preferredNetwork];\n }\n else if (selectedApp.hasOwnProperty('deepLink')) {\n deeplink = selectedApp.deepLink;\n }\n return {\n name: walletInfo.name,\n icon: (_b = walletInfo.icon) !== null && _b !== void 0 ? _b : selectedApp.logo,\n deeplink,\n type\n };\n }\n return walletInfo;\n });\n }\n getPeer(account) {\n var _a, _b, _c, _d;\n return __awaiter(this, void 0, void 0, function* () {\n let peer;\n if (account) {\n logger.log('getPeer', 'We have an account', account);\n const postMessagePeers = (_b = (yield ((_a = this.postMessageTransport) === null || _a === void 0 ? void 0 : _a.getPeers()))) !== null && _b !== void 0 ? _b : [];\n const p2pPeers = (_d = (yield ((_c = this.p2pTransport) === null || _c === void 0 ? void 0 : _c.getPeers()))) !== null && _d !== void 0 ? _d : [];\n const peers = [...postMessagePeers, ...p2pPeers];\n logger.log('getPeer', 'Found peers', peers, account);\n peer = peers.find((peerEl) => peerEl.senderId === account.senderId);\n if (!peer) {\n // We could not find an exact match for a sender, so we most likely received it over a relay\n peer = peers.find((peerEl) => peerEl.extensionId === account.origin.id);\n }\n }\n else {\n peer = yield this._activePeer.promise;\n logger.log('getPeer', 'Active peer', peer);\n }\n if (!peer) {\n throw new Error('No matching peer found.');\n }\n return peer;\n });\n }\n /**\n * This method handles sending of requests to the DApp. It makes sure that the DAppClient is initialized and connected\n * to the transport. After that rate limits and permissions will be checked, an ID is attached and the request is sent\n * to the DApp over the transport.\n *\n * @param requestInput The BeaconMessage to be sent to the wallet\n * @param account The account that the message will be sent to\n */\n makeRequest(requestInput) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const messageId = yield generateGUID();\n console.time(messageId);\n logger.log('makeRequest', 'starting');\n yield this.init();\n console.timeLog(messageId, 'init done');\n logger.log('makeRequest', 'after init');\n if (yield this.addRequestAndCheckIfRateLimited()) {\n this.events\n .emit(BeaconEvent.LOCAL_RATE_LIMIT_REACHED)\n .catch((emitError) => console.warn(emitError));\n throw new Error('rate limit reached');\n }\n if (!(yield this.checkPermissions(requestInput.type))) {\n this.events.emit(BeaconEvent.NO_PERMISSIONS).catch((emitError) => console.warn(emitError));\n throw new Error('No permissions to send this request to wallet!');\n }\n if (!this.beaconId) {\n throw yield this.sendInternalError('BeaconID not defined');\n }\n const request = Object.assign({ id: messageId, version: BEACON_VERSION, senderId: yield getSenderId(yield this.beaconId) }, requestInput);\n const exposed = new ExposedPromise();\n this.addOpenRequest(request.id, exposed);\n const payload = yield new Serializer().serialize(request);\n const account = yield this.getActiveAccount();\n const peer = yield this.getPeer(account);\n const walletInfo = yield this.getWalletInfo(peer, account);\n logger.log('makeRequest', 'sending message', request);\n console.timeLog(messageId, 'sending');\n yield (yield this.transport).send(payload, peer);\n console.timeLog(messageId, 'sent');\n this.events\n .emit(messageEvents[requestInput.type].sent, {\n walletInfo: Object.assign(Object.assign({}, walletInfo), { name: (_a = walletInfo.name) !== null && _a !== void 0 ? _a : 'Wallet' }),\n extraInfo: {\n resetCallback: () => __awaiter(this, void 0, void 0, function* () {\n this.disconnect();\n })\n }\n })\n .catch((emitError) => console.warn(emitError));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return exposed.promise; // TODO: fix type\n });\n }\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n this.postMessageTransport = undefined;\n this.p2pTransport = undefined;\n yield Promise.all([this.clearActiveAccount(), (yield this.transport).disconnect()]);\n });\n }\n /**\n * Adds a requests to the \"openRequests\" set so we know what messages have already been answered/handled.\n *\n * @param id The ID of the message\n * @param promise A promise that resolves once the response for that specific message is received\n */\n addOpenRequest(id, promise) {\n logger.log('addOpenRequest', this.name, `adding request ${id} and waiting for answer`);\n this.openRequests.set(id, promise);\n }\n}\n//# sourceMappingURL=DAppClient.js.map","import { assertNever } from '../utils/assert-never';\nimport { AbortedBeaconError, BeaconErrorType, UnknownBeaconError, NetworkNotSupportedBeaconError, NoAddressBeaconError, NoPrivateKeyBeaconError, NotGrantedBeaconError, ParametersInvalidBeaconError, TooManyOperationsBeaconError, TransactionInvalidBeaconError, SignatureTypeNotSupportedBeaconError, BroadcastBeaconError\n// EncryptionTypeNotSupportedBeaconError\n } from '..';\n/**\n * @category Error\n */\nexport class BeaconError {\n constructor(errorType, message) {\n this.name = 'BeaconError';\n this.title = 'Error'; // Visible in the UI\n this.message = `[${errorType}]:${message}`;\n this.description = message;\n }\n get fullDescription() {\n return this.description;\n }\n static getError(errorType, errorData) {\n switch (errorType) {\n case BeaconErrorType.BROADCAST_ERROR:\n return new BroadcastBeaconError();\n case BeaconErrorType.NETWORK_NOT_SUPPORTED:\n return new NetworkNotSupportedBeaconError();\n case BeaconErrorType.NO_ADDRESS_ERROR:\n return new NoAddressBeaconError();\n case BeaconErrorType.NO_PRIVATE_KEY_FOUND_ERROR:\n return new NoPrivateKeyBeaconError();\n case BeaconErrorType.NOT_GRANTED_ERROR:\n return new NotGrantedBeaconError();\n case BeaconErrorType.PARAMETERS_INVALID_ERROR:\n return new ParametersInvalidBeaconError();\n case BeaconErrorType.TOO_MANY_OPERATIONS:\n return new TooManyOperationsBeaconError();\n case BeaconErrorType.TRANSACTION_INVALID_ERROR:\n return new TransactionInvalidBeaconError(errorData);\n case BeaconErrorType.SIGNATURE_TYPE_NOT_SUPPORTED:\n return new SignatureTypeNotSupportedBeaconError();\n // case BeaconErrorType.ENCRYPTION_TYPE_NOT_SUPPORTED:\n // return new EncryptionTypeNotSupportedBeaconError()\n case BeaconErrorType.ABORTED_ERROR:\n return new AbortedBeaconError();\n case BeaconErrorType.UNKNOWN_ERROR:\n return new UnknownBeaconError();\n default:\n assertNever(errorType);\n }\n }\n}\n//# sourceMappingURL=BeaconError.js.map","import { BeaconError, BeaconErrorType } from '..';\n/**\n * @category Error\n */\nexport class BroadcastBeaconError extends BeaconError {\n constructor() {\n super(BeaconErrorType.BROADCAST_ERROR, 'The transaction could not be broadcast to the network. Please try again.');\n this.name = 'BroadcastBeaconError';\n this.title = 'Broadcast Error';\n }\n}\n//# sourceMappingURL=BroadcastBeaconError.js.map","import { BeaconError, BeaconErrorType } from '..';\n/**\n * @category Error\n */\nexport class NetworkNotSupportedBeaconError extends BeaconError {\n constructor() {\n super(BeaconErrorType.NETWORK_NOT_SUPPORTED, 'The wallet does not support this network. Please select another one.');\n this.name = 'NetworkNotSupportedBeaconError';\n this.title = 'Network Error';\n }\n}\n//# sourceMappingURL=NetworkNotSupportedBeaconError.js.map","import { BeaconError, BeaconErrorType } from '..';\n/**\n * @category Error\n */\nexport class NoAddressBeaconError extends BeaconError {\n constructor() {\n super(BeaconErrorType.NO_ADDRESS_ERROR, 'The wallet does not have an account set up. Please make sure to set up your wallet and try again.');\n this.name = 'NoAddressBeaconError';\n this.title = 'No Address';\n }\n}\n//# sourceMappingURL=NoAddressBeaconError.js.map","import { BeaconError, BeaconErrorType } from '..';\n/**\n * @category Error\n */\nexport class NoPrivateKeyBeaconError extends BeaconError {\n constructor() {\n super(BeaconErrorType.NO_PRIVATE_KEY_FOUND_ERROR, 'The account you are trying to interact with is not available. Please make sure to add the account to your wallet and try again.');\n this.name = 'NoPrivateKeyBeaconError';\n this.title = 'Account Not Found';\n }\n}\n//# sourceMappingURL=NoPrivateKeyBeaconError.js.map","import { BeaconError, BeaconErrorType } from '..';\n/**\n * @category Error\n */\nexport class NotGrantedBeaconError extends BeaconError {\n constructor() {\n super(BeaconErrorType.NOT_GRANTED_ERROR, 'You do not have the necessary permissions to perform this action. Please initiate another permission request and give the necessary permissions.');\n this.name = 'NotGrantedBeaconError';\n this.title = 'Permission Not Granted';\n }\n}\n//# sourceMappingURL=NotGrantedBeaconError.js.map","import { BeaconError, BeaconErrorType } from '..';\n/**\n * @category Error\n */\nexport class ParametersInvalidBeaconError extends BeaconError {\n constructor() {\n super(BeaconErrorType.PARAMETERS_INVALID_ERROR, 'Some of the parameters you provided are invalid and the request could not be completed. Please check your inputs and try again.');\n this.name = 'ParametersInvalidBeaconError';\n this.title = 'Parameters Invalid';\n }\n}\n//# sourceMappingURL=ParametersInvalidBeaconError.js.map","import { BeaconError, BeaconErrorType } from '..';\n/**\n * @category Error\n */\nexport class TooManyOperationsBeaconError extends BeaconError {\n constructor() {\n super(BeaconErrorType.TOO_MANY_OPERATIONS, 'The request contains too many transactions. Please include fewer operations and try again.');\n this.name = 'TooManyOperationsBeaconError';\n this.title = 'Too Many Operations';\n }\n}\n//# sourceMappingURL=TooManyOperationsBeaconError.js.map","import { BeaconError, BeaconErrorType } from '..';\n/**\n * @category Error\n */\nexport class TransactionInvalidBeaconError extends BeaconError {\n constructor(data) {\n super(BeaconErrorType.TRANSACTION_INVALID_ERROR, `The transaction is invalid and the node did not accept it.`);\n this.data = data;\n this.name = 'TransactionInvalidBeaconError';\n this.title = 'Transaction Invalid';\n this.data = data;\n }\n get fullDescription() {\n return `${this.description}<br /><pre style=\"text-align: left\">${JSON.stringify(this.data, undefined, 2)}</pre>`;\n }\n}\n//# sourceMappingURL=TransactionInvalidBeaconError.js.map","import { BeaconError, BeaconErrorType } from '..';\n/**\n * @category Error\n */\nexport class UnknownBeaconError extends BeaconError {\n constructor() {\n super(BeaconErrorType.UNKNOWN_ERROR, 'An unknown error occured. Please try again or report it to a developer.');\n this.name = 'UnknownBeaconError';\n this.title = 'Error';\n }\n}\n//# sourceMappingURL=UnknownBeaconError.js.map","var __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};\nimport { windowRef } from '../MockWindow';\nimport { Logger } from '../utils/Logger';\nimport { PeerManager } from '../managers/PeerManager';\nimport { ExposedPromise } from '../utils/exposed-promise';\nimport { TransportType } from '../types/transport/TransportType';\nimport { ExtensionMessageTarget } from '../types/ExtensionMessageTarget';\nimport { TransportStatus } from '../types/transport/TransportStatus';\nimport { Origin } from '../types/Origin';\nimport { PostMessageClient } from './clients/PostMessageClient';\nimport { Transport } from './Transport';\nconst logger = new Logger('PostMessageTransport');\nlet extensions;\n/**\n * @internalapi\n *\n *\n */\nexport class PostMessageTransport extends Transport {\n constructor(name, keyPair, storage, storageKey) {\n super(name, new PostMessageClient(name, keyPair), new PeerManager(storage, storageKey));\n this.type = TransportType.POST_MESSAGE;\n }\n static isAvailable() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fn = (event) => {\n const data = event.data;\n if (data && data.payload === 'pong') {\n resolve(true);\n windowRef.removeEventListener('message', fn);\n }\n };\n windowRef.addEventListener('message', fn);\n const message = {\n target: ExtensionMessageTarget.EXTENSION,\n payload: 'ping'\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n windowRef.postMessage(message, windowRef.location.origin);\n });\n });\n }\n static getAvailableExtensions() {\n return __awaiter(this, void 0, void 0, function* () {\n if (extensions) {\n return extensions.promise;\n }\n extensions = new ExposedPromise();\n const localExtensions = [];\n return new Promise((resolve) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fn = (event) => {\n const data = event.data;\n const sender = data.sender;\n if (data && data.payload === 'pong' && sender) {\n logger.log('getAvailableExtensions', `extension \"${sender.name}\" is available`, sender);\n if (!localExtensions.some((ext) => ext.id === sender.id)) {\n localExtensions.push(sender);\n }\n }\n };\n windowRef.addEventListener('message', fn);\n setTimeout(() => {\n // TODO: Should we allow extensions to register after the timeout has passed?\n windowRef.removeEventListener('message', fn);\n if (extensions) {\n extensions.resolve(localExtensions);\n }\n resolve(localExtensions);\n }, 1000);\n const message = {\n target: ExtensionMessageTarget.EXTENSION,\n payload: 'ping'\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n windowRef.postMessage(message, windowRef.location.origin);\n });\n });\n }\n connect() {\n const _super = Object.create(null, {\n connect: { get: () => super.connect }\n });\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('connect');\n if (this._isConnected !== TransportStatus.NOT_CONNECTED) {\n return;\n }\n this._isConnected = TransportStatus.CONNECTING;\n const knownPeers = yield this.getPeers();\n if (knownPeers.length > 0) {\n logger.log('connect', `connecting to ${knownPeers.length} peers`);\n const connectionPromises = knownPeers.map((peer) => __awaiter(this, void 0, void 0, function* () { return this.listen(peer.publicKey); }));\n Promise.all(connectionPromises).catch((error) => logger.error('connect', error));\n }\n yield this.startOpenChannelListener();\n yield _super.connect.call(this);\n });\n }\n startOpenChannelListener() {\n return __awaiter(this, void 0, void 0, function* () {\n //\n });\n }\n getPairingRequestInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.client.getPairingRequestInfo();\n });\n }\n listen(publicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('listen', publicKey);\n yield this.client\n .listenForEncryptedMessage(publicKey, (message, context) => {\n const connectionContext = {\n origin: Origin.EXTENSION,\n id: context.id\n };\n this.notifyListeners(message, connectionContext).catch((error) => {\n throw error;\n });\n })\n .catch((error) => {\n throw error;\n });\n });\n }\n}\n//# sourceMappingURL=PostMessageTransport.js.map","/**\n * @internalapi\n */\nexport var StorageKey;\n(function (StorageKey) {\n StorageKey[\"TRANSPORT_P2P_PEERS_DAPP\"] = \"beacon:communication-peers-dapp\";\n StorageKey[\"TRANSPORT_P2P_PEERS_WALLET\"] = \"beacon:communication-peers-wallet\";\n StorageKey[\"TRANSPORT_POSTMESSAGE_PEERS_DAPP\"] = \"beacon:postmessage-peers-dapp\";\n StorageKey[\"TRANSPORT_POSTMESSAGE_PEERS_WALLET\"] = \"beacon:postmessage-peers-wallet\";\n StorageKey[\"ACCOUNTS\"] = \"beacon:accounts\";\n StorageKey[\"ACTIVE_ACCOUNT\"] = \"beacon:active-account\";\n StorageKey[\"BEACON_SDK_SECRET_SEED\"] = \"beacon:sdk-secret-seed\";\n StorageKey[\"APP_METADATA_LIST\"] = \"beacon:app-metadata-list\";\n StorageKey[\"PERMISSION_LIST\"] = \"beacon:permissions\";\n StorageKey[\"BEACON_SDK_VERSION\"] = \"beacon:sdk_version\";\n StorageKey[\"MATRIX_PRESERVED_STATE\"] = \"beacon:sdk-matrix-preserved-state\";\n StorageKey[\"MATRIX_PEER_ROOM_IDS\"] = \"beacon:matrix-peer-rooms\";\n StorageKey[\"MATRIX_SELECTED_NODE\"] = \"beacon:matrix-selected-node\";\n StorageKey[\"MULTI_NODE_SETUP_DONE\"] = \"beacon:multi-node-setup\";\n})(StorageKey || (StorageKey = {}));\n//# sourceMappingURL=StorageKey.js.map","var __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};\nimport { StorageManager } from './StorageManager';\n/**\n * @internalapi\n *\n * The PeerManager provides CRUD functionality for peer entities and persists them to the provided storage.\n */\nexport class PeerManager {\n constructor(storage, key) {\n this.storageManager = new StorageManager(storage, key);\n }\n hasPeer(publicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n return (yield this.getPeer(publicKey)) ? true : false;\n });\n }\n getPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.getAll();\n });\n }\n getPeer(publicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.getOne((peer) => peer.publicKey === publicKey);\n });\n }\n addPeer(peerInfo) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.addOne(peerInfo, (peer) => peer.publicKey === peerInfo.publicKey);\n });\n }\n removePeer(publicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.remove((peer) => peer.publicKey === publicKey);\n });\n }\n removePeers(publicKeys) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.remove((peer) => publicKeys.includes(peer.publicKey));\n });\n }\n removeAllPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.removeAll();\n });\n }\n}\n//# sourceMappingURL=PeerManager.js.map","var __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};\nimport { Logger } from '../utils/Logger';\nimport { TransportType, TransportStatus } from '..';\nconst logger = new Logger('Transport');\n/**\n * @internalapi\n *\n *\n */\nexport class Transport {\n constructor(name, client, peerManager) {\n /**\n * The type of the transport\n */\n this.type = TransportType.POST_MESSAGE;\n /**\n * The status of the transport\n */\n this._isConnected = TransportStatus.NOT_CONNECTED;\n /**\n * The listeners that will be notified when new messages are coming in\n */\n this.listeners = [];\n this.name = name;\n this.client = client;\n this.peerManager = peerManager;\n }\n /**\n * Return the status of the connection\n */\n get connectionStatus() {\n return this._isConnected;\n }\n /**\n * Returns a promise that resolves to true if the transport is available, false if it is not\n */\n static isAvailable() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.resolve(false);\n });\n }\n /**\n * Connect the transport\n */\n connect() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('connect');\n this._isConnected = TransportStatus.CONNECTED;\n return;\n });\n }\n /**\n * Disconnect the transport\n */\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('disconnect');\n this._isConnected = TransportStatus.NOT_CONNECTED;\n return;\n });\n }\n /**\n * Send a message through the transport\n *\n * @param message The message to send\n * @param recipient The recipient of the message\n */\n send(message, peer) {\n return __awaiter(this, void 0, void 0, function* () {\n if (peer) {\n return this.client.sendMessage(message, peer);\n }\n else {\n const knownPeers = yield this.getPeers();\n // A broadcast request has to be sent everywhere.\n const promises = knownPeers.map((peerEl) => this.client.sendMessage(message, peerEl));\n return (yield Promise.all(promises))[0];\n }\n });\n }\n /**\n * Add a listener to be called when a new message is received\n *\n * @param listener The listener that will be registered\n */\n addListener(listener) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug('addListener', listener);\n this.listeners.push(listener);\n return;\n });\n }\n /**\n * Remove a listener\n *\n * @param listener\n */\n removeListener(listener) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('removeListener');\n this.listeners = this.listeners.filter((element) => element !== listener);\n return;\n });\n }\n getPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.peerManager.getPeers(); // TODO: Fix type\n });\n }\n addPeer(newPeer, _sendPairingResponse = true) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('addPeer', 'adding peer', newPeer);\n yield this.peerManager.addPeer(newPeer); // TODO: Fix type\n yield this.listen(newPeer.publicKey);\n });\n }\n removePeer(peerToBeRemoved) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('removePeer', 'removing peer', peerToBeRemoved);\n yield this.peerManager.removePeer(peerToBeRemoved.publicKey);\n if (this.client) {\n yield this.client.unsubscribeFromEncryptedMessage(peerToBeRemoved.publicKey);\n }\n });\n }\n removeAllPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('removeAllPeers');\n yield this.peerManager.removeAllPeers();\n if (this.client) {\n yield this.client.unsubscribeFromEncryptedMessages();\n }\n });\n }\n /**\n * Notify the listeners when a new message comes in\n *\n * @param message Message\n * @param connectionInfo Context info about the connection\n */\n notifyListeners(message, connectionInfo) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.listeners.length === 0) {\n logger.warn('notifyListeners', '0 listeners notified!', this);\n }\n else {\n logger.log('notifyListeners', `Notifying ${this.listeners.length} listeners`, this);\n }\n this.listeners.forEach((listener) => {\n listener(message, connectionInfo);\n });\n return;\n });\n }\n}\n//# sourceMappingURL=Transport.js.map","var __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};\nimport { Logger } from '../utils/Logger';\nimport { TransportStatus, Transport, TransportType, P2PCommunicationClient, Origin } from '..';\nimport { PeerManager } from '../managers/PeerManager';\nconst logger = new Logger('P2PTransport');\n/**\n * @internalapi\n *\n *\n */\nexport class P2PTransport extends Transport {\n constructor(name, keyPair, storage, matrixNodes, storageKey, iconUrl, appUrl) {\n super(name, new P2PCommunicationClient(name, keyPair, 1, storage, matrixNodes, iconUrl, appUrl), new PeerManager(storage, storageKey));\n this.type = TransportType.P2P;\n }\n static isAvailable() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.resolve(true);\n });\n }\n connect() {\n const _super = Object.create(null, {\n connect: { get: () => super.connect }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (this._isConnected !== TransportStatus.NOT_CONNECTED) {\n return;\n }\n logger.log('connect');\n this._isConnected = TransportStatus.CONNECTING;\n yield this.client.start();\n const knownPeers = yield this.getPeers();\n if (knownPeers.length > 0) {\n logger.log('connect', `connecting to ${knownPeers.length} peers`);\n const connectionPromises = knownPeers.map((peer) => __awaiter(this, void 0, void 0, function* () { return this.listen(peer.publicKey); }));\n Promise.all(connectionPromises).catch((error) => logger.error('connect', error));\n }\n yield this.startOpenChannelListener();\n return _super.connect.call(this);\n });\n }\n disconnect() {\n const _super = Object.create(null, {\n disconnect: { get: () => super.disconnect }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield this.client.stop();\n return _super.disconnect.call(this);\n });\n }\n startOpenChannelListener() {\n return __awaiter(this, void 0, void 0, function* () {\n //\n });\n }\n getPairingRequestInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.client.getPairingRequestInfo();\n });\n }\n listen(publicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.client\n .listenForEncryptedMessage(publicKey, (message) => {\n const connectionContext = {\n origin: Origin.P2P,\n id: publicKey\n };\n this.notifyListeners(message, connectionContext).catch((error) => {\n throw error;\n });\n })\n .catch((error) => {\n throw error;\n });\n });\n }\n}\n//# sourceMappingURL=P2PTransport.js.map","import { StorageKey } from '../..';\n/**\n * @internalapi\n */\nexport const defaultValues = {\n [StorageKey.TRANSPORT_P2P_PEERS_DAPP]: [],\n [StorageKey.TRANSPORT_P2P_PEERS_WALLET]: [],\n [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP]: [],\n [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET]: [],\n [StorageKey.ACCOUNTS]: [],\n [StorageKey.ACTIVE_ACCOUNT]: undefined,\n [StorageKey.BEACON_SDK_SECRET_SEED]: undefined,\n [StorageKey.APP_METADATA_LIST]: [],\n [StorageKey.PERMISSION_LIST]: [],\n [StorageKey.BEACON_SDK_VERSION]: undefined,\n [StorageKey.MATRIX_PRESERVED_STATE]: {},\n [StorageKey.MATRIX_PEER_ROOM_IDS]: {},\n [StorageKey.MATRIX_SELECTED_NODE]: undefined,\n [StorageKey.MULTI_NODE_SETUP_DONE]: undefined\n};\n//# sourceMappingURL=StorageKeyReturnDefaults.js.map","var __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};\nimport { defaultValues } from '../types/storage/StorageKeyReturnDefaults';\n/**\n * @internalapi\n *\n * A storage that can be used in chrome extensions\n */\nexport class ChromeStorage {\n static isSupported() {\n return __awaiter(this, void 0, void 0, function* () {\n return (typeof window !== 'undefined' &&\n typeof chrome !== 'undefined' &&\n Boolean(chrome) &&\n Boolean(chrome.runtime) &&\n Boolean(chrome.runtime.id));\n });\n }\n get(key) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => {\n chrome.storage.local.get(null, (storageContent) => {\n if (storageContent[key]) {\n resolve(storageContent[key]);\n }\n else {\n if (typeof defaultValues[key] === 'object') {\n resolve(JSON.parse(JSON.stringify(defaultValues[key])));\n }\n else {\n resolve(defaultValues[key]);\n }\n }\n });\n });\n });\n }\n set(key, value) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => {\n chrome.storage.local.set({ [key]: value }, () => {\n resolve();\n });\n });\n });\n }\n delete(key) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => {\n chrome.storage.local.set({ [key]: undefined }, () => {\n resolve();\n });\n });\n });\n }\n}\n//# sourceMappingURL=ChromeStorage.js.map","var __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};\nimport { defaultValues } from '../types/storage/StorageKeyReturnDefaults';\n/**\n * @internalapi\n *\n * A storage that can be used in the browser\n */\nexport class LocalStorage {\n constructor(prefix) {\n this.prefix = prefix;\n }\n static isSupported() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.resolve(Boolean(typeof window !== 'undefined') && Boolean(window.localStorage));\n });\n }\n get(key) {\n return __awaiter(this, void 0, void 0, function* () {\n const value = localStorage.getItem(this.getPrefixedKey(key));\n if (!value) {\n if (typeof defaultValues[key] === 'object') {\n return JSON.parse(JSON.stringify(defaultValues[key]));\n }\n else {\n return defaultValues[key];\n }\n }\n else {\n try {\n return JSON.parse(value);\n }\n catch (jsonParseError) {\n return value; // TODO: Validate storage\n }\n }\n });\n }\n set(key, value) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof value === 'string') {\n return localStorage.setItem(this.getPrefixedKey(key), value);\n }\n else {\n return localStorage.setItem(this.getPrefixedKey(key), JSON.stringify(value));\n }\n });\n }\n delete(key) {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.resolve(localStorage.removeItem(this.getPrefixedKey(key)));\n });\n }\n getPrefixedKey(key) {\n return this.prefix ? `${this.prefix}-${key}` : key;\n }\n}\n//# sourceMappingURL=LocalStorage.js.map","import { BeaconError, BeaconErrorType } from '..';\n/**\n * @category Error\n */\nexport class AbortedBeaconError extends BeaconError {\n constructor() {\n super(BeaconErrorType.ABORTED_ERROR, 'The action was aborted by the user.');\n this.name = 'UnknownBeaconError';\n this.title = 'Aborted';\n }\n}\n//# sourceMappingURL=AbortedBeaconError.js.map","var __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};\nimport { Logger } from '../utils/Logger';\nimport { ChromeStorage, LocalStorage } from '..';\nconst logger = new Logger('STORAGE');\n/**\n * Get a supported storage on this platform\n */\nexport const getStorage = () => __awaiter(void 0, void 0, void 0, function* () {\n if (yield ChromeStorage.isSupported()) {\n logger.log('getStorage', 'USING CHROME STORAGE');\n return new ChromeStorage();\n }\n else if (yield LocalStorage.isSupported()) {\n logger.log('getStorage', 'USING LOCAL STORAGE');\n return new LocalStorage();\n }\n else {\n throw new Error('no storage type supported');\n }\n});\n//# sourceMappingURL=getStorage.js.map","import { PostMessageTransport } from '..';\n/**\n * An object with promises to indicate whether or not that transport is available.\n */\nexport const availableTransports = {\n extension: PostMessageTransport.isAvailable(),\n availableExtensions: PostMessageTransport.getAvailableExtensions()\n};\n//# sourceMappingURL=available-transports.js.map","var __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};\nimport { StorageKey, P2PTransport, TransportStatus } from '..';\nimport { Logger } from '../utils/Logger';\nconst logger = new Logger('DappP2PTransport');\n/**\n * @internalapi\n *\n *\n */\nexport class DappP2PTransport extends P2PTransport {\n constructor(name, keyPair, storage, matrixNodes, iconUrl, appUrl) {\n super(name, keyPair, storage, matrixNodes, StorageKey.TRANSPORT_P2P_PEERS_DAPP, iconUrl, appUrl);\n }\n startOpenChannelListener() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.client.listenForChannelOpening((peer) => __awaiter(this, void 0, void 0, function* () {\n logger.log('listenForNewPeer', `new publicKey`, peer.publicKey);\n yield this.addPeer(peer);\n this._isConnected = TransportStatus.CONNECTED;\n if (this.newPeerListener) {\n this.newPeerListener(peer);\n this.newPeerListener = undefined; // TODO: Remove this once we use the id\n }\n }));\n });\n }\n listenForNewPeer(newPeerListener) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('listenForNewPeer');\n this.newPeerListener = newPeerListener;\n });\n }\n stopListeningForNewPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('stopListeningForNewPeers');\n this.newPeerListener = undefined;\n });\n }\n}\n//# sourceMappingURL=DappP2PTransport.js.map","var __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};\nimport { TransportStatus, StorageKey, PostMessageTransport } from '..';\nimport { Logger } from '../utils/Logger';\nconst logger = new Logger('DappPostMessageTransport');\n/**\n * @internalapi\n *\n *\n */\nexport class DappPostMessageTransport extends PostMessageTransport {\n constructor(name, keyPair, storage) {\n super(name, keyPair, storage, StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP);\n }\n startOpenChannelListener() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.client.listenForChannelOpening((peer) => __awaiter(this, void 0, void 0, function* () {\n logger.log('connect', `received PostMessagePairingResponse`, peer);\n yield this.addPeer(peer);\n this._isConnected = TransportStatus.CONNECTED;\n if (this.newPeerListener) {\n this.newPeerListener(peer);\n this.newPeerListener = undefined; // TODO: Remove this once we use the id\n }\n }));\n });\n }\n listenForNewPeer(newPeerListener) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('listenForNewPeer');\n this.newPeerListener = newPeerListener;\n });\n }\n stopListeningForNewPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('stopListeningForNewPeers');\n this.newPeerListener = undefined;\n });\n }\n}\n//# sourceMappingURL=DappPostMessageTransport.js.map","var __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};\nimport { StorageKey, P2PTransport } from '..';\n// const logger = new Logger('DappP2PTransport')\n/**\n * @internalapi\n *\n *\n */\nexport class WalletP2PTransport extends P2PTransport {\n constructor(name, keyPair, storage, matrixNodes, iconUrl, appUrl) {\n super(name, keyPair, storage, matrixNodes, StorageKey.TRANSPORT_P2P_PEERS_WALLET, iconUrl, appUrl);\n }\n addPeer(newPeer, sendPairingResponse = true) {\n const _super = Object.create(null, {\n addPeer: { get: () => super.addPeer }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.addPeer.call(this, newPeer);\n if (sendPairingResponse) {\n yield this.client.sendPairingResponse(newPeer); // TODO: Should we have a confirmation here?\n }\n });\n }\n}\n//# sourceMappingURL=WalletP2PTransport.js.map","import { BeaconError, BeaconErrorType } from '..';\n/**\n * @category Error\n */\nexport class SignatureTypeNotSupportedBeaconError extends BeaconError {\n constructor() {\n super(BeaconErrorType.SIGNATURE_TYPE_NOT_SUPPORTED, 'The wallet is not able to sign payloads of this type.');\n this.name = 'SignatureTypeNotSupportedBeaconError';\n this.title = 'Signature Type Not Supported';\n }\n}\n//# sourceMappingURL=SignatureTypeNotSupportedBeaconError.js.map","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import arrayWithoutHoles from \"@babel/runtime/helpers/esm/arrayWithoutHoles\";\nimport iterableToArray from \"@babel/runtime/helpers/esm/iterableToArray\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableSpread from \"@babel/runtime/helpers/esm/nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-console */\nimport { getDebugEnabled } from '../debug';\n// Code taken from https://www.bennadel.com/blog/3941-styling-console-log-output-formatting-with-css.htm\n// const echo = (() => {\n// let queue: any[] = []\n// const ECHO_TOKEN = {}\n// const RESET_INPUT = '%c '\n// const RESET_CSS = ''\n// // Attach formatting utility method.\n// function alertFormatting(value: any): any {\n// queue.push({\n// value: value,\n// css:\n// 'display: inline-block ; background-color: #e0005a ; color: #ffffff ; font-weight: bold ; padding: 3px 7px 3px 7px ; border-radius: 3px 3px 3px 3px ;'\n// })\n// return ECHO_TOKEN\n// }\n// // Attach formatting utility method.\n// function warningFormatting(value: any): any {\n// queue.push({\n// value: value,\n// css:\n// 'display: inline-block ; background-color: gold ; color: black ; font-weight: bold ; padding: 3px 7px 3px 7px ; border-radius: 3px 3px 3px 3px ;'\n// })\n// return ECHO_TOKEN\n// }\n// // I provide an echo-based proxy to the given Console Function. This uses an\n// // internal queue to aggregate values before calling the given Console\n// // Function with the desired formatting.\n// function using(consoleFunction: any): any {\n// function consoleFunctionProxy() {\n// // As we loop over the arguments, we're going to aggregate a set of\n// // inputs and modifiers. The Inputs will ultimately be collapsed down\n// // into a single string that acts as the first console.log parameter\n// // while the modifiers are then SPREAD into console.log as 2...N.\n// // --\n// // NOTE: After each input/modifier pair, I'm adding a RESET pairing.\n// // This implicitly resets the CSS after every formatted pairing.\n// var inputs = []\n// var modifiers = []\n// for (var i = 0; i < arguments.length; i++) {\n// // When the formatting utility methods are called, they return\n// // a special token. This indicates that we should pull the\n// // corresponding value out of the QUEUE instead of trying to\n// // output the given argument directly.\n// if (arguments[i] === ECHO_TOKEN) {\n// var item = queue.shift()\n// inputs.push('%c' + item.value, RESET_INPUT)\n// modifiers.push(item.css, RESET_CSS)\n// // For every other argument type, output the value directly.\n// } else {\n// var arg = arguments[i]\n// if (typeof arg === 'object' || typeof arg === 'function') {\n// inputs.push('%o', RESET_INPUT)\n// modifiers.push(arg, RESET_CSS)\n// } else {\n// inputs.push('%c' + arg, RESET_INPUT)\n// modifiers.push(RESET_CSS, RESET_CSS)\n// }\n// }\n// }\n// consoleFunction(inputs.join(''), ...modifiers)\n// // Once we output the aggregated value, reset the queue. This should have\n// // already been emptied by the .shift() calls; but the explicit reset\n// // here acts as both a marker of intention as well as a fail-safe.\n// queue = []\n// }\n// return consoleFunctionProxy\n// }\n// return {\n// // Console(ish) functions.\n// log: using(console.log),\n// warn: using(console.warn),\n// error: using(console.error),\n// trace: using(console.trace),\n// group: using(console.group),\n// groupEnd: using(console.groupEnd),\n// // Formatting functions.\n// asAlert: alertFormatting,\n// asWarning: warningFormatting\n// }\n// })()\n/**\n * The logger that is used internally\n */\nexport class Logger {\n constructor(service) {\n this.name = service;\n }\n debug(method, ...args) {\n this._log('debug', method, args);\n }\n log(method, ...args) {\n this._log('log', method, args);\n }\n warn(method, ...args) {\n this._log('warn', method, args);\n }\n error(method, ...args) {\n this._log('error', method, args);\n }\n _log(type, method, args = []) {\n if (!getDebugEnabled()) {\n return;\n }\n let groupText = `[BEACON] ${new Date().toISOString()} [${this.name}](${method})`;\n let data = args;\n if (args[0] && typeof args[0] === 'string') {\n groupText += ` ${args[0]}`;\n data = args.slice(1);\n }\n switch (type) {\n case 'error':\n console.group(groupText);\n console.error(...data);\n break;\n case 'warn':\n console.group(groupText);\n console.warn(...data);\n break;\n case 'debug':\n console.groupCollapsed(groupText);\n console.debug(...data);\n break;\n default:\n console.group(groupText);\n console.log(...data);\n }\n console.groupEnd();\n // echo.group(echo.asWarning(`[BEACON] ${message}`))\n // echo.log(echo.asWarning(`[${this.name}]`), echo.asAlert(`(${method})`), ...args)\n // echo.groupEnd()\n }\n}\n//# sourceMappingURL=Logger.js.map","var __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};\nimport * as bs58check from 'bs58check';\nimport * as sodium from 'libsodium-wrappers';\n/* eslint-disable prefer-arrow/prefer-arrow-functions */\n/**\n * Convert a value to hex\n *\n * @param value\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function toHex(value) {\n return Buffer.from(value).toString('hex');\n}\n/**\n * Get the hex hash of a value\n *\n * @param key\n */\nexport function getHexHash(key) {\n return __awaiter(this, void 0, void 0, function* () {\n yield sodium.ready;\n return toHex(sodium.crypto_generichash(32, key));\n });\n}\n/**\n * Get a keypair from a seed\n *\n * @param seed\n */\nexport function getKeypairFromSeed(seed) {\n return __awaiter(this, void 0, void 0, function* () {\n yield sodium.ready;\n return sodium.crypto_sign_seed_keypair(sodium.crypto_generichash(32, sodium.from_string(seed)));\n });\n}\n/**\n * Encrypt a message with a shared key\n *\n * @param message\n * @param sharedKey\n */\nexport function encryptCryptoboxPayload(message, sharedKey) {\n return __awaiter(this, void 0, void 0, function* () {\n yield sodium.ready;\n const nonce = Buffer.from(sodium.randombytes_buf(sodium.crypto_secretbox_NONCEBYTES));\n const combinedPayload = Buffer.concat([\n nonce,\n Buffer.from(sodium.crypto_secretbox_easy(Buffer.from(message, 'utf8'), nonce, sharedKey))\n ]);\n return toHex(combinedPayload);\n });\n}\n/**\n * Decrypt a message with a shared key\n *\n * @param payload\n * @param sharedKey\n */\nexport function decryptCryptoboxPayload(payload, sharedKey) {\n return __awaiter(this, void 0, void 0, function* () {\n yield sodium.ready;\n const nonce = payload.slice(0, sodium.crypto_secretbox_NONCEBYTES);\n const ciphertext = payload.slice(sodium.crypto_secretbox_NONCEBYTES);\n return Buffer.from(sodium.crypto_secretbox_open_easy(ciphertext, nonce, sharedKey)).toString('utf8');\n });\n}\n/**\n * Encrypt a message with a public key\n *\n * @param payload\n * @param publicKey\n */\nexport function sealCryptobox(payload, publicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n yield sodium.ready;\n const kxSelfPublicKey = sodium.crypto_sign_ed25519_pk_to_curve25519(Buffer.from(publicKey)); // Secret bytes to scalar bytes\n const encryptedMessage = sodium.crypto_box_seal(payload, kxSelfPublicKey);\n return toHex(encryptedMessage);\n });\n}\n/**\n * Decrypt a message with public + private key\n *\n * @param encryptedPayload\n * @param publicKey\n * @param privateKey\n */\nexport function openCryptobox(encryptedPayload, publicKey, privateKey) {\n return __awaiter(this, void 0, void 0, function* () {\n yield sodium.ready;\n const kxSelfPrivateKey = sodium.crypto_sign_ed25519_sk_to_curve25519(Buffer.from(privateKey)); // Secret bytes to scalar bytes\n const kxSelfPublicKey = sodium.crypto_sign_ed25519_pk_to_curve25519(Buffer.from(publicKey)); // Secret bytes to scalar bytes\n const decryptedMessage = sodium.crypto_box_seal_open(encryptedPayload, kxSelfPublicKey, kxSelfPrivateKey);\n return Buffer.from(decryptedMessage).toString();\n });\n}\n/**\n * Get an address from the public key\n *\n * @param publicKey\n */\nexport function getAddressFromPublicKey(publicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n yield sodium.ready;\n const prefixes = {\n // tz1...\n edpk: {\n length: 54,\n prefix: Buffer.from(new Uint8Array([6, 161, 159]))\n },\n // tz2...\n sppk: {\n length: 55,\n prefix: Buffer.from(new Uint8Array([6, 161, 161]))\n },\n // tz3...\n p2pk: {\n length: 55,\n prefix: Buffer.from(new Uint8Array([6, 161, 164]))\n }\n };\n let prefix;\n let plainPublicKey;\n if (publicKey.length === 64) {\n prefix = prefixes.edpk.prefix;\n plainPublicKey = publicKey;\n }\n else {\n const entries = Object.entries(prefixes);\n for (let index = 0; index < entries.length; index++) {\n const [key, value] = entries[index];\n if (publicKey.startsWith(key) && publicKey.length === value.length) {\n prefix = value.prefix;\n const decoded = bs58check.decode(publicKey);\n plainPublicKey = decoded.slice(key.length, decoded.length).toString('hex');\n break;\n }\n }\n }\n if (!prefix || !plainPublicKey) {\n throw new Error(`invalid publicKey: ${publicKey}`);\n }\n const payload = sodium.crypto_generichash(20, Buffer.from(plainPublicKey, 'hex'));\n return bs58check.encode(Buffer.concat([prefix, Buffer.from(payload)]));\n });\n}\n/**\n * Get the recipient string used in the matrix message\n *\n * @param recipientHash\n * @param relayServer\n */\nexport function recipientString(recipientHash, relayServer) {\n return `@${recipientHash}:${relayServer}`;\n}\n/* eslint-enable prefer-arrow/prefer-arrow-functions */\n//# sourceMappingURL=crypto.js.map","import arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArrayLimit from \"@babel/runtime/helpers/esm/iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\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}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","export var ExposedPromiseStatus;\n(function (ExposedPromiseStatus) {\n ExposedPromiseStatus[\"PENDING\"] = \"pending\";\n ExposedPromiseStatus[\"RESOLVED\"] = \"resolved\";\n ExposedPromiseStatus[\"REJECTED\"] = \"rejected\";\n})(ExposedPromiseStatus || (ExposedPromiseStatus = {}));\nconst notInitialized = () => {\n throw new Error('ExposedPromise not initialized yet.');\n};\n/**\n * Exposed promise allow you to create a promise and then resolve it later, from the outside\n */\nexport class ExposedPromise {\n constructor() {\n this._resolve = notInitialized;\n this._reject = notInitialized;\n this._status = ExposedPromiseStatus.PENDING;\n this._promise = new Promise((innerResolve, innerReject) => {\n this._resolve = (value) => {\n if (this.isSettled()) {\n return;\n }\n this._promiseResult = value;\n innerResolve(value);\n this._status = ExposedPromiseStatus.RESOLVED;\n return;\n };\n this._reject = (reason) => {\n if (this.isSettled()) {\n return;\n }\n this._promiseError = reason;\n innerReject(reason);\n this._status = ExposedPromiseStatus.REJECTED;\n return;\n };\n });\n }\n get promise() {\n return this._promise;\n }\n get resolve() {\n return this._resolve;\n }\n get reject() {\n return this._reject;\n }\n get status() {\n return this._status;\n }\n get promiseResult() {\n return this._promiseResult;\n }\n get promiseError() {\n return this._promiseError;\n }\n static resolve(value) {\n const promise = new ExposedPromise();\n promise.resolve(value);\n return promise;\n }\n static reject(reason) {\n const promise = new ExposedPromise();\n promise.reject(reason);\n return promise;\n }\n isPending() {\n return this.status === ExposedPromiseStatus.PENDING;\n }\n isResolved() {\n return this.status === ExposedPromiseStatus.RESOLVED;\n }\n isRejected() {\n return this.status === ExposedPromiseStatus.REJECTED;\n }\n isSettled() {\n return this.isResolved() || this.isRejected();\n }\n}\n//# sourceMappingURL=exposed-promise.js.map","const cbs = [(_) => undefined];\n/**\n * A mock for postmessage if run in node.js environment\n */\nlet windowRef = {\n postMessage: (message, _target) => {\n console.log('GOT MOCK POST MESSAGE', message);\n cbs.forEach((callbackElement) => {\n callbackElement({ data: message });\n });\n },\n addEventListener: (_name, eventCallback) => {\n cbs.push(eventCallback);\n },\n removeEventListener: (_name, eventCallback) => {\n cbs.splice(cbs.indexOf((element) => element === eventCallback), 1);\n },\n location: {\n origin: '*'\n }\n};\ntry {\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n windowRef = window;\n }\n}\ncatch (windowError) {\n console.log(`not defined: ${windowError}`);\n}\nconst clearMockWindowState = () => {\n cbs.length = 0;\n};\nexport { windowRef, clearMockWindowState };\n//# sourceMappingURL=MockWindow.js.map","// 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","export const SDK_VERSION = '2.3.1';\nexport const BEACON_VERSION = '2';\n//# sourceMappingURL=constants.js.map","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","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\nexport default function _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}","var __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};\n/* eslint-disable prefer-arrow/prefer-arrow-functions */\nimport * as sodium from 'libsodium-wrappers';\n/**\n * Generate a random GUID\n */\nexport function generateGUID() {\n return __awaiter(this, void 0, void 0, function* () {\n yield sodium.ready;\n const buf = sodium.randombytes_buf(16);\n return [buf.slice(0, 4), buf.slice(4, 6), buf.slice(6, 8), buf.slice(8, 10), buf.slice(10, 16)]\n .map(function (subbuf) {\n return Buffer.from(subbuf).toString('hex');\n })\n .join('-');\n });\n}\n/* eslint-enable prefer-arrow/prefer-arrow-functions */\n//# sourceMappingURL=generate-uuid.js.map","import { MichelsonV1Expression } from '@taquito/rpc';\nimport { Schema } from './schema/storage';\nimport stringify from 'fast-json-stable-stringify';\n\n// Retrieve a unique symbol associated with the key from the environment\n// Used in order to identify all object that are of type MichelsonMap even if they come from different module\nconst michelsonMapTypeSymbol = Symbol.for('taquito-michelson-map-type-symbol');\n\nexport type MichelsonMapKey = Array<any> | Object | string | boolean | number;\n\nconst isMapType = (\n value: MichelsonV1Expression\n): value is { prim: 'map' | 'big_map'; args: [MichelsonV1Expression, MichelsonV1Expression] } => {\n return 'args' in value && Array.isArray(value.args) && value.args.length === 2;\n};\n\nexport class MapTypecheckError implements Error {\n name: string = 'MapTypecheckError';\n message: string;\n\n constructor(public readonly value: any, public readonly type: any, errorType: 'key' | 'value') {\n this.message = `${errorType} not compliant with underlying michelson type`;\n }\n}\n\n/**\n * @description Michelson Map is an abstraction over the michelson native map. It supports complex Pair as key\n */\nexport class MichelsonMap<K extends MichelsonMapKey, T extends any> {\n private valueMap = new Map<string, T>();\n private keyMap = new Map<string, K>();\n\n public [michelsonMapTypeSymbol] = true;\n\n // Used to check if an object is a michelson map.\n // Using instanceof was not working for project that had multiple instance of taquito dependencies\n // as the class constructor is different\n static isMichelsonMap(obj: any): obj is MichelsonMap<any, any> {\n return obj && obj[michelsonMapTypeSymbol] === true;\n }\n\n private keySchema?: Schema;\n private valueSchema?: Schema;\n\n /**\n * @param mapType If specified key and value will be type-checked before being added to the map\n *\n * @example new MichelsonMap({ prim: \"map\", args: [{prim: \"string\"}, {prim: \"int\"}]})\n */\n constructor(mapType?: MichelsonV1Expression) {\n if (mapType) {\n this.setType(mapType);\n }\n }\n\n setType(mapType: MichelsonV1Expression) {\n if (!isMapType(mapType)) {\n throw new Error('mapType is not a valid michelson map type');\n }\n\n this.keySchema = new Schema(mapType.args[0]);\n this.valueSchema = new Schema(mapType.args[1]);\n }\n\n removeType() {\n this.keySchema = undefined;\n this.valueSchema = undefined;\n }\n\n static fromLiteral(obj: { [key: string]: any }, mapType?: MichelsonV1Expression) {\n const map = new MichelsonMap(mapType);\n Object.keys(obj).forEach(key => {\n map.set(key, obj[key]);\n });\n return map;\n }\n\n private typecheckKey(key: K) {\n if (this.keySchema) {\n return this.keySchema.Typecheck(key);\n }\n\n return true;\n }\n\n private typecheckValue(value: T) {\n if (this.valueSchema) {\n return this.valueSchema.Typecheck(value);\n }\n\n return true;\n }\n\n private assertTypecheckValue(value: T) {\n if (!this.typecheckValue(value)) {\n throw new MapTypecheckError(value, this.valueSchema, 'value');\n }\n }\n\n private assertTypecheckKey(key: K) {\n if (!this.typecheckKey(key)) {\n throw new MapTypecheckError(key, this.keySchema, 'key');\n }\n }\n\n private serializeDeterministically(key: K): string {\n return stringify(key);\n }\n\n *keys(): Generator<K> {\n for (const [key] of this.entries()) {\n yield key;\n }\n }\n\n *values(): Generator<T> {\n for (const [, value] of this.entries()) {\n yield value;\n }\n }\n\n *entries(): Generator<[K, T]> {\n for (const key of this.valueMap.keys()) {\n yield [this.keyMap.get(key)!, this.valueMap.get(key)!];\n }\n }\n\n get(key: K): T | undefined {\n this.assertTypecheckKey(key);\n\n const strKey = this.serializeDeterministically(key);\n return this.valueMap.get(strKey);\n }\n\n /**\n *\n * @description Set a key and a value in the MichelsonMap. If the key already exists, override the current value.\n *\n * @example map.set(\"myKey\", \"myValue\") // Using a string as key\n *\n * @example map.set({0: \"test\", 1: \"test1\"}, \"myValue\") // Using a pair as key\n *\n * @warn The same key can be represented in multiple ways, depending on the type of the key. This duplicate key situation will cause a runtime error (duplicate key) when sending the map data to the Tezos RPC node.\n *\n * For example, consider a contract with a map whose key is of type boolean. If you set the following values in MichelsonMap: map.set(false, \"myValue\") and map.set(null, \"myValue\").\n *\n * You will get two unique entries in the MichelsonMap. These values will both be evaluated as falsy by the MichelsonEncoder and ultimately rejected by the Tezos RPC.\n */\n set(key: K, value: T) {\n this.assertTypecheckKey(key);\n this.assertTypecheckValue(value);\n\n const strKey = this.serializeDeterministically(key);\n this.keyMap.set(strKey, key);\n this.valueMap.set(strKey, value);\n }\n\n delete(key: K) {\n this.assertTypecheckKey(key);\n\n this.keyMap.delete(this.serializeDeterministically(key));\n this.valueMap.delete(this.serializeDeterministically(key));\n }\n\n has(key: K) {\n this.assertTypecheckKey(key);\n\n const strKey = this.serializeDeterministically(key);\n return this.keyMap.has(strKey) && this.valueMap.has(strKey);\n }\n\n clear(): void {\n this.keyMap.clear();\n this.valueMap.clear();\n }\n\n get size() {\n return this.keyMap.size;\n }\n\n forEach(cb: (value: T, key: K, map: MichelsonMap<K, T>) => void) {\n for (const [key, value] of this.entries()) {\n cb(value, key, this);\n }\n }\n}\n","import { MichelsonV1Expression } from '@taquito/rpc';\n\nexport abstract class TokenValidationError implements Error {\n name: string = 'ValidationError';\n public message: string;\n\n constructor(public value: any, public token: Token, baseMessage: string) {\n const annot = this.token.annot();\n const annotText = annot ? `[${annot}] ` : '';\n this.message = `${annotText}${baseMessage}`;\n }\n}\n\nexport type TokenFactory = (val: any, idx: number) => Token;\n\nexport interface Semantic {\n [key: string]: (value: MichelsonV1Expression, schema: MichelsonV1Expression) => any;\n}\n\nexport abstract class Token {\n constructor(\n protected val: { prim: string; args?: any[]; annots?: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) { }\n\n protected typeWithoutAnnotations() {\n const removeArgsRec = (val: Token['val']): { prim: string; args?: any[] } => {\n if (val.args) {\n return {\n prim: val.prim,\n args: val.args.map(x => removeArgsRec(x)),\n };\n } else {\n return {\n prim: val.prim,\n };\n }\n };\n\n return removeArgsRec(this.val);\n }\n\n annot() {\n return (Array.isArray(this.val.annots) && this.val.annots.length > 0\n ? this.val.annots[0]\n : String(this.idx)\n ).replace(/(%|\\:)(_Liq_entry_)?/, '');\n }\n\n hasAnnotations() {\n return Array.isArray(this.val.annots) && this.val.annots.length;\n }\n\n public createToken = this.fac;\n\n public abstract ExtractSchema(): any;\n\n public abstract Execute(val: any, semantics?: Semantic): any;\n\n public abstract Encode(_args: any[]): any;\n\n public abstract EncodeObject(args: any): any;\n\n public ExtractSignature() {\n return [[this.ExtractSchema()]];\n }\n}\n\nexport type BigMapKeyType = string | number | object;\n\nexport abstract class ComparableToken extends Token {\n abstract ToBigMapKey(\n val: BigMapKeyType\n ): {\n key: { [key: string]: string | object[] };\n type: { prim: string, args?: object[] };\n };\n\n abstract ToKey(val: string): any;\n\n compare(o1: string, o2: string): number {\n if (o1 === o2) {\n return 0;\n }\n\n return o1 < o2 ? -1 : 1;\n }\n}\n","import { MichelsonMap } from '../michelson-map';\nimport { ComparableToken, Semantic, Token, TokenFactory, TokenValidationError } from './token';\n\nexport class BigMapValidationError extends TokenValidationError {\n name: string = 'BigMapValidationError';\n constructor(public value: any, public token: BigMapToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class BigMapToken extends Token {\n static prim = 'big_map';\n constructor(\n protected val: { prim: string; args: any[]; annots?: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n get ValueSchema() {\n return this.createToken(this.val.args[1], 0);\n }\n\n get KeySchema(): ComparableToken {\n return (this.createToken(this.val.args[0], 0) as unknown) as ComparableToken;\n }\n\n public ExtractSchema() {\n return {\n [this.KeySchema.ExtractSchema()]: this.ValueSchema.ExtractSchema(),\n };\n }\n\n private isValid(value: any): BigMapValidationError | null {\n if (MichelsonMap.isMichelsonMap(value)) {\n return null;\n }\n\n return new BigMapValidationError(value, this, 'Value must be a MichelsonMap');\n }\n\n public Encode(args: any[]): any {\n const val: MichelsonMap<any, any> = args.pop();\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return Array.from(val.keys())\n .sort((a: any, b: any) => this.KeySchema.compare(a, b))\n .map(key => {\n return {\n prim: 'Elt',\n args: [this.KeySchema.EncodeObject(key), this.ValueSchema.EncodeObject(val.get(key))],\n };\n });\n }\n\n public EncodeObject(args: any): any {\n const val: MichelsonMap<any, any> = args;\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return Array.from(val.keys())\n .sort((a: any, b: any) => this.KeySchema.compare(a, b))\n .map(key => {\n return {\n prim: 'Elt',\n args: [this.KeySchema.EncodeObject(key), this.ValueSchema.EncodeObject(val.get(key))],\n };\n });\n }\n\n public Execute(val: any[] | { int: string }, semantic?: Semantic) {\n if (semantic && semantic[BigMapToken.prim]) {\n return semantic[BigMapToken.prim](val as any, this.val);\n }\n\n if (Array.isArray(val)) {\n // Athens is returning an empty array for big map in storage\n // Internal: In taquito v5 it is still used to decode big map diff (as if they were a regular map)\n const map = new MichelsonMap(this.val);\n val.forEach(current => {\n map.set(this.KeySchema.ToKey(current.args[0]), this.ValueSchema.Execute(current.args[1]));\n });\n return map;\n } else if ('int' in val) {\n // Babylon is returning an int with the big map id in contract storage\n return val.int;\n } else {\n // Unknown case\n throw new Error(\n `Big map is expecting either an array (Athens) or an object with an int property (Babylon). Got ${JSON.stringify(\n val\n )}`\n );\n }\n }\n}\n","import { Token, TokenFactory, Semantic, ComparableToken } from './token';\n\nexport class OrToken extends ComparableToken {\n static prim = 'or';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public Encode(args: any[]): any {\n const label = args[args.length - 1];\n\n const leftToken = this.createToken(this.val.args[0], this.idx);\n let keyCount = 1;\n if (leftToken instanceof OrToken) {\n keyCount = Object.keys(leftToken.ExtractSchema()).length;\n }\n\n const rightToken = this.createToken(this.val.args[1], this.idx + keyCount);\n\n if (String(leftToken.annot()) === String(label) && !(leftToken instanceof OrToken)) {\n args.pop();\n return { prim: 'Left', args: [leftToken.Encode(args)] };\n } else if (String(rightToken.annot()) === String(label) && !(rightToken instanceof OrToken)) {\n args.pop();\n return { prim: 'Right', args: [rightToken.Encode(args)] };\n } else {\n if (leftToken instanceof OrToken) {\n let val = leftToken.Encode(args);\n if (val) {\n return { prim: 'Left', args: [val] };\n }\n }\n\n if (rightToken instanceof OrToken) {\n let val = rightToken.Encode(args);\n if (val) {\n return { prim: 'Right', args: [val] };\n }\n }\n return null;\n }\n }\n\n public ExtractSignature(): any {\n const leftToken = this.createToken(this.val.args[0], this.idx);\n let keyCount = 1;\n if (leftToken instanceof OrToken) {\n keyCount = Object.keys(leftToken.ExtractSchema()).length;\n }\n\n const rightToken = this.createToken(this.val.args[1], this.idx + keyCount);\n\n const newSig = [];\n\n if (leftToken instanceof OrToken) {\n newSig.push(...leftToken.ExtractSignature());\n } else {\n for (const sig of leftToken.ExtractSignature()) {\n newSig.push([leftToken.annot(), ...sig]);\n }\n }\n\n if (rightToken instanceof OrToken) {\n newSig.push(...rightToken.ExtractSignature());\n } else {\n for (const sig of rightToken.ExtractSignature()) {\n newSig.push([rightToken.annot(), ...sig]);\n }\n }\n\n return newSig;\n }\n\n public EncodeObject(args: any): any {\n const label = Object.keys(args)[0];\n\n const leftToken = this.createToken(this.val.args[0], this.idx);\n let keyCount = 1;\n if (leftToken instanceof OrToken) {\n keyCount = Object.keys(leftToken.ExtractSchema()).length;\n }\n\n const rightToken = this.createToken(this.val.args[1], this.idx + keyCount);\n\n if (String(leftToken.annot()) === String(label) && !(leftToken instanceof OrToken)) {\n return { prim: 'Left', args: [leftToken.EncodeObject(args[label])] };\n } else if (String(rightToken.annot()) === String(label) && !(rightToken instanceof OrToken)) {\n return { prim: 'Right', args: [rightToken.EncodeObject(args[label])] };\n } else {\n if (leftToken instanceof OrToken) {\n let val = leftToken.EncodeObject(args);\n if (val) {\n return { prim: 'Left', args: [val] };\n }\n }\n\n if (rightToken instanceof OrToken) {\n let val = rightToken.EncodeObject(args);\n if (val) {\n return { prim: 'Right', args: [val] };\n }\n }\n return null;\n }\n }\n\n public Execute(val: any, semantics?: Semantic): any {\n const leftToken = this.createToken(this.val.args[0], this.idx);\n let keyCount = 1;\n if (leftToken instanceof OrToken) {\n keyCount = Object.keys(leftToken.ExtractSchema()).length;\n }\n const rightToken = this.createToken(this.val.args[1], this.idx + keyCount);\n\n if (val.prim === 'Right') {\n if (rightToken instanceof OrToken) {\n return rightToken.Execute(val.args[0], semantics)\n } else {\n return {\n [rightToken.annot()]: rightToken.Execute(val.args[0], semantics),\n };\n }\n } else if (val.prim === 'Left') {\n if (leftToken instanceof OrToken) {\n return leftToken.Execute(val.args[0], semantics)\n }\n return {\n [leftToken.annot()]: leftToken.Execute(val.args[0], semantics),\n };\n } else {\n throw new Error(`Was expecting Left or Right prim but got: ${val.prim}`);\n }\n }\n\n private traversal(\n getLeftValue: (token: Token) => any,\n getRightValue: (token: Token) => any,\n concat: (left: any, right: any) => any\n ) {\n const leftToken = this.createToken(this.val.args[0], this.idx);\n let keyCount = 1;\n let leftValue;\n if (leftToken instanceof OrToken && !leftToken.hasAnnotations()) {\n leftValue = getLeftValue(leftToken);\n keyCount = Object.keys(leftToken.ExtractSchema()).length;\n } else {\n leftValue = { [leftToken.annot()]: getLeftValue(leftToken) };\n }\n\n const rightToken = this.createToken(this.val.args[1], this.idx + keyCount);\n let rightValue;\n if (rightToken instanceof OrToken && !rightToken.hasAnnotations()) {\n rightValue = getRightValue(rightToken);\n } else {\n rightValue = { [rightToken.annot()]: getRightValue(rightToken) };\n }\n\n const res = concat(leftValue, rightValue);\n\n return res;\n }\n public ExtractSchema(): any {\n return this.traversal(\n leftToken => leftToken.ExtractSchema(),\n rightToken => rightToken.ExtractSchema(),\n (leftValue, rightValue) => ({\n ...leftValue,\n ...rightValue,\n })\n );\n }\n\n private findToken(label: any): Token | null {\n const leftToken = this.createToken(this.val.args[0], this.idx);\n let keyCount = 1;\n if (leftToken instanceof OrToken) {\n keyCount = Object.keys(leftToken.ExtractSchema()).length;\n }\n\n const rightToken = this.createToken(this.val.args[1], this.idx + keyCount);\n\n if (String(leftToken.annot()) === String(label) && !(leftToken instanceof OrToken) && leftToken instanceof ComparableToken) {\n return leftToken\n } else if (String(rightToken.annot()) === String(label) && !(rightToken instanceof OrToken) && rightToken instanceof ComparableToken) {\n return rightToken\n } else {\n if (leftToken instanceof OrToken) {\n const tok = leftToken.findToken(label);\n if (tok) { return tok }\n }\n\n if (rightToken instanceof OrToken) {\n const tok = rightToken.findToken(label)\n if (tok) { return tok }\n }\n return null;\n }\n }\n\n compare(val1: any, val2: any): any {\n const labelVal1 = Object.keys(val1)[0];\n const labelVal2 = Object.keys(val2)[0];\n\n if (labelVal1 === labelVal2) {\n const token = this.findToken(labelVal1)\n if (token instanceof ComparableToken) {\n return token.compare(val1[labelVal1], val2[labelVal1])\n }\n\n } else {\n const encoded1 = JSON.stringify(this.EncodeObject(val1))\n const encoded2 = JSON.stringify(this.EncodeObject(val2))\n return encoded1 < encoded2 ? -1 : 1;\n }\n }\n\n public ToKey(val: any) {\n return this.Execute(val);\n }\n\n public ToBigMapKey(val: any) {\n return {\n key: this.EncodeObject(val),\n type: this.typeWithoutAnnotations(),\n };\n }\n}\n","import { Token, TokenFactory, Semantic, ComparableToken } from './token';\nimport { OrToken } from './or';\n\n// collapse comb pair\nfunction collapse(val: Token['val'] | any[], prim: string = PairToken.prim): [any, any] {\n if (Array.isArray(val)) {\n return collapse({\n prim: prim,\n args: val,\n }, prim);\n }\n if (val.args === undefined) {\n throw new Error('Token has no arguments');\n }\n if (val.args.length > 2) {\n return [val.args[0], {\n prim: prim,\n args: val.args.slice(1),\n }];\n }\n return [val.args[0], val.args[1]];\n}\nexport class PairToken extends ComparableToken {\n static prim = 'pair';\n\n constructor(\n val: { prim: string; args: any[]; annots: any[] } | any[],\n idx: number,\n fac: TokenFactory\n ) {\n super(Array.isArray(val) ? {\n prim: PairToken.prim,\n args: val,\n } : val, idx, fac);\n }\n\n private args(): [any, any] {\n // collapse comb pair\n return collapse(this.val);\n }\n\n private tokens(): [Token, Token] {\n let cnt = 0;\n return this.args().map(a => {\n const tok = this.createToken(a, this.idx + cnt);\n if (tok instanceof PairToken) {\n cnt += Object.keys(tok.ExtractSchema()).length;\n } else {\n cnt++;\n }\n return tok;\n }) as [Token, Token];\n }\n\n public Encode(args: any[]): any {\n return {\n prim: 'Pair',\n args: this.tokens().map(t => t.Encode(args)),\n };\n }\n\n public ExtractSignature(): any {\n const args = this.args();\n const leftToken = this.createToken(args[0], this.idx);\n let keyCount = 1;\n if (leftToken instanceof OrToken) {\n keyCount = Object.keys(leftToken.ExtractSchema()).length;\n }\n\n const rightToken = this.createToken(args[1], this.idx + keyCount);\n\n const newSig = [];\n\n for (const leftSig of leftToken.ExtractSignature()) {\n for (const rightSig of rightToken.ExtractSignature()) {\n newSig.push([...leftSig, ...rightSig]);\n }\n }\n\n return newSig;\n }\n\n public ToBigMapKey(val: any) {\n return {\n key: this.EncodeObject(val),\n type: this.typeWithoutAnnotations(),\n };\n }\n\n public ToKey(val: any) {\n return this.Execute(val);\n }\n\n public EncodeObject(args: any): any {\n const [leftToken, rightToken] = this.tokens();\n\n let leftValue;\n if (leftToken instanceof PairToken && !leftToken.hasAnnotations()) {\n leftValue = args;\n } else {\n leftValue = args[leftToken.annot()];\n }\n\n let rightValue;\n if (rightToken instanceof PairToken && !rightToken.hasAnnotations()) {\n rightValue = args;\n } else {\n rightValue = args[rightToken.annot()];\n }\n\n return {\n prim: 'Pair',\n args: [leftToken.EncodeObject(leftValue), rightToken.EncodeObject(rightValue)],\n };\n }\n\n private traversal(getLeftValue: (token: Token) => any, getRightValue: (token: Token) => any) {\n const args = this.args();\n\n const leftToken = this.createToken(args[0], this.idx);\n let keyCount = 1;\n let leftValue;\n if (leftToken instanceof PairToken && !leftToken.hasAnnotations()) {\n leftValue = getLeftValue(leftToken);\n keyCount = Object.keys(leftToken.ExtractSchema()).length;\n } else {\n leftValue = { [leftToken.annot()]: getLeftValue(leftToken) };\n }\n\n const rightToken = this.createToken(args[1], this.idx + keyCount);\n let rightValue;\n if (rightToken instanceof PairToken && !rightToken.hasAnnotations()) {\n rightValue = getRightValue(rightToken);\n } else {\n rightValue = { [rightToken.annot()]: getRightValue(rightToken) };\n }\n\n const res = {\n ...leftValue,\n ...rightValue,\n };\n\n return res;\n }\n\n public Execute(val: any, semantics?: Semantic): { [key: string]: any } {\n const args = collapse(val, 'Pair');\n return this.traversal(\n leftToken => leftToken.Execute(args[0], semantics),\n rightToken => rightToken.Execute(args[1], semantics)\n );\n }\n\n public ExtractSchema(): any {\n return this.traversal(\n leftToken => leftToken.ExtractSchema(),\n rightToken => rightToken.ExtractSchema()\n );\n }\n\n public compare(val1: any, val2: any) {\n const [leftToken, rightToken] = this.tokens();\n\n const getValue = (token: Token, args: any) => {\n if (token instanceof PairToken && !token.hasAnnotations()) {\n return args;\n } else {\n return args[token.annot()];\n }\n };\n\n if (leftToken instanceof ComparableToken && rightToken instanceof ComparableToken) {\n const result: number = leftToken.compare(\n getValue(leftToken, val1),\n getValue(leftToken, val2)\n );\n\n if (result === 0) {\n return rightToken.compare(getValue(rightToken, val1), getValue(rightToken, val2));\n }\n\n return result;\n }\n\n throw new Error('Not a comparable pair');\n }\n}\n","import { Token, TokenFactory, ComparableToken, TokenValidationError } from '../token';\nimport BigNumber from 'bignumber.js';\n\nexport class NatValidationError extends TokenValidationError {\n name: string = 'NatValidationError';\n constructor(public value: any, public token: NatToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class NatToken extends ComparableToken {\n static prim = 'nat';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public Execute(val: any): { [key: string]: any } {\n return new BigNumber(val[Object.keys(val)[0]]);\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { int: new BigNumber(val).toFixed() };\n }\n\n private isValid(val: any): NatValidationError | null {\n const bigNumber = new BigNumber(val);\n if (bigNumber.isNaN()) {\n return new NatValidationError(val, this, `Value is not a number: ${val}`);\n } else if (bigNumber.isNegative()) {\n return new NatValidationError(val, this, `Value cannot be negative: ${val}`);\n } else {\n return null;\n }\n }\n\n public EncodeObject(val: any): any {\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { int: new BigNumber(val).toFixed() };\n }\n\n public ExtractSchema() {\n return NatToken.prim;\n }\n\n public ToBigMapKey(val: string | number) {\n return {\n key: { int: String(val) },\n type: { prim: NatToken.prim },\n };\n }\n\n public ToKey({ int }: any) {\n return int;\n }\n\n compare(nat1: string | number, nat2: string | number) {\n const o1 = Number(nat1);\n const o2 = Number(nat2);\n if (o1 === o2) {\n return 0;\n }\n\n return o1 < o2 ? -1 : 1;\n }\n}\n","import { Token, TokenFactory, ComparableToken } from '../token';\n\nexport class StringToken extends ComparableToken {\n static prim = 'string';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public Execute(val: any): string {\n return val[Object.keys(val)[0]];\n }\n\n public ExtractSchema() {\n return StringToken.prim;\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n return { string: val };\n }\n\n public EncodeObject(val: any): any {\n return { string: val };\n }\n\n // tslint:disable-next-line: variable-name\n public ToKey({ string }: any) {\n return string;\n }\n\n public ToBigMapKey(val: string) {\n return {\n key: { string: val },\n type: { prim: StringToken.prim },\n };\n }\n}\n","import { Token, TokenFactory, ComparableToken, TokenValidationError } from '../token';\nimport { b58decode, encodePubKey, validateAddress, ValidationResult } from '@taquito/utils';\n\nexport class AddressValidationError extends TokenValidationError {\n name: string = 'AddressValidationError';\n constructor(public value: any, public token: AddressToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class AddressToken extends ComparableToken {\n static prim = 'address';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public ToBigMapKey(val: any) {\n const decoded = b58decode(val);\n return {\n key: { bytes: decoded },\n type: { prim: 'bytes' },\n };\n }\n\n private isValid(value: any): AddressValidationError | null {\n if (validateAddress(value) !== ValidationResult.VALID) {\n return new AddressValidationError(value, this, `Address is not valid: ${value}`);\n }\n\n return null;\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { string: val };\n }\n\n public EncodeObject(val: any): any {\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { string: val };\n }\n\n // tslint:disable-next-line: variable-name\n public Execute(val: { bytes: string; string: string }): string {\n if (val.string) {\n return val.string;\n }\n\n return encodePubKey(val.bytes);\n }\n\n public ExtractSchema() {\n return AddressToken.prim;\n }\n\n // tslint:disable-next-line: variable-name\n public ToKey({ bytes, string }: any) {\n if (string) {\n return string;\n }\n\n return encodePubKey(bytes);\n }\n\n compare(address1: string, address2: string) {\n const isImplicit = (address: string) => {\n return address.startsWith('tz');\n };\n\n if (isImplicit(address1) && isImplicit(address2)) {\n return super.compare(address1, address2);\n } else if (isImplicit(address1)) {\n return -1;\n } else if (isImplicit(address2)) {\n return 1;\n } else {\n return super.compare(address1, address2);\n }\n }\n}\n","import { MichelsonMap } from '../michelson-map';\nimport { ComparableToken, Semantic, Token, TokenFactory, TokenValidationError } from './token';\n\nexport class MapValidationError extends TokenValidationError {\n name: string = 'MapValidationError';\n constructor(public value: any, public token: MapToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class MapToken extends Token {\n static prim = 'map';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n get ValueSchema() {\n return this.createToken(this.val.args[1], 0);\n }\n\n get KeySchema(): ComparableToken {\n return this.createToken(this.val.args[0], 0) as any;\n }\n\n private isValid(value: any): MapValidationError | null {\n if (MichelsonMap.isMichelsonMap(value)) {\n return null;\n }\n\n return new MapValidationError(value, this, 'Value must be a MichelsonMap');\n }\n\n public Execute(val: any[], semantics?: Semantic): { [key: string]: any } {\n const map = new MichelsonMap(this.val);\n\n val.forEach(current => {\n map.set(\n this.KeySchema.ToKey(current.args[0]),\n this.ValueSchema.Execute(current.args[1], semantics)\n );\n });\n return map;\n }\n\n public Encode(args: any[]): any {\n const val: MichelsonMap<any, any> = args.pop();\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return Array.from(val.keys())\n .sort((a: any, b: any) => this.KeySchema.compare(a, b))\n .map(key => {\n return {\n prim: 'Elt',\n args: [this.KeySchema.EncodeObject(key), this.ValueSchema.EncodeObject(val.get(key))],\n };\n });\n }\n\n public EncodeObject(args: any): any {\n const val: MichelsonMap<any, any> = args;\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return Array.from(val.keys())\n .sort((a: any, b: any) => this.KeySchema.compare(a, b))\n .map(key => {\n return {\n prim: 'Elt',\n args: [this.KeySchema.EncodeObject(key), this.ValueSchema.EncodeObject(val.get(key))],\n };\n });\n }\n\n public ExtractSchema() {\n return {\n map: {\n key: this.KeySchema.ExtractSchema(),\n value: this.ValueSchema.ExtractSchema(),\n },\n };\n }\n}\n","import { Token, TokenFactory, ComparableToken } from '../token';\n\nexport class BoolToken extends ComparableToken {\n static prim = 'bool';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public Execute(val: any): boolean {\n return String(val.prim).toLowerCase() === 'true' ? true : false;\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n return { prim: val ? 'True' : 'False' };\n }\n\n public EncodeObject(val: any) {\n return { prim: val ? 'True' : 'False' };\n }\n\n public ExtractSchema() {\n return BoolToken.prim;\n }\n\n ToBigMapKey(val: string): { key: { [key: string]: string }; type: { prim: string } } {\n return {\n key: this.EncodeObject(val),\n type: { prim: BoolToken.prim },\n };\n }\n\n ToKey(val: string) {\n return this.EncodeObject(val);\n }\n\n compare(val1: any, val2: any) {\n if ((val1 && val2) || (!val1 && !val2)) {\n return 0;\n } else if (val1) {\n return 1;\n } else {\n return -1;\n }\n }\n}\n","import { encodePubKey, validateAddress, ValidationResult } from '@taquito/utils';\nimport { Token, TokenFactory, TokenValidationError } from './token';\n\nexport class ContractValidationError extends TokenValidationError {\n name: string = 'ContractValidationError';\n constructor(public value: any, public token: ContractToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class ContractToken extends Token {\n static prim = 'contract';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n private isValid(value: any): ContractValidationError | null {\n // tz1,tz2 and tz3 seems to be valid contract values (for Unit contract)\n if (validateAddress(value) !== ValidationResult.VALID) {\n return new ContractValidationError(value, this, 'Contract address is not valid');\n }\n\n return null;\n }\n\n public Execute(val: { bytes: string; string: string }) {\n if (val.string) {\n return val.string;\n }\n\n return encodePubKey(val.bytes);\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n return { string: val };\n }\n\n public EncodeObject(val: any): any {\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n return { string: val };\n }\n\n public ExtractSchema() {\n return ContractToken.prim;\n }\n}\n","import { Token, TokenFactory, Semantic, TokenValidationError } from './token';\n\nexport class ListValidationError extends TokenValidationError {\n name: string = 'ListValidationError';\n constructor(public value: any, public token: ListToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class ListToken extends Token {\n static prim = 'list';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n private isValid(value: any): ListValidationError | null {\n if (Array.isArray(value)) {\n return null;\n }\n\n return new ListValidationError(value, this, 'Value must be an array');\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n const schema = this.createToken(this.val.args[0], 0);\n return val.reduce((prev: any, current: any) => {\n return [...prev, schema.EncodeObject(current)];\n }, []);\n }\n\n public Execute(val: any, semantics?: Semantic) {\n const schema = this.createToken(this.val.args[0], 0);\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return val.reduce((prev: any, current: any) => {\n return [...prev, schema.Execute(current, semantics)];\n }, []);\n }\n\n public EncodeObject(args: any): any {\n const schema = this.createToken(this.val.args[0], 0);\n\n const err = this.isValid(args);\n if (err) {\n throw err;\n }\n\n return args.reduce((prev: any, current: any) => {\n return [...prev, schema.EncodeObject(current)];\n }, []);\n }\n\n public ExtractSchema() {\n return ListToken.prim;\n }\n}\n","import { Token, TokenFactory, ComparableToken, TokenValidationError } from '../token';\nimport BigNumber from 'bignumber.js';\n\nexport class MutezValidationError extends TokenValidationError {\n name: string = 'MutezValidationError';\n constructor(public value: any, public token: MutezToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class MutezToken extends ComparableToken {\n static prim = 'mutez';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public Execute(val: any) {\n return new BigNumber(val[Object.keys(val)[0]]);\n }\n\n public ExtractSchema() {\n return MutezToken.prim;\n }\n\n private isValid(val: any): MutezValidationError | null {\n const bigNumber = new BigNumber(val);\n if (bigNumber.isNaN()) {\n return new MutezValidationError(val, this, `Value is not a number: ${val}`);\n } else {\n return null;\n }\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { int: String(val).toString() };\n }\n\n public EncodeObject(val: any): any {\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { int: String(val).toString() };\n }\n\n public ToBigMapKey(val: string | number) {\n return {\n key: { int: String(val) },\n type: { prim: MutezToken.prim },\n };\n }\n\n public ToKey({ int }: any) {\n return int;\n }\n\n compare(mutez1: string | number, mutez2: string | number) {\n const o1 = Number(mutez1);\n const o2 = Number(mutez2);\n if (o1 === o2) {\n return 0;\n }\n\n return o1 < o2 ? -1 : 1;\n }\n}\n","import { TokenFactory, ComparableToken, TokenValidationError } from '../token';\n\nexport class BytesValidationError extends TokenValidationError {\n name: string = 'BytesValidationError';\n constructor(public value: any, public token: BytesToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class BytesToken extends ComparableToken {\n static prim = 'bytes';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public ToBigMapKey(val: string) {\n return {\n key: { bytes: val },\n type: { prim: BytesToken.prim },\n };\n }\n\n private isValid(val: any): BytesValidationError | null {\n if (typeof val === 'string' && /^[0-9a-fA-F]*$/.test(val) && val.length % 2 === 0) {\n return null;\n } else {\n return new BytesValidationError(val, this, `Invalid bytes: ${val}`);\n }\n }\n\n private convertUint8ArrayToHexString(val: any) {\n return val.constructor === Uint8Array ? Buffer.from(val).toString('hex') : val;\n }\n\n public Encode(args: any[]): any {\n let val = args.pop();\n\n val = this.convertUint8ArrayToHexString(val);\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { bytes: String(val).toString() };\n }\n\n public EncodeObject(val: string | Uint8Array) {\n val = this.convertUint8ArrayToHexString(val);\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { bytes: String(val).toString() };\n }\n\n public Execute(val: any): string {\n return val.bytes;\n }\n\n public ExtractSchema() {\n return BytesToken.prim;\n }\n\n // tslint:disable-next-line: variable-name\n public ToKey({ bytes, string }: any) {\n if (string) {\n return string;\n }\n\n return bytes;\n }\n}\n","import { Token, TokenFactory, Semantic, ComparableToken } from './token';\n\nexport class OptionToken extends ComparableToken {\n static prim = 'option';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public subToken(): Token {\n return this.createToken(this.val.args[0], this.idx);\n }\n\n annot(): string {\n return Array.isArray(this.val.annots)\n ? super.annot()\n : this.createToken(this.val.args[0], this.idx).annot();\n }\n\n public Encode(args: any): any {\n const value = args;\n if (\n value === undefined ||\n value === null\n ) {\n return { prim: 'None' };\n }\n else if ((Array.isArray(value) && (value[value.length - 1] === undefined || value[value.length - 1] === null))) {\n value.pop();\n return { prim: 'None' };\n }\n\n const schema = this.createToken(this.val.args[0], 0);\n return { prim: 'Some', args: [schema.Encode(args)] };\n }\n\n public EncodeObject(args: any): any {\n const schema = this.createToken(this.val.args[0], 0);\n const value = args;\n\n if (value === undefined || value === null) {\n return { prim: 'None' };\n }\n\n return { prim: 'Some', args: [schema.EncodeObject(value)] };\n }\n\n public Execute(val: any, semantics?: Semantic) {\n if (val.prim === 'None') {\n return null;\n }\n\n const schema = this.createToken(this.val.args[0], 0);\n return schema.Execute(val.args[0], semantics);\n }\n\n public ExtractSchema() {\n const schema = this.createToken(this.val.args[0], 0);\n return schema.ExtractSchema();\n }\n\n public ExtractSignature() {\n const schema = this.createToken(this.val.args[0], 0);\n return [...schema.ExtractSignature(), []];\n }\n\n get KeySchema(): ComparableToken {\n return this.createToken(this.val.args[0], 0) as any;\n }\n\n compare(val1: any, val2: any) {\n if (!val1) {\n return -1\n } else if (!val2) {\n return 1\n }\n return this.KeySchema.compare(val1, val2)\n }\n\n public ToKey(val: any) {\n return this.Execute(val);\n }\n\n public ToBigMapKey(val: any) {\n return {\n key: this.EncodeObject(val),\n type: this.typeWithoutAnnotations(),\n };\n }\n}\n","import { Token, TokenFactory, ComparableToken } from '../token';\n\nexport class TimestampToken extends ComparableToken {\n static prim = 'timestamp';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public Execute(val: { string?: string; int?: string }) {\n if (val.string) {\n return new Date(val.string).toISOString();\n } else if (val.int) {\n return new Date(Number(val.int) * 1000).toISOString();\n }\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n return { string: val };\n }\n\n public EncodeObject(val: any): any {\n return { string: val };\n }\n\n public ExtractSchema() {\n return TimestampToken.prim;\n }\n\n // tslint:disable-next-line: variable-name\n public ToKey({ string }: any) {\n return string;\n }\n\n public ToBigMapKey(val: string) {\n return {\n key: { string: val },\n type: { prim: TimestampToken.prim },\n };\n }\n}\n","import { Token, TokenFactory, ComparableToken, TokenValidationError } from '../token';\nimport BigNumber from 'bignumber.js';\n\nexport class IntValidationError extends TokenValidationError {\n name: string = 'IntValidationError';\n constructor(public value: any, public token: IntToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class IntToken extends ComparableToken {\n static prim = 'int';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public Execute(val: { [key: string]: string }): { [key: string]: any } {\n return new BigNumber(val[Object.keys(val)[0]]);\n }\n\n public ExtractSchema() {\n return IntToken.prim;\n }\n\n private isValid(val: any): IntValidationError | null {\n const bigNumber = new BigNumber(val);\n if (bigNumber.isNaN()) {\n return new IntValidationError(val, this, `Value is not a number: ${val}`);\n } else {\n return null;\n }\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { int: new BigNumber(val).toFixed() };\n }\n\n public EncodeObject(val: any): any {\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { int: new BigNumber(val).toFixed() };\n }\n\n public ToBigMapKey(val: string | number) {\n return {\n key: { int: String(val) },\n type: { prim: IntToken.prim },\n };\n }\n\n public ToKey({ int }: any) {\n return int;\n }\n\n compare(int1: string | number, int2: string | number) {\n const o1 = Number(int1);\n const o2 = Number(int2);\n if (o1 === o2) {\n return 0;\n }\n\n return o1 < o2 ? -1 : 1;\n }\n}\n","import { ComparableToken, TokenFactory } from './token';\nimport { UnitValue } from '../taquito-michelson-encoder';\n\nexport class UnitToken extends ComparableToken {\n static prim = 'unit';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public Encode(args: any[]): any {\n args.pop();\n return { prim: 'Unit' };\n }\n\n public EncodeObject(_val: any): any {\n return { prim: 'Unit' };\n }\n\n public Execute(_val: { prim: string }) {\n return UnitValue;\n }\n\n public ExtractSchema() {\n return UnitToken.prim;\n }\n\n compare(_val1: any, _val2: any) {\n return 0;\n }\n\n ToKey(_val: any) {\n return UnitValue;\n }\n\n ToBigMapKey(_val: any) {\n return {\n key: { prim: 'Unit' },\n type: { prim: UnitToken.prim },\n };\n }\n}\n","import { ComparableToken, TokenFactory, TokenValidationError } from './token';\nimport { encodeKey, validatePublicKey, ValidationResult } from '@taquito/utils';\n\nexport class KeyValidationError extends TokenValidationError {\n name: string = 'KeyValidationError';\n constructor(public value: any, public token: KeyToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class KeyToken extends ComparableToken {\n static prim = 'key';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public Execute(val: { bytes: string; string: string }): string {\n if (val.string) {\n return val.string;\n }\n\n return encodeKey(val.bytes);\n }\n\n private isValid(value: any): KeyValidationError | null {\n if (validatePublicKey(value) !== ValidationResult.VALID) {\n return new KeyValidationError(value, this, 'Key is not valid');\n }\n\n return null;\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { string: val };\n }\n\n public EncodeObject(val: any): any {\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { string: val };\n }\n\n public ExtractSchema() {\n return KeyToken.prim;\n }\n\n ToKey(val: any) {\n return this.Execute(val);\n }\n\n ToBigMapKey(val: string) {\n return {\n key: { string: val },\n type: { prim: KeyToken.prim },\n };\n }\n}\n","import { Token, TokenFactory, ComparableToken, TokenValidationError } from '../token';\nimport { encodeKeyHash, validateKeyHash, ValidationResult } from '@taquito/utils';\n\nexport class KeyHashValidationError extends TokenValidationError {\n name: string = 'KeyHashValidationError';\n constructor(public value: any, public token: KeyHashToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class KeyHashToken extends ComparableToken {\n static prim = 'key_hash';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public Execute(val: { bytes: string; string: string }): string {\n if (val.string) {\n return val.string;\n }\n\n return encodeKeyHash(val.bytes);\n }\n\n private isValid(value: any): KeyHashValidationError | null {\n if (validateKeyHash(value) !== ValidationResult.VALID) {\n return new KeyHashValidationError(value, this, `KeyHash is not valid: ${value}`);\n }\n\n return null;\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { string: val };\n }\n\n public EncodeObject(val: any): any {\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { string: val };\n }\n\n public ExtractSchema() {\n return KeyHashToken.prim;\n }\n\n // tslint:disable-next-line: variable-name\n public ToKey({ string, bytes }: any) {\n if (string) {\n return string;\n }\n\n return encodeKeyHash(bytes);\n }\n\n public ToBigMapKey(val: string) {\n return {\n key: { string: val },\n type: { prim: KeyHashToken.prim },\n };\n }\n}\n","import { ComparableToken, TokenFactory, TokenValidationError } from './token';\nimport { validateSignature, ValidationResult } from '@taquito/utils';\n\nexport class SignatureValidationError extends TokenValidationError {\n name: string = 'SignatureValidationError';\n constructor(public value: any, public token: SignatureToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class SignatureToken extends ComparableToken {\n static prim = 'signature';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public Execute(val: any): { [key: string]: any } {\n return val.string;\n }\n\n private isValid(value: any): SignatureValidationError | null {\n if (validateSignature(value) !== ValidationResult.VALID) {\n return new SignatureValidationError(value, this, 'Signature is not valid');\n }\n\n return null;\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { string: val };\n }\n\n public EncodeObject(val: any): any {\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { string: val };\n }\n\n public ExtractSchema() {\n return SignatureToken.prim;\n }\n\n ToKey(val: any) {\n return this.Execute(val);\n }\n\n ToBigMapKey(val: string) {\n return {\n key: { string: val },\n type: { prim: SignatureToken.prim },\n };\n }\n}\n","import { Token, TokenFactory } from './token';\n\nexport class LambdaToken extends Token {\n static prim = 'lambda';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public Execute(val: any) {\n if (val.string) {\n return val.string;\n } else {\n return val;\n }\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n return val;\n }\n\n public EncodeObject(val: any): any {\n return val;\n }\n\n public ExtractSchema() {\n const leftToken = this.createToken(this.val.args[0], this.idx);\n const rightToken = this.createToken(this.val.args[1], this.idx + 1);\n return {\n [LambdaToken.prim]: {\n parameters: leftToken.ExtractSchema(),\n returns: rightToken.ExtractSchema(),\n },\n };\n }\n}\n","import { Token, TokenFactory } from './token';\n\nexport class OperationToken extends Token {\n static prim = 'operation';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public Execute(val: any): { [key: string]: any } {\n return val.string;\n }\n\n public Encode(...args: any[]): any {\n const val = args.pop();\n return { string: val };\n }\n\n public EncodeObject(val: any): any {\n return { string: val };\n }\n\n public ExtractSchema() {\n return OperationToken.prim;\n }\n}\n","import { Token, TokenFactory, Semantic, TokenValidationError, ComparableToken } from './token';\n\nexport class SetValidationError extends TokenValidationError {\n name: string = 'SetValidationError';\n constructor(public value: any, public token: SetToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class SetToken extends Token {\n static prim = 'set';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n get KeySchema(): ComparableToken {\n return this.createToken(this.val.args[0], 0) as any;\n }\n\n private isValid(value: any): SetValidationError | null {\n if (Array.isArray(value)) {\n return null;\n }\n\n return new SetValidationError(value, this, 'Value must be an array');\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return val\n .sort((a: any, b: any) => this.KeySchema.compare(a, b))\n .reduce((prev: any, current: any) => {\n return [...prev, this.KeySchema.EncodeObject(current)];\n }, []);\n }\n\n public Execute(val: any, semantics?: Semantic) {\n return val.reduce((prev: any, current: any) => {\n return [...prev, this.KeySchema.Execute(current, semantics)];\n }, []);\n }\n\n public EncodeObject(args: any): any {\n const err = this.isValid(args);\n if (err) {\n throw err;\n }\n\n return args\n .sort((a: any, b: any) => this.KeySchema.compare(a, b))\n .reduce((prev: any, current: any) => {\n return [...prev, this.KeySchema.EncodeObject(current)];\n }, []);\n }\n\n public ExtractSchema() {\n return SetToken.prim;\n }\n}\n","import { Token, TokenFactory, ComparableToken, TokenValidationError } from './token';\nimport { validateChain, ValidationResult } from '@taquito/utils';\n\nexport class ChainIDValidationError extends TokenValidationError {\n name: string = 'ChainIDValidationError';\n constructor(public value: any, public token: ChainIDToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class ChainIDToken extends ComparableToken {\n static prim = 'chain_id';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n private isValid(value: any): ChainIDValidationError | null {\n if (validateChain(value) !== ValidationResult.VALID) {\n return new ChainIDValidationError(value, this, 'ChainID is not valid');\n }\n\n return null;\n }\n\n public Execute(val: any): string {\n return val[Object.keys(val)[0]];\n }\n\n public ExtractSchema() {\n return ChainIDToken.prim;\n }\n\n public Encode(args: any[]): any {\n const val = args.pop();\n\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { string: val };\n }\n\n public EncodeObject(val: any): any {\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n\n return { string: val };\n }\n\n // tslint:disable-next-line: variable-name\n public ToKey({ string }: any) {\n return string;\n }\n\n public ToBigMapKey(val: string) {\n return {\n key: { string: val },\n type: { prim: ChainIDToken.prim },\n };\n }\n}\n","import { IntToken } from './comparable/int';\nimport { ContractToken } from './contract';\nimport { Token, TokenFactory, Semantic } from './token';\n\nexport class EncodeTicketError implements Error {\n name = 'TicketEncodeError';\n message = 'Tickets cannot be sent to the blockchain; they are created on-chain';\n}\n\nconst ticketerType = { \"prim\": \"contract\" };\nconst amountType = { \"prim\": \"int\" };\n\nexport class TicketToken extends Token {\n static prim = 'ticket';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n public Encode(_args: any[]): any {\n throw new EncodeTicketError()\n }\n\n public EncodeObject(_args: any): any {\n throw new EncodeTicketError() \n }\n\n public Execute(val: any, semantics?: Semantic) {\n if (semantics && semantics[TicketToken.prim]) {\n return semantics[TicketToken.prim](val, this.val);\n }\n const ticketer = this.createToken(ticketerType, this.idx);\n const value = this.createToken(this.val.args[0], this.idx);\n const amount = this.createToken(amountType, this.idx);\n return {\n ticketer: ticketer.Execute(val.args[0], semantics),\n value: value.Execute(val.args[1], semantics),\n amount: amount.Execute(val.args[2], semantics)\n }\n }\n\n public ExtractSchema() {\n const valueSchema = this.createToken(this.val.args[0], this.idx);\n return {\n ticketer: ContractToken.prim,\n value: valueSchema.ExtractSchema(),\n amount: IntToken.prim\n }\n }\n}\n","import { Token, TokenFactory, TokenValidationError } from './token';\n\nexport class NeverTokenError extends TokenValidationError {\n name: string = 'NeverTokenError';\n constructor(public value: any, public token: NeverToken, message: string) {\n super(value, token, message);\n }\n }\n\nexport class NeverToken extends Token {\n static prim = 'never';\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n public Encode(args: any[]): any {\n const val = args.pop();\n throw new NeverTokenError(val, this, 'Assigning a value to the type never is forbidden.');\n }\n public EncodeObject(val: any): any {\n throw new NeverTokenError(val, this, 'Assigning a value to the type never is forbidden.');\n }\n public Execute(val: any) {\n throw new NeverTokenError(val, this, 'There is no literal value for the type never.');\n }\n public ExtractSchema() {\n return NeverToken.prim;\n }\n}","import { Semantic, Token, TokenFactory, TokenValidationError } from './token';\n\nexport class SaplingStateValidationError extends TokenValidationError {\n name: string = 'SaplingStateValidationError';\n constructor(public value: any, public token: SaplingStateToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class SaplingStateToken extends Token {\n static prim = 'sapling_state';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n private isValid(val: any) {\n return typeof val === 'object' && Object.keys(val).length === 0;\n }\n\n Execute(val: { int: string }, semantic?: Semantic) {\n if (semantic && semantic[SaplingStateToken.prim]) {\n return semantic[SaplingStateToken.prim](val, this.val);\n }\n if ('int' in val) {\n return val.int;\n } else {\n // Unknown case\n throw new Error(\n `Sapling state is expecting an object with an int property. Got ${JSON.stringify(val)}`\n );\n }\n }\n\n Encode(args: any[]): any {\n const val = args.pop();\n if (this.isValid(val)) {\n return [];\n } else {\n throw new SaplingStateValidationError(\n val,\n this,\n `Invalid sapling_state. Received: ${val} while expecting: {}`\n );\n }\n }\n\n EncodeObject(val: any): any {\n if (this.isValid(val)) {\n return [];\n } else {\n throw new SaplingStateValidationError(\n val,\n this,\n `Invalid sapling_state. Received: ${val} while expecting: {}`\n );\n }\n }\n\n ExtractSchema() {\n return {\n [SaplingStateToken.prim]: {\n 'memo-size': Number(this.val.args[0]['int']),\n },\n };\n }\n}\n","import { Token, TokenFactory, TokenValidationError } from './token';\n\nexport class SaplingTransactionValidationError extends TokenValidationError {\n name: string = 'SaplingTransactionValidationError';\n constructor(public value: any, public token: SaplingTransactionToken, message: string) {\n super(value, token, message);\n }\n}\n\nexport class SaplingTransactionToken extends Token {\n static prim = 'sapling_transaction';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n Execute(_val: any) {\n throw new Error('There is no literal value for the sapling_transaction type.');\n }\n\n private validateBytes(val: any) {\n const bytes = /^(0x|0X)?([0-9a-fA-F]*$)/.exec(val);\n if (bytes && bytes[2].length % 2 === 0) {\n return bytes[2];\n } else {\n throw new SaplingTransactionValidationError(val, this, `Invalid bytes: ${val}`);\n }\n }\n\n private convertUint8ArrayToHexString(val: Uint8Array | string) {\n return val.constructor === Uint8Array ? Buffer.from(val).toString('hex') : val;\n }\n\n Encode(args: any[]): any {\n let val = args.pop();\n val = this.validateBytes(this.convertUint8ArrayToHexString(val));\n return { bytes: String(val).toString() };\n }\n\n EncodeObject(val: string | Uint8Array) {\n val = this.validateBytes(this.convertUint8ArrayToHexString(val));\n return { bytes: String(val).toString() };\n }\n\n ExtractSchema() {\n return {\n [SaplingTransactionToken.prim]: {\n 'memo-size': Number(this.val.args[0]['int']),\n },\n };\n }\n}\n","import { Token, TokenFactory, TokenValidationError } from './token';\n\nexport class Bls12381frValidationError extends TokenValidationError {\n name: string = 'Bls12381frValidationError';\n constructor(public value: any, public token: Bls12381frToken, message: string) {\n super(value, token, message);\n }\n}\nexport class Bls12381frToken extends Token {\n // An element of the BLS12-381 scalar field Fr\n // see https://tezos.gitlab.io/michelson-reference/#type-bls12_381_fr\n static prim = 'bls12_381_fr';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n private isValid(val: any): Bls12381frValidationError | null {\n if (/^[0-9a-fA-F]*$/.test(val) && val.length % 2 === 0) {\n return null;\n } else {\n return new Bls12381frValidationError(val, this, `Invalid bytes: ${val}`);\n }\n }\n\n private convertUint8ArrayToHexString(val: any) {\n return val.constructor === Uint8Array ? Buffer.from(val).toString('hex') : val;\n }\n\n Encode(args: any[]) {\n let val = args.pop();\n if (typeof val === 'number') {\n return { int: val.toString() };\n } else {\n val = this.convertUint8ArrayToHexString(val);\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n return { bytes: val };\n }\n }\n\n EncodeObject(val: string | Uint8Array | number) {\n if (typeof val === 'number') {\n return { int: val.toString() };\n } else {\n val = this.convertUint8ArrayToHexString(val);\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n return { bytes: val };\n }\n }\n\n Execute(val: any): string {\n return val.bytes;\n }\n\n public ExtractSchema() {\n return Bls12381frToken.prim;\n }\n}\n","import { Token, TokenFactory, TokenValidationError } from './token';\n\nexport class Bls12381g1ValidationError extends TokenValidationError {\n name: string = 'Bls12381g1ValidationError';\n constructor(public value: any, public token: Bls12381g1Token, message: string) {\n super(value, token, message);\n }\n}\nexport class Bls12381g1Token extends Token {\n // A point on the BLS12-381 curve G1\n // See https://tezos.gitlab.io/michelson-reference/#type-bls12_381_g1\n static prim = 'bls12_381_g1';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n private isValid(val: any): Bls12381g1ValidationError | null {\n if (/^[0-9a-fA-F]*$/.test(val) && val.length % 2 === 0) {\n return null;\n } else {\n return new Bls12381g1ValidationError(val, this, `Invalid bytes: ${val}`);\n }\n }\n\n private convertUint8ArrayToHexString(val: any) {\n return val.constructor === Uint8Array ? Buffer.from(val).toString('hex') : val;\n }\n\n Encode(args: any[]) {\n let val = args.pop();\n val = this.convertUint8ArrayToHexString(val);\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n return { bytes: val };\n }\n\n EncodeObject(val: string | Uint8Array) {\n val = this.convertUint8ArrayToHexString(val);\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n return { bytes: val };\n }\n\n Execute(val: any): string {\n return val.bytes;\n }\n\n public ExtractSchema() {\n return Bls12381g1Token.prim;\n }\n}\n","import { Token, TokenFactory, TokenValidationError } from './token';\n\nexport class Bls12381g2ValidationError extends TokenValidationError {\n name: string = 'Bls12381g2ValidationError';\n constructor(public value: any, public token: Bls12381g2Token, message: string) {\n super(value, token, message);\n }\n}\nexport class Bls12381g2Token extends Token {\n // A point on the BLS12-381 curve G2\n // See https://tezos.gitlab.io/michelson-reference/#type-bls12_381_g2\n static prim = 'bls12_381_g2';\n\n constructor(\n protected val: { prim: string; args: any[]; annots: any[] },\n protected idx: number,\n protected fac: TokenFactory\n ) {\n super(val, idx, fac);\n }\n\n private isValid(val: any): Bls12381g2ValidationError | null {\n if ( /^[0-9a-fA-F]*$/.test(val) && val.length % 2 === 0) {\n return null;\n } else {\n return new Bls12381g2ValidationError(val, this, `Invalid bytes: ${val}`);\n }\n }\n\n private convertUint8ArrayToHexString(val: any) {\n return val.constructor === Uint8Array ? Buffer.from(val).toString('hex') : val;\n }\n\n Encode(args: any[]) {\n let val = args.pop();\n val = this.convertUint8ArrayToHexString(val);\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n return { bytes: val };\n }\n\n EncodeObject(val: string | Uint8Array) {\n val = this.convertUint8ArrayToHexString(val);\n const err = this.isValid(val);\n if (err) {\n throw err;\n }\n return { bytes: val };\n }\n\n Execute(val: any): string {\n return val.bytes;\n }\n\n public ExtractSchema() {\n return Bls12381g2Token.prim;\n }\n}\n","import { PairToken } from './pair';\n\nimport { NatToken } from './comparable/nat';\n\nimport { StringToken } from './comparable/string';\n\nimport { BigMapToken } from './bigmap';\n\nimport { AddressToken } from './comparable/address';\n\nimport { MapToken } from './map';\n\nimport { BoolToken } from './comparable/bool';\n\nimport { OrToken } from './or';\n\nimport { ContractToken } from './contract';\n\nimport { ListToken } from './list';\nimport { MutezToken } from './comparable/mutez';\nimport { BytesToken } from './comparable/bytes';\nimport { OptionToken } from './option';\nimport { TimestampToken } from './comparable/timestamp';\nimport { IntToken } from './comparable/int';\nimport { UnitToken } from './unit';\nimport { KeyToken } from './key';\nimport { KeyHashToken } from './comparable/key_hash';\nimport { SignatureToken } from './signature';\nimport { LambdaToken } from './lambda';\nimport { OperationToken } from './operation';\nimport { SetToken } from './set';\nimport { ChainIDToken } from './chain-id';\nimport { TicketToken } from './ticket';\nimport { NeverToken } from './never';\nimport { SaplingStateToken } from './sapling-state';\nimport { SaplingTransactionToken } from './sapling-transaction';\nimport { Bls12381frToken } from './bls12-381-fr';\nimport { Bls12381g1Token } from './bls12-381-g1';\nimport { Bls12381g2Token } from './bls12-381-g2';\n\nexport const tokens = [\n PairToken,\n NatToken,\n StringToken,\n BigMapToken,\n AddressToken,\n MapToken,\n BoolToken,\n OrToken,\n ContractToken,\n ListToken,\n MutezToken,\n BytesToken,\n OptionToken,\n TimestampToken,\n IntToken,\n UnitToken,\n KeyToken,\n KeyHashToken,\n SignatureToken,\n LambdaToken,\n OperationToken,\n SetToken,\n ChainIDToken,\n TicketToken,\n NeverToken,\n SaplingStateToken,\n SaplingTransactionToken,\n Bls12381frToken,\n Bls12381g1Token,\n Bls12381g2Token\n];\n","import { tokens } from './tokens';\nimport { Token } from './token';\nimport { PairToken } from './pair';\n\nexport class InvalidTokenError implements Error {\n name: string = 'Invalid token error';\n constructor(public message: string, public data: any) { }\n}\n\nexport function createToken(val: any, idx: number): Token {\n if (Array.isArray(val)) {\n return new PairToken(val, idx, createToken);\n }\n\n const t = tokens.find(x => x.prim === val.prim);\n if (!t) {\n throw new InvalidTokenError('Malformed data expected a value with a valid prim property', val);\n }\n return new t(val, idx, createToken);\n}\n","import { MichelsonV1Expression, MichelsonV1ExpressionExtended, ScriptResponse } from '@taquito/rpc';\nimport { BigMapToken } from '../tokens/bigmap';\nimport { createToken } from '../tokens/createToken';\nimport { OrToken } from '../tokens/or';\nimport { PairToken } from '../tokens/pair';\nimport { BigMapKeyType, Semantic, Token, TokenValidationError } from '../tokens/token';\nimport { RpcTransaction } from './model';\nimport { Falsy } from './types';\n\nconst schemaTypeSymbol = Symbol.for('taquito-schema-type-symbol');\n\n// collapse comb pair\nfunction collapse(val: Token['val'] | any[], prim: string = PairToken.prim): Token['val'] {\n if (Array.isArray(val)) {\n return collapse({\n prim: prim,\n args: val,\n }, prim);\n }\n if (val.prim === prim && val.args?.length! > 2) {\n return {\n ...val,\n args: [val.args![0], {\n prim: prim,\n args: val.args?.slice(1),\n }],\n };\n }\n return val;\n}\n\nfunction deepEqual(a: Token['val'] | any[], b: Token['val'] | any[]): boolean {\n const ac = collapse(a);\n const bc = collapse(b);\n return ac.prim === bc.prim &&\n (ac.args === undefined && bc.args === undefined ||\n ac.args !== undefined && bc.args !== undefined &&\n ac.args.length === bc.args.length &&\n ac.args.every((v, i) => deepEqual(v, bc.args?.[i]))) &&\n (ac.annots === undefined && bc.annots === undefined ||\n ac.annots !== undefined && bc.annots !== undefined &&\n ac.annots.length === bc.annots.length &&\n ac.annots.every((v, i) => v === bc.annots?.[i]));\n}\n\n/**\n * @warn Our current smart contract abstraction feature is currently in preview. It's API is not final, and it may not cover every use case (yet). We will greatly appreciate any feedback on this feature.\n */\nexport class Schema {\n private root: Token;\n\n public [schemaTypeSymbol] = true;\n\n public static isSchema(obj: any): obj is Schema {\n return obj && obj[schemaTypeSymbol] === true;\n }\n\n // TODO: Should we deprecate this?\n private bigMap?: BigMapToken;\n\n static fromRPCResponse(val: { script: ScriptResponse }) {\n const storage: Falsy<MichelsonV1ExpressionExtended> =\n val &&\n val.script &&\n Array.isArray(val.script.code) &&\n (val.script.code.find((x: any) => x.prim === 'storage') as MichelsonV1ExpressionExtended);\n\n if (!storage || !Array.isArray(storage.args)) {\n throw new Error('Invalid rpc response passed as arguments');\n }\n\n return new Schema(storage.args[0]);\n }\n\n private isExpressionExtended(\n val: any\n ): val is Required<Pick<MichelsonV1ExpressionExtended, 'prim' | 'args'>> {\n return 'prim' in val && Array.isArray(val.args);\n }\n\n constructor(val: MichelsonV1Expression) {\n this.root = createToken(val, 0);\n\n if (this.root instanceof BigMapToken) {\n this.bigMap = this.root;\n } else if (this.isExpressionExtended(val) && val.prim === 'pair') {\n const exp = val.args[0];\n if (this.isExpressionExtended(exp) && exp.prim === 'big_map') {\n this.bigMap = new BigMapToken(exp, 0, createToken);\n }\n }\n }\n\n private removeTopLevelAnnotation(obj: any) {\n // PairToken and OrToken can have redundant top level annotation in their storage\n if (this.root instanceof PairToken || this.root instanceof OrToken) {\n if (this.root.hasAnnotations() && typeof obj === 'object' && Object.keys(obj).length === 1) {\n return obj[Object.keys(obj)[0]];\n }\n }\n\n return obj;\n }\n\n Execute(val: any, semantics?: Semantic) {\n const storage = this.root.Execute(val, semantics);\n\n return this.removeTopLevelAnnotation(storage);\n }\n\n Typecheck(val: any) {\n if (this.root instanceof BigMapToken && Number.isInteger(Number(val))) {\n return true;\n }\n try {\n this.root.EncodeObject(val);\n return true;\n } catch (ex) {\n return false;\n }\n }\n\n ExecuteOnBigMapDiff(diff: any[], semantics?: Semantic) {\n if (!this.bigMap) {\n throw new Error('No big map schema');\n }\n\n if (!Array.isArray(diff)) {\n throw new Error('Invalid big map diff. It must be an array');\n }\n\n const eltFormat = diff.map(({ key, value }) => ({ args: [key, value] }));\n\n return this.bigMap.Execute(eltFormat, semantics);\n }\n\n ExecuteOnBigMapValue(key: any, semantics?: Semantic) {\n if (!this.bigMap) {\n throw new Error('No big map schema');\n }\n\n return this.bigMap.ValueSchema.Execute(key, semantics);\n }\n\n EncodeBigMapKey(key: BigMapKeyType) {\n if (!this.bigMap) {\n throw new Error('No big map schema');\n }\n\n try {\n return this.bigMap.KeySchema.ToBigMapKey(key);\n } catch (ex) {\n throw new Error('Unable to encode big map key: ' + ex);\n }\n }\n\n Encode(_value?: any) {\n try {\n return this.root.EncodeObject(_value);\n } catch (ex) {\n if (ex instanceof TokenValidationError) {\n throw ex;\n }\n\n throw new Error(`Unable to encode storage object. ${ex}`);\n }\n }\n\n ExtractSchema() {\n return this.removeTopLevelAnnotation(this.root.ExtractSchema());\n }\n\n /**\n * @deprecated\n */\n ComputeState(tx: RpcTransaction[], state: any) {\n if (!this.bigMap) {\n throw new Error('No big map schema');\n }\n\n const bigMap = tx.reduce((prev, current) => {\n return {\n ...prev,\n ...this.ExecuteOnBigMapDiff(current.contents[0].metadata.operation_result.big_map_diff),\n };\n }, {});\n\n return {\n ...this.Execute(state),\n [this.bigMap.annot()]: bigMap,\n };\n }\n\n /**\n * @description Look up in top-level pairs of the storage to find a value matching the specified type\n *\n * @returns The first value found that match the type or `undefined` if no value is found\n * \n * @param storage storage to parse to find the value\n * @param valueType type of value to look for\n *\n */\n FindFirstInTopLevelPair<T extends MichelsonV1Expression>(storage: any, valueType: any) {\n return this.findValue(this.root['val'], storage, valueType) as T | undefined;\n }\n\n private findValue(schema: Token['val'] | any[], storage: any, valueToFind: any): any {\n if (deepEqual(valueToFind, schema)) {\n return storage;\n }\n if (Array.isArray(schema) || schema['prim'] === 'pair') {\n const sch = collapse(schema);\n const str = collapse(storage, 'Pair');\n if (sch.args === undefined || str.args === undefined) {\n throw new Error('Tokens have no arguments'); // unlikely\n }\n return this.findValue(sch.args[0], str.args[0], valueToFind) ||\n this.findValue(sch.args[1], str.args[1], valueToFind);\n }\n }\n}\n","import { createToken } from '../tokens/createToken';\nimport { Token, Semantic, TokenValidationError } from '../tokens/token';\nimport { OrToken } from '../tokens/or';\nimport { OptionToken } from '../tokens/option';\nimport { ScriptResponse, MichelsonV1ExpressionExtended, MichelsonV1Expression } from '@taquito/rpc';\nimport { Falsy } from './types';\n\n/**\n * @warn Our current smart contract abstraction feature is currently in preview. It's API is not final, and it may not cover every use case (yet). We will greatly appreciate any feedback on this feature.\n */\nexport class ParameterSchema {\n private root: Token;\n\n static fromRPCResponse(val: { script: ScriptResponse }) {\n const parameter: Falsy<MichelsonV1ExpressionExtended> =\n val &&\n val.script &&\n Array.isArray(val.script.code) &&\n (val.script.code.find((x: any) => x.prim === 'parameter') as MichelsonV1ExpressionExtended);\n if (!parameter || !Array.isArray(parameter.args)) {\n throw new Error('Invalid rpc response passed as arguments');\n }\n\n return new ParameterSchema(parameter.args[0]);\n }\n\n get isMultipleEntryPoint() {\n return (\n this.root instanceof OrToken ||\n (this.root instanceof OptionToken && this.root.subToken() instanceof OrToken)\n );\n }\n\n get hasAnnotation() {\n if (this.isMultipleEntryPoint) {\n return Object.keys(this.ExtractSchema())[0] !== '0';\n } else {\n return true;\n }\n }\n\n constructor(val: MichelsonV1Expression) {\n this.root = createToken(val, 0);\n }\n\n Execute(val: any, semantics?: Semantic) {\n return this.root.Execute(val, semantics);\n }\n\n Encode(...args: any[]) {\n try {\n return this.root.Encode(args.reverse());\n } catch (ex) {\n if (ex instanceof TokenValidationError) {\n throw ex;\n }\n\n throw new Error(`Unable to encode storage object. ${ex}`);\n }\n }\n\n ExtractSchema() {\n return this.root.ExtractSchema();\n }\n\n ExtractSignatures() {\n return this.root.ExtractSignature();\n }\n}\n","/**\n * @packageDocumentation\n * @module @taquito/michelson-encoder\n */\n\nexport * from './schema/storage';\nexport * from './schema/parameter';\nexport { Semantic, BigMapKeyType } from './tokens/token';\nexport * from './errors';\n\nexport const UnitValue = Symbol();\nexport const SaplingStateValue = {};\nexport * from './michelson-map';\nexport { VERSION } from './version';\n",";(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 <M8ch88l@gmail.com>\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","var __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};\nimport * as sodium from 'libsodium-wrappers';\nimport * as bs58check from 'bs58check';\n/**\n * @internalapi\n *\n * Generate a deterministic sender identifier based on a public key\n *\n * @param publicKey\n */\nexport const getSenderId = (publicKey) => __awaiter(void 0, void 0, void 0, function* () {\n yield sodium.ready;\n const buffer = Buffer.from(sodium.crypto_generichash(5, Buffer.from(publicKey, 'hex')));\n return bs58check.encode(buffer);\n});\n//# sourceMappingURL=get-sender-id.js.map","/* eslint-disable no-continue */\r\n/* eslint-disable no-unused-vars */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-prototype-builtins */\r\nvar errorClasses = {};\r\nvar deserializers = {};\r\nvar addCustomErrorDeserializer = function (name, deserializer) {\r\n deserializers[name] = deserializer;\r\n};\r\nvar createCustomErrorClass = function (name) {\r\n var C = function CustomError(message, fields) {\r\n Object.assign(this, fields);\r\n this.name = name;\r\n this.message = message || name;\r\n this.stack = new Error().stack;\r\n };\r\n C.prototype = new Error();\r\n errorClasses[name] = C;\r\n return C;\r\n};\r\n// inspired from https://github.com/programble/errio/blob/master/index.js\r\nvar deserializeError = function (object) {\r\n if (typeof object === \"object\" && object) {\r\n try {\r\n // $FlowFixMe FIXME HACK\r\n var msg = JSON.parse(object.message);\r\n if (msg.message && msg.name) {\r\n object = msg;\r\n }\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n var error = void 0;\r\n if (typeof object.name === \"string\") {\r\n var name_1 = object.name;\r\n var des = deserializers[name_1];\r\n if (des) {\r\n error = des(object);\r\n }\r\n else {\r\n var constructor = name_1 === \"Error\" ? Error : errorClasses[name_1];\r\n if (!constructor) {\r\n console.warn(\"deserializing an unknown class '\" + name_1 + \"'\");\r\n constructor = createCustomErrorClass(name_1);\r\n }\r\n error = Object.create(constructor.prototype);\r\n try {\r\n for (var prop in object) {\r\n if (object.hasOwnProperty(prop)) {\r\n error[prop] = object[prop];\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // sometimes setting a property can fail (e.g. .name)\r\n }\r\n }\r\n }\r\n else {\r\n error = new Error(object.message);\r\n }\r\n if (!error.stack && Error.captureStackTrace) {\r\n Error.captureStackTrace(error, deserializeError);\r\n }\r\n return error;\r\n }\r\n return new Error(String(object));\r\n};\r\n// inspired from https://github.com/sindresorhus/serialize-error/blob/master/index.js\r\nvar serializeError = function (value) {\r\n if (!value)\r\n return value;\r\n if (typeof value === \"object\") {\r\n return destroyCircular(value, []);\r\n }\r\n if (typeof value === \"function\") {\r\n return \"[Function: \" + (value.name || \"anonymous\") + \"]\";\r\n }\r\n return value;\r\n};\r\n// https://www.npmjs.com/package/destroy-circular\r\nfunction destroyCircular(from, seen) {\r\n var to = {};\r\n seen.push(from);\r\n for (var _i = 0, _a = Object.keys(from); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n var value = from[key];\r\n if (typeof value === \"function\") {\r\n continue;\r\n }\r\n if (!value || typeof value !== \"object\") {\r\n to[key] = value;\r\n continue;\r\n }\r\n if (seen.indexOf(from[key]) === -1) {\r\n to[key] = destroyCircular(from[key], seen.slice(0));\r\n continue;\r\n }\r\n to[key] = \"[Circular]\";\r\n }\r\n if (typeof from.name === \"string\") {\r\n to.name = from.name;\r\n }\r\n if (typeof from.message === \"string\") {\r\n to.message = from.message;\r\n }\r\n if (typeof from.stack === \"string\") {\r\n to.stack = from.stack;\r\n }\r\n return to;\r\n}\n\nvar AccountNameRequiredError = createCustomErrorClass(\"AccountNameRequired\");\r\nvar AccountNotSupported = createCustomErrorClass(\"AccountNotSupported\");\r\nvar AmountRequired = createCustomErrorClass(\"AmountRequired\");\r\nvar BluetoothRequired = createCustomErrorClass(\"BluetoothRequired\");\r\nvar BtcUnmatchedApp = createCustomErrorClass(\"BtcUnmatchedApp\");\r\nvar CantOpenDevice = createCustomErrorClass(\"CantOpenDevice\");\r\nvar CashAddrNotSupported = createCustomErrorClass(\"CashAddrNotSupported\");\r\nvar CurrencyNotSupported = createCustomErrorClass(\"CurrencyNotSupported\");\r\nvar DeviceAppVerifyNotSupported = createCustomErrorClass(\"DeviceAppVerifyNotSupported\");\r\nvar DeviceGenuineSocketEarlyClose = createCustomErrorClass(\"DeviceGenuineSocketEarlyClose\");\r\nvar DeviceNotGenuineError = createCustomErrorClass(\"DeviceNotGenuine\");\r\nvar DeviceOnDashboardExpected = createCustomErrorClass(\"DeviceOnDashboardExpected\");\r\nvar DeviceOnDashboardUnexpected = createCustomErrorClass(\"DeviceOnDashboardUnexpected\");\r\nvar DeviceInOSUExpected = createCustomErrorClass(\"DeviceInOSUExpected\");\r\nvar DeviceHalted = createCustomErrorClass(\"DeviceHalted\");\r\nvar DeviceNameInvalid = createCustomErrorClass(\"DeviceNameInvalid\");\r\nvar DeviceSocketFail = createCustomErrorClass(\"DeviceSocketFail\");\r\nvar DeviceSocketNoBulkStatus = createCustomErrorClass(\"DeviceSocketNoBulkStatus\");\r\nvar DisconnectedDevice = createCustomErrorClass(\"DisconnectedDevice\");\r\nvar DisconnectedDeviceDuringOperation = createCustomErrorClass(\"DisconnectedDeviceDuringOperation\");\r\nvar EnpointConfigError = createCustomErrorClass(\"EnpointConfig\");\r\nvar EthAppPleaseEnableContractData = createCustomErrorClass(\"EthAppPleaseEnableContractData\");\r\nvar FeeEstimationFailed = createCustomErrorClass(\"FeeEstimationFailed\");\r\nvar FirmwareNotRecognized = createCustomErrorClass(\"FirmwareNotRecognized\");\r\nvar HardResetFail = createCustomErrorClass(\"HardResetFail\");\r\nvar InvalidXRPTag = createCustomErrorClass(\"InvalidXRPTag\");\r\nvar InvalidAddress = createCustomErrorClass(\"InvalidAddress\");\r\nvar InvalidAddressBecauseDestinationIsAlsoSource = createCustomErrorClass(\"InvalidAddressBecauseDestinationIsAlsoSource\");\r\nvar LatestMCUInstalledError = createCustomErrorClass(\"LatestMCUInstalledError\");\r\nvar UnknownMCU = createCustomErrorClass(\"UnknownMCU\");\r\nvar LedgerAPIError = createCustomErrorClass(\"LedgerAPIError\");\r\nvar LedgerAPIErrorWithMessage = createCustomErrorClass(\"LedgerAPIErrorWithMessage\");\r\nvar LedgerAPINotAvailable = createCustomErrorClass(\"LedgerAPINotAvailable\");\r\nvar ManagerAppAlreadyInstalledError = createCustomErrorClass(\"ManagerAppAlreadyInstalled\");\r\nvar ManagerAppRelyOnBTCError = createCustomErrorClass(\"ManagerAppRelyOnBTC\");\r\nvar ManagerAppDepInstallRequired = createCustomErrorClass(\"ManagerAppDepInstallRequired\");\r\nvar ManagerAppDepUninstallRequired = createCustomErrorClass(\"ManagerAppDepUninstallRequired\");\r\nvar ManagerDeviceLockedError = createCustomErrorClass(\"ManagerDeviceLocked\");\r\nvar ManagerFirmwareNotEnoughSpaceError = createCustomErrorClass(\"ManagerFirmwareNotEnoughSpace\");\r\nvar ManagerNotEnoughSpaceError = createCustomErrorClass(\"ManagerNotEnoughSpace\");\r\nvar ManagerUninstallBTCDep = createCustomErrorClass(\"ManagerUninstallBTCDep\");\r\nvar NetworkDown = createCustomErrorClass(\"NetworkDown\");\r\nvar NoAddressesFound = createCustomErrorClass(\"NoAddressesFound\");\r\nvar NotEnoughBalance = createCustomErrorClass(\"NotEnoughBalance\");\r\nvar NotEnoughBalanceToDelegate = createCustomErrorClass(\"NotEnoughBalanceToDelegate\");\r\nvar NotEnoughBalanceInParentAccount = createCustomErrorClass(\"NotEnoughBalanceInParentAccount\");\r\nvar NotEnoughSpendableBalance = createCustomErrorClass(\"NotEnoughSpendableBalance\");\r\nvar NotEnoughBalanceBecauseDestinationNotCreated = createCustomErrorClass(\"NotEnoughBalanceBecauseDestinationNotCreated\");\r\nvar NoAccessToCamera = createCustomErrorClass(\"NoAccessToCamera\");\r\nvar NotEnoughGas = createCustomErrorClass(\"NotEnoughGas\");\r\nvar NotSupportedLegacyAddress = createCustomErrorClass(\"NotSupportedLegacyAddress\");\r\nvar GasLessThanEstimate = createCustomErrorClass(\"GasLessThanEstimate\");\r\nvar PasswordsDontMatchError = createCustomErrorClass(\"PasswordsDontMatch\");\r\nvar PasswordIncorrectError = createCustomErrorClass(\"PasswordIncorrect\");\r\nvar RecommendSubAccountsToEmpty = createCustomErrorClass(\"RecommendSubAccountsToEmpty\");\r\nvar RecommendUndelegation = createCustomErrorClass(\"RecommendUndelegation\");\r\nvar TimeoutTagged = createCustomErrorClass(\"TimeoutTagged\");\r\nvar UnexpectedBootloader = createCustomErrorClass(\"UnexpectedBootloader\");\r\nvar MCUNotGenuineToDashboard = createCustomErrorClass(\"MCUNotGenuineToDashboard\");\r\nvar RecipientRequired = createCustomErrorClass(\"RecipientRequired\");\r\nvar UnavailableTezosOriginatedAccountReceive = createCustomErrorClass(\"UnavailableTezosOriginatedAccountReceive\");\r\nvar UnavailableTezosOriginatedAccountSend = createCustomErrorClass(\"UnavailableTezosOriginatedAccountSend\");\r\nvar UpdateFetchFileFail = createCustomErrorClass(\"UpdateFetchFileFail\");\r\nvar UpdateIncorrectHash = createCustomErrorClass(\"UpdateIncorrectHash\");\r\nvar UpdateIncorrectSig = createCustomErrorClass(\"UpdateIncorrectSig\");\r\nvar UpdateYourApp = createCustomErrorClass(\"UpdateYourApp\");\r\nvar UserRefusedDeviceNameChange = createCustomErrorClass(\"UserRefusedDeviceNameChange\");\r\nvar UserRefusedAddress = createCustomErrorClass(\"UserRefusedAddress\");\r\nvar UserRefusedFirmwareUpdate = createCustomErrorClass(\"UserRefusedFirmwareUpdate\");\r\nvar UserRefusedAllowManager = createCustomErrorClass(\"UserRefusedAllowManager\");\r\nvar UserRefusedOnDevice = createCustomErrorClass(\"UserRefusedOnDevice\"); // TODO rename because it's just for transaction refusal\r\nvar TransportOpenUserCancelled = createCustomErrorClass(\"TransportOpenUserCancelled\");\r\nvar TransportInterfaceNotAvailable = createCustomErrorClass(\"TransportInterfaceNotAvailable\");\r\nvar TransportRaceCondition = createCustomErrorClass(\"TransportRaceCondition\");\r\nvar TransportWebUSBGestureRequired = createCustomErrorClass(\"TransportWebUSBGestureRequired\");\r\nvar DeviceShouldStayInApp = createCustomErrorClass(\"DeviceShouldStayInApp\");\r\nvar WebsocketConnectionError = createCustomErrorClass(\"WebsocketConnectionError\");\r\nvar WebsocketConnectionFailed = createCustomErrorClass(\"WebsocketConnectionFailed\");\r\nvar WrongDeviceForAccount = createCustomErrorClass(\"WrongDeviceForAccount\");\r\nvar WrongAppForCurrency = createCustomErrorClass(\"WrongAppForCurrency\");\r\nvar ETHAddressNonEIP = createCustomErrorClass(\"ETHAddressNonEIP\");\r\nvar CantScanQRCode = createCustomErrorClass(\"CantScanQRCode\");\r\nvar FeeNotLoaded = createCustomErrorClass(\"FeeNotLoaded\");\r\nvar FeeRequired = createCustomErrorClass(\"FeeRequired\");\r\nvar FeeTooHigh = createCustomErrorClass(\"FeeTooHigh\");\r\nvar SyncError = createCustomErrorClass(\"SyncError\");\r\nvar PairingFailed = createCustomErrorClass(\"PairingFailed\");\r\nvar GenuineCheckFailed = createCustomErrorClass(\"GenuineCheckFailed\");\r\nvar LedgerAPI4xx = createCustomErrorClass(\"LedgerAPI4xx\");\r\nvar LedgerAPI5xx = createCustomErrorClass(\"LedgerAPI5xx\");\r\nvar FirmwareOrAppUpdateRequired = createCustomErrorClass(\"FirmwareOrAppUpdateRequired\");\r\n// db stuff, no need to translate\r\nvar NoDBPathGiven = createCustomErrorClass(\"NoDBPathGiven\");\r\nvar DBWrongPassword = createCustomErrorClass(\"DBWrongPassword\");\r\nvar DBNotReset = createCustomErrorClass(\"DBNotReset\");\r\n/**\r\n * TransportError is used for any generic transport errors.\r\n * e.g. Error thrown when data received by exchanges are incorrect or if exchanged failed to communicate with the device for various reason.\r\n */\r\nfunction TransportError(message, id) {\r\n this.name = \"TransportError\";\r\n this.message = message;\r\n this.stack = new Error().stack;\r\n this.id = id;\r\n}\r\nTransportError.prototype = new Error();\r\naddCustomErrorDeserializer(\"TransportError\", function (e) { return new TransportError(e.message, e.id); });\r\nvar StatusCodes = {\r\n PIN_REMAINING_ATTEMPTS: 0x63c0,\r\n INCORRECT_LENGTH: 0x6700,\r\n MISSING_CRITICAL_PARAMETER: 0x6800,\r\n COMMAND_INCOMPATIBLE_FILE_STRUCTURE: 0x6981,\r\n SECURITY_STATUS_NOT_SATISFIED: 0x6982,\r\n CONDITIONS_OF_USE_NOT_SATISFIED: 0x6985,\r\n INCORRECT_DATA: 0x6a80,\r\n NOT_ENOUGH_MEMORY_SPACE: 0x6a84,\r\n REFERENCED_DATA_NOT_FOUND: 0x6a88,\r\n FILE_ALREADY_EXISTS: 0x6a89,\r\n INCORRECT_P1_P2: 0x6b00,\r\n INS_NOT_SUPPORTED: 0x6d00,\r\n CLA_NOT_SUPPORTED: 0x6e00,\r\n TECHNICAL_PROBLEM: 0x6f00,\r\n OK: 0x9000,\r\n MEMORY_PROBLEM: 0x9240,\r\n NO_EF_SELECTED: 0x9400,\r\n INVALID_OFFSET: 0x9402,\r\n FILE_NOT_FOUND: 0x9404,\r\n INCONSISTENT_FILE: 0x9408,\r\n ALGORITHM_NOT_SUPPORTED: 0x9484,\r\n INVALID_KCV: 0x9485,\r\n CODE_NOT_INITIALIZED: 0x9802,\r\n ACCESS_CONDITION_NOT_FULFILLED: 0x9804,\r\n CONTRADICTION_SECRET_CODE_STATUS: 0x9808,\r\n CONTRADICTION_INVALIDATION: 0x9810,\r\n CODE_BLOCKED: 0x9840,\r\n MAX_VALUE_REACHED: 0x9850,\r\n GP_AUTH_FAILED: 0x6300,\r\n LICENSING: 0x6f42,\r\n HALTED: 0x6faa,\r\n};\r\nfunction getAltStatusMessage(code) {\r\n switch (code) {\r\n // improve text of most common errors\r\n case 0x6700:\r\n return \"Incorrect length\";\r\n case 0x6800:\r\n return \"Missing critical parameter\";\r\n case 0x6982:\r\n return \"Security not satisfied (dongle locked or have invalid access rights)\";\r\n case 0x6985:\r\n return \"Condition of use not satisfied (denied by the user?)\";\r\n case 0x6a80:\r\n return \"Invalid data received\";\r\n case 0x6b00:\r\n return \"Invalid parameter received\";\r\n }\r\n if (0x6f00 <= code && code <= 0x6fff) {\r\n return \"Internal error, please report\";\r\n }\r\n}\r\n/**\r\n * Error thrown when a device returned a non success status.\r\n * the error.statusCode is one of the `StatusCodes` exported by this library.\r\n */\r\nfunction TransportStatusError(statusCode) {\r\n this.name = \"TransportStatusError\";\r\n var statusText = Object.keys(StatusCodes).find(function (k) { return StatusCodes[k] === statusCode; }) ||\r\n \"UNKNOWN_ERROR\";\r\n var smsg = getAltStatusMessage(statusCode) || statusText;\r\n var statusCodeStr = statusCode.toString(16);\r\n this.message = \"Ledger device: \" + smsg + \" (0x\" + statusCodeStr + \")\";\r\n this.stack = new Error().stack;\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n}\r\nTransportStatusError.prototype = new Error();\r\naddCustomErrorDeserializer(\"TransportStatusError\", function (e) { return new TransportStatusError(e.statusCode); });\n\nexport { AccountNameRequiredError, AccountNotSupported, AmountRequired, BluetoothRequired, BtcUnmatchedApp, CantOpenDevice, CantScanQRCode, CashAddrNotSupported, CurrencyNotSupported, DBNotReset, DBWrongPassword, DeviceAppVerifyNotSupported, DeviceGenuineSocketEarlyClose, DeviceHalted, DeviceInOSUExpected, DeviceNameInvalid, DeviceNotGenuineError, DeviceOnDashboardExpected, DeviceOnDashboardUnexpected, DeviceShouldStayInApp, DeviceSocketFail, DeviceSocketNoBulkStatus, DisconnectedDevice, DisconnectedDeviceDuringOperation, ETHAddressNonEIP, EnpointConfigError, EthAppPleaseEnableContractData, FeeEstimationFailed, FeeNotLoaded, FeeRequired, FeeTooHigh, FirmwareNotRecognized, FirmwareOrAppUpdateRequired, GasLessThanEstimate, GenuineCheckFailed, HardResetFail, InvalidAddress, InvalidAddressBecauseDestinationIsAlsoSource, InvalidXRPTag, LatestMCUInstalledError, LedgerAPI4xx, LedgerAPI5xx, LedgerAPIError, LedgerAPIErrorWithMessage, LedgerAPINotAvailable, MCUNotGenuineToDashboard, ManagerAppAlreadyInstalledError, ManagerAppDepInstallRequired, ManagerAppDepUninstallRequired, ManagerAppRelyOnBTCError, ManagerDeviceLockedError, ManagerFirmwareNotEnoughSpaceError, ManagerNotEnoughSpaceError, ManagerUninstallBTCDep, NetworkDown, NoAccessToCamera, NoAddressesFound, NoDBPathGiven, NotEnoughBalance, NotEnoughBalanceBecauseDestinationNotCreated, NotEnoughBalanceInParentAccount, NotEnoughBalanceToDelegate, NotEnoughGas, NotEnoughSpendableBalance, NotSupportedLegacyAddress, PairingFailed, PasswordIncorrectError, PasswordsDontMatchError, RecipientRequired, RecommendSubAccountsToEmpty, RecommendUndelegation, StatusCodes, SyncError, TimeoutTagged, TransportError, TransportInterfaceNotAvailable, TransportOpenUserCancelled, TransportRaceCondition, TransportStatusError, TransportWebUSBGestureRequired, UnavailableTezosOriginatedAccountReceive, UnavailableTezosOriginatedAccountSend, UnexpectedBootloader, UnknownMCU, UpdateFetchFileFail, UpdateIncorrectHash, UpdateIncorrectSig, UpdateYourApp, UserRefusedAddress, UserRefusedAllowManager, UserRefusedDeviceNameChange, UserRefusedFirmwareUpdate, UserRefusedOnDevice, WebsocketConnectionError, WebsocketConnectionFailed, WrongAppForCurrency, WrongDeviceForAccount, addCustomErrorDeserializer, createCustomErrorClass, deserializeError, getAltStatusMessage, serializeError };\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","export var MatrixClientEventType;\n(function (MatrixClientEventType) {\n MatrixClientEventType[\"INVITE\"] = \"invite\";\n MatrixClientEventType[\"MESSAGE\"] = \"message\";\n})(MatrixClientEventType || (MatrixClientEventType = {}));\n//# sourceMappingURL=MatrixClientEvent.js.map","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;\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\nvar createHash = require('create-hash')\nvar bs58checkBase = require('./base')\n\n// SHA256(SHA256(buffer))\nfunction sha256x2 (buffer) {\n var tmp = createHash('sha256').update(buffer).digest()\n return createHash('sha256').update(tmp).digest()\n}\n\nmodule.exports = bs58checkBase(sha256x2)\n",";(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 <M8ch88l@gmail.com>\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","// 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","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}",";(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 <M8ch88l@gmail.com>\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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","'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","(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 Buffer = require('buffer').Buffer;\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 }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\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 parseHex (str, start, end) {\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 <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\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 var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\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\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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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","var __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};\nimport * as sodium from 'libsodium-wrappers';\nimport * as bs58check from 'bs58check';\n/**\n * @internalapi\n *\n * Generate a deterministic account identifier based on an address and a network\n *\n * @param address\n * @param network\n */\nexport const getAccountIdentifier = (address, network) => __awaiter(void 0, void 0, void 0, function* () {\n const data = [address, network.type];\n if (network.name) {\n data.push(`name:${network.name}`);\n }\n if (network.rpcUrl) {\n data.push(`rpc:${network.rpcUrl}`);\n }\n yield sodium.ready;\n const buffer = Buffer.from(sodium.crypto_generichash(10, data.join('-')));\n return bs58check.encode(buffer);\n});\n//# sourceMappingURL=get-account-identifier.js.map","/**\n * Hypertext Transfer Protocol (HTTP) response status codes.\n * @see {@link https://en.wikipedia.org/wiki/List_of_HTTP_status_codes}\n */\nexport enum STATUS_CODE {\n /**\n * The server has received the request headers and the client should proceed to send the request body\n * (in the case of a request for which a body needs to be sent; for example, a POST request).\n * Sending a large request body to a server after a request has been rejected for inappropriate headers would be inefficient.\n * To have a server check the request's headers, a client must send Expect: 100-continue as a header in its initial request\n * and receive a 100 Continue status code in response before sending the body. The response 417 Expectation Failed indicates the request should not be continued.\n */\n CONTINUE = 100,\n\n /**\n * The requester has asked the server to switch protocols and the server has agreed to do so.\n */\n SWITCHING_PROTOCOLS = 101,\n\n /**\n * A WebDAV request may contain many sub-requests involving file operations, requiring a long time to complete the request.\n * This code indicates that the server has received and is processing the request, but no response is available yet.\n * This prevents the client from timing out and assuming the request was lost.\n */\n PROCESSING = 102,\n\n /**\n * Standard response for successful HTTP requests.\n * The actual response will depend on the request method used.\n * In a GET request, the response will contain an entity corresponding to the requested resource.\n * In a POST request, the response will contain an entity describing or containing the result of the action.\n */\n OK = 200,\n\n /**\n * The request has been fulfilled, resulting in the creation of a new resource.\n */\n CREATED = 201,\n\n /**\n * The request has been accepted for processing, but the processing has not been completed.\n * The request might or might not be eventually acted upon, and may be disallowed when processing occurs.\n */\n ACCEPTED = 202,\n\n /**\n * SINCE HTTP/1.1\n * The server is a transforming proxy that received a 200 OK from its origin,\n * but is returning a modified version of the origin's response.\n */\n NON_AUTHORITATIVE_INFORMATION = 203,\n\n /**\n * The server successfully processed the request and is not returning any content.\n */\n NO_CONTENT = 204,\n\n /**\n * The server successfully processed the request, but is not returning any content.\n * Unlike a 204 response, this response requires that the requester reset the document view.\n */\n RESET_CONTENT = 205,\n\n /**\n * The server is delivering only part of the resource (byte serving) due to a range header sent by the client.\n * The range header is used by HTTP clients to enable resuming of interrupted downloads,\n * or split a download into multiple simultaneous streams.\n */\n PARTIAL_CONTENT = 206,\n\n /**\n * The message body that follows is an XML message and can contain a number of separate response codes,\n * depending on how many sub-requests were made.\n */\n MULTI_STATUS = 207,\n\n /**\n * The members of a DAV binding have already been enumerated in a preceding part of the (multistatus) response,\n * and are not being included again.\n */\n ALREADY_REPORTED = 208,\n\n /**\n * The server has fulfilled a request for the resource,\n * and the response is a representation of the result of one or more instance-manipulations applied to the current instance.\n */\n IM_USED = 226,\n\n /**\n * Indicates multiple options for the resource from which the client may choose (via agent-driven content negotiation).\n * For example, this code could be used to present multiple video format options,\n * to list files with different filename extensions, or to suggest word-sense disambiguation.\n */\n MULTIPLE_CHOICES = 300,\n\n /**\n * This and all future requests should be directed to the given URI.\n */\n MOVED_PERMANENTLY = 301,\n\n /**\n * This is an example of industry practice contradicting the standard.\n * The HTTP/1.0 specification (RFC 1945) required the client to perform a temporary redirect\n * (the original describing phrase was \"Moved Temporarily\"), but popular browsers implemented 302\n * with the functionality of a 303 See Other. Therefore, HTTP/1.1 added status codes 303 and 307\n * to distinguish between the two behaviours. However, some Web applications and frameworks\n * use the 302 status code as if it were the 303.\n */\n FOUND = 302,\n\n /**\n * SINCE HTTP/1.1\n * The response to the request can be found under another URI using a GET method.\n * When received in response to a POST (or PUT/DELETE), the client should presume that\n * the server has received the data and should issue a redirect with a separate GET message.\n */\n SEE_OTHER = 303,\n\n /**\n * Indicates that the resource has not been modified since the version specified by the request headers If-Modified-Since or If-None-Match.\n * In such case, there is no need to retransmit the resource since the client still has a previously-downloaded copy.\n */\n NOT_MODIFIED = 304,\n\n /**\n * SINCE HTTP/1.1\n * The requested resource is available only through a proxy, the address for which is provided in the response.\n * Many HTTP clients (such as Mozilla and Internet Explorer) do not correctly handle responses with this status code, primarily for security reasons.\n */\n USE_PROXY = 305,\n\n /**\n * No longer used. Originally meant \"Subsequent requests should use the specified proxy.\"\n */\n SWITCH_PROXY = 306,\n\n /**\n * SINCE HTTP/1.1\n * In this case, the request should be repeated with another URI; however, future requests should still use the original URI.\n * In contrast to how 302 was historically implemented, the request method is not allowed to be changed when reissuing the original request.\n * For example, a POST request should be repeated using another POST request.\n */\n TEMPORARY_REDIRECT = 307,\n\n /**\n * The request and all future requests should be repeated using another URI.\n * 307 and 308 parallel the behaviors of 302 and 301, but do not allow the HTTP method to change.\n * So, for example, submitting a form to a permanently redirected resource may continue smoothly.\n */\n PERMANENT_REDIRECT = 308,\n\n /**\n * The server cannot or will not process the request due to an apparent client error\n * (e.g., malformed request syntax, too large size, invalid request message framing, or deceptive request routing).\n */\n BAD_REQUEST = 400,\n\n /**\n * Similar to 403 Forbidden, but specifically for use when authentication is required and has failed or has not yet\n * been provided. The response must include a WWW-Authenticate header field containing a challenge applicable to the\n * requested resource. See Basic access authentication and Digest access authentication. 401 semantically means\n * \"unauthenticated\",i.e. the user does not have the necessary credentials.\n */\n UNAUTHORIZED = 401,\n\n /**\n * Reserved for future use. The original intention was that this code might be used as part of some form of digital\n * cash or micro payment scheme, but that has not happened, and this code is not usually used.\n * Google Developers API uses this status if a particular developer has exceeded the daily limit on requests.\n */\n PAYMENT_REQUIRED = 402,\n\n /**\n * The request was valid, but the server is refusing action.\n * The user might not have the necessary permissions for a resource.\n */\n FORBIDDEN = 403,\n\n /**\n * The requested resource could not be found but may be available in the future.\n * Subsequent requests by the client are permissible.\n */\n NOT_FOUND = 404,\n\n /**\n * A request method is not supported for the requested resource;\n * for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.\n */\n METHOD_NOT_ALLOWED = 405,\n\n /**\n * The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.\n */\n NOT_ACCEPTABLE = 406,\n\n /**\n * The client must first authenticate itself with the proxy.\n */\n PROXY_AUTHENTICATION_REQUIRED = 407,\n\n /**\n * The server timed out waiting for the request.\n * According to HTTP specifications:\n * \"The client did not produce a request within the time that the server was prepared to wait. The client MAY repeat the request without modifications at any later time.\"\n */\n REQUEST_TIMEOUT = 408,\n\n /**\n * Indicates that the request could not be processed because of conflict in the request,\n * such as an edit conflict between multiple simultaneous updates.\n */\n CONFLICT = 409,\n\n /**\n * Indicates that the resource requested is no longer available and will not be available again.\n * This should be used when a resource has been intentionally removed and the resource should be purged.\n * Upon receiving a 410 status code, the client should not request the resource in the future.\n * Clients such as search engines should remove the resource from their indices.\n * Most use cases do not require clients and search engines to purge the resource, and a \"404 Not Found\" may be used instead.\n */\n GONE = 410,\n\n /**\n * The request did not specify the length of its content, which is required by the requested resource.\n */\n LENGTH_REQUIRED = 411,\n\n /**\n * The server does not meet one of the preconditions that the requester put on the request.\n */\n PRECONDITION_FAILED = 412,\n\n /**\n * The request is larger than the server is willing or able to process. Previously called \"Request Entity Too Large\".\n */\n PAYLOAD_TOO_LARGE = 413,\n\n /**\n * The URI provided was too long for the server to process. Often the result of too much data being encoded as a query-string of a GET request,\n * in which case it should be converted to a POST request.\n * Called \"Request-URI Too Long\" previously.\n */\n URI_TOO_LONG = 414,\n\n /**\n * The request entity has a media type which the server or resource does not support.\n * For example, the client uploads an image as image/svg+xml, but the server requires that images use a different format.\n */\n UNSUPPORTED_MEDIA_TYPE = 415,\n\n /**\n * The client has asked for a portion of the file (byte serving), but the server cannot supply that portion.\n * For example, if the client asked for a part of the file that lies beyond the end of the file.\n * Called \"Requested Range Not Satisfiable\" previously.\n */\n RANGE_NOT_SATISFIABLE = 416,\n\n /**\n * The server cannot meet the requirements of the Expect request-header field.\n */\n EXPECTATION_FAILED = 417,\n\n /**\n * This code was defined in 1998 as one of the traditional IETF April Fools' jokes, in RFC 2324, Hyper Text Coffee Pot Control Protocol,\n * and is not expected to be implemented by actual HTTP servers. The RFC specifies this code should be returned by\n * teapots requested to brew coffee. This HTTP status is used as an Easter egg in some websites, including Google.com.\n */\n I_AM_A_TEAPOT = 418,\n\n /**\n * The request was directed at a server that is not able to produce a response (for example because a connection reuse).\n */\n MISDIRECTED_REQUEST = 421,\n\n /**\n * The request was well-formed but was unable to be followed due to semantic errors.\n */\n UNPROCESSABLE_ENTITY = 422,\n\n /**\n * The resource that is being accessed is locked.\n */\n LOCKED = 423,\n\n /**\n * The request failed due to failure of a previous request (e.g., a PROPPATCH).\n */\n FAILED_DEPENDENCY = 424,\n\n /**\n * The client should switch to a different protocol such as TLS/1.0, given in the Upgrade header field.\n */\n UPGRADE_REQUIRED = 426,\n\n /**\n * The origin server requires the request to be conditional.\n * Intended to prevent \"the 'lost update' problem, where a client\n * GETs a resource's state, modifies it, and PUTs it back to the server,\n * when meanwhile a third party has modified the state on the server, leading to a conflict.\"\n */\n PRECONDITION_REQUIRED = 428,\n\n /**\n * The user has sent too many requests in a given amount of time. Intended for use with rate-limiting schemes.\n */\n TOO_MANY_REQUESTS = 429,\n\n /**\n * The server is unwilling to process the request because either an individual header field,\n * or all the header fields collectively, are too large.\n */\n REQUEST_HEADER_FIELDS_TOO_LARGE = 431,\n\n /**\n * A server operator has received a legal demand to deny access to a resource or to a set of resources\n * that includes the requested resource. The code 451 was chosen as a reference to the novel Fahrenheit 451.\n */\n UNAVAILABLE_FOR_LEGAL_REASONS = 451,\n\n /**\n * A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.\n */\n INTERNAL_SERVER_ERROR = 500,\n\n /**\n * The server either does not recognize the request method, or it lacks the ability to fulfill the request.\n * Usually this implies future availability (e.g., a new feature of a web-service API).\n */\n NOT_IMPLEMENTED = 501,\n\n /**\n * The server was acting as a gateway or proxy and received an invalid response from the upstream server.\n */\n BAD_GATEWAY = 502,\n\n /**\n * The server is currently unavailable (because it is overloaded or down for maintenance).\n * Generally, this is a temporary state.\n */\n SERVICE_UNAVAILABLE = 503,\n\n /**\n * The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.\n */\n GATEWAY_TIMEOUT = 504,\n\n /**\n * The server does not support the HTTP protocol version used in the request\n */\n HTTP_VERSION_NOT_SUPPORTED = 505,\n\n /**\n * Transparent content negotiation for the request results in a circular reference.\n */\n VARIANT_ALSO_NEGOTIATES = 506,\n\n /**\n * The server is unable to store the representation needed to complete the request.\n */\n INSUFFICIENT_STORAGE = 507,\n\n /**\n * The server detected an infinite loop while processing the request.\n */\n LOOP_DETECTED = 508,\n\n /**\n * Further extensions to the request are required for the server to fulfill it.\n */\n NOT_EXTENDED = 510,\n\n /**\n * The client needs to authenticate to gain network access.\n * Intended for use by intercepting proxies used to control access to the network (e.g., \"captive portals\" used\n * to require agreement to Terms of Service before granting full Internet access via a Wi-Fi hotspot).\n */\n NETWORK_AUTHENTICATION_REQUIRED = 511,\n}\n","/**\n * @packageDocumentation\n * @module @taquito/http-utils\n */\n\nimport { STATUS_CODE } from './status_code';\n\n// tslint:disable: strict-type-predicates\nconst isNode =\n typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n// tslint:enable: strict-type-predicates\n\nconst XMLHttpRequestCTOR = isNode ? require('xhr2-cookies').XMLHttpRequest : XMLHttpRequest;\n\nexport * from './status_code';\nexport { VERSION } from './version';\n\nconst defaultTimeout = 30000;\n\nexport interface HttpRequestOptions {\n url: string;\n method?: 'GET' | 'POST';\n timeout?: number;\n json?: boolean;\n query?: { [key: string]: any };\n headers?: { [key: string]: string };\n mimeType?: string;\n}\n\nexport class HttpResponseError implements Error {\n public name = 'HttpResponse';\n\n constructor(\n public message: string,\n public status: STATUS_CODE,\n public statusText: string,\n public body: string,\n public url: string\n ) {}\n}\n\nexport class HttpRequestFailed implements Error {\n public name = 'HttpRequestFailed';\n public message: string;\n\n constructor(public url: string, public innerEvent: any) {\n this.message = `Request to ${url} failed`;\n }\n}\n\nexport class HttpBackend {\n protected serialize(obj?: { [key: string]: any }) {\n if (!obj) {\n return '';\n }\n\n const str = [];\n for (const p in obj) {\n if (obj.hasOwnProperty(p) && typeof obj[p] !== 'undefined') {\n const prop = typeof obj[p].toJSON === 'function' ? obj[p].toJSON() : obj[p];\n // query arguments can have no value so we need some way of handling that\n // example https://domain.com/query?all\n if (prop === null) {\n str.push(encodeURIComponent(p));\n continue;\n }\n // another use case is multiple arguments with the same name\n // they are passed as array\n if (Array.isArray(prop)) {\n prop.forEach((item) => {\n str.push(encodeURIComponent(p) + '=' + encodeURIComponent(item));\n });\n continue;\n }\n str.push(encodeURIComponent(p) + '=' + encodeURIComponent(prop));\n }\n }\n const serialized = str.join('&');\n if (serialized) {\n return `?${serialized}`;\n } else {\n return '';\n }\n }\n\n protected createXHR(): XMLHttpRequest {\n return new XMLHttpRequestCTOR();\n }\n\n /**\n *\n * @param options contains options to be passed for the HTTP request (url, method and timeout)\n */\n createRequest<T>(\n {\n url,\n method,\n timeout,\n query,\n headers = {},\n json = true,\n mimeType = undefined,\n }: HttpRequestOptions,\n data?: {}\n ) {\n return new Promise<T>((resolve, reject) => {\n const request = this.createXHR();\n request.open(method || 'GET', `${url}${this.serialize(query)}`);\n if (!headers['Content-Type']) {\n request.setRequestHeader('Content-Type', 'application/json');\n }\n if (mimeType) {\n request.overrideMimeType(`${mimeType}`);\n }\n for (const k in headers) {\n request.setRequestHeader(k, headers[k]);\n }\n request.timeout = timeout || defaultTimeout;\n request.onload = function () {\n if (this.status >= 200 && this.status < 300) {\n if (json) {\n try {\n resolve(JSON.parse(request.response));\n } catch (ex) {\n reject(new Error(`Unable to parse response: ${request.response}`));\n }\n } else {\n resolve(request.response);\n }\n } else {\n reject(\n new HttpResponseError(\n `Http error response: (${this.status}) ${request.response}`,\n this.status as STATUS_CODE,\n request.statusText,\n request.response,\n url\n )\n );\n }\n };\n\n request.ontimeout = function () {\n reject(new Error(`Request timed out after: ${request.timeout}ms`));\n };\n\n request.onerror = function (err) {\n reject(new HttpRequestFailed(url, err));\n };\n\n if (data) {\n const dataStr = JSON.stringify(data);\n request.send(dataStr);\n } else {\n request.send();\n }\n });\n }\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","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\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/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is 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 > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\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'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\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 MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\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/*<replacement>*/\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/*</replacement>*/\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});","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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","var __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};\nimport * as bs58check from 'bs58check';\n/**\n * @internalapi\n *\n * The Serializer is used to serialize / deserialize JSON objects and encode them with bs58check\n */\nexport class Serializer {\n /**\n * Serialize and bs58check encode an object\n *\n * @param message JSON object to serialize\n */\n serialize(message) {\n return __awaiter(this, void 0, void 0, function* () {\n const str = JSON.stringify(message);\n return bs58check.encode(Buffer.from(str));\n });\n }\n /**\n * Deserialize a bs58check encoded string\n *\n * @param encoded String to be deserialized\n */\n deserialize(encoded) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof encoded !== 'string') {\n throw new Error('Encoded payload needs to be a string');\n }\n return JSON.parse(bs58check.decode(encoded).toString());\n });\n }\n}\n//# sourceMappingURL=Serializer.js.map","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import { isTextMessageEvent } from '../utils/events';\nexport var MatrixMessageType;\n(function (MatrixMessageType) {\n MatrixMessageType[\"TEXT\"] = \"m.text\";\n})(MatrixMessageType || (MatrixMessageType = {}));\nexport class MatrixMessage {\n constructor(type, sender, content, timestamp) {\n this.type = type;\n this.sender = sender;\n this.content = content;\n this.timestamp = timestamp;\n }\n /**\n * Construct a message from a message event\n *\n * @param event\n */\n static from(event) {\n if (isTextMessageEvent(event)) {\n return new MatrixMessage(event.content.msgtype, event.sender, event.content.body, event.origin_server_ts);\n }\n // for now only text messages are supported\n return undefined;\n }\n}\n//# sourceMappingURL=MatrixMessage.js.map","import { MatrixMessageType } from '../models/MatrixMessage';\n/**\n * Check if an event is a create event\n *\n * @param event MatrixStateEvent\n */\nexport const isCreateEvent = (event) => event.type === 'm.room.create' && event.content instanceof Object && 'creator' in event.content;\n/**\n * Check if an event is a join event\n *\n * @param event MatrixStateEvent\n */\nexport const isJoinEvent = (event) => event.type === 'm.room.member' &&\n event.content instanceof Object &&\n 'membership' in event.content &&\n // eslint-disable-next-line dot-notation\n event.content['membership'] === 'join';\n/**\n * Check if an event is a message event\n *\n * @param event MatrixStateEvent\n */\nexport const isMessageEvent = (event) => event.type === 'm.room.message';\n/**\n * Check if an event is a text message event\n *\n * @param event MatrixStateEvent\n */\nexport const isTextMessageEvent = (event) => isMessageEvent(event) &&\n event.content instanceof Object &&\n 'msgtype' in event.content &&\n // eslint-disable-next-line dot-notation\n event.content['msgtype'] === MatrixMessageType.TEXT;\n//# sourceMappingURL=events.js.map","const getByPath = require('lodash/get');\nconst setByPath = require('lodash/set');\nimport BigNumber from 'bignumber.js';\n\n/**\n * Casts object/array items to BigNumber\n * keys support lodash path notation\n * @param data input object or array\n * @param keys keys for processing or all items if not defined\n *\n * @see https://lodash.com/docs/#get\n *\n */\nexport function castToBigNumber(data: any, keys?: any): object {\n const returnArray: boolean = Array.isArray(data);\n if (typeof keys === 'undefined') {\n keys = Object.keys(data);\n }\n let response: any = returnArray ? [] : {};\n\n keys.forEach((key: any) => {\n const item = getByPath(data, key);\n let res: any;\n if (typeof item === 'undefined') {\n return;\n }\n\n if (Array.isArray(item)) {\n res = castToBigNumber(item);\n setByPath(response, key, res);\n return;\n }\n\n res = new BigNumber(item);\n setByPath(response, key, res);\n });\n\n return response;\n}\n\n/**\n * Casts object/array BigNumber items to strings for readability\n * @param data input object or array\n * @param keys keys for processing or all items if not defined\n *\n */\nexport function castToString(data: any, keys?: any): object {\n const returnArray: boolean = Array.isArray(data);\n if (typeof keys === 'undefined') {\n keys = Object.keys(data);\n }\n let response: any = returnArray ? [] : {};\n\n keys.forEach((key: any) => {\n const item = data[key];\n\n if (typeof item === 'undefined') {\n return;\n }\n\n if (Array.isArray(item)) {\n response[key] = castToString(item);\n return;\n }\n\n if (!BigNumber.isBigNumber(item)) {\n response[key] = item;\n return;\n }\n\n response[key] = item.toString();\n });\n\n return response;\n}\n","export enum OpKind {\n ORIGINATION = 'origination',\n DELEGATION = 'delegation',\n REVEAL = 'reveal',\n TRANSACTION = 'transaction',\n ACTIVATION = 'activate_account',\n ENDORSEMENT = 'endorsement',\n ENDORSEMENT_WITH_SLOT = 'endorsement_with_slot',\n SEED_NONCE_REVELATION = 'seed_nonce_revelation',\n DOUBLE_ENDORSEMENT_EVIDENCE = 'double_endorsement_evidence',\n DOUBLE_BAKING_EVIDENCE = 'double_baking_evidence',\n PROPOSALS = 'proposals',\n BALLOT = 'ballot',\n FAILING_NOOP = 'failing_noop'\n}\n","/**\n * @packageDocumentation\n * @module @taquito/rpc\n */\nimport { HttpBackend, HttpResponseError, STATUS_CODE } from '@taquito/http-utils';\nimport BigNumber from 'bignumber.js';\nimport {\n BakingRightsQueryArguments,\n BakingRightsResponse,\n BalanceResponse,\n BallotListResponse,\n BallotsResponse,\n BigMapGetResponse,\n BigMapKey,\n BigMapResponse,\n BlockHeaderResponse,\n BlockMetadata,\n BlockResponse,\n ConstantsResponse,\n ContractResponse,\n CurrentProposalResponse,\n CurrentQuorumResponse,\n DelegateResponse,\n DelegatesResponse,\n EndorsingRightsQueryArguments,\n EndorsingRightsResponse,\n EntrypointsResponse,\n ForgeOperationsParams,\n ManagerKeyResponse,\n OperationHash,\n PackDataParams,\n PackDataResponse,\n PeriodKindResponse,\n PreapplyParams,\n PreapplyResponse,\n ProposalsResponse,\n RawBlockHeaderResponse,\n RPCRunCodeParam,\n RPCRunOperationParam,\n RunCodeResult,\n SaplingDiffResponse,\n ScriptResponse,\n StorageResponse,\n VotesListingsResponse,\n VotingPeriodBlockResult,\n} from './types';\nimport { castToBigNumber } from './utils/utils';\n\nexport * from './types';\n\nexport { OpKind } from './opkind';\n\nexport { VERSION } from './version';\n\nconst defaultChain = 'main';\n\ninterface RPCOptions {\n block: string;\n}\n\nconst defaultRPCOptions: RPCOptions = { block: 'head' };\n\n/***\n * @description RpcClient allows interaction with Tezos network through an rpc node\n */\nexport class RpcClient {\n /**\n *\n * @param url rpc root url\n * @param chain chain (default main)\n * @param httpBackend Http backend that issue http request.\n * You can override it by providing your own if you which to hook in the request/response\n *\n * @example new RpcClient('https://api.tez.ie/rpc/mainnet', 'main') this will use https://api.tez.ie/rpc/mainnet/chains/main\n */\n constructor(\n protected url: string,\n protected chain: string = defaultChain,\n protected httpBackend: HttpBackend = new HttpBackend()\n ) {}\n\n private createURL(path: string) {\n // Trim trailing slashes because it is assumed to be included in path\n return `${this.url.replace(/\\/+$/g, '')}${path}`;\n }\n\n /**\n *\n * @param options contains generic configuration for rpc calls\n *\n * @description Get the block's hash, its unique identifier.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-hash\n */\n async getBlockHash({ block }: RPCOptions = defaultRPCOptions): Promise<string> {\n const hash = await this.httpBackend.createRequest<string>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/hash`),\n method: 'GET',\n });\n return hash;\n }\n\n /**\n *\n * @param options contains generic configuration for rpc calls\n *\n * @description List the ancestors of the given block which, if referred to as the branch in an operation header, are recent enough for that operation to be included in the current block.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-live-blocks\n */\n async getLiveBlocks({ block }: RPCOptions = defaultRPCOptions): Promise<string[]> {\n const blocks = await this.httpBackend.createRequest<string[]>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/live_blocks`),\n method: 'GET',\n });\n return blocks;\n }\n\n /**\n *\n * @param address address from which we want to retrieve the balance\n * @param options contains generic configuration for rpc calls\n *\n * @description Access the balance of a contract.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-balance\n */\n async getBalance(\n address: string,\n { block }: RPCOptions = defaultRPCOptions\n ): Promise<BalanceResponse> {\n const balance = await this.httpBackend.createRequest<BalanceResponse>({\n url: this.createURL(\n `/chains/${this.chain}/blocks/${block}/context/contracts/${address}/balance`\n ),\n method: 'GET',\n });\n return new BigNumber(balance);\n }\n\n /**\n *\n * @param address contract address from which we want to retrieve the storage\n * @param options contains generic configuration for rpc calls\n *\n * @description Access the data of the contract.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-storage\n */\n async getStorage(\n address: string,\n { block }: { block: string } = defaultRPCOptions\n ): Promise<StorageResponse> {\n return this.httpBackend.createRequest<StorageResponse>({\n url: this.createURL(\n `/chains/${this.chain}/blocks/${block}/context/contracts/${address}/storage`\n ),\n method: 'GET',\n });\n }\n\n /**\n *\n * @param address contract address from which we want to retrieve the script\n * @param options contains generic configuration for rpc calls\n *\n * @description Access the code and data of the contract.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-script\n */\n async getScript(\n address: string,\n { block }: { block: string } = defaultRPCOptions\n ): Promise<ScriptResponse> {\n return this.httpBackend.createRequest<ScriptResponse>({\n url: this.createURL(\n `/chains/${this.chain}/blocks/${block}/context/contracts/${address}/script`\n ),\n method: 'GET',\n });\n }\n\n /**\n *\n * @param address contract address from which we want to retrieve\n * @param options contains generic configuration for rpc calls\n *\n * @description Access the complete status of a contract.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id\n */\n async getContract(\n address: string,\n { block }: { block: string } = defaultRPCOptions\n ): Promise<ContractResponse> {\n const contractResponse = await this.httpBackend.createRequest<ContractResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/context/contracts/${address}`),\n method: 'GET',\n });\n return {\n ...contractResponse,\n balance: new BigNumber(contractResponse.balance),\n };\n }\n\n /**\n *\n * @param address contract address from which we want to retrieve the manager\n * @param options contains generic configuration for rpc calls\n *\n * @description Access the manager key of a contract.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-manager-key\n */\n async getManagerKey(\n address: string,\n { block }: { block: string } = defaultRPCOptions\n ): Promise<ManagerKeyResponse> {\n return this.httpBackend.createRequest<ManagerKeyResponse>({\n url: this.createURL(\n `/chains/${this.chain}/blocks/${block}/context/contracts/${address}/manager_key`\n ),\n method: 'GET',\n });\n }\n\n /**\n *\n * @param address contract address from which we want to retrieve the delegate (baker)\n * @param options contains generic configuration for rpc calls\n *\n * @description Access the delegate of a contract, if any.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-delegate\n */\n async getDelegate(\n address: string,\n { block }: { block: string } = defaultRPCOptions\n ): Promise<DelegateResponse> {\n let delegate: DelegateResponse;\n try {\n delegate = await this.httpBackend.createRequest<DelegateResponse>({\n url: this.createURL(\n `/chains/${this.chain}/blocks/${block}/context/contracts/${address}/delegate`\n ),\n method: 'GET',\n });\n } catch (ex) {\n if (ex instanceof HttpResponseError && ex.status === STATUS_CODE.NOT_FOUND) {\n delegate = null;\n } else {\n throw ex;\n }\n }\n return delegate;\n }\n\n /**\n *\n * @param address contract address from which we want to retrieve the big map key\n * @param options contains generic configuration for rpc calls\n *\n * @description Access the value associated with a key in the big map storage of the contract.\n *\n * @deprecated Deprecated in favor of getBigMapKeyByID\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-context-contracts-contract-id-big-map-get\n */\n async getBigMapKey(\n address: string,\n key: BigMapKey,\n { block }: { block: string } = defaultRPCOptions\n ): Promise<BigMapGetResponse> {\n return this.httpBackend.createRequest<BigMapGetResponse>(\n {\n url: this.createURL(\n `/chains/${this.chain}/blocks/${block}/context/contracts/${address}/big_map_get`\n ),\n method: 'POST',\n },\n key\n );\n }\n\n /**\n *\n * @param id Big Map ID\n * @param expr Expression hash to query (A b58check encoded Blake2b hash of the expression (The expression can be packed using the pack_data method))\n * @param options contains generic configuration for rpc calls\n *\n * @description Access the value associated with a key in a big map.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-big-maps-big-map-id-script-expr\n */\n async getBigMapExpr(\n id: string,\n expr: string,\n { block }: { block: string } = defaultRPCOptions\n ): Promise<BigMapResponse> {\n return this.httpBackend.createRequest<BigMapResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/context/big_maps/${id}/${expr}`),\n method: 'GET',\n });\n }\n\n /**\n *\n * @param address delegate address which we want to retrieve\n * @param options contains generic configuration for rpc calls\n *\n * @description Fetches information about a delegate from RPC.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-delegates-pkh\n */\n async getDelegates(\n address: string,\n { block }: { block: string } = defaultRPCOptions\n ): Promise<DelegatesResponse> {\n const response = await this.httpBackend.createRequest<DelegatesResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/context/delegates/${address}`),\n method: 'GET',\n });\n\n return {\n deactivated: response.deactivated,\n balance: new BigNumber(response.balance),\n frozen_balance: new BigNumber(response.frozen_balance),\n frozen_balance_by_cycle: response.frozen_balance_by_cycle.map(\n ({ deposit, fees, rewards, ...rest }) => ({\n ...rest,\n deposit: new BigNumber(deposit),\n fees: new BigNumber(fees),\n rewards: new BigNumber(rewards),\n })\n ),\n staking_balance: new BigNumber(response.staking_balance),\n delegated_contracts: response.delegated_contracts,\n delegated_balance: new BigNumber(response.delegated_balance),\n grace_period: response.grace_period,\n };\n }\n\n /**\n *\n * @param options contains generic configuration for rpc calls\n *\n * @description All constants\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-constants\n */\n async getConstants({ block }: RPCOptions = defaultRPCOptions): Promise<ConstantsResponse> {\n const response = await this.httpBackend.createRequest<ConstantsResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/context/constants`),\n method: 'GET',\n });\n\n const castedResponse: any = castToBigNumber(response, [\n 'time_between_blocks',\n 'hard_gas_limit_per_operation',\n 'hard_gas_limit_per_block',\n 'proof_of_work_threshold',\n 'tokens_per_roll',\n 'seed_nonce_revelation_tip',\n 'block_security_deposit',\n 'endorsement_security_deposit',\n 'block_reward',\n 'endorsement_reward',\n 'cost_per_byte',\n 'hard_storage_limit_per_operation',\n 'test_chain_duration',\n 'baking_reward_per_endorsement', \n 'delay_per_missing_endorsement',\n 'minimal_block_delay',\n 'liquidity_baking_subsidy'\n ]);\n\n return {\n ...response,\n ...(castedResponse as ConstantsResponse),\n };\n }\n\n /**\n *\n * @param options contains generic configuration for rpc calls. See examples for various available sytaxes.\n *\n * @description All the information about a block\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id\n * @example getBlock() will default to /main/chains/block/head.\n * @example getBlock({ block: head~2 }) will return an offset of 2 blocks.\n * @example getBlock({ block: BL8fTiWcSxWCjiMVnDkbh6EuhqVPZzgWheJ2dqwrxYRm9AephXh~2 }) will return an offset of 2 blocks from given block hash..\n */\n async getBlock({ block }: RPCOptions = defaultRPCOptions): Promise<BlockResponse> {\n const response = await this.httpBackend.createRequest<BlockResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}`),\n method: 'GET',\n });\n\n return response;\n }\n\n /**\n *\n * @param options contains generic configuration for rpc calls\n *\n * @description The whole block header\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-header\n */\n async getBlockHeader({ block }: RPCOptions = defaultRPCOptions): Promise<BlockHeaderResponse> {\n const response = await this.httpBackend.createRequest<RawBlockHeaderResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/header`),\n method: 'GET',\n });\n\n return response;\n }\n\n /**\n *\n * @param options contains generic configuration for rpc calls\n *\n * @description All the metadata associated to the block\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-metadata\n */\n async getBlockMetadata({ block }: RPCOptions = defaultRPCOptions): Promise<BlockMetadata> {\n const response = await this.httpBackend.createRequest<BlockMetadata>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/metadata`),\n method: 'GET',\n });\n\n return response;\n }\n\n /**\n *\n * @param args contains optional query arguments\n * @param options contains generic configuration for rpc calls\n *\n * @description Retrieves the list of delegates allowed to bake a block.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-helpers-baking-rights\n */\n async getBakingRights(\n args: BakingRightsQueryArguments = {},\n { block }: RPCOptions = defaultRPCOptions\n ): Promise<BakingRightsResponse> {\n const response = await this.httpBackend.createRequest<BakingRightsResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/helpers/baking_rights`),\n method: 'GET',\n query: args,\n });\n\n return response;\n }\n\n /**\n *\n * @param args contains optional query arguments\n * @param options contains generic configuration for rpc calls\n *\n * @description Retrieves the list of delegates allowed to bake a block.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-helpers-endorsing-rights\n */\n async getEndorsingRights(\n args: EndorsingRightsQueryArguments = {},\n { block }: RPCOptions = defaultRPCOptions\n ): Promise<EndorsingRightsResponse> {\n const response = await this.httpBackend.createRequest<EndorsingRightsResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/helpers/endorsing_rights`),\n method: 'GET',\n query: args,\n });\n\n return response;\n }\n\n /**\n * @param options contains generic configuration for rpc calls\n *\n * @description Ballots casted so far during a voting period\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-ballot-list\n */\n async getBallotList({ block }: RPCOptions = defaultRPCOptions): Promise<BallotListResponse> {\n const response = await this.httpBackend.createRequest<BallotListResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/votes/ballot_list`),\n method: 'GET',\n });\n\n return response;\n }\n\n /**\n *\n * @param options contains generic configuration for rpc calls\n *\n * @description Sum of ballots casted so far during a voting period.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-ballots\n */\n async getBallots({ block }: RPCOptions = defaultRPCOptions): Promise<BallotsResponse> {\n const response = await this.httpBackend.createRequest<BallotsResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/votes/ballots`),\n method: 'GET',\n });\n\n return response;\n }\n\n /**\n *\n * @param options contains generic configuration for rpc calls\n *\n * @description Current period kind.\n *\n * @deprecated Deprecated in favor of getCurrentPeriod\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-current-period-kind\n */\n async getCurrentPeriodKind({\n block,\n }: RPCOptions = defaultRPCOptions): Promise<PeriodKindResponse> {\n const response = await this.httpBackend.createRequest<PeriodKindResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/votes/current_period_kind`),\n method: 'GET',\n });\n\n return response;\n }\n\n /**\n *\n * @param options contains generic configuration for rpc calls\n *\n * @description Current proposal under evaluation.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-current-proposal\n */\n async getCurrentProposal({\n block,\n }: RPCOptions = defaultRPCOptions): Promise<CurrentProposalResponse> {\n const response = await this.httpBackend.createRequest<CurrentProposalResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/votes/current_proposal`),\n method: 'GET',\n });\n\n return response;\n }\n\n /**\n *\n * @param options contains generic configuration for rpc calls\n *\n * @description Current expected quorum.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-current-quorum\n */\n async getCurrentQuorum({\n block,\n }: RPCOptions = defaultRPCOptions): Promise<CurrentQuorumResponse> {\n const response = await this.httpBackend.createRequest<CurrentQuorumResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/votes/current_quorum`),\n method: 'GET',\n });\n\n return response;\n }\n\n /**\n *\n * @param options contains generic configuration for rpc calls\n *\n * @description List of delegates with their voting weight, in number of rolls.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-listings\n */\n async getVotesListings({\n block,\n }: RPCOptions = defaultRPCOptions): Promise<VotesListingsResponse> {\n const response = await this.httpBackend.createRequest<VotesListingsResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/votes/listings`),\n method: 'GET',\n });\n\n return response;\n }\n\n /**\n *\n * @param options contains generic configuration for rpc calls\n *\n * @description List of proposals with number of supporters.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-proposals\n */\n async getProposals({ block }: RPCOptions = defaultRPCOptions): Promise<ProposalsResponse> {\n const response = await this.httpBackend.createRequest<ProposalsResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/votes/proposals`),\n method: 'GET',\n });\n\n return response;\n }\n\n /**\n *\n * @param data operation contents to forge\n * @param options contains generic configuration for rpc calls\n *\n * @description Forge an operation returning the unsigned bytes\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-forge-operations\n */\n async forgeOperations(\n data: ForgeOperationsParams,\n { block }: RPCOptions = defaultRPCOptions\n ): Promise<string> {\n return this.httpBackend.createRequest<string>(\n {\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/helpers/forge/operations`),\n method: 'POST',\n },\n data\n );\n }\n\n /**\n *\n * @param signedOpBytes signed bytes to inject\n *\n * @description Inject an operation in node and broadcast it. Returns the ID of the operation. The `signedOperationContents` should be constructed using a contextual RPCs from the latest block and signed by the client. By default, the RPC will wait for the operation to be (pre-)validated before answering. See RPCs under /blocks/prevalidation for more details on the prevalidation context.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-injection-operation\n */\n async injectOperation(signedOpBytes: string): Promise<OperationHash> {\n return this.httpBackend.createRequest<any>(\n {\n url: this.createURL(`/injection/operation`),\n method: 'POST',\n },\n signedOpBytes\n );\n }\n\n /**\n *\n * @param ops Operations to apply\n * @param options contains generic configuration for rpc calls\n *\n * @description Simulate the validation of an operation\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-preapply-operations\n */\n async preapplyOperations(\n ops: PreapplyParams,\n { block }: RPCOptions = defaultRPCOptions\n ): Promise<PreapplyResponse[]> {\n const response = await this.httpBackend.createRequest<PreapplyResponse[]>(\n {\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/helpers/preapply/operations`),\n method: 'POST',\n },\n ops\n );\n\n return response;\n }\n\n /**\n *\n * @param contract address of the contract we want to get the entrypoints of\n *\n * @description Return the list of entrypoints of the contract\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-entrypoints\n *\n * @version 005_PsBABY5H\n */\n async getEntrypoints(\n contract: string,\n { block }: RPCOptions = defaultRPCOptions\n ): Promise<EntrypointsResponse> {\n const contractResponse = await this.httpBackend.createRequest<{\n entrypoints: { [key: string]: Object };\n }>({\n url: this.createURL(\n `/chains/${this.chain}/blocks/${block}/context/contracts/${contract}/entrypoints`\n ),\n method: 'GET',\n });\n\n return contractResponse;\n }\n\n /**\n * @param op Operation to run\n * @param options contains generic configuration for rpc calls\n *\n * @description Run an operation without signature checks\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-scripts-run-operation\n */\n async runOperation(\n op: RPCRunOperationParam,\n { block }: RPCOptions = defaultRPCOptions\n ): Promise<PreapplyResponse> {\n const response = await this.httpBackend.createRequest<any>(\n {\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/helpers/scripts/run_operation`),\n method: 'POST',\n },\n op\n );\n\n return response;\n }\n\n /**\n * @param code Code to run\n * @param options contains generic configuration for rpc calls\n *\n * @description Run a piece of code in the current context\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-scripts-run-code\n */\n async runCode(\n code: RPCRunCodeParam,\n { block }: RPCOptions = defaultRPCOptions\n ): Promise<RunCodeResult> {\n const response = await this.httpBackend.createRequest<any>(\n {\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/helpers/scripts/run_code`),\n method: 'POST',\n },\n code\n );\n\n return response;\n }\n\n async getChainId() {\n return this.httpBackend.createRequest<string>({\n url: this.createURL(`/chains/${this.chain}/chain_id`),\n method: 'GET',\n });\n }\n\n /**\n *\n * @param data Data to pack\n * @param options contains generic configuration for rpc calls\n *\n * @description Computes the serialized version of a data expression using the same algorithm as script instruction PACK\n *\n * @example packData({ data: { string: \"test\" }, type: { prim: \"string\" } })\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-scripts-pack-data\n */\n async packData(data: PackDataParams, { block }: RPCOptions = defaultRPCOptions) {\n const { gas, ...rest } = await this.httpBackend.createRequest<PackDataResponse>(\n {\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/helpers/scripts/pack_data`),\n method: 'POST',\n },\n data\n );\n\n let formattedGas = gas;\n const tryBigNumber = new BigNumber(gas || '');\n if (!tryBigNumber.isNaN()) {\n formattedGas = tryBigNumber;\n }\n\n return { gas: formattedGas, ...rest };\n }\n\n /**\n *\n * @description Return rpc root url\n */\n\n getRpcUrl() {\n return this.url;\n }\n\n /**\n *\n * @param options contains generic configuration for rpc calls\n *\n * @description Voting period of current block.\n *\n * @example getCurrentPeriod() will default to current voting period for /main/chains/block/head.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-current-period\n */\n async getCurrentPeriod({\n block,\n }: RPCOptions = defaultRPCOptions): Promise<VotingPeriodBlockResult> {\n const response = await this.httpBackend.createRequest<VotingPeriodBlockResult>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/votes/current_period`),\n method: 'GET',\n });\n\n return response;\n }\n\n /**\n *\n * @param options contains generic configuration for rpc calls\n *\n * @description Voting period of next block.\n *\n * @example getSuccessorPeriod() will default to successor voting period for /main/chains/block/head.\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-successor-period\n */\n async getSuccessorPeriod({\n block,\n }: RPCOptions = defaultRPCOptions): Promise<VotingPeriodBlockResult> {\n const response = await this.httpBackend.createRequest<VotingPeriodBlockResult>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/votes/successor_period`),\n method: 'GET',\n });\n\n return response;\n }\n\n /**\n *\n * @param id Sapling state ID\n * @param options contains generic configuration for rpc calls\n *\n * @description Access the value associated with a sapling state ID.\n *\n * @see https://tezos.gitlab.io/active/rpc.html#get-block-id-context-sapling-sapling-state-id-get-diff\n */\n async getSaplingDiffById(\n id: string,\n { block }: { block: string } = defaultRPCOptions\n ): Promise<SaplingDiffResponse> {\n return this.httpBackend.createRequest<SaplingDiffResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/context/sapling/${id}/get_diff`),\n method: 'GET',\n });\n }\n\n /**\n *\n * @param contract address of the contract we want to get the sapling diff\n * @param options contains generic configuration for rpc calls\n *\n * @description Access the value associated with a sapling state.\n *\n * @see https://tezos.gitlab.io/active/rpc.html#get-block-id-context-contracts-contract-id-single-sapling-get-diff\n */\n async getSaplingDiffByContract(\n contract: string,\n { block }: { block: string } = defaultRPCOptions\n ): Promise<SaplingDiffResponse> {\n return this.httpBackend.createRequest<SaplingDiffResponse>({\n url: this.createURL(`/chains/${this.chain}/blocks/${block}/context/contracts/${contract}/single_sapling_get_diff`),\n method: 'GET',\n });\n }\n}\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\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 function __createBinding(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\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\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 __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\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = 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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n//# sourceMappingURL=isFunction.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport var config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n var error = /*@__PURE__*/ new Error();\n /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n//# sourceMappingURL=config.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function hostReportError(err) {\n setTimeout(function () { throw err; }, 0);\n}\n//# sourceMappingURL=hostReportError.js.map\n","/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport var empty = {\n closed: true,\n next: function (value) { },\n error: function (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n//# sourceMappingURL=isObject.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar UnsubscriptionErrorImpl = /*@__PURE__*/ (function () {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ') : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport var UnsubscriptionError = UnsubscriptionErrorImpl;\n//# sourceMappingURL=UnsubscriptionError.js.map\n","/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */\nimport { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nvar Subscription = /*@__PURE__*/ (function () {\n function Subscription(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._ctorUnsubscribe = true;\n this._unsubscribe = unsubscribe;\n }\n }\n Subscription.prototype.unsubscribe = function () {\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parentOrParents = _a._parentOrParents, _ctorUnsubscribe = _a._ctorUnsubscribe, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (var index = 0; index < _parentOrParents.length; ++index) {\n var parent_1 = _parentOrParents[index];\n parent_1.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n if (_ctorUnsubscribe) {\n this._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n };\n Subscription.prototype.add = function (teardown) {\n var subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n var _parentOrParents = subscription._parentOrParents;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n var subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n };\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexport { Subscription };\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var rxSubscriber = /*@__PURE__*/ (function () {\n return typeof Symbol === 'function'\n ? /*@__PURE__*/ Symbol('rxSubscriber')\n : '@@rxSubscriber_' + /*@__PURE__*/ Math.random();\n})();\nexport var $$rxSubscriber = rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map\n","/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nvar Subscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subscriber, _super);\n function Subscriber(destinationOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this.syncErrorValue = null;\n _this.syncErrorThrown = false;\n _this.syncErrorThrowable = false;\n _this.isStopped = false;\n switch (arguments.length) {\n case 0:\n _this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n _this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n _this.destination = destinationOrNext;\n destinationOrNext.add(_this);\n }\n else {\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext);\n }\n break;\n }\n default:\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n break;\n }\n return _this;\n }\n Subscriber.prototype[rxSubscriberSymbol] = function () { return this; };\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _parentOrParents = this._parentOrParents;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar SafeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this._parentSubscriber = _parentSubscriber;\n var next;\n var context = _this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n _this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = _this.unsubscribe.bind(_this);\n }\n }\n _this._context = context;\n _this._next = next;\n _this._error = error;\n _this._complete = complete;\n return _this;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n var useDeprecatedSynchronousErrorHandling = config.useDeprecatedSynchronousErrorHandling;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\n//# sourceMappingURL=Subscriber.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map\n","/** PURE_IMPORTS_START _identity PURE_IMPORTS_END */\nimport { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map\n","/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nvar Observable = /*@__PURE__*/ (function () {\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var source = this.source;\n return source && source.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n//# sourceMappingURL=Observable.js.map\n","/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n//# sourceMappingURL=toSubscriber.js.map\n","/** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped;\n if (closed_1 || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n//# sourceMappingURL=canReportError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar ObjectUnsubscribedErrorImpl = /*@__PURE__*/ (function () {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n//# sourceMappingURL=ObjectUnsubscribedError.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from './Subscription';\nvar SubjectSubscription = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubjectSubscription, _super);\n function SubjectSubscription(subject, subscriber) {\n var _this = _super.call(this) || this;\n _this.subject = subject;\n _this.subscriber = subscriber;\n _this.closed = false;\n return _this;\n }\n SubjectSubscription.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.closed = true;\n var subject = this.subject;\n var observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n var subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n };\n return SubjectSubscription;\n}(Subscription));\nexport { SubjectSubscription };\n//# sourceMappingURL=SubjectSubscription.js.map\n","/** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nvar SubjectSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubjectSubscriber, _super);\n function SubjectSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n return _this;\n }\n return SubjectSubscriber;\n}(Subscriber));\nexport { SubjectSubscriber };\nvar Subject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.observers = [];\n _this.closed = false;\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype[rxSubscriberSymbol] = function () {\n return new SubjectSubscriber(this);\n };\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype.next = function (value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n };\n Subject.prototype.error = function (err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n };\n Subject.prototype.complete = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n };\n Subject.prototype._trySubscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return _super.prototype._trySubscribe.call(this, subscriber);\n }\n };\n Subject.prototype._subscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var destination = this.destination;\n if (destination && destination.next) {\n destination.next(value);\n }\n };\n AnonymousSubject.prototype.error = function (err) {\n var destination = this.destination;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n };\n AnonymousSubject.prototype.complete = function () {\n var destination = this.destination;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var source = this.source;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map\n","/** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Action } from './Action';\nvar AsyncAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, delay) {\n var errored = false;\n var errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype._unsubscribe = function () {\n var id = this.id;\n var scheduler = this.scheduler;\n var actions = scheduler.actions;\n var index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar QueueAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return (delay > 0 || this.closed) ?\n _super.prototype.execute.call(this, state, delay) :\n this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n return scheduler.flush(this);\n };\n return QueueAction;\n}(AsyncAction));\nexport { QueueAction };\n//# sourceMappingURL=QueueAction.js.map\n","var Scheduler = /*@__PURE__*/ (function () {\n function Scheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n return new this.SchedulerAction(this, work).schedule(state, delay);\n };\n Scheduler.now = function () { return Date.now(); };\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map\n","/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n var _this = _super.call(this, SchedulerAction, function () {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n }) || this;\n _this.actions = [];\n _this.active = false;\n _this.scheduled = undefined;\n return _this;\n }\n AsyncScheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return _super.prototype.schedule.call(this, work, delay, state);\n }\n };\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this.active) {\n actions.push(action);\n return;\n }\n var error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map\n","/** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */\nimport { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport var queueScheduler = /*@__PURE__*/ new QueueScheduler(QueueAction);\nexport var queue = queueScheduler;\n//# sourceMappingURL=queue.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar QueueScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler));\nexport { QueueScheduler };\n//# sourceMappingURL=QueueScheduler.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport var EMPTY = /*@__PURE__*/ new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\n//# sourceMappingURL=isScheduler.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var subscribeToArray = function (array) {\n return function (subscriber) {\n for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n };\n};\n//# sourceMappingURL=subscribeToArray.js.map\n","/** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */\nimport { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nexport var NotificationKind;\n/*@__PURE__*/ (function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nvar Notification = /*@__PURE__*/ (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n };\n Notification.prototype.do = function (next, error, complete) {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n };\n Notification.prototype.toObservable = function () {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n };\n Notification.createNext = function (value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n Notification.undefinedValueNotification = new Notification('N', undefined);\n return Notification;\n}());\nexport { Notification };\n//# sourceMappingURL=Notification.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleArray.js.map\n","/** PURE_IMPORTS_START _Observable,_util_subscribeToArray,_scheduled_scheduleArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function fromArray(input, scheduler) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n }\n else {\n return scheduleArray(input, scheduler);\n }\n}\n//# sourceMappingURL=fromArray.js.map\n","/** PURE_IMPORTS_START _util_isScheduler,_fromArray,_scheduled_scheduleArray PURE_IMPORTS_END */\nimport { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args[args.length - 1];\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args, scheduler);\n }\n else {\n return fromArray(args);\n }\n}\n//# sourceMappingURL=of.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function throwError(error, scheduler) {\n if (!scheduler) {\n return new Observable(function (subscriber) { return subscriber.error(error); });\n }\n else {\n return new Observable(function (subscriber) { return scheduler.schedule(dispatch, 0, { error: error, subscriber: subscriber }); });\n }\n}\nfunction dispatch(_a) {\n var error = _a.error, subscriber = _a.subscriber;\n subscriber.error(error);\n}\n//# sourceMappingURL=throwError.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nvar ObserveOnOperator = /*@__PURE__*/ (function () {\n function ObserveOnOperator(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n };\n return ObserveOnOperator;\n}());\nexport { ObserveOnOperator };\nvar ObserveOnSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ObserveOnSubscriber, _super);\n function ObserveOnSubscriber(destination, scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n var _this = _super.call(this, destination) || this;\n _this.scheduler = scheduler;\n _this.delay = delay;\n return _this;\n }\n ObserveOnSubscriber.dispatch = function (arg) {\n var notification = arg.notification, destination = arg.destination;\n notification.observe(destination);\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {\n var destination = this.destination;\n destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n };\n ObserveOnSubscriber.prototype._next = function (value) {\n this.scheduleMessage(Notification.createNext(value));\n };\n ObserveOnSubscriber.prototype._error = function (err) {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype._complete = function () {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n };\n return ObserveOnSubscriber;\n}(Subscriber));\nexport { ObserveOnSubscriber };\nvar ObserveOnMessage = /*@__PURE__*/ (function () {\n function ObserveOnMessage(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n return ObserveOnMessage;\n}());\nexport { ObserveOnMessage };\n//# sourceMappingURL=observeOn.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { queue } from './scheduler/queue';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nvar ReplaySubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ReplaySubject, _super);\n function ReplaySubject(bufferSize, windowTime, scheduler) {\n if (bufferSize === void 0) {\n bufferSize = Number.POSITIVE_INFINITY;\n }\n if (windowTime === void 0) {\n windowTime = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this) || this;\n _this.scheduler = scheduler;\n _this._events = [];\n _this._infiniteTimeWindow = false;\n _this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n _this._windowTime = windowTime < 1 ? 1 : windowTime;\n if (windowTime === Number.POSITIVE_INFINITY) {\n _this._infiniteTimeWindow = true;\n _this.next = _this.nextInfiniteTimeWindow;\n }\n else {\n _this.next = _this.nextTimeWindow;\n }\n return _this;\n }\n ReplaySubject.prototype.nextInfiniteTimeWindow = function (value) {\n if (!this.isStopped) {\n var _events = this._events;\n _events.push(value);\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n }\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype.nextTimeWindow = function (value) {\n if (!this.isStopped) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n }\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n var _infiniteTimeWindow = this._infiniteTimeWindow;\n var _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n var scheduler = this.scheduler;\n var len = _events.length;\n var subscription;\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n if (_infiniteTimeWindow) {\n for (var i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n }\n else {\n for (var i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i].value);\n }\n }\n if (this.hasError) {\n subscriber.error(this.thrownError);\n }\n else if (this.isStopped) {\n subscriber.complete();\n }\n return subscription;\n };\n ReplaySubject.prototype._getNow = function () {\n return (this.scheduler || queue).now();\n };\n ReplaySubject.prototype._trimBufferThenGetEvents = function () {\n var now = this._getNow();\n var _bufferSize = this._bufferSize;\n var _windowTime = this._windowTime;\n var _events = this._events;\n var eventsCount = _events.length;\n var spliceCount = 0;\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n return _events;\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\nvar ReplayEvent = /*@__PURE__*/ (function () {\n function ReplayEvent(time, value) {\n this.time = time;\n this.value = value;\n }\n return ReplayEvent;\n}());\n//# sourceMappingURL=ReplaySubject.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar OuterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(OuterSubscriber, _super);\n function OuterSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n this.destination.error(error);\n };\n OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n this.destination.complete();\n };\n return OuterSubscriber;\n}(Subscriber));\nexport { OuterSubscriber };\n//# sourceMappingURL=OuterSubscriber.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar InnerSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(InnerSubscriber, _super);\n function InnerSubscriber(parent, outerValue, outerIndex) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.outerValue = outerValue;\n _this.outerIndex = outerIndex;\n _this.index = 0;\n return _this;\n }\n InnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n };\n InnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n };\n InnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return InnerSubscriber;\n}(Subscriber));\nexport { InnerSubscriber };\n//# sourceMappingURL=InnerSubscriber.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = /*@__PURE__*/ getSymbolIterator();\nexport var $$iterator = iterator;\n//# sourceMappingURL=iterator.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n//# sourceMappingURL=isPromise.js.map\n","/** PURE_IMPORTS_START _subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeTo = function (result) {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n }\n else if (isArrayLike(result)) {\n return subscribeToArray(result);\n }\n else if (isPromise(result)) {\n return subscribeToPromise(result);\n }\n else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n }\n else {\n var value = isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = \"You provided \" + value + \" where a stream was expected.\"\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n//# sourceMappingURL=subscribeTo.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeToObservable = function (obj) {\n return function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n };\n};\n//# sourceMappingURL=subscribeToObservable.js.map\n","/** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */\nimport { hostReportError } from './hostReportError';\nexport var subscribeToPromise = function (promise) {\n return function (subscriber) {\n promise.then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, hostReportError);\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToPromise.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport var subscribeToIterable = function (iterable) {\n return function (subscriber) {\n var iterator = iterable[Symbol_iterator]();\n do {\n var item = void 0;\n try {\n item = iterator.next();\n }\n catch (err) {\n subscriber.error(err);\n return subscriber;\n }\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(function () {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToIterable.js.map\n","/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo,_Observable PURE_IMPORTS_END */\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, innerSubscriber) {\n if (innerSubscriber === void 0) {\n innerSubscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n }\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber);\n}\n//# sourceMappingURL=subscribeToResult.js.map\n","/** PURE_IMPORTS_START tslib,_util_isScheduler,_util_isArray,_OuterSubscriber,_util_subscribeToResult,_fromArray PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\nvar NONE = {};\nexport function combineLatest() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var resultSelector = undefined;\n var scheduler = undefined;\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop();\n }\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop();\n }\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0];\n }\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\nvar CombineLatestOperator = /*@__PURE__*/ (function () {\n function CombineLatestOperator(resultSelector) {\n this.resultSelector = resultSelector;\n }\n CombineLatestOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n };\n return CombineLatestOperator;\n}());\nexport { CombineLatestOperator };\nvar CombineLatestSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CombineLatestSubscriber, _super);\n function CombineLatestSubscriber(destination, resultSelector) {\n var _this = _super.call(this, destination) || this;\n _this.resultSelector = resultSelector;\n _this.active = 0;\n _this.values = [];\n _this.observables = [];\n return _this;\n }\n CombineLatestSubscriber.prototype._next = function (observable) {\n this.values.push(NONE);\n this.observables.push(observable);\n };\n CombineLatestSubscriber.prototype._complete = function () {\n var observables = this.observables;\n var len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n this.active = len;\n this.toRespond = len;\n for (var i = 0; i < len; i++) {\n var observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n };\n CombineLatestSubscriber.prototype.notifyComplete = function (unused) {\n if ((this.active -= 1) === 0) {\n this.destination.complete();\n }\n };\n CombineLatestSubscriber.prototype.notifyNext = function (_outerValue, innerValue, outerIndex) {\n var values = this.values;\n var oldVal = values[outerIndex];\n var toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n }\n else {\n this.destination.next(values.slice());\n }\n }\n };\n CombineLatestSubscriber.prototype._tryResultSelector = function (values) {\n var result;\n try {\n result = this.resultSelector.apply(this, values);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return CombineLatestSubscriber;\n}(OuterSubscriber));\nexport { CombineLatestSubscriber };\n//# sourceMappingURL=combineLatest.js.map\n","/** PURE_IMPORTS_START _scheduleObservable,_schedulePromise,_scheduleArray,_scheduleIterable,_util_isInteropObservable,_util_isPromise,_util_isArrayLike,_util_isIterable PURE_IMPORTS_END */\nimport { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n//# sourceMappingURL=scheduled.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function isInteropObservable(input) {\n return input && typeof input[Symbol_observable] === 'function';\n}\n//# sourceMappingURL=isInteropObservable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },\n error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },\n complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleObservable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function schedulePromise(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n return input.then(function (value) {\n sub.add(scheduler.schedule(function () {\n subscriber.next(value);\n sub.add(scheduler.schedule(function () { return subscriber.complete(); }));\n }));\n }, function (err) {\n sub.add(scheduler.schedule(function () { return subscriber.error(err); }));\n });\n }));\n return sub;\n });\n}\n//# sourceMappingURL=schedulePromise.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function isIterable(input) {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n//# sourceMappingURL=isIterable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var iterator;\n sub.add(function () {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(function () {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n var value;\n var done;\n try {\n var result = iterator.next();\n value = result.value;\n done = result.done;\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map\n","/** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n }\n else {\n return scheduled(input, scheduler);\n }\n}\n//# sourceMappingURL=from.js.map\n","/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { empty } from './empty';\nexport function defer(observableFactory) {\n return new Observable(function (subscriber) {\n var input;\n try {\n input = observableFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var source = input ? from(input) : empty();\n return source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=defer.js.map\n","/** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */\nimport { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = /*@__PURE__*/ new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map\n","/** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */\nimport { isArray } from './isArray';\nexport function isNumeric(val) {\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n//# sourceMappingURL=isNumeric.js.map\n","/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function timer(dueTime, periodOrScheduler, scheduler) {\n if (dueTime === void 0) {\n dueTime = 0;\n }\n var period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n }\n else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler;\n }\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n return new Observable(function (subscriber) {\n var due = isNumeric(dueTime)\n ? dueTime\n : (+dueTime - scheduler.now());\n return scheduler.schedule(dispatch, due, {\n index: 0, period: period, subscriber: subscriber\n });\n });\n}\nfunction dispatch(state) {\n var index = state.index, period = state.period, subscriber = state.subscriber;\n subscriber.next(index);\n if (subscriber.closed) {\n return;\n }\n else if (period === -1) {\n return subscriber.complete();\n }\n state.index = index + 1;\n this.schedule(state, period);\n}\n//# sourceMappingURL=timer.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function range(start, count, scheduler) {\n if (start === void 0) {\n start = 0;\n }\n return new Observable(function (subscriber) {\n if (count === undefined) {\n count = start;\n start = 0;\n }\n var index = 0;\n var current = start;\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n index: index, count: count, start: start, subscriber: subscriber\n });\n }\n else {\n do {\n if (index++ >= count) {\n subscriber.complete();\n break;\n }\n subscriber.next(current++);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n }\n return undefined;\n });\n}\nexport function dispatch(state) {\n var start = state.start, index = state.index, count = state.count, subscriber = state.subscriber;\n if (index >= count) {\n subscriber.complete();\n return;\n }\n subscriber.next(start);\n if (subscriber.closed) {\n return;\n }\n state.index = index + 1;\n state.start = start + 1;\n this.schedule(state);\n}\n//# sourceMappingURL=range.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nvar MapOperator = /*@__PURE__*/ (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexport { MapOperator };\nvar MapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.count = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=map.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Observable,_util_subscribeTo PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nimport { Observable } from './Observable';\nimport { subscribeTo } from './util/subscribeTo';\nvar SimpleInnerSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SimpleInnerSubscriber, _super);\n function SimpleInnerSubscriber(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n return _this;\n }\n SimpleInnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(value);\n };\n SimpleInnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error);\n this.unsubscribe();\n };\n SimpleInnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete();\n this.unsubscribe();\n };\n return SimpleInnerSubscriber;\n}(Subscriber));\nexport { SimpleInnerSubscriber };\nvar ComplexInnerSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ComplexInnerSubscriber, _super);\n function ComplexInnerSubscriber(parent, outerValue, outerIndex) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.outerValue = outerValue;\n _this.outerIndex = outerIndex;\n return _this;\n }\n ComplexInnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this);\n };\n ComplexInnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error);\n this.unsubscribe();\n };\n ComplexInnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return ComplexInnerSubscriber;\n}(Subscriber));\nexport { ComplexInnerSubscriber };\nvar SimpleOuterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SimpleOuterSubscriber, _super);\n function SimpleOuterSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SimpleOuterSubscriber.prototype.notifyNext = function (innerValue) {\n this.destination.next(innerValue);\n };\n SimpleOuterSubscriber.prototype.notifyError = function (err) {\n this.destination.error(err);\n };\n SimpleOuterSubscriber.prototype.notifyComplete = function () {\n this.destination.complete();\n };\n return SimpleOuterSubscriber;\n}(Subscriber));\nexport { SimpleOuterSubscriber };\nvar ComplexOuterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ComplexOuterSubscriber, _super);\n function ComplexOuterSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComplexOuterSubscriber.prototype.notifyNext = function (_outerValue, innerValue, _outerIndex, _innerSub) {\n this.destination.next(innerValue);\n };\n ComplexOuterSubscriber.prototype.notifyError = function (error) {\n this.destination.error(error);\n };\n ComplexOuterSubscriber.prototype.notifyComplete = function (_innerSub) {\n this.destination.complete();\n };\n return ComplexOuterSubscriber;\n}(Subscriber));\nexport { ComplexOuterSubscriber };\nexport function innerSubscribe(result, innerSubscriber) {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber);\n}\n//# sourceMappingURL=innerSubscribe.js.map\n","/** PURE_IMPORTS_START tslib,_map,_observable_from,_innerSubscribe PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(mergeMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); };\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); };\n}\nvar MergeMapOperator = /*@__PURE__*/ (function () {\n function MergeMapOperator(project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n this.project = project;\n this.concurrent = concurrent;\n }\n MergeMapOperator.prototype.call = function (observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n };\n return MergeMapOperator;\n}());\nexport { MergeMapOperator };\nvar MergeMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MergeMapSubscriber, _super);\n function MergeMapSubscriber(destination, project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.concurrent = concurrent;\n _this.hasCompleted = false;\n _this.buffer = [];\n _this.active = 0;\n _this.index = 0;\n return _this;\n }\n MergeMapSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeMapSubscriber.prototype._tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result);\n };\n MergeMapSubscriber.prototype._innerSub = function (ish) {\n var innerSubscriber = new SimpleInnerSubscriber(this);\n var destination = this.destination;\n destination.add(innerSubscriber);\n var innerSubscription = innerSubscribe(ish, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n };\n MergeMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n MergeMapSubscriber.prototype.notifyNext = function (innerValue) {\n this.destination.next(innerValue);\n };\n MergeMapSubscriber.prototype.notifyComplete = function () {\n var buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n };\n return MergeMapSubscriber;\n}(SimpleOuterSubscriber));\nexport { MergeMapSubscriber };\nexport var flatMap = mergeMap;\n//# sourceMappingURL=mergeMap.js.map\n","/** PURE_IMPORTS_START _mergeAll PURE_IMPORTS_END */\nimport { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map\n","/** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */\nimport { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map\n","/** PURE_IMPORTS_START _of,_operators_concatAll PURE_IMPORTS_END */\nimport { of } from './of';\nimport { concatAll } from '../operators/concatAll';\nexport function concat() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return concatAll()(of.apply(void 0, observables));\n}\n//# sourceMappingURL=concat.js.map\n","/** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport var NEVER = /*@__PURE__*/ new Observable(noop);\nexport function never() {\n return NEVER;\n}\n//# sourceMappingURL=never.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_noop,_util_isFunction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\nexport function tap(nextOrObserver, error, complete) {\n return function tapOperatorFunction(source) {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\nvar DoOperator = /*@__PURE__*/ (function () {\n function DoOperator(nextOrObserver, error, complete) {\n this.nextOrObserver = nextOrObserver;\n this.error = error;\n this.complete = complete;\n }\n DoOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n };\n return DoOperator;\n}());\nvar TapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TapSubscriber, _super);\n function TapSubscriber(destination, observerOrNext, error, complete) {\n var _this = _super.call(this, destination) || this;\n _this._tapNext = noop;\n _this._tapError = noop;\n _this._tapComplete = noop;\n _this._tapError = error || noop;\n _this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n _this._context = _this;\n _this._tapNext = observerOrNext;\n }\n else if (observerOrNext) {\n _this._context = observerOrNext;\n _this._tapNext = observerOrNext.next || noop;\n _this._tapError = observerOrNext.error || noop;\n _this._tapComplete = observerOrNext.complete || noop;\n }\n return _this;\n }\n TapSubscriber.prototype._next = function (value) {\n try {\n this._tapNext.call(this._context, value);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n };\n TapSubscriber.prototype._error = function (err) {\n try {\n this._tapError.call(this._context, err);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n };\n TapSubscriber.prototype._complete = function () {\n try {\n this._tapComplete.call(this._context);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n };\n return TapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=tap.js.map\n","/** PURE_IMPORTS_START _ReplaySubject PURE_IMPORTS_END */\nimport { ReplaySubject } from '../ReplaySubject';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n var config;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n config = configOrBufferSize;\n }\n else {\n config = {\n bufferSize: configOrBufferSize,\n windowTime: windowTime,\n refCount: false,\n scheduler: scheduler\n };\n }\n return function (source) { return source.lift(shareReplayOperator(config)); };\n}\nfunction shareReplayOperator(_a) {\n var _b = _a.bufferSize, bufferSize = _b === void 0 ? Number.POSITIVE_INFINITY : _b, _c = _a.windowTime, windowTime = _c === void 0 ? Number.POSITIVE_INFINITY : _c, useRefCount = _a.refCount, scheduler = _a.scheduler;\n var subject;\n var refCount = 0;\n var subscription;\n var hasError = false;\n var isComplete = false;\n return function shareReplayOperation(source) {\n refCount++;\n var innerSub;\n if (!subject || hasError) {\n hasError = false;\n subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n innerSub = subject.subscribe(this);\n subscription = source.subscribe({\n next: function (value) { subject.next(value); },\n error: function (err) {\n hasError = true;\n subject.error(err);\n },\n complete: function () {\n isComplete = true;\n subscription = undefined;\n subject.complete();\n },\n });\n }\n else {\n innerSub = subject.subscribe(this);\n }\n this.add(function () {\n refCount--;\n innerSub.unsubscribe();\n if (subscription && !isComplete && useRefCount && refCount === 0) {\n subscription.unsubscribe();\n subscription = undefined;\n subject = undefined;\n }\n });\n };\n}\n//# sourceMappingURL=shareReplay.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nvar FilterOperator = /*@__PURE__*/ (function () {\n function FilterOperator(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n FilterOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n };\n return FilterOperator;\n}());\nvar FilterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(FilterSubscriber, _super);\n function FilterSubscriber(destination, predicate, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.thisArg = thisArg;\n _this.count = 0;\n return _this;\n }\n FilterSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n };\n return FilterSubscriber;\n}(Subscriber));\n//# sourceMappingURL=filter.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar EmptyErrorImpl = /*@__PURE__*/ (function () {\n function EmptyErrorImpl() {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n EmptyErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return EmptyErrorImpl;\n})();\nexport var EmptyError = EmptyErrorImpl;\n//# sourceMappingURL=EmptyError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar ArgumentOutOfRangeErrorImpl = /*@__PURE__*/ (function () {\n function ArgumentOutOfRangeErrorImpl() {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n ArgumentOutOfRangeErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return ArgumentOutOfRangeErrorImpl;\n})();\nexport var ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function take(count) {\n return function (source) {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\nvar TakeOperator = /*@__PURE__*/ (function () {\n function TakeOperator(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n TakeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n };\n return TakeOperator;\n}());\nvar TakeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeSubscriber, _super);\n function TakeSubscriber(destination, total) {\n var _this = _super.call(this, destination) || this;\n _this.total = total;\n _this.count = 0;\n return _this;\n }\n TakeSubscriber.prototype._next = function (value) {\n var total = this.total;\n var count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n };\n return TakeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=take.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function defaultIfEmpty(defaultValue) {\n if (defaultValue === void 0) {\n defaultValue = null;\n }\n return function (source) { return source.lift(new DefaultIfEmptyOperator(defaultValue)); };\n}\nvar DefaultIfEmptyOperator = /*@__PURE__*/ (function () {\n function DefaultIfEmptyOperator(defaultValue) {\n this.defaultValue = defaultValue;\n }\n DefaultIfEmptyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n };\n return DefaultIfEmptyOperator;\n}());\nvar DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DefaultIfEmptySubscriber, _super);\n function DefaultIfEmptySubscriber(destination, defaultValue) {\n var _this = _super.call(this, destination) || this;\n _this.defaultValue = defaultValue;\n _this.isEmpty = true;\n return _this;\n }\n DefaultIfEmptySubscriber.prototype._next = function (value) {\n this.isEmpty = false;\n this.destination.next(value);\n };\n DefaultIfEmptySubscriber.prototype._complete = function () {\n if (this.isEmpty) {\n this.destination.next(this.defaultValue);\n }\n this.destination.complete();\n };\n return DefaultIfEmptySubscriber;\n}(Subscriber));\n//# sourceMappingURL=defaultIfEmpty.js.map\n","/** PURE_IMPORTS_START tslib,_util_EmptyError,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { EmptyError } from '../util/EmptyError';\nimport { Subscriber } from '../Subscriber';\nexport function throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) {\n errorFactory = defaultErrorFactory;\n }\n return function (source) {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\nvar ThrowIfEmptyOperator = /*@__PURE__*/ (function () {\n function ThrowIfEmptyOperator(errorFactory) {\n this.errorFactory = errorFactory;\n }\n ThrowIfEmptyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n };\n return ThrowIfEmptyOperator;\n}());\nvar ThrowIfEmptySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ThrowIfEmptySubscriber, _super);\n function ThrowIfEmptySubscriber(destination, errorFactory) {\n var _this = _super.call(this, destination) || this;\n _this.errorFactory = errorFactory;\n _this.hasValue = false;\n return _this;\n }\n ThrowIfEmptySubscriber.prototype._next = function (value) {\n this.hasValue = true;\n this.destination.next(value);\n };\n ThrowIfEmptySubscriber.prototype._complete = function () {\n if (!this.hasValue) {\n var err = void 0;\n try {\n err = this.errorFactory();\n }\n catch (e) {\n err = e;\n }\n this.destination.error(err);\n }\n else {\n return this.destination.complete();\n }\n };\n return ThrowIfEmptySubscriber;\n}(Subscriber));\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map\n","/** PURE_IMPORTS_START _util_EmptyError,_filter,_take,_defaultIfEmpty,_throwIfEmpty,_util_identity PURE_IMPORTS_END */\nimport { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) { return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); })); };\n}\n//# sourceMappingURL=first.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function distinctUntilChanged(compare, keySelector) {\n return function (source) { return source.lift(new DistinctUntilChangedOperator(compare, keySelector)); };\n}\nvar DistinctUntilChangedOperator = /*@__PURE__*/ (function () {\n function DistinctUntilChangedOperator(compare, keySelector) {\n this.compare = compare;\n this.keySelector = keySelector;\n }\n DistinctUntilChangedOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n };\n return DistinctUntilChangedOperator;\n}());\nvar DistinctUntilChangedSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DistinctUntilChangedSubscriber, _super);\n function DistinctUntilChangedSubscriber(destination, compare, keySelector) {\n var _this = _super.call(this, destination) || this;\n _this.keySelector = keySelector;\n _this.hasKey = false;\n if (typeof compare === 'function') {\n _this.compare = compare;\n }\n return _this;\n }\n DistinctUntilChangedSubscriber.prototype.compare = function (x, y) {\n return x === y;\n };\n DistinctUntilChangedSubscriber.prototype._next = function (value) {\n var key;\n try {\n var keySelector = this.keySelector;\n key = keySelector ? keySelector(value) : value;\n }\n catch (err) {\n return this.destination.error(err);\n }\n var result = false;\n if (this.hasKey) {\n try {\n var compare = this.compare;\n result = compare(this.key, key);\n }\n catch (err) {\n return this.destination.error(err);\n }\n }\n else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n };\n return DistinctUntilChangedSubscriber;\n}(Subscriber));\n//# sourceMappingURL=distinctUntilChanged.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function takeWhile(predicate, inclusive) {\n if (inclusive === void 0) {\n inclusive = false;\n }\n return function (source) {\n return source.lift(new TakeWhileOperator(predicate, inclusive));\n };\n}\nvar TakeWhileOperator = /*@__PURE__*/ (function () {\n function TakeWhileOperator(predicate, inclusive) {\n this.predicate = predicate;\n this.inclusive = inclusive;\n }\n TakeWhileOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive));\n };\n return TakeWhileOperator;\n}());\nvar TakeWhileSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeWhileSubscriber, _super);\n function TakeWhileSubscriber(destination, predicate, inclusive) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.inclusive = inclusive;\n _this.index = 0;\n return _this;\n }\n TakeWhileSubscriber.prototype._next = function (value) {\n var destination = this.destination;\n var result;\n try {\n result = this.predicate(value, this.index++);\n }\n catch (err) {\n destination.error(err);\n return;\n }\n this.nextOrComplete(value, result);\n };\n TakeWhileSubscriber.prototype.nextOrComplete = function (value, predicateResult) {\n var destination = this.destination;\n if (Boolean(predicateResult)) {\n destination.next(value);\n }\n else {\n if (this.inclusive) {\n destination.next(value);\n }\n destination.complete();\n }\n };\n return TakeWhileSubscriber;\n}(Subscriber));\n//# sourceMappingURL=takeWhile.js.map\n","/** PURE_IMPORTS_START tslib,_map,_observable_from,_innerSubscribe PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function switchMap(project, resultSelector) {\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(switchMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); })); };\n }\n return function (source) { return source.lift(new SwitchMapOperator(project)); };\n}\nvar SwitchMapOperator = /*@__PURE__*/ (function () {\n function SwitchMapOperator(project) {\n this.project = project;\n }\n SwitchMapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n };\n return SwitchMapOperator;\n}());\nvar SwitchMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SwitchMapSubscriber, _super);\n function SwitchMapSubscriber(destination, project) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.index = 0;\n return _this;\n }\n SwitchMapSubscriber.prototype._next = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result);\n };\n SwitchMapSubscriber.prototype._innerSub = function (result) {\n var innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n var innerSubscriber = new SimpleInnerSubscriber(this);\n var destination = this.destination;\n destination.add(innerSubscriber);\n this.innerSubscription = innerSubscribe(result, innerSubscriber);\n if (this.innerSubscription !== innerSubscriber) {\n destination.add(this.innerSubscription);\n }\n };\n SwitchMapSubscriber.prototype._complete = function () {\n var innerSubscription = this.innerSubscription;\n if (!innerSubscription || innerSubscription.closed) {\n _super.prototype._complete.call(this);\n }\n this.unsubscribe();\n };\n SwitchMapSubscriber.prototype._unsubscribe = function () {\n this.innerSubscription = undefined;\n };\n SwitchMapSubscriber.prototype.notifyComplete = function () {\n this.innerSubscription = undefined;\n if (this.isStopped) {\n _super.prototype._complete.call(this);\n }\n };\n SwitchMapSubscriber.prototype.notifyNext = function (innerValue) {\n this.destination.next(innerValue);\n };\n return SwitchMapSubscriber;\n}(SimpleOuterSubscriber));\n//# sourceMappingURL=switchMap.js.map\n","/** PURE_IMPORTS_START _distinctUntilChanged PURE_IMPORTS_END */\nimport { distinctUntilChanged } from './distinctUntilChanged';\nexport function distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; });\n}\n//# sourceMappingURL=distinctUntilKeyChanged.js.map\n","/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_innerSubscribe PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\nexport function timeoutWith(due, withObservable, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return function (source) {\n var absoluteTimeout = isDate(due);\n var waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));\n };\n}\nvar TimeoutWithOperator = /*@__PURE__*/ (function () {\n function TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler) {\n this.waitFor = waitFor;\n this.absoluteTimeout = absoluteTimeout;\n this.withObservable = withObservable;\n this.scheduler = scheduler;\n }\n TimeoutWithOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler));\n };\n return TimeoutWithOperator;\n}());\nvar TimeoutWithSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TimeoutWithSubscriber, _super);\n function TimeoutWithSubscriber(destination, absoluteTimeout, waitFor, withObservable, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.absoluteTimeout = absoluteTimeout;\n _this.waitFor = waitFor;\n _this.withObservable = withObservable;\n _this.scheduler = scheduler;\n _this.scheduleTimeout();\n return _this;\n }\n TimeoutWithSubscriber.dispatchTimeout = function (subscriber) {\n var withObservable = subscriber.withObservable;\n subscriber._unsubscribeAndRecycle();\n subscriber.add(innerSubscribe(withObservable, new SimpleInnerSubscriber(subscriber)));\n };\n TimeoutWithSubscriber.prototype.scheduleTimeout = function () {\n var action = this.action;\n if (action) {\n this.action = action.schedule(this, this.waitFor);\n }\n else {\n this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this));\n }\n };\n TimeoutWithSubscriber.prototype._next = function (value) {\n if (!this.absoluteTimeout) {\n this.scheduleTimeout();\n }\n _super.prototype._next.call(this, value);\n };\n TimeoutWithSubscriber.prototype._unsubscribe = function () {\n this.action = undefined;\n this.scheduler = null;\n this.withObservable = null;\n };\n return TimeoutWithSubscriber;\n}(SimpleOuterSubscriber));\n//# sourceMappingURL=timeoutWith.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\n//# sourceMappingURL=isDate.js.map\n","/** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */\nimport { mergeMap } from './mergeMap';\nexport function concatMap(project, resultSelector) {\n return mergeMap(project, resultSelector, 1);\n}\n//# sourceMappingURL=concatMap.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function mapTo(value) {\n return function (source) { return source.lift(new MapToOperator(value)); };\n}\nvar MapToOperator = /*@__PURE__*/ (function () {\n function MapToOperator(value) {\n this.value = value;\n }\n MapToOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapToSubscriber(subscriber, this.value));\n };\n return MapToOperator;\n}());\nvar MapToSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapToSubscriber, _super);\n function MapToSubscriber(destination, value) {\n var _this = _super.call(this, destination) || this;\n _this.value = value;\n return _this;\n }\n MapToSubscriber.prototype._next = function (x) {\n this.destination.next(this.value);\n };\n return MapToSubscriber;\n}(Subscriber));\n//# sourceMappingURL=mapTo.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function retry(count) {\n if (count === void 0) {\n count = -1;\n }\n return function (source) { return source.lift(new RetryOperator(count, source)); };\n}\nvar RetryOperator = /*@__PURE__*/ (function () {\n function RetryOperator(count, source) {\n this.count = count;\n this.source = source;\n }\n RetryOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source));\n };\n return RetryOperator;\n}());\nvar RetrySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RetrySubscriber, _super);\n function RetrySubscriber(destination, count, source) {\n var _this = _super.call(this, destination) || this;\n _this.count = count;\n _this.source = source;\n return _this;\n }\n RetrySubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _a = this, source = _a.source, count = _a.count;\n if (count === 0) {\n return _super.prototype.error.call(this, err);\n }\n else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n };\n return RetrySubscriber;\n}(Subscriber));\n//# sourceMappingURL=retry.js.map\n","/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { innerSubscribe, SimpleInnerSubscriber, SimpleOuterSubscriber } from '../innerSubscribe';\nexport function takeUntil(notifier) {\n return function (source) { return source.lift(new TakeUntilOperator(notifier)); };\n}\nvar TakeUntilOperator = /*@__PURE__*/ (function () {\n function TakeUntilOperator(notifier) {\n this.notifier = notifier;\n }\n TakeUntilOperator.prototype.call = function (subscriber, source) {\n var takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n var notifierSubscription = innerSubscribe(this.notifier, new SimpleInnerSubscriber(takeUntilSubscriber));\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n };\n return TakeUntilOperator;\n}());\nvar TakeUntilSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeUntilSubscriber, _super);\n function TakeUntilSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.seenValue = false;\n return _this;\n }\n TakeUntilSubscriber.prototype.notifyNext = function () {\n this.seenValue = true;\n this.complete();\n };\n TakeUntilSubscriber.prototype.notifyComplete = function () {\n };\n return TakeUntilSubscriber;\n}(SimpleOuterSubscriber));\n//# sourceMappingURL=takeUntil.js.map\n","/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n var operator = new CatchOperator(selector);\n var caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nvar CatchOperator = /*@__PURE__*/ (function () {\n function CatchOperator(selector) {\n this.selector = selector;\n }\n CatchOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n };\n return CatchOperator;\n}());\nvar CatchSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CatchSubscriber, _super);\n function CatchSubscriber(destination, selector, caught) {\n var _this = _super.call(this, destination) || this;\n _this.selector = selector;\n _this.caught = caught;\n return _this;\n }\n CatchSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var result = void 0;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n _super.prototype.error.call(this, err2);\n return;\n }\n this._unsubscribeAndRecycle();\n var innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n var innerSubscription = innerSubscribe(result, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n }\n }\n };\n return CatchSubscriber;\n}(SimpleOuterSubscriber));\n//# sourceMappingURL=catchError.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function refCount() {\n return function refCountOperatorFunction(source) {\n return source.lift(new RefCountOperator(source));\n };\n}\nvar RefCountOperator = /*@__PURE__*/ (function () {\n function RefCountOperator(connectable) {\n this.connectable = connectable;\n }\n RefCountOperator.prototype.call = function (subscriber, source) {\n var connectable = this.connectable;\n connectable._refCount++;\n var refCounter = new RefCountSubscriber(subscriber, connectable);\n var subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n };\n return RefCountOperator;\n}());\nvar RefCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RefCountSubscriber, _super);\n function RefCountSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n RefCountSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n var refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n var connection = this.connection;\n var sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n };\n return RefCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=refCount.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_Observable,_Subscriber,_Subscription,_operators_refCount PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { SubjectSubscriber } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nvar ConnectableObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ConnectableObservable, _super);\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._refCount = 0;\n _this._isComplete = false;\n return _this;\n }\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n };\n ConnectableObservable.prototype.connect = function () {\n var connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return higherOrderRefCount()(this);\n };\n return ConnectableObservable;\n}(Observable));\nexport { ConnectableObservable };\nexport var connectableObservableDescriptor = /*@__PURE__*/ (function () {\n var connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null, writable: true },\n _connection: { value: null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\nvar ConnectableSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ConnectableSubscriber, _super);\n function ConnectableSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n ConnectableSubscriber.prototype._error = function (err) {\n this._unsubscribe();\n _super.prototype._error.call(this, err);\n };\n ConnectableSubscriber.prototype._complete = function () {\n this.connectable._isComplete = true;\n this._unsubscribe();\n _super.prototype._complete.call(this);\n };\n ConnectableSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n var connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n };\n return ConnectableSubscriber;\n}(SubjectSubscriber));\nvar RefCountOperator = /*@__PURE__*/ (function () {\n function RefCountOperator(connectable) {\n this.connectable = connectable;\n }\n RefCountOperator.prototype.call = function (subscriber, source) {\n var connectable = this.connectable;\n connectable._refCount++;\n var refCounter = new RefCountSubscriber(subscriber, connectable);\n var subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n };\n return RefCountOperator;\n}());\nvar RefCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RefCountSubscriber, _super);\n function RefCountSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n RefCountSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n var refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n var connection = this.connection;\n var sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n };\n return RefCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=ConnectableObservable.js.map\n","/** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */\nimport { connectableObservableDescriptor } from '../observable/ConnectableObservable';\nexport function multicast(subjectOrSubjectFactory, selector) {\n return function multicastOperatorFunction(source) {\n var subjectFactory;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = subjectOrSubjectFactory;\n }\n else {\n subjectFactory = function subjectFactory() {\n return subjectOrSubjectFactory;\n };\n }\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n var connectable = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n return connectable;\n };\n}\nvar MulticastOperator = /*@__PURE__*/ (function () {\n function MulticastOperator(subjectFactory, selector) {\n this.subjectFactory = subjectFactory;\n this.selector = selector;\n }\n MulticastOperator.prototype.call = function (subscriber, source) {\n var selector = this.selector;\n var subject = this.subjectFactory();\n var subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n };\n return MulticastOperator;\n}());\nexport { MulticastOperator };\n//# sourceMappingURL=multicast.js.map\n","/** PURE_IMPORTS_START _ReplaySubject,_multicast PURE_IMPORTS_END */\nimport { ReplaySubject } from '../ReplaySubject';\nimport { multicast } from './multicast';\nexport function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) {\n if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') {\n scheduler = selectorOrScheduler;\n }\n var selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined;\n var subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n return function (source) { return multicast(function () { return subject; }, selector)(source); };\n}\n//# sourceMappingURL=publishReplay.js.map\n","/** PURE_IMPORTS_START _map PURE_IMPORTS_END */\nimport { map } from './map';\nexport function pluck() {\n var properties = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i] = arguments[_i];\n }\n var length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return function (source) { return map(plucker(properties, length))(source); };\n}\nfunction plucker(props, length) {\n var mapper = function (x) {\n var currentProp = x;\n for (var i = 0; i < length; i++) {\n var p = currentProp != null ? currentProp[props[i]] : undefined;\n if (p !== void 0) {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n };\n return mapper;\n}\n//# sourceMappingURL=pluck.js.map\n","// Michelson abstract syntax tree types https://tezos.gitlab.io/whitedoc/michelson.html#concrete-syntax\n\nexport type SourceReference = {\n first: number;\n last: number;\n macro?: Expr;\n};\n\nexport const sourceReference: unique symbol = Symbol(\"source_reference\");\n\nexport interface Node {\n [sourceReference]?: SourceReference;\n}\n\n/**\n * An AST node representing Michelson string literal.\n */\nexport interface StringLiteral extends Node {\n string: string;\n}\n\n/**\n * An AST node representing Michelson int literal.\n */\nexport interface IntLiteral<T extends string = string> extends Node {\n int: T;\n}\n\n/**\n * An AST node representing Michelson bytes literal.\n */\nexport interface BytesLiteral extends Node {\n bytes: string;\n}\n\n/**\n * An AST node representing Michelson primitive.\n */\nexport interface Prim<PT extends string = string, AT extends Expr[] = Expr[]> extends Node {\n prim: PT;\n args?: AT;\n annots?: string[];\n}\n\nexport type List<T extends Expr> = T[] & Node;\n\ninterface ExprList extends List<Expr> { }\n\n/**\n * An AST node representing valid Michelson expression. Directly corresponds to JSON-encoded Michelson node\n */\n\nexport type Expr = Prim | StringLiteral | IntLiteral | BytesLiteral | ExprList;\n","export class ScanError extends Error {\n constructor(public src: string, public idx: number, message?: string) {\n super(message);\n Object.setPrototypeOf(this, ScanError.prototype);\n }\n}\n\nexport enum Literal {\n Comment,\n Number,\n String,\n Bytes,\n Ident,\n}\n\nexport type TokenType = \"(\" | \")\" | \"{\" | \"}\" | \";\" | Literal;\n\nconst isSpace = new RegExp(\"\\\\s\");\nconst isIdentStart = new RegExp(\"[:@%_A-Za-z]\");\nconst isIdent = new RegExp(\"[@%_\\\\.A-Za-z0-9]\");\nconst isDigit = new RegExp(\"[0-9]\");\nconst isHex = new RegExp(\"[0-9a-fA-F]\");\n\nexport interface Token {\n t: TokenType;\n v: string;\n first: number;\n last: number;\n}\n\nexport function* scan(src: string, scanComments = false): Generator<Token, void> {\n let i = 0;\n while (i < src.length) {\n // Skip space\n while (i < src.length && isSpace.test(src[i])) {\n i++;\n }\n if (i === src.length) {\n return;\n }\n\n const s = src[i];\n const start = i;\n if (isIdentStart.test(s)) {\n // Identifier\n i++;\n while (i < src.length && isIdent.test(src[i])) {\n i++;\n }\n yield { t: Literal.Ident, v: src.slice(start, i), first: start, last: i };\n } else if (src.length - i > 1 && src.substr(i, 2) === \"0x\") {\n // Bytes\n i += 2;\n while (i < src.length && isHex.test(src[i])) {\n i++;\n }\n if (((i - start) & 1) !== 0) {\n throw new ScanError(src, i, \"Bytes literal length is expected to be power of two\");\n }\n yield { t: Literal.Bytes, v: src.slice(start, i), first: start, last: i };\n } else if (isDigit.test(s) || s === \"-\") {\n // Number\n if (s === \"-\") {\n i++;\n }\n const ii = i;\n while (i < src.length && isDigit.test(src[i])) {\n i++;\n }\n if (ii === i) {\n throw new ScanError(src, i, \"Number literal is too short\");\n }\n yield { t: Literal.Number, v: src.slice(start, i), first: start, last: i };\n } else if (s === \"\\\"\") {\n // String\n i++;\n let esc = false;\n for (; i < src.length && (esc || src[i] !== \"\\\"\"); i++) {\n if (!esc && src[i] === \"\\\\\") {\n esc = true;\n } else {\n esc = false;\n }\n }\n if (i === src.length) {\n throw new ScanError(src, i, \"Unterminated string literal\");\n }\n i++;\n yield { t: Literal.String, v: src.slice(start, i), first: start, last: i };\n } else if (s === \"#\") {\n // Comment\n i++;\n while (i < src.length && src[i] !== \"\\n\") {\n i++;\n }\n if (scanComments) {\n yield { t: Literal.Comment, v: src.slice(start, i), first: start, last: i };\n }\n } else if (src.length - i > 1 && src.substr(i, 2) === \"/*\") {\n // C style comment\n i += 2;\n while (i < src.length && !(src.length - i > 1 && src.substr(i, 2) === \"*/\")) {\n i++;\n }\n if (i === src.length) {\n throw new ScanError(src, i, \"Unterminated C style comment\");\n }\n i += 2;\n if (scanComments) {\n yield { t: Literal.Comment, v: src.slice(start, i), first: start, last: i };\n }\n } else if (s === \"(\" || s === \")\" || s === \"{\" || s === \"}\" || s === \";\") {\n i++;\n yield { t: s, v: s, first: start, last: i };\n } else {\n throw new ScanError(src, i, `Invalid character at offset ${i}: \\`${s}'`);\n }\n }\n}","import { Prim, Expr, IntLiteral, StringLiteral, BytesLiteral, List, Node } from \"./micheline\";\n\ninterface Prim0<PT extends string = string> extends Prim<PT> {\n args?: never;\n}\ninterface PrimX<PT extends string = string, AT extends Expr[] = Expr[]> extends Prim<PT, AT> {\n args: AT;\n}\n\n// Instructions\ntype MichelsonNoArgInstructionID = \"ABS\" | \"ADD\" | \"ADDRESS\" | \"AMOUNT\" | \"AND\" | \"APPLY\" | \"BALANCE\" |\n \"BLAKE2B\" | \"CAR\" | \"CDR\" | \"CHAIN_ID\" | \"CHECK_SIGNATURE\" | \"COMPARE\" | \"CONCAT\" | \"CONS\" | \"EDIV\" |\n \"EQ\" | \"EXEC\" | \"FAILWITH\" | \"GE\" | \"GET_AND_UPDATE\" | \"GT\" | \"HASH_KEY\" | \"IMPLICIT_ACCOUNT\" |\n \"INT\" | \"ISNAT\" | \"JOIN_TICKETS\" | \"KECCAK\" | \"LE\" | \"LEVEL\" | \"LSL\" | \"LSR\" | \"LT\" | \"MEM\" | \"MUL\" |\n \"NEG\" | \"NEQ\" | \"NEVER\" | \"NOT\" | \"NOW\" | \"OR\" | \"PACK\" | \"PAIRING_CHECK\" | \"READ_TICKET\" |\n \"SAPLING_VERIFY_UPDATE\" | \"SELF\" | \"SELF_ADDRESS\" | \"SENDER\" | \"SET_DELEGATE\" | \"SHA256\" | \"SHA3\" |\n \"SHA512\" | \"SIZE\" | \"SLICE\" | \"SOME\" | \"SOURCE\" | \"SPLIT_TICKET\" | \"SUB\" | \"SWAP\" | \"TICKET\" |\n \"TOTAL_VOTING_POWER\" | \"TRANSFER_TOKENS\" | \"UNIT\" | \"VOTING_POWER\" | \"XOR\" | \"RENAME\";\n\ntype MichelsonRegularInstructionID = \"CONTRACT\" | \"CREATE_CONTRACT\" | \"DIG\" | \"DIP\" | \"DROP\" |\n \"DUG\" | \"DUP\" | \"EMPTY_BIG_MAP\" | \"EMPTY_MAP\" | \"EMPTY_SET\" | \"GET\" | \"IF\" | \"IF_CONS\" | \"IF_LEFT\" |\n \"IF_NONE\" | \"ITER\" | \"LAMBDA\" | \"LEFT\" | \"LOOP\" | \"LOOP_LEFT\" | \"MAP\" | \"NIL\" | \"NONE\" | \"PAIR\" |\n \"PUSH\" | \"RIGHT\" | \"SAPLING_EMPTY_STATE\" | \"UNPACK\" | \"UNPAIR\" | \"UPDATE\" | \"CAST\" |\n // legacy\n \"CREATE_ACCOUNT\" | \"STEPS_TO_QUOTA\";\n\nexport type MichelsonInstructionID = MichelsonNoArgInstructionID | MichelsonRegularInstructionID;\ntype InstrPrim<PT extends MichelsonInstructionID, AT extends Expr[]> = Prim<PT, AT>;\ntype Instr0<PT extends MichelsonNoArgInstructionID> = Prim0<PT>;\ntype InstrX<PT extends MichelsonRegularInstructionID, AT extends Expr[]> = PrimX<PT, AT>;\n\nexport type MichelsonCode = InstructionList | MichelsonInstruction;\nexport interface InstructionList extends List<MichelsonCode> { }\n\nexport type MichelsonNoArgInstruction = Instr0<MichelsonNoArgInstructionID>;\nexport type MichelsonInstruction =\n MichelsonNoArgInstruction |\n InstrX<\"DIG\" | \"DUG\" | \"SAPLING_EMPTY_STATE\", [IntLiteral]> |\n InstrX<\"NONE\" | \"LEFT\" | \"RIGHT\" | \"NIL\" | \"CAST\", [MichelsonType]> |\n InstrX<\"IF_NONE\" | \"IF_LEFT\" | \"IF_CONS\" | \"IF\", [InstructionList, InstructionList]> |\n InstrX<\"MAP\" | \"ITER\" | \"LOOP\" | \"LOOP_LEFT\" | \"DIP\", [InstructionList]> |\n InstrX<\"UNPACK\", [MichelsonType]> |\n InstrX<\"CONTRACT\", [MichelsonType]> |\n InstrX<\"CREATE_CONTRACT\", [MichelsonContract]> |\n InstrX<\"PUSH\", [MichelsonType, MichelsonData]> |\n InstrX<\"EMPTY_SET\", [MichelsonType]> |\n InstrX<\"EMPTY_MAP\", [MichelsonType, MichelsonType]> |\n InstrX<\"EMPTY_BIG_MAP\", [MichelsonType, MichelsonType]> |\n InstrX<\"LAMBDA\", [MichelsonType, MichelsonType, InstructionList]> |\n InstrX<\"DIP\", [IntLiteral, InstructionList] | [InstructionList]> |\n InstrPrim<\"DROP\" | \"PAIR\" | \"UNPAIR\" | \"DUP\" | \"GET\" | \"UPDATE\", [IntLiteral]>;\n\n// Types\n\nexport type MichelsonSimpleComparableTypeID = \"string\" | \"nat\" | \"int\" | \"bytes\" | \"bool\" | \"mutez\" |\n \"key_hash\" | \"address\" | \"timestamp\" | \"never\" | \"key\" | \"unit\" | \"signature\" | \"chain_id\";\n\nexport type MichelsonTypeID = MichelsonSimpleComparableTypeID |\n \"option\" | \"list\" | \"set\" | \"contract\" | \"operation\" | \"pair\" | \"or\" | \"lambda\" | \"map\" | \"big_map\" |\n \"sapling_transaction\" | \"sapling_state\" | \"ticket\" | \"bls12_381_g1\" | \"bls12_381_g2\" | \"bls12_381_fr\";\n\ntype Type0<PT extends MichelsonTypeID> = Prim0<PT>;\ntype TypeX<PT extends MichelsonTypeID, AT extends Expr[]> = PrimX<PT, AT>;\n\n// Michelson types\n\nexport const refContract: unique symbol = Symbol(\"ref_contract\");\nexport interface MichelsonTypeAddress extends Type0<\"address\"> {\n [refContract]?: MichelsonTypeContract<MichelsonType>;\n}\n\nexport type MichelsonTypeInt = Type0<\"int\">;\nexport type MichelsonTypeNat = Type0<\"nat\">;\nexport type MichelsonTypeString = Type0<\"string\">;\nexport type MichelsonTypeBytes = Type0<\"bytes\">;\nexport type MichelsonTypeMutez = Type0<\"mutez\">;\nexport type MichelsonTypeBool = Type0<\"bool\">;\nexport type MichelsonTypeKeyHash = Type0<\"key_hash\">;\nexport type MichelsonTypeTimestamp = Type0<\"timestamp\">;\nexport type MichelsonTypeKey = Type0<\"key\">;\nexport type MichelsonTypeUnit = Type0<\"unit\">;\nexport type MichelsonTypeSignature = Type0<\"signature\">;\nexport type MichelsonTypeOperation = Type0<\"operation\">;\nexport type MichelsonTypeChainID = Type0<\"chain_id\">;\nexport type MichelsonTypeNever = Type0<\"never\">;\nexport type MichelsonTypeBLS12_381_G1 = Type0<\"bls12_381_g1\">;\nexport type MichelsonTypeBLS12_381_G2 = Type0<\"bls12_381_g2\">;\nexport type MichelsonTypeBLS12_381_FR = Type0<\"bls12_381_fr\">;\n\ntype TypeList<T extends MichelsonType[]> = T & Node;\nexport type MichelsonTypePair<T extends MichelsonType[]> = TypeX<\"pair\", T> | TypeList<T>;\n\nexport interface MichelsonTypeOption<T extends MichelsonType> extends TypeX<\"option\", [T]> { }\nexport interface MichelsonTypeList<T extends MichelsonType> extends TypeX<\"list\", [T]> { }\nexport interface MichelsonTypeContract<T extends MichelsonType> extends TypeX<\"contract\", [T]> { }\nexport interface MichelsonTypeOr<T extends [MichelsonType, MichelsonType]> extends TypeX<\"or\", T> { }\nexport interface MichelsonTypeLambda<Arg extends MichelsonType, Ret extends MichelsonType> extends TypeX<\"lambda\", [Arg, Ret]> { }\nexport interface MichelsonTypeSet<T extends MichelsonType> extends TypeX<\"set\", [T]> { }\nexport interface MichelsonTypeMap<K extends MichelsonType, V extends MichelsonType> extends TypeX<\"map\", [K, V]> { }\nexport interface MichelsonTypeBigMap<K extends MichelsonType, V extends MichelsonType> extends TypeX<\"big_map\", [K, V]> { }\nexport interface MichelsonTypeSaplingState<S extends string = string> extends TypeX<\"sapling_state\", [IntLiteral<S>]> { }\nexport interface MichelsonTypeSaplingTransaction<S extends string = string> extends TypeX<\"sapling_transaction\", [IntLiteral<S>]> { }\nexport interface MichelsonTypeTicket<T extends MichelsonType> extends TypeX<\"ticket\", [T]> { }\n\nexport type MichelsonType<T extends MichelsonTypeID = MichelsonTypeID> =\n T extends \"int\" ? MichelsonTypeInt :\n T extends \"nat\" ? MichelsonTypeNat :\n T extends \"string\" ? MichelsonTypeString :\n T extends \"bytes\" ? MichelsonTypeBytes :\n T extends \"mutez\" ? MichelsonTypeMutez :\n T extends \"bool\" ? MichelsonTypeBool :\n T extends \"key_hash\" ? MichelsonTypeKeyHash :\n T extends \"timestamp\" ? MichelsonTypeTimestamp :\n T extends \"address\" ? MichelsonTypeAddress :\n T extends \"key\" ? MichelsonTypeKey :\n T extends \"unit\" ? MichelsonTypeUnit :\n T extends \"signature\" ? MichelsonTypeSignature :\n T extends \"operation\" ? MichelsonTypeOperation :\n T extends \"chain_id\" ? MichelsonTypeChainID :\n T extends \"option\" ? MichelsonTypeOption<MichelsonType> :\n T extends \"list\" ? MichelsonTypeList<MichelsonType> :\n T extends \"contract\" ? MichelsonTypeContract<MichelsonType> :\n T extends \"ticket\" ? MichelsonTypeTicket<MichelsonType> :\n T extends \"pair\" ? MichelsonTypePair<MichelsonType[]> :\n T extends \"or\" ? MichelsonTypeOr<[MichelsonType, MichelsonType]> :\n T extends \"lambda\" ? MichelsonTypeLambda<MichelsonType, MichelsonType> :\n T extends \"set\" ? MichelsonTypeSet<MichelsonType> :\n T extends \"map\" ? MichelsonTypeMap<MichelsonType, MichelsonType> :\n T extends \"big_map\" ? MichelsonTypeBigMap<MichelsonType, MichelsonType> :\n T extends \"never\" ? MichelsonTypeNever :\n T extends \"bls12_381_g1\" ? MichelsonTypeBLS12_381_G1 :\n T extends \"bls12_381_g2\" ? MichelsonTypeBLS12_381_G2 :\n T extends \"bls12_381_fr\" ? MichelsonTypeBLS12_381_FR :\n T extends \"sapling_transaction\" ? MichelsonTypeSaplingTransaction :\n MichelsonTypeSaplingState;\n\n// Data\n\nexport type MichelsonDataID = \"Unit\" | \"True\" | \"False\" | \"None\" | \"Pair\" | \"Left\" | \"Right\" | \"Some\";\n\ntype Data0<PT extends MichelsonDataID> = Prim0<PT>;\ntype DataX<PT extends MichelsonDataID, AT extends MichelsonData[]> = PrimX<PT, AT>;\n\nexport type MichelsonDataOption = DataX<\"Some\", [MichelsonData]> | Data0<\"None\">;\nexport type MichelsonDataOr = DataX<\"Left\" | \"Right\", [MichelsonData]>;\ntype DataList<T extends MichelsonData[]> = T & Node;\nexport type MichelsonDataPair<T extends MichelsonData[]> = DataX<\"Pair\", T> | DataList<T>;\nexport type MichelsonMapElt = PrimX<\"Elt\", [MichelsonData, MichelsonData]>;\nexport type MichelsonMapEltList = List<MichelsonMapElt>;\n\nexport type MichelsonData =\n IntLiteral |\n StringLiteral |\n BytesLiteral |\n Data0<\"Unit\" | \"True\" | \"False\"> |\n MichelsonDataOption |\n MichelsonDataOr |\n DataList<MichelsonData[]> |\n MichelsonDataPair<MichelsonData[]> |\n InstructionList |\n MichelsonMapEltList;\n\n// Top level script sections\n\nexport type MichelsonSectionID = \"parameter\" | \"storage\" | \"code\";\ntype SectionPrim<PT extends MichelsonSectionID, AT extends Expr[]> = PrimX<PT, AT>;\n\nexport type MichelsonContractParameter = SectionPrim<\"parameter\", [MichelsonType]>;\nexport type MichelsonContractStorage = SectionPrim<\"storage\", [MichelsonType]>;\nexport type MichelsonContractCode = SectionPrim<\"code\", [InstructionList]>;\n\nexport type MichelsonContract =\n [MichelsonContractParameter, MichelsonContractStorage, MichelsonContractCode] |\n [MichelsonContractParameter, MichelsonContractCode, MichelsonContractStorage] |\n [MichelsonContractStorage, MichelsonContractParameter, MichelsonContractCode] |\n [MichelsonContractStorage, MichelsonContractCode, MichelsonContractParameter] |\n [MichelsonContractCode, MichelsonContractStorage, MichelsonContractParameter] |\n [MichelsonContractCode, MichelsonContractParameter, MichelsonContractStorage];\n\nexport type MichelsonContractSection<T extends MichelsonSectionID> =\n T extends \"parameter\" ? MichelsonContractParameter :\n T extends \"storage\" ? MichelsonContractStorage : MichelsonContractCode;\n\n// Code analysis types \nexport interface MichelsonTypeFailed {\n failed: MichelsonType;\n}\n\nexport type MichelsonReturnType = MichelsonType[] | MichelsonTypeFailed;\n\nexport enum Protocol {\n Pt24m4xi = \"Pt24m4xiPbLDhVgVfABUjirbmda3yohdN82Sp9FeuAXJ4eV9otd\",\n PsBABY5H = \"PsBABY5HQTSkA4297zNHfsZNKtxULfL18y95qb3m53QJiXGmrbU\",\n PsBabyM1 = \"PsBabyM1eUXZseaJdmXFApDSBqj8YBfwELoxZHHW77EMcAbbwAS\",\n PsCARTHA = \"PsCARTHAGazKbHtnKfLzQg3kms52kSRpgnDY982a9oYsSXRLQEb\",\n PsDELPH1 = \"PsDELPH1Kxsxt8f9eWbxQeRxkjfbxoqM52jvs5Y5fBxWWh4ifpo\",\n PtEdo2Zk = 'PtEdo2ZkT9oKpimTah6x2embF25oss54njMuPzkJTEi5RqfdZFA',\n PsFLorena = 'PsFLorenaUUuikDWvMDr6fGBRG8kt3e3D3fHoXK1j1BFRxeSH4i',\n PtGRANADs = 'PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV'\n}\n\nexport const DefaultProtocol = Protocol.PsDELPH1;\n\nexport type ProtocolID = `${Protocol}`;\n\nexport interface ProtocolOptions {\n protocol?: ProtocolID;\n}","import { Prim, Expr, IntLiteral } from \"./micheline\";\nimport { DefaultProtocol, Protocol, ProtocolOptions } from \"./michelson-types\";\nimport { Tuple, NoArgs, ReqArgs, NoAnnots } from \"./utils\";\n\nexport class MacroError extends Error {\n constructor(public prim: Prim, message?: string) {\n super(message);\n Object.setPrototypeOf(this, MacroError.prototype);\n }\n}\n\nfunction assertArgs<N extends number>(ex: Prim, n: N):\n ex is N extends 0 ?\n NoArgs<Prim<string>> :\n ReqArgs<Prim<string, Tuple<N, Expr>>> {\n if ((n === 0 && ex.args === undefined) || ex.args?.length === n) {\n return true;\n }\n throw new MacroError(ex, `macro ${ex.prim} expects ${n} arguments, was given ${ex.args?.length}`);\n}\n\nfunction assertNoAnnots(ex: Prim): ex is NoAnnots<Prim> {\n if (ex.annots === undefined) {\n return true;\n }\n throw new MacroError(ex, `unexpected annotation on macro ${ex.prim}: ${ex.annots}`);\n}\n\nfunction assertIntArg(ex: Prim, arg: Expr): arg is IntLiteral {\n if (\"int\" in arg) {\n return true;\n }\n throw new MacroError(ex, `macro ${ex.prim} expects int argument`);\n}\n\ntype PT = [number, [string | null, string | null]];\n\nfunction parsePairUnpairExpr(p: Prim, expr: string, annotations: string[], agg: (l: PT[] | undefined, r: PT[] | undefined, top: PT) => PT[]): { r: PT[], n: number, an: number } {\n let i = 0;\n let ai = 0;\n const ann: [string | null, string | null] = [null, null];\n\n // Left expression\n let lexpr: PT[] | undefined;\n if (i === expr.length) {\n throw new MacroError(p, `unexpected end: ${p.prim}`);\n }\n let c = expr[i++];\n switch (c) {\n case \"P\":\n const { r, n, an } = parsePairUnpairExpr(p, expr.slice(i), annotations.slice(ai), agg);\n lexpr = r;\n i += n;\n ai += an;\n break;\n case \"A\":\n if (ai !== annotations.length) {\n ann[0] = annotations[ai++];\n }\n break;\n default:\n throw new MacroError(p, `${p.prim}: unexpected character: ${c}`);\n }\n\n // Right expression\n let rexpr: PT[] | undefined;\n if (i === expr.length) {\n throw new MacroError(p, `unexpected end: ${p.prim}`);\n }\n c = expr[i++];\n switch (c) {\n case \"P\":\n const { r, n, an } = parsePairUnpairExpr(p, expr.slice(i), annotations.slice(ai), agg);\n rexpr = r.map<PT>(([v, a]) => [v + 1, a]);\n i += n;\n ai += an;\n break;\n case \"I\":\n if (ai !== annotations.length) {\n ann[1] = annotations[ai++];\n }\n break;\n default:\n throw new MacroError(p, `${p.prim}: unexpected character: ${c}`);\n }\n\n return { r: agg(lexpr, rexpr, [0, ann]), n: i, an: ai };\n}\n\nfunction parseSetMapCadr(p: Prim, expr: string, vann: string[], term: { a: Expr, d: Expr }): Expr {\n const c = expr[0];\n switch (c) {\n case \"A\":\n return expr.length > 1 ?\n [\n { prim: \"DUP\" },\n {\n prim: \"DIP\",\n args: [[\n { prim: \"CAR\", annots: [\"@%%\"] },\n parseSetMapCadr(p, expr.slice(1), [], term),\n ]],\n },\n { prim: \"CDR\", annots: [\"@%%\"] },\n { prim: \"SWAP\" },\n { prim: \"PAIR\", annots: [\"%@\", \"%@\", ...vann] },\n ] : term.a;\n\n case \"D\":\n return expr.length > 1 ?\n [\n { prim: \"DUP\" },\n {\n prim: \"DIP\",\n args: [[\n { prim: \"CDR\", annots: [\"@%%\"] },\n parseSetMapCadr(p, expr.slice(1), [], term),\n ]],\n },\n { prim: \"CAR\", annots: [\"@%%\"] },\n { prim: \"PAIR\", annots: [\"%@\", \"%@\", ...vann] },\n ] : term.d;\n\n default:\n throw new MacroError(p, `${p.prim}: unexpected character: ${c}`);\n }\n}\n\nfunction trimLast<T>(a: T[], v: T): T[] {\n let l = a.length;\n while (l > 0 && a[l - 1] === v) {\n l--;\n }\n return a.slice(0, l);\n}\n\nfunction filterAnnotations(a?: string[]): {\n fields: string[];\n rest: string[];\n} {\n const fields: string[] = [];\n const rest: string[] = [];\n if (a !== undefined) {\n for (const v of a) {\n (v.length !== 0 && v[0] === \"%\" ? fields : rest).push(v);\n }\n }\n return { fields, rest };\n}\n\nfunction mkPrim({ prim, annots, args }: Prim): Prim {\n return {\n prim,\n ...(annots && { annots }),\n ...(args && { args }),\n };\n}\n\nconst pairRe = /^P[PAI]{3,}R$/;\nconst unpairRe = /^UNP[PAI]{2,}R$/;\nconst cadrRe = /^C[AD]{2,}R$/;\nconst setCadrRe = /^SET_C[AD]+R$/;\nconst mapCadrRe = /^MAP_C[AD]+R$/;\nconst diipRe = /^DI{2,}P$/;\nconst duupRe = /^DU+P$/;\n\nexport function expandMacros(ex: Prim, opt?: ProtocolOptions): Expr {\n const proto = opt?.protocol || DefaultProtocol;\n\n function mayRename(annots?: string[]): Prim[] {\n return annots !== undefined ? [{ prim: \"RENAME\", annots }] : [];\n }\n\n switch (ex.prim) {\n // Compare\n case \"CMPEQ\":\n case \"CMPNEQ\":\n case \"CMPLT\":\n case \"CMPGT\":\n case \"CMPLE\":\n case \"CMPGE\":\n if (assertArgs(ex, 0)) {\n return [\n { prim: \"COMPARE\" },\n mkPrim({ prim: ex.prim.slice(3), annots: ex.annots }),\n ];\n }\n break;\n\n case \"IFEQ\":\n case \"IFNEQ\":\n case \"IFLT\":\n case \"IFGT\":\n case \"IFLE\":\n case \"IFGE\":\n if (assertArgs(ex, 2)) {\n return [\n { prim: ex.prim.slice(2) },\n mkPrim({ prim: \"IF\", annots: ex.annots, args: ex.args }),\n ];\n }\n break;\n\n case \"IFCMPEQ\":\n case \"IFCMPNEQ\":\n case \"IFCMPLT\":\n case \"IFCMPGT\":\n case \"IFCMPLE\":\n case \"IFCMPGE\":\n if (assertArgs(ex, 2)) {\n return [\n { prim: \"COMPARE\" },\n { prim: ex.prim.slice(5) },\n mkPrim({ prim: \"IF\", annots: ex.annots, args: ex.args }),\n ];\n }\n break;\n\n // Fail\n case \"FAIL\":\n if (assertArgs(ex, 0) && assertNoAnnots(ex)) {\n return [\n { prim: \"UNIT\" },\n { prim: \"FAILWITH\" },\n ];\n }\n break;\n\n // Assertion macros\n case \"ASSERT\":\n if (assertArgs(ex, 0) && assertNoAnnots(ex)) {\n return [{\n prim: \"IF\", args: [\n [],\n [[{ prim: \"UNIT\" }, { prim: \"FAILWITH\" }]],\n ]\n }];\n }\n break;\n\n case \"ASSERT_EQ\":\n case \"ASSERT_NEQ\":\n case \"ASSERT_LT\":\n case \"ASSERT_GT\":\n case \"ASSERT_LE\":\n case \"ASSERT_GE\":\n if (assertArgs(ex, 0) && assertNoAnnots(ex)) {\n return [\n { prim: ex.prim.slice(7) },\n {\n prim: \"IF\", args: [\n [],\n [[{ prim: \"UNIT\" }, { prim: \"FAILWITH\" }]],\n ]\n },\n ];\n }\n break;\n\n case \"ASSERT_CMPEQ\":\n case \"ASSERT_CMPNEQ\":\n case \"ASSERT_CMPLT\":\n case \"ASSERT_CMPGT\":\n case \"ASSERT_CMPLE\":\n case \"ASSERT_CMPGE\":\n if (assertArgs(ex, 0) && assertNoAnnots(ex)) {\n return [\n [\n { prim: \"COMPARE\" },\n { prim: ex.prim.slice(10) },\n ],\n {\n prim: \"IF\", args: [\n [],\n [[{ prim: \"UNIT\" }, { prim: \"FAILWITH\" }]],\n ]\n },\n ];\n }\n break;\n\n case \"ASSERT_NONE\":\n if (assertArgs(ex, 0) && assertNoAnnots(ex)) {\n return [{\n prim: \"IF_NONE\", args: [\n [],\n [[{ prim: \"UNIT\" }, { prim: \"FAILWITH\" }]],\n ]\n }];\n }\n break;\n\n case \"ASSERT_SOME\":\n if (assertArgs(ex, 0)) {\n return [{\n prim: \"IF_NONE\", args: [\n [[{ prim: \"UNIT\" }, { prim: \"FAILWITH\" }]],\n mayRename(ex.annots),\n ]\n }];\n }\n break;\n\n case \"ASSERT_LEFT\":\n if (assertArgs(ex, 0)) {\n return [{\n prim: \"IF_LEFT\", args: [\n mayRename(ex.annots),\n [[{ prim: \"UNIT\" }, { prim: \"FAILWITH\" }]],\n ]\n }];\n }\n break;\n\n case \"ASSERT_RIGHT\":\n if (assertArgs(ex, 0)) {\n return [{\n prim: \"IF_LEFT\", args: [\n [[{ prim: \"UNIT\" }, { prim: \"FAILWITH\" }]],\n mayRename(ex.annots),\n ]\n }];\n }\n break;\n\n // Syntactic conveniences\n\n case \"IF_SOME\":\n if (assertArgs(ex, 2)) {\n return [mkPrim({ prim: \"IF_NONE\", annots: ex.annots, args: [ex.args[1], ex.args[0]] })];\n }\n break;\n\n case \"IF_RIGHT\":\n if (assertArgs(ex, 2)) {\n return [mkPrim({ prim: \"IF_LEFT\", annots: ex.annots, args: [ex.args[1], ex.args[0]] })];\n }\n break;\n\n // CAR/CDR n\n case \"CAR\":\n case \"CDR\":\n if (ex.args !== undefined) {\n if (assertArgs(ex, 1) && assertIntArg(ex, ex.args[0])) {\n const n = parseInt(ex.args[0].int, 10);\n return mkPrim({\n prim: \"GET\",\n args: [{ int: ex.prim === \"CAR\" ? String(n * 2 + 1) : String(n * 2) }],\n annots: ex.annots,\n });\n }\n } else {\n return ex;\n }\n }\n\n // More syntactic conveniences\n\n // PAPPAIIR macro\n if (pairRe.test(ex.prim)) {\n if (assertArgs(ex, 0)) {\n const { fields, rest } = filterAnnotations(ex.annots);\n const { r } = parsePairUnpairExpr(ex, ex.prim.slice(1), fields, (l, r, top) => [...(l || []), ...(r || []), top]);\n\n return r.map(([v, a], i) => {\n const ann = [\n ...trimLast(a, null).map(v => v === null ? \"%\" : v),\n ...((v === 0 && i === r.length - 1) ? rest : [])];\n\n const leaf = mkPrim({ prim: \"PAIR\", annots: ann.length !== 0 ? ann : undefined, });\n\n return v === 0 ? leaf : {\n prim: \"DIP\",\n args: v === 1 ? [[leaf]] : [{ int: String(v) }, [leaf]],\n };\n });\n }\n }\n\n // UNPAPPAIIR macro\n if (unpairRe.test(ex.prim)) {\n if (proto === Protocol.PtEdo2Zk || proto === Protocol.PsFLorena || proto === Protocol.PtGRANADs) {\n if (ex.prim === \"UNPAIR\") {\n return ex;\n }\n if (assertArgs(ex, 0)) {\n // 008_edo: annotations are deprecated\n const { r } = parsePairUnpairExpr(ex, ex.prim.slice(3), [], (l, r, top) => [top, ...(r || []), ...(l || [])]);\n return r.map(([v]) => {\n const leaf = mkPrim({\n prim: \"UNPAIR\",\n });\n\n return v === 0 ? leaf : {\n prim: \"DIP\",\n args: v === 1 ? [[leaf]] : [{ int: String(v) }, [leaf]],\n };\n });\n }\n } else if (assertArgs(ex, 0)) {\n const { r } = parsePairUnpairExpr(ex, ex.prim.slice(3), ex.annots || [], (l, r, top) => [top, ...(r || []), ...(l || [])]);\n return r.map(([v, a]) => {\n const leaf: Prim[] = [\n { prim: \"DUP\" },\n mkPrim({ prim: \"CAR\", annots: a[0] !== null ? [a[0]] : undefined }),\n {\n prim: \"DIP\",\n args: [[mkPrim({ prim: \"CDR\", annots: a[1] !== null ? [a[1]] : undefined })]],\n }\n ];\n\n return v === 0 ? leaf : {\n prim: \"DIP\",\n args: v === 1 ? [[leaf]] : [{ int: String(v) }, [leaf]],\n };\n });\n }\n }\n\n // C[AD]+R macro\n if (cadrRe.test(ex.prim)) {\n if (assertArgs(ex, 0)) {\n const ch = [...ex.prim.slice(1, ex.prim.length - 1)];\n\n return ch.map<Prim>((c, i) => {\n const ann = i === ch.length - 1 ? ex.annots : undefined;\n switch (c) {\n case \"A\":\n return mkPrim({ prim: \"CAR\", annots: ann });\n case \"D\":\n return mkPrim({ prim: \"CDR\", annots: ann });\n default:\n throw new MacroError(ex, `unexpected character: ${c}`);\n }\n });\n }\n }\n\n // SET_C[AD]+R macro\n if (setCadrRe.test(ex.prim)) {\n if (assertArgs(ex, 0)) {\n const { fields, rest } = filterAnnotations(ex.annots);\n if (fields.length > 1) {\n throw new MacroError(ex, `unexpected annotation on macro ${ex.prim}: ${fields}`);\n }\n\n const term = fields.length !== 0 ?\n {\n a: [\n { prim: \"DUP\" },\n { prim: \"CAR\", annots: fields },\n { prim: \"DROP\" },\n { prim: \"CDR\", annots: [\"@%%\"] },\n { prim: \"SWAP\" },\n { prim: \"PAIR\", annots: [fields[0], \"%@\"] },\n ],\n d: [\n { prim: \"DUP\" },\n { prim: \"CDR\", annots: fields },\n { prim: \"DROP\" },\n { prim: \"CAR\", annots: [\"@%%\"] },\n { prim: \"PAIR\", annots: [\"%@\", fields[0]] },\n ],\n } :\n {\n a: [\n { prim: \"CDR\", annots: [\"@%%\"] },\n { prim: \"SWAP\" },\n { prim: \"PAIR\", annots: [\"%\", \"%@\"] },\n ],\n d: [\n { prim: \"CAR\", annots: [\"@%%\"] },\n { prim: \"PAIR\", annots: [\"%@\", \"%\"] },\n ],\n };\n\n return parseSetMapCadr(ex, ex.prim.slice(5, ex.prim.length - 1), rest, term);\n }\n }\n\n // MAP_C[AD]+R macro\n if (mapCadrRe.test(ex.prim)) {\n if (assertArgs(ex, 1)) {\n const { fields } = filterAnnotations(ex.annots);\n if (fields.length > 1) {\n throw new MacroError(ex, `unexpected annotation on macro ${ex.prim}: ${fields}`);\n }\n\n const term = {\n a: [\n { prim: \"DUP\" },\n { prim: \"CDR\", annots: [\"@%%\"] },\n {\n prim: \"DIP\", args: [[\n mkPrim({ prim: \"CAR\", annots: fields.length !== 0 ? [\"@\" + fields[0].slice(1)] : undefined }),\n ex.args[0],\n ]]\n },\n { prim: \"SWAP\" },\n { prim: \"PAIR\", annots: [fields.length !== 0 ? fields[0] : \"%\", \"%@\"] },\n ],\n d: [\n { prim: \"DUP\" },\n mkPrim({ prim: \"CDR\", annots: fields.length !== 0 ? [\"@\" + fields[0].slice(1)] : undefined }),\n ex.args[0],\n { prim: \"SWAP\" },\n { prim: \"CAR\", annots: [\"@%%\"] },\n { prim: \"PAIR\", annots: [\"%@\", fields.length !== 0 ? fields[0] : \"%\"] },\n ],\n };\n\n return parseSetMapCadr(ex, ex.prim.slice(5, ex.prim.length - 1), [], term);\n }\n }\n\n // Expand deprecated DI...IP to [DIP n]\n if (diipRe.test(ex.prim)) {\n if (assertArgs(ex, 1)) {\n let n = 0;\n while (ex.prim[1 + n] === \"I\") { n++; }\n return mkPrim({ prim: \"DIP\", args: [{ int: String(n) }, ex.args[0]] });\n }\n }\n\n // Expand DU...UP and DUP n\n if (duupRe.test(ex.prim)) {\n let n = 0;\n while (ex.prim[1 + n] === \"U\") { n++; }\n if (proto === Protocol.PtEdo2Zk || proto === Protocol.PsFLorena || proto === Protocol.PtGRANADs) {\n if (n === 1) {\n return ex;\n }\n if (assertArgs(ex, 0)) {\n return mkPrim({ prim: \"DUP\", args: [{ int: String(n) }], annots: ex.annots });\n }\n } else {\n if (n === 1) {\n if (ex.args === undefined) {\n return ex; // skip\n }\n if (assertArgs(ex, 1) && assertIntArg(ex, ex.args[0])) {\n n = parseInt(ex.args[0].int, 10);\n }\n } else {\n assertArgs(ex, 0);\n }\n\n if (n === 1) {\n return [mkPrim({ prim: \"DUP\", annots: ex.annots })];\n\n } else if (n === 2) {\n return [\n {\n prim: \"DIP\",\n args: [[mkPrim({ prim: \"DUP\", annots: ex.annots })]],\n },\n { prim: \"SWAP\" },\n ];\n\n } else {\n return [\n {\n prim: \"DIP\",\n args: [\n { int: String(n - 1) },\n [mkPrim({ prim: \"DUP\", annots: ex.annots })],\n ],\n },\n {\n prim: \"DIG\",\n args: [{ int: String(n) }],\n },\n ];\n }\n }\n }\n\n return ex;\n}","import { scan, Token, Literal } from './scan';\nimport { Expr, Prim, StringLiteral, IntLiteral, BytesLiteral, sourceReference, List, SourceReference } from './micheline';\nimport { expandMacros } from './macros';\nimport { ProtocolOptions } from './michelson-types';\n\nexport class MichelineParseError extends Error {\n /**\n * @param token A token caused the error\n * @param message An error message\n */\n constructor(public token: Token | null, message?: string) {\n super(message);\n Object.setPrototypeOf(this, MichelineParseError.prototype);\n }\n}\n\nexport class JSONParseError extends Error {\n /**\n * @param node A node caused the error\n * @param message An error message\n */\n constructor(public node: any, message?: string) {\n super(message);\n Object.setPrototypeOf(this, JSONParseError.prototype);\n }\n}\n\nconst errEOF = new MichelineParseError(null, 'Unexpected EOF');\n\nfunction isAnnotation(tok: Token): boolean {\n return tok.t === Literal.Ident && (tok.v[0] === '@' || tok.v[0] === '%' || tok.v[0] === ':');\n}\n\nconst intRe = new RegExp('^-?[0-9]+$');\nconst bytesRe = new RegExp('^([0-9a-fA-F]{2})*$');\n\nexport interface ParserOptions extends ProtocolOptions {\n /**\n * Expand [Michelson macros](https://tezos.gitlab.io/whitedoc/michelson.html#macros) during parsing.\n */\n expandMacros?: boolean;\n}\n\n/**\n * Converts and validates Michelson expressions between JSON-based Michelson and Micheline\n *\n * Pretty Print a Michelson Smart Contract:\n * ```\n * const contract = await Tezos.contract.at(\"KT1Vsw3kh9638gqWoHTjvHCoHLPKvCbMVbCg\");\n * const p = new Parser();\n *\n * const michelsonCode = p.parseJSON(contract.script.code);\n * const storage = p.parseJSON(contract.script.storage);\n *\n * console.log(\"Pretty print Michelson smart contract:\");\n * console.log(emitMicheline(michelsonCode, {indent:\" \", newline: \"\\n\",}));\n *\n * console.log(\"Pretty print Storage:\");\n * console.log(emitMicheline(storage, {indent:\" \", newline: \"\\n\",}));\n * ```\n *\n * Encode a Michelson expression for inital storage of a smart contract\n * ```\n * const src = `(Pair (Pair { Elt 1\n * (Pair (Pair \"tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN\" \"tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx\")\n * 0x0501000000026869) }\n * 10000000)\n * (Pair 2 333))`;\n *\n * const p = new Parser();\n *\n * const exp = p.parseMichelineExpression(src);\n * console.log(JSON.stringify(exp));\n * ```\n */\nexport class Parser {\n constructor(private opt?: ParserOptions) {\n }\n\n private expand(ex: Prim): Expr {\n if (this.opt?.expandMacros !== undefined ? this.opt?.expandMacros : true) {\n const ret = expandMacros(ex, this.opt);\n if (ret !== ex) {\n ret[sourceReference] = { ...(ex[sourceReference] || { first: 0, last: 0 }), macro: ex };\n }\n return ret;\n } else {\n return ex;\n }\n }\n\n private parseListExpr(scanner: Iterator<Token>, start: Token): Expr {\n const ref: SourceReference = {\n first: start.first,\n last: start.last,\n };\n\n const expectBracket = start.t === \"(\";\n let tok: IteratorResult<Token>;\n if (expectBracket) {\n tok = scanner.next();\n if (tok.done) {\n throw errEOF;\n }\n ref.last = tok.value.last;\n } else {\n tok = { value: start };\n }\n\n if (tok.value.t !== Literal.Ident) {\n throw new MichelineParseError(tok.value, `not an identifier: ${tok.value.v}`);\n }\n\n const ret: Prim = {\n prim: tok.value.v,\n [sourceReference]: ref,\n };\n\n for (; ;) {\n const tok = scanner.next();\n if (tok.done) {\n if (expectBracket) {\n throw errEOF;\n }\n break;\n } else if (tok.value.t === ')') {\n if (!expectBracket) {\n throw new MichelineParseError(tok.value, `unexpected closing bracket`);\n }\n ref.last = tok.value.last;\n break;\n } else if (isAnnotation(tok.value)) {\n ret.annots = ret.annots || [];\n ret.annots.push(tok.value.v);\n ref.last = tok.value.last;\n } else {\n ret.args = ret.args || [];\n const arg = this.parseExpr(scanner, tok.value);\n ref.last = arg[sourceReference]?.last || ref.last;\n ret.args.push(arg);\n }\n }\n return this.expand(ret);\n }\n\n private parseArgs(scanner: Iterator<Token>, start: Token): [Prim, IteratorResult<Token>] {\n // Identifier with arguments\n const ref: SourceReference = {\n first: start.first,\n last: start.last,\n };\n const p: Prim = {\n prim: start.v,\n [sourceReference]: ref,\n };\n\n for (; ;) {\n const t = scanner.next();\n if (t.done || t.value.t === '}' || t.value.t === ';') {\n return [p, t];\n }\n\n if (isAnnotation(t.value)) {\n ref.last = t.value.last;\n p.annots = p.annots || [];\n p.annots.push(t.value.v);\n } else {\n const arg = this.parseExpr(scanner, t.value);\n ref.last = arg[sourceReference]?.last || ref.last;\n p.args = p.args || [];\n p.args.push(arg);\n }\n }\n }\n\n private parseSequenceExpr(scanner: Iterator<Token>, start: Token): List<Expr> {\n const ref: SourceReference = {\n first: start.first,\n last: start.last,\n };\n const seq: List<Expr> = [];\n seq[sourceReference] = ref;\n\n const expectBracket = start.t === \"{\";\n let tok: IteratorResult<Token> | null = start.t === \"{\" ? null : { value: start };\n\n for (; ;) {\n if (tok === null) {\n tok = scanner.next();\n if (!tok.done) {\n ref.last = tok.value.last;\n }\n }\n if (tok.done) {\n if (expectBracket) {\n throw errEOF;\n } else {\n return seq;\n }\n }\n\n if (tok.value.t === \"}\") {\n if (!expectBracket) {\n throw new MichelineParseError(tok.value, `unexpected closing bracket`);\n } else {\n return seq;\n }\n } else if (tok.value.t === Literal.Ident) {\n // Identifier with arguments\n const [itm, n] = this.parseArgs(scanner, tok.value);\n ref.last = itm[sourceReference]?.last || ref.last;\n seq.push(this.expand(itm));\n tok = n;\n } else {\n // Other\n const ex = this.parseExpr(scanner, tok.value);\n ref.last = ex[sourceReference]?.last || ref.last;\n seq.push(ex);\n tok = null;\n }\n\n if (tok === null) {\n tok = scanner.next();\n if (!tok.done) {\n ref.last = tok.value.last;\n }\n }\n if (!tok.done && tok.value.t === \";\") {\n tok = null;\n }\n }\n }\n\n private parseExpr(scanner: Iterator<Token>, tok: Token): Expr {\n switch (tok.t) {\n case Literal.Ident:\n return this.expand({ prim: tok.v, [sourceReference]: { first: tok.first, last: tok.last } });\n\n case Literal.Number:\n return { int: tok.v, [sourceReference]: { first: tok.first, last: tok.last } };\n\n case Literal.String:\n return { string: JSON.parse(tok.v) as string, [sourceReference]: { first: tok.first, last: tok.last } };\n\n case Literal.Bytes:\n return { bytes: tok.v.slice(2), [sourceReference]: { first: tok.first, last: tok.last } };\n\n case '{':\n return this.parseSequenceExpr(scanner, tok);\n\n default:\n return this.parseListExpr(scanner, tok);\n }\n }\n\n /**\n * Parses a Micheline sequence expression, such as smart contract source. Enclosing curly brackets may be omitted.\n * @param src A Micheline sequence `{parameter ...; storage int; code { DUP ; ...};}` or `parameter ...; storage int; code { DUP ; ...};`\n */\n parseSequence(src: string): Expr[] | null {\n // tslint:disable-next-line: strict-type-predicates\n if (typeof src !== \"string\") {\n throw new TypeError(`string type was expected, got ${typeof src} instead`);\n }\n\n const scanner = scan(src);\n const tok = scanner.next();\n if (tok.done) {\n return null;\n }\n return this.parseSequenceExpr(scanner, tok.value);\n }\n\n /**\n * Parse a Micheline sequence expression. Enclosing curly brackets may be omitted.\n * @param src A Michelson list expression such as `(Pair {Elt \"0\" 0} 0)` or `Pair {Elt \"0\" 0} 0`\n * @returns An AST node or null for empty document.\n */\n parseList(src: string): Expr | null {\n // tslint:disable-next-line: strict-type-predicates\n if (typeof src !== \"string\") {\n throw new TypeError(`string type was expected, got ${typeof src} instead`);\n }\n\n const scanner = scan(src);\n const tok = scanner.next();\n if (tok.done) {\n return null;\n }\n return this.parseListExpr(scanner, tok.value);\n }\n\n /**\n * Parse any Michelson expression\n * @param src A Michelson expression such as `(Pair {Elt \"0\" 0} 0)` or `{parameter ...; storage int; code { DUP ; ...};}`\n * @returns An AST node or null for empty document.\n */\n parseMichelineExpression(src: string): Expr | null {\n // tslint:disable-next-line: strict-type-predicates\n if (typeof src !== \"string\") {\n throw new TypeError(`string type was expected, got ${typeof src} instead`);\n }\n\n const scanner = scan(src);\n const tok = scanner.next();\n if (tok.done) {\n return null;\n }\n return this.parseExpr(scanner, tok.value);\n }\n\n /**\n * Parse a Micheline sequence expression, such as smart contract source. Enclosing curly brackets may be omitted.\n * An alias for `parseSequence`\n * @param src A Micheline sequence `{parameter ...; storage int; code { DUP ; ...};}` or `parameter ...; storage int; code { DUP ; ...};`\n */\n parseScript(src: string): Expr[] | null {\n return this.parseSequence(src);\n }\n\n /**\n * Parse a Micheline sequence expression. Enclosing curly brackets may be omitted.\n * An alias for `parseList`\n * @param src A Michelson list expression such as `(Pair {Elt \"0\" 0} 0)` or `Pair {Elt \"0\" 0} 0`\n * @returns An AST node or null for empty document.\n */\n parseData(src: string): Expr | null {\n return this.parseList(src);\n }\n\n /**\n * Takes a JSON-encoded Michelson, validates it, strips away unneeded properties and optionally expands macros (See {@link ParserOptions}).\n * @param src An object containing JSON-encoded Michelson, usually returned by `JSON.parse()`\n */\n parseJSON(src: object): Expr {\n // tslint:disable-next-line: strict-type-predicates\n if (typeof src !== \"object\") {\n throw new TypeError(`object type was expected, got ${typeof src} instead`);\n }\n\n if (Array.isArray(src)) {\n const ret: Expr[] = [];\n for (const n of src) {\n if (n === null || typeof n !== 'object') {\n throw new JSONParseError(n, `unexpected sequence element: ${n}`);\n }\n ret.push(this.parseJSON(n));\n }\n return ret;\n\n } else if ('prim' in src) {\n const p = src as { prim: any, annots?: any[], args?: any[] };\n if (\n typeof p.prim === 'string' &&\n (p.annots === undefined || Array.isArray(p.annots)) &&\n (p.args === undefined || Array.isArray(p.args))\n ) {\n const ret: Prim = {\n prim: p.prim,\n };\n\n if (p.annots !== undefined) {\n for (const a of p.annots) {\n if (typeof a !== 'string') {\n throw new JSONParseError(a, `string expected: ${a}`);\n }\n }\n ret.annots = p.annots;\n }\n\n if (p.args !== undefined) {\n ret.args = [];\n for (const a of p.args) {\n if (a === null || typeof a !== 'object') {\n throw new JSONParseError(a, `unexpected argument: ${a}`);\n }\n ret.args.push(this.parseJSON(a));\n }\n }\n\n return this.expand(ret);\n }\n\n throw new JSONParseError(src, `malformed prim expression: ${src}`);\n } else if ('string' in src) {\n if (typeof (src as any).string === 'string') {\n return { string: (src as StringLiteral).string };\n }\n\n throw new JSONParseError(src, `malformed string literal: ${src}`);\n } else if ('int' in src) {\n if (typeof (src as any).int === 'string' && intRe.test((src as IntLiteral).int)) {\n return { int: (src as IntLiteral).int };\n }\n\n throw new JSONParseError(src, `malformed int literal: ${src}`);\n } else if ('bytes' in src) {\n if (\n typeof (src as any).bytes === 'string' &&\n bytesRe.test((src as BytesLiteral).bytes)\n ) {\n return { bytes: (src as BytesLiteral).bytes };\n }\n\n throw new JSONParseError(src, `malformed bytes literal: ${src}`);\n } else {\n throw new JSONParseError(src, `unexpected object: ${src}`);\n }\n }\n}\n","import { Expr, Prim, sourceReference } from \"./micheline\";\n\nexport interface FormatOptions {\n /**\n * A string used for code indentation if desired. Usually a tab character or a number of spaces.\n */\n indent?: string;\n /**\n * A string used for line separation. Usually a newline character (\"\\n\");\n */\n newline?: string;\n}\n\nclass Formatter {\n constructor(private opt?: FormatOptions, private lev: number = 0) {\n }\n\n indent(n = 0): string {\n let ret = \"\";\n if (this.opt?.indent !== undefined) {\n for (let i = this.lev + n; i > 0; i--) {\n ret += this.opt.indent;\n }\n }\n return ret;\n }\n\n get lf(): string {\n return this.opt?.newline || \"\";\n }\n\n get lfsp(): string {\n return this.opt?.newline || \" \";\n }\n\n down(n: number): Formatter {\n return new Formatter(this.opt, this.lev + n);\n }\n}\n\nfunction hasArgs(node: Expr): node is Prim {\n return (\"prim\" in node) &&\n ((node.annots !== undefined && node.annots.length !== 0) ||\n (node.args !== undefined && node.args.length !== 0));\n}\n\nfunction isMultiline(node: Prim): boolean {\n if (node.args !== undefined) {\n for (const a of node.args) {\n if (Array.isArray(a) || hasArgs(a)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction emitExpr(node: Expr, f: Formatter, foldMacros: boolean): string {\n const macro = node[sourceReference]?.macro;\n if (foldMacros && macro) {\n return emitExpr(macro, f, foldMacros);\n }\n\n if (Array.isArray(node)) {\n return emitSeq(node, f, foldMacros);\n\n } else if (\"string\" in node) {\n return JSON.stringify(node.string);\n\n } else if (\"int\" in node) {\n return node.int;\n\n } else if (\"bytes\" in node) {\n return \"0x\" + node.bytes;\n\n } else {\n if ((node.annots === undefined || node.annots.length === 0) &&\n (node.args === undefined || node.args.length === 0)) {\n return node.prim;\n }\n\n let ret = \"(\" + node.prim;\n if (node.annots !== undefined) {\n for (const a of node.annots) {\n ret += \" \" + a;\n }\n }\n if (node.args !== undefined) {\n const multiline = isMultiline(node);\n for (const a of node.args) {\n if (multiline) {\n ret += f.lfsp + f.indent(1) + emitExpr(a, f.down(1), foldMacros);\n } else {\n ret += \" \" + emitExpr(a, f, foldMacros);\n }\n }\n }\n return ret + \")\";\n }\n}\n\nfunction emitSeq(node: Expr[], f: Formatter, foldMacros: boolean): string {\n let ret = \"{\" + f.lf;\n let i = node.length;\n for (const el of node) {\n ret += f.indent(1);\n\n if (\"prim\" in el) {\n ret += el.prim;\n\n if (el.annots !== undefined) {\n for (const a of el.annots) {\n ret += \" \" + a;\n }\n }\n if (el.args !== undefined) {\n const multiline = isMultiline(el);\n for (const a of el.args) {\n if (multiline) {\n ret += f.lfsp + f.indent(2) + emitExpr(a, f.down(2), foldMacros);\n } else {\n ret += \" \" + emitExpr(a, f, foldMacros);\n }\n }\n }\n } else {\n ret += emitExpr(el, f.down(1), foldMacros);\n }\n\n ret += (i > 1 ? \";\" + f.lfsp : f.lf);\n i--;\n }\n return ret + f.indent() + \"}\";\n}\n\n/**\n * Formats Micheline expression\n * @param expr An AST node\n * @param opt Options\n */\nexport function emitMicheline(expr: Expr, opt?: FormatOptions, foldMacros = false): string {\n // tslint:disable-next-line: strict-type-predicates\n if (typeof expr !== \"object\") {\n throw new TypeError(`object type was expected, got ${typeof expr} instead`);\n }\n\n return emitExpr(expr, new Formatter(opt), foldMacros);\n}","const H = [\n 0x6a09e667 | 0,\n 0xbb67ae85 | 0,\n 0x3c6ef372 | 0,\n 0xa54ff53a | 0,\n 0x510e527f | 0,\n 0x9b05688c | 0,\n 0x1f83d9ab | 0,\n 0x5be0cd19 | 0\n];\n\nconst K = [\n 0x428a2f98 | 0, 0x71374491 | 0, 0xb5c0fbcf | 0, 0xe9b5dba5 | 0, 0x3956c25b | 0, 0x59f111f1 | 0, 0x923f82a4 | 0, 0xab1c5ed5 | 0,\n 0xd807aa98 | 0, 0x12835b01 | 0, 0x243185be | 0, 0x550c7dc3 | 0, 0x72be5d74 | 0, 0x80deb1fe | 0, 0x9bdc06a7 | 0, 0xc19bf174 | 0,\n 0xe49b69c1 | 0, 0xefbe4786 | 0, 0x0fc19dc6 | 0, 0x240ca1cc | 0, 0x2de92c6f | 0, 0x4a7484aa | 0, 0x5cb0a9dc | 0, 0x76f988da | 0,\n 0x983e5152 | 0, 0xa831c66d | 0, 0xb00327c8 | 0, 0xbf597fc7 | 0, 0xc6e00bf3 | 0, 0xd5a79147 | 0, 0x06ca6351 | 0, 0x14292967 | 0,\n 0x27b70a85 | 0, 0x2e1b2138 | 0, 0x4d2c6dfc | 0, 0x53380d13 | 0, 0x650a7354 | 0, 0x766a0abb | 0, 0x81c2c92e | 0, 0x92722c85 | 0,\n 0xa2bfe8a1 | 0, 0xa81a664b | 0, 0xc24b8b70 | 0, 0xc76c51a3 | 0, 0xd192e819 | 0, 0xd6990624 | 0, 0xf40e3585 | 0, 0x106aa070 | 0,\n 0x19a4c116 | 0, 0x1e376c08 | 0, 0x2748774c | 0, 0x34b0bcb5 | 0, 0x391c0cb3 | 0, 0x4ed8aa4a | 0, 0x5b9cca4f | 0, 0x682e6ff3 | 0,\n 0x748f82ee | 0, 0x78a5636f | 0, 0x84c87814 | 0, 0x8cc70208 | 0, 0x90befffa | 0, 0xa4506ceb | 0, 0xbef9a3f7 | 0, 0xc67178f2 | 0\n];\n\n// https://tools.ietf.org/html/rfc6234\nfunction sha256(msg: number[] | Uint8Array): number[] {\n // pad the message\n const r = (msg.length + 9) % 64;\n const pad = r === 0 ? 0 : 64 - r;\n\n if (msg.length > 268435455) {\n throw new Error(`sha256: message length is too big: ${msg.length}`);\n }\n\n const l = msg.length << 3;\n const buffer = [\n ...msg,\n 0x80,\n ...(new Array<number>(pad).fill(0)),\n 0, 0, 0, 0, (l >> 24) & 0xff, (l >> 16) & 0xff, (l >> 8) & 0xff, l & 0xff,\n ];\n\n function ror(x: number, n: number): number {\n return (x >>> n) | (x << (32 - n));\n }\n\n const h = [...H];\n const w = new Array<number>(64);\n const v = new Array<number>(8);\n\n for (let offset = 0; offset < buffer.length; offset += 64) {\n let q = offset;\n let i = 0;\n while (i < 16) {\n w[i] = (buffer[q] << 24) | (buffer[q + 1] << 16) | (buffer[q + 2] << 8) | buffer[q + 3];\n q += 4;\n i++;\n }\n while (i < 64) {\n const s0 = ror(w[i - 15], 7) ^ ror(w[i - 15], 18) ^ (w[i - 15] >>> 3);\n const s1 = ror(w[i - 2], 17) ^ ror(w[i - 2], 19) ^ (w[i - 2] >>> 10);\n w[i] = ((s1 | 0) + w[i - 7] + s0 + w[i - 16]) | 0;\n i++;\n }\n\n for (let i = 0; i < 8; i++) {\n v[i] = h[i];\n }\n\n for (let i = 0; i < 64; i++) {\n const b0 = ror(v[0], 2) ^ ror(v[0], 13) ^ ror(v[0], 22);\n const b1 = ror(v[4], 6) ^ ror(v[4], 11) ^ ror(v[4], 25);\n const t1 = (v[7] + b1 + ((v[4] & v[5]) ^ ((~v[4]) & v[6])) + K[i] + w[i]) | 0;\n const t2 = (b0 + (((v[0] & v[1]) ^ (v[0] & v[2]) ^ (v[1] & v[2])))) | 0;\n\n v[7] = v[6];\n v[6] = v[5];\n v[5] = v[4];\n v[4] = (v[3] + t1) | 0;\n v[3] = v[2];\n v[2] = v[1];\n v[1] = v[0];\n v[0] = (t1 + t2) | 0;\n }\n\n for (let i = 0; i < 8; i++) {\n h[i] = (h[i] + v[i]) | 0;\n }\n }\n\n const digest: number[] = [];\n for (const v of h) {\n digest.push((v >> 24) & 0xff);\n digest.push((v >> 16) & 0xff);\n digest.push((v >> 8) & 0xff);\n digest.push(v & 0xff);\n }\n\n return digest;\n}\n\nconst base58alphabetFwd: number[] = [\n 0, 1, 2, 3, 4, 5, 6,\n 7, 8, -1, -1, -1, -1, -1, -1,\n -1, 9, 10, 11, 12, 13, 14, 15,\n 16, -1, 17, 18, 19, 20, 21, -1,\n 22, 23, 24, 25, 26, 27, 28, 29,\n 30, 31, 32, -1, -1, -1, -1, -1,\n -1, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, -1, 44, 45, 46,\n 47, 48, 49, 50, 51, 52, 53, 54,\n 55, 56, 57\n];\n\nconst base58alphabetBwd: number[] = [\n 0, 1, 2, 3, 4, 5, 6, 7,\n 8, 16, 17, 18, 19, 20, 21, 22,\n 23, 25, 26, 27, 28, 29, 31, 32,\n 33, 34, 35, 36, 37, 38, 39, 40,\n 41, 48, 49, 50, 51, 52, 53, 54,\n 55, 56, 57, 58, 60, 61, 62, 63,\n 64, 65, 66, 67, 68, 69, 70, 71,\n 72, 73\n];\n\nfunction byteAt(src: string, i: number): number {\n const c = src.charCodeAt(i) - 49;\n if (c >= base58alphabetFwd.length || base58alphabetFwd[c] === -1) {\n throw new Error(`Base58 decoding error: unexpected character at position ${i}: ${src[i]}`);\n }\n return base58alphabetFwd[c];\n}\n\nexport function decodeBase58(src: string): number[] {\n const acc: number[] = [];\n let i = 0;\n // count and skip leading zeros\n while (i < src.length && byteAt(src, i) === 0) { i++; }\n let zeros = i;\n while (i < src.length) {\n let carry = byteAt(src, i++);\n /*\n for every symbol x\n acc = acc * 58 + x\n where acc is a little endian arbitrary length integer\n */\n let ii = 0;\n while (carry !== 0 || ii < acc.length) {\n const m = (acc[ii] || 0) * 58 + carry;\n acc[ii++] = m % 256;\n carry = Math.floor(m / 256);\n }\n }\n while (zeros-- > 0) {\n acc.push(0);\n }\n return acc.reverse();\n}\n\nexport function encodeBase58(src: number[] | Uint8Array): string {\n const acc: number[] = [];\n let i = 0;\n // count and skip leading zeros\n while (i < src.length && src[i] === 0) { i++; }\n let zeros = i;\n while (i < src.length) {\n let carry = src[i++];\n let ii = 0;\n while (carry !== 0 || ii < acc.length) {\n const m = (acc[ii] || 0) * 256 + carry;\n acc[ii++] = m % 58;\n carry = Math.floor(m / 58);\n }\n }\n while (zeros-- > 0) {\n acc.push(0);\n }\n acc.reverse();\n return String.fromCharCode(...acc.map(v => base58alphabetBwd[v] + 49));\n}\n\nexport function decodeBase58Check(src: string): number[] {\n const buffer = decodeBase58(src);\n if (buffer.length < 4) {\n throw new Error(`Base58Check decoding error: data is too short ${buffer.length}`);\n }\n\n const data = buffer.slice(0, buffer.length - 4);\n const sum = buffer.slice(buffer.length - 4);\n const computed = sha256(sha256(data));\n if (sum[0] !== computed[0] ||\n sum[1] !== computed[1] ||\n sum[2] !== computed[2] ||\n sum[3] !== computed[3]) {\n throw new Error(\"Base58Check decoding error: invalid checksum\");\n }\n\n return data;\n}\n\nexport function encodeBase58Check(src: number[] | Uint8Array): string {\n const sum = sha256(sha256(src));\n return encodeBase58([...src, ...sum.slice(0, 4)]);\n}","/*\n * Some code in this file is adapted from sotez\n * Copyright (c) 2018 Andrew Kishino\n */\n\nimport { DerivationType } from './taquito-ledger-signer';\n\nconst MAX_CHUNK_SIZE = 230;\n\n/**\n *\n * @description Convert the path to a buffer that will be used as LC and CDATA in the APDU send to the ledger device (https://github.com/obsidiansystems/ledger-app-tezos/blob/master/APDUs.md) \n *\n * @param path The ledger derivation path (default is \"44'/1729'/0'/0'\")\n * @returns A buffer where the first element is the length of the path (default is 4), then 3 bytes for each number of the path to which is added 0x8000000\n */\nexport function transformPathToBuffer(path : string) : Buffer {\n const result: any[] = [];\n const components = path.split('/');\n components.forEach((element) => {\n let toNumber = parseInt(element, 10);\n if (Number.isNaN(toNumber)) {\n return;\n }\n if (element.length > 1 && element[element.length - 1] === \"'\") {\n toNumber += 0x80000000;\n }\n result.push(toNumber);\n });\n let buffer = Buffer.alloc(1 + result.length * 4);\n buffer[0] = result.length;\n result.forEach((element, index) => {\n buffer.writeUInt32BE(element, 1 + 4 * index);\n });\n return buffer;\n}\n\n/**\n *\n * @description Converts uncompressed ledger key to standard tezos binary representation \n */\nexport function compressPublicKey(publicKey: Buffer, curve: DerivationType) {\n if (curve === 0x00){\n publicKey = publicKey.slice(1);\n } else {\n publicKey[0] = 0x02 + (publicKey[64] & 0x01);\n publicKey = publicKey.slice(0, 33);\n }\n return publicKey\n}\n\nexport function appendWatermark(bytes: string, watermark?: Uint8Array): string {\n let transactionHex = bytes;\n if (typeof watermark !== 'undefined') {\n let hexWatermark = Buffer.from(watermark).toString('hex');\n transactionHex = hexWatermark.concat(bytes);\n }\n return transactionHex;\n}\n\n/**\n *\n * @description In order not to exceed the data length allowed by the Ledger device, split the operation into buffers of 230 bytes (max) and add them to the message to send to the Ledger\n * @param messageToSend The message to send to the Ledger device\n * @param operation The operation which will be chunk if its length is over 230 bytes\n * @returns The instruction to send to the Ledger device\n */\nexport function chunkOperation(messageToSend: any, operation: Buffer){\n let offset = 0;\n while (offset !== operation.length) {\n let chunkSize = offset + MAX_CHUNK_SIZE >= operation.length ? operation.length - offset : MAX_CHUNK_SIZE;\n const buff = Buffer.alloc(chunkSize);\n operation.copy(buff, 0, offset, offset + chunkSize);\n messageToSend.push(buff);\n offset += chunkSize;\n }\n return messageToSend; \n}\n\n/**\n *\n * @description Verify if the signature returned by the ledger for tz2 and tz3 is valid\n * @param response The signature returned by the Ledger (return from the signWithLedger function)\n * @returns True if valid, false otherwise\n */\nexport function validateResponse(response: Buffer) : boolean\n{\n let valid = true;\n if (response[0] !== 0x31 && response[0] !== 0x30) {\n valid = false;\n }\n if (response[1] + 4 !== response.length) {\n valid = false;\n }\n if (response[2] !== 0x02) {\n valid = false;\n }\n let rLength = response[3];\n if (response[4 + rLength] !== 0x02) {\n valid = false;\n }\n\n let idxLengthSVal = 5 + rLength;\n let sLength = response[idxLengthSVal];\n if((idxLengthSVal + 1 + sLength) + 2 !== response.length) {\n valid = false;\n }\n return valid;\n}\n\n/**\n *\n * @description Extract a part of the response returned by the Ledger\n * @param idxLength The index in the response from the Ledger that corresponds to the length of the part to extract\n * @param response The signature returned by the Ledger (return from the signWithLedger function)\n * @returns An object that contains the extracted buffer, the index where it starts in the response and the length of the extracted part\n */\nexport function extractValue(idxLength: number, response: Buffer) {\n const buffer = Buffer.alloc(32);\n buffer.fill(0);\n\n let length = response[idxLength]; \n let idxValueStart = idxLength + 1;\n if (length > 32) {\n idxValueStart += length - 32;\n length = 32;\n }\n response.copy(buffer, 32 - length, idxValueStart, idxValueStart + length);\n return {buffer, idxValueStart, length};\n}","import { Prim, Expr, IntLiteral } from \"./micheline\";\nimport { Tuple, NoArgs, ReqArgs, MichelsonError } from \"./utils\";\nimport {\n MichelsonCode, MichelsonType, MichelsonData, MichelsonContract, MichelsonNoArgInstruction,\n MichelsonInstruction, InstructionList, MichelsonTypeID, MichelsonSimpleComparableTypeID\n} from \"./michelson-types\";\n\n// Michelson validator\n\nconst noArgInstructionIDs: Record<MichelsonNoArgInstruction[\"prim\"], true> = {\n \"ABS\": true, \"ADD\": true, \"ADDRESS\": true, \"AMOUNT\": true, \"AND\": true, \"APPLY\": true, \"BALANCE\": true,\n \"BLAKE2B\": true, \"CAR\": true, \"CDR\": true, \"CHAIN_ID\": true, \"CHECK_SIGNATURE\": true, \"COMPARE\": true, \"CONCAT\": true, \"CONS\": true, \"EDIV\": true,\n \"EQ\": true, \"EXEC\": true, \"FAILWITH\": true, \"GE\": true, \"GET_AND_UPDATE\": true, \"GT\": true, \"HASH_KEY\": true, \"IMPLICIT_ACCOUNT\": true,\n \"INT\": true, \"ISNAT\": true, \"JOIN_TICKETS\": true, \"KECCAK\": true, \"LE\": true, \"LEVEL\": true, \"LSL\": true, \"LSR\": true, \"LT\": true, \"MEM\": true, \"MUL\": true,\n \"NEG\": true, \"NEQ\": true, \"NEVER\": true, \"NOT\": true, \"NOW\": true, \"OR\": true, \"PACK\": true, \"PAIRING_CHECK\": true, \"READ_TICKET\": true,\n \"SAPLING_VERIFY_UPDATE\": true, \"SELF\": true, \"SELF_ADDRESS\": true, \"SENDER\": true, \"SET_DELEGATE\": true, \"SHA256\": true, \"SHA3\": true,\n \"SHA512\": true, \"SIZE\": true, \"SLICE\": true, \"SOME\": true, \"SOURCE\": true, \"SPLIT_TICKET\": true, \"SUB\": true, \"SWAP\": true, \"TICKET\": true,\n \"TOTAL_VOTING_POWER\": true, \"TRANSFER_TOKENS\": true, \"UNIT\": true, \"VOTING_POWER\": true, \"XOR\": true, \"RENAME\": true,\n};\n\nexport const instructionIDs: Record<MichelsonInstruction[\"prim\"], true> = Object.assign({}, noArgInstructionIDs, {\n \"CONTRACT\": true, \"CREATE_CONTRACT\": true, \"DIG\": true, \"DIP\": true, \"DROP\": true,\n \"DUG\": true, \"DUP\": true, \"EMPTY_BIG_MAP\": true, \"EMPTY_MAP\": true, \"EMPTY_SET\": true, \"GET\": true, \"IF\": true, \"IF_CONS\": true, \"IF_LEFT\": true,\n \"IF_NONE\": true, \"ITER\": true, \"LAMBDA\": true, \"LEFT\": true, \"LOOP\": true, \"LOOP_LEFT\": true, \"MAP\": true, \"NIL\": true, \"NONE\": true, \"PAIR\": true,\n \"PUSH\": true, \"RIGHT\": true, \"SAPLING_EMPTY_STATE\": true, \"UNPACK\": true, \"UNPAIR\": true, \"UPDATE\": true, \"CAST\": true,\n} as const);\n\nconst simpleComparableTypeIDs: Record<MichelsonSimpleComparableTypeID, true> = {\n \"unit\": true, \"never\": true, \"bool\": true, \"int\": true, \"nat\": true, \"string\": true,\n \"chain_id\": true, \"bytes\": true, \"mutez\": true, \"key_hash\": true, \"key\": true,\n \"signature\": true, \"timestamp\": true, \"address\": true,\n};\n\nconst typeIDs: Record<MichelsonTypeID, true> = Object.assign({}, simpleComparableTypeIDs, {\n \"or\": true, \"pair\": true, \"set\": true, \"big_map\": true, \"contract\": true, \"lambda\": true,\n \"list\": true, \"map\": true, \"operation\": true, \"option\": true, \"bls12_381_g1\": true,\n \"bls12_381_g2\": true, \"bls12_381_fr\": true, \"sapling_transaction\": true, \"sapling_state\": true, \"ticket\": true,\n} as const);\n\nexport class MichelsonValidationError extends MichelsonError {\n /**\n * @param val Value of a node caused the error\n * @param message An error message\n */\n constructor(public val: Expr, message?: string) {\n super(val, message);\n Object.setPrototypeOf(this, MichelsonValidationError.prototype);\n }\n}\n\nfunction isPrim(ex: Expr): ex is Prim {\n return \"prim\" in ex;\n}\n\nfunction isPrimOrSeq(ex: Expr): ex is Prim | Expr[] {\n return Array.isArray(ex) || \"prim\" in ex;\n}\n\nfunction assertPrim(ex: Expr): ex is Prim {\n if (isPrim(ex)) {\n return true;\n }\n throw new MichelsonValidationError(ex, \"prim expression expected\");\n}\n\nfunction assertSeq(ex: Expr): ex is Expr[] {\n if (Array.isArray(ex)) {\n return true;\n }\n throw new MichelsonValidationError(ex, \"sequence expression expected\");\n}\n\nfunction assertPrimOrSeq(ex: Expr): ex is Prim | Expr[] {\n if (isPrimOrSeq(ex)) {\n return true;\n }\n throw new MichelsonValidationError(ex, \"prim or sequence expression expected\");\n}\n\nfunction assertNatural(i: IntLiteral) {\n if (i.int[0] === \"-\") {\n throw new MichelsonValidationError(i, \"natural number expected\");\n }\n}\n\nfunction assertIntLiteral(ex: Expr): ex is IntLiteral {\n if (\"int\" in ex) {\n return true;\n }\n throw new MichelsonValidationError(ex, \"int literal expected\");\n}\n\nfunction assertArgs<N extends number>(ex: Prim, n: N):\n ex is N extends 0 ?\n NoArgs<Prim<string>> :\n ReqArgs<Prim<string, Tuple<N, Expr>>> {\n if ((n === 0 && ex.args === undefined) || ex.args?.length === n) {\n return true;\n }\n throw new MichelsonValidationError(ex, `${n} arguments expected`);\n}\n\n/**\n * Checks if the node is a valid Michelson code (sequence of instructions).\n * This is a type guard function which either returns true of throws an exception.\n * @param ex An AST node\n */\nexport function assertMichelsonInstruction(ex: Expr): ex is MichelsonCode {\n if (Array.isArray(ex)) {\n for (const n of ex) {\n if (!Array.isArray(n) && !isPrim(n)) {\n throw new MichelsonValidationError(ex, \"sequence or prim expected\");\n }\n assertMichelsonInstruction(n);\n }\n return true;\n }\n\n if (assertPrim(ex)) {\n if (Object.prototype.hasOwnProperty.call(noArgInstructionIDs, ex.prim)) {\n assertArgs(ex, 0);\n return true;\n }\n\n switch (ex.prim) {\n case \"DROP\":\n case \"PAIR\":\n case \"UNPAIR\":\n case \"DUP\":\n case \"UPDATE\":\n case \"GET\":\n if (ex.args !== undefined && assertArgs(ex, 1)) {\n /* istanbul ignore else */\n if (assertIntLiteral(ex.args[0])) {\n assertNatural(ex.args[0]);\n }\n }\n break;\n\n case \"DIG\":\n case \"DUG\":\n case \"SAPLING_EMPTY_STATE\":\n /* istanbul ignore else */\n if (assertArgs(ex, 1)) {\n /* istanbul ignore else */\n if (assertIntLiteral(ex.args[0])) {\n assertNatural(ex.args[0]);\n }\n }\n break;\n\n case \"NONE\":\n case \"LEFT\":\n case \"RIGHT\":\n case \"NIL\":\n case \"CAST\":\n /* istanbul ignore else */\n if (assertArgs(ex, 1)) {\n assertMichelsonType(ex.args[0]);\n }\n break;\n\n case \"UNPACK\":\n /* istanbul ignore else */\n if (assertArgs(ex, 1)) {\n assertMichelsonPackableType(ex.args[0]);\n }\n break;\n\n case \"CONTRACT\":\n /* istanbul ignore else */\n if (assertArgs(ex, 1)) {\n assertMichelsonPassableType(ex.args[0]);\n }\n break;\n\n case \"IF_NONE\":\n case \"IF_LEFT\":\n case \"IF_CONS\":\n case \"IF\":\n /* istanbul ignore else */\n if (assertArgs(ex, 2)) {\n /* istanbul ignore else */\n if (assertSeq(ex.args[0])) {\n assertMichelsonInstruction(ex.args[0]);\n }\n /* istanbul ignore else */\n if (assertSeq(ex.args[1])) {\n assertMichelsonInstruction(ex.args[1]);\n }\n }\n break;\n\n case \"MAP\":\n case \"ITER\":\n case \"LOOP\":\n case \"LOOP_LEFT\":\n /* istanbul ignore else */\n if (assertArgs(ex, 1)) {\n assertMichelsonInstruction(ex.args[0]);\n }\n break;\n\n case \"CREATE_CONTRACT\":\n /* istanbul ignore else */\n if (assertArgs(ex, 1)) {\n assertMichelsonContract(ex.args[0]);\n }\n break;\n\n case \"DIP\":\n if (ex.args?.length === 2) {\n /* istanbul ignore else */\n if (assertIntLiteral(ex.args[0])) {\n assertNatural(ex.args[0]);\n }\n /* istanbul ignore else */\n if (assertSeq(ex.args[1])) {\n assertMichelsonInstruction(ex.args[1]);\n }\n } else if (ex.args?.length === 1) {\n /* istanbul ignore else */\n if (assertSeq(ex.args[0])) {\n assertMichelsonInstruction(ex.args[0]);\n }\n } else {\n throw new MichelsonValidationError(ex, \"1 or 2 arguments expected\");\n }\n break;\n\n case \"PUSH\":\n /* istanbul ignore else */\n if (assertArgs(ex, 2)) {\n assertMichelsonPushableType(ex.args[0]);\n assertMichelsonData(ex.args[1]);\n }\n break;\n\n case \"EMPTY_SET\":\n /* istanbul ignore else */\n if (assertArgs(ex, 1)) {\n assertMichelsonComparableType(ex.args[0]);\n }\n break;\n\n case \"EMPTY_MAP\":\n /* istanbul ignore else */\n if (assertArgs(ex, 2)) {\n assertMichelsonComparableType(ex.args[0]);\n assertMichelsonType(ex.args[1]);\n }\n break;\n\n case \"EMPTY_BIG_MAP\":\n /* istanbul ignore else */\n if (assertArgs(ex, 2)) {\n assertMichelsonComparableType(ex.args[0]);\n assertMichelsonBigMapStorableType(ex.args[1]);\n }\n break;\n\n case \"LAMBDA\":\n /* istanbul ignore else */\n if (assertArgs(ex, 3)) {\n assertMichelsonType(ex.args[0]);\n assertMichelsonType(ex.args[1]);\n /* istanbul ignore else */\n if (assertSeq(ex.args[2])) {\n assertMichelsonInstruction(ex.args[2]);\n }\n }\n break;\n\n default:\n throw new MichelsonValidationError(ex, \"instruction expected\");\n }\n }\n return true;\n}\n\nexport function assertMichelsonComparableType(ex: Expr): ex is MichelsonType {\n /* istanbul ignore else */\n if (assertPrimOrSeq(ex)) {\n if (Array.isArray(ex) || ex.prim === \"pair\" || ex.prim === \"or\" || ex.prim === \"option\") {\n traverseType(ex, (ex) => assertMichelsonComparableType(ex));\n } else if (!Object.prototype.hasOwnProperty.call(simpleComparableTypeIDs, ex.prim)) {\n throw new MichelsonValidationError(ex, `${ex.prim}: type is not comparable`);\n }\n }\n return true;\n}\n\nexport function assertMichelsonPackableType(ex: Expr): ex is MichelsonType {\n /* istanbul ignore else */\n if (assertPrimOrSeq(ex)) {\n if (isPrim(ex)) {\n if (!Object.prototype.hasOwnProperty.call(typeIDs, ex.prim) ||\n ex.prim === \"big_map\" ||\n ex.prim === \"operation\" ||\n ex.prim === \"sapling_state\" ||\n ex.prim === \"ticket\") {\n throw new MichelsonValidationError(ex, `${ex.prim}: type can't be used inside PACK/UNPACK instructions`);\n }\n traverseType(ex, (ex) => assertMichelsonPackableType(ex));\n }\n }\n return true;\n}\n\nexport function assertMichelsonPushableType(ex: Expr): ex is MichelsonType {\n /* istanbul ignore else */\n if (assertPrimOrSeq(ex)) {\n if (isPrim(ex)) {\n if (!Object.prototype.hasOwnProperty.call(typeIDs, ex.prim) ||\n ex.prim === \"big_map\" ||\n ex.prim === \"operation\" ||\n ex.prim === \"sapling_state\" ||\n ex.prim === \"ticket\" ||\n ex.prim === \"contract\") {\n throw new MichelsonValidationError(ex, `${ex.prim}: type can't be pushed`);\n }\n traverseType(ex, (ex) => assertMichelsonPushableType(ex));\n }\n }\n return true;\n}\n\nexport function assertMichelsonStorableType(ex: Expr): ex is MichelsonType {\n /* istanbul ignore else */\n if (assertPrimOrSeq(ex)) {\n if (isPrim(ex)) {\n if (!Object.prototype.hasOwnProperty.call(typeIDs, ex.prim) ||\n ex.prim === \"operation\" ||\n ex.prim === \"contract\") {\n throw new MichelsonValidationError(ex, `${ex.prim}: type can't be used as part of a storage`);\n }\n traverseType(ex, (ex) => assertMichelsonStorableType(ex));\n }\n }\n return true;\n}\n\nexport function assertMichelsonPassableType(ex: Expr): ex is MichelsonType {\n /* istanbul ignore else */\n if (assertPrimOrSeq(ex)) {\n if (isPrim(ex)) {\n if (!Object.prototype.hasOwnProperty.call(typeIDs, ex.prim) ||\n ex.prim === \"operation\") {\n throw new MichelsonValidationError(ex, `${ex.prim}: type can't be used as part of a parameter`);\n }\n traverseType(ex, (ex) => assertMichelsonPassableType(ex));\n }\n }\n return true;\n}\n\nexport function assertMichelsonBigMapStorableType(ex: Expr): ex is MichelsonType {\n /* istanbul ignore else */\n if (assertPrimOrSeq(ex)) {\n if (isPrim(ex)) {\n if (!Object.prototype.hasOwnProperty.call(typeIDs, ex.prim) ||\n ex.prim === \"big_map\" ||\n ex.prim === \"operation\" ||\n ex.prim === \"sapling_state\") {\n throw new MichelsonValidationError(ex, `${ex.prim}: type can't be used inside a big_map`);\n }\n traverseType(ex, (ex) => assertMichelsonBigMapStorableType(ex));\n }\n }\n return true;\n}\n\n/**\n * Checks if the node is a valid Michelson type expression.\n * This is a type guard function which either returns true of throws an exception.\n * @param ex An AST node\n */\nexport function assertMichelsonType(ex: Expr): ex is MichelsonType {\n /* istanbul ignore else */\n if (assertPrimOrSeq(ex)) {\n if (isPrim(ex)) {\n if (!Object.prototype.hasOwnProperty.call(typeIDs, ex.prim)) {\n throw new MichelsonValidationError(ex, \"type expected\");\n }\n traverseType(ex, (ex) => assertMichelsonType(ex));\n }\n }\n return true;\n}\n\nfunction traverseType(ex: Prim | Expr[], cb: (ex: Prim | Expr[]) => void): ex is MichelsonType {\n if (Array.isArray(ex) || ex.prim === \"pair\") {\n const args = Array.isArray(ex) ? ex : ex.args;\n if (args === undefined || args.length < 2) {\n throw new MichelsonValidationError(ex, \"at least 2 arguments expected\");\n }\n args.forEach(a => {\n if (assertPrimOrSeq(a)) {\n cb(a);\n }\n });\n return true;\n }\n\n switch (ex.prim) {\n case \"option\":\n case \"list\":\n /* istanbul ignore else */\n if (assertArgs(ex, 1) && assertPrimOrSeq(ex.args[0])) {\n cb(ex.args[0]);\n }\n break;\n\n case \"contract\":\n /* istanbul ignore else */\n if (assertArgs(ex, 1)) {\n assertMichelsonPassableType(ex.args[0]);\n }\n break;\n\n case \"or\":\n /* istanbul ignore else */\n if (assertArgs(ex, 2) && assertPrimOrSeq(ex.args[0]) && assertPrimOrSeq(ex.args[1])) {\n cb(ex.args[0]);\n cb(ex.args[1]);\n }\n break;\n\n case \"lambda\":\n /* istanbul ignore else */\n if (assertArgs(ex, 2)) {\n assertMichelsonType(ex.args[0]);\n assertMichelsonType(ex.args[1]);\n }\n break;\n\n case \"set\":\n /* istanbul ignore else */\n if (assertArgs(ex, 1)) {\n assertMichelsonComparableType(ex.args[0]);\n }\n break;\n\n case \"map\":\n /* istanbul ignore else */\n if (assertArgs(ex, 2) && assertPrimOrSeq(ex.args[0]) && assertPrimOrSeq(ex.args[1])) {\n assertMichelsonComparableType(ex.args[0]);\n cb(ex.args[1]);\n }\n break;\n\n case \"big_map\":\n /* istanbul ignore else */\n if (assertArgs(ex, 2) && assertPrimOrSeq(ex.args[0]) && assertPrimOrSeq(ex.args[1])) {\n assertMichelsonComparableType(ex.args[0]);\n assertMichelsonBigMapStorableType(ex.args[1]);\n cb(ex.args[1]);\n }\n break;\n\n case \"ticket\":\n /* istanbul ignore else */\n if (assertArgs(ex, 1) && assertPrimOrSeq(ex.args[0])) {\n assertMichelsonComparableType(ex.args[0]);\n }\n break;\n\n case \"sapling_state\":\n case \"sapling_transaction\":\n if (assertArgs(ex, 1)) {\n assertIntLiteral(ex.args[0]);\n }\n break;\n\n default:\n assertArgs(ex, 0);\n }\n\n return true;\n}\n/**\n * Checks if the node is a valid Michelson data literal such as `(Pair {Elt \"0\" 0} 0)`.\n * This is a type guard function which either returns true of throws an exception.\n * @param ex An AST node\n */\nexport function assertMichelsonData(ex: Expr): ex is MichelsonData {\n if ((\"int\" in ex) || (\"string\" in ex) || (\"bytes\" in ex)) {\n return true;\n }\n\n if (Array.isArray(ex)) {\n let mapElts = 0;\n for (const n of ex) {\n if (isPrim(n) && n.prim === \"Elt\") {\n /* istanbul ignore else */\n if (assertArgs(n, 2)) {\n assertMichelsonData(n.args[0]);\n assertMichelsonData(n.args[1]);\n }\n mapElts++;\n } else {\n assertMichelsonData(n);\n }\n }\n\n if (mapElts !== 0 && mapElts !== ex.length) {\n throw new MichelsonValidationError(ex, \"data entries and map elements can't be intermixed\");\n }\n return true;\n }\n\n if (isPrim(ex)) {\n switch (ex.prim) {\n case \"Unit\":\n case \"True\":\n case \"False\":\n case \"None\":\n assertArgs(ex, 0);\n break;\n\n case \"Pair\":\n /* istanbul ignore else */\n if (ex.args === undefined || ex.args.length < 2) {\n throw new MichelsonValidationError(ex, \"at least 2 arguments expected\");\n }\n for (const a of ex.args) {\n assertMichelsonData(a);\n }\n break;\n\n case \"Left\":\n case \"Right\":\n case \"Some\":\n /* istanbul ignore else */\n if (assertArgs(ex, 1)) {\n assertMichelsonData(ex.args[0]);\n }\n break;\n\n default:\n if (Object.prototype.hasOwnProperty.call(instructionIDs, ex.prim)) {\n assertMichelsonInstruction(ex);\n } else {\n throw new MichelsonValidationError(ex, \"data entry or instruction expected\");\n }\n }\n } else {\n throw new MichelsonValidationError(ex, \"data entry expected\");\n }\n\n return true;\n}\n\n/**\n * Checks if the node is a valid Michelson smart contract source containing all required and valid properties such as `parameter`, `storage` and `code`.\n * This is a type guard function which either returns true of throws an exception.\n * @param ex An AST node\n */\nexport function assertMichelsonContract(ex: Expr): ex is MichelsonContract {\n /* istanbul ignore else */\n if (assertSeq(ex)) {\n const ent: { [sec: string]: boolean } = {};\n for (const sec of ex) {\n if (assertPrim(sec)) {\n if (sec.prim !== \"code\" && sec.prim !== \"parameter\" && sec.prim !== \"storage\") {\n throw new MichelsonValidationError(ex, `unexpected contract section: ${sec.prim}`);\n }\n if (sec.prim in ent) {\n throw new MichelsonValidationError(ex, `duplicate contract section: ${sec.prim}`);\n }\n ent[sec.prim] = true;\n\n /* istanbul ignore else */\n if (assertArgs(sec, 1)) {\n switch (sec.prim) {\n case \"code\":\n /* istanbul ignore else */\n if (assertSeq(sec.args[0])) {\n assertMichelsonInstruction(sec.args[0]);\n }\n break;\n\n case \"parameter\":\n assertMichelsonPassableType(sec.args[0]);\n break;\n\n case \"storage\":\n assertMichelsonStorableType(sec.args[0]);\n }\n }\n }\n }\n }\n return true;\n}\n\n/**\n * Checks if the node is a valid Michelson smart contract source containing all required and valid properties such as `parameter`, `storage` and `code`.\n * @param ex An AST node\n */\nexport function isMichelsonScript(ex: Expr): ex is MichelsonContract {\n try {\n assertMichelsonContract(ex);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Checks if the node is a valid Michelson data literal such as `(Pair {Elt \"0\" 0} 0)`.\n * @param ex An AST node\n */\nexport function isMichelsonData(ex: Expr): ex is MichelsonData {\n try {\n assertMichelsonData(ex);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Checks if the node is a valid Michelson code (sequence of instructions).\n * @param ex An AST node\n */\nexport function isMichelsonCode(ex: Expr): ex is InstructionList {\n try {\n assertMichelsonInstruction(ex);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Checks if the node is a valid Michelson type expression.\n * @param ex An AST node\n */\nexport function isMichelsonType(ex: Expr): ex is MichelsonType {\n try {\n assertMichelsonType(ex);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function isInstruction(p: Prim): p is MichelsonInstruction {\n return Object.prototype.hasOwnProperty.call(instructionIDs, p.prim);\n}\n\nexport function assertDataListIfAny(d: MichelsonData): d is MichelsonData[] {\n if (!Array.isArray(d)) {\n return false;\n }\n for (const v of d) {\n if (\"prim\" in v) {\n if (isInstruction(v)) {\n throw new MichelsonError(d, `Instruction outside of a lambda: ${JSON.stringify(d)}`);\n } else if (v.prim === \"Elt\") {\n throw new MichelsonError(d, `Elt item outside of a map literal: ${JSON.stringify(d)}`);\n }\n }\n }\n return true;\n}","import { BytesLiteral, Expr, IntLiteral, Prim } from \"./micheline\";\nimport {\n MichelsonTypeID, MichelsonDataID,\n MichelsonSectionID, MichelsonInstructionID,\n MichelsonData, MichelsonType, MichelsonDataOr,\n MichelsonDataOption, MichelsonInstruction\n} from \"./michelson-types\";\nimport { assertDataListIfAny, assertMichelsonData, assertMichelsonInstruction } from \"./michelson-validator\";\nimport {\n checkDecodeTezosID, encodeTezosID, hexBytes,\n isPairData, isPairType, MichelsonTypeError,\n parseBytes, parseDate, parseHex, unpackComb\n} from \"./utils\";\n\ntype PrimID = MichelsonTypeID |\n MichelsonDataID |\n MichelsonSectionID |\n MichelsonInstructionID |\n \"Elt\";\n\nconst primitives: PrimID[] = [\"parameter\", \"storage\", \"code\", \"False\", \"Elt\", \"Left\", \"None\", \"Pair\",\n \"Right\", \"Some\", \"True\", \"Unit\", \"PACK\", \"UNPACK\", \"BLAKE2B\", \"SHA256\", \"SHA512\", \"ABS\", \"ADD\",\n \"AMOUNT\", \"AND\", \"BALANCE\", \"CAR\", \"CDR\", \"CHECK_SIGNATURE\", \"COMPARE\", \"CONCAT\", \"CONS\",\n \"CREATE_ACCOUNT\", \"CREATE_CONTRACT\", \"IMPLICIT_ACCOUNT\", \"DIP\", \"DROP\", \"DUP\", \"EDIV\", \"EMPTY_MAP\",\n \"EMPTY_SET\", \"EQ\", \"EXEC\", \"FAILWITH\", \"GE\", \"GET\", \"GT\", \"HASH_KEY\", \"IF\", \"IF_CONS\", \"IF_LEFT\",\n \"IF_NONE\", \"INT\", \"LAMBDA\", \"LE\", \"LEFT\", \"LOOP\", \"LSL\", \"LSR\", \"LT\", \"MAP\", \"MEM\", \"MUL\", \"NEG\",\n \"NEQ\", \"NIL\", \"NONE\", \"NOT\", \"NOW\", \"OR\", \"PAIR\", \"PUSH\", \"RIGHT\", \"SIZE\", \"SOME\", \"SOURCE\",\n \"SENDER\", \"SELF\", \"STEPS_TO_QUOTA\", \"SUB\", \"SWAP\", \"TRANSFER_TOKENS\", \"SET_DELEGATE\", \"UNIT\",\n \"UPDATE\", \"XOR\", \"ITER\", \"LOOP_LEFT\", \"ADDRESS\", \"CONTRACT\", \"ISNAT\", \"CAST\", \"RENAME\", \"bool\",\n \"contract\", \"int\", \"key\", \"key_hash\", \"lambda\", \"list\", \"map\", \"big_map\", \"nat\", \"option\", \"or\",\n \"pair\", \"set\", \"signature\", \"string\", \"bytes\", \"mutez\", \"timestamp\", \"unit\", \"operation\",\n \"address\", \"SLICE\", \"DIG\", \"DUG\", \"EMPTY_BIG_MAP\", \"APPLY\", \"chain_id\", \"CHAIN_ID\", \"LEVEL\",\n \"SELF_ADDRESS\", \"never\", \"NEVER\", \"UNPAIR\", \"VOTING_POWER\", \"TOTAL_VOTING_POWER\", \"KECCAK\",\n \"SHA3\", \"PAIRING_CHECK\", \"bls12_381_g1\", \"bls12_381_g2\", \"bls12_381_fr\", \"sapling_state\",\n \"sapling_transaction\", \"SAPLING_EMPTY_STATE\", \"SAPLING_VERIFY_UPDATE\", \"ticket\", \"TICKET\",\n \"READ_TICKET\", \"SPLIT_TICKET\", \"JOIN_TICKETS\", \"GET_AND_UPDATE\"];\n\nconst primTags: { [key in PrimID]?: number } & { [key: string]: number | undefined; } = Object.assign({}, ...primitives.map((v, i) => ({ [v]: i })));\n\nenum Tag {\n Int = 0,\n String = 1,\n Sequence = 2,\n Prim0 = 3,\n Prim0Annot = 4,\n Prim1 = 5,\n Prim1Annot = 6,\n Prim2 = 7,\n Prim2Annot = 8,\n Prim = 9,\n Bytes = 10,\n}\nclass Writer {\n public buffer: number[] = [];\n\n get length(): number {\n return this.buffer.length;\n }\n\n writeBytes(val: number[]) {\n this.buffer.push(...val.map(v => v & 0xff));\n }\n\n writeUint8(val: number) {\n const v = val | 0;\n this.buffer.push(v & 0xff);\n }\n\n writeUint16(val: number) {\n const v = val | 0;\n this.buffer.push((v >> 8) & 0xff);\n this.buffer.push(v & 0xff);\n }\n\n writeUint32(val: number) {\n const v = val | 0;\n this.buffer.push((v >> 24) & 0xff);\n this.buffer.push((v >> 16) & 0xff);\n this.buffer.push((v >> 8) & 0xff);\n this.buffer.push(v & 0xff);\n }\n\n writeInt8(val: number) {\n this.writeUint8(val);\n }\n\n writeInt16(val: number) {\n this.writeUint16(val);\n }\n\n writeInt32(val: number) {\n this.writeUint32(val);\n }\n}\n\nconst boundsErr = new Error(\"bounds out of range\");\nclass Reader {\n constructor(private buffer: number[] | Uint8Array, private idx: number = 0, private cap: number = buffer.length) {\n }\n\n /** Remaining length */\n get length(): number {\n return this.cap - this.idx;\n }\n\n readBytes(len: number): number[] | Uint8Array {\n if (this.cap - this.idx < len) {\n throw boundsErr;\n }\n const ret = this.buffer.slice(this.idx, this.idx + len);\n this.idx += len;\n return ret;\n }\n\n reader(len: number): Reader {\n if (this.cap - this.idx < len) {\n throw boundsErr;\n }\n const ret = new Reader(this.buffer, this.idx, this.idx + len);\n this.idx += len;\n return ret;\n }\n\n copy(): Reader {\n return new Reader(this.buffer, this.idx, this.cap);\n }\n\n readUint8(): number {\n if (this.cap - this.idx < 1) {\n throw boundsErr;\n }\n return this.buffer[this.idx++] >>> 0;\n }\n\n readUint16(): number {\n if (this.cap - this.idx < 2) {\n throw boundsErr;\n }\n const x0 = this.buffer[this.idx++];\n const x1 = this.buffer[this.idx++];\n return ((x0 << 8) | x1) >>> 0;\n }\n\n readUint32(): number {\n if (this.cap - this.idx < 4) {\n throw boundsErr;\n }\n const x0 = this.buffer[this.idx++];\n const x1 = this.buffer[this.idx++];\n const x2 = this.buffer[this.idx++];\n const x3 = this.buffer[this.idx++];\n return ((x0 << 24) | (x1 << 16) | (x2 << 8) | x3) >>> 0;\n }\n\n readInt8(): number {\n if (this.cap - this.idx < 1) {\n throw boundsErr;\n }\n const x = this.buffer[this.idx++];\n return (x << 24) >> 24;\n }\n\n readInt16(): number {\n if (this.cap - this.idx < 2) {\n throw boundsErr;\n }\n const x0 = this.buffer[this.idx++];\n const x1 = this.buffer[this.idx++];\n return (((x0 << 8) | x1) << 16) >> 16;\n }\n\n readInt32(): number {\n if (this.cap - this.idx < 4) {\n throw boundsErr;\n }\n const x0 = this.buffer[this.idx++];\n const x1 = this.buffer[this.idx++];\n const x2 = this.buffer[this.idx++];\n const x3 = this.buffer[this.idx++];\n return (x0 << 24) | (x1 << 16) | (x2 << 8) | x3;\n }\n}\n\nenum ContractID {\n Implicit = 0,\n Originated = 1,\n}\n\nenum PublicKeyHashID {\n ED25519 = 0,\n SECP256K1 = 1,\n P256 = 2,\n}\n\ntype AddressType = \"ED25519PublicKeyHash\" | \"SECP256K1PublicKeyHash\" | \"P256PublicKeyHash\" | \"ContractHash\";\n\nexport interface Address {\n type: AddressType;\n hash: number[] | Uint8Array;\n entryPoint?: string;\n}\n\nfunction readPublicKeyHash(rd: Reader): Address {\n let type: AddressType;\n const tag = rd.readUint8();\n switch (tag) {\n case PublicKeyHashID.ED25519:\n type = \"ED25519PublicKeyHash\";\n break;\n case PublicKeyHashID.SECP256K1:\n type = \"SECP256K1PublicKeyHash\";\n break;\n case PublicKeyHashID.P256:\n type = \"P256PublicKeyHash\";\n break;\n default:\n throw new Error(`unknown public key hash tag: ${tag}`);\n }\n return { type, hash: rd.readBytes(20) };\n}\n\nfunction readAddress(rd: Reader): Address {\n let address: Address;\n const tag = rd.readUint8();\n switch (tag) {\n case ContractID.Implicit:\n address = readPublicKeyHash(rd);\n break;\n\n case ContractID.Originated:\n address = {\n type: \"ContractHash\",\n hash: rd.readBytes(20),\n };\n rd.readBytes(1);\n break;\n\n default:\n throw new Error(`unknown address tag: ${tag}`);\n }\n\n if (rd.length !== 0) {\n // entry point\n const dec = new TextDecoder();\n address.entryPoint = dec.decode(new Uint8Array(rd.readBytes(rd.length)));\n }\n return address;\n}\n\nfunction writePublicKeyHash(a: Address, w: Writer): void {\n let tag: PublicKeyHashID;\n switch (a.type) {\n case \"ED25519PublicKeyHash\":\n tag = PublicKeyHashID.ED25519;\n break;\n case \"SECP256K1PublicKeyHash\":\n tag = PublicKeyHashID.SECP256K1;\n break;\n case \"P256PublicKeyHash\":\n tag = PublicKeyHashID.P256;\n break;\n default:\n throw new Error(`unexpected address type: ${a.type}`);\n }\n w.writeUint8(tag);\n w.writeBytes(Array.from(a.hash));\n}\n\nfunction writeAddress(a: Address, w: Writer): void {\n if (a.type === \"ContractHash\") {\n w.writeUint8(ContractID.Originated);\n w.writeBytes(Array.from(a.hash));\n w.writeUint8(0);\n } else {\n w.writeUint8(ContractID.Implicit);\n writePublicKeyHash(a, w);\n }\n\n if (a.entryPoint !== undefined && a.entryPoint !== \"\" && a.entryPoint !== \"default\") {\n const enc = new TextEncoder();\n const bytes = enc.encode(a.entryPoint);\n w.writeBytes(Array.from(bytes));\n }\n}\n\nenum PublicKeyID {\n ED25519 = 0,\n SECP256K1 = 1,\n P256 = 2,\n}\n\nexport type PublicKeyType = \"ED25519PublicKey\" | \"SECP256K1PublicKey\" | \"P256PublicKey\";\nexport interface PublicKey {\n type: PublicKeyType;\n publicKey: number[] | Uint8Array;\n}\n\nfunction readPublicKey(rd: Reader): PublicKey {\n let ln: number;\n let type: PublicKeyType;\n const tag = rd.readUint8();\n switch (tag) {\n case PublicKeyID.ED25519:\n type = \"ED25519PublicKey\";\n ln = 32;\n break;\n case PublicKeyID.SECP256K1:\n type = \"SECP256K1PublicKey\";\n ln = 33;\n break;\n case PublicKeyID.P256:\n type = \"P256PublicKey\";\n ln = 33;\n break;\n default:\n throw new Error(`unknown public key tag: ${tag}`);\n }\n return { type, publicKey: rd.readBytes(ln) };\n}\n\nfunction writePublicKey(pk: PublicKey, w: Writer): void {\n let tag: PublicKeyID;\n switch (pk.type) {\n case \"ED25519PublicKey\":\n tag = PublicKeyID.ED25519;\n break;\n case \"SECP256K1PublicKey\":\n tag = PublicKeyID.SECP256K1;\n break;\n case \"P256PublicKey\":\n tag = PublicKeyID.P256;\n break;\n default:\n throw new Error(`unexpected public key type: ${pk.type}`);\n }\n w.writeUint8(tag);\n w.writeBytes(Array.from(pk.publicKey));\n}\n\ntype WriteTransformFunc = (e: Expr) => [Expr, IterableIterator<WriteTransformFunc>];\n\nfunction writeExpr(expr: Expr, wr: Writer, tf: WriteTransformFunc): void {\n const [e, args] = tf(expr);\n\n if (Array.isArray(e)) {\n const w = new Writer();\n for (const v of e) {\n const a = args.next();\n if (a.done) {\n throw new Error(\"REPORT ME: iterator is done\");\n }\n writeExpr(v, w, a.value);\n }\n wr.writeUint8(Tag.Sequence);\n wr.writeUint32(w.length);\n wr.writeBytes(w.buffer);\n return;\n }\n\n if (\"string\" in e) {\n const enc = new TextEncoder();\n const bytes = enc.encode(e.string);\n wr.writeUint8(Tag.String);\n wr.writeUint32(bytes.length);\n wr.writeBytes(Array.from(bytes));\n return;\n }\n\n if (\"int\" in e) {\n wr.writeUint8(Tag.Int);\n let val = BigInt(e.int);\n const sign = val < 0;\n if (sign) {\n val = -val;\n }\n let i = 0;\n do {\n const bits = (i === 0) ? BigInt(6) : BigInt(7);\n let byte = val & ((BigInt(1) << bits) - BigInt(1));\n val >>= bits;\n if (val) {\n byte |= BigInt(0x80);\n }\n if (i === 0 && sign) {\n byte |= BigInt(0x40);\n }\n wr.writeUint8(Number(byte));\n i++;\n } while (val);\n return;\n }\n\n if (\"bytes\" in e) {\n const bytes = parseHex(e.bytes);\n wr.writeUint8(Tag.Bytes);\n wr.writeUint32(bytes.length);\n wr.writeBytes(bytes);\n return;\n }\n\n const prim = primTags[e.prim];\n if (prim === undefined) {\n throw new TypeError(`Can't encode primary: ${e.prim}`);\n }\n\n const tag = (e.args?.length || 0) < 3 ?\n Tag.Prim0 + (e.args?.length || 0) * 2 + (e.annots === undefined || e.annots.length === 0 ? 0 : 1) :\n Tag.Prim;\n\n wr.writeUint8(tag);\n wr.writeUint8(prim);\n\n if (e.args !== undefined) {\n if (e.args.length < 3) {\n for (const v of e.args) {\n const a = args.next();\n if (a.done) {\n throw new Error(\"REPORT ME: iterator is done\");\n }\n writeExpr(v, wr, a.value);\n }\n } else {\n const w = new Writer();\n for (const v of e.args) {\n const a = args.next();\n if (a.done) {\n throw new Error(\"REPORT ME: iterator is done\");\n }\n writeExpr(v, w, a.value);\n }\n wr.writeUint32(w.length);\n wr.writeBytes(w.buffer);\n }\n }\n\n if (e.annots !== undefined && e.annots.length !== 0) {\n const enc = new TextEncoder();\n const bytes = enc.encode(e.annots.join(\" \"));\n wr.writeUint32(bytes.length);\n wr.writeBytes(Array.from(bytes));\n } else if (e.args !== undefined && e.args.length >= 3) {\n wr.writeUint32(0);\n }\n}\n\ntype ReadTransformFuncs = [(e: Expr) => IterableIterator<ReadTransformFuncs>, (e: Expr) => Expr];\n\nfunction readExpr(rd: Reader, tf: ReadTransformFuncs): Expr {\n function* passThrough() {\n while (true) {\n yield readPassThrough;\n }\n }\n const [args, tr] = tf;\n const tag = rd.readUint8();\n switch (tag) {\n case Tag.Int:\n {\n const buf: number[] = [];\n let byte: number;\n do {\n byte = rd.readInt8();\n buf.push(byte);\n } while ((byte & 0x80) !== 0);\n let val = BigInt(0);\n let sign = false;\n for (let i = buf.length - 1; i >= 0; i--) {\n const bits = (i === 0) ? BigInt(6) : BigInt(7);\n const byte = BigInt(buf[i]);\n val <<= bits;\n val |= byte & ((BigInt(1) << bits) - BigInt(1));\n if (i === 0) {\n sign = !!(byte & BigInt(0x40));\n }\n }\n if (sign) {\n val = -val;\n }\n return tr({ int: String(val) });\n }\n\n case Tag.String:\n {\n const length = rd.readUint32();\n const bytes = rd.readBytes(length);\n const dec = new TextDecoder();\n return tr({ string: dec.decode(new Uint8Array(bytes)) });\n }\n\n case Tag.Bytes:\n {\n const length = rd.readUint32();\n const bytes = rd.readBytes(length);\n const hex = hexBytes(Array.from(bytes));\n return tr({ bytes: hex });\n }\n\n case Tag.Sequence:\n {\n const length = rd.readUint32();\n let res: Expr[] = [];\n let savedrd = rd.copy();\n // make two passes\n let it: IterableIterator<ReadTransformFuncs> = passThrough();\n for (let n = 0; n < 2; n++) {\n const r = savedrd.reader(length);\n res = [];\n while (r.length > 0) {\n const a = it.next();\n if (a.done) {\n throw new Error(\"REPORT ME: iterator is done\");\n }\n res.push(readExpr(r, a.value));\n }\n // make a second pass with injected side effects\n it = args(res);\n savedrd = rd;\n }\n return tr(res);\n }\n\n default:\n {\n if (tag > 9) {\n throw new Error(`Unknown tag: ${tag}`);\n }\n const p = rd.readUint8();\n if (p >= primitives.length) {\n throw new Error(`Unknown primitive tag: ${p}`);\n }\n const prim = primitives[p];\n const argn = (tag - 3) >> 1;\n let res: Prim = { prim };\n // make two passes\n let it: IterableIterator<ReadTransformFuncs> = passThrough();\n let savedrd = rd.copy();\n for (let n = 0; n < 2; n++) {\n res = { prim };\n if (argn < 3) {\n for (let i = 0; i < argn; i++) {\n const a = it.next();\n if (a.done) {\n throw new Error(\"REPORT ME: iterator is done\");\n }\n res.args = res.args || [];\n res.args.push(readExpr(savedrd, a.value));\n }\n } else {\n res.args = res.args || [];\n const length = savedrd.readUint32();\n const r = savedrd.reader(length);\n while (r.length > 0) {\n const a = it.next();\n if (a.done) {\n throw new Error(\"REPORT ME: iterator is done\");\n }\n res.args.push(readExpr(r, a.value));\n }\n }\n // make a second pass with injected side effects\n it = args(res);\n savedrd = rd;\n }\n\n if (((tag - 3) & 1) === 1 || argn === 3) {\n // read annotations\n const length = rd.readUint32();\n if (length !== 0) {\n const bytes = rd.readBytes(length);\n const dec = new TextDecoder();\n res.annots = dec.decode(new Uint8Array(bytes)).split(\" \");\n }\n }\n return tr(res);\n }\n }\n}\n\nconst isOrData = (e: Expr): e is MichelsonDataOr => \"prim\" in e && (e.prim === \"Left\" || e.prim === \"Right\");\nconst isOptionData = (e: Expr): e is MichelsonDataOption => \"prim\" in e && (e.prim === \"Some\" || e.prim === \"None\");\n\nconst getWriteTransformFunc = (t: MichelsonType): WriteTransformFunc => {\n if (isPairType(t)) {\n return (d: Expr) => {\n if (!isPairData(d)) {\n throw new MichelsonTypeError(t, d, `pair expected: ${JSON.stringify(d)}`);\n }\n assertDataListIfAny(d);\n // combs aren't used in pack format\n const tc = unpackComb(\"pair\", t);\n const dc = unpackComb(\"Pair\", d);\n return [dc, (function* () {\n for (const a of tc.args) {\n yield getWriteTransformFunc(a);\n }\n })()];\n };\n }\n\n switch (t.prim) {\n case \"or\":\n return (d: Expr) => {\n if (!isOrData(d)) {\n throw new MichelsonTypeError(t, d, `or expected: ${JSON.stringify(d)}`);\n }\n return [d, (function* () {\n yield getWriteTransformFunc(t.args[d.prim === \"Left\" ? 0 : 1]);\n })()];\n };\n\n case \"option\":\n return (d: Expr) => {\n if (!isOptionData(d)) {\n throw new MichelsonTypeError(t, d, `option expected: ${JSON.stringify(d)}`);\n }\n return [d, (function* () {\n const dd = d;\n if (dd.prim === \"Some\") {\n yield getWriteTransformFunc(t.args[0]);\n }\n })()];\n };\n\n case \"list\":\n case \"set\":\n return (d: Expr) => {\n if (!Array.isArray(d)) {\n throw new MichelsonTypeError(t, d, `${t.prim} expected: ${JSON.stringify(d)}`);\n }\n return [d, (function* () {\n for (const _v of d) {\n yield getWriteTransformFunc(t.args[0]);\n }\n })()];\n };\n\n case \"map\":\n return (d: Expr) => {\n if (!Array.isArray(d)) {\n throw new MichelsonTypeError(t, d, `map expected: ${JSON.stringify(d)}`);\n }\n return [d, (function* (): Generator<WriteTransformFunc> {\n for (const _elt of d) {\n yield (elt: Expr) => {\n if (!(\"prim\" in elt) || elt.prim !== \"Elt\") {\n throw new MichelsonTypeError(t, elt, `map element expected: ${JSON.stringify(elt)}`);\n }\n return [elt, (function* () {\n for (const a of t.args) {\n yield getWriteTransformFunc(a);\n }\n })()];\n };\n }\n })()];\n };\n\n case \"chain_id\":\n return (d: Expr) => {\n if (!(\"bytes\" in d) && !(\"string\" in d)) {\n throw new MichelsonTypeError(t, d, `chain id expected: ${JSON.stringify(d)}`);\n }\n let bytes: BytesLiteral;\n if (\"string\" in d) {\n const id = checkDecodeTezosID(d.string, \"ChainID\");\n if (id === null) {\n throw new MichelsonTypeError(t, d, `chain id base58 expected: ${d.string}`);\n }\n bytes = { bytes: hexBytes(id[1]) };\n } else {\n bytes = d;\n }\n return [bytes, [][Symbol.iterator]()];\n };\n\n case \"signature\":\n return (d: Expr) => {\n if (!(\"bytes\" in d) && !(\"string\" in d)) {\n throw new MichelsonTypeError(t, d, `signature expected: ${JSON.stringify(d)}`);\n }\n let bytes: BytesLiteral;\n if (\"string\" in d) {\n const sig = checkDecodeTezosID(d.string, \"ED25519Signature\", \"SECP256K1Signature\", \"P256Signature\", \"GenericSignature\");\n if (sig === null) {\n throw new MichelsonTypeError(t, d, `signature base58 expected: ${d.string}`);\n }\n bytes = { bytes: hexBytes(sig[1]) };\n } else {\n bytes = d;\n }\n return [bytes, [][Symbol.iterator]()];\n };\n\n case \"key_hash\":\n return (d: Expr) => {\n if (!(\"bytes\" in d) && !(\"string\" in d)) {\n throw new MichelsonTypeError(t, d, `key hash expected: ${JSON.stringify(d)}`);\n }\n let bytes: BytesLiteral;\n if (\"string\" in d) {\n const pkh = checkDecodeTezosID(d.string, \"ED25519PublicKeyHash\", \"SECP256K1PublicKeyHash\", \"P256PublicKeyHash\");\n if (pkh === null) {\n throw new MichelsonTypeError(t, d, `key hash base58 expected: ${d.string}`);\n }\n const w = new Writer();\n writePublicKeyHash({ type: pkh[0], hash: pkh[1] }, w);\n bytes = { bytes: hexBytes(w.buffer) };\n } else {\n bytes = d;\n }\n return [bytes, [][Symbol.iterator]()];\n };\n\n case \"key\":\n return (d: Expr) => {\n if (!(\"bytes\" in d) && !(\"string\" in d)) {\n throw new MichelsonTypeError(t, d, `public key expected: ${JSON.stringify(d)}`);\n }\n let bytes: BytesLiteral;\n if (\"string\" in d) {\n const key = checkDecodeTezosID(d.string, \"ED25519PublicKey\", \"SECP256K1PublicKey\", \"P256PublicKey\");\n if (key === null) {\n throw new MichelsonTypeError(t, d, `public key base58 expected: ${d.string}`);\n }\n const w = new Writer();\n writePublicKey({ type: key[0], publicKey: key[1] }, w);\n bytes = { bytes: hexBytes(w.buffer) };\n } else {\n bytes = d;\n }\n return [bytes, [][Symbol.iterator]()];\n };\n\n case \"address\":\n return (d: Expr) => {\n if (!(\"bytes\" in d) && !(\"string\" in d)) {\n throw new MichelsonTypeError(t, d, `address expected: ${JSON.stringify(d)}`);\n }\n let bytes: BytesLiteral;\n if (\"string\" in d) {\n const s = d.string.split(\"%\");\n const address = checkDecodeTezosID(s[0], \"ED25519PublicKeyHash\", \"SECP256K1PublicKeyHash\", \"P256PublicKeyHash\", \"ContractHash\");\n if (address === null) {\n throw new MichelsonTypeError(t, d, `address base58 expected: ${d.string}`);\n }\n const w = new Writer();\n writeAddress({ type: address[0], hash: address[1], entryPoint: s.length > 1 ? s[1] : undefined }, w);\n bytes = { bytes: hexBytes(w.buffer) };\n } else {\n bytes = d;\n }\n return [bytes, [][Symbol.iterator]()];\n };\n\n case \"timestamp\":\n return (d: Expr) => {\n if (!(\"string\" in d) && !(\"int\" in d)) {\n throw new MichelsonTypeError(t, d, `timestamp expected: ${JSON.stringify(d)}`);\n }\n let int: IntLiteral;\n if (\"string\" in d) {\n const p = parseDate(d);\n if (p === null) {\n throw new MichelsonTypeError(t, d, `can't parse date: ${d.string}`);\n }\n int = { int: String(Math.floor(p.getTime() / 1000)) };\n } else {\n int = d;\n }\n return [int, [][Symbol.iterator]()];\n };\n\n default:\n return writePassThrough;\n }\n};\n\ntype PushInstruction = MichelsonInstruction & Prim<\"PUSH\">;\nconst isPushInstruction = (e: Expr): e is PushInstruction => \"prim\" in e && e.prim === \"PUSH\";\n\nconst writePassThrough: WriteTransformFunc = (e: Expr) => {\n if (isPushInstruction(e)) {\n assertMichelsonInstruction(e);\n // capture inlined type definition\n return [e, (function* () {\n yield writePassThrough;\n yield getWriteTransformFunc(e.args[0]);\n })()];\n }\n\n return [e, (function* () {\n while (true) {\n yield writePassThrough;\n }\n })()];\n};\n\n/**\n * Serializes any value of packable type to its optimized binary representation \n * identical to the one used by PACK and UNPACK Michelson instructions.\n * Without a type definition (not recommended) the data will be encoded as a binary form of a generic Michelson expression.\n * Type definition allows some types like `timestamp` and `address` and other base58 representable types to be encoded to\n * corresponding optimized binary forms borrowed from the Tezos protocol\n * \n * ```typescript\n * const data: MichelsonData = {\n * string: \"KT1RvkwF4F7pz1gCoxkyZrG1RkrxQy3gmFTv%foo\"\n * };\n * \n * const typ: MichelsonType = {\n * prim: \"address\"\n * };\n * \n * const packed = packData(data, typ);\n * \n * // 050a0000001901be41ee922ddd2cf33201e49d32da0afec571dce300666f6f\n * ```\n * \n * Without a type definition the base58 encoded address will be treated as a string\n * ```typescript\n * const data: MichelsonData = {\n * string: \"KT1RvkwF4F7pz1gCoxkyZrG1RkrxQy3gmFTv%foo\"\n * };\n * \n * const packed = packData(data);\n * \n * // 0501000000284b543152766b7746344637707a3167436f786b795a724731526b7278517933676d46547625666f6f\n * ```\n * @param d Data object\n * @param t Optional type definition\n * @returns Binary representation as numeric array\n */\nexport function packData(d: MichelsonData, t?: MichelsonType): number[] {\n const w = new Writer();\n w.writeUint8(5);\n writeExpr(d, w, t !== undefined ? getWriteTransformFunc(t) : writePassThrough);\n return w.buffer;\n}\n\n/**\n * Serializes any value of packable type to its optimized binary representation \n * identical to the one used by PACK and UNPACK Michelson instructions.\n * Same as {@link packData} but returns a `bytes` Michelson data literal instead of an array\n * \n * ```typescript\n * const data: MichelsonData = {\n * string: \"2019-09-26T10:59:51Z\"\n * };\n * \n * const typ: MichelsonType = {\n * prim: \"timestamp\"\n * };\n * \n * const packed = packDataBytes(data, typ);\n * \n * // { bytes: \"0500a7e8e4d80b\" }\n * ```\n * @param d Data object\n * @param t Optional type definition\n * @returns Binary representation as a bytes literal\n */\nexport function packDataBytes(d: MichelsonData, t?: MichelsonType): BytesLiteral {\n return { bytes: hexBytes(packData(d, t)) };\n}\n\nconst getReadTransformFuncs = (t: MichelsonType): ReadTransformFuncs => {\n if (isPairType(t)) {\n const args = Array.isArray(t) ? t : t.args;\n return [\n (d: Expr) => {\n if (!isPairData(d)) {\n throw new MichelsonTypeError(t, d, `pair expected: ${JSON.stringify(d)}`);\n }\n return (function* () {\n for (const a of args) {\n yield getReadTransformFuncs(a);\n }\n })();\n },\n (d: Expr) => d\n ];\n }\n\n switch (t.prim) {\n case \"or\":\n return [\n (d: Expr) => {\n if (!isOrData(d)) {\n throw new MichelsonTypeError(t, d, `or expected: ${JSON.stringify(d)}`);\n }\n return (function* () {\n yield getReadTransformFuncs(t.args[d.prim === \"Left\" ? 0 : 1]);\n })();\n },\n (d: Expr) => d\n ];\n\n case \"option\":\n return [\n (d: Expr) => {\n if (!isOptionData(d)) {\n throw new MichelsonTypeError(t, d, `option expected: ${JSON.stringify(d)}`);\n }\n return (function* () {\n if (d.prim === \"Some\") {\n yield getReadTransformFuncs(t.args[0]);\n }\n })();\n },\n (d: Expr) => d\n ];\n\n case \"list\":\n case \"set\":\n return [\n (d: Expr) => {\n if (!Array.isArray(d)) {\n throw new MichelsonTypeError(t, d, `${t.prim} expected: ${JSON.stringify(d)}`);\n }\n return (function* () {\n while (true) {\n yield getReadTransformFuncs(t.args[0]);\n }\n })();\n },\n (d: Expr) => d\n ];\n\n case \"map\":\n return [\n (d: Expr): IterableIterator<ReadTransformFuncs> => {\n if (!Array.isArray(d)) {\n throw new MichelsonTypeError(t, d, `map expected: ${JSON.stringify(d)}`);\n }\n return (function* (): Generator<ReadTransformFuncs> {\n while (true) {\n yield [\n (elt: Expr) => {\n if (!(\"prim\" in elt) || elt.prim !== \"Elt\") {\n throw new MichelsonTypeError(t, elt, `map element expected: ${JSON.stringify(elt)}`);\n }\n return (function* () {\n for (const a of t.args) {\n yield getReadTransformFuncs(a);\n }\n })();\n },\n (elt: Expr) => elt\n ];\n }\n })();\n },\n (d: Expr) => d\n ];\n\n case \"chain_id\":\n return [\n () => [][Symbol.iterator](),\n (d: Expr) => {\n if (!(\"bytes\" in d) && !(\"string\" in d)) {\n throw new MichelsonTypeError(t, d, `chain id expected: ${JSON.stringify(d)}`);\n }\n if (\"string\" in d) {\n return d;\n }\n const bytes = parseBytes(d.bytes);\n if (bytes === null) {\n throw new MichelsonTypeError(t, d, `can't parse bytes: ${d.bytes}`);\n }\n return { string: encodeTezosID(\"ChainID\", bytes) };\n }\n ];\n\n case \"signature\":\n return [\n () => [][Symbol.iterator](),\n (d: Expr) => {\n if (!(\"bytes\" in d) && !(\"string\" in d)) {\n throw new MichelsonTypeError(t, d, `signature expected: ${JSON.stringify(d)}`);\n }\n if (\"string\" in d) {\n return d;\n }\n const bytes = parseBytes(d.bytes);\n if (bytes === null) {\n throw new MichelsonTypeError(t, d, `can't parse bytes: ${d.bytes}`);\n }\n return { string: encodeTezosID(\"GenericSignature\", bytes) };\n }\n ];\n\n case \"key_hash\":\n return [\n () => [][Symbol.iterator](),\n (d: Expr) => {\n if (!(\"bytes\" in d) && !(\"string\" in d)) {\n throw new MichelsonTypeError(t, d, `key hash expected: ${JSON.stringify(d)}`);\n }\n if (\"string\" in d) {\n return d;\n }\n const bytes = parseBytes(d.bytes);\n if (bytes === null) {\n throw new MichelsonTypeError(t, d, `can't parse bytes: ${d.bytes}`);\n }\n const rd = new Reader(new Uint8Array(bytes));\n const addr = readPublicKeyHash(rd);\n return { string: encodeTezosID(addr.type, addr.hash) + (addr.entryPoint ? \"%\" + addr.entryPoint : \"\") };\n }\n ];\n\n case \"key\":\n return [\n () => [][Symbol.iterator](),\n (d: Expr) => {\n if (!(\"bytes\" in d) && !(\"string\" in d)) {\n throw new MichelsonTypeError(t, d, `public key expected: ${JSON.stringify(d)}`);\n }\n if (\"string\" in d) {\n return d;\n }\n const bytes = parseBytes(d.bytes);\n if (bytes === null) {\n throw new MichelsonTypeError(t, d, `can't parse bytes: ${d.bytes}`);\n }\n const rd = new Reader(new Uint8Array(bytes));\n const pk = readPublicKey(rd);\n return { string: encodeTezosID(pk.type, pk.publicKey) };\n }\n ];\n\n case \"address\":\n return [\n () => [][Symbol.iterator](),\n (d: Expr) => {\n if (!(\"bytes\" in d) && !(\"string\" in d)) {\n throw new MichelsonTypeError(t, d, `address expected: ${JSON.stringify(d)}`);\n }\n if (\"string\" in d) {\n return d;\n }\n const bytes = parseBytes(d.bytes);\n if (bytes === null) {\n throw new MichelsonTypeError(t, d, `can't parse bytes: ${d.bytes}`);\n }\n const rd = new Reader(new Uint8Array(bytes));\n const addr = readAddress(rd);\n return { string: encodeTezosID(addr.type, addr.hash) + (addr.entryPoint ? \"%\" + addr.entryPoint : \"\") };\n }\n ];\n\n case \"timestamp\":\n return [\n () => [][Symbol.iterator](),\n (d: Expr) => {\n if (!(\"int\" in d) && !(\"string\" in d)) {\n throw new MichelsonTypeError(t, d, `address expected: ${JSON.stringify(d)}`);\n }\n if (\"string\" in d) {\n return d;\n }\n const date = new Date(parseInt(d.int, 10) * 1000);\n return { string: date.toISOString().slice(0, 19) + \"Z\" };\n }\n ];\n\n default:\n return readPassThrough;\n }\n};\n\nconst readPassThrough: ReadTransformFuncs = [\n (e: Expr) => {\n if (isPushInstruction(e)) {\n assertMichelsonInstruction(e);\n // capture inlined type definition\n return (function* () {\n yield readPassThrough;\n yield getReadTransformFuncs(e.args[0]);\n })();\n }\n\n return (function* () {\n while (true) {\n yield readPassThrough;\n }\n })();\n },\n (e: Expr) => e\n];\n\n/**\n * Deserialize a byte array into the corresponding Michelson value.\n * Without a type definition (not recommended) the binary data will be treated as a binary form of a generic Michelson expression and returned as is.\n * Type definition allows some types like `timestamp` and `address` and other types usually encoded in optimized binary forms to be transformed \n * back to their string representations like base58 and ISO timestamps.\n * \n * ```typescript\n * const src = [0x05, 0x00, 0xa7, 0xe8, 0xe4, 0xd8, 0x0b];\n * \n * const typ: MichelsonType = {\n * prim: \"timestamp\"\n * };\n * \n * const data = unpackData(src, typ);\n * \n * // { string: \"2019-09-26T10:59:51Z\" }\n * ```\n * \n * Same binary data without a type definition\n * ```typescript\n * const src = [0x05, 0x00, 0xa7, 0xe8, 0xe4, 0xd8, 0x0b];\n * \n * const data = unpackData(src);\n * \n * // { int: \"1569495591\" }\n * ```\n * @param src Byte array\n * @param t Optional type definition\n * @returns Deserialized data\n */\nexport function unpackData(src: number[] | Uint8Array, t?: MichelsonType): MichelsonData {\n const r = new Reader(src);\n if (r.readUint8() !== 5) {\n throw new Error(\"incorrect packed data magic number\");\n }\n const ex = readExpr(r, t !== undefined ? getReadTransformFuncs(t) : readPassThrough);\n if (assertMichelsonData(ex)) {\n return ex;\n }\n throw new Error(); // never\n}\n\n/**\n * Deserialize a byte array into the corresponding Michelson value.\n * Same as {@link unpackData} but takes a `bytes` Michelson data literal instead of an array\n * \n * ```typescript\n * const src = { bytes: \"0500a7e8e4d80b\" };\n * \n * const typ: MichelsonType = {\n * prim: \"timestamp\"\n * };\n * \n * const data = unpackDataBytes(src, typ);\n * \n * // { string: \"2019-09-26T10:59:51Z\" }\n * ```\n * @param src Bytes object\n * @param t Optional type definition\n * @returns Deserialized data\n */\nexport function unpackDataBytes(src: BytesLiteral, t?: MichelsonType): MichelsonData {\n const bytes = parseBytes(src.bytes);\n if (bytes === null) {\n throw new Error(`can't parse bytes: \"${src.bytes}\"`);\n }\n return unpackData(bytes, t);\n}\n\n// helper functions also used by validator\n\nexport function decodeAddressBytes(b: BytesLiteral): Address {\n const bytes = parseBytes(b.bytes);\n if (bytes === null) {\n throw new Error(`can't parse bytes: \"${b.bytes}\"`);\n }\n const rd = new Reader(new Uint8Array(bytes));\n return readAddress(rd);\n}\n\nexport function decodePublicKeyHashBytes(b: BytesLiteral): Address {\n const bytes = parseBytes(b.bytes);\n if (bytes === null) {\n throw new Error(`can't parse bytes: \"${b.bytes}\"`);\n }\n const rd = new Reader(new Uint8Array(bytes));\n return readPublicKeyHash(rd);\n}\n\nexport function decodePublicKeyBytes(b: BytesLiteral): PublicKey {\n const bytes = parseBytes(b.bytes);\n if (bytes === null) {\n throw new Error(`can't parse bytes: \"${b.bytes}\"`);\n }\n const rd = new Reader(new Uint8Array(bytes));\n return readPublicKey(rd);\n}","import { Prim, Expr } from \"./micheline\";\nimport {\n MichelsonType, MichelsonData, MichelsonMapElt, MichelsonCode, MichelsonTypeOption,\n MichelsonContract, MichelsonContractSection, MichelsonReturnType, MichelsonTypePair,\n MichelsonInstruction, InstructionList, MichelsonTypeID, MichelsonTypeOr,\n DefaultProtocol,\n Protocol,\n refContract,\n MichelsonTypeAddress\n} from \"./michelson-types\";\nimport {\n unpackAnnotations, MichelsonError, isNatural,\n LongInteger, parseBytes, compareBytes, isDecimal,\n checkDecodeTezosID, UnpackedAnnotations, Nullable,\n UnpackAnnotationsOptions, unpackComb, MichelsonTypeError, isPairType, isPairData, parseDate,\n} from \"./utils\";\nimport { decodeBase58Check } from \"./base58\";\nimport { decodeAddressBytes, decodePublicKeyBytes, decodePublicKeyHashBytes } from \"./binary\";\nimport {\n assertMichelsonComparableType,\n assertMichelsonPackableType, assertMichelsonStorableType,\n assertMichelsonBigMapStorableType, assertMichelsonPushableType, isInstruction, assertDataListIfAny\n} from \"./michelson-validator\";\nimport { ParserOptions } from \"./micheline-parser\";\n\nexport interface Context extends ParserOptions {\n contract?: MichelsonContract;\n traceCallback?: (t: InstructionTrace) => void;\n}\n\nexport class MichelsonInstructionError extends MichelsonError<MichelsonCode> {\n /**\n * @param val Value of a type node caused the error\n * @param stackState Current stack state\n * @param message An error message\n */\n constructor(val: MichelsonCode, public stackState: MichelsonReturnType, message?: string) {\n super(val, message);\n Object.setPrototypeOf(this, MichelsonInstructionError.prototype);\n }\n}\n\n// 'sequence as a pair' edo syntax helpers\nfunction typeID(t: MichelsonType): MichelsonTypeID {\n return Array.isArray(t) ? \"pair\" : t.prim;\n}\n\ntype TypeArgs<T extends MichelsonType> = T extends Prim ? T[\"args\"] : T;\nfunction typeArgs<T extends MichelsonType>(t: T): TypeArgs<T> {\n return (\"prim\" in t ? (t as Extract<MichelsonType, Prim>).args : t) as TypeArgs<T>;\n}\n\nfunction assertScalarTypesEqual(a: MichelsonType, b: MichelsonType, field: boolean = false): void {\n if (typeID(a) !== typeID(b)) {\n throw new MichelsonTypeError(a, undefined, `types mismatch: ${typeID(a)} != ${typeID(b)}`);\n }\n\n const ann = [unpackAnnotations(a), unpackAnnotations(b)];\n if (ann[0].t && ann[1].t && ann[0].t[0] !== ann[1].t[0]) {\n throw new MichelsonTypeError(a, undefined, `${typeID(a)}: type names mismatch: ${ann[0].t[0]} != ${ann[1].t[0]}`);\n }\n if (field &&\n (ann[0].f && ann[1].f && ann[0].f[0] !== ann[1].f[0])) {\n throw new MichelsonTypeError(a, undefined, `${typeID(a)}: field names mismatch: ${ann[0].f[0]} != ${ann[1].f}`);\n }\n\n if (isPairType(a)) {\n const aArgs = unpackComb(\"pair\", a);\n const bArgs = unpackComb(\"pair\", b as typeof a);\n assertScalarTypesEqual(aArgs.args[0], bArgs.args[0], true);\n assertScalarTypesEqual(aArgs.args[1], bArgs.args[1], true);\n return;\n }\n\n switch (a.prim) {\n case \"option\":\n case \"list\":\n case \"contract\":\n case \"set\":\n case \"ticket\":\n assertScalarTypesEqual(a.args[0], (b as typeof a).args[0]);\n break;\n\n case \"or\":\n assertScalarTypesEqual(a.args[0], (b as typeof a).args[0], true);\n assertScalarTypesEqual(a.args[1], (b as typeof a).args[1], true);\n break;\n\n case \"lambda\":\n case \"map\":\n case \"big_map\":\n assertScalarTypesEqual(a.args[0], (b as typeof a).args[0]);\n assertScalarTypesEqual(a.args[1], (b as typeof a).args[1]);\n break;\n\n case \"sapling_state\":\n case \"sapling_transaction\":\n if (parseInt(a.args[0].int, 10) !== parseInt((b as typeof a).args[0].int, 10)) {\n throw new MichelsonTypeError(a, undefined, `${typeID(a)}: type argument mismatch: ${a.args[0].int} != ${(b as typeof a).args[0].int}`);\n }\n }\n}\n\nfunction assertStacksEqual<T1 extends MichelsonType[], T2 extends T1>(a: T1, b: T2): void {\n if (a.length !== b.length) {\n throw new MichelsonTypeError(a, undefined, `stack length mismatch: ${a.length} != ${b.length}`);\n }\n for (let i = 0; i < a.length; i++) {\n assertScalarTypesEqual(a[i], b[i]);\n }\n}\n\nexport function assertTypeAnnotationsValid(t: MichelsonType, field: boolean = false): void {\n if (!Array.isArray(t)) {\n const ann = unpackAnnotations(t);\n if ((ann.t?.length || 0) > 1) {\n throw new MichelsonTypeError(t, undefined, `${t.prim}: at most one type annotation allowed: ${t.annots}`);\n }\n\n if (field) {\n if ((ann.f?.length || 0) > 1) {\n throw new MichelsonTypeError(t, undefined, `${t.prim}: at most one field annotation allowed: ${t.annots}`);\n }\n } else {\n if ((ann.f?.length || 0) > 0) {\n throw new MichelsonTypeError(t, undefined, `${t.prim}: field annotations aren't allowed: ${t.annots}`);\n }\n }\n }\n\n if (isPairType(t)) {\n const args = typeArgs(t);\n for (const a of args) {\n assertTypeAnnotationsValid(a, true);\n }\n return;\n }\n\n switch (t.prim) {\n case \"option\":\n case \"list\":\n case \"contract\":\n case \"set\":\n assertTypeAnnotationsValid(t.args[0]);\n break;\n\n case \"or\":\n for (const a of t.args) {\n assertTypeAnnotationsValid(a, true);\n }\n break;\n\n case \"lambda\":\n case \"map\":\n case \"big_map\":\n assertTypeAnnotationsValid(t.args[0]);\n assertTypeAnnotationsValid(t.args[1]);\n }\n}\n\n// Data integrity check\n\nfunction compareMichelsonData(t: MichelsonType, a: MichelsonData, b: MichelsonData): number {\n if (isPairType(t)) {\n if (isPairData(a) && isPairData(b)) {\n assertDataListIfAny(a);\n assertDataListIfAny(b);\n const tComb = unpackComb(\"pair\", t);\n const aComb = unpackComb(\"Pair\", a);\n const bComb = unpackComb(\"Pair\", b);\n const x = compareMichelsonData(tComb.args[0], aComb.args[0], bComb.args[0]);\n if (x !== 0) {\n return x;\n }\n return compareMichelsonData(tComb.args[0], aComb.args[1], bComb.args[1]);\n }\n } else {\n switch (t.prim) {\n case \"int\":\n case \"nat\":\n case \"mutez\":\n if ((\"int\" in a) && (\"int\" in b)) {\n return new LongInteger(a.int).cmp(new LongInteger(b.int));\n }\n break;\n\n case \"string\":\n if ((\"string\" in a) && (\"string\" in b)) {\n const x = a.string.localeCompare(b.string);\n return x < 0 ? -1 : x > 0 ? 1 : 0;\n }\n break;\n\n case \"bytes\":\n if ((\"bytes\" in a) && (\"bytes\" in b)) {\n const aa = parseBytes(a.bytes);\n const bb = parseBytes(b.bytes);\n if (aa !== null && bb !== null) {\n return compareBytes(aa, bb);\n }\n }\n break;\n\n case \"bool\":\n if ((\"prim\" in a) && (\"prim\" in b) && (a.prim === \"True\" || a.prim === \"False\") && (b.prim === \"True\" || b.prim === \"False\")) {\n return a.prim === b.prim ? 0 : a.prim === \"False\" ? -1 : 1;\n }\n break;\n\n case \"key\":\n case \"key_hash\":\n case \"address\":\n case \"signature\":\n case \"chain_id\":\n if ((\"string\" in a || \"bytes\" in a) && (\"string\" in b || \"bytes\" in b)) {\n return compareBytes(\"string\" in a ? decodeBase58Check(a.string) : parseBytes(a.bytes) || [], \"string\" in b ? decodeBase58Check(b.string) : parseBytes(b.bytes) || []);\n }\n break;\n\n case \"timestamp\":\n if (((\"string\" in a) || (\"int\" in a)) && ((\"string\" in b) || (\"int\" in b))) {\n const aa = parseDate(a);\n const bb = parseDate(b);\n if (aa !== null && bb !== null) {\n const x = aa.valueOf() - bb.valueOf();\n return x < 0 ? -1 : x > 0 ? 1 : 0;\n }\n }\n break;\n\n case \"unit\":\n if ((\"prim\" in a) && (\"prim\" in b) && a.prim === \"Unit\" && b.prim === \"Unit\") {\n return 0;\n }\n }\n }\n\n // Unlikely, types are expected to be verified before the function call\n throw new MichelsonTypeError(t, undefined, `${typeID(t)}: not comparable values: ${JSON.stringify(a)}, ${JSON.stringify(b)}`);\n}\n\n// Simplified version of assertMichelsonInstruction() for previously validated data\nfunction isFunction(d: MichelsonData): d is InstructionList {\n if (!Array.isArray(d)) {\n return false;\n }\n for (const v of d) {\n if (!(Array.isArray(v) && isFunction(v) ||\n (\"prim\" in v) && isInstruction(v))) {\n return false;\n }\n }\n return true;\n}\n\nfunction assertDataValidInternal(d: MichelsonData, t: MichelsonType, ctx: Context | null): void {\n if (isPairType(t)) {\n if (isPairData(d)) {\n assertDataListIfAny(d);\n const dc = unpackComb(\"Pair\", d);\n const tc = unpackComb(\"pair\", t);\n assertDataValidInternal(dc.args[0], tc.args[0], ctx);\n assertDataValidInternal(dc.args[1], tc.args[1], ctx);\n return;\n }\n throw new MichelsonTypeError(t, d, `pair expected: ${JSON.stringify(d)}`);\n }\n\n switch (t.prim) {\n // Atomic literals\n case \"int\":\n if ((\"int\" in d) && isDecimal(d.int)) {\n return;\n }\n throw new MichelsonTypeError(t, d, `integer value expected: ${JSON.stringify(d)}`);\n\n case \"nat\":\n case \"mutez\":\n if ((\"int\" in d) && isNatural(d.int)) {\n return;\n }\n throw new MichelsonTypeError(t, d, `natural value expected: ${JSON.stringify(d)}`);\n\n case \"string\":\n if (\"string\" in d) {\n return;\n }\n throw new MichelsonTypeError(t, d, `string value expected: ${JSON.stringify(d)}`);\n\n case \"bytes\":\n case \"bls12_381_g1\":\n case \"bls12_381_g2\":\n if (\"bytes\" in d && parseBytes(d.bytes) !== null) {\n return;\n }\n throw new MichelsonTypeError(t, d, `bytes value expected: ${JSON.stringify(d)}`);\n\n case \"bool\":\n if ((\"prim\" in d) && (d.prim === \"True\" || d.prim === \"False\")) {\n return;\n }\n throw new MichelsonTypeError(t, d, `boolean value expected: ${JSON.stringify(d)}`);\n\n case \"key_hash\":\n if ((\"string\" in d) &&\n checkDecodeTezosID(d.string,\n \"ED25519PublicKeyHash\",\n \"SECP256K1PublicKeyHash\",\n \"P256PublicKeyHash\") !== null) {\n return;\n } else if (\"bytes\" in d) {\n try {\n decodePublicKeyHashBytes(d);\n return;\n } catch (err) {\n // ignore message\n }\n }\n throw new MichelsonTypeError(t, d, `key hash expected: ${JSON.stringify(d)}`);\n\n case \"timestamp\":\n if (((\"string\" in d) || (\"int\" in d)) && parseDate(d) !== null) {\n return;\n }\n throw new MichelsonTypeError(t, d, `timestamp expected: ${JSON.stringify(d)}`);\n\n case \"address\":\n if (\"string\" in d) {\n let address = d.string;\n const ep = d.string.indexOf(\"%\");\n if (ep >= 0) {\n // trim entry point\n address = d.string.slice(0, ep);\n }\n if (checkDecodeTezosID(address,\n \"ED25519PublicKeyHash\",\n \"SECP256K1PublicKeyHash\",\n \"P256PublicKeyHash\",\n \"ContractHash\") !== null) {\n return;\n }\n } else if (\"bytes\" in d) {\n try {\n decodeAddressBytes(d);\n return;\n } catch (err) {\n // ignore message\n }\n }\n throw new MichelsonTypeError(t, d, `address expected: ${JSON.stringify(d)}`);\n\n case \"key\":\n if ((\"string\" in d) &&\n checkDecodeTezosID(d.string,\n \"ED25519PublicKey\",\n \"SECP256K1PublicKey\",\n \"P256PublicKey\") !== null) {\n return;\n } else if (\"bytes\" in d) {\n try {\n decodePublicKeyBytes(d);\n return;\n } catch (err) {\n // ignore message\n }\n }\n throw new MichelsonTypeError(t, d, `public key expected: ${JSON.stringify(d)}`);\n\n case \"unit\":\n if ((\"prim\" in d) && d.prim === \"Unit\") {\n return;\n }\n throw new MichelsonTypeError(t, d, `unit value expected: ${JSON.stringify(d)}`);\n\n case \"signature\":\n if ((\"bytes\" in d) || (\"string\" in d) &&\n checkDecodeTezosID(d.string,\n \"ED25519Signature\",\n \"SECP256K1Signature\",\n \"P256Signature\",\n \"GenericSignature\") !== null) {\n return;\n }\n throw new MichelsonTypeError(t, d, `signature expected: ${JSON.stringify(d)}`);\n\n case \"chain_id\":\n if (\"bytes\" in d || \"string\" in d) {\n const x = \"string\" in d ? decodeBase58Check(d.string) : parseBytes(d.bytes);\n if (x !== null) {\n return;\n }\n }\n throw new MichelsonTypeError(t, d, `chain id expected: ${JSON.stringify(d)}`);\n\n case \"operation\":\n throw new MichelsonTypeError(t, d, \"operation type can't be represented as a literal value\");\n\n case \"contract\":\n throw new MichelsonTypeError(t, d, \"contract type can't be represented as a literal value\");\n\n // Complex types\n case \"option\":\n if (\"prim\" in d) {\n if (d.prim === \"None\") {\n return;\n } else if (d.prim === \"Some\") {\n assertDataValidInternal(d.args[0], t.args[0], ctx);\n return;\n }\n }\n throw new MichelsonTypeError(t, d, `option expected: ${JSON.stringify(d)}`);\n\n case \"list\":\n case \"set\":\n if (assertDataListIfAny(d)) {\n let prev: MichelsonData | undefined;\n for (const v of d) {\n assertDataValidInternal(v, t.args[0], ctx);\n if (t.prim === \"set\") {\n if (prev === undefined) {\n prev = v;\n } else if (compareMichelsonData(t.args[0], prev, v) > 0) {\n throw new MichelsonTypeError(t, d, `set elements must be ordered: ${JSON.stringify(d)}`);\n }\n }\n }\n return;\n }\n throw new MichelsonTypeError(t, d, `${t.prim} expected: ${JSON.stringify(d)}`);\n\n case \"or\":\n if (\"prim\" in d) {\n if (d.prim === \"Left\") {\n assertDataValidInternal(d.args[0], t.args[0], ctx);\n return;\n } else if (d.prim === \"Right\") {\n assertDataValidInternal(d.args[0], t.args[1], ctx);\n return;\n }\n }\n throw new MichelsonTypeError(t, d, `union (or) expected: ${JSON.stringify(d)}`);\n\n case \"lambda\":\n if (isFunction(d)) {\n const ret = functionTypeInternal(d, [t.args[0]], ctx);\n if (\"failed\" in ret) {\n throw new MichelsonTypeError(t, d, `function is failed with error type: ${ret.failed}`);\n }\n if (ret.length !== 1) {\n throw new MichelsonTypeError(t, d, `function must return a value`);\n }\n assertScalarTypesEqual(t.args[1], ret[0]);\n return;\n }\n throw new MichelsonTypeError(t, d, `function expected: ${JSON.stringify(d)}`);\n\n case \"map\":\n case \"big_map\":\n if (Array.isArray(d)) {\n let prev: MichelsonMapElt | undefined;\n for (const v of d) {\n if (!(\"prim\" in v) || v.prim !== \"Elt\") {\n throw new MichelsonTypeError(t, d, `map elements expected: ${JSON.stringify(d)}`);\n }\n assertDataValidInternal(v.args[0], t.args[0], ctx);\n assertDataValidInternal(v.args[1], t.args[1], ctx);\n if (prev === undefined) {\n prev = v;\n } else if (compareMichelsonData(t.args[0], prev.args[0], v.args[0]) > 0) {\n throw new MichelsonTypeError(t, d, `map elements must be ordered: ${JSON.stringify(d)}`);\n }\n }\n return;\n }\n throw new MichelsonTypeError(t, d, `${t.prim} expected: ${JSON.stringify(d)}`);\n\n case \"bls12_381_fr\":\n if (\"int\" in d && isDecimal(d.int) || \"bytes\" in d && parseBytes(d.bytes) !== null) {\n return;\n }\n throw new MichelsonTypeError(t, d, `BLS12-381 element expected: ${JSON.stringify(d)}`);\n\n case \"sapling_state\":\n if (Array.isArray(d)) {\n return;\n }\n throw new MichelsonTypeError(t, d, `sapling state expected: ${JSON.stringify(d)}`);\n\n case \"ticket\":\n assertDataValidInternal(d, {\n prim: \"pair\", args: [\n { prim: \"address\" },\n t.args[0],\n { prim: \"nat\" },\n ]\n }, ctx);\n return;\n\n default:\n throw new MichelsonTypeError(t, d, `unexpected type: ${typeID(t)}`);\n }\n}\n\n// Code validation\n\ntype StackType<T extends (MichelsonTypeID[] | null)[]> = {\n [N in keyof T]: T[N] extends MichelsonTypeID[] ? MichelsonType<T[N][number]> : MichelsonType;\n};\n\nexport interface InstructionTrace {\n op: MichelsonCode;\n in: MichelsonType[];\n out: MichelsonReturnType;\n}\n\nfunction instructionListType(inst: InstructionList, stack: MichelsonType[], ctx: Context | null): MichelsonReturnType {\n let ret: MichelsonReturnType = stack;\n let s = stack;\n let i = 0;\n for (const op of inst) {\n const ft = functionTypeInternal(op, s, ctx);\n ret = ft;\n if (\"failed\" in ft) {\n break;\n }\n s = ft;\n i++;\n }\n\n if ((\"failed\" in ret) && i !== inst.length - 1) {\n throw new MichelsonInstructionError(inst, ret, \"FAIL must appear in a tail position\");\n }\n\n if (ctx?.traceCallback !== undefined) {\n const trace: InstructionTrace = {\n op: inst,\n in: stack,\n out: ret,\n };\n ctx.traceCallback(trace);\n }\n return ret;\n}\n\nfunction functionTypeInternal(inst: MichelsonCode, stack: MichelsonType[], ctx: Context | null): MichelsonReturnType {\n const proto = ctx?.protocol || DefaultProtocol;\n\n if (Array.isArray(inst)) {\n return instructionListType(inst, stack, ctx);\n }\n const instruction = inst; // Make it const for type guarding\n\n // make sure the stack has enough number of arguments of specific types\n function args<T extends (MichelsonTypeID[] | null)[]>(n: number, ...typeIds: T): StackType<T> {\n if (stack.length < typeIds.length + n) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: stack must have at least ${typeIds.length} element(s)`);\n }\n\n let i = n;\n for (const ids of typeIds) {\n if (ids !== null && ids.length !== 0) {\n let ii = 0;\n while (ii < ids.length && ids[ii] !== typeID(stack[i])) {\n ii++;\n }\n if (ii === ids.length) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: stack type mismatch: [${i}] expected to be ${ids}, got ${typeID(stack[i])} instead`);\n }\n }\n i++;\n }\n return stack.slice(n, typeIds.length + n) as StackType<T>;\n }\n\n function rethrow<T extends unknown[], U>(fn: (...args: T) => U) {\n return (...args: T): U => {\n try {\n return fn(...args);\n } catch (err) {\n if (err instanceof MichelsonError) {\n throw new MichelsonInstructionError(instruction, stack, err.message);\n } else {\n throw err;\n }\n }\n };\n }\n\n function rethrowTypeGuard<T extends Expr, U extends MichelsonType & T>(fn: (arg: T) => arg is U) {\n return (arg: T): arg is U => {\n try {\n return fn(arg);\n } catch (err) {\n if (err instanceof MichelsonError) {\n throw new MichelsonInstructionError(instruction, stack, err.message);\n } else {\n throw err;\n }\n }\n };\n }\n\n const argAnn = rethrow(unpackAnnotations);\n const ensureStacksEqual = rethrow(assertStacksEqual);\n const ensureTypesEqual = rethrow(assertScalarTypesEqual);\n const ensureComparableType = rethrowTypeGuard(assertMichelsonComparableType);\n const ensurePackableType = rethrowTypeGuard(assertMichelsonPackableType);\n const ensureStorableType = rethrowTypeGuard(assertMichelsonStorableType);\n const ensurePushableType = rethrowTypeGuard(assertMichelsonPushableType);\n const ensureBigMapStorableType = rethrowTypeGuard(assertMichelsonBigMapStorableType);\n\n // unpack instruction annotations and assert their maximum number\n function instructionAnn(num: { f?: number; t?: number; v?: number }, opt?: UnpackAnnotationsOptions) {\n const a = argAnn(instruction, {\n ...opt,\n emptyFields: num.f !== undefined && num.f > 1,\n emptyVar: num.v !== undefined && num.v > 1,\n });\n const assertNum = (a: string[] | undefined, n: number | undefined, type: string) => {\n if (a && a.length > (n || 0)) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: at most ${n || 0} ${type} annotations allowed`);\n }\n };\n assertNum(a.f, num.f, \"field\");\n assertNum(a.t, num.t, \"type\");\n assertNum(a.v, num.v, \"variable\");\n return a;\n }\n\n // also keeps annotation class if null is provided\n function annotate<T extends MichelsonType>(tt: T, a: Nullable<UnpackedAnnotations>): T {\n const tx: MichelsonType = tt;\n const t: Extract<MichelsonType, Prim> = Array.isArray(tx) ? { prim: \"pair\", args: tx } : tx;\n const src = argAnn(t);\n const ann = (a.v !== undefined || a.t !== undefined || a.f !== undefined) ?\n [\n ...((a.v === null ? src.v : a.v) || []),\n ...((a.t === null ? src.t : a.t) || []),\n ...((a.f === null ? src.f : a.f) || [])\n ] : undefined;\n\n const { annots, ...rest } = t;\n return { ...(rest as T), ...(ann && ann.length !== 0 && { annots: ann }) };\n }\n\n // shortcut to copy at most one variable annotation from the instruction to the type\n function annotateVar<T extends MichelsonType>(t: T, def?: string) {\n const ia = instructionAnn({ v: 1 });\n return annotate(t, { v: ia.v !== undefined ? ia.v : def !== undefined ? [def] : null, t: null });\n }\n\n // annotate CAR/CDR/UNPAIR/GET\n function annotateField(arg: MichelsonTypePair<MichelsonType[]>, field: MichelsonType, insAnn: UnpackedAnnotations, n: number, defField: string): MichelsonType {\n const fieldAnn = argAnn(field).f?.[0]; // field's field annotation\n const insFieldAnn = insAnn.f?.[n];\n if (insFieldAnn !== undefined && insFieldAnn !== \"%\" && fieldAnn !== undefined && insFieldAnn !== fieldAnn) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: field names doesn't match: ${insFieldAnn} !== ${fieldAnn}`);\n }\n const insVarAnn = insAnn.v?.[n]; // nth instruction's variable annotation\n const varAnn = argAnn(arg).v?.[0]; // instruction argument's variable annotation\n return annotate(field, {\n t: null,\n v: insVarAnn ?\n insVarAnn === \"@%\" ?\n fieldAnn ? [\"@\" + fieldAnn.slice(1)] : undefined :\n insVarAnn === \"@%%\" ?\n varAnn ?\n [\"@\" + varAnn.slice(1) + \".\" + (fieldAnn ? fieldAnn.slice(1) : defField)] :\n fieldAnn ? [\"@\" + fieldAnn.slice(1)] : undefined :\n [insVarAnn] :\n null,\n });\n }\n\n // comb helper functions\n function getN(src: MichelsonTypePair<MichelsonType[]>, n: number, i: number = n): MichelsonType[] {\n const p = unpackComb(\"pair\", src);\n if (i === 1) {\n return [p.args[0]];\n } else if (i === 2) {\n return p.args;\n }\n const right = p.args[1];\n if (isPairType(right)) {\n return [p.args[0], ...getN(right, n, i - 1)];\n } else {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: at least ${n} fields are expected`);\n }\n }\n\n function getNth(src: MichelsonTypePair<MichelsonType[]>, n: number, i: number = n): MichelsonType {\n if (i === 0) {\n return src;\n }\n const p = unpackComb(\"pair\", src);\n if (i === 1) {\n return p.args[0];\n }\n const right = p.args[1];\n if (isPairType(right)) {\n return getNth(right, n, i - 2);\n } else if (i === 2) {\n return right;\n }\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: at least ${n + 1} fields are expected`);\n }\n\n function updateNth(src: MichelsonTypePair<MichelsonType[]>, x: MichelsonType, n: number, i: number = n): MichelsonType {\n if (i === 0) {\n return x;\n }\n const p = unpackComb(\"pair\", src);\n if (i === 1) {\n return {\n ...p,\n args: [x, p.args[1]],\n };\n }\n const right = p.args[1];\n if (isPairType(right)) {\n return {\n ...p,\n args: [p.args[0], updateNth(right, x, n, i - 2)],\n };\n } else if (i === 2) {\n return {\n ...p,\n args: [p.args[0], x],\n };\n }\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: at least ${n + 1} fields are expected`);\n }\n\n const varSuffix = (a: UnpackedAnnotations, suffix: string) => [\"@\" + (a.v ? a.v[0].slice(1) + \".\" : \"\") + suffix];\n\n function branchType(br0: MichelsonReturnType, br1: MichelsonReturnType): MichelsonReturnType {\n if ((\"failed\" in br0) || (\"failed\" in br1)) {\n // Might be useful for debugging\n if ((\"failed\" in br0) && (\"failed\" in br1)) {\n try {\n assertScalarTypesEqual(br0.failed, br1.failed);\n return br0;\n } catch {\n return { failed: { prim: \"or\", args: [br0.failed, br1.failed] } };\n }\n } else {\n return (\"failed\" in br0) ? br1 : br0;\n }\n } else {\n ensureStacksEqual(br0, br1);\n return br0;\n }\n }\n\n const retStack = ((instruction: MichelsonInstruction): MichelsonReturnType => {\n switch (instruction.prim) {\n case \"DUP\":\n {\n const n = instruction.args ? parseInt(instruction.args[0].int, 10) : 1;\n if (n === 0) {\n throw new MichelsonInstructionError(instruction, stack, \"DUP 0 is forbidden\");\n }\n const s = args(n - 1, null)[0];\n if (typeID(s) === \"ticket\") {\n throw new MichelsonInstructionError(instruction, stack, \"ticket can't be DUPed\");\n }\n return [s, ...stack];\n }\n\n case \"SWAP\":\n {\n const s = args(0, null, null);\n instructionAnn({});\n return [s[1], s[0], ...stack.slice(2)];\n }\n\n case \"SOME\":\n return [annotate({ prim: \"option\", args: [args(0, null)[0]] }, instructionAnn({ t: 1, v: 1 })), ...stack.slice(1)];\n\n case \"UNIT\":\n return [annotate({ prim: \"unit\" }, instructionAnn({ v: 1, t: 1 })), ...stack];\n\n case \"PAIR\":\n {\n const n = instruction.args ? parseInt(instruction.args[0].int, 10) : 2;\n if (n < 2) {\n throw new MichelsonInstructionError(instruction, stack, `PAIR ${n} is forbidden`);\n }\n const s = args(0, ...new Array<null>(n).fill(null));\n const ia = instructionAnn({ f: n, t: 1, v: 1 }, { specialFields: true });\n const trim = (s: string) => {\n const i = s.lastIndexOf(\".\");\n return s.slice(i > 0 ? i + 1 : 1);\n };\n const retArgs = s.map((v, i) => {\n const va = argAnn(v);\n const f = ia.f && ia.f.length > i && ia.f[i] !== \"%\" ?\n ia.f[i] === \"%@\" ?\n va.v ? [\"%\" + trim(va.v?.[0] || \"\")] : undefined :\n [ia.f[i]] :\n undefined;\n return annotate(v, { v: null, t: null, f });\n });\n return [\n annotate({\n prim: \"pair\",\n args: retArgs,\n }, { t: ia.t, v: ia.v }),\n ...stack.slice(n)\n ];\n }\n\n case \"UNPAIR\":\n {\n const n = instruction.args ? parseInt(instruction.args[0].int, 10) : 2;\n if (n < 2) {\n throw new MichelsonInstructionError(instruction, stack, `UNPAIR ${n} is forbidden`);\n }\n const s = args(0, [\"pair\"])[0];\n const ia = instructionAnn({ f: 2, v: 2 }, { specialVar: true });\n const fields = getN(s, n);\n return [...fields.map((field, i) => annotateField(s, field, ia, i, i === 0 ? \"car\" : \"cdr\")), ...stack.slice(1)];\n }\n\n case \"CAR\":\n case \"CDR\":\n {\n const s = unpackComb(\"pair\", args(0, [\"pair\"])[0]);\n const field = s.args[instruction.prim === \"CAR\" ? 0 : 1];\n const ia = instructionAnn({ f: 1, v: 1 }, { specialVar: true });\n return [annotateField(s, field, ia, 0, instruction.prim.toLocaleLowerCase()), ...stack.slice(1)];\n }\n\n case \"CONS\":\n {\n const s = args(0, null, [\"list\"]);\n ensureTypesEqual(s[0], s[1].args[0]);\n return [annotateVar({ prim: \"list\", args: [s[1].args[0]] }), ...stack.slice(2)];\n }\n\n case \"SIZE\":\n args(0, [\"string\", \"list\", \"set\", \"map\", \"bytes\"]);\n return [annotateVar({ prim: \"nat\" }), ...stack.slice(1)];\n\n case \"MEM\":\n {\n const s = args(0, null, [\"set\", \"map\", \"big_map\"]);\n ensureComparableType(s[0]);\n ensureTypesEqual(s[0], s[1].args[0]);\n return [annotateVar({ prim: \"bool\" }), ...stack.slice(2)];\n }\n\n case \"GET\":\n if (instruction.args) {\n // comb operation\n const n = parseInt(instruction.args[0].int, 10);\n const s = args(0, [\"pair\"])[0];\n return [annotateVar(getNth(s, n)), ...stack.slice(1)];\n } else {\n // map operation\n const s = args(0, null, [\"map\", \"big_map\"]);\n ensureComparableType(s[0]);\n ensureTypesEqual(s[0], s[1].args[0]);\n return [annotateVar({ prim: \"option\", args: [s[1].args[1]] }), ...stack.slice(2)];\n }\n\n case \"UPDATE\":\n if (instruction.args) {\n // comb operation\n const n = parseInt(instruction.args[0].int, 10);\n const s = args(0, null, [\"pair\"]);\n return [annotateVar(updateNth(s[1], s[0], n)), ...stack.slice(2)];\n\n } else {\n // map operation\n const s0 = args(0, null, [\"bool\", \"option\"]);\n ensureComparableType(s0[0]);\n if (s0[1].prim === \"bool\") {\n const s1 = args(2, [\"set\"]);\n ensureTypesEqual(s0[0], s1[0].args[0]);\n return [annotateVar({\n prim: \"set\",\n args: [annotate(s0[0], { t: null })],\n }), ...stack.slice(3)];\n }\n\n const s1 = args(2, [\"map\", \"big_map\"]);\n ensureTypesEqual(s0[0], s1[0].args[0]);\n if (s1[0].prim === \"map\") {\n return [annotateVar({\n prim: \"map\",\n args: [\n annotate(s0[0], { t: null }),\n annotate(s0[1].args[0], { t: null }),\n ],\n }), ...stack.slice(3)];\n }\n ensureBigMapStorableType(s0[1].args[0]);\n return [annotateVar({\n prim: \"big_map\",\n args: [\n annotate(s0[0], { t: null }),\n annotate(s0[1].args[0], { t: null }),\n ],\n }), ...stack.slice(3)];\n }\n\n case \"GET_AND_UPDATE\":\n {\n const ia = instructionAnn({ v: 2 });\n const s = args(0, null, [\"option\"], [\"map\", \"big_map\"]);\n ensureComparableType(s[0]);\n ensureTypesEqual(s[0], s[2].args[0]);\n ensureTypesEqual(s[1].args[0], s[2].args[1]);\n const va = ia.v?.map(v => v !== \"@\" ? [v] : undefined);\n if (s[2].prim === \"map\") {\n return [\n annotate({ prim: \"option\", args: [s[2].args[1]] }, { v: va?.[0] }),\n annotate({\n prim: \"map\",\n args: [\n annotate(s[0], { t: null }),\n annotate(s[1].args[0], { t: null }),\n ],\n }, { v: va?.[1] }),\n ...stack.slice(3),\n ];\n }\n ensureBigMapStorableType(s[1].args[0]);\n return [\n annotate({ prim: \"option\", args: [s[2].args[1]] }, { v: va?.[0] }),\n annotate({\n prim: \"big_map\",\n args: [\n annotate(s[0], { t: null }),\n annotate(s[1].args[0], { t: null }),\n ],\n }, { v: va?.[1] }),\n ...stack.slice(3),\n ];\n }\n\n case \"EXEC\":\n {\n const s = args(0, null, [\"lambda\"]);\n ensureTypesEqual(s[0], s[1].args[0]);\n return [annotateVar(s[1].args[1]), ...stack.slice(2)];\n }\n\n case \"APPLY\":\n {\n const s = args(0, null, [\"lambda\"]);\n ensureStorableType(s[0]);\n ensurePushableType(s[0]);\n if (!isPairType(s[1].args[0])) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: function's argument must be a pair: ${typeID(s[1].args[0])}`);\n }\n const pt = s[1].args[0];\n ensureTypesEqual(s[0], typeArgs(pt)[0]);\n return [annotateVar({ prim: \"lambda\", args: [typeArgs(pt)[1], s[1].args[1]] }), ...stack.slice(2)];\n }\n\n case \"FAILWITH\":\n {\n const s = args(0, null)[0];\n if (proto === Protocol.PtEdo2Zk || proto === Protocol.PsFLorena || proto === Protocol.PtGRANADs) {\n ensurePackableType(s);\n }\n return { failed: s };\n }\n\n case \"NEVER\":\n args(0, [\"never\"]);\n return { failed: { prim: \"never\" } };\n\n\n case \"RENAME\":\n return [annotateVar(args(0, null)[0]), ...stack.slice(1)];\n\n case \"CONCAT\":\n {\n const s0 = args(0, [\"string\", \"list\", \"bytes\"]);\n if (s0[0].prim === \"list\") {\n if (typeID(s0[0].args[0]) !== \"string\" && typeID(s0[0].args[0]) !== \"bytes\") {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: can't concatenate list of ${typeID(s0[0].args[0])}'s`);\n }\n return [annotateVar(s0[0].args[0]), ...stack.slice(1)];\n }\n const s1 = args(1, [\"string\", \"bytes\"]);\n if (s0[0].prim !== s1[0].prim) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: can't concatenate ${s0[0].prim} with ${s1[0].prim}`);\n }\n return [annotateVar(s1[0]), ...stack.slice(2)];\n }\n\n case \"SLICE\":\n return [annotateVar({ prim: \"option\", args: [args(0, [\"nat\"], [\"nat\"], [\"string\", \"bytes\"])[2]] }, \"@slice\"), ...stack.slice(3)];\n\n case \"PACK\":\n {\n const s = args(0, null)[0];\n ensurePackableType(s);\n return [annotateVar({ prim: \"bytes\" }, \"@packed\"), ...stack.slice(1)];\n }\n\n case \"ADD\":\n {\n const s = args(0,\n [\"nat\", \"int\", \"timestamp\", \"mutez\", \"bls12_381_g1\", \"bls12_381_g2\", \"bls12_381_fr\"],\n [\"nat\", \"int\", \"timestamp\", \"mutez\", \"bls12_381_g1\", \"bls12_381_g2\", \"bls12_381_fr\"]\n );\n if (s[0].prim === \"nat\" && s[1].prim === \"int\" || s[0].prim === \"int\" && s[1].prim === \"nat\") {\n return [annotateVar({ prim: \"int\" }), ...stack.slice(2)];\n } else if (s[0].prim === \"int\" && s[1].prim === \"timestamp\" || s[0].prim === \"timestamp\" && s[1].prim === \"int\") {\n return [annotateVar({ prim: \"timestamp\" }), ...stack.slice(2)];\n } else if ((s[0].prim === \"int\" || s[0].prim === \"nat\" || s[0].prim === \"mutez\" || s[0].prim === \"bls12_381_g1\" || s[0].prim === \"bls12_381_g2\" || s[0].prim === \"bls12_381_fr\") && s[0].prim === s[1].prim) {\n return [annotateVar(s[0]), ...stack.slice(2)];\n }\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: can't add ${s[0].prim} to ${s[1].prim}`);\n }\n\n case \"SUB\":\n {\n const s = args(0, [\"nat\", \"int\", \"timestamp\", \"mutez\"], [\"nat\", \"int\", \"timestamp\", \"mutez\"]);\n if (((s[0].prim === \"nat\" || s[0].prim === \"int\") && (s[1].prim === \"nat\" || s[1].prim === \"int\")) ||\n s[0].prim === \"timestamp\" && s[1].prim === \"timestamp\") {\n return [annotateVar({ prim: \"int\" }), ...stack.slice(2)];\n } else if (s[0].prim === \"timestamp\" && s[1].prim === \"int\") {\n return [annotateVar({ prim: \"timestamp\" }), ...stack.slice(2)];\n } else if (s[0].prim === \"mutez\" && s[1].prim === \"mutez\") {\n return [annotateVar({ prim: \"mutez\" }), ...stack.slice(2)];\n }\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: can't subtract ${s[0].prim} from ${s[1].prim}`);\n }\n\n case \"MUL\":\n {\n const s = args(0,\n [\"nat\", \"int\", \"mutez\", \"bls12_381_g1\", \"bls12_381_g2\", \"bls12_381_fr\"],\n [\"nat\", \"int\", \"mutez\", \"bls12_381_g1\", \"bls12_381_g2\", \"bls12_381_fr\"]\n );\n if (s[0].prim === \"nat\" && s[1].prim === \"int\" || s[0].prim === \"int\" && s[1].prim === \"nat\") {\n return [annotateVar({ prim: \"int\" }), ...stack.slice(2)];\n } else if (s[0].prim === \"nat\" && s[1].prim === \"mutez\" || s[0].prim === \"mutez\" && s[1].prim === \"nat\") {\n return [annotateVar({ prim: \"mutez\" }), ...stack.slice(2)];\n } else if ((s[0].prim === \"bls12_381_g1\" || s[0].prim === \"bls12_381_g2\" || s[0].prim === \"bls12_381_fr\") && s[1].prim === \"bls12_381_fr\" ||\n (s[0].prim === \"nat\" || s[0].prim === \"int\") && s[0].prim === s[1].prim) {\n return [annotateVar(s[0]), ...stack.slice(2)];\n } else if ((s[0].prim === \"nat\" || s[0].prim === \"int\") && s[1].prim === \"bls12_381_fr\" ||\n (s[1].prim === \"nat\" || s[1].prim === \"int\") && s[0].prim === \"bls12_381_fr\") {\n return [annotateVar({ prim: \"bls12_381_fr\" }), ...stack.slice(2)];\n }\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: can't multiply ${s[0].prim} by ${s[1].prim}`);\n }\n\n case \"EDIV\":\n {\n const res = (a: \"nat\" | \"int\" | \"mutez\", b: \"nat\" | \"int\" | \"mutez\"): MichelsonTypeOption<MichelsonType> => ({ prim: \"option\", args: [{ prim: \"pair\", args: [{ prim: a }, { prim: b }] }] });\n const s = args(0, [\"nat\", \"int\", \"mutez\"], [\"nat\", \"int\", \"mutez\"]);\n if (s[0].prim === \"nat\" && s[1].prim === \"nat\") {\n return [annotateVar(res(\"nat\", \"nat\")), ...stack.slice(2)];\n } else if ((s[0].prim === \"nat\" || s[0].prim === \"int\") && (s[1].prim === \"nat\" || s[1].prim === \"int\")) {\n return [annotateVar(res(\"int\", \"nat\")), ...stack.slice(2)];\n } else if (s[0].prim === \"mutez\" && s[1].prim === \"nat\") {\n return [annotateVar(res(\"mutez\", \"mutez\")), ...stack.slice(2)];\n } else if (s[0].prim === \"mutez\" && s[1].prim === \"mutez\") {\n return [annotateVar(res(\"nat\", \"mutez\")), ...stack.slice(2)];\n }\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: can't euclideally divide ${s[0].prim} by ${s[1].prim}`);\n }\n\n case \"ABS\":\n args(0, [\"int\"]);\n return [annotateVar({ prim: \"nat\" }), ...stack.slice(1)];\n\n case \"ISNAT\":\n args(0, [\"int\"]);\n return [annotateVar({ prim: \"option\", args: [{ prim: \"nat\" }] }), ...stack.slice(1)];\n\n case \"INT\":\n args(0, [\"nat\", \"bls12_381_fr\"]);\n return [annotateVar({ prim: \"int\" }), ...stack.slice(1)];\n\n case \"NEG\":\n {\n const s = args(0, [\"nat\", \"int\", \"bls12_381_g1\", \"bls12_381_g2\", \"bls12_381_fr\"])[0];\n if (s.prim === \"nat\" || s.prim === \"int\") {\n return [annotateVar({ prim: \"int\" }), ...stack.slice(1)];\n }\n return [annotateVar(s), ...stack.slice(1)];\n }\n\n case \"LSL\":\n case \"LSR\":\n args(0, [\"nat\"], [\"nat\"]);\n return [annotateVar({ prim: \"nat\" }), ...stack.slice(2)];\n\n case \"OR\":\n case \"XOR\":\n {\n const s = args(0, [\"nat\", \"bool\"], [\"nat\", \"bool\"]);\n if (s[0].prim !== s[1].prim) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: both arguments must be of the same type: ${s[0].prim}, ${s[1].prim}`);\n }\n return [annotateVar(s[1]), ...stack.slice(2)];\n }\n\n case \"AND\":\n {\n const s = args(0, [\"nat\", \"bool\", \"int\"], [\"nat\", \"bool\"]);\n if ((s[0].prim !== \"int\" || s[1].prim !== \"nat\") && s[0].prim !== s[1].prim) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: both arguments must be of the same type: ${s[0].prim}, ${s[1].prim}`);\n }\n return [annotateVar(s[1]), ...stack.slice(2)];\n }\n\n case \"NOT\":\n {\n const s = args(0, [\"nat\", \"bool\", \"int\"])[0];\n if (s.prim === \"bool\") {\n return [annotateVar({ prim: \"bool\" }), ...stack.slice(1)];\n }\n return [annotateVar({ prim: \"int\" }), ...stack.slice(1)];\n }\n\n case \"COMPARE\":\n {\n const s = args(0, null, null);\n ensureComparableType(s[0]);\n ensureComparableType(s[1]);\n return [annotateVar({ prim: \"int\" }), ...stack.slice(2)];\n }\n\n case \"EQ\":\n case \"NEQ\":\n case \"LT\":\n case \"GT\":\n case \"LE\":\n case \"GE\":\n args(0, [\"int\"]);\n return [annotateVar({ prim: \"bool\" }), ...stack.slice(1)];\n\n case \"SELF\":\n {\n if (ctx?.contract === undefined) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: contract required`);\n }\n const ia = instructionAnn({ f: 1, v: 1 });\n const ep = contractEntryPoint(ctx.contract, ia.f?.[0]);\n if (ep === null) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: contract has no entrypoint ${ep}`);\n }\n return [annotate({ prim: \"contract\", args: [ep] }, { v: ia.v ? ia.v : [\"@self\"] }), ...stack];\n }\n\n case \"TRANSFER_TOKENS\":\n {\n const s = args(0, null, [\"mutez\"], [\"contract\"]);\n ensureTypesEqual(s[0], s[2].args[0]);\n return [annotateVar({ prim: \"operation\" }), ...stack.slice(3)];\n }\n\n case \"SET_DELEGATE\":\n {\n const s = args(0, [\"option\"])[0];\n if (typeID(s.args[0]) !== \"key_hash\") {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: key hash expected: ${typeID(s.args[0])}`);\n }\n return [annotateVar({ prim: \"operation\" }), ...stack.slice(1)];\n }\n\n case \"IMPLICIT_ACCOUNT\":\n args(0, [\"key_hash\"]);\n return [annotateVar({ prim: \"contract\", args: [{ prim: \"unit\" }] }), ...stack.slice(1)];\n\n case \"NOW\":\n return [annotateVar({ prim: \"timestamp\" }, \"@now\"), ...stack];\n\n case \"AMOUNT\":\n return [annotateVar({ prim: \"mutez\" }, \"@amount\"), ...stack];\n\n case \"BALANCE\":\n return [annotateVar({ prim: \"mutez\" }, \"@balance\"), ...stack];\n\n case \"CHECK_SIGNATURE\":\n args(0, [\"key\"], [\"signature\"], [\"bytes\"]);\n return [annotateVar({ prim: \"bool\" }), ...stack.slice(3)];\n\n case \"BLAKE2B\":\n case \"SHA256\":\n case \"SHA512\":\n case \"KECCAK\":\n case \"SHA3\":\n args(0, [\"bytes\"]);\n return [annotateVar({ prim: \"bytes\" }), ...stack.slice(1)];\n\n case \"HASH_KEY\":\n args(0, [\"key\"]);\n return [annotateVar({ prim: \"key_hash\" }), ...stack.slice(1)];\n\n case \"SOURCE\":\n return [annotateVar({ prim: \"address\" }, \"@source\"), ...stack];\n\n case \"SENDER\":\n return [annotateVar({ prim: \"address\" }, \"@sender\"), ...stack];\n\n case \"ADDRESS\":\n {\n const s = args(0, [\"contract\"])[0];\n const ia = instructionAnn({ v: 1 });\n return [\n annotate({ prim: \"address\", [refContract]: s }, { v: ia.v ? ia.v : varSuffix(argAnn(s), \"address\") }),\n ...stack.slice(1)];\n }\n\n case \"SELF_ADDRESS\":\n {\n const addr: MichelsonTypeAddress = { prim: \"address\" };\n if (ctx?.contract !== undefined) {\n addr[refContract] = { prim: \"contract\", args: [contractSection(ctx.contract, \"parameter\").args[0]] };\n }\n return [annotateVar(addr, \"@address\"), ...stack];\n }\n\n case \"CHAIN_ID\":\n return [annotateVar({ prim: \"chain_id\" }), ...stack];\n\n case \"DROP\":\n {\n instructionAnn({});\n const n = instruction.args !== undefined ? parseInt(instruction.args[0].int, 10) : 1;\n args(n - 1, null);\n return stack.slice(n);\n }\n\n case \"DIG\":\n {\n instructionAnn({});\n const n = parseInt(instruction.args[0].int, 10);\n return [args(n, null)[0], ...stack.slice(0, n), ...stack.slice(n + 1)];\n }\n\n case \"DUG\":\n {\n instructionAnn({});\n const n = parseInt(instruction.args[0].int, 10);\n return [...stack.slice(1, n + 1), args(0, null)[0], ...stack.slice(n + 1)];\n }\n\n case \"NONE\":\n assertTypeAnnotationsValid(instruction.args[0]);\n return [annotate({ prim: \"option\", args: [instruction.args[0]] }, instructionAnn({ t: 1, v: 1 })), ...stack];\n\n case \"LEFT\":\n case \"RIGHT\":\n {\n const s = args(0, null)[0];\n const ia = instructionAnn({ f: 2, t: 1, v: 1 }, { specialFields: true });\n const va = argAnn(s);\n\n const children: [MichelsonType, MichelsonType] = [\n annotate(s, {\n t: null,\n v: null,\n f: ia.f && ia.f.length > 0 && ia.f[0] !== \"%\" ?\n ia.f[0] === \"%@\" ?\n va.v ? [\"%\" + va.v[0].slice(1)] : undefined :\n ia.f :\n undefined,\n }),\n annotate(instruction.args[0], {\n t: null,\n f: ia.f && ia.f.length > 1 && ia.f[1] !== \"%\" ? ia.f : undefined,\n }),\n ];\n\n return [annotate({\n prim: \"or\", args: instruction.prim === \"LEFT\" ? children : [children[1], children[0]]\n }, { t: ia.t, v: ia.v }), ...stack.slice(1)];\n }\n\n case \"NIL\":\n assertTypeAnnotationsValid(instruction.args[0]);\n return [annotate({ prim: \"list\", args: [instruction.args[0]] }, instructionAnn({ t: 1, v: 1 })), ...stack];\n\n case \"UNPACK\":\n args(0, [\"bytes\"]);\n assertTypeAnnotationsValid(instruction.args[0]);\n return [annotateVar({ prim: \"option\", args: [instruction.args[0]] }, \"@unpacked\"), ...stack.slice(1)];\n\n case \"CONTRACT\":\n {\n const s = args(0, [\"address\"])[0];\n assertTypeAnnotationsValid(instruction.args[0]);\n const ia = instructionAnn({ v: 1, f: 1 });\n const contract = s[refContract];\n if (contract !== undefined) {\n const ep = contractEntryPoint(contract, ia.f?.[0]);\n if (ep === null) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: contract has no entrypoint ${ep}`);\n }\n ensureTypesEqual(ep, instruction.args[0]);\n }\n return [\n annotate({ prim: \"option\", args: [{ prim: \"contract\", args: [instruction.args[0]] }] }, { v: ia.v ? ia.v : varSuffix(argAnn(s), \"contract\") }),\n ...stack.slice(1)];\n }\n\n case \"CAST\":\n instructionAnn({});\n const s = args(0, null)[0];\n assertTypeAnnotationsValid(instruction.args[0]);\n ensureTypesEqual(instruction.args[0], s);\n return [instruction.args[0], ...stack.slice(1)];\n\n case \"IF_NONE\":\n {\n instructionAnn({});\n const s = args(0, [\"option\"])[0];\n const tail = stack.slice(1);\n const br0 = functionTypeInternal(instruction.args[0], tail, ctx);\n const br1 = functionTypeInternal(instruction.args[1], [annotate(s.args[0], { t: null, v: varSuffix(argAnn(s), \"some\") }), ...tail], ctx);\n return branchType(br0, br1);\n }\n\n case \"IF_LEFT\":\n {\n instructionAnn({});\n const s = args(0, [\"or\"])[0];\n const va = argAnn(s);\n const lefta = argAnn(s.args[0]);\n const righta = argAnn(s.args[1]);\n const tail = stack.slice(1);\n const br0 = functionTypeInternal(instruction.args[0],\n [\n annotate(s.args[0], { t: null, v: varSuffix(va, lefta.f ? lefta.f[0].slice(1) : \"left\") }),\n ...tail\n ],\n ctx);\n const br1 = functionTypeInternal(instruction.args[1],\n [\n annotate(s.args[1], { t: null, v: varSuffix(va, righta.f ? righta.f[0].slice(1) : \"right\") }),\n ...tail\n ],\n ctx);\n return branchType(br0, br1);\n }\n\n case \"IF_CONS\":\n {\n instructionAnn({});\n const s = args(0, [\"list\"])[0];\n const va = argAnn(s);\n const tail = stack.slice(1);\n const br0 = functionTypeInternal(instruction.args[0],\n [\n annotate(s.args[0], { t: null, v: varSuffix(va, \"hd\") }),\n annotate(s, { t: null, v: varSuffix(va, \"tl\") }),\n ...tail\n ],\n ctx);\n const br1 = functionTypeInternal(instruction.args[1], tail, ctx);\n return branchType(br0, br1);\n }\n\n case \"IF\":\n {\n instructionAnn({});\n args(0, [\"bool\"]);\n const tail = stack.slice(1);\n const br0 = functionTypeInternal(instruction.args[0], tail, ctx);\n const br1 = functionTypeInternal(instruction.args[1], tail, ctx);\n return branchType(br0, br1);\n }\n\n case \"MAP\":\n {\n const s = args(0, [\"list\", \"map\"])[0];\n const tail = stack.slice(1);\n const elt = s.prim === \"map\" ? { prim: \"pair\" as const, args: s.args } : s.args[0];\n const body = functionTypeInternal(instruction.args[0],\n [annotate(elt, { t: null, v: varSuffix(argAnn(s), \"elt\") }), ...tail],\n ctx);\n if (\"failed\" in body) {\n return body;\n }\n if (body.length < 1) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: function must return a value`);\n }\n ensureStacksEqual(body.slice(1), tail);\n if (s.prim === \"list\") {\n return [annotateVar({ prim: \"list\", args: [body[0]] }), ...tail];\n }\n return [annotateVar({ prim: \"map\", args: [s.args[0], body[0]] }), ...tail];\n }\n\n case \"ITER\":\n {\n instructionAnn({});\n const s = args(0, [\"set\", \"list\", \"map\"])[0];\n const tail = stack.slice(1);\n const elt = s.prim === \"map\" ? { prim: \"pair\" as const, args: s.args } : s.args[0];\n const body = functionTypeInternal(instruction.args[0],\n [annotate(elt, { t: null, v: varSuffix(argAnn(s), \"elt\") }), ...tail],\n ctx);\n if (\"failed\" in body) {\n return body;\n }\n ensureStacksEqual(body, tail);\n return tail;\n }\n\n case \"LOOP\":\n {\n instructionAnn({});\n args(0, [\"bool\"]);\n const tail = stack.slice(1);\n const body = functionTypeInternal(instruction.args[0], tail, ctx);\n if (\"failed\" in body) {\n return body;\n }\n ensureStacksEqual(body, [{ prim: \"bool\" }, ...tail]);\n return tail;\n }\n\n case \"LOOP_LEFT\":\n {\n instructionAnn({});\n const s = args(0, [\"or\"])[0];\n const tail = stack.slice(1);\n const body = functionTypeInternal(instruction.args[0],\n [annotate(s.args[0], { t: null, v: varSuffix(argAnn(s), \"left\") }), ...tail],\n ctx);\n if (\"failed\" in body) {\n return body;\n }\n ensureStacksEqual(body, [s, ...tail]);\n return [annotate(s.args[1], { t: null, v: instructionAnn({ v: 1 }).v }), ...tail];\n }\n\n case \"DIP\":\n {\n instructionAnn({});\n const n = instruction.args.length === 2 ? parseInt(instruction.args[0].int, 10) : 1;\n args(n - 1, null);\n const head = stack.slice(0, n);\n const tail = stack.slice(n);\n // ternary operator is a type guard so use it instead of just `instruction.args.length - 1`\n const body = instruction.args.length === 2 ?\n functionTypeInternal(instruction.args[1], tail, ctx) :\n functionTypeInternal(instruction.args[0], tail, ctx);\n if (\"failed\" in body) {\n return body;\n }\n return [...head, ...body];\n }\n\n case \"CREATE_CONTRACT\":\n {\n const ia = instructionAnn({ v: 2 });\n const s = args(0, [\"option\"], [\"mutez\"], null);\n if (typeID(s[0].args[0]) !== \"key_hash\") {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: key hash expected: ${typeID(s[0].args[0])}`);\n }\n if (ensureStorableType(s[2])) {\n assertContractValid(instruction.args[0]);\n assertScalarTypesEqual(contractSection(instruction.args[0], \"storage\").args[0], s[2]);\n }\n\n const va = ia.v?.map(v => v !== \"@\" ? [v] : undefined);\n return [\n annotate({ prim: \"operation\" }, { v: va?.[0] }),\n annotate({\n prim: \"address\",\n [refContract]: { prim: \"contract\", args: [contractSection(instruction.args[0], \"parameter\").args[0]] },\n }, { v: va?.[1] }),\n ...stack.slice(3)\n ];\n }\n\n case \"PUSH\":\n assertTypeAnnotationsValid(instruction.args[0]);\n assertDataValidInternal(instruction.args[1], instruction.args[0], { ...ctx, contract: undefined });\n return [annotateVar(instruction.args[0]), ...stack];\n\n case \"EMPTY_SET\":\n assertTypeAnnotationsValid(instruction.args[0]);\n ensureComparableType(instruction.args[0]);\n return [annotate({ prim: \"set\", args: instruction.args }, instructionAnn({ t: 1, v: 1 })), ...stack];\n\n case \"EMPTY_MAP\":\n assertTypeAnnotationsValid(instruction.args[0]);\n ensureComparableType(instruction.args[0]);\n assertTypeAnnotationsValid(instruction.args[1]);\n return [annotate({ prim: \"map\", args: instruction.args }, instructionAnn({ t: 1, v: 1 })), ...stack];\n\n case \"EMPTY_BIG_MAP\":\n assertTypeAnnotationsValid(instruction.args[0]);\n ensureComparableType(instruction.args[0]);\n assertTypeAnnotationsValid(instruction.args[1]);\n ensureBigMapStorableType(instruction.args[0]);\n return [annotate({ prim: \"big_map\", args: instruction.args }, instructionAnn({ t: 1, v: 1 })), ...stack];\n\n case \"LAMBDA\":\n {\n assertTypeAnnotationsValid(instruction.args[0]);\n assertTypeAnnotationsValid(instruction.args[1]);\n const body = functionTypeInternal(instruction.args[2], [instruction.args[0]], { ...ctx, contract: undefined });\n if (\"failed\" in body) {\n return body;\n }\n if (body.length !== 1) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: function must return a value`);\n }\n ensureTypesEqual(instruction.args[1], body[0]);\n return [annotateVar({ prim: \"lambda\", args: [instruction.args[0], instruction.args[1]] }), ...stack];\n }\n\n case \"LEVEL\":\n return [annotateVar({ prim: \"nat\" }, \"@level\"), ...stack];\n\n case \"TOTAL_VOTING_POWER\":\n return [annotateVar({ prim: \"nat\" }), ...stack];\n\n case \"VOTING_POWER\":\n args(0, [\"key_hash\"]);\n return [annotateVar({ prim: \"nat\" }), ...stack.slice(1)];\n\n case \"TICKET\":\n {\n const s = args(0, null, [\"nat\"])[0];\n ensureComparableType(s);\n return [annotate({ prim: \"ticket\", args: [s] }, instructionAnn({ t: 1, v: 1 })), ...stack.slice(2)];\n }\n\n case \"JOIN_TICKETS\":\n {\n const s = unpackComb(\"pair\", args(0, [\"pair\"])[0]);\n if (typeID(s.args[0]) !== \"ticket\") {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: ticket expected: ${typeID(s.args[0])}`);\n }\n ensureTypesEqual(s.args[0], s.args[1]);\n return [annotateVar({\n prim: \"option\",\n args: [annotate(s.args[0], { t: null })],\n }), ...stack.slice(1)];\n }\n\n case \"SPLIT_TICKET\":\n {\n const s = args(0, [\"ticket\"], [\"pair\"]);\n const p = unpackComb(\"pair\", s[1]);\n if (typeID(p.args[0]) !== \"nat\") {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: nat expected: ${typeID(p.args[0])}`);\n }\n ensureTypesEqual(p.args[0], p.args[1]);\n return [annotateVar({\n prim: \"option\",\n args: [{\n prim: \"pair\",\n args: [\n annotate(s[0], { t: null }),\n annotate(s[0], { t: null }),\n ],\n }],\n }), ...stack.slice(2)];\n }\n\n case \"READ_TICKET\":\n {\n const ia = instructionAnn({ v: 2 });\n const s = args(0, [\"ticket\"])[0];\n const va = ia.v?.map(v => v !== \"@\" ? [v] : undefined);\n return [\n annotate({\n prim: \"pair\",\n args: [\n { prim: \"address\" },\n annotate(s.args[0], { t: null }),\n { prim: \"nat\" },\n ]\n }, { v: va?.[0] }),\n annotate(s, { v: va?.[1], t: null }),\n ...stack.slice(1),\n ];\n }\n\n case \"PAIRING_CHECK\":\n {\n const p = args(0, [\"list\"])[0].args[0];\n if (!isPairType(p)) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: pair expected: ${typeID(p)}`);\n }\n const c = unpackComb(\"pair\", p);\n if (typeID(c.args[0]) !== \"bls12_381_g1\") {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: bls12_381_g1 expected: ${typeID(c.args[0])}`);\n }\n if (typeID(c.args[1]) !== \"bls12_381_g2\") {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: bls12_381_g2 expected: ${typeID(c.args[1])}`);\n }\n return [annotateVar({ prim: \"bool\" }), ...stack.slice(1)];\n }\n\n case \"SAPLING_EMPTY_STATE\":\n return [annotate({ prim: \"sapling_state\", args: [instruction.args[0]] }, instructionAnn({ v: 1, t: 1 })), ...stack];\n\n case \"SAPLING_VERIFY_UPDATE\":\n {\n const s = args(0, [\"sapling_transaction\"], [\"sapling_state\"]);\n if (parseInt(s[0].args[0].int, 10) !== parseInt(s[1].args[0].int, 10)) {\n throw new MichelsonInstructionError(instruction, stack, `${instruction.prim}: sapling memo size mismatch: ${s[0].args[0].int} != ${s[1].args[0].int}`);\n }\n return [annotateVar({\n prim: \"option\",\n args: [{\n prim: \"pair\",\n args: [\n { prim: \"int\" },\n annotate(s[1], { t: null }),\n ],\n }],\n }), ...stack.slice(2)];\n }\n\n default:\n throw new MichelsonError((instruction as MichelsonCode), `unexpected instruction: ${(instruction as Prim).prim}`);\n }\n })(instruction);\n\n if (ctx?.traceCallback !== undefined) {\n const trace: InstructionTrace = {\n op: instruction,\n in: stack,\n out: retStack,\n };\n ctx.traceCallback(trace);\n }\n\n return retStack;\n}\n\nexport function contractSection<T extends \"parameter\" | \"storage\" | \"code\">(contract: MichelsonContract, section: T): MichelsonContractSection<T> {\n for (const s of contract) {\n if (s.prim === section) {\n return s as MichelsonContractSection<T>;\n }\n }\n throw new MichelsonError(contract, `missing contract section: ${section}`);\n}\n\nfunction isContract(v: Expr): v is MichelsonContract {\n if (Array.isArray(v)) {\n for (const s of v) {\n if (\"prim\" in s && (s.prim === \"parameter\" || s.prim === \"storage\" || s.prim === \"code\")) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function contractEntryPoint(src: MichelsonContract | MichelsonType, ep?: string): MichelsonType | null {\n ep = ep || \"%default\";\n const entryPoint = contractEntryPoints(src).find(x => x[0] === ep);\n\n if (entryPoint !== undefined) {\n return entryPoint[1];\n } else if (ep === \"%default\") {\n return isContract(src) ? contractSection(src, \"parameter\").args[0] : src;\n }\n return null;\n}\n\nfunction isOrType(t: MichelsonType): t is MichelsonTypeOr<[MichelsonType, MichelsonType]> {\n return Array.isArray(t) || t.prim === \"or\";\n}\n\nexport function contractEntryPoints(src: MichelsonContract | MichelsonType): [string, MichelsonType][] {\n if (isContract(src)) {\n const param = contractSection(src, \"parameter\");\n const ch = contractEntryPoints(param.args[0]);\n const a = unpackAnnotations(param);\n return a.f ? [[a.f[0], param.args[0]], ...ch] : ch;\n }\n\n if (isOrType(src)) {\n const args = typeArgs(src);\n const getArg = (n: 0 | 1): [string, MichelsonType][] => {\n const a = unpackAnnotations(args[n]);\n if (typeID(args[n]) === \"or\") {\n const ch = contractEntryPoints(args[n]);\n return a.f ? [[a.f[0], args[n]], ...ch] : ch;\n }\n return a.f ? [[a.f[0], args[n]]] : [];\n };\n return [...getArg(0), ...getArg(1)];\n }\n return [];\n}\n\n// Contract validation\n\nexport function assertContractValid(contract: MichelsonContract, ctx?: Context): MichelsonReturnType {\n const parameter = contractSection(contract, \"parameter\").args[0];\n assertTypeAnnotationsValid(parameter, true);\n\n const storage = contractSection(contract, \"storage\").args[0];\n assertTypeAnnotationsValid(storage);\n\n const arg: MichelsonType = {\n \"prim\": \"pair\",\n args: [\n { ...parameter, ...{ annots: [\"@parameter\"] } },\n { ...storage, ...{ annots: [\"@storage\"] } },\n ]\n };\n\n const code = contractSection(contract, \"code\").args[0];\n const ret = functionTypeInternal(code, [arg], { ...ctx, ...{ contract } });\n\n if (\"failed\" in ret) {\n return ret;\n }\n\n const expected: MichelsonType = {\n \"prim\": \"pair\",\n args: [\n { \"prim\": \"list\", args: [{ \"prim\": \"operation\" }] },\n storage,\n ]\n };\n\n try {\n assertStacksEqual(ret, [expected]);\n } catch (err) {\n if (err instanceof MichelsonError) {\n throw new MichelsonInstructionError(code, ret, err.message);\n } else {\n throw err;\n }\n }\n\n return ret;\n}\n\n// Exported wrapper functions\n\nexport function assertDataValid(d: MichelsonData, t: MichelsonType, ctx?: Context): void {\n assertTypeAnnotationsValid(t);\n assertDataValidInternal(d, t, ctx || null);\n}\n\nexport function functionType(inst: MichelsonCode, stack: MichelsonType[], ctx?: Context): MichelsonReturnType {\n for (const t of stack) {\n assertTypeAnnotationsValid(t);\n }\n\n if (ctx?.contract !== undefined) {\n for (const typesec of [\"parameter\", \"storage\"] as const) {\n const sec = contractSection(ctx.contract, typesec).args[0];\n assertTypeAnnotationsValid(sec);\n }\n }\n\n return functionTypeInternal(inst, stack, ctx || null);\n}\n\nexport function assertTypesEqual<T1 extends MichelsonType | MichelsonType[], T2 extends T1>(a: T1, b: T2, field: boolean = false): void {\n if (Array.isArray(a)) {\n // type guards don't work for parametrized generic types\n for (const v of a as MichelsonType[]) {\n assertTypeAnnotationsValid(v);\n }\n for (const v of b as MichelsonType[]) {\n assertTypeAnnotationsValid(v);\n }\n } else {\n assertTypeAnnotationsValid(a as MichelsonType);\n assertTypeAnnotationsValid(b as MichelsonType);\n }\n assertScalarTypesEqual(a, b, field);\n}\n\nexport function isTypeAnnotationsValid(t: MichelsonType, field: boolean = false): boolean {\n try {\n assertTypeAnnotationsValid(t, field);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function isContractValid(contract: MichelsonContract, ctx?: Context): MichelsonReturnType | null {\n try {\n return assertContractValid(contract, ctx);\n } catch {\n return null;\n }\n}\n\nexport function isDataValid(d: MichelsonData, t: MichelsonType, ctx?: Context): boolean {\n try {\n assertDataValid(d, t, ctx);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function isTypeEqual<T1 extends MichelsonType | MichelsonType[], T2 extends T1>(a: T1, b: T2, field: boolean = false): boolean {\n try {\n assertTypesEqual(a, b, field);\n return true;\n } catch {\n return false;\n }\n}","import {\n MichelsonContract, MichelsonContractSection, MichelsonType,\n MichelsonData, MichelsonCode, MichelsonReturnType\n} from \"./michelson-types\";\nimport {\n assertContractValid, contractSection,\n contractEntryPoint, assertDataValid,\n assertTypeAnnotationsValid,\n InstructionTrace, Context, functionType,\n isDataValid, contractEntryPoints\n} from \"./michelson-typecheck\";\nimport { Parser, ParserOptions } from \"./micheline-parser\";\nimport { assertMichelsonContract, assertMichelsonType, assertMichelsonData } from \"./michelson-validator\";\n\nexport interface ContractOptions extends ParserOptions {\n traceCallback?: (t: InstructionTrace) => void;\n}\n\nexport class Contract {\n private ctx: Context;\n public readonly output: MichelsonReturnType;\n\n constructor(public readonly contract: MichelsonContract, opt?: ContractOptions) {\n this.ctx = { contract, ...opt };\n this.output = assertContractValid(contract, this.ctx);\n }\n\n static parse(src: string | object, opt?: ContractOptions): Contract {\n const p = new Parser(opt);\n const expr = typeof src === \"string\" ? p.parseScript(src) : p.parseJSON(src);\n if (expr === null) {\n throw new Error(\"empty contract\");\n }\n if (assertMichelsonContract(expr)) {\n return new Contract(expr, opt);\n }\n throw undefined;\n }\n\n static parseTypeExpression(src: string | object, opt?: ParserOptions): MichelsonType {\n const p = new Parser(opt);\n const expr = typeof src === \"string\" ? p.parseScript(src) : p.parseJSON(src);\n if (expr === null) {\n throw new Error(\"empty type expression\");\n }\n if (assertMichelsonType(expr) && assertTypeAnnotationsValid(expr)) {\n return expr;\n }\n throw undefined;\n }\n\n static parseDataExpression(src: string | object, opt?: ParserOptions): MichelsonData {\n const p = new Parser(opt);\n const expr: any = typeof src === \"string\" ? p.parseScript(src) : p.parseJSON(src);\n if (expr === null) {\n throw new Error(\"empty data expression\");\n }\n if (assertMichelsonData(expr)) {\n return expr;\n }\n throw undefined;\n }\n\n section<T extends \"parameter\" | \"storage\" | \"code\">(section: T): MichelsonContractSection<T> {\n return contractSection(this.contract, section);\n }\n\n entryPoints(): [string, MichelsonType][] {\n return contractEntryPoints(this.contract);\n }\n\n entryPoint(ep?: string): MichelsonType | null {\n return contractEntryPoint(this.contract, ep);\n }\n\n assertDataValid(d: MichelsonData, t: MichelsonType): void {\n assertDataValid(d, t, this.ctx);\n }\n\n isDataValid(d: MichelsonData, t: MichelsonType): boolean {\n return isDataValid(d, t, this.ctx);\n }\n\n assertParameterValid(ep: string | null, d: MichelsonData): void {\n const t = this.entryPoint(ep || undefined);\n if (t === null) {\n throw new Error(`contract has no entrypoint named ${ep}`);\n }\n this.assertDataValid(d, t);\n }\n\n isParameterValid(ep: string | null, d: MichelsonData): boolean {\n try {\n this.assertParameterValid(ep, d);\n return true;\n } catch {\n return false;\n }\n }\n\n functionType(inst: MichelsonCode, stack: MichelsonType[]): MichelsonReturnType {\n return functionType(inst, stack, this.ctx);\n }\n}\n\nexport const dummyContract = new Contract([\n { prim: \"parameter\", args: [{ prim: \"unit\" }] },\n { prim: \"storage\", args: [{ prim: \"unit\" }] },\n {\n prim: \"code\", args: [\n [\n { prim: \"CAR\" },\n { prim: \"NIL\", args: [{ prim: \"operation\" }] },\n { prim: \"PAIR\" },\n ]\n ]\n },\n]);","import { Forger, ForgeParams, ForgeResponse } from './interface';\nimport { Context } from '../context';\n\nexport class RpcForger implements Forger {\n constructor(private context: Context) {}\n\n forge({ branch, contents }: ForgeParams): Promise<ForgeResponse> {\n return this.context.rpc.forgeOperations({ branch, contents });\n }\n}\n","import { Injector } from './interface';\nimport { Context } from '../context';\n\nexport class RpcInjector implements Injector {\n constructor(private context: Context) {}\n inject(signedOperationBytes: string): Promise<string> {\n return this.context.rpc.injectOperation(signedOperationBytes);\n }\n}\n","import { Signer } from './interface';\n\nexport class UnconfiguredSignerError implements Error {\n name = 'UnconfiguredSignerError';\n message =\n 'No signer has been configured. Please configure one by calling setProvider({signer}) on your TezosToolkit instance.';\n}\n\n/**\n * @description Default signer implementation which does nothing and produce invalid signature\n */\nexport class NoopSigner implements Signer {\n async publicKey(): Promise<string> {\n throw new UnconfiguredSignerError();\n }\n async publicKeyHash(): Promise<string> {\n throw new UnconfiguredSignerError();\n }\n async secretKey(): Promise<string> {\n throw new UnconfiguredSignerError();\n }\n async sign(_bytes: string, _watermark?: Uint8Array): Promise<any> {\n throw new UnconfiguredSignerError();\n }\n}\n","import {\n OperationObject,\n InternalOperationResultKindEnum,\n OpKind,\n TransactionOperationParameter,\n} from '@taquito/rpc';\n\nexport { OpKind } from '@taquito/rpc';\n\nexport type withKind<T, K extends OpKind> = T & { kind: K };\n\nexport type ParamsWithKind =\n | withKind<OriginateParams, OpKind.ORIGINATION>\n | withKind<DelegateParams, OpKind.DELEGATION>\n | withKind<TransferParams, OpKind.TRANSACTION>\n | withKind<ActivationParams, OpKind.ACTIVATION>;\n\nexport type ParamsWithKindExtended = ParamsWithKind | withKind<RevealParams, OpKind.REVEAL>;\n\nexport const attachKind = <T, K extends OpKind>(op: T, kind: K) => {\n return { ...op, kind } as withKind<T, K>;\n};\n\nexport const findWithKind = <T extends { kind: OpKind }, K extends OpKind>(\n arr: T[],\n kind: K\n): (T & { kind: K }) | undefined => {\n if (Array.isArray(arr)) {\n const found = arr.find((op) => op.kind === kind);\n\n if (found && isKind(found, kind)) {\n return found;\n }\n }\n};\n\nexport const isKind = <T extends { kind: OpKind }, K extends OpKind>(\n op: T,\n kind: K\n): op is withKind<T, K> => {\n return op.kind === kind;\n};\n\nexport type RPCOpWithFee =\n | RPCTransferOperation\n | RPCOriginationOperation\n | RPCDelegateOperation\n | RPCRevealOperation;\nexport type RPCOpWithSource =\n | RPCTransferOperation\n | RPCOriginationOperation\n | RPCDelegateOperation\n | RPCRevealOperation;\n\nexport const isOpWithFee = <T extends { kind: OpKind }>(\n op: T\n): op is withKind<T, InternalOperationResultKindEnum> => {\n return ['transaction', 'delegation', 'origination', 'reveal'].indexOf(op.kind) !== -1;\n};\n\nexport const isOpRequireReveal = <T extends { kind: OpKind }>(\n op: T\n): op is withKind<T, Exclude<InternalOperationResultKindEnum, OpKind.REVEAL>> => {\n return ['transaction', 'delegation', 'origination'].indexOf(op.kind) !== -1;\n};\n\nexport type SourceKinds = InternalOperationResultKindEnum;\n\nexport const isSourceOp = <T extends { kind: OpKind }>(op: T): op is withKind<T, SourceKinds> => {\n return ['transaction', 'delegation', 'origination', 'reveal', 'ballot'].indexOf(op.kind) !== -1;\n};\n\nexport const hasMetadata = <T extends { kind: OpKind }, K>(\n op: T\n): op is T & {\n metadata: K;\n} => {\n return 'metadata' in op;\n};\n\nexport const hasMetadataWithResult = <T extends { kind: OpKind }, K>(\n op: T\n): op is T & {\n metadata: {\n operation_result: K;\n };\n} => {\n return hasMetadata<T, any>(op) && 'operation_result' in op.metadata;\n};\n\nexport const hasMetadataWithInternalOperationResult = <T extends { kind: OpKind }, K>(\n op: T\n): op is T & {\n metadata: {\n internal_operation_results?: K;\n };\n} => {\n return hasMetadata<T, any>(op) && 'internal_operation_results' in op.metadata;\n};\n\nexport interface GasConsumingOperation {\n consumedGas?: string;\n gasLimit: number;\n}\n\nexport interface StorageConsumingOperation {\n storageDiff?: string;\n storageSize?: string;\n storageLimit: number;\n}\n\nexport interface FeeConsumingOperation {\n fee: number;\n}\n\nexport type OriginateParamsBase = {\n balance?: string;\n code: string | object[];\n delegate?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n mutez?: boolean;\n};\n\n/**\n * @description Parameters for originate method\n */\nexport type OriginateParams = OriginateParamsBase &\n (\n | {\n init?: never;\n /** JS representation of a storage object */\n storage: any;\n }\n | {\n /** Initial storage object value. Either Micheline or JSON encoded */\n init: string | object;\n storage?: never;\n }\n );\n\nexport interface ActivationParams {\n pkh: string;\n secret: string;\n}\n\n/**\n * @description RPC origination operation\n */\nexport interface RPCOriginationOperation {\n kind: OpKind.ORIGINATION;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n balance: string;\n delegate?: string;\n source?: string;\n script: {\n code: any;\n storage: any;\n };\n}\n\n/**\n * @description RPC reveal operation\n */\nexport interface RPCRevealOperation {\n kind: OpKind.REVEAL;\n fee: number;\n public_key: string;\n source?: string;\n gas_limit: number;\n storage_limit: number;\n}\n\nexport interface RevealParams {\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n\n/**\n * @description Result of a forge operation contains the operation plus its encoded version\n */\nexport interface ForgedBytes {\n opbytes: string;\n opOb: OperationObject;\n counter: number;\n}\n\n/**\n * @description Parameters for setDelegate method\n */\nexport interface DelegateParams {\n source: string;\n delegate: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n\n/**\n * @description Parameters for registerDelegate method\n */\nexport interface RegisterDelegateParams {\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n\n/**\n * @description RPC delegation operation\n */\nexport interface RPCDelegateOperation {\n kind: OpKind.DELEGATION;\n source?: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n delegate: string;\n}\n\n/**\n * @description Parameters for transfer method\n */\nexport interface TransferParams {\n to: string;\n source?: string;\n amount: number;\n fee?: number;\n parameter?: TransactionOperationParameter;\n gasLimit?: number;\n storageLimit?: number;\n mutez?: boolean;\n}\n\n/**\n * @description RPC transfer operation\n */\nexport interface RPCTransferOperation {\n kind: OpKind.TRANSACTION;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n amount: string;\n source?: string;\n destination: string;\n parameters?: TransactionOperationParameter;\n}\n\n/**\n * @description RPC activate account operation\n */\nexport interface RPCActivateOperation {\n kind: OpKind.ACTIVATION;\n pkh: string;\n secret: string;\n}\n\nexport type RPCOperation =\n | RPCOriginationOperation\n | RPCTransferOperation\n | RPCDelegateOperation\n | RPCRevealOperation\n | RPCActivateOperation;\n\nexport type PrepareOperationParams = {\n operation: RPCOperation | RPCOperation[];\n source?: string;\n};\n","import {\n MichelsonV1ExpressionBase,\n OperationResultDelegation,\n OperationResultOrigination,\n OperationResultReveal,\n OperationResultTransaction,\n PreapplyResponse,\n TezosGenericOperationError,\n} from '@taquito/rpc';\nimport {\n hasMetadata,\n hasMetadataWithInternalOperationResult,\n hasMetadataWithResult,\n} from './types';\n\nexport interface TezosOperationErrorWithMessage extends TezosGenericOperationError {\n with: MichelsonV1ExpressionBase;\n}\n\nconst isErrorWithMessage = (error: any): error is TezosOperationErrorWithMessage => {\n return 'with' in error;\n};\n\nexport class TezosOperationError implements Error {\n name: string = 'TezosOperationError';\n id: string;\n kind: string;\n message: string;\n\n constructor(public errors: TezosGenericOperationError[]) {\n // Last error is 'often' the one with more detail\n const lastError = errors[errors.length - 1];\n\n this.id = lastError.id;\n this.kind = lastError.kind;\n\n this.message = `(${this.kind}) ${this.id}`;\n\n if (isErrorWithMessage(lastError) && lastError.with.string) {\n this.message = lastError.with.string;\n }\n }\n}\n\nexport class TezosPreapplyFailureError implements Error {\n name: string = 'TezosPreapplyFailureError';\n message: string = 'Preapply returned an unexpected result';\n\n constructor(public result: any) {}\n}\n\nexport type MergedOperationResult = OperationResultDelegation &\n OperationResultOrigination &\n OperationResultTransaction &\n OperationResultReveal & {\n fee?: string;\n };\n\n// Flatten all operation content results and internal operation results into a single array\n// Some cases where we can have multiple operation results or internal operation results are:\n// - When an operation includes a reveal operation\n// - When an operation is made using the batch API\n// - Smart contract call can contains internal operation results when they call other smart contract internally or originate contracts\nexport const flattenOperationResult = (response: PreapplyResponse | PreapplyResponse[]) => {\n let results = Array.isArray(response) ? response : [response];\n\n let returnedResults: MergedOperationResult[] = [];\n for (let i = 0; i < results.length; i++) {\n for (let j = 0; j < results[i].contents.length; j++) {\n const content = results[i].contents[j];\n if (hasMetadataWithResult(content)) {\n returnedResults.push({\n fee: content.fee,\n ...content.metadata.operation_result,\n });\n\n if (Array.isArray(content.metadata.internal_operation_results)) {\n content.metadata.internal_operation_results.forEach(x => returnedResults.push(x.result));\n }\n }\n }\n }\n\n return returnedResults;\n};\n\n/***\n * @description Flatten all error from preapply response (including internal error)\n */\nexport const flattenErrors = (\n response: PreapplyResponse | PreapplyResponse[],\n status = 'failed'\n) => {\n let results = Array.isArray(response) ? response : [response];\n\n let errors: TezosGenericOperationError[] = [];\n // Transaction that do not fail will be backtracked in case one failure occur\n for (let i = 0; i < results.length; i++) {\n for (let j = 0; j < results[i].contents.length; j++) {\n const content = results[i].contents[j];\n if (hasMetadata(content)) {\n if (hasMetadataWithResult(content) && content.metadata.operation_result.status === status) {\n errors = errors.concat(content.metadata.operation_result.errors || []);\n }\n if (\n hasMetadataWithInternalOperationResult(content) &&\n Array.isArray(content.metadata.internal_operation_results)\n ) {\n for (const internalResult of content.metadata.internal_operation_results) {\n if ('result' in internalResult && internalResult.result.status === status) {\n errors = errors.concat(internalResult.result.errors || []);\n }\n }\n }\n }\n }\n }\n\n return errors;\n};\n","import { OperationContentsAndResult } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { flattenOperationResult } from '../operations/operation-errors';\n\nexport interface Receipt {\n totalFee: BigNumber;\n totalGas: BigNumber;\n totalStorage: BigNumber;\n totalAllocationBurn: BigNumber;\n totalOriginationBurn: BigNumber;\n totalPaidStorageDiff: BigNumber;\n totalStorageBurn: BigNumber;\n}\n\nexport const receiptFromOperation = (\n op: OperationContentsAndResult[],\n { ALLOCATION_BURN, ORIGINATION_BURN } = {\n ALLOCATION_BURN: 257,\n ORIGINATION_BURN: 257,\n }\n): Receipt => {\n const operationResults = flattenOperationResult({ contents: op });\n let totalGas = new BigNumber(0);\n let totalStorage = new BigNumber(0);\n let totalFee = new BigNumber(0);\n let totalOriginationBurn = new BigNumber(0);\n let totalAllocationBurn = new BigNumber(0);\n let totalPaidStorageDiff = new BigNumber(0);\n operationResults.forEach(result => {\n totalFee = totalFee.plus(result.fee || 0);\n totalOriginationBurn = totalOriginationBurn.plus(\n Array.isArray(result.originated_contracts)\n ? result.originated_contracts.length * ORIGINATION_BURN\n : 0\n );\n totalAllocationBurn = totalAllocationBurn.plus(\n 'allocated_destination_contract' in result ? ALLOCATION_BURN : 0\n );\n totalGas = totalGas.plus(result.consumed_gas || 0);\n totalPaidStorageDiff = totalPaidStorageDiff.plus(\n 'paid_storage_size_diff' in result ? Number(result.paid_storage_size_diff) || 0 : 0\n );\n });\n\n totalStorage = totalStorage\n .plus(totalAllocationBurn)\n .plus(totalOriginationBurn)\n .plus(totalPaidStorageDiff);\n\n return {\n totalFee,\n totalGas,\n totalStorage,\n totalAllocationBurn,\n totalOriginationBurn,\n totalPaidStorageDiff,\n totalStorageBurn: new BigNumber(totalStorage.multipliedBy(1000)),\n };\n};\n","import { BlockResponse, OperationContentsAndResult, OperationResultStatusEnum } from '@taquito/rpc';\nimport { combineLatest, from, Observable, ReplaySubject } from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n first,\n map,\n shareReplay,\n takeWhile,\n tap,\n} from 'rxjs/operators';\nimport { Context } from '../context';\nimport { Receipt, receiptFromOperation } from './receipt';\n\nexport type OperationStatus = 'pending' | 'unknown' | OperationResultStatusEnum;\n\nexport class MissedBlockDuringConfirmationError implements Error {\n name: string = 'MissedBlockDuringConfirmationError';\n message: string =\n 'Taquito missed a block while waiting for operation confirmation and was not able to find the operation';\n}\n\nconst MAX_BRANCH_ANCESTORS = 60;\n\n/**\n * @description WalletOperation allows to monitor operation inclusion on chains and surface information related to the operation\n */\nexport class WalletOperation {\n protected _operationResult = new ReplaySubject<OperationContentsAndResult[]>(1);\n protected _includedInBlock = new ReplaySubject<BlockResponse>(1);\n protected _included = false;\n\n private lastHead: BlockResponse | undefined;\n protected newHead$: Observable<BlockResponse> = this._newHead$.pipe(\n tap(newHead => {\n if (\n !this._included &&\n this.lastHead &&\n newHead.header.level - this.lastHead.header.level > 1\n ) {\n throw new MissedBlockDuringConfirmationError();\n }\n\n this.lastHead = newHead;\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n\n // Observable that emit once operation is seen in a block\n private confirmed$ = this.newHead$.pipe(\n map(head => {\n for (const opGroup of head.operations) {\n for (const op of opGroup) {\n if (op.hash === this.opHash) {\n this._included = true;\n this._includedInBlock.next(head);\n this._operationResult.next(op.contents as OperationContentsAndResult[]);\n\n // Return the block where the operation was found\n return head;\n }\n }\n }\n }),\n filter<BlockResponse | undefined, BlockResponse>((x): x is BlockResponse => {\n return typeof x !== 'undefined';\n }),\n first(),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n\n async operationResults() {\n return this._operationResult.pipe(first()).toPromise();\n }\n\n /**\n * @description Receipt expose the total amount of tezos token burn and spent on fees\n * The promise returned by receipt will resolve only once the transaction is included\n */\n async receipt(): Promise<Receipt> {\n return receiptFromOperation(await this.operationResults());\n }\n\n /**\n *\n * @param opHash Operation hash\n * @param raw Raw operation that was injected\n * @param context Taquito context allowing access to rpc and signer\n */\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n private _newHead$: Observable<BlockResponse>\n ) {\n this.confirmed$.pipe(first()).subscribe();\n }\n\n async getCurrentConfirmation() {\n if (!this._included) {\n return 0;\n }\n\n return combineLatest([this._includedInBlock, from(this.context.rpc.getBlock())])\n .pipe(\n map(([foundAtBlock, head]) => {\n return head.header.level - foundAtBlock.header.level + 1;\n }),\n first()\n )\n .toPromise();\n }\n\n async isInCurrentBranch(tipBlockIdentifier: string = 'head') {\n // By default it is assumed that the operation is in the current branch\n if (!this._included) {\n return true;\n }\n\n const tipBlockHeader = await this.context.rpc.getBlockHeader({ block: tipBlockIdentifier });\n const inclusionBlock = await this._includedInBlock.pipe(first()).toPromise();\n\n const levelDiff = tipBlockHeader.level - inclusionBlock.header.level;\n\n // Block produced before the operation is included are assumed to be part of the current branch\n if (levelDiff <= 0) {\n return true;\n }\n\n const tipBlockLevel = Math.min(\n inclusionBlock.header.level + levelDiff,\n inclusionBlock.header.level + MAX_BRANCH_ANCESTORS\n );\n\n const blocks = new Set(await this.context.rpc.getLiveBlocks({ block: String(tipBlockLevel) }));\n return blocks.has(inclusionBlock.hash);\n }\n\n confirmationObservable(confirmations?: number) {\n if (typeof confirmations !== 'undefined' && confirmations < 1) {\n throw new Error('Confirmation count must be at least 1');\n }\n\n const { defaultConfirmationCount } = this.context.config;\n\n const conf = confirmations !== undefined ? confirmations : defaultConfirmationCount;\n\n if (conf === undefined) {\n throw new Error('Default confirmation count can not be undefined!');\n }\n \n return combineLatest([this._includedInBlock, this.newHead$]).pipe(\n distinctUntilChanged(([, previousHead], [, newHead]) => {\n return previousHead.hash === newHead.hash;\n }),\n map(([foundAtBlock, head]) => {\n return {\n block: head,\n expectedConfirmation: conf,\n currentConfirmation: head.header.level - foundAtBlock.header.level + 1,\n completed: head.header.level - foundAtBlock.header.level >= conf - 1,\n isInCurrentBranch: () => this.isInCurrentBranch(head.hash),\n };\n }),\n takeWhile(({ completed }) => !completed, true)\n );\n }\n\n /**\n *\n * @param confirmations [0] Number of confirmation to wait for\n */\n confirmation(confirmations?: number) {\n return this.confirmationObservable(confirmations).toPromise();\n }\n}\n","import { BlockResponse, OperationContentsAndResultReveal, OpKind } from '@taquito/rpc';\nimport { Observable } from 'rxjs';\nimport { Context } from '../context';\nimport { WalletOperation, OperationStatus } from './operation';\n\nexport class DelegationWalletOperation extends WalletOperation {\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n newHead$: Observable<BlockResponse>\n ) {\n super(opHash, context, newHead$);\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n return operationResult.find(x => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n\n public async delegationOperation() {\n const operationResult = await this.operationResults();\n return operationResult.find(x => x.kind === OpKind.DELEGATION) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n\n public async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.delegationOperation();\n if (!op) {\n return 'unknown';\n }\n\n return op.metadata.operation_result.status;\n }\n}\n","import {\n BlockResponse,\n OperationContentsAndResultOrigination,\n OperationContentsAndResultReveal,\n OpKind,\n} from '@taquito/rpc';\nimport { Observable } from 'rxjs';\nimport { Context } from '../context';\nimport { findWithKind } from '../operations/types';\nimport { WalletOperation, OperationStatus } from './operation';\n\nexport class OriginationWalletOperation extends WalletOperation {\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n newHead$: Observable<BlockResponse>\n ) {\n super(opHash, context, newHead$);\n }\n\n public async originationOperation() {\n const operationResult = await this.operationResults();\n return findWithKind(operationResult, OpKind.ORIGINATION) as\n | OperationContentsAndResultOrigination\n | undefined;\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n return findWithKind(operationResult, OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n\n public async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.originationOperation();\n if (!op) {\n return 'unknown';\n }\n\n return op.metadata.operation_result.status;\n }\n\n public async contract() {\n const op = await this.originationOperation();\n const address = (op!.metadata.operation_result.originated_contracts || [])[0];\n return this.context.wallet.at(address);\n }\n}\n","import { WalletOperation, OperationStatus } from './operation';\nimport { Context } from '../context';\nimport { Observable } from 'rxjs';\nimport {\n BlockResponse,\n OpKind,\n OperationContentsAndResultReveal,\n OperationContentsAndResultTransaction,\n} from '@taquito/rpc';\n\nexport class TransactionWalletOperation extends WalletOperation {\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n newHead$: Observable<BlockResponse>\n ) {\n super(opHash, context, newHead$);\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n return operationResult.find(x => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n\n public async transactionOperation() {\n const operationResult = await this.operationResults();\n return operationResult.find(x => x.kind === OpKind.TRANSACTION) as\n | OperationContentsAndResultTransaction\n | undefined;\n }\n\n public async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.transactionOperation();\n if (!op) {\n return 'unknown';\n }\n\n return op.metadata.operation_result.status;\n }\n}\n","import { BlockResponse } from '@taquito/rpc';\nimport {\n concat,\n defer,\n from,\n MonoTypeOperatorFunction,\n Observable,\n of,\n range,\n ReplaySubject,\n SchedulerLike,\n throwError,\n timer,\n} from 'rxjs';\nimport {\n concatMap,\n distinctUntilKeyChanged,\n first,\n shareReplay,\n startWith,\n switchMap,\n timeoutWith,\n} from 'rxjs/operators';\nimport { Context } from '../context';\nimport { DelegationWalletOperation } from './delegation-operation';\nimport { WalletOperation } from './operation';\nimport { OriginationWalletOperation } from './origination-operation';\nimport { TransactionWalletOperation } from './transaction-operation';\n\nexport const cacheUntil = <T>(\n cacheUntilObs: Observable<any>\n): MonoTypeOperatorFunction<T> => source => {\n let subject: ReplaySubject<T> | null = null;\n\n return defer(() => {\n if (!subject) {\n subject = new ReplaySubject<T>();\n source.pipe(first()).subscribe(subject);\n cacheUntilObs.pipe(first()).subscribe(() => {\n subject = null;\n });\n }\n\n return subject;\n });\n};\n\nexport const createNewPollingBasedHeadObservable = (\n pollingTimer: Observable<number>,\n sharedHeadOb: Observable<BlockResponse>,\n context: Context,\n scheduler?: SchedulerLike\n): Observable<BlockResponse> => { \n \n if (context.config.confirmationPollingTimeoutSecond === undefined) {\n throw new Error('Confirmation polling timeout second can not be undefined!');\n }\n\n return pollingTimer.pipe(\n switchMap(() => sharedHeadOb),\n distinctUntilKeyChanged('hash'),\n timeoutWith(\n context.config.confirmationPollingTimeoutSecond * 1000,\n throwError(new Error('Confirmation polling timed out')),\n scheduler\n ),\n shareReplay({\n refCount: true,\n scheduler,\n })\n );\n};\n\nexport interface OperationFactoryConfig {\n blockIdentifier?: string;\n}\n\nexport class OperationFactory {\n constructor(private context: Context) {}\n\n // Cache the last block for one second across all operations\n private sharedHeadObs = defer(() => from(this.context.rpc.getBlock())).pipe(\n cacheUntil(timer(0, 1000))\n );\n\n private async createNewHeadObservable() {\n const confirmationPollingIntervalSecond = this.context.config.confirmationPollingIntervalSecond !== undefined \n ? this.context.config.confirmationPollingIntervalSecond \n : await this.context.getConfirmationPollingInterval();\n return createNewPollingBasedHeadObservable(\n timer(0, confirmationPollingIntervalSecond * 1000),\n this.sharedHeadObs,\n this.context\n );\n }\n\n private createPastBlockWalker(startBlock: string, count: number = 1) {\n return from(this.context.rpc.getBlock({ block: startBlock })).pipe(\n switchMap(block => {\n if (count === 1) {\n return of(block);\n }\n\n return range(block.header.level, count - 1).pipe(\n startWith(block),\n concatMap(async level => {\n return this.context.rpc.getBlock({ block: String(level) });\n })\n );\n })\n );\n }\n\n private async createHeadObservableFromConfig({ blockIdentifier }: OperationFactoryConfig) {\n const observableSequence: Observable<BlockResponse>[] = [];\n\n if (blockIdentifier) {\n observableSequence.push(this.createPastBlockWalker(blockIdentifier));\n }\n\n observableSequence.push(await this.createNewHeadObservable());\n\n return concat(...observableSequence);\n }\n\n async createOperation(hash: string, config: OperationFactoryConfig = {}): Promise<WalletOperation> {\n return new WalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n\n async createTransactionOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<TransactionWalletOperation> {\n return new TransactionWalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n\n async createDelegationOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<DelegationWalletOperation> {\n return new DelegationWalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n\n async createOriginationOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<OriginationWalletOperation> {\n return new OriginationWalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n}\n","/** PURE_IMPORTS_START _observable_concat,_util_isScheduler PURE_IMPORTS_END */\nimport { concat } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nexport function startWith() {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i] = arguments[_i];\n }\n var scheduler = array[array.length - 1];\n if (isScheduler(scheduler)) {\n array.pop();\n return function (source) { return concat(array, source, scheduler); };\n }\n else {\n return function (source) { return concat(array, source); };\n }\n}\n//# sourceMappingURL=startWith.js.map\n","import {\n OperationContents,\n OperationContentsAndResult,\n OperationObject,\n OpKind,\n PreapplyResponse,\n RpcClient,\n RPCRunOperationParam,\n} from '@taquito/rpc';\nimport { Protocols } from '../constants';\nimport { Context } from '../context';\nimport { Estimate } from '../contract/estimate';\nimport { flattenErrors, TezosOperationError, TezosPreapplyFailureError } from './operation-errors';\nimport {\n ForgedBytes,\n isOpRequireReveal,\n ParamsWithKind,\n PrepareOperationParams,\n RPCOperation,\n RPCOpWithFee,\n RPCOpWithSource,\n} from './types';\n\n// RPC requires a signature but does not verify it\nexport const SIGNATURE_STUB =\n 'edsigtkpiSSschcaCt9pUVrpNPf7TTcgvgDEDD6NCEHMy8NNQJCGnMfLZzYoQj74yLjo9wx6MPVV29CvVzgi7qEcEUok3k7AuMg';\n\nexport interface PreparedOperation {\n opOb: {\n branch: string;\n contents: OperationContents[];\n protocol: string;\n };\n counter: number;\n}\n\nexport interface PreparedOperationSimulation {\n opOb: {\n branch: string;\n contents: OperationContents[];\n };\n counter: number;\n}\n\nexport interface PreparedOpAndSimulation {\n preparedOp: PreparedOperation;\n preparedOpSimulation?: PreparedOperationSimulation;\n}\n\nexport abstract class OperationEmitter {\n get rpc(): RpcClient {\n return this.context.rpc;\n }\n\n get signer() {\n return this.context.signer;\n }\n\n constructor(protected context: Context) {}\n\n protected async isRevealOpNeeded(op: RPCOperation[] | ParamsWithKind[], pkh: string) {\n return !(await this.isAccountRevealRequired(pkh)) || !this.isRevealRequiredForOpType(op)\n ? false\n : true;\n }\n\n protected async isAccountRevealRequired(publicKeyHash: string) {\n const manager = await this.rpc.getManagerKey(publicKeyHash);\n const haveManager = manager && typeof manager === 'object' ? !!manager.key : !!manager;\n return !haveManager;\n }\n\n protected isRevealRequiredForOpType(op: RPCOperation[] | ParamsWithKind[]) {\n let opRequireReveal = false;\n for (const operation of op) {\n if (isOpRequireReveal(operation)) {\n opRequireReveal = true;\n }\n }\n return opRequireReveal;\n }\n\n private constructOps = (\n cOps: RPCOperation[],\n publicKeyHash: string,\n headCounter: number,\n counterFunction: (\n publicKeyHash: string,\n counter: number,\n counterScope: { [key: string]: number }\n ) => { counter: string },\n source?: string\n ): OperationContents[] => {\n const counters = {};\n // tslint:disable strict-type-predicates\n return cOps.map((op: RPCOperation) => {\n switch (op.kind) {\n case OpKind.ACTIVATION:\n return {\n ...op,\n };\n case OpKind.REVEAL:\n return {\n ...op,\n ...this.getSource(op, publicKeyHash, source),\n ...counterFunction(publicKeyHash, headCounter, counters),\n ...this.getFee(op),\n };\n case OpKind.ORIGINATION:\n return {\n ...op,\n balance: typeof op.balance !== 'undefined' ? `${op.balance}` : '0',\n ...this.getSource(op, publicKeyHash, source),\n ...counterFunction(publicKeyHash, headCounter, counters),\n ...this.getFee(op),\n };\n case OpKind.TRANSACTION:\n const cops = {\n ...op,\n amount: typeof op.amount !== 'undefined' ? `${op.amount}` : '0',\n ...this.getSource(op, publicKeyHash, source),\n ...counterFunction(publicKeyHash, headCounter, counters),\n ...this.getFee(op),\n };\n if (cops.source.toLowerCase().startsWith('kt1')) {\n throw new Error(\n `KT1 addresses are not supported as source since ${Protocols.PsBabyM1}`\n );\n }\n return cops;\n case OpKind.DELEGATION:\n return {\n ...op,\n ...this.getSource(op, publicKeyHash, source),\n ...counterFunction(publicKeyHash, headCounter, counters),\n ...this.getFee(op),\n };\n default:\n throw new Error('Unsupported operation');\n }\n });\n };\n\n private getFee = (op: RPCOpWithFee) => {\n return {\n // tslint:disable-next-line: strict-type-predicates\n fee: typeof op.fee === 'undefined' ? '0' : `${op.fee}`,\n // tslint:disable-next-line: strict-type-predicates\n gas_limit: typeof op.gas_limit === 'undefined' ? '0' : `${op.gas_limit}`,\n // tslint:disable-next-line: strict-type-predicates\n storage_limit: typeof op.storage_limit === 'undefined' ? '0' : `${op.storage_limit}`,\n };\n };\n\n private getSource = (op: RPCOpWithSource, publicKeyHash: string, source?: string) => {\n return {\n source: typeof op.source === 'undefined' ? source || publicKeyHash : op.source,\n };\n };\n\n protected async prepareOpAndSimulation({\n operation,\n source\n }: PrepareOperationParams): Promise<PreparedOpAndSimulation> {\n let ops: RPCOperation[] = [];\n\n if (Array.isArray(operation)) {\n ops = [...operation];\n } else {\n ops = [operation];\n }\n\n // Implicit account who emit the operation\n const publicKeyHash = await this.signer.publicKeyHash();\n\n const { counter, hash, protocol } = await this.getCounterHashAndProtocol(ops, publicKeyHash);\n\n if (!this.context.counters[publicKeyHash] || this.context.counters[publicKeyHash] < counter) {\n this.context.counters[publicKeyHash] = counter;\n }\n\n let preparedOpSimulation;\n // This is a work around to the counter_in_the_future error returned by the RPC when calling the run_operation\n // The preparedOpSimulation will be used to prevalidate the operation instead of the preparedOp\n // The counter of an operation in preparedOpSimulation will be the head counter + 1\n // The counter in preparedOp will be incremented accordingly if sending many operations in a row by keeping it on the context\n if (counter !== this.context.counters[publicKeyHash]) {\n preparedOpSimulation = {\n opOb: {\n branch: hash,\n contents: this.constructOps(ops, publicKeyHash, counter, this.getScopeCounter, source),\n },\n counter,\n };\n }\n\n const preparedOp = {\n opOb: {\n branch: hash,\n contents: this.constructOps(ops, publicKeyHash, counter, this.getContextCounter, source),\n protocol: protocol,\n },\n counter,\n };\n\n return {\n preparedOp,\n preparedOpSimulation,\n };\n }\n\n private async getCounterHashAndProtocol(ops: RPCOperation[], publicKeyHash: string) {\n const blockHeaderPromise = this.rpc.getBlockHeader();\n const blockMetaPromise = this.rpc.getBlockMetadata();\n let counterPromise: Promise<string | undefined> = Promise.resolve(undefined);\n\n for (let i = 0; i < ops.length; i++) {\n if (isOpRequireReveal(ops[i]) || ops[i].kind === 'reveal') {\n const { counter } = await this.rpc.getContract(publicKeyHash);\n counterPromise = Promise.resolve(counter);\n break;\n }\n }\n\n const [header, metadata, headCounter] = await Promise.all([\n blockHeaderPromise,\n blockMetaPromise,\n counterPromise,\n ]);\n\n if (!header) {\n throw new Error('Unable to fetch latest block header');\n }\n\n if (!metadata) {\n throw new Error('Unable to fetch latest metadata');\n }\n\n const counter = parseInt(headCounter || '0', 10);\n return {\n counter,\n hash: header.hash,\n protocol: metadata.next_protocol,\n };\n }\n\n private getContextCounter = (publicKeyHash: string, headCounter: number) => {\n if (\n !this.context.counters[publicKeyHash] ||\n this.context.counters[publicKeyHash] < headCounter\n ) {\n this.context.counters[publicKeyHash] = headCounter;\n }\n const opCounter = ++this.context.counters[publicKeyHash];\n return {\n counter: `${opCounter}`,\n };\n };\n\n private getScopeCounter = (\n publicKeyHash: string,\n headCounter: number,\n countersScope: { [key: string]: number }\n ) => {\n if (!countersScope[publicKeyHash] || countersScope[publicKeyHash] < headCounter) {\n countersScope[publicKeyHash] = headCounter;\n }\n return {\n counter: `${++countersScope[publicKeyHash]}`,\n };\n };\n\n protected async prepareOperationEstimation({\n operation,\n source\n }: PrepareOperationParams): Promise<PreparedOperationSimulation> {\n const countersScope: { [key: string]: number } = {};\n let ops: RPCOperation[] = [];\n\n if (Array.isArray(operation)) {\n ops = [...operation];\n } else {\n ops = [operation];\n }\n\n const publicKeyHash = source? source: await this.signer.publicKeyHash();\n\n const { counter, hash } = await this.getCounterHashAndProtocol(ops, publicKeyHash);\n\n if (!countersScope[publicKeyHash] || countersScope[publicKeyHash] < counter) {\n countersScope[publicKeyHash] = counter;\n }\n\n return {\n opOb: {\n branch: hash,\n contents: this.constructOps(ops, publicKeyHash, counter, this.getScopeCounter, source),\n },\n counter,\n };\n }\n\n protected async preValidate(prepared: PreparedOpAndSimulation, forgedOperation: ForgedBytes) {\n return prepared.preparedOpSimulation\n ? // If we want to inject many operations in a same block\n // we call runOperation instead of preapply\n // to avoid having to produce 2 signatures (op with incremented counter and op used for simulation)\n this.runOperation({\n operation: {\n signature: SIGNATURE_STUB,\n ...prepared.preparedOpSimulation.opOb,\n },\n chain_id: await this.rpc.getChainId(),\n })\n : this.preapplyOperation(forgedOperation.opOb);\n }\n\n protected async forgeOperation({\n opOb: { branch, contents },\n }: PreparedOperation | PreparedOperationSimulation) {\n return this.context.forger.forge({ branch, contents });\n }\n\n protected async forge({\n opOb: { branch, contents, protocol },\n counter,\n }: PreparedOperation): Promise<ForgedBytes> {\n let forgedBytes = await this.context.forger.forge({ branch, contents });\n\n return {\n opbytes: forgedBytes,\n opOb: {\n branch,\n contents,\n protocol,\n },\n counter,\n };\n }\n\n protected async simulate(op: RPCRunOperationParam) {\n return {\n opResponse: await this.rpc.runOperation(op),\n op,\n context: this.context.clone(),\n };\n }\n\n protected async estimate<T extends { fee?: number; gasLimit?: number; storageLimit?: number }>(\n { fee, gasLimit, storageLimit, ...rest }: T,\n estimator: (param: T) => Promise<Estimate>\n ) {\n let calculatedFee = fee;\n let calculatedGas = gasLimit;\n let calculatedStorage = storageLimit;\n\n if (fee === undefined || gasLimit === undefined || storageLimit === undefined) {\n const estimation = await estimator({ fee, gasLimit, storageLimit, ...(rest as any) });\n\n if (calculatedFee === undefined) {\n calculatedFee = estimation.suggestedFeeMutez;\n }\n\n if (calculatedGas === undefined) {\n calculatedGas = estimation.gasLimit;\n }\n\n if (calculatedStorage === undefined) {\n calculatedStorage = estimation.storageLimit;\n }\n }\n\n return {\n fee: calculatedFee!,\n gasLimit: calculatedGas!,\n storageLimit: calculatedStorage!,\n };\n }\n\n protected async signOperation(forgedBytes: ForgedBytes) {\n const signed = await this.signer.sign(forgedBytes.opbytes, new Uint8Array([3]));\n forgedBytes.opbytes = signed.sbytes;\n forgedBytes.opOb.signature = signed.prefixSig;\n return forgedBytes;\n }\n\n protected async runOperation(op: RPCRunOperationParam) {\n const opResponse: OperationContentsAndResult[] = [];\n const results = await this.rpc.runOperation(op);\n\n for (let j = 0; j < results.contents.length; j++) {\n opResponse.push(results.contents[j]);\n }\n const errors = flattenErrors(results);\n\n if (errors.length) {\n // @ts-ignore\n throw new TezosOperationError(errors);\n }\n\n return opResponse;\n }\n\n protected async preapplyOperation(opOb: OperationObject) {\n const opResponse: OperationContentsAndResult[] = [];\n const results = await this.rpc.preapplyOperations([opOb]);\n\n if (!Array.isArray(results)) {\n throw new TezosPreapplyFailureError(results);\n }\n\n for (let i = 0; i < results.length; i++) {\n for (let j = 0; j < results[i].contents.length; j++) {\n opResponse.push(results[i].contents[j]);\n }\n }\n\n const errors = flattenErrors(results);\n\n if (errors.length) {\n // @ts-ignore\n throw new TezosOperationError(errors);\n }\n return opResponse;\n }\n\n protected async injectOperation(signedOperationBytes: string) {\n return this.context.injector.inject(signedOperationBytes);\n }\n}\n","import {\n BlockResponse,\n OperationContentsAndResult,\n OperationContentsAndResultReveal,\n} from '@taquito/rpc';\nimport { defer, from, ReplaySubject, timer } from 'rxjs';\nimport {\n filter,\n first,\n map,\n mapTo,\n shareReplay,\n switchMap,\n switchMapTo,\n tap,\n} from 'rxjs/operators';\nimport { Context } from '../context';\nimport { ForgedBytes, hasMetadataWithResult } from './types';\n\ninterface PollingConfig {\n timeout: number;\n interval: number;\n}\n\n/**\n * @description Utility class to interact with Tezos operations\n */\nexport class Operation {\n private _pollingConfig$ = new ReplaySubject<PollingConfig>(1);\n\n private _currentHeadPromise: Promise<BlockResponse> | undefined = undefined;\n\n // Caching the current head for one second\n private currentHead$ = defer(() => {\n if (!this._currentHeadPromise) {\n this._currentHeadPromise = this.context.rpc.getBlock();\n timer(1000)\n .pipe(first())\n .subscribe(() => {\n this._currentHeadPromise = undefined;\n });\n }\n return from(this._currentHeadPromise);\n });\n\n // Polling observable that emit until timeout is reached\n private polling$ = defer(() =>\n this._pollingConfig$.pipe(\n tap(({ timeout, interval }) => {\n if (timeout <= 0) {\n throw new Error('Timeout must be more than 0');\n }\n\n if (interval <= 0) {\n throw new Error('Interval must be more than 0');\n }\n }),\n map((config) => ({\n ...config,\n timeoutAt: Math.ceil(config.timeout / config.interval) + 1,\n count: 0,\n })),\n switchMap((config) => timer(0, config.interval * 1000).pipe(mapTo(config))),\n tap((config) => {\n config.count++;\n if (config.count > config.timeoutAt) {\n throw new Error(`Confirmation polling timed out`);\n }\n })\n )\n );\n\n // Observable that emit once operation is seen in a block\n private confirmed$ = this.polling$.pipe(\n switchMapTo(this.currentHead$),\n map((head) => {\n for (let i = 3; i >= 0; i--) {\n head.operations[i].forEach((op) => {\n if (op.hash === this.hash) {\n this._foundAt = head.header.level;\n }\n });\n }\n\n if (head.header.level - this._foundAt >= 0) {\n return this._foundAt;\n }\n }),\n filter((x) => x !== undefined),\n first(),\n shareReplay()\n );\n\n protected _foundAt = Number.POSITIVE_INFINITY;\n get includedInBlock() {\n return this._foundAt;\n }\n /**\n *\n * @param hash Operation hash\n * @param raw Raw operation that was injected\n * @param context Taquito context allowing access to rpc and signer\n */\n constructor(\n public readonly hash: string,\n public readonly raw: ForgedBytes,\n public readonly results: OperationContentsAndResult[],\n protected readonly context: Context\n ) {\n this.confirmed$.pipe(first()).subscribe();\n }\n\n get revealOperation() {\n return (\n Array.isArray(this.results) &&\n (this.results.find((op) => op.kind === 'reveal') as\n | OperationContentsAndResultReveal\n | undefined)\n );\n }\n\n public get revealStatus() {\n if (this.revealOperation) {\n return this.revealOperation.metadata.operation_result.status;\n } else {\n return 'unknown';\n }\n }\n\n public get status() {\n return (\n this.results.map((result) => {\n if (hasMetadataWithResult(result)) {\n return result.metadata.operation_result.status;\n } else {\n return 'unknown';\n }\n })[0] || 'unknown'\n );\n }\n\n /**\n *\n * @param confirmations [0] Number of confirmation to wait for\n * @param interval [10] Polling interval\n * @param timeout [180] Timeout\n */\n async confirmation(confirmations?: number, interval?: number, timeout?: number) {\n if (typeof confirmations !== 'undefined' && confirmations < 1) {\n throw new Error('Confirmation count must be at least 1');\n }\n\n const confirmationPollingIntervalSecond =\n this.context.config.confirmationPollingIntervalSecond !== undefined\n ? this.context.config.confirmationPollingIntervalSecond\n : await this.context.getConfirmationPollingInterval();\n\n const { defaultConfirmationCount, confirmationPollingTimeoutSecond } = this.context.config;\n this._pollingConfig$.next({\n interval: interval || confirmationPollingIntervalSecond,\n timeout: timeout || confirmationPollingTimeoutSecond,\n } as Required<PollingConfig>);\n\n const conf = confirmations !== undefined ? confirmations : defaultConfirmationCount;\n\n if (conf === undefined) {\n throw new Error('Default confirmation count can not be undefined!');\n }\n\n return new Promise<number>((resolve, reject) => {\n this.confirmed$\n .pipe(\n switchMap(() => this.polling$),\n switchMap(() => this.currentHead$),\n filter((head) => head.header.level - this._foundAt >= conf - 1),\n first()\n )\n .subscribe((_) => {\n resolve(this._foundAt + (conf - 1));\n }, reject);\n });\n }\n}\n","/** PURE_IMPORTS_START _switchMap PURE_IMPORTS_END */\nimport { switchMap } from './switchMap';\nexport function switchMapTo(innerObservable, resultSelector) {\n return resultSelector ? switchMap(function () { return innerObservable; }, resultSelector) : switchMap(function () { return innerObservable; });\n}\n//# sourceMappingURL=switchMapTo.js.map\n","import BigNumber from 'bignumber.js';\nimport { Context } from '../context';\nimport { OperationEmitter } from '../operations/operation-emitter';\nimport { Operation } from '../operations/operations';\nimport { RPCActivateOperation } from '../operations/types';\nimport { TzProvider } from './interface';\nimport { OpKind } from '@taquito/rpc';\n\nexport class RpcTzProvider extends OperationEmitter implements TzProvider {\n constructor(context: Context) {\n super(context);\n }\n\n async getBalance(address: string): Promise<BigNumber> {\n return this.rpc.getBalance(address);\n }\n\n async getDelegate(address: string): Promise<string | null> {\n return this.rpc.getDelegate(address);\n }\n\n async activate(pkh: string, secret: string) {\n const operation: RPCActivateOperation = {\n kind: OpKind.ACTIVATION,\n pkh,\n secret,\n };\n\n const prepared = await this.prepareOpAndSimulation({\n operation: [operation],\n source: pkh\n });\n const forgedBytes = await this.forge(prepared.preparedOp);\n const bytes = `${forgedBytes.opbytes}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`;\n return new Operation(\n await this.rpc.injectOperation(bytes),\n { ...forgedBytes, opbytes: bytes },\n [],\n this.context.clone()\n );\n }\n}\n","const MINIMAL_FEE_MUTEZ = 100;\nconst MINIMAL_FEE_PER_BYTE_MUTEZ = 1;\nconst MINIMAL_FEE_PER_GAS_MUTEZ = 0.1;\n\nconst GAS_BUFFER = 100;\n\nexport interface EstimateProperties {\n milligasLimit: number,\n storageLimit: number,\n opSize: number,\n minimalFeePerStorageByteMutez: number,\n baseFeeMutez?: number\n}\n\n/**\n * Examples of use :\n *\n * Estimate a transfer operation :\n * ```\n * // Assuming that provider and signer are already configured...\n *\n * const amount = 2;\n * const address = 'tz1h3rQ8wBxFd8L9B3d7Jhaawu6Z568XU3xY';\n *\n * // Estimate gasLimit, storageLimit and fees for a transfer operation\n * const est = await Tezos.estimate.transfer({ to: address, amount: amount })\n * console.log(est.burnFeeMutez, est.gasLimit, est.minimalFeeMutez, est.storageLimit,\n * est.suggestedFeeMutez, est.totalCost, est.usingBaseFeeMutez)\n *\n * ```\n *\n * Estimate a contract origination :\n * ```\n * // generic.json is referring to a Michelson Smart Contract\n *\n * const genericMultisigJSON = require('./generic.json')\n * const est = await Tezos.estimate.originate({\n * code: genericMultisigJSON,\n * storage: {\n * stored_counter: 0,\n * threshold: 1,\n * keys: ['edpkuLxx9PQD8fZ45eUzrK3BhfDZJHhBuK4Zi49DcEGANwd2rpX82t']\n * }\n * })\n * console.log(est.burnFeeMutez, est.gasLimit, est.minimalFeeMutez, est.storageLimit,\n * est.suggestedFeeMutez, est.totalCost, est.usingBaseFeeMutez)\n *\n * ```\n */\n\nexport class Estimate {\n constructor(\n private readonly _milligasLimit: number | string,\n private readonly _storageLimit: number | string,\n private readonly opSize: number | string,\n private readonly minimalFeePerStorageByteMutez: number | string,\n /**\n * @description Base fee in mutez (1 mutez = 1e10−6 tez)\n */\n private readonly baseFeeMutez: number | string = MINIMAL_FEE_MUTEZ\n ) {}\n\n /**\n * @description The number of Mutez that will be burned for the storage of the [operation](https://tezos.gitlab.io/user/glossary.html#operations). (Storage + Allocation fees)\n */\n get burnFeeMutez() {\n return this.roundUp(Number(this.storageLimit) * Number(this.minimalFeePerStorageByteMutez));\n }\n\n /**\n * @description The limit on the amount of storage an [operation](https://tezos.gitlab.io/user/glossary.html#operations) can use.\n */\n get storageLimit() {\n const limit = Math.max(Number(this._storageLimit), 0);\n return limit > 0 ? limit : 0;\n }\n\n /**\n * @description The limit on the amount of [gas](https://tezos.gitlab.io/user/glossary.html#gas) a given operation can consume.\n */\n get gasLimit() {\n return this.roundUp(Number(this._milligasLimit)/1000 + GAS_BUFFER);\n }\n\n private get operationFeeMutez() {\n return (\n (Number(this._milligasLimit)/1000 + GAS_BUFFER) * MINIMAL_FEE_PER_GAS_MUTEZ + Number(this.opSize) * MINIMAL_FEE_PER_BYTE_MUTEZ\n );\n }\n\n private roundUp(nanotez: number) {\n return Math.ceil(Number(nanotez));\n }\n\n /**\n * @description Minimum fees for the [operation](https://tezos.gitlab.io/user/glossary.html#operations) according to [baker](https://tezos.gitlab.io/user/glossary.html#baker) defaults.\n */\n get minimalFeeMutez() {\n return this.roundUp(MINIMAL_FEE_MUTEZ + this.operationFeeMutez);\n }\n\n /**\n * @description The suggested fee for the operation which includes minimal fees and a small buffer.\n */\n get suggestedFeeMutez() {\n return this.roundUp(this.operationFeeMutez + MINIMAL_FEE_MUTEZ * 2);\n }\n\n /**\n * @description Fees according to your specified base fee will ensure that at least minimum fees are used.\n */\n get usingBaseFeeMutez() {\n return (\n Math.max(Number(this.baseFeeMutez), MINIMAL_FEE_MUTEZ) + this.roundUp(this.operationFeeMutez)\n );\n }\n\n /**\n * @description The sum of `minimalFeeMutez` + `burnFeeMutez`.\n */\n get totalCost() {\n return this.minimalFeeMutez + this.burnFeeMutez;\n }\n\n /**\n * @description Since Delphinet, consumed gas is provided in milligas for more precision. \n * This function returns an estimation of the gas that operation will consume in milligas. \n */\n get consumedMilligas() {\n return Number(this._milligasLimit);\n }\n\n static createEstimateInstanceFromProperties(estimateProperties: EstimateProperties[]) {\n let milligasLimit = 0;\n let storageLimit = 0;\n let opSize = 0;\n let minimalFeePerStorageByteMutez = 0;\n let baseFeeMutez: number | undefined;\n\n estimateProperties.forEach(estimate => {\n milligasLimit += estimate.milligasLimit;\n storageLimit += estimate.storageLimit;\n opSize += estimate.opSize;\n minimalFeePerStorageByteMutez = Math.max(estimate.minimalFeePerStorageByteMutez, minimalFeePerStorageByteMutez);\n if (estimate.baseFeeMutez) {\n baseFeeMutez = baseFeeMutez ? baseFeeMutez + estimate.baseFeeMutez : estimate.baseFeeMutez;\n }\n })\n return new Estimate(milligasLimit, storageLimit, opSize, minimalFeePerStorageByteMutez, baseFeeMutez);\n }\n\n static createArrayEstimateInstancesFromProperties(estimateProperties: EstimateProperties[]) {\n return estimateProperties.map(x => new Estimate(x.milligasLimit, x.storageLimit, x.opSize, x.minimalFeePerStorageByteMutez, x.baseFeeMutez))\n }\n}\n","import BigNumber from 'bignumber.js';\n\nconst TZ_DECIMALS = 6;\nconst MTZ_DECIMALS = 3;\n\ntype Format = 'tz' | 'mtz' | 'mutez';\n\nfunction getDecimal(format: Format) {\n switch (format) {\n case 'tz':\n return TZ_DECIMALS;\n case 'mtz':\n return MTZ_DECIMALS;\n case 'mutez':\n default:\n return 0;\n }\n}\n\nexport function format(\n from: Format = 'mutez',\n to: Format = 'mutez',\n amount: number | string | BigNumber\n) {\n const bigNum = new BigNumber(amount);\n if (bigNum.isNaN()) {\n return amount;\n }\n\n return bigNum\n .multipliedBy(Math.pow(10, getDecimal(from)))\n .dividedBy(Math.pow(10, getDecimal(to)));\n}\n","export class InvalidParameterError implements Error {\n name: string = 'Invalid parameters error';\n message: string;\n constructor(public smartContractMethodName: string, public sigs: any[], public args: any[]) {\n this.message = `${smartContractMethodName} Received ${\n args.length\n } arguments while expecting one of the following signatures (${JSON.stringify(sigs)})`;\n }\n}\n\nexport class UndefinedLambdaContractError implements Error {\n name: string = 'Undefined LambdaContract error';\n message: string;\n constructor() {\n this.message = \"This might happen if you are using a sandbox. Please provide the address of a lambda contract as a parameter of the read method.\";\n }\n}\nexport class InvalidDelegationSource implements Error {\n name: string = 'Invalid delegation source error';\n message: string;\n\n constructor(public source: string) {\n this.message = `Since Babylon delegation source can no longer be a contract address ${source}. Please use the smart contract abstraction to set your delegate.`;\n }\n}\n\nexport class InvalidCodeParameter implements Error {\n public name: string = 'InvalidCodeParameter';\n constructor(public message: string, public readonly data: any) { }\n}\n\nexport class InvalidInitParameter implements Error {\n public name: string = 'InvalidInitParameter';\n constructor(public message: string, public readonly data: any) { }\n}\n","import { Schema } from '@taquito/michelson-encoder';\nimport { OpKind, MichelsonV1Expression } from '@taquito/rpc';\nimport { Prim, Expr } from '@taquito/michel-codec';\nimport {\n OriginateParams,\n RPCOriginationOperation,\n TransferParams,\n RPCTransferOperation,\n DelegateParams,\n RPCDelegateOperation,\n RegisterDelegateParams,\n RPCRevealOperation,\n RevealParams\n} from '../operations/types';\nimport { DEFAULT_FEE, DEFAULT_GAS_LIMIT, DEFAULT_STORAGE_LIMIT } from '../constants';\nimport { format } from '../format';\nimport { InvalidCodeParameter, InvalidInitParameter } from './errors';\n\nexport const createOriginationOperation = async ({\n code,\n init,\n balance = \"0\",\n delegate,\n storage,\n fee = DEFAULT_FEE.ORIGINATION,\n gasLimit = DEFAULT_GAS_LIMIT.ORIGINATION,\n storageLimit = DEFAULT_STORAGE_LIMIT.ORIGINATION,\n mutez = false\n}: OriginateParams) => {\n // tslint:disable-next-line: strict-type-predicates\n if (storage !== undefined && init !== undefined) {\n throw new Error(\n \"Storage and Init cannot be set a the same time. Please either use storage or init but not both.\",\n );\n }\n\n if(!Array.isArray(code)){\n throw new InvalidCodeParameter('Wrong code parameter type, expected an array', code);\n }\n\n let contractStorage: Expr | undefined;\n if (storage !== undefined) {\n const storageType = (code as Expr[]).find((p): p is Prim => ('prim' in p) && p.prim === 'storage');\n if (storageType?.args === undefined) {\n throw new InvalidCodeParameter('The storage section is missing from the script', code);\n }\n const schema = new Schema(storageType.args[0] as MichelsonV1Expression); // TODO\n contractStorage = schema.Encode(storage);\n } else if (init !== undefined && typeof init === 'object') {\n contractStorage = init as Expr;\n } else {\n throw new InvalidInitParameter('Wrong init parameter type, expected JSON Michelson', init);\n }\n\n const script = {\n code,\n storage: contractStorage,\n };\n\n const operation: RPCOriginationOperation = {\n kind: OpKind.ORIGINATION,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n balance: mutez\n ? balance.toString()\n : format('tz', 'mutez', balance).toString(),\n script,\n };\n\n if (delegate) {\n operation.delegate = delegate;\n }\n return operation;\n};\n\nexport const createTransferOperation = async ({\n to,\n amount,\n parameter,\n fee = DEFAULT_FEE.TRANSFER,\n gasLimit = DEFAULT_GAS_LIMIT.TRANSFER,\n storageLimit = DEFAULT_STORAGE_LIMIT.TRANSFER,\n mutez = false,\n}: TransferParams) => {\n const operation: RPCTransferOperation = {\n kind: OpKind.TRANSACTION,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n amount: mutez\n ? amount.toString()\n : format(\"tz\", \"mutez\", amount).toString(),\n destination: to,\n parameters: parameter,\n };\n return operation;\n};\n\nexport const createSetDelegateOperation = async ({\n delegate,\n source,\n fee = DEFAULT_FEE.DELEGATION,\n gasLimit = DEFAULT_GAS_LIMIT.DELEGATION,\n storageLimit = DEFAULT_STORAGE_LIMIT.DELEGATION,\n}: DelegateParams) => {\n const operation: RPCDelegateOperation = {\n kind: OpKind.DELEGATION,\n source,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n delegate,\n };\n return operation;\n};\n\nexport const createRegisterDelegateOperation = async (\n {\n fee = DEFAULT_FEE.DELEGATION,\n gasLimit = DEFAULT_GAS_LIMIT.DELEGATION,\n storageLimit = DEFAULT_STORAGE_LIMIT.DELEGATION,\n }: RegisterDelegateParams,\n source: string,\n) => {\n return {\n kind: OpKind.DELEGATION,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n delegate: source,\n } as RPCDelegateOperation;\n};\n\nexport const createRevealOperation = async (\n {\n fee = DEFAULT_FEE.REVEAL,\n gasLimit = DEFAULT_GAS_LIMIT.REVEAL,\n storageLimit = DEFAULT_STORAGE_LIMIT.REVEAL,\n }: RevealParams,\n source: string,\n publicKey: string,\n) => {\n return {\n kind: OpKind.REVEAL,\n fee,\n public_key: publicKey,\n source,\n gas_limit: gasLimit,\n storage_limit: storageLimit\n } as RPCRevealOperation;\n};","import { PreapplyResponse, RPCRunOperationParam, OpKind } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { DEFAULT_FEE, DEFAULT_GAS_LIMIT, DEFAULT_STORAGE_LIMIT } from '../constants';\nimport { OperationEmitter, SIGNATURE_STUB } from '../operations/operation-emitter';\nimport {\n flattenErrors,\n flattenOperationResult,\n TezosOperationError,\n} from '../operations/operation-errors';\nimport {\n DelegateParams,\n isOpWithFee,\n OriginateParams,\n ParamsWithKind,\n PrepareOperationParams,\n RegisterDelegateParams,\n RPCOperation,\n TransferParams,\n RevealParams,\n} from '../operations/types';\nimport { Estimate, EstimateProperties } from './estimate';\nimport { EstimationProvider } from './interface';\nimport {\n createOriginationOperation,\n createRegisterDelegateOperation,\n createRevealOperation,\n createSetDelegateOperation,\n createTransferOperation,\n} from './prepare';\n\ninterface Limits {\n fee?: number;\n storageLimit?: number;\n gasLimit?: number;\n}\n\nconst mergeLimits = (\n userDefinedLimit: Limits,\n defaultLimits: Required<Limits>\n): Required<Limits> => {\n return {\n fee: typeof userDefinedLimit.fee === 'undefined' ? defaultLimits.fee : userDefinedLimit.fee,\n gasLimit:\n typeof userDefinedLimit.gasLimit === 'undefined'\n ? defaultLimits.gasLimit\n : userDefinedLimit.gasLimit,\n storageLimit:\n typeof userDefinedLimit.storageLimit === 'undefined'\n ? defaultLimits.storageLimit\n : userDefinedLimit.storageLimit,\n };\n};\n\nexport class RPCEstimateProvider extends OperationEmitter implements EstimationProvider {\n private readonly ALLOCATION_STORAGE = 257;\n private readonly ORIGINATION_STORAGE = 257;\n private readonly OP_SIZE_REVEAL = 128;\n\n // Maximum values defined by the protocol\n private async getAccountLimits(pkh: string, numberOfOps?: number) {\n const balance = await this.rpc.getBalance(pkh);\n const {\n hard_gas_limit_per_operation,\n hard_gas_limit_per_block,\n hard_storage_limit_per_operation,\n cost_per_byte,\n } = await this.rpc.getConstants();\n return {\n fee: 0,\n gasLimit: numberOfOps\n ? Math.floor(\n this.ajustGasForBatchOperation(\n hard_gas_limit_per_block,\n hard_gas_limit_per_operation,\n numberOfOps\n ).toNumber()\n )\n : hard_gas_limit_per_operation.toNumber(),\n storageLimit: Math.floor(\n BigNumber.min(balance.dividedBy(cost_per_byte), hard_storage_limit_per_operation).toNumber()\n ),\n };\n }\n\n // Fix for Granada where the total gasLimit of a batch can not exceed the hard_gas_limit_per_block.\n // If the total gasLimit of the batch is higher than the hard_gas_limit_per_block,\n // the gasLimit is calculated by dividing the hard_gas_limit_per_block by the number of operation in the batch (numberOfOps).\n // numberOfOps is incremented by 1 for safety in case a reveal operation is needed\n private ajustGasForBatchOperation(\n gasLimitBlock: BigNumber,\n gaslimitOp: BigNumber,\n numberOfOps: number\n ) {\n return BigNumber.min(gaslimitOp, gasLimitBlock.div(numberOfOps + 1));\n }\n\n private getEstimationPropertiesFromOperationContent(\n content: PreapplyResponse['contents'][0],\n size: number,\n costPerByte: BigNumber\n ): EstimateProperties {\n const operationResults = flattenOperationResult({ contents: [content] });\n let totalGas = 0;\n let totalMilligas = 0;\n let totalStorage = 0;\n operationResults.forEach((result) => {\n totalStorage +=\n 'originated_contracts' in result && typeof result.originated_contracts !== 'undefined'\n ? result.originated_contracts.length * this.ORIGINATION_STORAGE\n : 0;\n totalStorage += 'allocated_destination_contract' in result ? this.ALLOCATION_STORAGE : 0;\n totalGas += Number(result.consumed_gas) || 0;\n totalMilligas += Number(result.consumed_milligas) || 0;\n totalStorage +=\n 'paid_storage_size_diff' in result ? Number(result.paid_storage_size_diff) || 0 : 0;\n });\n\n if (totalGas !== 0 && totalMilligas === 0) {\n // This will convert gas to milligas for Carthagenet where result does not contain consumed gas in milligas.\n totalMilligas = totalGas * 1000;\n }\n\n if (isOpWithFee(content)) {\n return {\n milligasLimit: totalMilligas || 0,\n storageLimit: Number(totalStorage || 0),\n opSize: size,\n minimalFeePerStorageByteMutez: costPerByte.toNumber(),\n };\n } else {\n return {\n milligasLimit: 0,\n storageLimit: 0,\n opSize: size,\n minimalFeePerStorageByteMutez: costPerByte.toNumber(),\n baseFeeMutez: 0,\n };\n }\n }\n\n private async prepareEstimate(params: PrepareOperationParams) {\n const preparedSimulation = await this.prepareOperationEstimation(params);\n const opbytes = await this.forgeOperation(preparedSimulation);\n let operation: RPCRunOperationParam = {\n operation: {\n branch: preparedSimulation.opOb.branch,\n contents: preparedSimulation.opOb.contents,\n signature: SIGNATURE_STUB,\n },\n chain_id: await this.rpc.getChainId(),\n };\n\n const { opResponse } = await this.simulate(operation);\n const { cost_per_byte } = await this.rpc.getConstants();\n const errors = [...flattenErrors(opResponse, 'backtracked'), ...flattenErrors(opResponse)];\n\n // Fail early in case of errors\n if (errors.length) {\n throw new TezosOperationError(errors);\n }\n\n let numberOfOps = 1;\n if (Array.isArray(params.operation) && params.operation.length > 1) {\n numberOfOps =\n opResponse.contents[0].kind === 'reveal'\n ? params.operation.length - 1\n : params.operation.length;\n }\n\n return opResponse.contents.map((x) => {\n return this.getEstimationPropertiesFromOperationContent(\n x,\n // TODO: Calculate a specific opSize for each operation.\n x.kind === 'reveal' ? this.OP_SIZE_REVEAL / 2 : opbytes.length / 2 / numberOfOps,\n cost_per_byte\n );\n });\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an origination operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param OriginationOperation Originate operation parameter\n */\n async originate({ fee, storageLimit, gasLimit, ...rest }: OriginateParams) {\n const pkh = await this.signer.publicKeyHash();\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh);\n const op = await createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n })\n );\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate({\n operation: ops,\n source: pkh,\n });\n if (isRevealNeeded) {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an transfer operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param TransferOperation Originate operation parameter\n */\n async transfer({ fee, storageLimit, gasLimit, ...rest }: TransferParams) {\n const pkh = await this.signer.publicKeyHash();\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh);\n const op = await createTransferOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate({\n operation: ops,\n source: pkh\n });\n if (isRevealNeeded) {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a delegate operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n async setDelegate({ fee, gasLimit, storageLimit, ...rest }: DelegateParams) {\n const pkh = await this.signer.publicKeyHash();\n const sourceOrDefault = rest.source || pkh;\n const DEFAULT_PARAMS = await this.getAccountLimits(sourceOrDefault);\n const op = await createSetDelegateOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate({\n operation: ops,\n source: pkh\n });\n if (isRevealNeeded) {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a each operation in the batch\n *\n * @returns An array of Estimate objects. If a reveal operation is needed, the first element of the array is the Estimate for the reveal operation.\n */\n async batch(params: ParamsWithKind[]) {\n const pkh = await this.signer.publicKeyHash();\n let operations: RPCOperation[] = [];\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, params.length);\n for (const param of params) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n operations.push(\n await createTransferOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.ORIGINATION:\n operations.push(\n await createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n )\n );\n break;\n case OpKind.DELEGATION:\n operations.push(\n await createSetDelegateOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.ACTIVATION:\n operations.push({\n ...param,\n ...DEFAULT_PARAMS,\n });\n break;\n default:\n throw new Error(`Unsupported operation kind: ${(param as any).kind}`);\n }\n }\n const isRevealNeeded = await this.isRevealOpNeeded(operations, pkh);\n operations = isRevealNeeded ? await this.addRevealOp(operations, pkh) : operations;\n const estimateProperties = await this.prepareEstimate({\n operation: operations,\n source: pkh\n });\n\n return Estimate.createArrayEstimateInstancesFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a delegate operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n async registerDelegate(params: RegisterDelegateParams) {\n const pkh = await this.signer.publicKeyHash();\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh);\n const op = await createRegisterDelegateOperation({ ...params, ...DEFAULT_PARAMS }, pkh);\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate({\n operation: ops,\n source: pkh\n });\n if (isRevealNeeded) {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees to reveal the current account\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation or undefined if the account is already revealed\n *\n * @param Estimate\n */\n async reveal(params?: RevealParams) {\n const pkh = await this.signer.publicKeyHash();\n if (await this.isAccountRevealRequired(pkh)) {\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh);\n const op = await createRevealOperation(\n {\n ...params,\n ...DEFAULT_PARAMS,\n },\n pkh,\n await this.signer.publicKey()\n );\n const estimateProperties = await this.prepareEstimate({ operation: op, source: pkh });\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n }\n\n private async addRevealOp(op: RPCOperation[], pkh: string) {\n op.unshift(\n await createRevealOperation(\n {\n ...{\n fee: DEFAULT_FEE.REVEAL,\n gasLimit: DEFAULT_GAS_LIMIT.REVEAL,\n storageLimit: DEFAULT_STORAGE_LIMIT.REVEAL,\n },\n },\n pkh,\n await this.signer.publicKey()\n )\n );\n return op;\n }\n}\n","import { OperationContentsAndResult, OperationResultStatusEnum } from '@taquito/rpc';\nimport { BATCH_KINDS } from '../batch/rpc-batch-provider';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult } from './operation-errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCOperation,\n StorageConsumingOperation,\n hasMetadataWithResult,\n} from './types';\n\nexport class BatchOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n constructor(\n hash: string,\n private readonly params: RPCOperation[],\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n private sumProp(arr: any[], prop: string) {\n return arr.reduce((prev, current) => {\n return prop in current ? Number(current[prop]) + prev : prev;\n }, 0);\n }\n\n public get status() {\n return (\n this.results\n .filter((result) => BATCH_KINDS.indexOf(result.kind) !== -1)\n .map((result) => {\n if (hasMetadataWithResult(result)) {\n return result.metadata.operation_result.status;\n } else {\n return 'unknown';\n }\n })[0] || 'unknown'\n );\n }\n\n get fee() {\n return this.sumProp(this.params, 'fee');\n }\n\n get gasLimit() {\n return this.sumProp(this.params, 'gas_limit');\n }\n\n get storageLimit() {\n return this.sumProp(this.params, 'storage_limit');\n }\n\n get consumedGas() {\n return String(this.sumProp(flattenOperationResult({ contents: this.results }), 'consumed_gas'));\n }\n\n get storageDiff() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.results }), 'paid_storage_size_diff')\n );\n }\n\n get errors() {\n return flattenErrors({ contents: this.results });\n }\n}\n","import { Context } from '../context';\nimport { ContractMethod } from '../contract/contract';\nimport { EstimationProvider, ContractProvider } from '../contract/interface';\nimport {\n createOriginationOperation,\n createRevealOperation,\n createSetDelegateOperation,\n createTransferOperation,\n} from '../contract/prepare';\nimport { BatchOperation } from '../operations/batch-operation';\nimport { OperationEmitter } from '../operations/operation-emitter';\nimport {\n ActivationParams,\n DelegateParams,\n OriginateParams,\n RPCOperation,\n TransferParams,\n ParamsWithKind,\n isOpWithFee,\n withKind,\n RevealParams,\n isOpRequireReveal,\n} from '../operations/types';\nimport { OpKind } from '@taquito/rpc';\n\nexport const BATCH_KINDS = [\n OpKind.ACTIVATION,\n OpKind.ORIGINATION,\n OpKind.TRANSACTION,\n OpKind.DELEGATION,\n];\nexport type BatchKinds =\n | OpKind.ACTIVATION\n | OpKind.ORIGINATION\n | OpKind.TRANSACTION\n | OpKind.DELEGATION;\n\nexport class OperationBatch extends OperationEmitter {\n private operations: ParamsWithKind[] = [];\n\n constructor(context: Context, private estimator: EstimationProvider) {\n super(context);\n }\n\n /**\n *\n * @description Add a transaction operation to the batch\n *\n * @param params Transfer operation parameter\n */\n withTransfer(params: TransferParams) {\n this.operations.push({ kind: OpKind.TRANSACTION, ...params });\n return this;\n }\n\n /**\n *\n * @description Add a transaction operation to the batch\n *\n * @param params Transfer operation parameter\n */\n withContractCall(params: ContractMethod<ContractProvider>) {\n return this.withTransfer(params.toTransferParams());\n }\n\n /**\n *\n * @description Add a delegation operation to the batch\n *\n * @param params Delegation operation parameter\n */\n withDelegation(params: DelegateParams) {\n this.operations.push({ kind: OpKind.DELEGATION, ...params });\n return this;\n }\n\n /**\n *\n * @description Add an activation operation to the batch\n *\n * @param params Activation operation parameter\n */\n withActivation({ pkh, secret }: ActivationParams) {\n this.operations.push({ kind: OpKind.ACTIVATION, pkh, secret });\n return this;\n }\n\n /**\n *\n * @description Add an origination operation to the batch\n *\n * @param params Origination operation parameter\n */\n withOrigination(params: OriginateParams) {\n this.operations.push({ kind: OpKind.ORIGINATION, ...params });\n return this;\n }\n\n private async getRPCOp(param: ParamsWithKind) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n return createTransferOperation({\n ...param,\n });\n case OpKind.ORIGINATION:\n return createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...param,\n })\n );\n case OpKind.DELEGATION:\n return createSetDelegateOperation({\n ...param,\n });\n case OpKind.ACTIVATION:\n return {\n ...param,\n };\n default:\n throw new Error(`Unsupported operation kind: ${(param as any).kind}`);\n }\n }\n\n /**\n *\n * @description Add a group operation to the batch. Operation will be applied in the order they are in the params array\n *\n * @param params Operations parameter\n */\n with(params: ParamsWithKind[]) {\n for (const param of params) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n this.withTransfer(param);\n break;\n case OpKind.ORIGINATION:\n this.withOrigination(param);\n break;\n case OpKind.DELEGATION:\n this.withDelegation(param);\n break;\n case OpKind.ACTIVATION:\n this.withActivation(param);\n break;\n default:\n throw new Error(`Unsupported operation kind: ${(param as any).kind}`);\n }\n }\n\n return this;\n }\n\n /**\n *\n * @description Forge and Inject the operation batch\n *\n * @param params Optionally specify the source of the operation\n */\n async send(params?: { source?: string }) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const publicKey = await this.signer.publicKey();\n const estimates = await this.estimator.batch(this.operations);\n\n const revealNeeded = await this.isRevealOpNeeded(this.operations, publicKeyHash);\n let i = revealNeeded ? 1 : 0;\n\n const ops: RPCOperation[] = [];\n for (const op of this.operations) {\n if (isOpWithFee(op)) {\n const estimated = await this.estimate(op, async () => estimates[i]);\n ops.push(await this.getRPCOp({ ...op, ...estimated }));\n } else {\n ops.push({ ...op });\n }\n i++;\n }\n if (revealNeeded) {\n const reveal: withKind<RevealParams, OpKind.REVEAL> = { kind: OpKind.REVEAL };\n const estimatedReveal = await this.estimate(reveal, async () => estimates[0]);\n ops.unshift(await createRevealOperation({ ...estimatedReveal }, publicKeyHash, publicKey));\n }\n\n const source = (params && params.source) || publicKeyHash;\n const prepared = await this.prepareOpAndSimulation({\n operation: ops,\n source\n });\n const forgedBytes = await this.forge(prepared.preparedOp);\n const signedOperation = await this.signOperation(forgedBytes);\n const opResponse = await this.preValidate(prepared, signedOperation);\n const hash = await this.injectOperation(signedOperation.opbytes);\n return new BatchOperation(hash, ops, source, forgedBytes, opResponse, this.context.clone());\n }\n}\n\nexport class RPCBatchProvider {\n constructor(private context: Context, private estimator: EstimationProvider) {}\n\n /***\n *\n * @description Batch a group of operation together. Operations will be applied in the order in which they are added to the batch\n *\n * @param params List of operation to batch together\n */\n batch(params?: ParamsWithKind[]) {\n const batch = new OperationBatch(this.context, this.estimator);\n\n if (Array.isArray(params)) {\n batch.with(params);\n }\n\n return batch;\n }\n}\n","import { OperationContentsAndResult, OperationContentsAndResultDelegation } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCDelegateOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description Delegation operation provide utility function to fetch newly issued delegation\n *\n * @warn Currently support only one delegation per operation\n */\nexport class DelegateOperation extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n constructor(\n hash: string,\n private readonly params: RPCDelegateOperation,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const delegationOp =\n Array.isArray(this.results) &&\n (this.results.find(op => op.kind === 'delegation') as OperationContentsAndResultDelegation);\n const result = delegationOp && delegationOp.metadata && delegationOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n const operationResults = this.operationResults;\n if (operationResults) {\n return operationResults.status;\n } else {\n return 'unknown';\n }\n }\n\n get delegate(): string {\n return this.delegate;\n }\n\n get isRegisterOperation(): boolean {\n return this.delegate === this.source;\n }\n\n get fee() {\n return this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return this.params.storage_limit;\n }\n\n get consumedGas() {\n const consumedGas = this.operationResults && this.operationResults.consumed_gas;\n return consumedGas ? consumedGas : undefined;\n }\n\n get errors() {\n return this.operationResults && this.operationResults.errors;\n }\n}\n","import { OperationContentsAndResult, OperationContentsAndResultOrigination } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { RpcContractProvider } from '../contract/rpc-contract-provider';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n hasMetadataWithResult,\n RPCOriginationOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description Origination operation provide utility function to fetch newly originated contract\n *\n * @warn Currently support only one origination per operation\n */\nexport class OriginationOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n /**\n * @description Contract address of the newly originated contract\n */\n public readonly contractAddress?: string;\n\n constructor(\n hash: string,\n private readonly params: RPCOriginationOperation,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context,\n private contractProvider: RpcContractProvider\n ) {\n super(hash, raw, results, context);\n\n const originatedContracts = this.operationResults && this.operationResults.originated_contracts;\n if (Array.isArray(originatedContracts)) {\n this.contractAddress = originatedContracts[0];\n }\n }\n\n get status() {\n const operationResults = this.operationResults;\n if (operationResults) {\n return operationResults.status;\n } else {\n return 'unknown';\n }\n }\n\n get operationResults() {\n const originationOp =\n Array.isArray(this.results) &&\n (this.results.find((op) => op.kind === 'origination') as\n | OperationContentsAndResultOrigination\n | undefined);\n\n const result =\n originationOp &&\n hasMetadataWithResult(originationOp) &&\n originationOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get fee() {\n return this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return this.params.storage_limit;\n }\n\n get consumedGas() {\n const consumedGas = this.operationResults && this.operationResults.consumed_gas;\n return consumedGas ? consumedGas : undefined;\n }\n\n get storageDiff() {\n const storageDiff = this.operationResults && this.operationResults.paid_storage_size_diff;\n return storageDiff ? storageDiff : undefined;\n }\n\n get storageSize() {\n const storageSize = this.operationResults && this.operationResults.storage_size;\n return storageSize ? storageSize : undefined;\n }\n\n get errors() {\n return this.operationResults && this.operationResults.errors;\n }\n\n /**\n * @description Provide the contract abstract of the newly originated contract\n */\n async contract(confirmations?: number, interval?: number, timeout?: number) {\n if (!this.contractAddress) {\n throw new Error('No contract was originated in this operation');\n }\n\n await this.confirmation(confirmations, interval, timeout);\n return this.contractProvider.at(this.contractAddress);\n }\n}\n","import { OperationContentsAndResult, OperationContentsAndResultReveal } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult } from './operation-errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCRevealOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description Reveal operation provides utility functions to fetch a newly issued revelation\n */\nexport class RevealOperation extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n constructor(\n hash: string,\n private readonly params: RPCRevealOperation,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const revealOp =\n Array.isArray(this.results) &&\n (this.results.find(op => op.kind === 'reveal') as OperationContentsAndResultReveal);\n return revealOp ? [revealOp] : [];\n }\n\n get status() {\n const operationResults = this.operationResults;\n const txResult = operationResults[0];\n if (txResult) {\n return txResult.metadata.operation_result.status;\n } else {\n return 'unknown';\n }\n }\n\n get fee() {\n return this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return this.params.storage_limit;\n }\n\n get publicKey() {\n return this.params.public_key;\n }\n\n private sumProp(arr: any[], prop: string) {\n return arr.reduce((prev, current) => {\n return prop in current ? Number(current[prop]) + prev : prev;\n }, 0);\n }\n\n get consumedGas() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.operationResults }), 'consumed_gas')\n );\n }\n\n get storageDiff() {\n return String(\n this.sumProp(\n flattenOperationResult({ contents: this.operationResults }),\n 'paid_storage_size_diff'\n )\n );\n }\n\n get storageSize() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.operationResults }), 'storage_size')\n );\n }\n\n get errors() {\n return flattenErrors({ contents: this.operationResults });\n }\n}\n","import { OperationContentsAndResult, OperationContentsAndResultTransaction } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult } from './operation-errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCTransferOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description Transaction operation provides utility functions to fetch a newly issued transaction\n *\n * @warn Currently supports one transaction per operation\n */\nexport class TransactionOperation extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n constructor(\n hash: string,\n private readonly params: RPCTransferOperation,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const transactionOp =\n Array.isArray(this.results) &&\n (this.results.find(op => op.kind === 'transaction') as OperationContentsAndResultTransaction);\n return transactionOp ? [transactionOp] : [];\n }\n\n get status() {\n const operationResults = this.operationResults;\n const txResult = operationResults[0];\n if (txResult) {\n return txResult.metadata.operation_result.status;\n } else {\n return 'unknown';\n }\n }\n\n get amount() {\n return new BigNumber(this.params.amount);\n }\n\n get destination() {\n return this.params.destination;\n }\n\n get fee() {\n return this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return this.params.storage_limit;\n }\n\n private sumProp(arr: any[], prop: string) {\n return arr.reduce((prev, current) => {\n return prop in current ? Number(current[prop]) + prev : prev;\n }, 0);\n }\n\n get consumedGas() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.operationResults }), 'consumed_gas')\n );\n }\n\n get storageDiff() {\n return String(\n this.sumProp(\n flattenOperationResult({ contents: this.operationResults }),\n 'paid_storage_size_diff'\n )\n );\n }\n\n get storageSize() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.operationResults }), 'storage_size')\n );\n }\n\n get errors() {\n return flattenErrors({ contents: this.operationResults });\n }\n}\n","import { Protocols } from '../constants';\nimport { Context } from '../context';\nimport { ContractAbstraction, ContractMethod } from '../contract';\nimport { OpKind, withKind } from '../operations/types';\nimport {\n WalletDelegateParams,\n WalletOriginateParams,\n WalletProvider,\n WalletTransferParams,\n} from './interface';\n\nexport interface PKHOption {\n forceRefetch?: boolean;\n}\n\nexport type WalletParamsWithKind =\n | withKind<WalletTransferParams, OpKind.TRANSACTION>\n | withKind<WalletOriginateParams, OpKind.ORIGINATION>\n | withKind<WalletDelegateParams, OpKind.DELEGATION>;\n\nexport class WalletOperationBatch {\n private operations: WalletParamsWithKind[] = [];\n\n constructor(private walletProvider: WalletProvider, private context: Context) {}\n\n /**\n *\n * @description Add a transaction operation to the batch\n *\n * @param params Transfer operation parameter\n */\n withTransfer(params: WalletTransferParams) {\n this.operations.push({ kind: OpKind.TRANSACTION, ...params });\n return this;\n }\n\n /**\n *\n * @description Add a transaction operation to the batch\n *\n * @param params Transfer operation parameter\n */\n withContractCall(params: ContractMethod<Wallet>) {\n return this.withTransfer(params.toTransferParams());\n }\n\n /**\n *\n * @description Add a delegation operation to the batch\n *\n * @param params Delegation operation parameter\n */\n withDelegation(params: WalletDelegateParams) {\n this.operations.push({ kind: OpKind.DELEGATION, ...params });\n return this;\n }\n\n /**\n *\n * @description Add an origination operation to the batch\n *\n * @param params Origination operation parameter\n */\n withOrigination(params: WalletOriginateParams) {\n this.operations.push({ kind: OpKind.ORIGINATION, ...params });\n return this;\n }\n\n private async mapOperation(param: WalletParamsWithKind) {\n\t\tswitch (param.kind) {\n\t\t\tcase OpKind.TRANSACTION:\n\t\t\t\treturn this.walletProvider.mapTransferParamsToWalletParams({\n\t\t\t\t\t...param\n\t\t\t\t});\n\t\t\tcase OpKind.ORIGINATION:\n\t\t\t\treturn this.walletProvider.mapOriginateParamsToWalletParams(\n\t\t\t\t\tawait this.context.parser.prepareCodeOrigination({\n\t\t\t\t\t\t...param\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\tcase OpKind.DELEGATION:\n\t\t\t\treturn this.walletProvider.mapDelegateParamsToWalletParams({\n\t\t\t\t\t...param\n\t\t\t\t});\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unsupported operation kind: ${(param as any).kind}`);\n\t\t}\n\t}\n\n /**\n *\n * @description Add a group operation to the batch. Operation will be applied in the order they are in the params array\n *\n * @param params Operations parameter\n */\n with(params: WalletParamsWithKind[]) {\n for (const param of params) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n this.withTransfer(param);\n break;\n case OpKind.ORIGINATION:\n this.withOrigination(param);\n break;\n case OpKind.DELEGATION:\n this.withDelegation(param);\n break;\n default:\n throw new Error(`Unsupported operation kind: ${(param as any).kind}`);\n }\n }\n\n return this;\n }\n\n /**\n *\n * @description Submit batch operation to wallet\n *\n */\n async send() {\n const ops: WalletParamsWithKind[] = [];\n\n for (const op of this.operations) {\n ops.push(await this.mapOperation(op));\n }\n\n const opHash = await this.walletProvider.sendOperations(ops);\n\n return this.context.operationFactory.createOperation(opHash);\n }\n}\n\nexport class Wallet {\n constructor(private context: Context) {}\n\n private get walletProvider() {\n return this.context.walletProvider;\n }\n\n private _pkh?: string;\n\n /**\n * @description Retrieve the PKH of the account that is currently in use by the wallet\n *\n * @param option Option to use while fetching the PKH.\n * If forceRefetch is specified the wallet provider implementation will refetch the PKH from the wallet\n */\n async pkh({ forceRefetch }: PKHOption = {}) {\n if (!this._pkh || forceRefetch) {\n this._pkh = await this.walletProvider.getPKH();\n }\n\n return this._pkh;\n }\n\n private walletCommand = <T>(send: () => Promise<T>) => {\n return {\n send,\n };\n };\n\n /**\n *\n * @description Originate a new contract according to the script in parameters.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param originateParams Originate operation parameter\n */\n originate(params: WalletOriginateParams) {\n\t\treturn this.walletCommand(async () => {\n\t\t\tconst mappedParams = await this.walletProvider.mapOriginateParamsToWalletParams(\n\t\t\t\tawait this.context.parser.prepareCodeOrigination({\n\t\t\t\t\t...params\n\t\t\t\t})\n\t\t\t);\n\t\t\tconst opHash = await this.walletProvider.sendOperations([ mappedParams ]);\n\t\t\tif (!this.context.proto) {\n\t\t\t\tthis.context.proto = (await this.context.rpc.getBlock()).protocol as Protocols;\n\t\t\t}\n\t\t\treturn this.context.operationFactory.createOriginationOperation(opHash);\n\t\t});\n\t}\n\n /**\n *\n * @description Set the delegate for a contract.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param delegateParams operation parameter\n */\n setDelegate(params: WalletDelegateParams) {\n return this.walletCommand(async () => {\n const mappedParams = await this.walletProvider.mapDelegateParamsToWalletParams({ ...params });\n const opHash = await this.walletProvider.sendOperations([mappedParams]);\n return this.context.operationFactory.createDelegationOperation(opHash);\n });\n }\n\n /**\n *\n * @description Register the current address as delegate.\n *\n * @returns An operation handle with the result from the rpc node\n *\n */\n registerDelegate() {\n return this.walletCommand(async () => {\n const mappedParams = await this.walletProvider.mapDelegateParamsToWalletParams({\n delegate: await this.pkh(),\n });\n const opHash = await this.walletProvider.sendOperations([mappedParams]);\n return this.context.operationFactory.createDelegationOperation(opHash);\n });\n }\n\n /**\n *\n * @description Transfer tezos tokens from current address to a specific address or call a smart contract.\n *\n * @returns A wallet command from which we can send the operation to the wallet\n *\n * @param params operation parameter\n */\n transfer(params: WalletTransferParams) {\n return this.walletCommand(async () => {\n const mappedParams = await this.walletProvider.mapTransferParamsToWalletParams(params);\n const opHash = await this.walletProvider.sendOperations([mappedParams]);\n return this.context.operationFactory.createTransactionOperation(opHash);\n });\n }\n\n /**\n *\n * @description Create a batch of operation\n *\n * @returns A batch object from which we can add more operation or send a command to the wallet to execute the batch\n *\n * @param params List of operation to initialize the batch with\n */\n batch(params?: Parameters<WalletOperationBatch['with']>[0]) {\n const batch = new WalletOperationBatch(this.walletProvider, this.context);\n \n if (Array.isArray(params)) {\n batch.with(params);\n }\n \n return batch;\n }\n\n /**\n *\n * @description Create an smart contract abstraction for the address specified. Calling entrypoints with the returned\n * smart contract abstraction will leverage the wallet provider to make smart contract calls\n *\n * @param address Smart contract address\n */\n async at<T extends ContractAbstraction<Wallet>>(address: string, contractAbstractionComposer: (abs: ContractAbstraction<Wallet>, context: Context) => T = x => x as any): Promise<T> {\n const script = await this.context.rpc.getScript(address);\n const entrypoints = await this.context.rpc.getEntrypoints(address);\n const blockHeader = await this.context.rpc.getBlockHeader();\n const chainId = blockHeader.chain_id;\n const abs = new ContractAbstraction(address, script, this, this.context.contract, entrypoints, chainId);\n return contractAbstractionComposer(abs, this.context);\n }\n}","import { Context } from '../context';\nimport { attachKind, OpKind } from '../operations/types';\nimport {\n WalletDelegateParams,\n WalletOriginateParams,\n WalletProvider,\n WalletTransferParams,\n} from './interface';\nimport { WalletParamsWithKind } from './wallet';\n\nexport class LegacyWalletProvider implements WalletProvider {\n constructor(private context: Context) {}\n\n async getPKH(): Promise<string> {\n return this.context.signer.publicKeyHash();\n }\n\n async mapTransferParamsToWalletParams(params: WalletTransferParams) {\n return attachKind(params, OpKind.TRANSACTION);\n }\n\n async mapOriginateParamsToWalletParams(params: WalletOriginateParams) {\n return attachKind(params, OpKind.ORIGINATION);\n }\n\n async mapDelegateParamsToWalletParams(params: WalletDelegateParams) {\n return attachKind(params, OpKind.DELEGATION);\n }\n\n async sendOperations(params: WalletParamsWithKind[]) {\n const op = await this.context.batch.batch(params as any).send();\n return op.hash;\n }\n}\n","import { MichelsonV1Expression } from '@taquito/rpc';\nimport { Contract, ContractAbstraction, WalletContract } from './contract';\nimport { TezosOperationError } from '../operations/operation-errors';\nimport { ContractProvider } from './interface';\nimport { Wallet } from '../wallet';\n\nexport default class LambdaView {\n public readonly voidLambda: Object;\n\n constructor(\n private lambdaContract: Contract | WalletContract,\n private viewContract: ContractAbstraction< ContractProvider | Wallet > ,\n public readonly viewMethod: string = 'default',\n private contractParameter: MichelsonV1Expression = { prim: 'Unit' }\n ) {\n this.voidLambda = this.createVoidLambda();\n }\n\n async execute(): Promise<any> {\n try {\n await this.lambdaContract.methods.default(this.voidLambda).send();\n } catch (ex) {\n if (ex instanceof TezosOperationError) {\n const lastError: any = ex.errors[ex.errors.length - 1];\n\n const failedWith = lastError.with;\n return failedWith;\n } else { \n throw ex;\n }\n }\n }\n\n private createVoidLambda(): Object {\n const [parameter, callback] = this.getView();\n\n let contractArgs: MichelsonV1Expression[] = [\n {\n prim: 'pair',\n args: [parameter, { prim: 'contract', args: [callback] }],\n },\n ];\n\n if (this.viewMethod === 'default') {\n contractArgs = ([{ string: '%default' }] as MichelsonV1Expression[]).concat(contractArgs);\n }\n\n return [\n { prim: 'PUSH', args: [{ prim: 'mutez' }, { int: '0' }] },\n { prim: 'NONE', args: [{ prim: 'key_hash' }] },\n {\n prim: 'CREATE_CONTRACT',\n args: [\n [\n { prim: 'parameter', args: [callback] },\n { prim: 'storage', args: [{ prim: 'unit' }] },\n {\n prim: 'code',\n args: [[{ prim: 'CAR' }, { prim: 'FAILWITH' }]],\n },\n ],\n ],\n },\n {\n prim: 'DIP',\n args: [\n [\n {\n prim: 'DIP',\n args: [\n [\n {\n prim: 'LAMBDA',\n args: [\n {\n prim: 'pair',\n args: [{ prim: 'address' }, { prim: 'unit' }],\n },\n {\n prim: 'pair',\n args: [{ prim: 'list', args: [{ prim: 'operation' }] }, { prim: 'unit' }],\n },\n [\n { prim: 'CAR' },\n { prim: 'CONTRACT', args: [callback] },\n {\n prim: 'IF_NONE',\n args: [\n [\n {\n prim: 'PUSH',\n args: [{ prim: 'string' }, { string: `Callback type unmatched` }],\n },\n { prim: 'FAILWITH' },\n ],\n [],\n ],\n },\n {\n prim: 'PUSH',\n args: [parameter, this.contractParameter],\n },\n { prim: 'PAIR' },\n {\n prim: 'DIP',\n args: [\n [\n {\n prim: 'PUSH',\n args: [\n { prim: 'address' },\n { string: `${this.viewContract.address}%${this.viewMethod}` },\n ],\n },\n { prim: 'DUP' },\n { prim: 'CONTRACT', args: contractArgs },\n {\n prim: 'IF_NONE',\n args: [\n [\n {\n prim: 'PUSH',\n args: [\n { prim: 'string' },\n { string: `Contract does not exist` },\n ],\n },\n { prim: 'FAILWITH' },\n ],\n [{ prim: 'DIP', args: [[{ prim: 'DROP' }]] }],\n ],\n },\n {\n prim: 'PUSH',\n args: [{ prim: 'mutez' }, { int: '0' }],\n },\n ],\n ],\n },\n { prim: 'TRANSFER_TOKENS' },\n {\n prim: 'DIP',\n args: [[{ prim: 'NIL', args: [{ prim: 'operation' }] }]],\n },\n { prim: 'CONS' },\n { prim: 'DIP', args: [[{ prim: 'UNIT' }]] },\n { prim: 'PAIR' },\n ],\n ],\n },\n ],\n ],\n },\n { prim: 'APPLY' },\n {\n prim: 'DIP',\n args: [\n [\n {\n prim: 'PUSH',\n args: [{ prim: 'address' }, { string: this.lambdaContract.address }],\n },\n { prim: 'DUP' },\n {\n prim: 'CONTRACT',\n args: [\n {\n prim: 'lambda',\n args: [\n { prim: 'unit' },\n {\n prim: 'pair',\n args: [\n { prim: 'list', args: [{ prim: 'operation' }] },\n { prim: 'unit' },\n ],\n },\n ],\n },\n ],\n },\n {\n prim: 'IF_NONE',\n args: [\n [\n {\n prim: 'PUSH',\n args: [{ prim: 'string' }, { string: `Contract does not exists` }],\n },\n { prim: 'FAILWITH' },\n ],\n [{ prim: 'DIP', args: [[{ prim: 'DROP' }]] }],\n ],\n },\n { prim: 'PUSH', args: [{ prim: 'mutez' }, { int: '0' }] },\n ],\n ],\n },\n { prim: 'TRANSFER_TOKENS' },\n {\n prim: 'DIP',\n args: [[{ prim: 'NIL', args: [{ prim: 'operation' }] }]],\n },\n { prim: 'CONS' },\n ],\n ],\n },\n { prim: 'CONS' },\n { prim: 'DIP', args: [[{ prim: 'UNIT' }]] },\n { prim: 'PAIR' },\n ];\n }\n\n private getView(): [MichelsonV1Expression, MichelsonV1Expression] {\n const entrypoints = this.viewContract.entrypoints.entrypoints;\n const entrypoint = entrypoints[this.viewMethod] as MichelsonV1Expression;\n\n if (!entrypoint) {\n throw Error(\n `Contract at ${this.viewContract.address} does not have entrypoint: ${this.viewMethod}`\n );\n }\n\n if (!('prim' in entrypoint) || !entrypoint.args) {\n // TODO: Enhance this error message to be more descriptive\n throw Error('Entrypoint args undefined');\n }\n\n const args = Array.from(entrypoint.args) as [MichelsonV1Expression, MichelsonV1Expression];\n const [parameter, callbackContract] = args;\n if( 'annots' in parameter ) {\n delete parameter['annots']\n }\n\n if (!('prim' in callbackContract) || !callbackContract.args) {\n // TODO: Enhance this error message to be more descriptive\n throw Error('Callback contract args undefined');\n }\n\n let message;\n if (entrypoint.prim !== 'pair') {\n message = `Expected {'prim': 'pair', ..} but found {'prim': ${entrypoint.prim}, ..}`;\n } else if (args.length !== 2) {\n message = `Expected an Array of length 2, but found: ${args}`;\n } else if (callbackContract.prim !== 'contract') {\n message = `Expected a {prim: 'contract', ...}, but found: ${callbackContract.prim}`;\n } else if (callbackContract.args && callbackContract.args.length !== 1) {\n message = `Expected a single argument to 'contract', but found: ${callbackContract.args}`;\n }\n\n if (message) throw Error(message);\n\n return [parameter, callbackContract.args[0]] as [MichelsonV1Expression, MichelsonV1Expression];\n }\n}\n","import { ParameterSchema, Schema } from '@taquito/michelson-encoder';\nimport { EntrypointsResponse, ScriptResponse } from '@taquito/rpc';\nimport { ChainIds, DefaultLambdaAddresses } from '../constants';\nimport { TransactionOperation } from '../operations/transaction-operation';\nimport { TransferParams } from '../operations/types';\nimport { TransactionWalletOperation, Wallet } from '../wallet';\nimport { InvalidParameterError, UndefinedLambdaContractError } from './errors';\nimport { ContractProvider, StorageProvider } from './interface';\nimport LambdaView from './lambda-view';\n\ninterface SendParams {\n fee?: number;\n storageLimit?: number;\n gasLimit?: number;\n amount: number;\n source?: string;\n mutez?: boolean;\n}\n\n// Ensure that all parameter that are not in SendParams are defined\ntype ExplicitTransferParams = Required<Omit<TransferParams, keyof SendParams>> & SendParams;\n\nconst DEFAULT_SMART_CONTRACT_METHOD_NAME = 'default';\n\n/**\n * @description Utility class to send smart contract operation\n */\nexport class ContractMethod<T extends ContractProvider | Wallet> {\n constructor(\n private provider: T,\n private address: string,\n private parameterSchema: ParameterSchema,\n private name: string,\n private args: any[],\n private isMultipleEntrypoint = true,\n private isAnonymous = false\n ) { }\n\n /**\n * @description Get the schema of the smart contract method\n */\n get schema() {\n return this.isAnonymous\n ? this.parameterSchema.ExtractSchema()[this.name]\n : this.parameterSchema.ExtractSchema();\n }\n\n /**\n *\n * @description Send the smart contract operation\n *\n * @param Options generic operation parameter\n */\n send(\n params: Partial<SendParams> = {}\n ): Promise<T extends Wallet ? TransactionWalletOperation : TransactionOperation> {\n if (this.provider instanceof Wallet) {\n // TODO got around TS2352: Conversion of type 'T & Wallet' to type 'Wallet' by adding `as unknown`. Needs clarification\n return (this.provider as unknown as Wallet).transfer(this.toTransferParams(params)).send() as any;\n } else {\n return this.provider.transfer(this.toTransferParams(params)) as any;\n }\n }\n\n /**\n *\n * @description Create transfer params to be used with TezosToolkit.contract.transfer methods\n *\n * @param Options generic transfer operation parameters\n */\n toTransferParams({\n fee,\n gasLimit,\n storageLimit,\n source,\n amount = 0,\n mutez = false,\n }: Partial<SendParams> = {}): TransferParams {\n const fullTransferParams: ExplicitTransferParams = {\n to: this.address,\n amount,\n fee,\n mutez,\n source,\n gasLimit,\n storageLimit,\n parameter: {\n entrypoint: this.isMultipleEntrypoint ? this.name : 'default',\n value: this.isAnonymous\n ? this.parameterSchema.Encode(this.name, ...this.args)\n : this.parameterSchema.Encode(...this.args),\n },\n };\n return fullTransferParams;\n }\n}\n\n/**\n * @description Utility class to retrieve data from a smart contract's storage without incurring fees via a contract's view method\n */\nexport class ContractView {\n constructor(\n private currentContract: ContractAbstraction<ContractProvider | Wallet>,\n private provider: ContractProvider,\n private name: string,\n private chainId: string,\n private callbackParametersSchema: ParameterSchema,\n private parameterSchema: ParameterSchema,\n private args: any[]\n ) { }\n\n /**\n *\n * @description Find which lambda contract to use based on the current network, \n * encode parameters to Michelson, \n * create an instance of Lambdaview to retrive data, and\n * Decode Michelson response \n *\n * @param Options Address of a lambda contract (sandbox users)\n */\n async read(customLambdaAddress?: string) {\n\n let lambdaAddress;\n\n // TODO Verify if the 'customLambdaAdress' is a valid originated contract and if not, return an appropriate error message. \n if (customLambdaAddress) {\n lambdaAddress = customLambdaAddress\n } else if (this.chainId === ChainIds.EDONET) {\n lambdaAddress = DefaultLambdaAddresses.EDONET\n } else if (this.chainId === ChainIds.FLORENCENET) {\n lambdaAddress = DefaultLambdaAddresses.FLORENCENET\n } else if (this.chainId === ChainIds.GRANADANET) {\n lambdaAddress = DefaultLambdaAddresses.GRANADANET\n } else if (this.chainId === ChainIds.MAINNET) {\n lambdaAddress = DefaultLambdaAddresses.MAINNET\n } else {\n throw new UndefinedLambdaContractError()\n }\n\n const lambdaContract = await this.provider.at(lambdaAddress);\n const arg = this.parameterSchema.Encode(...this.args);\n const lambdaView = new LambdaView(lambdaContract, this.currentContract, this.name, arg);\n const failedWith = await lambdaView.execute();\n const response = this.callbackParametersSchema.Execute(failedWith);\n return response;\n }\n\n}\n\nconst validateArgs = (args: any[], schema: ParameterSchema, name: string) => {\n const sigs = schema.ExtractSignatures();\n\n if (!sigs.find((x: any[]) => x.length === args.length)) {\n throw new InvalidParameterError(name, sigs, args);\n }\n};\n\nconst isView = (schema: ParameterSchema): boolean => {\n let isView = false;\n const sigs = schema.ExtractSignatures();\n if ((sigs[0][sigs[0].length - 1] === 'contract')) {\n isView = true;\n }\n return isView;\n};\n\nexport type Contract = ContractAbstraction<ContractProvider>;\nexport type WalletContract = ContractAbstraction<Wallet>;\n\nconst isContractProvider = (variableToCheck: any): variableToCheck is ContractProvider =>\n variableToCheck.contractProviderTypeSymbol !== undefined;\n\n/**\n * @description Smart contract abstraction\n */\nexport class ContractAbstraction<T extends ContractProvider | Wallet> {\n /**\n * @description Contains methods that are implemented by the target Tezos Smart Contract, and offers the user to call the Smart Contract methods as if they were native TS/JS methods.\n * NB: if the contract contains annotation it will include named properties; if not it will be indexed by a number.\n *\n */\n public methods: { [key: string]: (...args: any[]) => ContractMethod<T> } = {};\n\n public views: { [key: string]: (...args: any[]) => ContractView } = {};\n\n public readonly schema: Schema;\n\n public readonly parameterSchema: ParameterSchema;\n\n constructor(\n public readonly address: string,\n public readonly script: ScriptResponse,\n provider: T,\n private storageProvider: StorageProvider,\n public readonly entrypoints: EntrypointsResponse,\n private chainId: string\n ) {\n this.schema = Schema.fromRPCResponse({ script: this.script });\n this.parameterSchema = ParameterSchema.fromRPCResponse({ script: this.script });\n this._initializeMethods(this, address, provider, this.entrypoints.entrypoints, this.chainId);\n }\n\n private _initializeMethods(\n currentContract: ContractAbstraction<T>,\n address: string,\n provider: T,\n entrypoints: {\n [key: string]: object;\n },\n chainId: string\n ) {\n const parameterSchema = this.parameterSchema;\n const keys = Object.keys(entrypoints);\n if (parameterSchema.isMultipleEntryPoint) {\n keys.forEach(smartContractMethodName => {\n const smartContractMethodSchema = new ParameterSchema(\n entrypoints[smartContractMethodName]\n );\n const method = function (...args: any[]) {\n\n validateArgs(args, smartContractMethodSchema, smartContractMethodName);\n\n return new ContractMethod<T>(\n provider,\n address,\n smartContractMethodSchema,\n smartContractMethodName,\n args\n );\n };\n this.methods[smartContractMethodName] = method;\n\n if (isContractProvider(provider)) {\n if (isView(smartContractMethodSchema)) {\n const view = function (...args: any[]) {\n const entrypointParamWithoutCallback = (entrypoints[smartContractMethodName] as any).args[0];\n const smartContractMethodSchemaWithoutCallback = new ParameterSchema(\n entrypointParamWithoutCallback\n );\n const parametersCallback = (entrypoints[smartContractMethodName] as any).args[1].args[0];\n const smartContractMethodCallbackSchema = new ParameterSchema(\n parametersCallback\n );\n\n validateArgs(args, smartContractMethodSchemaWithoutCallback, smartContractMethodName);\n return new ContractView(\n currentContract,\n provider,\n smartContractMethodName,\n chainId,\n smartContractMethodCallbackSchema,\n smartContractMethodSchemaWithoutCallback,\n args\n );\n };\n this.views[smartContractMethodName] = view;\n }\n }\n\n });\n\n // Deal with methods with no annotations which were not discovered by the RPC endpoint\n // Methods with no annotations are discovered using parameter schema\n const anonymousMethods = Object.keys(parameterSchema.ExtractSchema()).filter(\n key => Object.keys(entrypoints).indexOf(key) === -1\n );\n\n anonymousMethods.forEach(smartContractMethodName => {\n const method = function (...args: any[]) {\n validateArgs(\n [smartContractMethodName, ...args],\n parameterSchema,\n smartContractMethodName\n );\n return new ContractMethod<T>(\n provider,\n address,\n parameterSchema,\n smartContractMethodName,\n args,\n false,\n true\n );\n };\n this.methods[smartContractMethodName] = method;\n });\n } else {\n const smartContractMethodSchema = this.parameterSchema;\n const method = function (...args: any[]) {\n validateArgs(args, parameterSchema, DEFAULT_SMART_CONTRACT_METHOD_NAME);\n return new ContractMethod<T>(\n provider,\n address,\n smartContractMethodSchema,\n DEFAULT_SMART_CONTRACT_METHOD_NAME,\n args,\n false\n );\n };\n this.methods[DEFAULT_SMART_CONTRACT_METHOD_NAME] = method;\n }\n }\n\n /**\n * @description Return a friendly representation of the smart contract storage\n */\n public storage<T>() {\n return this.storageProvider.getStorage<T>(this.address, this.schema);\n }\n\n /**\n *\n * @description Return a friendly representation of the smart contract big map value\n *\n * @param key BigMap key to fetch\n *\n * @deprecated getBigMapKey has been deprecated in favor of getBigMapKeyByID\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-context-contracts-contract-id-big-map-get\n */\n public bigMap(key: string) {\n // tslint:disable-next-line: deprecation\n return this.storageProvider.getBigMapKey(this.address, key, this.schema);\n }\n}\n","import { Schema, BigMapKeyType } from '@taquito/michelson-encoder';\nimport BigNumber from 'bignumber.js';\nimport { ContractProvider } from './interface';\nimport { HttpResponseError, STATUS_CODE } from '@taquito/http-utils';\n\nexport class BigMapAbstraction {\n constructor(private id: BigNumber, private schema: Schema, private provider: ContractProvider) {}\n\n /**\n *\n * @description Fetch one value in a big map\n * \n * @param keysToEncode Key to query (will be encoded properly according to the schema)\n * @param block optional block level to fetch the values from (head will be use by default)\n * @returns Return a well formatted json object of a big map value or undefined if the key is not found in the big map\n *\n */\n async get<T>(keyToEncode: BigMapKeyType , block?: number) {\n try {\n const id = await this.provider.getBigMapKeyByID<T>(this.id.toString(), keyToEncode, this.schema, block);\n return id;\n } catch (e) {\n if (e instanceof HttpResponseError && e.status === STATUS_CODE.NOT_FOUND) {\n return undefined;\n } else {\n throw e;\n }\n }\n }\n\n /**\n *\n * @description Fetch multiple values in a big map\n * All values will be fetched on the same block level. If a block is specified in the request, the values will be fetched at it. \n * Otherwise, a first request will be done to the node to fetch the level of the head and all values will be fetched at this level.\n * If one of the keys does not exist in the big map, its value will be set to undefined.\n *\n * @param keysToEncode Array of keys to query (will be encoded properly according to the schema)\n * @param block optional block level to fetch the values from\n * @param batchSize optional batch size representing the number of requests to execute in parallel\n * @returns A MichelsonMap containing the keys queried in the big map and their value in a well-formatted JSON object format\n *\n */\n async getMultipleValues<T>(keysToEncode: Array<BigMapKeyType>, block?: number, batchSize: number = 5) {\n return this.provider.getBigMapKeysByID<T>(this.id.toString(), keysToEncode, this.schema, block, batchSize);\n }\n\n toJSON() {\n return this.id.toString();\n }\n\n toString() {\n return this.id.toString();\n }\n}\n","import BigNumber from 'bignumber.js';\nimport { ContractProvider } from './interface';\n\nexport class SaplingStateAbstraction {\n constructor(private id: BigNumber, private provider: ContractProvider) { }\n\n /**\n *\n * @description Fetch the sapling state\n * \n * @param block optional block level to fetch the values from (head will be use by default)\n * @returns Return a json object of the sapling_state\n *\n */\n async getSaplingDiff(block?: number) {\n return this.provider.getSaplingDiffByID(this.id.toString(), block);\n }\n\n getId() {\n return this.id.toString();\n }\n}\n","import { Schema, Semantic } from '@taquito/michelson-encoder';\nimport { BigMapAbstraction } from './big-map';\nimport { ContractProvider } from './interface';\nimport BigNumber from 'bignumber.js';\nimport { MichelsonV1Expression } from '@taquito/rpc';\nimport { SaplingStateAbstraction } from './sapling-state-abstraction';\n\n// Override the default michelson encoder semantic to provide richer abstraction over storage properties\nexport const smartContractAbstractionSemantic: (p: ContractProvider) => Semantic = (\n provider: ContractProvider\n) => ({\n // Provide a specific abstraction for BigMaps\n big_map: (val: MichelsonV1Expression, code: MichelsonV1Expression) => {\n if (!val || !('int' in val) || val.int === undefined) {\n // Return an empty object in case of missing big map ID\n return {};\n } else {\n const schema = new Schema(code);\n return new BigMapAbstraction(new BigNumber(val.int), schema, provider);\n }\n },\n sapling_state: (val: MichelsonV1Expression) => {\n if (!val || !('int' in val) || val.int === undefined) {\n // Return an empty object in case of missing sapling state ID\n return {};\n } else {\n return new SaplingStateAbstraction(new BigNumber(val.int), provider);\n }\n }\n /*\n // TODO: embed useful other abstractions\n 'contract': () => {},\n 'address': () => {}\n */\n});\n","import { HttpResponseError, STATUS_CODE } from '@taquito/http-utils';\nimport { BigMapKeyType, MichelsonMap, MichelsonMapKey, Schema } from '@taquito/michelson-encoder';\nimport { OpKind, ScriptResponse } from '@taquito/rpc';\nimport { encodeExpr } from '@taquito/utils';\nimport { OperationBatch } from '../batch/rpc-batch-provider';\nimport { Context } from '../context';\nimport { DelegateOperation } from '../operations/delegate-operation';\nimport { OperationEmitter } from '../operations/operation-emitter';\nimport { OriginationOperation } from '../operations/origination-operation';\nimport { RevealOperation } from '../operations/reveal-operation';\nimport { TransactionOperation } from '../operations/transaction-operation';\nimport {\n DelegateParams,\n isOpRequireReveal,\n OriginateParams,\n ParamsWithKind,\n RegisterDelegateParams,\n RevealParams,\n RPCOperation,\n TransferParams,\n withKind,\n} from '../operations/types';\nimport { ContractAbstraction } from './contract';\nimport { InvalidDelegationSource } from './errors';\nimport { ContractProvider, ContractSchema, EstimationProvider, StorageProvider } from './interface';\nimport {\n createOriginationOperation,\n createRegisterDelegateOperation,\n createRevealOperation,\n createSetDelegateOperation,\n createTransferOperation,\n} from './prepare';\nimport { smartContractAbstractionSemantic } from './semantic';\n\nexport class RpcContractProvider\n extends OperationEmitter\n implements ContractProvider, StorageProvider\n{\n constructor(context: Context, private estimator: EstimationProvider) {\n super(context);\n }\n contractProviderTypeSymbol = Symbol.for('taquito--provider-type-symbol');\n\n /**\n *\n * @description Return a well formatted json object of the contract storage\n *\n * @param contract contract address you want to get the storage from\n * @param schema optional schema can either be the contract script rpc response or a michelson-encoder schema\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-script\n */\n async getStorage<T>(contract: string, schema?: ContractSchema): Promise<T> {\n if (!schema) {\n schema = await this.rpc.getScript(contract);\n }\n\n let contractSchema: Schema;\n if (Schema.isSchema(schema)) {\n contractSchema = schema;\n } else {\n contractSchema = Schema.fromRPCResponse({ script: schema as ScriptResponse });\n }\n\n const storage = await this.rpc.getStorage(contract);\n\n return contractSchema.Execute(storage, smartContractAbstractionSemantic(this)) as T; // Cast into T because only the caller can know the true type of the storage\n }\n\n /**\n *\n * @description Return a well formatted json object of the contract big map storage\n *\n * @param contract contract address you want to get the storage from\n * @param key contract big map key to fetch value from\n * @param schema optional schema can either be the contract script rpc response or a michelson-encoder schema\n *\n * @deprecated Deprecated in favor of getBigMapKeyByID\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-context-contracts-contract-id-big-map-get\n */\n async getBigMapKey<T>(contract: string, key: string, schema?: ContractSchema): Promise<T> {\n if (!schema) {\n schema = await this.rpc.getScript(contract);\n }\n\n let contractSchema: Schema;\n if (Schema.isSchema(schema)) {\n contractSchema = schema;\n } else {\n contractSchema = Schema.fromRPCResponse({ script: schema as ScriptResponse });\n }\n\n const encodedKey = contractSchema.EncodeBigMapKey(key);\n\n // tslint:disable-next-line: deprecation\n const val = await this.rpc.getBigMapKey(contract, encodedKey);\n\n return contractSchema.ExecuteOnBigMapValue(val) as T; // Cast into T because only the caller can know the true type of the storage\n }\n\n /**\n *\n * @description Return a well formatted json object of a big map value\n *\n * @param id Big Map ID\n * @param keyToEncode key to query (will be encoded properly according to the schema)\n * @param schema Big Map schema (can be determined using your contract type)\n * @param block optional block level to fetch the values from\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-big-maps-big-map-id-script-expr\n */\n async getBigMapKeyByID<T>(id: string, keyToEncode: BigMapKeyType, schema: Schema, block?: number): Promise<T> {\n const { key, type } = schema.EncodeBigMapKey(keyToEncode);\n const { packed } = await this.context.packer.packData({ data: key, type });\n\n const encodedExpr = encodeExpr(packed);\n\n const bigMapValue = block? await this.context.rpc.getBigMapExpr(id.toString(), encodedExpr, { block: String(block) }) : await this.context.rpc.getBigMapExpr(id.toString(), encodedExpr);\n\n return schema.ExecuteOnBigMapValue(bigMapValue, smartContractAbstractionSemantic(this)) as T;\n }\n\n /**\n *\n * @description Fetch multiple values in a big map\n * All values will be fetched on the same block level. If a block is specified in the request, the values will be fetched at it.\n * Otherwise, a first request will be done to the node to fetch the level of the head and all values will be fetched at this level.\n * If one of the keys does not exist in the big map, its value will be set to undefined.\n *\n * @param id Big Map ID\n * @param keys Array of keys to query (will be encoded properly according to the schema)\n * @param schema Big Map schema (can be determined using your contract type)\n * @param block optional block level to fetch the values from\n * @param batchSize optional batch size representing the number of requests to execute in parallel\n * @returns A MichelsonMap containing the keys queried in the big map and their value in a well-formatted JSON object format\n *\n */\n async getBigMapKeysByID<T>(id: string, keys: Array<BigMapKeyType>, schema: Schema, block?: number, batchSize: number = 5): Promise<MichelsonMap<MichelsonMapKey, T | undefined>> {\n const level = await this.getBlockForRequest(keys, block)\n const bigMapValues = new MichelsonMap<MichelsonMapKey, T | undefined>();\n\n // Execute batch of promises in series\n let position = 0;\n let results: Array<(T | undefined)> = [];\n\n while (position < keys.length) {\n const keysBatch = keys.slice(position, position + batchSize);\n const batch = keysBatch.map((keyToEncode) => this.getBigMapValueOrUndefined<T>(keyToEncode, id, schema, level))\n results = [...results, ...await Promise.all(batch)]\n position += batchSize;\n }\n\n for (let i = 0; i < results.length; i++) {\n bigMapValues.set(keys[i], results[i]);\n }\n\n return bigMapValues;\n }\n\n private async getBlockForRequest(keys: Array<BigMapKeyType>, block?: number) {\n return keys.length === 1 || typeof block !== 'undefined' ? block : (await this.rpc.getBlock())?.header.level\n }\n\n private async getBigMapValueOrUndefined<T>(keyToEncode: BigMapKeyType, id: string, schema: Schema, level?: number) {\n try {\n return await this.getBigMapKeyByID<T>(id, keyToEncode, schema, level);\n } catch (ex) {\n if (ex instanceof HttpResponseError && ex.status === STATUS_CODE.NOT_FOUND) {\n return\n } else {\n throw ex;\n }\n }\n }\n\n /**\n *\n * @description Return a well formatted json object of a sapling state\n *\n * @param id Sapling state ID\n * @param block optional block level to fetch the value from\n *\n */\n async getSaplingDiffByID(id: string, block?: number) {\n const saplingState = block ? await this.context.rpc.getSaplingDiffById(id.toString(), { block: String(block) }) : await this.context.rpc.getSaplingDiffById(id.toString());\n return saplingState;\n }\n\n private async addRevealOperationIfNeeded(operation: RPCOperation, publicKeyHash: string){\n if(isOpRequireReveal(operation)){\n const ops: RPCOperation[] = [operation];\n const publicKey = await this.signer.publicKey();\n const estimateReveal = await this.estimator.reveal();\n if(estimateReveal){\n const reveal: withKind<RevealParams, OpKind.REVEAL> = { kind: OpKind.REVEAL };\n const estimatedReveal = await this.estimate(reveal, async () => estimateReveal);\n ops.unshift(await createRevealOperation({ ...estimatedReveal }, publicKeyHash, publicKey));\n return ops;\n }\n }\n return operation;\n }\n\n /**\n *\n * @description Originate a new contract according to the script in parameters. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @warn You cannot specify storage and init at the same time (use init to pass the raw michelson representation of storage)\n *\n * @param OriginationOperation Originate operation parameter\n */\n async originate(params: OriginateParams) {\n const estimate = await this.estimate(params, this.estimator.originate.bind(this.estimator));\n\n const publicKeyHash = await this.signer.publicKeyHash();\n const operation = await createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...params,\n ...estimate,\n }));\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const preparedOrigination = await this.prepareOpAndSimulation({\n operation: ops,\n source: publicKeyHash\n });\n const forgedOrigination = await this.forge(preparedOrigination.preparedOp);\n const signedOperation = await this.signOperation(forgedOrigination);\n const opResponse = await this.preValidate(preparedOrigination, signedOperation);\n const hash = await this.injectOperation(signedOperation.opbytes);\n return new OriginationOperation(\n hash,\n operation,\n signedOperation,\n opResponse,\n this.context.clone(),\n this\n );\n }\n\n /**\n *\n * @description Set the delegate for a contract. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param SetDelegate operation parameter\n */\n async setDelegate(params: DelegateParams) {\n // Since babylon delegation source cannot smart contract\n if (/kt1/i.test(params.source)) {\n throw new InvalidDelegationSource(params.source);\n }\n\n const estimate = await this.estimate(params, this.estimator.setDelegate.bind(this.estimator));\n const publicKeyHash = await this.signer.publicKeyHash();\n const operation = await createSetDelegateOperation({ ...params, ...estimate });\n const sourceOrDefault = params.source || publicKeyHash;\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOpAndSimulation({\n operation: ops,\n source: sourceOrDefault\n });\n const opBytes = await this.forge(prepared.preparedOp);\n const signedOperation = await this.signOperation(opBytes);\n const opResponse = await this.preValidate(prepared, signedOperation);\n const hash = await this.injectOperation(signedOperation.opbytes);\n return new DelegateOperation(\n hash,\n operation,\n sourceOrDefault,\n signedOperation,\n opResponse,\n this.context.clone()\n );\n }\n\n /**\n *\n * @description Register the current address as delegate. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param RegisterDelegate operation parameter\n */\n async registerDelegate(params: RegisterDelegateParams) {\n const estimate = await this.estimate(\n params,\n this.estimator.registerDelegate.bind(this.estimator)\n );\n const source = await this.signer.publicKeyHash();\n const operation = await createRegisterDelegateOperation({ ...params, ...estimate }, source);\n const ops = await this.addRevealOperationIfNeeded(operation, source);\n const prepared = await this.prepareOpAndSimulation({ operation: ops, source });\n const opBytes = await this.forge(prepared.preparedOp);\n const signedOperation = await this.signOperation(opBytes);\n const opResponse = await this.preValidate(prepared, signedOperation);\n const hash = await this.injectOperation(signedOperation.opbytes);\n return new DelegateOperation(\n hash,\n operation,\n source,\n signedOperation,\n opResponse,\n this.context.clone()\n );\n }\n\n /**\n *\n * @description Transfer tz from current address to a specific address. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param Transfer operation parameter\n */\n async transfer(params: TransferParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(params, this.estimator.transfer.bind(this.estimator));\n const operation = await createTransferOperation({\n ...params,\n ...estimate,\n });\n const source = params.source || publicKeyHash;\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOpAndSimulation({\n operation: ops,\n source\n });\n const forgedOperation = await this.forge(prepared.preparedOp);\n const signedOperation = await this.signOperation(forgedOperation);\n const opResponse = await this.preValidate(prepared, signedOperation);\n const hash = await this.injectOperation(signedOperation.opbytes);\n return new TransactionOperation(\n hash,\n operation,\n source,\n signedOperation,\n opResponse,\n this.context.clone()\n );\n }\n\n /**\n *\n * @description Reveal the current address. Will throw an error if the address is already revealed.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param RevealParams operation parameter\n */\n async reveal(params: RevealParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimateReveal = await this.estimator.reveal(params);\n if (estimateReveal) {\n const estimated = await this.estimate(params, async () => estimateReveal);\n const operation = await createRevealOperation(\n {\n ...estimated,\n },\n publicKeyHash,\n await this.signer.publicKey()\n );\n const prepared = await this.prepareOpAndSimulation({ operation, source: publicKeyHash });\n const opBytes = await this.forge(prepared.preparedOp);\n const signedOperation = await this.signOperation(opBytes);\n const opResponse = await this.preValidate(prepared, signedOperation);\n const hash = await this.injectOperation(signedOperation.opbytes);\n return new RevealOperation(\n hash,\n operation,\n publicKeyHash,\n signedOperation,\n opResponse,\n this.context.clone()\n );\n } else {\n throw new Error('The current address is already revealed.');\n }\n }\n\n async at<T extends ContractAbstraction<ContractProvider>>(\n address: string,\n contractAbstractionComposer: ContractAbstractionComposer<T> = (x) => x as any\n ): Promise<T> {\n const script = await this.rpc.getScript(address);\n const entrypoints = await this.rpc.getEntrypoints(address);\n const blockHeader = await this.rpc.getBlockHeader();\n const chainId = blockHeader.chain_id;\n const abs = new ContractAbstraction(address, script, this, this, entrypoints, chainId);\n return contractAbstractionComposer(abs, this.context);\n }\n\n /**\n *\n * @description Batch a group of operation together. Operations will be applied in the order in which they are added to the batch\n *\n * @returns A batch object from which we can add more operation or send a command to execute the batch\n *\n * @param params List of operation to batch together\n */\n batch(params?: ParamsWithKind[]) {\n const batch = new OperationBatch(this.context, this.estimator);\n\n if (Array.isArray(params)) {\n batch.with(params);\n }\n\n return batch;\n }\n}\n\ntype ContractAbstractionComposer<T> = (\n abs: ContractAbstraction<ContractProvider>,\n context: Context\n) => T;\n","import { Context } from '../context';\nimport { ParserProvider } from './interface';\nimport { Expr, Parser, Prim } from '@taquito/michel-codec';\nimport { Protocols } from '../constants';\nimport { OriginateParams } from '../operations/types';\nimport { InvalidInitParameter, InvalidCodeParameter } from '../contract/errors';\n\nexport class MichelCodecParser implements ParserProvider {\n constructor(private context: Context) { }\n\n private async getNextProto() {\n const { next_protocol } = await this.context.rpc.getBlockMetadata();\n return next_protocol as Protocols;\n }\n\n async parseScript(src: string): Promise<Expr[] | null> {\n const parser = new Parser({ protocol: await this.getNextProto() });\n return parser.parseScript(src);\n }\n\n async parseMichelineExpression(src: string): Promise<Expr | null> {\n const parser = new Parser({ protocol: await this.getNextProto() });\n return parser.parseMichelineExpression(src);\n }\n\n async parseJSON(src: object): Promise<Expr> {\n const parser = new Parser({ protocol: await this.getNextProto() });\n return parser.parseJSON(src);\n }\n\n async prepareCodeOrigination(params: OriginateParams): Promise<OriginateParams> {\n const parsedParams = params;\n parsedParams.code = await this.formatCodeParam(params.code);\n if (params.init) {\n parsedParams.init = await this.formatInitParam(params.init);\n }\n return parsedParams;\n }\n\n private async formatCodeParam(code: string | object[]) {\n let parsedCode: Expr[];\n if (typeof code === 'string') {\n const c = await this.parseScript(code);\n if (c === null) {\n throw new InvalidCodeParameter('Invalid code parameter', code);\n }\n parsedCode = c;\n } else {\n const c = await this.parseJSON(code);\n const order = ['parameter', 'storage', 'code'];\n // Ensure correct ordering for RPC\n parsedCode = (c as Prim[]).sort((a, b) => order.indexOf(a.prim) - order.indexOf(b.prim));\n }\n return parsedCode;\n }\n\n private async formatInitParam(init: string | object) {\n let parsedInit: Expr;\n if (typeof init === 'string') {\n const c = await this.parseMichelineExpression(init);\n if (c === null) {\n throw new InvalidInitParameter('Invalid init parameter', init);\n }\n parsedInit = c;\n } else {\n parsedInit = await this.parseJSON(init);\n }\n return parsedInit;\n }\n}\n","import { Packer } from './interface';\nimport { Context } from '../context';\nimport { PackDataParams, PackDataResponse } from '@taquito/rpc';\n\nexport class RpcPacker implements Packer {\n constructor(private context: Context) {}\n \n async packData(data: PackDataParams): Promise<PackDataResponse> {\n return this.context.rpc.packData(data);\n }\n}\n","import { RpcClient } from '@taquito/rpc';\nimport { Protocols } from './constants';\nimport { Forger } from './forger/interface';\nimport { RpcForger } from './forger/rpc-forger';\nimport { Injector } from './injector/interface';\nimport { RpcInjector } from './injector/rpc-injector';\nimport { Signer } from './signer/interface';\nimport { NoopSigner } from './signer/noop';\nimport { OperationFactory } from './wallet/operation-factory';\nimport { RpcTzProvider } from './tz/rpc-tz-provider';\nimport { RPCEstimateProvider } from './contract/rpc-estimate-provider';\nimport { RpcContractProvider } from './contract/rpc-contract-provider';\nimport { RPCBatchProvider } from './batch/rpc-batch-provider';\n\nimport { Wallet, LegacyWalletProvider, WalletProvider } from './wallet';\nimport { ParserProvider } from './parser/interface';\nimport { MichelCodecParser } from './parser/michel-codec-parser';\nimport { Packer } from './packer/interface';\nimport { RpcPacker } from './packer/rpc-packer';\nimport BigNumber from 'bignumber.js';\nimport { retry } from 'rxjs/operators';\nimport { OperatorFunction } from 'rxjs';\n\nexport interface TaquitoProvider<T, K extends Array<any>> {\n new (context: Context, ...rest: K): T;\n}\n\n// The shouldObservableSubscriptionRetry parameter is related to the observable in ObservableSubsription class.\n// When set to true, the observable won't die when getBlock rpc call fails; the error will be reported via the error callback,\n// and it will continue to poll for new blocks.\nexport interface Config {\n confirmationPollingIntervalSecond?: number;\n confirmationPollingTimeoutSecond?: number;\n defaultConfirmationCount?: number;\n shouldObservableSubscriptionRetry?: boolean;\n observableSubscriptionRetryFunction?: OperatorFunction<any, any>;\n}\n\nexport const defaultConfig: Partial<Config> = {\n defaultConfirmationCount: 1,\n confirmationPollingTimeoutSecond: 180,\n shouldObservableSubscriptionRetry: false,\n observableSubscriptionRetryFunction: retry(),\n};\n\n/**\n * @description Encapsulate common service used throughout different part of the library\n */\nexport class Context {\n private _counters: { [key: string]: number } = {};\n private _rpcClient: RpcClient;\n private _forger: Forger;\n private _parser: ParserProvider;\n private _injector: Injector;\n private _walletProvider: WalletProvider;\n public readonly operationFactory: OperationFactory;\n private _packer: Packer;\n\n public readonly tz = new RpcTzProvider(this);\n public readonly estimate = new RPCEstimateProvider(this);\n public readonly contract = new RpcContractProvider(this, this.estimate);\n public readonly batch = new RPCBatchProvider(this, this.estimate);\n public readonly wallet = new Wallet(this);\n\n constructor(\n private _rpc: RpcClient | string,\n private _signer: Signer = new NoopSigner(),\n private _proto?: Protocols,\n private _config?: Partial<Config>,\n forger?: Forger,\n injector?: Injector,\n packer?: Packer,\n wallet?: WalletProvider,\n parser?: ParserProvider\n ) {\n if (typeof this._rpc === 'string') {\n this._rpcClient = new RpcClient(this._rpc);\n } else {\n this._rpcClient = this._rpc;\n }\n this.config = _config as any;\n this._forger = forger ? forger : new RpcForger(this);\n this._injector = injector ? injector : new RpcInjector(this);\n this.operationFactory = new OperationFactory(this);\n this._walletProvider = wallet ? wallet : new LegacyWalletProvider(this);\n this._parser = parser ? parser : new MichelCodecParser(this);\n this._packer = packer ? packer : new RpcPacker(this);\n }\n\n get config(): Partial<Config> {\n return this._config as any;\n }\n\n set config(value: Partial<Config>) {\n this._config = {\n ...defaultConfig,\n ...value,\n };\n }\n\n get rpc(): RpcClient {\n return this._rpcClient;\n }\n\n set rpc(value: RpcClient) {\n this._rpcClient = value;\n }\n\n get injector() {\n return this._injector;\n }\n\n set injector(value: Injector) {\n this._injector = value;\n }\n\n get forger() {\n return this._forger;\n }\n\n set forger(value: Forger) {\n this._forger = value;\n }\n\n get signer() {\n return this._signer;\n }\n\n get walletProvider() {\n return this._walletProvider;\n }\n\n set walletProvider(value: WalletProvider) {\n this._walletProvider = value;\n }\n\n set signer(value: Signer) {\n this._signer = value;\n }\n\n set proto(value: Protocols | undefined) {\n this._proto = value;\n }\n\n get proto() {\n return this._proto;\n }\n\n get parser() {\n return this._parser;\n }\n\n set parser(value: ParserProvider) {\n this._parser = value;\n }\n\n get packer() {\n return this._packer;\n }\n\n set packer(value: Packer) {\n this._packer = value;\n }\n\n get counters() {\n return this._counters;\n }\n\n set counters(value: { [key: string]: number }) {\n this._counters[value.key] = value.counter;\n }\n\n async isAnyProtocolActive(protocol: string[] = []) {\n if (this._proto) {\n return protocol.includes(this._proto);\n } else {\n const { next_protocol } = await this.rpc.getBlockMetadata();\n return protocol.includes(next_protocol);\n }\n }\n\n async getConfirmationPollingInterval() {\n try {\n const constants = await this.rpc.getConstants();\n let blockTime = constants.time_between_blocks[0];\n if (constants.minimal_block_delay !== undefined) {\n blockTime = constants.minimal_block_delay;\n }\n let confirmationPollingInterval = BigNumber.sum(blockTime, \n new BigNumber(constants.delay_per_missing_endorsement!)\n .multipliedBy(Math.max(0, constants.initial_endorsers! - constants.endorsers_per_block))\n );\n\n // Divide the polling interval by a constant 3\n // to improvise for polling time to work in prod,\n // testnet and sandbox enviornment. \n confirmationPollingInterval = confirmationPollingInterval.dividedBy(3); \n this.config.confirmationPollingIntervalSecond = confirmationPollingInterval.toNumber() === 0 ?\n 0.1 :\n confirmationPollingInterval.toNumber();\n return this.config.confirmationPollingIntervalSecond;\n } catch (exception) {\n // Return default value if there is\n // an issue returning from constants\n // file.\n return 10;\n }\n }\n\n /**\n * @description Create a copy of the current context. Useful when you have long running operation and you do not want a context change to affect the operation\n */\n clone(): Context {\n return new Context(\n this.rpc,\n this.signer,\n this.proto,\n this.config,\n this.forger,\n this._injector,\n this.packer\n );\n }\n}\n","import { OpFilter, FilterExpression, Filter, OpHashFilter, SourceFilter, KindFilter, DestinationFilter, OperationContent } from './interface';\n\nconst opHashFilter = (op: OperationContent, filter: OpHashFilter) => op.hash === filter.opHash;\n\nconst sourceFilter = (x: OperationContent, filter: SourceFilter) => {\n switch (x.kind) {\n case 'endorsement':\n return 'metadata' in x && x.metadata.delegate === filter.source\n case 'activate_account':\n return 'metadata' in x && x.pkh === filter.source\n default:\n return 'source' in x && x.source === filter.source\n }\n}\n\nconst kindFilter = (x: OperationContent, filter: KindFilter) => 'kind' in x && x.kind === filter.kind;\n\nconst destinationFilter = (x: OperationContent, filter: DestinationFilter) => {\n switch (x.kind) {\n case 'delegation':\n return x.delegate === filter.destination;\n case 'origination':\n if (\n 'metadata' in x &&\n 'operation_result' in x.metadata &&\n 'originated_contracts' in x.metadata.operation_result &&\n Array.isArray(x.metadata.operation_result.originated_contracts)\n ) {\n return x.metadata.operation_result.originated_contracts.some(\n contract => contract === filter.destination\n );\n }\n break;\n case 'transaction':\n return x.destination === filter.destination;\n default:\n return false;\n }\n};\n\nexport const evaluateOpFilter = (op: OperationContent, filter: OpFilter) => {\n if ('opHash' in filter) {\n return opHashFilter(op, filter);\n } else if ('source' in filter) {\n return sourceFilter(op, filter)\n } else if ('kind' in filter) {\n return kindFilter(op, filter);\n } else if ('destination' in filter) {\n return destinationFilter(op, filter)\n }\n\n return false;\n};\n\nexport const evaluateExpression = (op: OperationContent, exp: FilterExpression): boolean => {\n if (Array.isArray(exp.and)) {\n return exp.and.every((x: OpFilter | FilterExpression) => evaluateFilter(op, x));\n } else if (Array.isArray(exp.or)) {\n return exp.or.some((x: OpFilter | FilterExpression) => evaluateFilter(op, x));\n } else {\n throw new Error('Filter expression must contains either and/or property');\n }\n};\n\nexport const evaluateFilter = (op: OperationContent, filter: Filter): boolean => {\n const filters: OpFilter[] | FilterExpression[] = [];\n if (!Array.isArray(filter)) {\n filters.push(filter as any);\n } else {\n filters.push(...(filter as any));\n }\n\n return (filters as any[]).every((filterOrExp: OpFilter | FilterExpression) => {\n if ('and' in filterOrExp || 'or' in filterOrExp) {\n return evaluateExpression(op, filterOrExp);\n } else {\n return evaluateOpFilter(op, filterOrExp as OpFilter);\n }\n });\n};\n","import { Observable, Subscription as RXJSSubscription, Subject, NEVER, OperatorFunction } from 'rxjs';\nimport { Subscription } from './interface';\nimport { takeUntil, tap, catchError, retry } from 'rxjs/operators';\n\nexport class ObservableSubscription<T> implements Subscription<T> {\n private errorListeners: Array<(error: Error) => void> = [];\n private messageListeners: Array<(data: T) => void> = [];\n private closeListeners: Array<() => void> = [];\n private completed$ = new Subject();\n\n constructor(obs: Observable<T>, \n private shouldRetry: boolean = false, \n private operatorFunction: OperatorFunction<T,T> = retry<T>()) {\n \n obs\n .pipe(\n takeUntil(this.completed$),\n tap(\n (data: T) => {\n this.call(this.messageListeners, data);\n },\n (error) => {\n this.call(this.errorListeners, error);\n },\n () => {\n this.call(this.closeListeners);\n }\n ),\n this.shouldRetry ? operatorFunction : tap(),\n catchError(() => NEVER)\n )\n .subscribe();\n }\n\n private call<K>(listeners: Array<(val: K) => void>, value?: K) {\n for (const l of listeners) {\n try {\n l(value!);\n } catch (ex) {\n console.error(ex);\n }\n }\n }\n\n private remove(listeners: Array<any>, value: any) {\n const idx = listeners.indexOf(value);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n }\n }\n\n public on(type: 'error', cb: (error: Error) => void): void;\n // tslint:disable-next-line: unified-signatures\n public on(type: 'data', cb: (data: T) => void): void;\n public on(type: 'close', cb: () => void): void;\n\n public on(type: 'data' | 'error' | 'close', cb: any): void {\n switch (type) {\n case 'data':\n this.messageListeners.push(cb);\n break;\n case 'error':\n this.errorListeners.push(cb);\n break;\n case 'close':\n this.closeListeners.push(cb);\n break;\n default:\n throw new Error(`Trying to register on an unsupported event: ${type}`);\n }\n }\n\n public off(type: 'error', cb: (error: Error) => void): void;\n // tslint:disable-next-line: unified-signatures\n public off(type: 'data', cb: (data: T) => void): void;\n public off(type: 'close', cb: () => void): void;\n\n public off(type: 'data' | 'error' | 'close', cb: any): void {\n switch (type) {\n case 'data':\n this.remove(this.messageListeners, cb);\n break;\n case 'error':\n this.remove(this.errorListeners, cb);\n break;\n case 'close':\n this.remove(this.closeListeners, cb);\n break;\n default:\n throw new Error(`Trying to unregister on an unsupported event: ${type}`);\n }\n }\n\n public close() {\n this.completed$.next();\n }\n}\n","import { BlockResponse } from '@taquito/rpc';\nimport { from, Observable, ObservableInput, timer } from 'rxjs';\nimport {\n concatMap,\n distinctUntilKeyChanged,\n first,\n map,\n pluck,\n publishReplay,\n refCount,\n switchMap,\n} from 'rxjs/operators';\nimport { Context } from '../context';\nimport { evaluateFilter } from './filters';\nimport { Filter, SubscribeProvider, Subscription, OperationContent } from './interface';\nimport { ObservableSubscription } from './observable-subscription';\n\nconst getLastBlock = (context: Context) => {\n return from(context.rpc.getBlock()).pipe(first());\n};\n\nconst applyFilter = (filter: Filter) =>\n concatMap<BlockResponse, ObservableInput<OperationContent>>(block => {\n return new Observable<OperationContent>(sub => {\n for (const ops of block.operations) {\n for (const op of ops) {\n for (const content of op.contents) {\n if (evaluateFilter({hash: op.hash, ...content}, filter)) {\n sub.next({hash: op.hash, ...content});\n }\n }\n }\n }\n sub.complete();\n });\n });\n\nexport class PollingSubscribeProvider implements SubscribeProvider {\n private newBlock$ = timer(0, this.POLL_INTERVAL).pipe(\n map(() => this.context),\n switchMap(getLastBlock),\n distinctUntilKeyChanged('hash'),\n publishReplay(),\n refCount()\n );\n\n constructor(private context: Context, public readonly POLL_INTERVAL = 20000) {}\n\n subscribe(_filter: 'head'): Subscription<string> {\n return new ObservableSubscription(this.newBlock$.pipe(pluck('hash')), \n this.context.config.shouldObservableSubscriptionRetry,\n this.context.config.observableSubscriptionRetryFunction);\n }\n\n subscribeOperation(filter: Filter): Subscription<OperationContent> {\n return new ObservableSubscription(this.newBlock$.pipe(applyFilter(filter)),\n this.context.config.shouldObservableSubscriptionRetry,\n this.context.config.observableSubscriptionRetryFunction);\n }\n}\n","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\n/* tslint:disable */\nexport const VERSION = {\n \"commitHash\": \"a8e9548e650215186f661033b59299ace72c9ee6\",\n \"version\": \"9.2.0\"\n};\n/* tslint:enable */\n","import { Forger, ForgeParams, ForgeResponse } from './interface';\n\nexport class ForgingMismatchError implements Error {\n name: string = 'ForgingMismatchError';\n message: string = 'Forging mismatch error';\n constructor(public results: string[]) {}\n}\n\nexport class CompositeForger implements Forger {\n constructor(private forgers: Forger[]) {\n if (forgers.length === 0) {\n throw new Error('At least one forger must be specified');\n }\n }\n\n async forge({ branch, contents }: ForgeParams): Promise<ForgeResponse> {\n const results = await Promise.all(\n this.forgers.map(forger => {\n return forger.forge({ branch, contents });\n })\n );\n\n if (results.length === 0) {\n throw new Error('At least one forger must be specified');\n }\n\n let lastResult: string = results.pop()!; // Assumed to be more than one since we\n while (results.length) {\n const currentResult = results.pop()!;\n\n if (currentResult !== lastResult) {\n throw new ForgingMismatchError([lastResult, currentResult]);\n }\n lastResult = currentResult;\n }\n\n return lastResult;\n }\n}\n","import { OriginateParams } from \"../operations/types\";\nimport { ParserProvider } from \"./interface\";\n\nexport class NoopParser implements ParserProvider {\n async prepareCodeOrigination(params: OriginateParams): Promise<OriginateParams> {\n return params;\n }\n}","import { Packer } from './interface';\nimport { packDataBytes, MichelsonData, MichelsonType } from '@taquito/michel-codec'\nimport { PackDataResponse, PackDataParams } from '@taquito/rpc';\n\nexport class MichelCodecPacker implements Packer {\n\n async packData(data: PackDataParams): Promise<PackDataResponse> {\n const { bytes } = packDataBytes(data.data as MichelsonData, data.type as MichelsonType);\n return { packed: bytes }\n }\n}\n","/**\n * @packageDocumentation\n * @module @taquito/taquito\n */\n\nimport { RpcClient } from '@taquito/rpc';\nimport { RPCBatchProvider } from './batch/rpc-batch-provider';\nimport { Protocols } from './constants';\nimport { Config, Context, TaquitoProvider } from './context';\nimport { ContractProvider, EstimationProvider } from './contract/interface';\nimport { Extension } from './extension/extension';\nimport { Forger } from './forger/interface';\nimport { RpcForger } from './forger/rpc-forger';\nimport { format } from './format';\nimport { Packer } from './packer/interface';\nimport { RpcPacker } from './packer/rpc-packer';\nimport { Signer } from './signer/interface';\nimport { NoopSigner } from './signer/noop';\nimport { SubscribeProvider } from './subscribe/interface';\nimport { PollingSubscribeProvider } from './subscribe/polling-provider';\nimport { TzProvider } from './tz/interface';\nimport { VERSION } from './version';\nimport { LegacyWalletProvider, Wallet, WalletProvider } from './wallet';\nimport { OperationFactory } from './wallet/operation-factory';\n\nexport { MichelsonMap, UnitValue } from '@taquito/michelson-encoder';\nexport * from './constants';\nexport * from './context';\nexport { TaquitoProvider } from './context';\nexport * from './contract';\nexport * from './contract/big-map';\nexport { CompositeForger } from './forger/composite-forger';\nexport * from './forger/interface';\nexport { RpcForger } from './forger/rpc-forger';\nexport * from './operations';\nexport { OperationBatch } from './batch/rpc-batch-provider';\nexport * from './signer/interface';\nexport * from './subscribe/interface';\nexport { SubscribeProvider } from './subscribe/interface';\nexport { PollingSubscribeProvider } from './subscribe/polling-provider';\nexport * from './tz/interface';\nexport * from './wallet';\nexport { Extension } from './extension/extension';\nexport * from './parser/interface';\nexport * from './parser/michel-codec-parser';\nexport * from './parser/noop-parser';\nexport * from './packer/interface';\nexport * from './packer/michel-codec-packer';\nexport * from './packer/rpc-packer';\n\nexport interface SetProviderOptions {\n forger?: Forger;\n wallet?: WalletProvider;\n rpc?: string | RpcClient;\n stream?: string | SubscribeProvider;\n signer?: Signer;\n protocol?: Protocols;\n config?: Config;\n packer?: Packer;\n}\n\nexport interface VersionInfo {\n commitHash: string;\n version: string;\n}\n\n/**\n * @description Facade class that surfaces all of the libraries capability and allow it's configuration\n *\n * @param _rpc The RPC server to use\n */\nexport class TezosToolkit {\n private _stream!: SubscribeProvider;\n private _options: SetProviderOptions = {};\n private _rpcClient: RpcClient;\n private _wallet: Wallet;\n private _context: Context;\n /**\n * @deprecated TezosToolkit.batch has been deprecated in favor of TezosToolkit.contract.batch\n *\n */\n public batch: RPCBatchProvider['batch'];\n\n public readonly format = format;\n\n constructor(private _rpc: RpcClient | string) {\n if (typeof this._rpc === 'string') {\n this._rpcClient = new RpcClient(this._rpc);\n } else {\n this._rpcClient = this._rpc;\n }\n this._context = new Context(_rpc);\n this._wallet = new Wallet(this._context);\n this.setProvider({ rpc: this._rpcClient });\n // tslint:disable-next-line: deprecation\n this.batch = this._context.batch.batch.bind(this._context.batch);\n }\n\n /**\n * @description Sets configuration on the Tezos Taquito instance. Allows user to choose which signer, rpc client, rpc url, forger and so forth\n *\n * @param options rpc url or rpcClient to use to interact with the Tezos network\n *\n * @example Tezos.setProvider({rpc: 'https://api.tez.ie/rpc/mainnet', signer: new InMemorySigner.fromSecretKey(“edsk...”)})\n * @example Tezos.setProvider({ config: { confirmationPollingTimeoutSecond: 300 }})\n *\n */\n\n setProvider({\n rpc,\n stream,\n signer,\n protocol,\n config,\n forger,\n wallet,\n packer,\n }: SetProviderOptions) {\n this.setRpcProvider(rpc);\n this.setStreamProvider(stream);\n this.setSignerProvider(signer);\n this.setForgerProvider(forger);\n this.setWalletProvider(wallet);\n this.setPackerProvider(packer);\n\n this._context.proto = protocol;\n this._context.config = config as Partial<Config>;\n }\n\n /**\n * @description Sets signer provider on the Tezos Taquito instance.\n *\n * @param options signer to use to interact with the Tezos network\n *\n * @example Tezos.setSignerProvider(new InMemorySigner.fromSecretKey('edsk...'))\n *\n */\n setSignerProvider(signer?: SetProviderOptions['signer']) {\n if (!this._options.signer && typeof signer === 'undefined') {\n this._context.signer = new NoopSigner();\n this._options.signer = signer;\n } else if (typeof signer !== 'undefined') {\n this._context.signer = signer;\n this._options.signer = signer;\n }\n }\n\n /**\n * @description Sets rpc provider on the Tezos Taquito instance\n *\n * @param options rpc url or rpcClient to use to interact with the Tezos network\n *\n * @example Tezos.setRpcProvider('https://api.tez.ie/rpc/mainnet')\n *\n */\n setRpcProvider(rpc?: SetProviderOptions['rpc']) {\n if (typeof rpc === 'string') {\n this._rpcClient = new RpcClient(rpc);\n } else if (rpc instanceof RpcClient) {\n this._rpcClient = rpc;\n }\n /* else if (this._options.rpc === undefined) {\n this._rpcClient = new RpcClient();\n } */\n this._options.rpc = this._rpcClient;\n this._context.rpc = this._rpcClient;\n }\n\n /**\n * @description Sets forger provider on the Tezos Taquito instance\n *\n * @param options forger to use to interact with the Tezos network\n *\n * @example Tezos.setForgerProvider(localForger)\n *\n */\n setForgerProvider(forger?: SetProviderOptions['forger']) {\n const f = typeof forger === 'undefined' ? this.getFactory(RpcForger)() : forger;\n this._options.forger = f;\n this._context.forger = f;\n }\n\n /**\n * @description Sets stream provider on the Tezos Taquito instance\n *\n * @param options stream to use to interact with the Tezos network\n *\n * @example Tezos.setStreamProvider(...)\n *\n */\n setStreamProvider(stream?: SetProviderOptions['stream']) {\n if (typeof stream === 'string') {\n this._stream = new PollingSubscribeProvider(new Context(new RpcClient(stream)));\n } else if (typeof stream !== 'undefined') {\n this._stream = stream;\n } else if (this._options.stream === undefined) {\n this._stream = this.getFactory(PollingSubscribeProvider)();\n }\n this._options.stream = stream;\n }\n\n /**\n * @description Sets wallet provider on the Tezos Taquito instance\n *\n * @param options wallet to use to interact with the Tezos network\n *\n * @example Tezos.setWalletProvider(...)\n *\n */\n setWalletProvider(wallet?: SetProviderOptions['wallet']) {\n if (!this._options.wallet && typeof wallet === 'undefined') {\n const w = this.getFactory(LegacyWalletProvider)();\n this._options.wallet = w;\n this._context.walletProvider = w;\n } else if (typeof wallet !== 'undefined') {\n this._options.wallet = wallet;\n this._context.walletProvider = wallet;\n }\n }\n\n /**\n * @description Sets Packer provider on the Tezos Taquito instance\n *\n * @param options packer to use to interact with the Tezos network\n *\n * @example Tezos.setPackerProvider(new MichelCodecPacker())\n *\n */\n setPackerProvider(packer?: SetProviderOptions['packer']) {\n const p = typeof packer === 'undefined' ? this.getFactory(RpcPacker)() : packer;\n this._options.packer = p;\n this._context.packer = p;\n }\n\n /**\n * @description Provide access to tezos account management\n */\n get tz(): TzProvider {\n return this._context.tz;\n }\n\n /**\n * @description Provide access to smart contract utilities\n */\n get contract(): ContractProvider {\n return this._context.contract;\n }\n\n get wallet(): Wallet {\n return this._wallet;\n }\n\n get operation(): OperationFactory {\n return this._context.operationFactory;\n }\n\n /**\n * @description Provide access to operation estimation utilities\n */\n get estimate(): EstimationProvider {\n return this._context.estimate;\n }\n\n /**\n * @description Provide access to streaming utilities backed by an streamer implementation\n */\n get stream(): SubscribeProvider {\n return this._stream;\n }\n\n /**\n * @description Provide access to the currently used rpc client\n */\n get rpc(): RpcClient {\n return this._context.rpc;\n }\n\n /**\n * @description Provide access to the currently used signer\n */\n get signer() {\n return this._context.signer;\n }\n\n /**\n * @description Allow to add a module to the TezosToolkit instance. This method adds the appropriate Providers(s) required by the module to the internal context.\n *\n * @param module extension to add to the TezosToolkit instance\n *\n * @example Tezos.addExtension(new Tzip16Module());\n */\n addExtension(module: Extension) {\n module.configureContext(this._context);\n }\n\n getFactory<T, K extends Array<any>>(ctor: TaquitoProvider<T, K>) {\n return (...args: K) => {\n return new ctor(this._context, ...args);\n };\n }\n\n /**\n * @description Gets an object containing the version of Taquito library and git sha of the commit this library is compiled from\n */\n getVersionInfo(): VersionInfo {\n return VERSION;\n }\n}\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","'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\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","import { windowRef } from './MockWindow';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet debug = windowRef.beaconSdkDebugEnabled ? true : false;\nif (debug) {\n // eslint-disable-next-line no-console\n console.log('[BEACON]: Debug mode is ON (turned on either by the developer or a browser extension)');\n}\nexport const setDebugEnabled = (enabled) => {\n debug = enabled;\n};\nexport const getDebugEnabled = () => debug;\n//# sourceMappingURL=debug.js.map","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","module.exports = require('./lib/axios');","'use strict';\nmodule.exports = require( './lib/u2f-api' );","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\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// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","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","'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","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var __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};\nimport * as sodium from 'libsodium-wrappers';\nimport { BEACON_VERSION } from '../../constants';\nimport { decryptCryptoboxPayload, encryptCryptoboxPayload } from '../../utils/crypto';\nimport { generateGUID } from '../../utils/generate-uuid';\nimport { CommunicationClient } from './CommunicationClient';\n/**\n * @internalapi\n *\n *\n */\nexport class MessageBasedClient extends CommunicationClient {\n constructor(name, keyPair) {\n super(keyPair);\n this.name = name;\n /**\n * The listeners that will be notified of new messages\n */\n this.activeListeners = new Map();\n this.init().catch(console.error);\n }\n /**\n * start the client and make sure all dependencies are ready\n */\n start() {\n return __awaiter(this, void 0, void 0, function* () {\n yield sodium.ready;\n });\n }\n /**\n * Get the pairing request information. This will be shared with the peer during the connection setup\n */\n getPairingRequestInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return {\n id: yield generateGUID(),\n type: 'postmessage-pairing-request',\n name: this.name,\n version: BEACON_VERSION,\n publicKey: yield this.getPublicKey()\n };\n });\n }\n /**\n * Get the pairing response information. This will be shared with the peer during the connection setup\n */\n getPairingResponseInfo(request) {\n return __awaiter(this, void 0, void 0, function* () {\n return {\n id: request.id,\n type: 'postmessage-pairing-response',\n name: this.name,\n version: BEACON_VERSION,\n publicKey: yield this.getPublicKey()\n };\n });\n }\n /**\n * Unsubscribe from encrypted messages from a specific peer\n *\n * @param senderPublicKey\n */\n unsubscribeFromEncryptedMessage(senderPublicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const listener = this.activeListeners.get(senderPublicKey);\n if (!listener) {\n return;\n }\n this.activeListeners.delete(senderPublicKey);\n });\n }\n /**\n * Unsubscribe from all encrypted messages\n */\n unsubscribeFromEncryptedMessages() {\n return __awaiter(this, void 0, void 0, function* () {\n this.activeListeners.clear();\n });\n }\n /**\n * Decrypt a message from a specific peer\n *\n * @param senderPublicKey\n * @param payload\n */\n decryptMessage(senderPublicKey, payload) {\n return __awaiter(this, void 0, void 0, function* () {\n const { sharedRx } = yield this.createCryptoBoxServer(senderPublicKey, this.keyPair.privateKey);\n const hexPayload = Buffer.from(payload, 'hex');\n if (hexPayload.length >=\n sodium.crypto_secretbox_NONCEBYTES + sodium.crypto_secretbox_MACBYTES) {\n try {\n return yield decryptCryptoboxPayload(hexPayload, sharedRx);\n }\n catch (decryptionError) {\n /* NO-OP. We try to decode every message, but some might not be addressed to us. */\n }\n }\n throw new Error('Could not decrypt message');\n });\n }\n /**\n * Encrypt a message for a specific publicKey (receiver)\n *\n * @param recipientPublicKey\n * @param message\n */\n encryptMessage(recipientPublicKey, message) {\n return __awaiter(this, void 0, void 0, function* () {\n const { sharedTx } = yield this.createCryptoBoxClient(recipientPublicKey, this.keyPair.privateKey);\n return encryptCryptoboxPayload(message, sharedTx);\n });\n }\n}\n//# sourceMappingURL=MessageBasedClient.js.map","import unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\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.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","var __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};\nimport * as sodium from 'libsodium-wrappers';\nimport { toHex, getHexHash, sealCryptobox } from '../../utils/crypto';\n/**\n * @internalapi\n *\n *\n */\nexport class CommunicationClient {\n constructor(keyPair) {\n this.keyPair = keyPair;\n }\n /**\n * Get the public key\n */\n getPublicKey() {\n return __awaiter(this, void 0, void 0, function* () {\n return toHex(this.keyPair.publicKey);\n });\n }\n /**\n * get the public key hash\n */\n getPublicKeyHash() {\n return __awaiter(this, void 0, void 0, function* () {\n return getHexHash(this.keyPair.publicKey);\n });\n }\n /**\n * Create a cryptobox shared key\n *\n * @param otherPublicKey\n * @param selfPrivateKey\n */\n createCryptoBox(otherPublicKey, selfPrivateKey) {\n return __awaiter(this, void 0, void 0, function* () {\n // TODO: Don't calculate it every time?\n const kxSelfPrivateKey = sodium.crypto_sign_ed25519_sk_to_curve25519(Buffer.from(selfPrivateKey)); // Secret bytes to scalar bytes\n const kxSelfPublicKey = sodium.crypto_sign_ed25519_pk_to_curve25519(Buffer.from(selfPrivateKey).slice(32, 64)); // Secret bytes to scalar bytes\n const kxOtherPublicKey = sodium.crypto_sign_ed25519_pk_to_curve25519(Buffer.from(otherPublicKey, 'hex')); // Secret bytes to scalar bytes\n return [\n Buffer.from(kxSelfPublicKey),\n Buffer.from(kxSelfPrivateKey),\n Buffer.from(kxOtherPublicKey)\n ];\n });\n }\n /**\n * Create a cryptobox server\n *\n * @param otherPublicKey\n * @param selfPrivateKey\n */\n createCryptoBoxServer(otherPublicKey, selfPrivateKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const keys = yield this.createCryptoBox(otherPublicKey, selfPrivateKey);\n return sodium.crypto_kx_server_session_keys(...keys);\n });\n }\n /**\n * Create a cryptobox client\n *\n * @param otherPublicKey\n * @param selfPrivateKey\n */\n createCryptoBoxClient(otherPublicKey, selfPrivateKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const keys = yield this.createCryptoBox(otherPublicKey, selfPrivateKey);\n return sodium.crypto_kx_client_session_keys(...keys);\n });\n }\n /**\n * Encrypt a message for a specific publicKey (receiver, asymmetric)\n *\n * @param recipientPublicKey\n * @param message\n */\n encryptMessageAsymmetric(recipientPublicKey, message) {\n return __awaiter(this, void 0, void 0, function* () {\n return sealCryptobox(message, Buffer.from(recipientPublicKey, 'hex'));\n });\n }\n}\n//# sourceMappingURL=CommunicationClient.js.map","//---------------------------------------------------------------------\n//\n// QR Code Generator 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\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (var c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n var opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n var c = Math.floor( (x - min) / cellSize);\n var r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n\n var img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n var escapeXml = function(s) {\n var escaped = '';\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charAt(i);\n switch(c) {\n case '<': escaped += '&lt;'; break;\n case '>': escaped += '&gt;'; break;\n case '&': escaped += '&amp;'; break;\n case '\"': escaped += '&quot;'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\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 // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\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","\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","// 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;","'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","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","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var 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","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","(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 Buffer = require('buffer').Buffer;\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 }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this._strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\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 parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n var z = 0;\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n var b;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n b = c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n\n r |= b;\n z |= b;\n }\n\n assert(!(z & 0xf0), 'Invalid character in ' + str);\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\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 var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'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 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","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","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\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 Buffer = require('buffer').Buffer;\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 }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\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 parseHex (str, start, end) {\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 <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\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 var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\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\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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar XMLHttpRequestEventTarget = /** @class */ (function () {\n function XMLHttpRequestEventTarget() {\n this.listeners = {};\n }\n XMLHttpRequestEventTarget.prototype.addEventListener = function (eventType, listener) {\n eventType = eventType.toLowerCase();\n this.listeners[eventType] = this.listeners[eventType] || [];\n this.listeners[eventType].push(listener.handleEvent || listener);\n };\n XMLHttpRequestEventTarget.prototype.removeEventListener = function (eventType, listener) {\n eventType = eventType.toLowerCase();\n if (!this.listeners[eventType]) {\n return;\n }\n var index = this.listeners[eventType].indexOf(listener.handleEvent || listener);\n if (index < 0) {\n return;\n }\n this.listeners[eventType].splice(index, 1);\n };\n XMLHttpRequestEventTarget.prototype.dispatchEvent = function (event) {\n var eventType = event.type.toLowerCase();\n event.target = this; // TODO: set event.currentTarget?\n if (this.listeners[eventType]) {\n for (var _i = 0, _a = this.listeners[eventType]; _i < _a.length; _i++) {\n var listener_1 = _a[_i];\n listener_1.call(this, event);\n }\n }\n var listener = this[\"on\" + eventType];\n if (listener) {\n listener.call(this, event);\n }\n return true;\n };\n return XMLHttpRequestEventTarget;\n}());\nexports.XMLHttpRequestEventTarget = XMLHttpRequestEventTarget;\n//# sourceMappingURL=xml-http-request-event-target.js.map","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * @packageDocumentation\n * @module @taquito/beacon-wallet\n */\n\nimport {\n DAppClient,\n DAppClientOptions,\n RequestPermissionInput,\n PermissionScope,\n} from '@airgap/beacon-sdk';\n\nimport {\n createOriginationOperation,\n createSetDelegateOperation,\n createTransferOperation,\n WalletDelegateParams,\n WalletOriginateParams,\n WalletProvider,\n WalletTransferParams,\n} from '@taquito/taquito';\n\nexport { VERSION } from './version';\n\nexport class BeaconWalletNotInitialized implements Error {\n name = 'BeaconWalletNotInitialized';\n message = 'You need to initialize BeaconWallet by calling beaconWallet.requestPermissions first';\n}\n\nexport class MissingRequiredScopes implements Error {\n name = 'MissingRequiredScopes';\n message: string;\n\n constructor(public requiredScopes: PermissionScope[]) {\n this.message = `Required permissions scopes were not granted: ${requiredScopes.join(',')}`;\n }\n}\n\nexport class BeaconWallet implements WalletProvider {\n public client: DAppClient;\n\n constructor(options: DAppClientOptions) {\n this.client = new DAppClient(options);\n }\n\n private validateRequiredScopesOrFail(\n permissionScopes: PermissionScope[],\n requiredScopes: PermissionScope[]\n ) {\n const mandatoryScope = new Set(requiredScopes);\n\n for (const scope of permissionScopes) {\n if (mandatoryScope.has(scope)) {\n mandatoryScope.delete(scope);\n }\n }\n\n if (mandatoryScope.size > 0) {\n throw new MissingRequiredScopes(Array.from(mandatoryScope));\n }\n }\n\n async requestPermissions(request?: RequestPermissionInput) {\n await this.client.requestPermissions(request);\n }\n\n async getPKH() {\n const account = await this.client.getActiveAccount();\n if (!account) {\n throw new BeaconWalletNotInitialized();\n }\n return account.address;\n }\n\n async mapTransferParamsToWalletParams(params: WalletTransferParams) {\n return this.removeDefaultParams(params, await createTransferOperation(this.formatParameters(params)));\n }\n\n async mapOriginateParamsToWalletParams(params: WalletOriginateParams) {\n return this.removeDefaultParams(params, await createOriginationOperation(this.formatParameters(params)));\n }\n\n async mapDelegateParamsToWalletParams(params: WalletDelegateParams) {\n return this.removeDefaultParams(params, await createSetDelegateOperation(this.formatParameters(params)));\n }\n\n formatParameters(params: any) {\n if (params.fee) {\n params.fee = params.fee.toString();\n }\n if (params.storageLimit) {\n params.storageLimit = params.storageLimit.toString();\n }\n if (params.gasLimit) {\n params.gasLimit = params.gasLimit.toString();\n }\n return params;\n }\n\n removeDefaultParams(params: WalletTransferParams|WalletOriginateParams|WalletDelegateParams, operatedParams:any) {\n // If fee, storageLimit or gasLimit is undefined by user\n // in case of beacon wallet, dont override it by\n // defaults.\n if(!params.fee) {\n delete operatedParams.fee;\n }\n if(!params.storageLimit) {\n delete operatedParams.storage_limit;\n }\n if(!params.gasLimit) {\n delete operatedParams.gas_limit;\n }\n return operatedParams;\n }\n\n async sendOperations(params: any[]) {\n const account = await this.client.getActiveAccount();\n if (!account) {\n throw new BeaconWalletNotInitialized();\n }\n const permissions = account.scopes;\n this.validateRequiredScopesOrFail(permissions, [PermissionScope.OPERATION_REQUEST]);\n \n const { transactionHash } = await this.client.requestOperation({ operationDetails: params });\n return transactionHash;\n }\n \n /**\n * \n * @description Removes all beacon values from the storage. After using this method, this instance is no longer usable. \n * You will have to instanciate a new BeaconWallet.\n */\n async disconnect() {\n await this.client.destroy();\n }\n\n /**\n * \n * @description This method removes the active account from local storage by setting it to undefined.\n */\n async clearActiveAccount() {\n await this.client.setActiveAccount();\n }\n}\n","// @flow\n\n/**\n * A Log object\n */\nexport type Log = {\n type: string,\n message?: string,\n data?: any,\n id: string, // unique amount all logs\n date: Date, // date of the log\n};\n\nexport type Unsubscribe = () => void;\n\nlet id = 0;\nconst subscribers = [];\n\n/**\n * log something\n * @param type a namespaced identifier of the log (it is not a level like \"debug\", \"error\" but more like \"apdu-in\", \"apdu-out\", etc...)\n * @param message a clear message of the log associated to the type\n */\nexport const log = (type: string, message?: string, data?: any) => {\n const obj: Log = { type, id: String(++id), date: new Date() };\n if (message) obj.message = message;\n if (data) obj.data = data;\n dispatch(obj);\n};\n\n/**\n * listen to logs.\n * @param cb that is called for each future log() with the Log object\n * @return a function that can be called to unsubscribe the listener\n */\nexport const listen = (cb: (Log) => void): Unsubscribe => {\n subscribers.push(cb);\n return () => {\n const i = subscribers.indexOf(cb);\n if (i !== -1) {\n // equivalent of subscribers.splice(i, 1) // https://twitter.com/Rich_Harris/status/1125850391155965952\n subscribers[i] = subscribers[subscribers.length - 1];\n subscribers.pop();\n }\n };\n};\n\nfunction dispatch(log: Log) {\n for (let i = 0; i < subscribers.length; i++) {\n try {\n subscribers[i](log);\n } catch (e) {\n console.error(e);\n }\n }\n}\n\n// for debug purpose\nif (typeof window !== \"undefined\") {\n window.__ledgerLogsListen = listen;\n}\n","var __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};\nimport * as sodium from 'libsodium-wrappers';\nimport axios from 'axios';\nimport { getHexHash, toHex, recipientString, openCryptobox, encryptCryptoboxPayload, decryptCryptoboxPayload } from '../../utils/crypto';\nimport { MatrixClient } from '../../matrix-client/MatrixClient';\nimport { MatrixClientEventType } from '../../matrix-client/models/MatrixClientEvent';\nimport { MatrixMessageType } from '../../matrix-client/models/MatrixMessage';\nimport { PeerManager, StorageKey } from '../..';\nimport { BEACON_VERSION } from '../../constants';\nimport { generateGUID } from '../../utils/generate-uuid';\nimport { getSenderId } from '../../utils/get-sender-id';\nimport { Logger } from '../../utils/Logger';\nimport { CommunicationClient } from './CommunicationClient';\nimport { ExposedPromise } from '../../utils/exposed-promise';\nconst logger = new Logger('P2PCommunicationClient');\nconst KNOWN_RELAY_SERVERS = [\n 'beacon-node-1.sky.papers.tech',\n 'beacon-node-0.papers.tech:8448',\n 'beacon-node-2.sky.papers.tech'\n];\nconst publicKeyToNumber = (arr, mod) => {\n let sum = 0;\n for (let i = 0; i < arr.length; i++) {\n sum += arr[i] + i;\n }\n return Math.floor(sum % mod);\n};\n/**\n * @internalapi\n *\n *\n */\nexport class P2PCommunicationClient extends CommunicationClient {\n constructor(name, keyPair, replicationCount, storage, matrixNodes, iconUrl, appUrl) {\n super(keyPair);\n this.name = name;\n this.replicationCount = replicationCount;\n this.storage = storage;\n this.iconUrl = iconUrl;\n this.appUrl = appUrl;\n this.client = new ExposedPromise();\n this.activeListeners = new Map();\n this.ignoredRooms = [];\n this.loginCounter = 0;\n logger.log('constructor', 'P2PCommunicationClient created');\n this.KNOWN_RELAY_SERVERS = matrixNodes.length > 0 ? matrixNodes : KNOWN_RELAY_SERVERS;\n }\n getPairingRequestInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n const info = {\n id: yield generateGUID(),\n type: 'p2p-pairing-request',\n name: this.name,\n version: BEACON_VERSION,\n publicKey: yield this.getPublicKey(),\n relayServer: yield this.getRelayServer()\n };\n if (this.iconUrl) {\n info.icon = this.iconUrl;\n }\n if (this.appUrl) {\n info.appUrl = this.appUrl;\n }\n return info;\n });\n }\n getPairingResponseInfo(request) {\n return __awaiter(this, void 0, void 0, function* () {\n const info = {\n id: request.id,\n type: 'p2p-pairing-response',\n name: this.name,\n version: BEACON_VERSION,\n publicKey: yield this.getPublicKey(),\n relayServer: yield this.getRelayServer()\n };\n if (this.iconUrl) {\n info.icon = this.iconUrl;\n }\n if (this.appUrl) {\n info.appUrl = this.appUrl;\n }\n return info;\n });\n }\n getRelayServer() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.relayServer) {\n return this.relayServer.promise;\n }\n else {\n this.relayServer = new ExposedPromise();\n }\n // MIGRATION: If a relay server is set, it's all good and we don't have to do any migration\n const node = yield this.storage.get(StorageKey.MATRIX_SELECTED_NODE);\n if (node && node.length > 0) {\n this.relayServer.resolve(node);\n return node;\n }\n else if (KNOWN_RELAY_SERVERS === this.KNOWN_RELAY_SERVERS) {\n // Migration start\n // Only if the array of nodes is the default we do the migration, otherwise we leave it.\n // If NO relay server is set, we have 3 possibilities:\n const hasDoneMigration = yield this.storage.get(StorageKey.MULTI_NODE_SETUP_DONE);\n if (!hasDoneMigration) {\n // If this migration has run before, we can skip it.\n const preservedState = yield this.storage.get(StorageKey.MATRIX_PRESERVED_STATE);\n console.log('PRESERVED STATE', preservedState);\n if (preservedState.syncToken || preservedState.rooms) {\n // If migration has NOT run and we have a sync state, we know have been previously connected. So we set the old default relayServer as our current node.\n const node = 'matrix.papers.tech'; // 2.2.7 Migration: This will default to the old default to avoid peers from losing their relayServer.\n this.storage\n .set(StorageKey.MATRIX_SELECTED_NODE, node)\n .catch((error) => logger.log(error));\n this.relayServer.resolve(node);\n return node;\n }\n this.storage.set(StorageKey.MULTI_NODE_SETUP_DONE, true).catch((error) => logger.log(error));\n // Migration end\n }\n }\n console.log('GET RELAY SERVER');\n const startIndex = publicKeyToNumber(this.keyPair.publicKey, this.KNOWN_RELAY_SERVERS.length);\n let offset = 0;\n while (offset < this.KNOWN_RELAY_SERVERS.length) {\n const serverIndex = (startIndex + offset) % this.KNOWN_RELAY_SERVERS.length;\n const server = this.KNOWN_RELAY_SERVERS[serverIndex];\n try {\n yield axios.get(`https://${server}/_matrix/client/versions`);\n this.storage\n .set(StorageKey.MATRIX_SELECTED_NODE, server)\n .catch((error) => logger.log(error));\n this.relayServer.resolve(server);\n return server;\n }\n catch (relayError) {\n logger.log(`Ignoring server \"${server}\", trying another one...`);\n offset++;\n }\n }\n this.relayServer.reject(`No matrix server reachable!`);\n throw new Error(`No matrix server reachable!`);\n });\n }\n tryJoinRooms(roomId, retry = 1) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield (yield this.client.promise).joinRooms(roomId);\n }\n catch (error) {\n if (retry <= 10 && error.errcode === 'M_FORBIDDEN') {\n // If we join the room too fast after receiving the invite, the server can accidentally reject our join. This seems to be a problem only when using a federated multi-node setup. Usually waiting for a couple milliseconds solves the issue, but to handle lag, we will keep retrying for 2 seconds.\n logger.log(`Retrying to join...`, error);\n setTimeout(() => __awaiter(this, void 0, void 0, function* () {\n yield this.tryJoinRooms(roomId, retry + 1);\n }), 200);\n }\n else {\n logger.log(`Failed to join after ${retry} tries.`, error);\n }\n }\n });\n }\n start() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('start', 'starting client');\n yield sodium.ready;\n const loginRawDigest = sodium.crypto_generichash(32, sodium.from_string(`login:${Math.floor(Date.now() / 1000 / (5 * 60))}`));\n const rawSignature = sodium.crypto_sign_detached(loginRawDigest, this.keyPair.privateKey);\n logger.log('start', `connecting to server`);\n const relayServer = yield this.getRelayServer();\n const client = MatrixClient.create({\n baseUrl: `https://${relayServer}`,\n storage: this.storage\n });\n this.initialListener = (event) => __awaiter(this, void 0, void 0, function* () {\n if (this.initialEvent && this.initialEvent.timestamp && event && event.timestamp) {\n if (this.initialEvent.timestamp < event.timestamp) {\n this.initialEvent = event;\n }\n }\n else {\n this.initialEvent = event;\n }\n });\n client.subscribe(MatrixClientEventType.MESSAGE, this.initialListener);\n client.subscribe(MatrixClientEventType.INVITE, (event) => __awaiter(this, void 0, void 0, function* () {\n let member;\n if (event.content.members.length === 1) {\n // If there is only one member we know it's a new room\n // TODO: Use the \"sender\" of the event instead\n member = event.content.members[0];\n }\n yield this.tryJoinRooms(event.content.roomId);\n if (member) {\n yield this.updateRelayServer(member);\n yield this.updatePeerRoom(member, event.content.roomId);\n }\n }));\n logger.log('start', 'login', yield this.getPublicKeyHash(), 'on', relayServer);\n try {\n yield client.start({\n id: yield this.getPublicKeyHash(),\n password: `ed:${toHex(rawSignature)}:${yield this.getPublicKey()}`,\n deviceId: toHex(this.keyPair.publicKey)\n });\n }\n catch (error) {\n console.log('ERROR, RETRYING');\n yield this.reset(); // If we can't log in, let's reset\n console.log('TRYING AGAIN');\n if (this.loginCounter <= this.KNOWN_RELAY_SERVERS.length) {\n this.loginCounter++;\n this.start();\n return;\n }\n else {\n throw new Error('Too many login attempts. Try again later.');\n }\n }\n console.log('client is ready');\n this.client.resolve(client);\n });\n }\n stop() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.client.isResolved()) {\n yield (yield this.client.promise).stop().catch((error) => logger.error(error));\n }\n yield this.reset();\n });\n }\n reset() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.storage.delete(StorageKey.MATRIX_PEER_ROOM_IDS).catch((error) => logger.log(error));\n yield this.storage.delete(StorageKey.MATRIX_PRESERVED_STATE).catch((error) => logger.log(error));\n yield this.storage.delete(StorageKey.MATRIX_SELECTED_NODE).catch((error) => logger.log(error));\n // Instead of resetting everything, maybe we should make sure a new instance is created?\n this.relayServer = undefined;\n this.client = new ExposedPromise();\n this.initialEvent = undefined;\n this.initialListener = undefined;\n });\n }\n listenForEncryptedMessage(senderPublicKey, messageCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.activeListeners.has(senderPublicKey)) {\n return;\n }\n const { sharedRx } = yield this.createCryptoBoxServer(senderPublicKey, this.keyPair.privateKey);\n const callbackFunction = (event) => __awaiter(this, void 0, void 0, function* () {\n if (this.isTextMessage(event.content) && (yield this.isSender(event, senderPublicKey))) {\n let payload;\n yield this.updateRelayServer(event.content.message.sender);\n yield this.updatePeerRoom(event.content.message.sender, event.content.roomId);\n try {\n payload = Buffer.from(event.content.message.content, 'hex');\n // content can be non-hex if it's a connection open request\n }\n catch (_a) {\n /* */\n }\n if (payload &&\n payload.length >= sodium.crypto_secretbox_NONCEBYTES + sodium.crypto_secretbox_MACBYTES) {\n try {\n const decryptedMessage = yield decryptCryptoboxPayload(payload, sharedRx);\n // logger.log(\n // 'listenForEncryptedMessage',\n // 'encrypted message received',\n // decryptedMessage,\n // await new Serializer().deserialize(decryptedMessage)\n // )\n // console.log('calculated sender ID', await getSenderId(senderPublicKey))\n // TODO: Add check for correct decryption key / sender ID\n messageCallback(decryptedMessage);\n }\n catch (decryptionError) {\n /* NO-OP. We try to decode every message, but some might not be addressed to us. */\n }\n }\n }\n });\n this.activeListeners.set(senderPublicKey, callbackFunction);\n (yield this.client.promise).subscribe(MatrixClientEventType.MESSAGE, callbackFunction);\n const lastEvent = this.initialEvent;\n if (lastEvent &&\n lastEvent.timestamp &&\n new Date().getTime() - lastEvent.timestamp < 5 * 60 * 1000) {\n logger.log('listenForEncryptedMessage', 'Handling previous event');\n yield callbackFunction(lastEvent);\n }\n else {\n logger.log('listenForEncryptedMessage', 'No previous event found');\n }\n const initialListener = this.initialListener;\n if (initialListener) {\n ;\n (yield this.client.promise).unsubscribe(MatrixClientEventType.MESSAGE, initialListener);\n }\n this.initialListener = undefined;\n this.initialEvent = undefined;\n });\n }\n unsubscribeFromEncryptedMessage(senderPublicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const listener = this.activeListeners.get(senderPublicKey);\n if (!listener) {\n return;\n }\n ;\n (yield this.client.promise).unsubscribe(MatrixClientEventType.MESSAGE, listener);\n this.activeListeners.delete(senderPublicKey);\n });\n }\n unsubscribeFromEncryptedMessages() {\n return __awaiter(this, void 0, void 0, function* () {\n ;\n (yield this.client.promise).unsubscribeAll(MatrixClientEventType.MESSAGE);\n this.activeListeners.clear();\n });\n }\n sendMessage(message, peer) {\n return __awaiter(this, void 0, void 0, function* () {\n const { sharedTx } = yield this.createCryptoBoxClient(peer.publicKey, this.keyPair.privateKey);\n const recipientHash = yield getHexHash(Buffer.from(peer.publicKey, 'hex'));\n const recipient = recipientString(recipientHash, peer.relayServer);\n const roomId = yield this.getRelevantRoom(recipient);\n // Before we send the message, we have to wait for the join to be accepted.\n yield this.waitForJoin(roomId); // TODO: This can probably be removed because we are now waiting inside the get room method\n const encryptedMessage = yield encryptCryptoboxPayload(message, sharedTx);\n (yield this.client.promise).sendTextMessage(roomId, encryptedMessage).catch((error) => __awaiter(this, void 0, void 0, function* () {\n if (error.errcode === 'M_FORBIDDEN') {\n // Room doesn't exist\n logger.log(`sendMessage`, `M_FORBIDDEN`, error);\n yield this.deleteRoomIdFromRooms(roomId);\n const newRoomId = yield this.getRelevantRoom(recipient);\n (yield this.client.promise)\n .sendTextMessage(newRoomId, encryptedMessage)\n .catch((error2) => __awaiter(this, void 0, void 0, function* () {\n logger.log(`sendMessage`, `inner error`, error2);\n }));\n }\n else {\n logger.log(`sendMessage`, `not forbidden`, error);\n }\n }));\n });\n }\n updatePeerRoom(sender, roomId) {\n return __awaiter(this, void 0, void 0, function* () {\n // Sender is in the format \"@pubkeyhash:relayserver.tld\"\n const split = sender.split(':');\n if (split.length < 2 || !split[0].startsWith('@')) {\n throw new Error('Invalid sender');\n }\n const roomIds = yield this.storage.get(StorageKey.MATRIX_PEER_ROOM_IDS);\n const room = roomIds[sender];\n if (room && room[1]) {\n // If we have a room already, let's ignore it. We need to do this, otherwise it will be loaded from the matrix cache.\n this.ignoredRooms.push(room[1]);\n }\n roomIds[sender] = roomId;\n yield this.storage.set(StorageKey.MATRIX_PEER_ROOM_IDS, roomIds);\n // TODO: We also need to delete the room from the sync state\n // If we need to delete a room, we can assume the local state is not up to date anymore, so we can reset the state\n });\n }\n deleteRoomIdFromRooms(roomId) {\n return __awaiter(this, void 0, void 0, function* () {\n const roomIds = yield this.storage.get(StorageKey.MATRIX_PEER_ROOM_IDS);\n const newRoomIds = Object.entries(roomIds)\n .filter((entry) => entry[1] !== roomId)\n .reduce((pv, cv) => (Object.assign(Object.assign({}, pv), { [cv[0]]: cv[1] })), {});\n yield this.storage.set(StorageKey.MATRIX_PEER_ROOM_IDS, newRoomIds);\n // TODO: We also need to delete the room from the sync state\n // If we need to delete a room, we can assume the local state is not up to date anymore, so we can reset the state\n this.ignoredRooms.push(roomId);\n });\n }\n listenForChannelOpening(messageCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n ;\n (yield this.client.promise).subscribe(MatrixClientEventType.MESSAGE, (event) => __awaiter(this, void 0, void 0, function* () {\n if (this.isTextMessage(event.content) && (yield this.isChannelOpenMessage(event.content))) {\n logger.log(`listenForChannelOpening`, `channel opening`, JSON.stringify(event));\n yield this.updateRelayServer(event.content.message.sender);\n yield this.updatePeerRoom(event.content.message.sender, event.content.roomId);\n const splits = event.content.message.content.split(':');\n const payload = Buffer.from(splits[splits.length - 1], 'hex');\n if (payload.length >=\n sodium.crypto_secretbox_NONCEBYTES + sodium.crypto_secretbox_MACBYTES) {\n try {\n const pairingResponse = JSON.parse(yield openCryptobox(payload, this.keyPair.publicKey, this.keyPair.privateKey));\n messageCallback(Object.assign(Object.assign({}, pairingResponse), { senderId: yield getSenderId(pairingResponse.publicKey) }));\n }\n catch (decryptionError) {\n /* NO-OP. We try to decode every message, but some might not be addressed to us. */\n }\n }\n }\n }));\n });\n }\n waitForJoin(roomId, retry = 0) {\n return __awaiter(this, void 0, void 0, function* () {\n // Rooms are updated as new events come in. `client.getRoomById` only accesses memory, it does not do any network requests.\n // TODO: Improve to listen to \"JOIN\" event\n const room = yield (yield this.client.promise).getRoomById(roomId);\n logger.log(`waitForJoin`, `Currently ${room.members.length} members, we need at least 2`);\n if (room.members.length >= 2 || room.members.length === 0) {\n // 0 means it's an unknown room, we don't need to wait\n return;\n }\n else {\n if (retry <= 200) {\n // On mobile, due to app switching, we potentially have to wait for a long time\n logger.log(`Waiting for join... Try: ${retry}`);\n return new Promise((resolve) => {\n setTimeout(() => __awaiter(this, void 0, void 0, function* () {\n resolve(this.waitForJoin(roomId, retry + 1));\n }), 100 * (retry > 50 ? 10 : 1)); // After the initial 5 seconds, retry only once per second\n });\n }\n else {\n throw new Error(`No one joined after ${retry} tries.`);\n }\n }\n });\n }\n sendPairingResponse(pairingRequest) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log(`sendPairingResponse`);\n const recipientHash = yield getHexHash(Buffer.from(pairingRequest.publicKey, 'hex'));\n const recipient = recipientString(recipientHash, pairingRequest.relayServer);\n // We force room creation here because if we \"re-pair\", we need to make sure that we don't send it to an old room.\n const roomId = yield (yield this.client.promise).createTrustedPrivateRoom(recipient);\n yield this.updatePeerRoom(recipient, roomId);\n // Before we send the message, we have to wait for the join to be accepted.\n yield this.waitForJoin(roomId); // TODO: This can probably be removed because we are now waiting inside the get room method\n // TODO: remove v1 backwards-compatibility\n const message = typeof pairingRequest.version === 'undefined'\n ? yield this.getPublicKey() // v1\n : JSON.stringify(yield this.getPairingResponseInfo(pairingRequest)); // v2\n const encryptedMessage = yield this.encryptMessageAsymmetric(pairingRequest.publicKey, message);\n const msg = ['@channel-open', recipient, encryptedMessage].join(':');\n (yield this.client.promise).sendTextMessage(roomId, msg).catch((error) => __awaiter(this, void 0, void 0, function* () {\n if (error.errcode === 'M_FORBIDDEN') {\n // Room doesn't exist\n logger.log(`sendMessage`, `M_FORBIDDEN`, error);\n yield this.deleteRoomIdFromRooms(roomId);\n const newRoomId = yield this.getRelevantRoom(recipient);\n (yield this.client.promise).sendTextMessage(newRoomId, msg).catch((error2) => __awaiter(this, void 0, void 0, function* () {\n logger.log(`sendMessage`, `inner error`, error2);\n }));\n }\n else {\n logger.log(`sendMessage`, `not forbidden`, error);\n }\n }));\n });\n }\n isTextMessage(content) {\n return content.message.type === MatrixMessageType.TEXT;\n }\n updateRelayServer(sender) {\n return __awaiter(this, void 0, void 0, function* () {\n // Sender is in the format \"@pubkeyhash:relayserver.tld\"\n const split = sender.split(':');\n if (split.length < 2 || !split[0].startsWith('@')) {\n throw new Error('Invalid sender');\n }\n const senderHash = split.shift();\n const relayServer = split.join(':');\n const manager = localStorage.getItem('beacon:communication-peers-dapp')\n ? new PeerManager(this.storage, StorageKey.TRANSPORT_P2P_PEERS_DAPP)\n : new PeerManager(this.storage, StorageKey.TRANSPORT_P2P_PEERS_WALLET);\n const peers = yield manager.getPeers();\n const promiseArray = peers.map((peer) => __awaiter(this, void 0, void 0, function* () {\n const hash = `@${yield getHexHash(Buffer.from(peer.publicKey, 'hex'))}`;\n if (hash === senderHash) {\n if (peer.relayServer !== relayServer) {\n peer.relayServer = relayServer;\n yield manager.addPeer(peer);\n }\n }\n }));\n yield Promise.all(promiseArray);\n });\n }\n isChannelOpenMessage(content) {\n return __awaiter(this, void 0, void 0, function* () {\n return content.message.content.startsWith(`@channel-open:@${yield getHexHash(Buffer.from(yield this.getPublicKey(), 'hex'))}`);\n });\n }\n isSender(event, senderPublicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n return event.content.message.sender.startsWith(`@${yield getHexHash(Buffer.from(senderPublicKey, 'hex'))}`);\n });\n }\n getRelevantRoom(recipient) {\n return __awaiter(this, void 0, void 0, function* () {\n const roomIds = yield this.storage.get(StorageKey.MATRIX_PEER_ROOM_IDS);\n let roomId = roomIds[recipient];\n if (!roomId) {\n logger.log(`getRelevantRoom`, `No room found for peer ${recipient}, checking joined ones.`);\n const room = yield this.getRelevantJoinedRoom(recipient);\n roomId = room.id;\n roomIds[recipient] = room.id;\n yield this.storage.set(StorageKey.MATRIX_PEER_ROOM_IDS, roomIds);\n }\n logger.log(`getRelevantRoom`, `Using room ${roomId}`);\n return roomId;\n });\n }\n getRelevantJoinedRoom(recipient) {\n return __awaiter(this, void 0, void 0, function* () {\n const joinedRooms = yield (yield this.client.promise).joinedRooms;\n logger.log('checking joined rooms', joinedRooms, recipient);\n const relevantRooms = joinedRooms\n .filter((roomElement) => !this.ignoredRooms.some((id) => roomElement.id === id))\n .filter((roomElement) => roomElement.members.some((member) => member === recipient));\n let room;\n // We always create a new room if one has been ignored. This is because if we ignore one, we know the server state changed.\n // So we cannot trust the current sync state. This can be removed once we have a method to properly clear and refresh the sync state.\n if (relevantRooms.length === 0 || this.ignoredRooms.length > 0) {\n logger.log(`getRelevantJoinedRoom`, `no relevant rooms found, creating new one`);\n const roomId = yield (yield this.client.promise).createTrustedPrivateRoom(recipient);\n room = yield (yield this.client.promise).getRoomById(roomId);\n logger.log(`getRelevantJoinedRoom`, `waiting for other party to join room: ${room.id}`);\n yield this.waitForJoin(roomId);\n logger.log(`getRelevantJoinedRoom`, `new room created and peer invited: ${room.id}`);\n }\n else {\n room = relevantRooms[0];\n logger.log(`getRelevantJoinedRoom`, `channel already open, reusing room ${room.id}`);\n }\n return room;\n });\n }\n}\n//# sourceMappingURL=P2PCommunicationClient.js.map","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\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","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","// 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/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\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/*<replacement>*/\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/*</replacement>*/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* <replacement> */\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/* </replacement> */\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","/**\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 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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","'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","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n defaultEncoding = 'utf-8'\n} else if (process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\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 Buffer = require('buffer').Buffer;\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 }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\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 parseHex (str, start, end) {\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 <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\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 var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\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\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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\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 curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\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 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');\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\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\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 Buffer = require('buffer').Buffer;\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 }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\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 parseHex (str, start, end) {\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 <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\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 var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\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\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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\nexports.blobConstructor = false\ntry {\n\tnew Blob([new ArrayBuffer(1)])\n\texports.blobConstructor = true\n} catch (e) {}\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.\n// Safari 7.1 appears to have fixed this bug.\nvar haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined'\nvar haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice)\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || (haveArrayBuffer && checkTypeSupport('arraybuffer'))\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer &&\n\tcheckTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nexports.vbArray = isFunction(global.VBArray)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, fetchTimer) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(new Buffer(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tif (result.done) {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(new Buffer(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text:vbarray': // For IE9\n\t\t\tif (xhr.readyState !== rStates.DONE)\n\t\t\t\tbreak\n\t\t\ttry {\n\t\t\t\t// This fails in IE8\n\t\t\t\tresponse = new global.VBArray(xhr.responseBody).toArray()\n\t\t\t} catch (e) {}\n\t\t\tif (response !== null) {\n\t\t\t\tself.push(new Buffer(response))\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Falls through in IE8\t\n\t\tcase 'text':\n\t\t\ttry { // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4\n\t\t\t\tresponse = xhr.responseText\n\t\t\t} catch (e) {\n\t\t\t\tself._mode = 'text:vbarray'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = new Buffer(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tself.push(null)\n\t}\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","const ERROR_MSG_INPUT = 'Input must be an string, Buffer or Uint8Array'\n\n// For convenience, let people hash a string, not just a Uint8Array\nfunction normalizeInput (input) {\n let ret\n if (input instanceof Uint8Array) {\n ret = input\n } else if (input instanceof Buffer) {\n ret = new Uint8Array(input)\n } else if (typeof input === 'string') {\n ret = new Uint8Array(Buffer.from(input, 'utf8'))\n } else {\n throw new Error(ERROR_MSG_INPUT)\n }\n return ret\n}\n\n// Converts a Uint8Array to a hexadecimal string\n// For example, toHex([255, 0, 255]) returns \"ff00ff\"\nfunction toHex (bytes) {\n return Array.prototype.map\n .call(bytes, function (n) {\n return (n < 16 ? '0' : '') + n.toString(16)\n })\n .join('')\n}\n\n// Converts any value in [0...2^32-1] to an 8-character hex string\nfunction uint32ToHex (val) {\n return (0x100000000 + val).toString(16).substring(1)\n}\n\n// For debugging: prints out hash state in the same format as the RFC\n// sample computation exactly, so that you can diff\nfunction debugPrint (label, arr, size) {\n let msg = '\\n' + label + ' = '\n for (let i = 0; i < arr.length; i += 2) {\n if (size === 32) {\n msg += uint32ToHex(arr[i]).toUpperCase()\n msg += ' '\n msg += uint32ToHex(arr[i + 1]).toUpperCase()\n } else if (size === 64) {\n msg += uint32ToHex(arr[i + 1]).toUpperCase()\n msg += uint32ToHex(arr[i]).toUpperCase()\n } else throw new Error('Invalid size ' + size)\n if (i % 6 === 4) {\n msg += '\\n' + new Array(label.length + 4).join(' ')\n } else if (i < arr.length - 2) {\n msg += ' '\n }\n }\n console.log(msg)\n}\n\n// For performance testing: generates N bytes of input, hashes M times\n// Measures and prints MB/second hash performance each time\nfunction testSpeed (hashFn, N, M) {\n let startMs = new Date().getTime()\n\n const input = new Uint8Array(N)\n for (let i = 0; i < N; i++) {\n input[i] = i % 256\n }\n const genMs = new Date().getTime()\n console.log('Generated random input in ' + (genMs - startMs) + 'ms')\n startMs = genMs\n\n for (let i = 0; i < M; i++) {\n const hashHex = hashFn(input)\n const hashMs = new Date().getTime()\n const ms = hashMs - startMs\n startMs = hashMs\n console.log('Hashed in ' + ms + 'ms: ' + hashHex.substring(0, 20) + '...')\n console.log(\n Math.round((N / (1 << 20) / (ms / 1000)) * 100) / 100 + ' MB PER SECOND'\n )\n }\n}\n\nmodule.exports = {\n normalizeInput: normalizeInput,\n toHex: toHex,\n debugPrint: debugPrint,\n testSpeed: testSpeed\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","var __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};\nimport * as sodium from 'libsodium-wrappers';\nimport { windowRef } from '../../MockWindow';\nimport { ExtensionMessageTarget, Origin, Serializer } from '../..';\nimport { openCryptobox } from '../../utils/crypto';\nimport { getSenderId } from '../../utils/get-sender-id';\nimport { MessageBasedClient } from './MessageBasedClient';\n/**\n * @internalapi\n *\n *\n */\nexport class PostMessageClient extends MessageBasedClient {\n constructor() {\n super(...arguments);\n this.activeListeners = new Map();\n }\n init() {\n return __awaiter(this, void 0, void 0, function* () {\n this.subscribeToMessages().catch(console.error);\n });\n }\n listenForEncryptedMessage(senderPublicKey, messageCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.activeListeners.has(senderPublicKey)) {\n return;\n }\n const callbackFunction = (message, context) => __awaiter(this, void 0, void 0, function* () {\n try {\n const decryptedMessage = yield this.decryptMessage(senderPublicKey, message.encryptedPayload);\n // console.log('calculated sender ID', await getSenderId(senderPublicKey))\n // TODO: Add check for correct decryption key / sender ID\n messageCallback(decryptedMessage, context);\n }\n catch (decryptionError) {\n /* NO-OP. We try to decode every message, but some might not be addressed to us. */\n }\n });\n this.activeListeners.set(senderPublicKey, callbackFunction);\n });\n }\n sendMessage(message, peer) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const payload = yield this.encryptMessage(peer.publicKey, message);\n const targetId = (_a = peer) === null || _a === void 0 ? void 0 : _a.extensionId;\n // if no targetId, we remove peer\n const msg = {\n target: ExtensionMessageTarget.EXTENSION,\n encryptedPayload: payload,\n targetId\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n windowRef.postMessage(msg, windowRef.location.origin);\n });\n }\n listenForChannelOpening(messageCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fn = (event) => __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n const data = (_a = event === null || event === void 0 ? void 0 : event.data) === null || _a === void 0 ? void 0 : _a.message;\n if (data &&\n data.target === ExtensionMessageTarget.PAGE &&\n (yield this.isChannelOpenMessage(data))) {\n const payload = Buffer.from(data.payload, 'hex');\n if (payload.length >=\n sodium.crypto_secretbox_NONCEBYTES + sodium.crypto_secretbox_MACBYTES) {\n try {\n const pairingResponse = JSON.parse(yield openCryptobox(payload, this.keyPair.publicKey, this.keyPair.privateKey));\n messageCallback(Object.assign(Object.assign({}, pairingResponse), { senderId: yield getSenderId(pairingResponse.publicKey), extensionId: (_b = event === null || event === void 0 ? void 0 : event.data) === null || _b === void 0 ? void 0 : _b.sender.id }));\n }\n catch (decryptionError) {\n /* NO-OP. We try to decode every message, but some might not be addressed to us. */\n }\n }\n }\n });\n windowRef.addEventListener('message', fn);\n });\n }\n sendPairingRequest(id) {\n return __awaiter(this, void 0, void 0, function* () {\n const message = {\n target: ExtensionMessageTarget.EXTENSION,\n payload: yield new Serializer().serialize(yield this.getPairingRequestInfo()),\n targetId: id\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n windowRef.postMessage(message, windowRef.location.origin);\n });\n }\n isChannelOpenMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return typeof message === 'object' && message.hasOwnProperty('payload');\n });\n }\n subscribeToMessages() {\n return __awaiter(this, void 0, void 0, function* () {\n windowRef.addEventListener('message', (message) => {\n if (typeof message === 'object' && message) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data = message.data;\n if (data.message && data.message.target === ExtensionMessageTarget.PAGE) {\n this.activeListeners.forEach((listener) => {\n listener(data.message, {\n origin: Origin.EXTENSION,\n id: data.sender.id || ''\n });\n });\n }\n }\n });\n });\n }\n}\n//# sourceMappingURL=PostMessageClient.js.map","'use strict';\n\nmodule.exports = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n\n if (node === null) return 'null';\n\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n })(data);\n};\n","//@flow\n\nimport { sign, isSupported } from \"u2f-api\";\nimport Transport from \"@ledgerhq/hw-transport\";\nimport { log } from \"@ledgerhq/logs\";\nimport { TransportError } from \"@ledgerhq/errors\";\n\nfunction wrapU2FTransportError(originalError, message, id) {\n const err = new TransportError(message, id);\n // $FlowFixMe\n err.originalError = originalError;\n return err;\n}\n\nfunction wrapApdu(apdu: Buffer, key: Buffer) {\n const result = Buffer.alloc(apdu.length);\n for (let i = 0; i < apdu.length; i++) {\n result[i] = apdu[i] ^ key[i % key.length];\n }\n return result;\n}\n\n// Convert from normal to web-safe, strip trailing \"=\"s\nconst webSafe64 = (base64: string) =>\n base64.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n\n// Convert from web-safe to normal, add trailing \"=\"s\nconst normal64 = (base64: string) =>\n base64.replace(/-/g, \"+\").replace(/_/g, \"/\") +\n \"==\".substring(0, (3 * base64.length) % 4);\n\nfunction attemptExchange(\n apdu: Buffer,\n timeoutMillis: number,\n scrambleKey: Buffer,\n unwrap: boolean\n): Promise<Buffer> {\n const keyHandle = wrapApdu(apdu, scrambleKey);\n const challenge = Buffer.from(\n \"0000000000000000000000000000000000000000000000000000000000000000\",\n \"hex\"\n );\n const signRequest = {\n version: \"U2F_V2\",\n keyHandle: webSafe64(keyHandle.toString(\"base64\")),\n challenge: webSafe64(challenge.toString(\"base64\")),\n appId: location.origin,\n };\n log(\"apdu\", \"=> \" + apdu.toString(\"hex\"));\n return sign(signRequest, timeoutMillis / 1000).then((response) => {\n const { signatureData } = response;\n if (typeof signatureData === \"string\") {\n const data = Buffer.from(normal64(signatureData), \"base64\");\n let result;\n if (!unwrap) {\n result = data;\n } else {\n result = data.slice(5);\n }\n log(\"apdu\", \"<= \" + result.toString(\"hex\"));\n return result;\n } else {\n throw response;\n }\n });\n}\n\nlet transportInstances = [];\n\nfunction emitDisconnect() {\n transportInstances.forEach((t) => t.emit(\"disconnect\"));\n transportInstances = [];\n}\n\nfunction isTimeoutU2FError(u2fError) {\n return u2fError.metaData.code === 5;\n}\n\n/**\n * U2F web Transport implementation\n * @example\n * import TransportU2F from \"@ledgerhq/hw-transport-u2f\";\n * ...\n * TransportU2F.create().then(transport => ...)\n */\nexport default class TransportU2F extends Transport<null> {\n static isSupported = isSupported;\n\n /*\n */\n static list = (): * =>\n // this transport is not discoverable but we are going to guess if it is here with isSupported()\n isSupported().then((supported) => (supported ? [null] : []));\n\n /*\n */\n static listen = (observer: *) => {\n let unsubscribed = false;\n isSupported().then((supported) => {\n if (unsubscribed) return;\n if (supported) {\n observer.next({ type: \"add\", descriptor: null });\n observer.complete();\n } else {\n observer.error(\n new TransportError(\n \"U2F browser support is needed for Ledger. \" +\n \"Please use Chrome, Opera or Firefox with a U2F extension. \" +\n \"Also make sure you're on an HTTPS connection\",\n \"U2FNotSupported\"\n )\n );\n }\n });\n return {\n unsubscribe: () => {\n unsubscribed = true;\n },\n };\n };\n\n scrambleKey: Buffer;\n\n unwrap: boolean = true;\n\n /**\n * static function to create a new Transport from a connected Ledger device discoverable via U2F (browser support)\n */\n static async open(_: *, _openTimeout?: number = 5000): Promise<TransportU2F> {\n return new TransportU2F();\n }\n\n constructor() {\n super();\n transportInstances.push(this);\n }\n\n /**\n * Exchange with the device using APDU protocol.\n * @param apdu\n * @returns a promise of apdu response\n */\n async exchange(apdu: Buffer): Promise<Buffer> {\n try {\n return await attemptExchange(\n apdu,\n this.exchangeTimeout,\n this.scrambleKey,\n this.unwrap\n );\n } catch (e) {\n const isU2FError = typeof e.metaData === \"object\";\n if (isU2FError) {\n if (isTimeoutU2FError(e)) {\n emitDisconnect();\n }\n // the wrapping make error more usable and \"printable\" to the end user.\n throw wrapU2FTransportError(\n e,\n \"Failed to sign with Ledger device: U2F \" + e.metaData.type,\n \"U2F_\" + e.metaData.code\n );\n } else {\n throw e;\n }\n }\n }\n\n /**\n */\n setScrambleKey(scrambleKey: string) {\n this.scrambleKey = Buffer.from(scrambleKey, \"ascii\");\n }\n\n /**\n */\n setUnwrap(unwrap: boolean) {\n this.unwrap = unwrap;\n }\n\n close(): Promise<void> {\n // u2f have no way to clean things up\n return Promise.resolve();\n }\n}\n","//@flow\n\nimport EventEmitter from \"events\";\nimport type { DeviceModel } from \"@ledgerhq/devices\";\nimport {\n TransportRaceCondition,\n TransportError,\n StatusCodes,\n getAltStatusMessage,\n TransportStatusError,\n} from \"@ledgerhq/errors\";\n\nexport {\n TransportError,\n TransportStatusError,\n StatusCodes,\n getAltStatusMessage,\n};\n\n/**\n */\nexport type Subscription = { unsubscribe: () => void };\n\n/**\n */\nexport type Device = Object;\n\n/**\n * type: add or remove event\n * descriptor: a parameter that can be passed to open(descriptor)\n * deviceModel: device info on the model (is it a nano s, nano x, ...)\n * device: transport specific device info\n */\nexport type DescriptorEvent<Descriptor> = {\n type: \"add\" | \"remove\",\n descriptor: Descriptor,\n deviceModel?: ?DeviceModel,\n device?: Device,\n};\n/**\n */\nexport type Observer<Ev> = $ReadOnly<{\n next: (event: Ev) => mixed,\n error: (e: any) => mixed,\n complete: () => mixed,\n}>;\n\n/**\n * Transport defines the generic interface to share between node/u2f impl\n * A **Descriptor** is a parametric type that is up to be determined for the implementation.\n * it can be for instance an ID, an file path, a URL,...\n */\nexport default class Transport<Descriptor> {\n exchangeTimeout: number = 30000;\n unresponsiveTimeout: number = 15000;\n deviceModel: ?DeviceModel = null;\n\n /**\n * Statically check if a transport is supported on the user's platform/browser.\n */\n static +isSupported: () => Promise<boolean>;\n\n /**\n * List once all available descriptors. For a better granularity, checkout `listen()`.\n * @return a promise of descriptors\n * @example\n * TransportFoo.list().then(descriptors => ...)\n */\n static +list: () => Promise<Array<Descriptor>>;\n\n /**\n * Listen all device events for a given Transport. The method takes an Obverver of DescriptorEvent and returns a Subscription (according to Observable paradigm https://github.com/tc39/proposal-observable )\n * a DescriptorEvent is a `{ descriptor, type }` object. type can be `\"add\"` or `\"remove\"` and descriptor is a value you can pass to `open(descriptor)`.\n * each listen() call will first emit all potential device already connected and then will emit events can come over times,\n * for instance if you plug a USB device after listen() or a bluetooth device become discoverable.\n * @param observer is an object with a next, error and complete function (compatible with observer pattern)\n * @return a Subscription object on which you can `.unsubscribe()` to stop listening descriptors.\n * @example\nconst sub = TransportFoo.listen({\n next: e => {\n if (e.type===\"add\") {\n sub.unsubscribe();\n const transport = await TransportFoo.open(e.descriptor);\n ...\n }\n },\n error: error => {},\n complete: () => {}\n})\n */\n static +listen: (\n observer: Observer<DescriptorEvent<Descriptor>>\n ) => Subscription;\n\n /**\n * attempt to create a Transport instance with potentially a descriptor.\n * @param descriptor: the descriptor to open the transport with.\n * @param timeout: an optional timeout\n * @return a Promise of Transport instance\n * @example\nTransportFoo.open(descriptor).then(transport => ...)\n */\n static +open: (\n descriptor: Descriptor,\n timeout?: number\n ) => Promise<Transport<Descriptor>>;\n\n /**\n * low level api to communicate with the device\n * This method is for implementations to implement but should not be directly called.\n * Instead, the recommanded way is to use send() method\n * @param apdu the data to send\n * @return a Promise of response data\n */\n exchange(_apdu: Buffer): Promise<Buffer> {\n throw new Error(\"exchange not implemented\");\n }\n\n /**\n * set the \"scramble key\" for the next exchanges with the device.\n * Each App can have a different scramble key and they internally will set it at instanciation.\n * @param key the scramble key\n */\n setScrambleKey(_key: string) {}\n\n /**\n * close the exchange with the device.\n * @return a Promise that ends when the transport is closed.\n */\n close(): Promise<void> {\n return Promise.resolve();\n }\n\n _events = new EventEmitter();\n\n /**\n * Listen to an event on an instance of transport.\n * Transport implementation can have specific events. Here is the common events:\n * * `\"disconnect\"` : triggered if Transport is disconnected\n */\n on(eventName: string, cb: Function) {\n this._events.on(eventName, cb);\n }\n\n /**\n * Stop listening to an event on an instance of transport.\n */\n off(eventName: string, cb: Function) {\n this._events.removeListener(eventName, cb);\n }\n\n emit(event: string, ...args: *) {\n this._events.emit(event, ...args);\n }\n\n /**\n * Enable or not logs of the binary exchange\n */\n setDebugMode() {\n console.warn(\n \"setDebugMode is deprecated. use @ledgerhq/logs instead. No logs are emitted in this anymore.\"\n );\n }\n\n /**\n * Set a timeout (in milliseconds) for the exchange call. Only some transport might implement it. (e.g. U2F)\n */\n setExchangeTimeout(exchangeTimeout: number) {\n this.exchangeTimeout = exchangeTimeout;\n }\n\n /**\n * Define the delay before emitting \"unresponsive\" on an exchange that does not respond\n */\n setExchangeUnresponsiveTimeout(unresponsiveTimeout: number) {\n this.unresponsiveTimeout = unresponsiveTimeout;\n }\n\n /**\n * wrapper on top of exchange to simplify work of the implementation.\n * @param cla\n * @param ins\n * @param p1\n * @param p2\n * @param data\n * @param statusList is a list of accepted status code (shorts). [0x9000] by default\n * @return a Promise of response buffer\n */\n send = async (\n cla: number,\n ins: number,\n p1: number,\n p2: number,\n data: Buffer = Buffer.alloc(0),\n statusList: Array<number> = [StatusCodes.OK]\n ): Promise<Buffer> => {\n if (data.length >= 256) {\n throw new TransportError(\n \"data.length exceed 256 bytes limit. Got: \" + data.length,\n \"DataLengthTooBig\"\n );\n }\n const response = await this.exchange(\n Buffer.concat([\n Buffer.from([cla, ins, p1, p2]),\n Buffer.from([data.length]),\n data,\n ])\n );\n const sw = response.readUInt16BE(response.length - 2);\n if (!statusList.some((s) => s === sw)) {\n throw new TransportStatusError(sw);\n }\n return response;\n };\n\n /**\n * create() allows to open the first descriptor available or\n * throw if there is none or if timeout is reached.\n * This is a light helper, alternative to using listen() and open() (that you may need for any more advanced usecase)\n * @example\nTransportFoo.create().then(transport => ...)\n */\n static create(\n openTimeout?: number = 3000,\n listenTimeout?: number\n ): Promise<Transport<Descriptor>> {\n return new Promise((resolve, reject) => {\n let found = false;\n const sub = this.listen({\n next: (e) => {\n found = true;\n if (sub) sub.unsubscribe();\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n this.open(e.descriptor, openTimeout).then(resolve, reject);\n },\n error: (e) => {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n reject(e);\n },\n complete: () => {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n if (!found) {\n reject(\n new TransportError(\n this.ErrorMessage_NoDeviceFound,\n \"NoDeviceFound\"\n )\n );\n }\n },\n });\n const listenTimeoutId = listenTimeout\n ? setTimeout(() => {\n sub.unsubscribe();\n reject(\n new TransportError(\n this.ErrorMessage_ListenTimeout,\n \"ListenTimeout\"\n )\n );\n }, listenTimeout)\n : null;\n });\n }\n\n exchangeBusyPromise: ?Promise<void>;\n\n // $FlowFixMe\n exchangeAtomicImpl = async (f) => {\n if (this.exchangeBusyPromise) {\n throw new TransportRaceCondition(\n \"An action was already pending on the Ledger device. Please deny or reconnect.\"\n );\n }\n let resolveBusy;\n const busyPromise = new Promise((r) => {\n resolveBusy = r;\n });\n this.exchangeBusyPromise = busyPromise;\n let unresponsiveReached = false;\n const timeout = setTimeout(() => {\n unresponsiveReached = true;\n this.emit(\"unresponsive\");\n }, this.unresponsiveTimeout);\n try {\n const res = await f();\n if (unresponsiveReached) {\n this.emit(\"responsive\");\n }\n return res;\n } finally {\n clearTimeout(timeout);\n if (resolveBusy) resolveBusy();\n this.exchangeBusyPromise = null;\n }\n };\n\n decorateAppAPIMethods(\n self: Object,\n methods: Array<string>,\n scrambleKey: string\n ) {\n for (let methodName of methods) {\n self[methodName] = this.decorateAppAPIMethod(\n methodName,\n self[methodName],\n self,\n scrambleKey\n );\n }\n }\n\n _appAPIlock = null;\n decorateAppAPIMethod<R, A: any[]>(\n methodName: string,\n f: (...args: A) => Promise<R>,\n ctx: *,\n scrambleKey: string\n ): (...args: A) => Promise<R> {\n return async (...args) => {\n const { _appAPIlock } = this;\n if (_appAPIlock) {\n return Promise.reject(\n new TransportError(\n \"Ledger Device is busy (lock \" + _appAPIlock + \")\",\n \"TransportLocked\"\n )\n );\n }\n try {\n this._appAPIlock = methodName;\n this.setScrambleKey(scrambleKey);\n return await f.apply(ctx, args);\n } finally {\n this._appAPIlock = null;\n }\n };\n }\n\n static ErrorMessage_ListenTimeout = \"No Ledger device found (timeout)\";\n static ErrorMessage_NoDeviceFound = \"No Ledger device found\";\n}\n","/**\n * @packageDocumentation\n * @module @taquito/ledger-signer\n */\n\nimport { Signer } from '@taquito/taquito';\nimport Transport from '@ledgerhq/hw-transport';\nimport { b58cencode, prefix, Prefix } from '@taquito/utils';\nimport {\n appendWatermark,\n transformPathToBuffer,\n compressPublicKey,\n chunkOperation,\n validateResponse,\n extractValue\n} from './utils';\nimport sodium from 'libsodium-wrappers';\n\nexport type LedgerTransport = Pick<Transport<string>, 'send' | 'decorateAppAPIMethods' | 'setScrambleKey'>\n\nexport enum DerivationType {\n ED25519 = 0x00, // tz1\n SECP256K1 = 0x01, // tz2\n P256 = 0x02 // tz3\n};\n\nexport const HDPathTemplate = (account: number) => {\n return `44'/1729'/${account}'/0'`;\n};\n\nexport { VERSION } from './version';\n\n/**\n *\n * @description Implementation of the Signer interface that will allow signing operation from a Ledger Nano device \n *\n * @param transport A transport instance from LedgerJS libraries depending on the platform used (e.g. Web, Node)\n * @param path The ledger derivation path (default is \"44'/1729'/0'/0'\")\n * @param prompt Whether to prompt the ledger for public key (default is true)\n * @param derivationType The value which defines the curve to use (DerivationType.ED25519(default), DerivationType.SECP256K1, DerivationType.P256)\n * \n * @example\n * ```\n * import TransportNodeHid from \"@ledgerhq/hw-transport-node-hid\";\n * const transport = await TransportNodeHid.create();\n * const ledgerSigner = new LedgerSigner(transport, \"44'/1729'/0'/0'\", false, DerivationType.ED25519);\n * ```\n * \n * @example\n * ```\n * import TransportU2F from \"@ledgerhq/hw-transport-u2f\";\n * const transport = await TransportU2F.create();\n * const ledgerSigner = new LedgerSigner(transport, \"44'/1729'/0'/0'\", true, DerivationType.SECP256K1);\n * ```\n */\nexport class LedgerSigner implements Signer {\n\n // constants for APDU requests (https://github.com/obsidiansystems/ledger-app-tezos/blob/master/APDUs.md)\n private readonly CLA = 0x80; // Instruction class (always 0x80)\n private readonly INS_GET_PUBLIC_KEY = 0x02; // Instruction code to get the ledger’s internal public key without prompt\n private readonly INS_PROMPT_PUBLIC_KEY = 0x03; // Instruction code to get the ledger’s internal public key with prompt\n private readonly INS_SIGN = 0x04; // Sign a message with the ledger’s key\n private readonly FIRST_MESSAGE_SEQUENCE = 0X00;\n private readonly LAST_MESSAGE_SEQUENCE = 0X81;\n private readonly OTHER_MESSAGE_SEQUENCE = 0X01;\n\n private _publicKey?: string;\n private _publicKeyHash?: string;\n constructor(\n private transport: LedgerTransport,\n private path: string = \"44'/1729'/0'/0'\",\n private prompt: boolean = true,\n private derivationType: DerivationType = DerivationType.ED25519\n ) {\n this.transport.setScrambleKey('XTZ')\n if (!path.startsWith(\"44'/1729'\")) {\n throw new Error(\"The derivation path must start with 44'/1729'\");\n }\n if (!Object.values(DerivationType).includes(derivationType)) {\n throw new Error(\"The derivation type must be DerivationType.ED25519, DerivationType.SECP256K1 or DerivationType.P256\")\n }\n }\n\n async publicKeyHash(): Promise<string> {\n if (!this._publicKeyHash) {\n await this.publicKey();\n }\n if (this._publicKeyHash) {\n return this._publicKeyHash;\n }\n throw new Error(`Unable to get the public key hash.`)\n }\n\n async publicKey(): Promise<string> {\n if (this._publicKey) {\n return this._publicKey;\n }\n const responseLedger = await this.getLedgerpublicKey();\n const publicKeyLength = responseLedger[0];\n const rawPublicKey = responseLedger.slice(1, 1 + publicKeyLength);\n const compressedPublicKey = compressPublicKey(rawPublicKey, this.derivationType);\n\n const prefixes = this.getPrefixes();\n const publicKey = b58cencode(compressedPublicKey, prefixes.prefPk);\n await sodium.ready;\n const publicKeyHash = b58cencode(sodium.crypto_generichash(20, compressedPublicKey), prefixes.prefPkh);\n\n this._publicKey = publicKey;\n this._publicKeyHash = publicKeyHash;\n return publicKey;\n }\n\n private async getLedgerpublicKey(): Promise<Buffer> {\n try {\n let ins = this.INS_PROMPT_PUBLIC_KEY;\n if (this.prompt === false) {\n ins = this.INS_GET_PUBLIC_KEY;\n }\n const responseLedger = await this.transport.send(this.CLA, ins, this.FIRST_MESSAGE_SEQUENCE, this.derivationType, transformPathToBuffer(this.path));\n return responseLedger;\n }\n catch (error) {\n throw new Error(\"Unable to retrieve public key\")\n }\n }\n\n async secretKey(): Promise<string> {\n throw new Error('Secret key cannot be exposed');\n }\n\n async sign(bytes: string, watermark?: Uint8Array) {\n const watermarkedBytes = appendWatermark(bytes, watermark);\n const watermarkedBytes2buff = Buffer.from(watermarkedBytes, \"hex\");\n let messageToSend = [];\n messageToSend.push(transformPathToBuffer(this.path));\n messageToSend = chunkOperation(messageToSend, watermarkedBytes2buff)\n let ledgerResponse = await this.signWithLedger(messageToSend);\n let signature;\n if (this.derivationType === DerivationType.ED25519) {\n signature = ledgerResponse.slice(0, ledgerResponse.length - 2).toString('hex');\n } else {\n if (!validateResponse(ledgerResponse)) {\n throw new Error('Cannot parse ledger response.');\n }\n const idxLengthRVal = 3; // Third element of response is length of r value\n const rValue = extractValue(idxLengthRVal, ledgerResponse)\n let idxLengthSVal = rValue.idxValueStart + rValue.length + 1;\n const sValue = extractValue(idxLengthSVal, ledgerResponse);\n const signatureBuffer = Buffer.concat([rValue.buffer, sValue.buffer])\n signature = signatureBuffer.toString('hex');\n }\n\n return {\n bytes,\n sig: b58cencode(signature, prefix[Prefix.SIG]),\n prefixSig: b58cencode(signature, this.getPrefixes().prefSig),\n sbytes: bytes + signature\n };\n }\n\n private async signWithLedger(message: any): Promise<Buffer> {\n // first element of the message represents the path\n let ledgerResponse = await this.transport.send(this.CLA, this.INS_SIGN, this.FIRST_MESSAGE_SEQUENCE, this.derivationType, message[0]);\n for (let i = 1; i < message.length; i++) {\n let p1 = (i === message.length - 1) ? this.LAST_MESSAGE_SEQUENCE : this.OTHER_MESSAGE_SEQUENCE;\n ledgerResponse = await this.transport.send(this.CLA, this.INS_SIGN, p1, this.derivationType, message[i]);\n }\n return ledgerResponse;\n }\n\n private getPrefixes() {\n if (this.derivationType === DerivationType.ED25519) {\n return {\n prefPk: prefix[Prefix.EDPK],\n prefPkh: prefix[Prefix.TZ1],\n prefSig: prefix[Prefix.EDSIG]\n }\n } else if (this.derivationType === DerivationType.SECP256K1) {\n return {\n prefPk: prefix[Prefix.SPPK],\n prefPkh: prefix[Prefix.TZ2],\n prefSig: prefix[Prefix.SPSIG]\n }\n } else {\n return {\n prefPk: prefix[Prefix.P2PK],\n prefPkh: prefix[Prefix.TZ3],\n prefSig: prefix[Prefix.P2SIG]\n }\n }\n\n }\n}","/* eslint-disable prefer-arrow/prefer-arrow-functions */\n/**\n * A helper function to improve typings of object keys\n *\n * @param obj Object\n */\nexport function keys(obj) {\n return Object.keys(obj);\n}\n//# sourceMappingURL=utils.js.map","import { isCreateEvent, isJoinEvent, isMessageEvent } from '../utils/events';\nimport { MatrixMessage } from './MatrixMessage';\nexport var MatrixRoomStatus;\n(function (MatrixRoomStatus) {\n MatrixRoomStatus[MatrixRoomStatus[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n MatrixRoomStatus[MatrixRoomStatus[\"JOINED\"] = 1] = \"JOINED\";\n MatrixRoomStatus[MatrixRoomStatus[\"INVITED\"] = 2] = \"INVITED\";\n MatrixRoomStatus[MatrixRoomStatus[\"LEFT\"] = 3] = \"LEFT\";\n})(MatrixRoomStatus || (MatrixRoomStatus = {}));\nexport class MatrixRoom {\n constructor(id, status = MatrixRoomStatus.UNKNOWN, members = [], messages = []) {\n this.id = id;\n this.status = status;\n this.members = members;\n this.messages = messages;\n }\n /**\n * Reconstruct rooms from a sync response\n *\n * @param roomSync\n */\n static fromSync(roomSync) {\n function create(rooms, creator) {\n return Object.entries(rooms).map(([id, room]) => creator(id, room));\n }\n return [\n ...create(roomSync.join, MatrixRoom.fromJoined),\n ...create(roomSync.invite, MatrixRoom.fromInvited),\n ...create(roomSync.leave, MatrixRoom.fromLeft)\n ];\n }\n /**\n * Reconstruct a room from an ID or object\n *\n * @param roomOrId\n * @param status\n */\n static from(roomOrId, status) {\n return typeof roomOrId === 'string'\n ? new MatrixRoom(roomOrId, status || MatrixRoomStatus.UNKNOWN)\n : status !== undefined\n ? new MatrixRoom(roomOrId.id, status, roomOrId.members, roomOrId.messages)\n : roomOrId;\n }\n /**\n * Merge new and old state and remove duplicates\n *\n * @param newState\n * @param previousState\n */\n static merge(newState, previousState) {\n if (!previousState || previousState.id !== newState.id) {\n return MatrixRoom.from(newState);\n }\n return new MatrixRoom(newState.id, newState.status, [...previousState.members, ...newState.members].filter((member, index, array) => array.indexOf(member) === index), [...previousState.messages, ...newState.messages]);\n }\n /**\n * Create a room from a join\n *\n * @param id\n * @param joined\n */\n static fromJoined(id, joined) {\n const events = [...joined.state.events, ...joined.timeline.events];\n const members = MatrixRoom.getMembersFromEvents(events);\n const messages = MatrixRoom.getMessagesFromEvents(events);\n return new MatrixRoom(id, MatrixRoomStatus.JOINED, members, messages);\n }\n /**\n * Create a room from an invite\n *\n * @param id\n * @param invited\n */\n static fromInvited(id, invited) {\n const members = MatrixRoom.getMembersFromEvents(invited.invite_state.events);\n return new MatrixRoom(id, MatrixRoomStatus.INVITED, members);\n }\n /**\n * Create a room from a leave\n *\n * @param id\n * @param left\n */\n static fromLeft(id, left) {\n const events = [...left.state.events, ...left.timeline.events];\n const members = MatrixRoom.getMembersFromEvents(events);\n const messages = MatrixRoom.getMessagesFromEvents(events);\n return new MatrixRoom(id, MatrixRoomStatus.LEFT, members, messages);\n }\n /**\n * Extract members from an event\n *\n * @param events\n */\n static getMembersFromEvents(events) {\n return MatrixRoom.getUniqueEvents(events.filter((event) => isCreateEvent(event) || isJoinEvent(event)))\n .map((event) => event.sender)\n .filter((member, index, array) => array.indexOf(member) === index);\n }\n /**\n * Extract messages from an event\n *\n * @param events\n */\n static getMessagesFromEvents(events) {\n return MatrixRoom.getUniqueEvents(events.filter(isMessageEvent))\n .map((event) => MatrixMessage.from(event))\n .filter(Boolean);\n }\n /**\n * Get unique events and remove duplicates\n *\n * @param events\n */\n static getUniqueEvents(events) {\n const eventIds = {};\n const uniqueEvents = [];\n events.forEach((event, index) => {\n const eventId = event.event_id;\n if (eventId === undefined || !(eventId in eventIds)) {\n if (eventId !== undefined) {\n eventIds[eventId] = index;\n }\n uniqueEvents.push(event);\n }\n });\n return uniqueEvents;\n }\n}\n//# sourceMappingURL=MatrixRoom.js.map","var __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};\nimport { keys } from '../utils/utils';\nimport { MatrixRoom, MatrixRoomStatus } from './models/MatrixRoom';\nimport { StorageKey } from '..';\nconst PRESERVED_FIELDS = ['syncToken', 'rooms'];\n/**\n * The class managing the local state of matrix\n */\nexport class MatrixClientStore {\n constructor(storage) {\n this.storage = storage;\n /**\n * The state of the matrix client\n */\n this.state = {\n isRunning: false,\n userId: undefined,\n deviceId: undefined,\n txnNo: 0,\n accessToken: undefined,\n syncToken: undefined,\n pollingTimeout: undefined,\n pollingRetries: 0,\n rooms: {}\n };\n /**\n * Listeners that will be called when the state changes\n */\n this.onStateChangedListeners = new Map();\n /**\n * A promise that resolves once the client is ready\n */\n this.waitReadyPromise = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n try {\n yield this.initFromStorage();\n resolve();\n }\n catch (error) {\n reject(error);\n }\n }));\n }\n /**\n * Get an item from the state\n *\n * @param key\n */\n get(key) {\n return this.state[key];\n }\n /**\n * Get the room from an ID or room instance\n *\n * @param roomOrId\n */\n getRoom(roomOrId) {\n const room = MatrixRoom.from(roomOrId, MatrixRoomStatus.UNKNOWN);\n return this.state.rooms[room.id] || room;\n }\n /**\n * Update the state with a partial state\n *\n * @param stateUpdate\n */\n update(stateUpdate) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.waitReady();\n const oldState = Object.assign({}, this.state);\n this.setState(stateUpdate);\n this.updateStorage(stateUpdate);\n this.notifyListeners(oldState, this.state, stateUpdate);\n });\n }\n /**\n * Register listeners that are called once the state has changed\n *\n * @param listener\n * @param subscribed\n */\n onStateChanged(listener, ...subscribed) {\n if (subscribed.length > 0) {\n subscribed.forEach((key) => {\n this.onStateChangedListeners.set(key, listener);\n });\n }\n else {\n this.onStateChangedListeners.set('all', listener);\n }\n }\n /**\n * A promise that resolves once the client is ready\n */\n waitReady() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.waitReadyPromise;\n });\n }\n /**\n * Read state from storage\n */\n initFromStorage() {\n return __awaiter(this, void 0, void 0, function* () {\n const preserved = yield this.storage.get(StorageKey.MATRIX_PRESERVED_STATE);\n this.setState(preserved);\n });\n }\n /**\n * Prepare data before persisting it in storage\n *\n * @param toStore\n */\n prepareData(toStore) {\n const requiresPreparation = ['rooms'];\n const toStoreCopy = requiresPreparation.some((key) => toStore[key] !== undefined)\n ? JSON.parse(JSON.stringify(toStore))\n : toStore;\n // there is no need for saving messages in a persistent storage\n Object.values(toStoreCopy.rooms || {}).forEach((room) => {\n room.messages = [];\n });\n return toStoreCopy;\n }\n /**\n * Persist state in storage\n *\n * @param stateUpdate\n */\n updateStorage(stateUpdate) {\n const updatedCachedFields = Object.entries(stateUpdate).filter(([key, value]) => PRESERVED_FIELDS.includes(key) && Boolean(value));\n if (updatedCachedFields.length > 0) {\n const filteredState = {};\n PRESERVED_FIELDS.forEach((key) => {\n filteredState[key] = this.state[key];\n });\n this.storage.set(StorageKey.MATRIX_PRESERVED_STATE, this.prepareData(filteredState));\n }\n }\n /**\n * Set the state\n *\n * @param partialState\n */\n setState(partialState) {\n this.state = {\n isRunning: partialState.isRunning || this.state.isRunning,\n userId: partialState.userId || this.state.userId,\n deviceId: partialState.deviceId || this.state.deviceId,\n txnNo: partialState.txnNo || this.state.txnNo,\n accessToken: partialState.accessToken || this.state.accessToken,\n syncToken: partialState.syncToken || this.state.syncToken,\n pollingTimeout: partialState.pollingTimeout || this.state.pollingTimeout,\n pollingRetries: partialState.pollingRetries || this.state.pollingRetries,\n rooms: this.mergeRooms(this.state.rooms, partialState.rooms)\n };\n }\n /**\n * Merge room records and eliminate duplicates\n *\n * @param oldRooms\n * @param _newRooms\n */\n mergeRooms(oldRooms, _newRooms) {\n if (!_newRooms) {\n return oldRooms;\n }\n const newRooms = Array.isArray(_newRooms) ? _newRooms : Object.values(_newRooms);\n const merged = Object.assign({}, oldRooms);\n newRooms.forEach((newRoom) => {\n merged[newRoom.id] = MatrixRoom.merge(newRoom, oldRooms[newRoom.id]);\n });\n return merged;\n }\n /**\n * Notify listeners of state changes\n *\n * @param oldState\n * @param newState\n * @param stateChange\n */\n notifyListeners(oldState, newState, stateChange) {\n const listenForAll = this.onStateChangedListeners.get('all');\n if (listenForAll) {\n listenForAll(oldState, newState, stateChange);\n }\n keys(stateChange)\n .filter((key) => stateChange[key] !== undefined)\n .forEach((key) => {\n const listener = this.onStateChangedListeners.get(key);\n if (listener) {\n listener(oldState, newState, stateChange);\n }\n });\n }\n}\n//# sourceMappingURL=MatrixClientStore.js.map","var __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};\nimport axios from 'axios';\nimport { keys } from '../utils/utils';\nconst CLIENT_API_R0 = '/_matrix/client/r0';\n/**\n * Handling the HTTP connection to the matrix synapse node\n */\nexport class MatrixHttpClient {\n constructor(baseUrl) {\n this.baseUrl = baseUrl;\n this.cancelTokenSource = axios.CancelToken.source();\n }\n /**\n * Get data from the synapse node\n *\n * @param endpoint\n * @param options\n */\n get(endpoint, params, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.send('GET', endpoint, options, params);\n });\n }\n /**\n * Post data to the synapse node\n *\n * @param endpoint\n * @param body\n * @param options\n * @param params\n */\n post(endpoint, body, options, params) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.send('POST', endpoint, options, params, body);\n });\n }\n /**\n * Put data to the synapse node\n *\n * @param endpoint\n * @param body\n * @param options\n * @param params\n */\n put(endpoint, body, options, params) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.send('PUT', endpoint, options, params, body);\n });\n }\n cancelAllRequests() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.cancelTokenSource.cancel('Manually cancelled');\n });\n }\n /**\n * Send a request to the synapse node\n *\n * @param method\n * @param endpoint\n * @param config\n * @param requestParams\n * @param data\n */\n send(method, endpoint, config, requestParams, data) {\n return __awaiter(this, void 0, void 0, function* () {\n const headers = config ? this.getHeaders(config) : undefined;\n const params = requestParams ? this.getParams(requestParams) : undefined;\n let response;\n try {\n response = yield axios.request({\n method,\n url: endpoint,\n baseURL: this.apiUrl(CLIENT_API_R0),\n headers,\n data,\n params,\n cancelToken: this.cancelTokenSource.token\n });\n }\n catch (axiosError) {\n throw axiosError.response.data;\n }\n return response.data;\n });\n }\n /**\n * Get the headers based on the options object\n *\n * @param options\n */\n getHeaders(options) {\n const headers = {};\n const entries = [];\n if (options.accessToken) {\n entries.push(['Authorization', `Bearer ${options.accessToken}`]);\n }\n if (entries.length === 0) {\n return undefined;\n }\n for (const [key, value] of entries) {\n headers[key] = value;\n }\n return headers;\n }\n /**\n * Get parameters\n *\n * @param _params\n */\n getParams(_params) {\n if (!_params) {\n return undefined;\n }\n const params = Object.assign(_params, {});\n keys(params).forEach((key) => params[key] === undefined && delete params[key]);\n return params;\n }\n /**\n * Construct API URL\n */\n apiUrl(...parts) {\n const apiBase = this.baseUrl.endsWith('/')\n ? this.baseUrl.substr(0, this.baseUrl.length - 1)\n : this.baseUrl;\n const apiParts = parts.map((path) => (path.startsWith('/') ? path.substr(1) : path));\n return [apiBase, ...apiParts].join('/');\n }\n}\n//# sourceMappingURL=MatrixHttpClient.js.map","var __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};\nimport { MatrixRoomStatus } from '../models/MatrixRoom';\n/**\n * A service to help with matrix room management\n */\nexport class MatrixRoomService {\n constructor(httpClient) {\n this.httpClient = httpClient;\n }\n /**\n * Create a room\n *\n * @param accessToken\n * @param config\n */\n createRoom(accessToken, config = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.httpClient.post('/createRoom', config, { accessToken });\n });\n }\n /**\n * Invite a user to a room\n *\n * @param accessToken\n * @param user\n * @param room\n */\n inviteToRoom(accessToken, user, room) {\n return __awaiter(this, void 0, void 0, function* () {\n if (room.status !== MatrixRoomStatus.JOINED && room.status !== MatrixRoomStatus.UNKNOWN) {\n return Promise.reject(`User is not a member of room ${room.id}.`);\n }\n return this.httpClient.post(`/rooms/${encodeURIComponent(room.id)}/invite`, { user_id: user }, { accessToken });\n });\n }\n /**\n * Join a specific room\n *\n * @param accessToken\n * @param room\n */\n joinRoom(accessToken, room) {\n return __awaiter(this, void 0, void 0, function* () {\n if (room.status === MatrixRoomStatus.JOINED) {\n return Promise.resolve({ room_id: room.id });\n }\n return this.httpClient.post(`/rooms/${encodeURIComponent(room.id)}/join`, {}, { accessToken });\n });\n }\n /**\n * Get all joined rooms\n *\n * @param accessToken\n */\n getJoinedRooms(accessToken) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.httpClient.get(`/joined_rooms`, undefined, { accessToken });\n });\n }\n}\n//# sourceMappingURL=MatrixRoomService.js.map","var __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};\nexport class MatrixUserService {\n constructor(httpClient) {\n this.httpClient = httpClient;\n }\n /**\n * Log in to the matrix node with username and password\n *\n * @param user\n * @param password\n * @param deviceId\n */\n login(user, password, deviceId) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.httpClient.post('/login', {\n type: 'm.login.password',\n identifier: {\n type: 'm.id.user',\n user\n },\n password,\n device_id: deviceId\n });\n });\n }\n}\n//# sourceMappingURL=MatrixUserService.js.map","var __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};\n/**\n * A service to help with matrix event management\n */\nexport class MatrixEventService {\n constructor(httpClient) {\n this.httpClient = httpClient;\n this.cachedPromises = new Map();\n }\n /**\n * Get the latest state from the matrix node\n *\n * @param accessToken\n * @param options\n */\n sync(accessToken, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.withCache('sync', () => this.httpClient.get('/sync', {\n timeout: options ? options.pollingTimeout : undefined,\n since: options ? options.syncToken : undefined\n }, { accessToken }));\n });\n }\n /**\n * Send a message to a room\n *\n * @param accessToken\n * @param room\n * @param content\n * @param txnId\n */\n sendMessage(accessToken, roomId, content, txnId) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => this.scheduleEvent({\n accessToken,\n roomId,\n type: 'm.room.message',\n content,\n txnId,\n onSuccess: resolve,\n onError: reject\n }));\n });\n }\n /**\n * Schedules an event to be sent to the node\n *\n * @param event\n */\n scheduleEvent(event) {\n // TODO: actual scheduling\n this.sendEvent(event);\n }\n /**\n * Send an event to the matrix node\n *\n * @param scheduledEvent\n */\n sendEvent(scheduledEvent) {\n return __awaiter(this, void 0, void 0, function* () {\n const { roomId, type, txnId, content, accessToken } = scheduledEvent;\n try {\n const response = yield this.httpClient.put(`/rooms/${encodeURIComponent(roomId)}/send/${type}/${encodeURIComponent(txnId)}`, content, { accessToken });\n scheduledEvent.onSuccess(response);\n }\n catch (error) {\n scheduledEvent.onError(error);\n }\n });\n }\n /**\n * Check the cache when interacting with the Matrix node, if there is an already ongoing call for the specified key, return its promise instead of duplicating the call.\n *\n * @param key\n * @param promiseProvider\n */\n withCache(key, promiseProvider) {\n let promise = this.cachedPromises.get(key);\n if (!promise) {\n promise = promiseProvider().finally(() => {\n this.cachedPromises.delete(key);\n });\n this.cachedPromises.set(key, promise);\n }\n return promise;\n }\n}\n//# sourceMappingURL=MatrixEventService.js.map","import { EventEmitter } from 'events';\nimport { keys } from '../utils/utils';\nimport { MatrixRoomStatus } from './models/MatrixRoom';\nimport { MatrixClientEventType } from './models/MatrixClientEvent';\nexport class MatrixClientEventEmitter extends EventEmitter {\n constructor() {\n super(...arguments);\n this.eventEmitProviders = new Map([\n [MatrixClientEventType.INVITE, () => [this.isInvite, this.emitInvite.bind(this)]],\n [MatrixClientEventType.MESSAGE, () => [this.isMessage, this.emitMessage.bind(this)]]\n ]);\n }\n /**\n * This method is called every time the state is changed\n *\n * @param _oldState\n * @param _newState\n * @param stateChange\n */\n onStateChanged(_oldState, _newState, stateChange) {\n for (const event of keys(MatrixClientEventType)) {\n this.emitIfEvent(MatrixClientEventType[event], stateChange);\n }\n }\n /**\n * Emit the message if we have listeners registered for that type\n *\n * @param eventType\n * @param object\n */\n emitIfEvent(eventType, object) {\n const provider = this.eventEmitProviders.get(eventType);\n if (provider) {\n const [predicate, emitter] = provider();\n if (predicate(object)) {\n emitter(eventType, object);\n }\n }\n }\n /**\n * Emit a client event\n *\n * @param eventType\n * @param content\n */\n emitClientEvent(eventType, content, timestamp) {\n this.emit(eventType, {\n type: eventType,\n content,\n timestamp\n });\n }\n /**\n * Check if event is an invite\n *\n * @param stateChange\n */\n isInvite(stateChange) {\n return stateChange.rooms\n ? stateChange.rooms.some((room) => room.status === MatrixRoomStatus.INVITED)\n : false;\n }\n /**\n * Emit an invite\n *\n * @param eventType\n * @param stateChange\n */\n emitInvite(eventType, stateChange) {\n stateChange.rooms\n .filter((room) => room.status === MatrixRoomStatus.INVITED)\n .map((room) => [room.id, room.members])\n .forEach(([id, members]) => {\n this.emitClientEvent(eventType, {\n roomId: id,\n members: members\n });\n });\n }\n /**\n * Check if event is a message\n *\n * @param stateChange\n */\n isMessage(stateChange) {\n return stateChange.rooms ? stateChange.rooms.some((room) => room.messages.length > 0) : false;\n }\n /**\n * Emit an event to all rooms\n *\n * @param eventType\n * @param stateChange\n */\n emitMessage(eventType, stateChange) {\n stateChange.rooms\n .filter((room) => room.messages.length > 0)\n .map((room) => room.messages.map((message) => [room.id, message, message.timestamp]))\n .reduce((flatten, toFlatten) => flatten.concat(toFlatten), [])\n .forEach(([roomId, message, timestamp]) => {\n this.emitClientEvent(eventType, {\n roomId,\n message\n }, timestamp);\n });\n }\n}\n//# sourceMappingURL=MatrixClientEventEmitter.js.map","var __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};\nimport { Logger } from '../utils/Logger';\nimport { ExposedPromise } from '../utils/exposed-promise';\nimport { MatrixClientStore } from './MatrixClientStore';\nimport { MatrixHttpClient } from './MatrixHttpClient';\nimport { MatrixRoom, MatrixRoomStatus } from './models/MatrixRoom';\nimport { MatrixRoomService } from './services/MatrixRoomService';\nimport { MatrixUserService } from './services/MatrixUserService';\nimport { MatrixEventService } from './services/MatrixEventService';\nimport { MatrixClientEventEmitter } from './MatrixClientEventEmitter';\nconst logger = new Logger('MatrixClient');\nconst IMMEDIATE_POLLING_RETRIES = 3;\nconst RETRY_INTERVAL = 5000;\n/**\n * The matrix client used to connect to the matrix network\n */\nexport class MatrixClient {\n constructor(store, eventEmitter, userService, roomService, eventService, httpClient) {\n this.store = store;\n this.eventEmitter = eventEmitter;\n this.userService = userService;\n this.roomService = roomService;\n this.eventService = eventService;\n this.httpClient = httpClient;\n this.isActive = true;\n this._isReady = new ExposedPromise();\n this.store.onStateChanged((oldState, newState, stateChange) => {\n this.eventEmitter.onStateChanged(oldState, newState, stateChange);\n }, 'rooms');\n }\n /**\n * Create a matrix client based on the options provided\n *\n * @param config\n */\n static create(config) {\n const store = new MatrixClientStore(config.storage);\n const eventEmitter = new MatrixClientEventEmitter();\n const httpClient = new MatrixHttpClient(config.baseUrl);\n const accountService = new MatrixUserService(httpClient);\n const roomService = new MatrixRoomService(httpClient);\n const eventService = new MatrixEventService(httpClient);\n return new MatrixClient(store, eventEmitter, accountService, roomService, eventService, httpClient);\n }\n /**\n * Return all the rooms we are currently part of\n */\n get joinedRooms() {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n resolve(Object.values(this.store.get('rooms')).filter((room) => room.status === MatrixRoomStatus.JOINED));\n }));\n }\n /**\n * Return all the rooms to which we have received invitations\n */\n get invitedRooms() {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n resolve(Object.values(this.store.get('rooms')).filter((room) => room.status === MatrixRoomStatus.INVITED));\n }));\n }\n /**\n * Return all the rooms that we left\n */\n get leftRooms() {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n resolve(Object.values(this.store.get('rooms')).filter((room) => room.status === MatrixRoomStatus.LEFT));\n }));\n }\n /**\n * Initiate the connection to the matrix node and log in\n *\n * @param user\n */\n start(user) {\n return __awaiter(this, void 0, void 0, function* () {\n const response = yield this.userService.login(user.id, user.password, user.deviceId);\n yield this.store.update({\n accessToken: response.access_token\n });\n const initialPollingResult = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n yield this.poll(0, (pollingResponse) => __awaiter(this, void 0, void 0, function* () {\n if (!this.store.get('isRunning')) {\n resolve();\n }\n yield this.store.update({\n isRunning: true,\n syncToken: pollingResponse.next_batch,\n pollingTimeout: 30000,\n pollingRetries: 0,\n rooms: MatrixRoom.fromSync(pollingResponse.rooms)\n });\n }), (error) => __awaiter(this, void 0, void 0, function* () {\n if (!this.store.get('isRunning')) {\n reject(error);\n }\n yield this.store.update({\n isRunning: false,\n pollingRetries: this.store.get('pollingRetries') + 1\n });\n }));\n }));\n initialPollingResult\n .then(() => {\n this._isReady.resolve();\n })\n .catch(console.error);\n return initialPollingResult;\n });\n }\n isConnected() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._isReady.promise;\n });\n }\n /**\n * Stop all running requests\n */\n stop() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log(`MATRIX CLIENT STOPPED`);\n this.isActive = false;\n this._isReady = new ExposedPromise();\n return this.httpClient.cancelAllRequests();\n });\n }\n /**\n * Subscribe to new matrix events\n *\n * @param event\n * @param listener\n */\n subscribe(event, listener) {\n this.eventEmitter.on(event, listener);\n }\n /**\n * Unsubscribe from matrix events\n *\n * @param event\n * @param listener\n */\n unsubscribe(event, listener) {\n if (listener) {\n this.eventEmitter.removeListener(event, listener);\n }\n }\n /**\n * Unsubscribe from all matrix events of this type\n *\n * @param event\n * @param listener\n */\n unsubscribeAll(event) {\n this.eventEmitter.removeAllListeners(event);\n }\n getRoomById(id) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n return this.store.getRoom(id);\n });\n }\n /**\n * Create a private room with the supplied members\n *\n * @param members Members that will be in the room\n */\n createTrustedPrivateRoom(...members) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n return this.requiresAuthorization('createRoom', (accessToken) => __awaiter(this, void 0, void 0, function* () {\n const response = yield this.roomService.createRoom(accessToken, {\n room_version: '5',\n invite: members,\n preset: 'public_chat',\n is_direct: true\n });\n return response.room_id;\n }));\n });\n }\n /**\n * Invite user to rooms\n *\n * @param user The user to be invited\n * @param roomsOrIds The rooms the user will be invited to\n */\n inviteToRooms(user, ...roomsOrIds) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n yield this.requiresAuthorization('invite', (accessToken) => Promise.all(roomsOrIds.map((roomOrId) => {\n const room = this.store.getRoom(roomOrId);\n this.roomService\n .inviteToRoom(accessToken, user, room)\n .catch((error) => logger.warn('inviteToRooms', error));\n })));\n });\n }\n /**\n * Join rooms\n *\n * @param roomsOrIds\n */\n joinRooms(...roomsOrIds) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n yield this.requiresAuthorization('join', (accessToken) => Promise.all(roomsOrIds.map((roomOrId) => {\n const room = this.store.getRoom(roomOrId);\n return this.roomService.joinRoom(accessToken, room);\n })));\n });\n }\n /**\n * Send a text message\n *\n * @param roomOrId\n * @param message\n */\n sendTextMessage(roomId, message) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n yield this.requiresAuthorization('send', (accessToken) => __awaiter(this, void 0, void 0, function* () {\n const txnId = yield this.createTxnId();\n return this.eventService.sendMessage(accessToken, roomId, {\n msgtype: 'm.text',\n body: message\n }, txnId);\n }));\n });\n }\n /**\n * Poll the server to get the latest data and get notified of changes\n *\n * @param interval\n * @param onSyncSuccess\n * @param onSyncError\n */\n poll(interval, onSyncSuccess, onSyncError) {\n return __awaiter(this, void 0, void 0, function* () {\n const store = this.store;\n const sync = this.sync.bind(this);\n const pollSync = (resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n let syncingRetries = 0;\n try {\n const response = yield sync();\n onSyncSuccess(response);\n }\n catch (error) {\n onSyncError(error);\n syncingRetries = store.get('pollingRetries');\n // console.warn('Could not sync:', error)\n if (this.isActive) {\n logger.log(`Retry syncing... ${syncingRetries} retries so far`);\n }\n }\n finally {\n if (this.isActive) {\n setTimeout(() => __awaiter(this, void 0, void 0, function* () {\n yield pollSync(resolve, reject);\n }), syncingRetries > IMMEDIATE_POLLING_RETRIES ? RETRY_INTERVAL + interval : interval);\n }\n else {\n reject(new Error(`Syncing stopped manually.`));\n }\n }\n });\n return new Promise(pollSync);\n });\n }\n /**\n * Get state from server\n */\n sync() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.requiresAuthorization('sync', (accessToken) => __awaiter(this, void 0, void 0, function* () {\n return this.eventService.sync(accessToken, {\n pollingTimeout: this.store.get('pollingTimeout'),\n syncToken: this.store.get('syncToken')\n });\n }));\n });\n }\n /**\n * A helper method that makes sure an access token is provided\n *\n * @param name\n * @param action\n */\n requiresAuthorization(name, action) {\n return __awaiter(this, void 0, void 0, function* () {\n const storedToken = this.store.get('accessToken');\n if (!storedToken) {\n return Promise.reject(`${name} requires authorization but no access token has been provided.`);\n }\n return action(storedToken);\n });\n }\n /**\n * Create a transaction ID\n */\n createTxnId() {\n return __awaiter(this, void 0, void 0, function* () {\n const timestamp = new Date().getTime();\n const counter = this.store.get('txnNo');\n yield this.store.update({\n txnNo: counter + 1\n });\n return `m${timestamp}.${counter}`;\n });\n }\n}\n//# sourceMappingURL=MatrixClient.js.map","/** @license React v17.0.1\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.1\";\n","/** @license React v17.0.1\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(y(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,wa=60108,xa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60121,Ga=60128,Ha=60129,Ia=60130,Ja=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;sa=E(\"react.element\");ta=E(\"react.portal\");ua=E(\"react.fragment\");wa=E(\"react.strict_mode\");xa=E(\"react.profiler\");ya=E(\"react.provider\");za=E(\"react.context\");Aa=E(\"react.forward_ref\");Ba=E(\"react.suspense\");Ca=E(\"react.suspense_list\");Da=E(\"react.memo\");Ea=E(\"react.lazy\");Fa=E(\"react.block\");E(\"react.scope\");Ga=E(\"react.opaque.id\");Ha=E(\"react.debug_trace_mode\");Ia=E(\"react.offscreen\");Ja=E(\"react.legacy_hidden\")}\nvar Ka=\"function\"===typeof Symbol&&Symbol.iterator;function La(a){if(null===a||\"object\"!==typeof a)return null;a=Ka&&a[Ka]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var Ma;function Na(a){if(void 0===Ma)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);Ma=b&&b[1]||\"\"}return\"\\n\"+Ma+a}var Oa=!1;\nfunction Pa(a,b){if(!a||Oa)return\"\";Oa=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(y(91));return m({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(y(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(a,b,c,d,e){return a(b,c,d,e)}function Ib(){}var Jb=Gb,Kb=!1,Lb=!1;function Mb(){if(null!==zb||null!==Ab)Ib(),Fb()}\nfunction Nb(a,b,c){if(Lb)return a(b,c);Lb=!0;try{return Jb(a,b,c)}finally{Lb=!1,Mb()}}\nfunction Ob(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(y(231,b,typeof c));return c}var Pb=!1;if(fa)try{var Qb={};Object.defineProperty(Qb,\"passive\",{get:function(){Pb=!0}});window.addEventListener(\"test\",Qb,Qb);window.removeEventListener(\"test\",Qb,Qb)}catch(a){Pb=!1}function Rb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(n){this.onError(n)}}var Sb=!1,Tb=null,Ub=!1,Vb=null,Wb={onError:function(a){Sb=!0;Tb=a}};function Xb(a,b,c,d,e,f,g,h,k){Sb=!1;Tb=null;Rb.apply(Wb,arguments)}\nfunction Yb(a,b,c,d,e,f,g,h,k){Xb.apply(this,arguments);if(Sb){if(Sb){var l=Tb;Sb=!1;Tb=null}else throw Error(y(198));Ub||(Ub=!0,Vb=l)}}function Zb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function $b(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function ac(a){if(Zb(a)!==a)throw Error(y(188));}\nfunction bc(a){var b=a.alternate;if(!b){b=Zb(a);if(null===b)throw Error(y(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return ac(e),a;if(f===d)return ac(e),b;f=f.sibling}throw Error(y(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(y(189));}}if(c.alternate!==d)throw Error(y(190));}if(3!==c.tag)throw Error(y(188));return c.stateNode.current===c?a:b}function cc(a){a=bc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}var ec,fc,gc,hc,ic=!1,jc=[],kc=null,lc=null,mc=null,nc=new Map,oc=new Map,pc=[],qc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction rc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}function sc(a,b){switch(a){case \"focusin\":case \"focusout\":kc=null;break;case \"dragenter\":case \"dragleave\":lc=null;break;case \"mouseover\":case \"mouseout\":mc=null;break;case \"pointerover\":case \"pointerout\":nc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":oc.delete(b.pointerId)}}\nfunction tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=rc(b,c,d,e,f),null!==b&&(b=Cb(b),null!==b&&fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction uc(a,b,c,d,e){switch(b){case \"focusin\":return kc=tc(kc,a,b,c,d,e),!0;case \"dragenter\":return lc=tc(lc,a,b,c,d,e),!0;case \"mouseover\":return mc=tc(mc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;nc.set(f,tc(nc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,oc.set(f,tc(oc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction vc(a){var b=wc(a.target);if(null!==b){var c=Zb(b);if(null!==c)if(b=c.tag,13===b){if(b=$b(c),null!==b){a.blockedOn=b;hc(a.lanePriority,function(){r.unstable_runWithPriority(a.priority,function(){gc(c)})});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c)return b=Cb(c),null!==b&&fc(b),a.blockedOn=c,!1;b.shift()}return!0}function zc(a,b,c){xc(a)&&c.delete(b)}\nfunction Ac(){for(ic=!1;0<jc.length;){var a=jc[0];if(null!==a.blockedOn){a=Cb(a.blockedOn);null!==a&&ec(a);break}for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&jc.shift()}null!==kc&&xc(kc)&&(kc=null);null!==lc&&xc(lc)&&(lc=null);null!==mc&&xc(mc)&&(mc=null);nc.forEach(zc);oc.forEach(zc)}\nfunction Bc(a,b){a.blockedOn===b&&(a.blockedOn=null,ic||(ic=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Ac)))}\nfunction Cc(a){function b(b){return Bc(b,a)}if(0<jc.length){Bc(jc[0],a);for(var c=1;c<jc.length;c++){var d=jc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==kc&&Bc(kc,a);null!==lc&&Bc(lc,a);null!==mc&&Bc(mc,a);nc.forEach(b);oc.forEach(b);for(c=0;c<pc.length;c++)d=pc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<pc.length&&(c=pc[0],null===c.blockedOn);)vc(c),null===c.blockedOn&&pc.shift()}\nfunction Dc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ec={animationend:Dc(\"Animation\",\"AnimationEnd\"),animationiteration:Dc(\"Animation\",\"AnimationIteration\"),animationstart:Dc(\"Animation\",\"AnimationStart\"),transitionend:Dc(\"Transition\",\"TransitionEnd\")},Fc={},Gc={};\nfa&&(Gc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ec.animationend.animation,delete Ec.animationiteration.animation,delete Ec.animationstart.animation),\"TransitionEvent\"in window||delete Ec.transitionend.transition);function Hc(a){if(Fc[a])return Fc[a];if(!Ec[a])return a;var b=Ec[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Gc)return Fc[a]=b[c];return a}\nvar Ic=Hc(\"animationend\"),Jc=Hc(\"animationiteration\"),Kc=Hc(\"animationstart\"),Lc=Hc(\"transitionend\"),Mc=new Map,Nc=new Map,Oc=[\"abort\",\"abort\",Ic,\"animationEnd\",Jc,\"animationIteration\",Kc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Lc,\"transitionEnd\",\"waiting\",\"waiting\"];function Pc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Nc.set(d,b);Mc.set(d,e);da(e,[d])}}var Qc=r.unstable_now;Qc();var F=8;\nfunction Rc(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function Sc(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function Tc(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(y(358,a));}}\nfunction Uc(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=Rc(k),e=F):(h&=f,0!==h&&(d=Rc(h),e=F))}else f=c&~g,0!==f?(d=Rc(f),e=F):0!==h&&(d=Rc(h),e=F);if(0===d)return 0;d=31-Vc(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){Rc(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-Vc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction Wc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Xc(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=Yc(24&~b),0===a?Xc(10,b):a;case 10:return a=Yc(192&~b),0===a?Xc(8,b):a;case 8:return a=Yc(3584&~b),0===a&&(a=Yc(4186112&~b),0===a&&(a=512)),a;case 2:return b=Yc(805306368&~b),0===b&&(b=268435456),b}throw Error(y(358,a));}function Yc(a){return a&-a}function Zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0<jc.length&&-1<qc.indexOf(a))a=rc(null,a,b,c,d),jc.push(a);else{var f=yc(a,b,c,d);if(null===f)e&&sc(a,d);else{if(e){if(-1<qc.indexOf(a)){a=rc(f,a,b,c,d);jc.push(a);return}if(uc(f,a,b,c,d))return;sc(a,d)}jd(a,b,d,null,c)}}}}\nfunction yc(a,b,c,d){var e=xb(d);e=wc(e);if(null!==e){var f=Zb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=$b(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}jd(a,b,d,e,c);return null}var kd=null,ld=null,md=null;\nfunction nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}function od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}m(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=m({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=m({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=m({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=m({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=m({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=m({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=m({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=m({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=m({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=m({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=m({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=m({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=fa&&\"CompositionEvent\"in window,be=null;fa&&\"documentMode\"in document&&(be=document.documentMode);var ce=fa&&\"TextEvent\"in window&&!be,de=fa&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(fa){var xe;if(fa){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));a=re;if(Kb)a(b);else{Kb=!0;try{Gb(a,b)}finally{Kb=!1,Mb()}}}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge,Ie=Object.prototype.hasOwnProperty;\nfunction Je(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!Ie.call(b,c[d])||!He(a[c[d]],b[c[d]]))return!1;return!0}function Ke(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Le(a,b){var c=Ke(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Pc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Pc(Oc,2);for(var Ve=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),We=0;We<Ve.length;We++)Nc.set(Ve[We],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Xe=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Ye=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Yb(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}}}if(Ub)throw a=Vb,Ub=!1,Vb=null,a;}\nfunction G(a,b){var c=$e(b),d=a+\"__bubble\";c.has(d)||(af(b,a,2,!1),c.add(d))}var bf=\"_reactListening\"+Math.random().toString(36).slice(2);function cf(a){a[bf]||(a[bf]=!0,ba.forEach(function(b){Ye.has(b)||df(b,!1,a,null);df(b,!0,a,null)}))}\nfunction df(a,b,c,d){var e=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,f=c;\"selectionchange\"===a&&9!==c.nodeType&&(f=c.ownerDocument);if(null!==d&&!b&&Ye.has(a)){if(\"scroll\"!==a)return;e|=2;f=d}var g=$e(f),h=a+\"__\"+(b?\"capture\":\"bubble\");g.has(h)||(b&&(e|=4),af(f,a,e,b),g.add(h))}\nfunction af(a,b,c,d){var e=Nc.get(b);switch(void 0===e?2:e){case 0:e=gd;break;case 1:e=id;break;default:e=hd}c=e.bind(null,b,c,a);e=void 0;!Pb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction jd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Nb(function(){var d=f,e=xb(c),g=[];\na:{var h=Mc.get(a);if(void 0!==h){var k=td,x=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":x=\"focus\";k=Fd;break;case \"focusout\":x=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case Ic:case Jc:case Kc:k=Hd;break;case Lc:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var w=0!==(b&4),z=!w&&\"scroll\"===a,u=w?null!==h?h+\"Capture\":null:h;w=[];for(var t=d,q;null!==\nt;){q=t;var v=q.stateNode;5===q.tag&&null!==v&&(q=v,null!==u&&(v=Ob(t,u),null!=v&&w.push(ef(t,v,q))));if(z)break;t=t.return}0<w.length&&(h=new k(h,x,null,c,e),g.push({event:h,listeners:w}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(x=c.relatedTarget||c.fromElement)&&(wc(x)||x[ff]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(x=c.relatedTarget||c.toElement,k=d,x=x?wc(x):null,null!==\nx&&(z=Zb(x),x!==z||5!==x.tag&&6!==x.tag))x=null}else k=null,x=d;if(k!==x){w=Bd;v=\"onMouseLeave\";u=\"onMouseEnter\";t=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)w=Td,v=\"onPointerLeave\",u=\"onPointerEnter\",t=\"pointer\";z=null==k?h:ue(k);q=null==x?h:ue(x);h=new w(v,t+\"leave\",k,c,e);h.target=z;h.relatedTarget=q;v=null;wc(e)===d&&(w=new w(u,t+\"enter\",x,c,e),w.target=q,w.relatedTarget=z,v=w);z=v;if(k&&x)b:{w=k;u=x;t=0;for(q=w;q;q=gf(q))t++;q=0;for(v=u;v;v=gf(v))q++;for(;0<t-q;)w=gf(w),t--;for(;0<q-t;)u=\ngf(u),q--;for(;t--;){if(w===u||null!==u&&w===u.alternate)break b;w=gf(w);u=gf(u)}w=null}else w=null;null!==k&&hf(g,h,k,w,!1);null!==x&&null!==z&&hf(g,z,x,w,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var J=ve;else if(me(h))if(we)J=Fe;else{J=De;var K=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(J=Ee);if(J&&(J=J(a,d))){ne(g,J,c,e);break a}K&&K(a,h,d);\"focusout\"===a&&(K=h._wrapperState)&&\nK.controlled&&\"number\"===h.type&&bb(h,\"number\",h.value)}K=d?ue(d):window;switch(a){case \"focusin\":if(me(K)||\"true\"===K.contentEditable)Qe=K,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var Q;if(ae)b:{switch(a){case \"compositionstart\":var L=\"onCompositionStart\";break b;case \"compositionend\":L=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":L=\"onCompositionUpdate\";break b}L=void 0}else ie?ge(a,c)&&(L=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(L=\"onCompositionStart\");L&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==L?\"onCompositionEnd\"===L&&ie&&(Q=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),K=oe(d,L),0<K.length&&(L=new Ld(L,a,null,c,e),g.push({event:L,listeners:K}),Q?L.data=Q:(Q=he(c),null!==Q&&(L.data=Q))));if(Q=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),0<d.length&&(e=new Ld(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=Q)}se(g,b)})}function ef(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Ob(a,c),null!=f&&d.unshift(ef(a,f,e)),f=Ob(a,b),null!=f&&d.push(ef(a,f,e)));a=a.return}return d}function gf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction hf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Ob(c,f),null!=k&&g.unshift(ef(c,k,h))):e||(k=Ob(c,f),null!=k&&g.push(ef(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function jf(){}var kf=null,lf=null;function mf(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction nf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var of=\"function\"===typeof setTimeout?setTimeout:void 0,pf=\"function\"===typeof clearTimeout?clearTimeout:void 0;function qf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}\nfunction rf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function sf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var tf=0;function uf(a){return{$$typeof:Ga,toString:a,valueOf:a}}var vf=Math.random().toString(36).slice(2),wf=\"__reactFiber$\"+vf,xf=\"__reactProps$\"+vf,ff=\"__reactContainer$\"+vf,yf=\"__reactEvents$\"+vf;\nfunction wc(a){var b=a[wf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[ff]||c[wf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=sf(a);null!==a;){if(c=a[wf])return c;a=sf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[wf]||a[ff];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(y(33));}function Db(a){return a[xf]||null}\nfunction $e(a){var b=a[yf];void 0===b&&(b=a[yf]=new Set);return b}var zf=[],Af=-1;function Bf(a){return{current:a}}function H(a){0>Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});ag=null}catch(c){throw null!==ag&&(ag=ag.slice(a+1)),Of(Uf,ig),c;}finally{cg=!1}}}var kg=ra.ReactCurrentBatchConfig;function lg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var mg=Bf(null),ng=null,og=null,pg=null;function qg(){pg=og=ng=null}\nfunction rg(a){var b=mg.current;H(mg);a.type._context._currentValue=b}function sg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);a=a.return}}function tg(a,b){ng=a;pg=og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(ug=!0),a.firstContext=null)}\nfunction vg(a,b){if(pg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)pg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===og){if(null===ng)throw Error(y(308));og=b;ng.dependencies={lanes:0,firstContext:b,responders:null}}else og=og.next=b}return a._currentValue}var wg=!1;function xg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction yg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function zg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Ag(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Bg(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction Cg(a,b,c,d){var e=a.updateQueue;wg=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var n=a.alternate;if(null!==n){n=n.updateQueue;var A=n.lastBaseUpdate;A!==g&&(null===A?n.firstBaseUpdate=l:A.next=l,n.lastBaseUpdate=k)}}if(null!==f){A=e.baseState;g=0;n=l=k=null;do{h=f.lane;var p=f.eventTime;if((d&h)===h){null!==n&&(n=n.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var C=a,x=f;h=b;p=c;switch(x.tag){case 1:C=x.payload;if(\"function\"===typeof C){A=C.call(p,A,h);break a}A=C;break a;case 3:C.flags=C.flags&-4097|64;case 0:C=x.payload;h=\"function\"===typeof C?C.call(p,A,h):C;if(null===h||void 0===h)break a;A=m({},A,h);break a;case 2:wg=!0}}null!==f.callback&&(a.flags|=32,h=e.effects,null===h?e.effects=[f]:h.push(f))}else p={eventTime:p,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===n?(l=n=p,k=A):n=n.next=p,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===n&&(k=A);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=n;Dg|=g;a.lanes=g;a.memoizedState=A}}function Eg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(y(191,e));e.call(d)}}}var Fg=(new aa.Component).refs;\nfunction Gg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Kg={isMounted:function(a){return(a=a._reactInternals)?Zb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Hg(),d=Ig(a),e=zg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Ag(a,e);Jg(a,d,c)}};function Lg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Je(c,d)||!Je(e,f):!0}\nfunction Mg(a,b,c){var d=!1,e=Cf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=vg(f):(e=Ff(b)?Df:M.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Ef(a,e):Cf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Kg;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ng(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Kg.enqueueReplaceState(b,b.state,null)}\nfunction Og(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Fg;xg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=vg(f):(f=Ff(b)?Df:M.current,e.context=Ef(a,f));Cg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Gg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Kg.enqueueReplaceState(e,e.state,null),Cg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Pg=Array.isArray;\nfunction Qg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(y(309));var d=c.stateNode}if(!d)throw Error(y(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Fg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(y(284));if(!c._owner)throw Error(y(290,a));}return a}\nfunction Rg(a,b){if(\"textarea\"!==a.type)throw Error(y(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}\nfunction Sg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Tg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Ug(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Qg(a,b,c),d.return=a,d;d=Vg(c.type,c.key,c.props,null,a.mode,d);d.ref=Qg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=\nWg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function n(a,b,c,d,f){if(null===b||7!==b.tag)return b=Xg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function A(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Ug(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=Vg(b.type,b.key,b.props,null,a.mode,c),c.ref=Qg(a,null,b),c.return=a,c;case ta:return b=Wg(b,a.mode,c),b.return=a,b}if(Pg(b)||La(b))return b=Xg(b,\na.mode,c,null),b.return=a,b;Rg(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?c.type===ua?n(a,b,c.props.children,d,e):k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null}if(Pg(c)||La(c))return null!==e?null:n(a,b,c,d,null);Rg(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||\nnull,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,d.type===ua?n(b,a,d.props.children,e,d.key):k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Pg(d)||La(d))return a=a.get(c)||null,n(b,a,d,e,null);Rg(b,d)}return null}function x(e,g,h,k){for(var l=null,t=null,u=g,z=g=0,q=null;null!==u&&z<h.length;z++){u.index>z?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;z<h.length;z++)u=A(e,h[z],k),null!==u&&(g=f(u,g,z),null===t?l=u:t.sibling=u,t=u);return l}for(u=d(e,u);z<h.length;z++)q=C(u,e,z,h[z],k),null!==q&&(a&&null!==q.alternate&&u.delete(null===q.key?z:q.key),g=f(q,g,z),null===t?l=q:t.sibling=q,t=q);a&&u.forEach(function(a){return b(e,a)});return l}function w(e,g,h,k){var l=La(h);if(\"function\"!==typeof l)throw Error(y(150));h=l.call(h);if(null==\nh)throw Error(y(151));for(var t=l=null,u=g,z=g=0,q=null,n=h.next();null!==u&&!n.done;z++,n=h.next()){u.index>z?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;a<th.length;a++)th[a]._workInProgressVersionPrimary=null;th.length=0}var vh=ra.ReactCurrentDispatcher,wh=ra.ReactCurrentBatchConfig,xh=0,R=null,S=null,T=null,yh=!1,zh=!1;function Ah(){throw Error(y(321));}function Bh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Ch(a,b,c,d,e,f){xh=f;R=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;vh.current=null===a||null===a.memoizedState?Dh:Eh;a=c(d,e);if(zh){f=0;do{zh=!1;if(!(25>f))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0<h;){var k=31-Vc(h),v=1<<k;d[k]|=a;h&=~v}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=p.getSnapshot,c=p.setSnapshot;try{c(a(b._source));var d=Ig(w);e.mutableReadLanes|=d&e.pendingLanes}catch(q){c(function(){throw q;})}})},[b,d]);He(C,c)&&He(x,b)&&He(A,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:n},a.dispatch=l=Oh.bind(null,R,a),k.queue=a,k.baseQueue=null,n=Mh(e,b,c),k.memoizedState=k.baseState=n);return n}\nfunction Ph(a,b,c){var d=Ih();return Nh(d,a,b,c)}function Qh(a){var b=Hh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:a};a=a.dispatch=Oh.bind(null,R,a);return[b.memoizedState,a]}\nfunction Rh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=R.updateQueue;null===b?(b={lastEffect:null},R.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function Sh(a){var b=Hh();a={current:a};return b.memoizedState=a}function Th(){return Ih().memoizedState}function Uh(a,b,c,d){var e=Hh();R.flags|=a;e.memoizedState=Rh(1|b,c,void 0,void 0===d?null:d)}\nfunction Vh(a,b,c,d){var e=Ih();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Bh(d,g.deps)){Rh(b,c,f,d);return}}R.flags|=a;e.memoizedState=Rh(1|b,c,f,d)}function Wh(a,b){return Uh(516,4,a,b)}function Xh(a,b){return Vh(516,4,a,b)}function Yh(a,b){return Vh(4,2,a,b)}function Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}\nfunction $h(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,2,Zh.bind(null,b,a),c)}function ai(){}function bi(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function ci(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction di(a,b){var c=eg();gg(98>c?98:c,function(){a(!0)});gg(97<c?97:c,function(){var c=wh.transition;wh.transition=1;try{a(!1),b()}finally{wh.transition=c}})}\nfunction Oh(a,b,c){var d=Hg(),e=Ig(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===R||null!==g&&g===R)zh=yh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(He(k,h))return}catch(l){}finally{}Jg(a,e,d)}}\nvar Gh={readContext:vg,useCallback:Ah,useContext:Ah,useEffect:Ah,useImperativeHandle:Ah,useLayoutEffect:Ah,useMemo:Ah,useReducer:Ah,useRef:Ah,useState:Ah,useDebugValue:Ah,useDeferredValue:Ah,useTransition:Ah,useMutableSource:Ah,useOpaqueIdentifier:Ah,unstable_isNewReconciler:!1},Dh={readContext:vg,useCallback:function(a,b){Hh().memoizedState=[a,void 0===b?null:b];return a},useContext:vg,useEffect:Wh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Uh(4,2,Zh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return Uh(4,2,a,b)},useMemo:function(a,b){var c=Hh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Hh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Oh.bind(null,R,a);return[d.memoizedState,a]},useRef:Sh,useState:Qh,useDebugValue:ai,useDeferredValue:function(a){var b=Qh(a),c=b[0],d=b[1];Wh(function(){var b=wh.transition;\nwh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(!1),b=a[0];a=di.bind(null,a[1]);Sh(a);return[a,b]},useMutableSource:function(a,b,c){var d=Hh();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Nh(d,a,b,c)},useOpaqueIdentifier:function(){if(lh){var a=!1,b=uf(function(){a||(a=!0,c(\"r:\"+(tf++).toString(36)));throw Error(y(355));}),c=Qh(b)[1];0===(R.mode&2)&&(R.flags|=516,Rh(5,function(){c(\"r:\"+(tf++).toString(36))},\nvoid 0,null));return b}b=\"r:\"+(tf++).toString(36);Qh(b);return b},unstable_isNewReconciler:!1},Eh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Kh,useRef:Th,useState:function(){return Kh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Kh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Kh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Kh(Jh)[0]},unstable_isNewReconciler:!1},Fh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Lh,useRef:Th,useState:function(){return Lh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Lh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Lh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Lh(Jh)[0]},unstable_isNewReconciler:!1},ei=ra.ReactCurrentOwner,ug=!1;function fi(a,b,c,d){b.child=null===a?Zg(b,null,c,d):Yg(b,a.child,c,d)}function gi(a,b,c,d,e){c=c.render;var f=b.ref;tg(b,e);d=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,d,e);return b.child}\nfunction ii(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!ji(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ki(a,b,g,d,e,f);a=Vg(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Je,c(e,d)&&a.ref===b.ref))return hi(a,b,f);b.flags|=1;a=Tg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ki(a,b,c,d,e,f){if(null!==a&&Je(a.memoizedProps,d)&&a.ref===b.ref)if(ug=!1,0!==(f&e))0!==(a.flags&16384)&&(ug=!0);else return b.lanes=a.lanes,hi(a,b,f);return li(a,b,c,d,f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},ni(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},ni(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},ni(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,ni(b,d);fi(a,b,e,c);return b.child}\nfunction oi(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=128}function li(a,b,c,d,e){var f=Ff(c)?Df:M.current;f=Ef(b,f);tg(b,e);c=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,c,e);return b.child}\nfunction pi(a,b,c,d,e){if(Ff(c)){var f=!0;Jf(b)}else f=!1;tg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Mg(b,c,d),Og(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=vg(l):(l=Ff(c)?Df:M.current,l=Ef(b,l));var n=c.getDerivedStateFromProps,A=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;A||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ng(b,g,d,l);wg=!1;var p=b.memoizedState;g.state=p;Cg(b,d,g,e);k=b.memoizedState;h!==d||p!==k||N.current||wg?(\"function\"===typeof n&&(Gg(b,c,n,d),k=b.memoizedState),(h=wg||Lg(b,c,h,d,p,k,l))?(A||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:lg(b.type,h);g.props=l;A=b.pendingProps;p=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=vg(k):(k=Ff(c)?Df:M.current,k=Ef(b,k));var C=c.getDerivedStateFromProps;(n=\"function\"===typeof C||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==A||p!==k)&&Ng(b,g,d,k);wg=!1;p=b.memoizedState;g.state=p;Cg(b,d,g,e);var x=b.memoizedState;h!==A||p!==x||N.current||wg?(\"function\"===typeof C&&(Gg(b,c,C,d),x=b.memoizedState),(l=wg||Lg(b,c,l,d,p,x,k))?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),d=!1)}return qi(a,b,c,d,f,e)}\nfunction qi(a,b,c,d,e,f){oi(a,b);var g=0!==(b.flags&64);if(!d&&!g)return e&&Kf(b,c,!1),hi(a,b,f);d=b.stateNode;ei.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Yg(b,a.child,null,f),b.child=Yg(b,null,h,f)):fi(a,b,h,f);b.memoizedState=d.state;e&&Kf(b,c,!0);return b.child}function ri(a){var b=a.stateNode;b.pendingContext?Hf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Hf(a,b.context,!1);eh(a,b.containerInfo)}\nvar si={dehydrated:null,retryLane:0};\nfunction ti(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g;(g=0!==(b.flags&64))||(g=null!==a&&null===a.memoizedState?!1:0!==(e&2));g?(f=!0,b.flags&=-65):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);I(P,e&1);if(null===a){void 0!==d.fallback&&ph(b);a=d.children;e=d.fallback;if(f)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},b.memoizedState=si,a;if(\"number\"===typeof d.unstable_expectedLoadTime)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},\nb.memoizedState=si,b.lanes=33554432,a;c=vi({mode:\"visible\",children:a},b.mode,c,null);c.return=b;return b.child=c}if(null!==a.memoizedState){if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:\n{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}function ui(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=vi(b,e,0,null);c=Xg(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction xi(a,b,c,d){var e=a.child;a=e.sibling;c=Tg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction wi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Tg(g,h);null!==a?d=Tg(a,d):(d=Xg(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);sg(a.return,b)}\nfunction zi(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ai(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;fi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=64;else{if(null!==a&&0!==(a.flags&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&yi(a,c);else if(19===a.tag)yi(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ih(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);zi(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ih(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}zi(b,!0,c,null,f,b.lastEffect);break;case \"together\":zi(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction hi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Dg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(y(153));if(null!==b.child){a=b.child;c=Tg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Tg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Bi,Ci,Di,Ei;\nBi=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Ci=function(){};\nDi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;dh(ah.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"option\":e=eb(a,e);d=eb(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=jf)}vb(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Ga?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ei=function(a,b,c,d){c!==d&&(b.flags|=4)};function Fi(a,b){if(!lh)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction Gi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ff(b.type)&&Gf(),null;case 3:fh();H(N);H(M);uh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)rh(b)?b.flags|=4:d.hydrate||(b.flags|=256);Ci(b);return null;case 5:hh(b);var e=dh(ch.current);c=b.type;if(null!==a&&null!=b.stateNode)Di(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=128);else{if(!d){if(null===\nb.stateNode)throw Error(y(166));return null}a=dh(ah.current);if(rh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[wf]=b;d[xf]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<Xe.length;a++)G(Xe[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Za(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":hb(d,f),G(\"invalid\",d)}vb(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Va(d);cb(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\njf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===kb.html&&(a=lb(c));a===kb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<Xe.length;e++)G(Xe[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);G(\"invalid\",a);break;case \"option\":e=eb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":hb(a,d);e=\ngb(a,d);G(\"invalid\",a);break;default:e=d}vb(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?tb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&ob(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&pb(a,k):\"number\"===typeof k&&pb(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Va(a);cb(a,d,!1);\nbreak;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=jf)}mf(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=128)}return null;case 6:if(a&&null!=b.stateNode)Ei(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(y(166));\nc=dh(ch.current);dh(ah.current);rh(b)?(d=b.stateNode,c=b.memoizedProps,d[wf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[wf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(0!==(b.flags&64))return b.lanes=c,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&rh(b):c=null!==a.memoizedState;if(d&&!c&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1))0===V&&(V=3);else{if(0===V||3===V)V=\n4;null===U||0===(Dg&134217727)&&0===(Hi&134217727)||Ii(U,W)}if(d||c)b.flags|=4;return null;case 4:return fh(),Ci(b),null===a&&cf(b.stateNode.containerInfo),null;case 10:return rg(b),null;case 17:return Ff(b.type)&&Gf(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&64);g=d.rendering;if(null===g)if(f)Fi(d,!1);else{if(0!==V||null!==a&&0!==(a.flags&64))for(a=b.child;null!==a;){g=ih(a);if(null!==g){b.flags|=64;Fi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);\nnull===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,\nf.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;I(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&O()>Ji&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;e<f.length;e+=\n2){var g=f[e],h=f[e+1];\"style\"===g?tb(c,h):\"dangerouslySetInnerHTML\"===g?ob(c,h):\"children\"===g?pb(c,h):qa(c,g,h,b)}switch(a){case \"input\":ab(c,d);break;case \"textarea\":ib(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?fb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?fb(c,!!d.multiple,d.defaultValue,!0):fb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(y(162));b.stateNode.nodeValue=\nb.memoizedProps;return;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Cc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(jj=O(),aj(b.child,!0));kj(b);return;case 19:kj(b);return;case 17:return;case 23:case 24:aj(b,null!==b.memoizedState);return}throw Error(y(163));}function kj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ui);b.forEach(function(b){var d=lj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction mj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var nj=Math.ceil,oj=ra.ReactCurrentDispatcher,pj=ra.ReactCurrentOwner,X=0,U=null,Y=null,W=0,qj=0,rj=Bf(0),V=0,sj=null,tj=0,Dg=0,Hi=0,uj=0,vj=null,jj=0,Ji=Infinity;function wj(){Ji=O()+500}var Z=null,Qi=!1,Ri=null,Ti=null,xj=!1,yj=null,zj=90,Aj=[],Bj=[],Cj=null,Dj=0,Ej=null,Fj=-1,Gj=0,Hj=0,Ij=null,Jj=!1;function Hg(){return 0!==(X&48)?O():-1!==Fj?Fj:Fj=O()}\nfunction Ig(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===eg()?1:2;0===Gj&&(Gj=tj);if(0!==kg.transition){0!==Hj&&(Hj=null!==vj?vj.pendingLanes:0);a=Gj;var b=4186112&~Hj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=eg();0!==(X&4)&&98===a?a=Xc(12,Gj):(a=Sc(a),a=Xc(a,Gj));return a}\nfunction Jg(a,b,c){if(50<Dj)throw Dj=0,Ej=null,Error(y(185));a=Kj(a,b);if(null===a)return null;$c(a,b,c);a===U&&(Hi|=b,4===V&&Ii(a,W));var d=eg();1===b?0!==(X&8)&&0===(X&48)?Lj(a):(Mj(a,c),0===X&&(wj(),ig())):(0===(X&4)||98!==d&&99!==d||(null===Cj?Cj=new Set([a]):Cj.add(a)),Mj(a,c));vj=a}function Kj(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}\nfunction Mj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-Vc(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;Rc(k);var n=F;f[h]=10<=n?l+250:6<=n?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=Uc(a,a===U?W:0);b=F;if(0===d)null!==c&&(c!==Zf&&Pf(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==Zf&&Pf(c)}15===b?(c=Lj.bind(null,a),null===ag?(ag=[c],bg=Of(Uf,jg)):ag.push(c),\nc=Zf):14===b?c=hg(99,Lj.bind(null,a)):(c=Tc(b),c=hg(c,Nj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Nj(a){Fj=-1;Hj=Gj=0;if(0!==(X&48))throw Error(y(327));var b=a.callbackNode;if(Oj()&&a.callbackNode!==b)return null;var c=Uc(a,a===U?W:0);if(0===c)return null;var d=c;var e=X;X|=16;var f=Pj();if(U!==a||W!==d)wj(),Qj(a,d);do try{Rj();break}catch(h){Sj(a,h)}while(1);qg();oj.current=f;X=e;null!==Y?d=0:(U=null,W=0,d=V);if(0!==(tj&Hi))Qj(a,0);else if(0!==d){2===d&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),c=Wc(a),0!==c&&(d=Tj(a,c)));if(1===d)throw b=sj,Qj(a,0),Ii(a,c),Mj(a,O()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(y(345));case 2:Uj(a);break;case 3:Ii(a,c);if((c&62914560)===c&&(d=jj+500-O(),10<d)){if(0!==Uc(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Hg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=of(Uj.bind(null,a),d);break}Uj(a);break;case 4:Ii(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-Vc(c);f=1<<g;g=d[g];g>e&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10<c){a.timeoutHandle=of(Uj.bind(null,a),c);break}Uj(a);break;case 5:Uj(a);break;default:throw Error(y(329));}}Mj(a,O());return a.callbackNode===b?Nj.bind(null,a):null}function Ii(a,b){b&=~uj;b&=~Hi;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-Vc(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Lj(a){if(0!==(X&48))throw Error(y(327));Oj();if(a===U&&0!==(a.expiredLanes&W)){var b=W;var c=Tj(a,b);0!==(tj&Hi)&&(b=Uc(a,b),c=Tj(a,b))}else b=Uc(a,0),c=Tj(a,b);0!==a.tag&&2===c&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),b=Wc(a),0!==b&&(c=Tj(a,b)));if(1===c)throw c=sj,Qj(a,0),Ii(a,b),Mj(a,O()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;Uj(a);Mj(a,O());return null}\nfunction Vj(){if(null!==Cj){var a=Cj;Cj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Mj(a,O())})}ig()}function Wj(a,b){var c=X;X|=1;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function Xj(a,b){var c=X;X&=-2;X|=8;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function ni(a,b){I(rj,qj);qj|=b;tj|=b}function Ki(){qj=rj.current;H(rj)}\nfunction Qj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,pf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Gf();break;case 3:fh();H(N);H(M);uh();break;case 5:hh(d);break;case 4:fh();break;case 13:H(P);break;case 19:H(P);break;case 10:rg(d);break;case 23:case 24:Ki()}c=c.return}U=a;Y=Tg(a.current,null);W=qj=tj=b;V=0;sj=null;uj=Hi=Dg=0}\nfunction Sj(a,b){do{var c=Y;try{qg();vh.current=Gh;if(yh){for(var d=R.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}yh=!1}xh=0;T=S=R=null;zh=!1;pj.current=null;if(null===c||null===c.return){V=1;sj=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=W;h.flags|=2048;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var n=h.alternate;n?(h.updateQueue=n.updateQueue,h.memoizedState=n.memoizedState,h.lanes=n.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var A=0!==(P.current&1),p=g;do{var C;if(C=13===p.tag){var x=p.memoizedState;if(null!==x)C=null!==x.dehydrated?!0:!1;else{var w=p.memoizedProps;C=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:A?!1:!0}}if(C){var z=p.updateQueue;if(null===z){var u=new Set;u.add(l);p.updateQueue=u}else z.add(l);if(0===(p.mode&2)){p.flags|=64;h.flags|=16384;h.flags&=-2981;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var t=zg(-1,1);t.tag=2;Ag(h,t)}h.lanes|=1;break a}k=\nvoid 0;h=b;var q=f.pingCache;null===q?(q=f.pingCache=new Oi,k=new Set,q.set(l,k)):(k=q.get(l),void 0===k&&(k=new Set,q.set(l,k)));if(!k.has(h)){k.add(h);var v=Yj.bind(null,f,l,h);l.then(v,v)}p.flags|=4096;p.lanes=b;break a}p=p.return}while(null!==p);k=Error((Ra(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Li(b);if(null!==c){c.flags&=2047;Y=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=2048)}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===V&&(V=5)}function Uj(a){var b=eg();gg(99,dk.bind(null,a,b));return null}\nfunction dk(a,b){do Oj();while(null!==yj);if(0!==(X&48))throw Error(y(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(y(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-Vc(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nCj&&0===(d&24)&&Cj.has(a)&&Cj.delete(a);a===U&&(Y=U=null,W=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=X;X|=32;pj.current=null;kf=fd;g=Ne();if(Oe(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(va){h=null;\nbreak a}var n=0,A=-1,p=-1,C=0,x=0,w=g,z=null;b:for(;;){for(var u;;){w!==h||0!==f&&3!==w.nodeType||(A=n+f);w!==k||0!==l&&3!==w.nodeType||(p=n+l);3===w.nodeType&&(n+=w.nodeValue.length);if(null===(u=w.firstChild))break;z=w;w=u}for(;;){if(w===g)break b;z===h&&++C===f&&(A=n);z===k&&++x===l&&(p=n);if(null!==(u=w.nextSibling))break;w=z;z=w.parentNode}w=u}h=-1===A||-1===p?null:{start:A,end:p}}else h=null;h=h||{start:0,end:0}}else h=null;lf={focusedElem:g,selectionRange:h};fd=!1;Ij=null;Jj=!1;Z=d;do try{ek()}catch(va){if(null===\nZ)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Ij=null;Z=d;do try{for(g=a;null!==Z;){var t=Z.flags;t&16&&pb(Z.stateNode,\"\");if(t&128){var q=Z.alternate;if(null!==q){var v=q.ref;null!==v&&(\"function\"===typeof v?v(null):v.current=null)}}switch(t&1038){case 2:fj(Z);Z.flags&=-3;break;case 6:fj(Z);Z.flags&=-3;ij(Z.alternate,Z);break;case 1024:Z.flags&=-1025;break;case 1028:Z.flags&=-1025;ij(Z.alternate,Z);break;case 4:ij(Z.alternate,Z);break;case 8:h=Z;cj(g,h);var J=h.alternate;dj(h);null!==\nJ&&dj(J)}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);v=lf;q=Ne();t=v.focusedElem;g=v.selectionRange;if(q!==t&&t&&t.ownerDocument&&Me(t.ownerDocument.documentElement,t)){null!==g&&Oe(t)&&(q=g.start,v=g.end,void 0===v&&(v=q),\"selectionStart\"in t?(t.selectionStart=q,t.selectionEnd=Math.min(v,t.value.length)):(v=(q=t.ownerDocument||document)&&q.defaultView||window,v.getSelection&&(v=v.getSelection(),h=t.textContent.length,J=Math.min(g.start,h),g=void 0===\ng.end?J:Math.min(g.end,h),!v.extend&&J>g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;t<q.length;t++)v=q[t],v.element.scrollLeft=v.left,v.element.scrollTop=v.top}fd=!!kf;lf=kf=null;a.current=c;Z=d;do try{for(t=a;null!==Z;){var K=Z.flags;K&36&&Yi(t,Z.alternate,Z);if(K&128){q=void 0;var Q=Z.ref;if(null!==Q){var L=Z.stateNode;switch(Z.tag){case 5:q=L;break;default:q=L}\"function\"===typeof Q?Q(q):Q.current=q}}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Z=null;$f();X=e}else a.current=c;if(xj)xj=!1,yj=a,zj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(K=Z,K.sibling=null,K.stateNode=null),Z=b;d=a.pendingLanes;0===d&&(Ti=null);1===d?a===Ej?Dj++:(Dj=0,Ej=a):Dj=0;c=c.stateNode;if(Mf&&\"function\"===typeof Mf.onCommitFiberRoot)try{Mf.onCommitFiberRoot(Lf,c,void 0,64===(c.current.flags&64))}catch(va){}Mj(a,O());if(Qi)throw Qi=!1,a=Ri,Ri=null,a;if(0!==(X&8))return null;ig();return null}\nfunction ek(){for(;null!==Z;){var a=Z.alternate;Jj||null===Ij||(0!==(Z.flags&8)?dc(Z,Ij)&&(Jj=!0):13===Z.tag&&mj(a,Z)&&dc(Z,Ij)&&(Jj=!0));var b=Z.flags;0!==(b&256)&&Xi(a,Z);0===(b&512)||xj||(xj=!0,hg(97,function(){Oj();return null}));Z=Z.nextEffect}}function Oj(){if(90!==zj){var a=97<zj?97:zj;zj=90;return gg(a,fk)}return!1}function $i(a,b){Aj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}function Zi(a,b){Bj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}\nfunction fk(){if(null===yj)return!1;var a=yj;yj=null;if(0!==(X&48))throw Error(y(331));var b=X;X|=32;var c=Bj;Bj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}c=Aj;Aj=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;X=b;ig();return!0}function gk(a,b,c){b=Mi(c,b);b=Pi(a,b,1);Ag(a,b);b=Hg();a=Kj(a,1);null!==a&&($c(a,1,b),Mj(a,b))}\nfunction Wi(a,b){if(3===a.tag)gk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){gk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d))){a=Mi(b,a);var e=Si(c,a,1);Ag(c,e);e=Hg();c=Kj(c,1);if(null!==c)$c(c,1,e),Mj(c,e);else if(\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d)))try{d.componentDidCatch(b,a)}catch(f){}break}}c=c.return}}\nfunction Yj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Hg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(W&c)===c&&(4===V||3===V&&(W&62914560)===W&&500>O()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],th.push(f);c=Zg(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|1024,c=c.sibling}else fi(a,b,d,c),sh();b=b.child}return b;case 5:return gh(b),null===a&&\nph(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,nf(d,e)?g=null:null!==f&&nf(d,f)&&(b.flags|=16),oi(a,b),fi(a,b,g,c),b.child;case 6:return null===a&&ph(b),null;case 13:return ti(a,b,c);case 4:return eh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Yg(b,null,d,c):fi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),gi(a,b,d,e,c);case 7:return fi(a,b,b.pendingProps,c),b.child;case 8:return fi(a,b,b.pendingProps.children,\nc),b.child;case 12:return fi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(mg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=He(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!N.current){b=hi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=\nk.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=zg(-1,c&-c),l.tag=2,Ag(h,l));h.lanes|=c;l=h.alternate;null!==l&&(l.lanes|=c);sg(h.return,c);k.lanes|=c;break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}fi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,tg(b,c),e=vg(e,\nf.unstable_observedBits),d=d(e),b.flags|=1,fi(a,b,d,c),b.child;case 14:return e=b.type,f=lg(e,b.pendingProps),f=lg(e.type,f),ii(a,b,e,f,d,c);case 15:return ki(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Ff(d)?(a=!0,Jf(b)):a=!1,tg(b,c),Mg(b,d,e),Og(b,d,e,c),qi(null,b,d,!0,a,c);case 19:return Ai(a,b,c);case 23:return mi(a,b,c);case 24:return mi(a,b,c)}throw Error(y(156,b.tag));\n};function ik(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function nh(a,b,c,d){return new ik(a,b,c,d)}function ji(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction hk(a){if(\"function\"===typeof a)return ji(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Tg(a,b){var c=a.alternate;null===c?(c=nh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Vg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ji(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return Xg(c.children,e,f,b);case Ha:g=8;e|=16;break;case wa:g=8;e|=1;break;case xa:return a=nh(12,c,b,e|8),a.elementType=xa,a.type=xa,a.lanes=f,a;case Ba:return a=nh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=nh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ia:return vi(c,e,f,b);case Ja:return a=nh(24,c,b,e),a.elementType=Ja,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a;case Fa:g=22;break a}throw Error(y(130,null==a?a:typeof a,\"\"));}b=nh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Xg(a,b,c,d){a=nh(7,a,d,b);a.lanes=c;return a}function vi(a,b,c,d){a=nh(23,a,d,b);a.elementType=Ia;a.lanes=c;return a}function Ug(a,b,c){a=nh(6,a,null,b);a.lanes=c;return a}\nfunction Wg(a,b,c){b=nh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction jk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=0;this.eventTimes=Zc(0);this.expirationTimes=Zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Zc(0);this.mutableSourceEagerHydrationData=null}\nfunction kk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction lk(a,b,c,d){var e=b.current,f=Hg(),g=Ig(e);a:if(c){c=c._reactInternals;b:{if(Zb(c)!==c||1!==c.tag)throw Error(y(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(Ff(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(y(171));}if(1===c.tag){var k=c.type;if(Ff(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=zg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Ag(e,b);Jg(e,g,f);return g}function mk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function nk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ok(a,b){nk(a,b);(a=a.alternate)&&nk(a,b)}function pk(){return null}\nfunction qk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new jk(a,b,null!=c&&!0===c.hydrate);b=nh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;xg(b);a[ff]=c.current;cf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}this._internalRoot=c}\nqk.prototype.render=function(a){lk(a,this._internalRoot,null,null)};qk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;lk(null,a,null,function(){b[ff]=null})};function rk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}\nfunction sk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new qk(a,0,b?{hydrate:!0}:void 0)}\nfunction tk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=mk(g);h.call(a)}}lk(b,g,a,e)}else{f=c._reactRootContainer=sk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=mk(g);k.call(a)}}Xj(function(){lk(b,g,a,e)})}return mk(g)}ec=function(a){if(13===a.tag){var b=Hg();Jg(a,4,b);ok(a,4)}};fc=function(a){if(13===a.tag){var b=Hg();Jg(a,67108864,b);ok(a,67108864)}};\ngc=function(a){if(13===a.tag){var b=Hg(),c=Ig(a);Jg(a,c,b);ok(a,c)}};hc=function(a,b){return b()};\nyb=function(a,b,c){switch(b){case \"input\":ab(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(y(90));Wa(d);ab(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Wj;\nHb=function(a,b,c,d,e){var f=X;X|=4;try{return gg(98,a.bind(null,b,c,d,e))}finally{X=f,0===X&&(wj(),ig())}};Ib=function(){0===(X&49)&&(Vj(),Oj())};Jb=function(a,b){var c=X;X|=2;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}};function uk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rk(b))throw Error(y(200));return kk(a,b,null,c)}var vk={Events:[Cb,ue,Db,Eb,Fb,Oj,{current:!1}]},wk={findFiberByHostInstance:wc,bundleType:0,version:\"17.0.1\",rendererPackageName:\"react-dom\"};\nvar xk={bundleType:wk.bundleType,version:wk.version,rendererPackageName:wk.rendererPackageName,rendererConfig:wk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=cc(a);return null===a?null:a.stateNode},findFiberByHostInstance:wk.findFiberByHostInstance||\npk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var yk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!yk.isDisabled&&yk.supportsFiber)try{Lf=yk.inject(xk),Mf=yk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=vk;exports.createPortal=uk;\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(y(188));throw Error(y(268,Object.keys(a)));}a=cc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a,b){var c=X;if(0!==(c&48))return a(b);X|=1;try{if(a)return gg(99,a.bind(null,b))}finally{X=c,ig()}};exports.hydrate=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!0,c)};\nexports.render=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!rk(a))throw Error(y(40));return a._reactRootContainer?(Xj(function(){tk(null,null,a,!1,function(){a._reactRootContainer=null;a[ff]=null})}),!0):!1};exports.unstable_batchedUpdates=Wj;exports.unstable_createPortal=function(a,b){return uk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!rk(c))throw Error(y(200));if(null==a||void 0===a._reactInternals)throw Error(y(38));return tk(a,b,c,!1,d)};exports.version=\"17.0.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.20.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\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 \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // 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) {\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;\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;\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;\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, 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;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\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;\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;\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;\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 typeof module === \"object\" ? 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","'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(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\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","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","!function(A){function I(A){\"use strict\";var I;void 0===(I=A)&&(I={});var g=I;\"object\"!=typeof g.sodium&&(\"object\"==typeof global?g=global:\"object\"==typeof window&&(g=window)),\"object\"==typeof g.sodium&&\"number\"==typeof g.sodium.totalMemory&&(I.TOTAL_MEMORY=g.sodium.totalMemory);var B=I;return I.ready=new Promise((function(A,I){(C=B).onAbort=I,C.print=function(A){},C.printErr=function(A){},C.onRuntimeInitialized=function(){try{C._crypto_secretbox_keybytes(),A()}catch(A){I(A)}},C.useBackupModule=function(){var A,I=void 0!==(I={})?I:{},g={};for(A in I)I.hasOwnProperty(A)&&(g[A]=I[A]);var C=[],Q=!1,E=!1,i=!1,n=!1;Q=\"object\"==typeof window,E=\"function\"==typeof importScripts,i=\"object\"==typeof process&&\"object\"==typeof process.versions&&\"string\"==typeof process.versions.node,n=!Q&&!i&&!E;var a,r,o,e,t=\"\";function c(A){return I.locateFile?I.locateFile(A,t):t+A}i?(t=E?require(\"path\").dirname(t)+\"/\":__dirname+\"/\",a=function(A,I){var g=SA(A);return g?I?g:g.toString():(o||(o=require(\"fs\")),e||(e=require(\"path\")),A=e.normalize(A),o.readFileSync(A,I?null:\"utf8\"))},r=function(A){var I=a(A,!0);return I.buffer||(I=new Uint8Array(I)),l(I.buffer),I},process.argv.length>1&&process.argv[1].replace(/\\\\/g,\"/\"),C=process.argv.slice(2),\"undefined\"!=typeof module&&(module.exports=I),process.on(\"unhandledRejection\",EA),I.inspect=function(){return\"[Emscripten Module object]\"}):n?(\"undefined\"!=typeof read&&(a=function(A){var I=SA(A);return I?mA(I):read(A)}),r=function(A){var I;return(I=SA(A))?I:\"function\"==typeof readbuffer?new Uint8Array(readbuffer(A)):(l(\"object\"==typeof(I=read(A,\"binary\"))),I)},\"undefined\"!=typeof scriptArgs?C=scriptArgs:void 0!==arguments&&(C=arguments),\"undefined\"!=typeof print&&(\"undefined\"==typeof console&&(console={}),console.log=print,console.warn=console.error=\"undefined\"!=typeof printErr?printErr:print)):(Q||E)&&(E?t=self.location.href:document.currentScript&&(t=document.currentScript.src),t=0!==t.indexOf(\"blob:\")?t.substr(0,t.lastIndexOf(\"/\")+1):\"\",a=function(A){try{var I=new XMLHttpRequest;return I.open(\"GET\",A,!1),I.send(null),I.responseText}catch(I){var g=SA(A);if(g)return mA(g);throw I}},E&&(r=function(A){try{var I=new XMLHttpRequest;return I.open(\"GET\",A,!1),I.responseType=\"arraybuffer\",I.send(null),new Uint8Array(I.response)}catch(I){var g=SA(A);if(g)return g;throw I}})),I.print;var f,y=I.printErr||void 0;for(A in g)g.hasOwnProperty(A)&&(I[A]=g[A]);g=null,I.arguments&&(C=I.arguments),I.thisProgram&&I.thisProgram,I.quit&&I.quit,I.wasmBinary&&(f=I.wasmBinary),I.noExitRuntime&&I.noExitRuntime;var s,w={Memory:function(A){this.buffer=new ArrayBuffer(65536*A.initial),this.grow=function(A){return PA(A)}},Table:function(A){var I=new Array(A.initial);return I.grow=function(A){I.length>=22&&EA(\"Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH.\"),I.push(null)},I.set=function(A,g){I[A]=g},I.get=function(A){return I[A]},I},Module:function(A){},Instance:function(A,I){this.exports=function(A,I,g){for(var B=new Uint8Array(I.buffer),C=new Uint8Array(123),Q=25;Q>=0;--Q)C[48+Q]=52+Q,C[65+Q]=Q,C[97+Q]=26+Q;function E(A,I,g){for(var B,Q,E=0,i=I,n=g.length,a=I+(3*n>>2)-(\"=\"==g[n-2])-(\"=\"==g[n-1]);E<n;E+=4)B=C[g.charCodeAt(E+1)],Q=C[g.charCodeAt(E+2)],A[i++]=C[g.charCodeAt(E)]<<2|B>>4,i<a&&(A[i++]=B<<4|Q>>2),i<a&&(A[i++]=Q<<6|C[g.charCodeAt(E+3)])}return C[43]=62,C[47]=63,E(B,1024,\"InsgcmV0dXJuIE1vZHVsZS5nZXRSYW5kb21WYWx1ZSgpOyB9IgB7IGlmIChNb2R1bGUuZ2V0UmFuZG9tVmFsdWUgPT09IHVuZGVmaW5lZCkgeyB0cnkgeyB2YXIgd2luZG93XyA9ICdvYmplY3QnID09PSB0eXBlb2Ygd2luZG93ID8gd2luZG93IDogc2VsZjsgdmFyIGNyeXB0b18gPSB0eXBlb2Ygd2luZG93Xy5jcnlwdG8gIT09ICd1bmRlZmluZWQnID8gd2luZG93Xy5jcnlwdG8gOiB3aW5kb3dfLm1zQ3J5cHRvOyB2YXIgcmFuZG9tVmFsdWVzU3RhbmRhcmQgPSBmdW5jdGlvbigpIHsgdmFyIGJ1ZiA9IG5ldyBVaW50MzJBcnJheSgxKTsgY3J5cHRvXy5nZXRSYW5kb21WYWx1ZXMoYnVmKTsgcmV0dXJuIGJ1ZlswXSA+Pj4gMDsgfTsgcmFuZG9tVmFsdWVzU3RhbmRhcmQoKTsgTW9kdWxlLmdldFJhbmRvbVZhbHVlID0gcmFuZG9tVmFsdWVzU3RhbmRhcmQ7IH0gY2F0Y2ggKGUpIHsgdHJ5IHsgdmFyIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpOyB2YXIgcmFuZG9tVmFsdWVOb2RlSlMgPSBmdW5jdGlvbigpIHsgdmFyIGJ1ZiA9IGNyeXB0b1sncmFuZG9tQnl0ZXMnXSg0KTsgcmV0dXJuIChidWZbMF0gPDwgMjQgfCBidWZbMV0gPDwgMTYgfCBidWZbMl0gPDwgOCB8IGJ1ZlszXSkgPj4+IDA7IH07IHJhbmRvbVZhbHVlTm9kZUpTKCk7IE1vZHVsZS5nZXRSYW5kb21WYWx1ZSA9IHJhbmRvbVZhbHVlTm9kZUpTOyB9IGNhdGNoIChlKSB7IHRocm93ICdObyBzZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgZm91bmQnOyB9IH0gfSB9AExpYnNvZGl1bURSR2J1Zl9sZW4gPD0gU0laRV9NQVgAcmFuZG9tYnl0ZXMvcmFuZG9tYnl0ZXMuYwByYW5kb21ieXRlcwBTLT5idWZsZW4gPD0gQkxBS0UyQl9CTE9DS0JZVEVTAGNyeXB0b19nZW5lcmljaGFzaC9ibGFrZTJiL3JlZi9ibGFrZTJiLXJlZi5jAGJsYWtlMmJfZmluYWwAAAAAAAAAAAjJvPNn5glqO6fKhIWuZ7sr+JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgFm2u9Qfur2YMfeSF+ExnN4FtvdXRsZW4gPD0gVUlOVDhfTUFYAGNyeXB0b19nZW5lcmljaGFzaC9ibGFrZTJiL3JlZi9nZW5lcmljaGFzaF9ibGFrZTJiLmMAY3J5cHRvX2dlbmVyaWNoYXNoX2JsYWtlMmJfZmluYWwAAAAAAAAAtnhZ/4Vy0wC9bhX/DwpqACnAAQCY6Hn/vDyg/5lxzv8At+L+tA1I/wAAAAAAAAAAsKAO/tPJhv+eGI8Af2k1AGAMvQCn1/v/n0yA/mpl4f8e/AQAkgyu\"),E(B,2224,\"WfGy/grlpv973Sr+HhTUAFKAAwAw0fMAd3lA/zLjnP8AbsUBZxuQ\"),E(B,2272,\"hTuMAb3xJP/4JcMBYNw3ALdMPv/DQj0AMkykAeGkTP9MPaP/dT4fAFGRQP92QQ4AonPW/waKLgB85vT/CoqPADQawgC49EwAgY8pAb70E/97qnr/YoFEAHnVkwBWZR7/oWebAIxZQ//v5b4BQwu1AMbwif7uRbz/Q5fuABMqbP/lVXEBMkSH/xFqCQAyZwH/UAGoASOYHv8QqLkBOFno/2XS/AAp+kcAzKpP/w4u7/9QTe8AvdZL/xGN+QAmUEz/vlV1AFbkqgCc2NABw8+k/5ZCTP+v4RD/jVBiAUzb8gDGonIALtqYAJsr8f6boGj/M7ulAAIRrwBCVKAB9zoeACNBNf5F7L8ALYb1AaN73QAgbhT/NBelALrWRwDpsGAA8u82ATlZigBTAFT/iKBkAFyOeP5ofL4AtbE+//opVQCYgioBYPz2AJeXP/7vhT4AIDicAC2nvf+OhbMBg1bTALuzlv76qg7/0qNOACU0lwBjTRoA7pzV/9XA0QFJLlQAFEEpATbOTwDJg5L+qm8Y/7EhMv6rJsv/Tvd0ANHdmQCFgLIBOiwZAMknOwG9E/wAMeXSAXW7dQC1s7gBAHLbADBekwD1KTgAfQ3M/vStdwAs3SD+VOoUAPmgxgHsfur/L2Oo/qrimf9ms9gA4o16/3pCmf629YYA4+QZAdY56//YrTj/tefSAHeAnf+BX4j/bn4zAAKpt/8HgmL+RbBe/3QE4wHZ8pH/yq0fAWkBJ/8ur0UA5C86/9fgRf7POEX/EP6L/xfP1P/KFH7/X9Vg/wmwIQDIBc//8SqA/iMhwP/45cQBgRF4APtnl/8HNHD/jDhC/yji9f/ZRiX+rNYJ/0hDhgGSwNb/LCZwAES4S//OWvsAleuNALWqOgB09O8AXJ0CAGatYgDpiWABfzHLAAWblAAXlAn/03oMACKGGv/bzIgAhggp/+BTK/5VGfcAbX8A/qmIMADud9v/563VAM4S/v4Iugf/fgkHAW8qSABvNOz+YD+NAJO/f/7NTsD/DmrtAbvbTACv87v+aVmtAFUZWQGi85QAAnbR/iGeCQCLoy7/XUYoAGwqjv5v/I7/m9+QADPlp/9J/Jv/XnQM/5ig2v+c7iX/s+rP/8UAs/+apI0A4cRoAAojGf7R1PL/Yf3e/rhl5QDeEn8BpIiH/x7PjP6SYfMAgcAa/slUIf9vCk7/k1Gy/wQEGACh7tf/Bo0hADXXDv8ptdD/54udALPL3f//uXEAveKs/3FC1v/KPi3/ZkAI/06uEP6FdUT/\"),E(B,3264,\"AQ==\"),E(B,3296,\"JuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQ=\"),E(B,3487,\"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\"),E(B,34460,\"AQ==\"),E(B,34496,\"AQ==\"),E(B,34528,\"4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////fw==\"),E(B,34720,\"CMm882fmCWo7p8qEha5nuyv4lP5y82488TYdXzr1T6XRguatf1IOUR9sPiuMaAWba71B+6vZgx95IX4TGc3gWyKuKNeYL4pCzWXvI5FEN3EvO03sz/vAtbzbiYGl27XpOLVI81vCVjkZ0AW28RHxWZtPGa+kgj+SGIFt2tVeHKtCAgOjmKoH2L5vcEUBW4MSjLLkTr6FMSTitP/Vw30MVW+Je/J0Xb5ysZYWO/6x3oA1Esclpwbcm5Qmac908ZvB0krxnsFpm+TjJU84hke+77XVjIvGncEPZZysd8yhDCR1AitZbyzpLYPkpm6qhHRK1PtBvdypsFy1UxGD2oj5dqvfZu5SUT6YEDK0LW3GMag/IfuYyCcDsOQO777Hf1m/wo+oPfML4MYlpwqTR5Gn1W+CA+BRY8oGcG4OCmcpKRT8L9JGhQq3JybJJlw4IRsu7SrEWvxtLE3fs5WdEw04U95jr4tUcwplqLJ3PLsKanbmru1HLsnCgTs1ghSFLHKSZAPxTKHov6IBMEK8S2YaqJGX+NBwi0vCML5UBqNRbMcYUu/WGeiS0RCpZVUkBpnWKiBxV4U1DvS40bsycKBqEMjQ0rgWwaQZU6tBUQhsNx6Z647fTHdIJ6hIm+G1vLA0Y1rJxbMMHDnLikHjSqrYTnPjY3dPypxbo7iy1vNvLmj8su9d7oKPdGAvF0NvY6V4cqvwoRR4yITsOWQaCALHjCgeYyP6/76Q6b2C3utsUKQVecay96P5vitTcuPyeHHGnGEm6s4+J8oHwsAhx7iG0R7r4M3WfdrqeNFu7n9PffW6bxdyqmfwBqaYyKLFfWMKrg35vgSYPxEbRxwTNQtxG4R9BCP1d9sokyTHQHuryjK8vskVCr6ePEwNEJzEZx1DtkI+y77UxUwqfmX8nCl/Wez61jqrb8tfF1hHSowZRGyA\"),E(B,35568,\"YjY0X3BvcyA8PSBiNjRfbGVuAHNvZGl1bS9jb2RlY3MuYwBzb2RpdW1fYmluMmJhc2U2NAAkYXJnb24yaWQAJGFyZ29uMmkAJHY9ACRtPQAsdD0ALHA9ACRhcmdvbjJpZCR2PQAkYXJnb24yaSR2PQAkYXJnb24yaWQkACRhcmdvbjJpJA==\"),E(B,35728,\"U2lnRWQyNTUxOSBubyBFZDI1NTE5IGNvbGxpc2lvbnMBADEuMC4xOA==\"),E(B,35773,\"QAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQ==\"),function(A,I,B){var C=I.memory,Q=g,E=new A.Int8Array(B),i=new A.Int16Array(B),n=new A.Int32Array(B),a=new A.Uint8Array(B),r=(new A.Uint16Array(B),new A.Uint32Array(B)),o=(new A.Float32Array(B),new A.Float64Array(B),A.Math.imul),e=(A.Math.fround,A.Math.abs,A.Math.clz32),t=(A.Math.min,A.Math.max,A.Math.floor,A.Math.ceil,A.Math.sqrt,I.abort),c=(A.NaN,A.Infinity,I.a),f=I.b,y=I.c,s=I.d,w=I.e,h=I.f,D=5279472,u=0,p=0,l=0;function F(A,I){var g,B,C,Q,i,r,o,e,t=0,c=0,f=0,y=0,s=0,w=0,h=0,u=0,p=0,F=0,G=0,k=0,_=0,H=0,Y=0,b=0,m=0,U=0,v=0,S=0,N=0,R=0,M=0,d=0,P=0,J=0,x=0,L=0,K=0,q=0,X=0,V=0,T=0,W=0,Z=0,O=0,z=0,$=0,AA=0,IA=0,gA=0,BA=0,CA=0,QA=0,EA=0,iA=0,nA=0,aA=0,rA=0,oA=0,eA=0,tA=0,cA=0,fA=0,yA=0,sA=0,wA=0,hA=0,DA=0,uA=0;for(D=$=D-256|0;aA=(F=BA<<3)+($+128|0)|0,O=a[4+(F=I+F|0)|0]|a[F+5|0]<<8|a[F+6|0]<<16|a[F+7|0]<<24,n[aA>>2]=a[0|F]|a[F+1|0]<<8|a[F+2|0]<<16|a[F+3|0]<<24,n[aA+4>>2]=O,16!=(0|(BA=BA+1|0)););for(F=j($,A,64),n[(I=F)+88>>2]=1595750129,n[I+92>>2]=-1521486534,G=a[(I=A)+88|0]|a[I+89|0]<<8|a[I+90|0]<<16|a[I+91|0]<<24,aA=a[I+92|0]|a[I+93|0]<<8|a[I+94|0]<<16|a[I+95|0]<<24,s=a[I+72|0]|a[I+73|0]<<8|a[I+74|0]<<16|a[I+75|0]<<24,O=a[I+76|0]|a[I+77|0]<<8|a[I+78|0]<<16|a[I+79|0]<<24,rA=a[I+80|0]|a[I+81|0]<<8|a[I+82|0]<<16|a[I+83|0]<<24,eA=a[I+84|0]|a[I+85|0]<<8|a[I+86|0]<<16|a[I+87|0]<<24,CA=n[F+4>>2],$=F,I=(t=n[F+36>>2])+n[F+132>>2]|0,(nA=(f=n[F+32>>2])+(BA=n[F+128>>2])|0)>>>0<BA>>>0&&(I=I+1|0),I=I+CA|0,nA=I=(BA=nA+n[F>>2]|0)>>>0<nA>>>0?I+1|0:I,BA=jg((CA=BA)^(a[(BA=A)+64|0]|a[BA+65|0]<<8|a[BA+66|0]<<16|a[BA+67|0]<<24)^-1377402159,I^(a[BA+68|0]|a[BA+69|0]<<8|a[BA+70|0]<<16|a[BA+71|0]<<24)^1359893119,32),u=I=l,I=I+1779033703|0,(BA=(y=BA)+-205731576|0)>>>0<4089235720&&(I=I+1|0),c=f^(R=BA),f=I,c=jg(c,t^I,24),BA=n[(t=F)+136>>2],I=nA+(w=l)|0,(nA=c+CA|0)>>>0<CA>>>0&&(I=I+1|0),nA=BA+nA|0,I=(g=n[t+140>>2])+I|0,q=jg((_=nA)^y,(L=_>>>0<BA>>>0?I+1|0:I)^u,16),nA=I=l,n[$+96>>2]=q,n[$+100>>2]=I,I=f+I|0,(CA=R+q|0)>>>0<R>>>0&&(I=I+1|0),y=CA,n[F+64>>2]=y,n[$+68>>2]=I,m=I,CA=jg(c^y,w^I,63),u=I=l,n[F+32>>2]=CA,n[F+36>>2]=I,t=n[F+12>>2],H=s,I=(cA=n[F+148>>2])+(s=n[F+44>>2])|0,(w=(f=n[F+144>>2])+(c=n[F+40>>2])|0)>>>0<c>>>0&&(I=I+1|0),I=I+t|0,t=O,O=I=(R=w+n[F+8>>2]|0)>>>0<w>>>0?I+1|0:I,w=t=jg(H^R^725511199,t^I^-1694144372,32),EA=I=l,I=I+-1150833019|0,(t=t+-2067093701|0)>>>0<2227873595&&(I=I+1|0),H=c^t,c=I,s=jg(H,s^I,24),I=O+(h=l)|0,(O=s+R|0)>>>0<R>>>0&&(I=I+1|0),O=(R=n[F+152>>2])+O|0,I=n[F+156>>2]+I|0,AA=jg((v=O)^w,(d=v>>>0<R>>>0?I+1|0:I)^EA,16),w=I=l,n[$+104>>2]=AA,n[$+108>>2]=I,I=c+I|0,(O=t+AA|0)>>>0<t>>>0&&(I=I+1|0),p=O,n[F+72>>2]=p,n[$+76>>2]=I,P=I,R=jg(s^p,h^I,63),t=l,O=n[F+20>>2],H=rA,I=(tA=n[F+164>>2])+(rA=n[F+52>>2])|0,(c=(K=n[F+160>>2])+(s=n[F+48>>2])|0)>>>0<s>>>0&&(I=I+1|0),I=I+O|0,Y=jg(H^(U=$=c+n[F+16>>2]|0)^-79577749,(O=U>>>0<c>>>0?I+1|0:I)^eA^528734635,32),eA=I=l,I=I+1013904242|0,($=Y+-23791573|0)>>>0<4271175723&&(I=I+1|0),H=s^(c=$),s=I,rA=$=jg(H,rA^I,24),EA=I=l,h=eA,I=I+O|0,(O=U+$|0)>>>0<$>>>0&&(I=I+1|0),I=I+(k=B=n[F+172>>2])|0,V=jg((x=$=(eA=n[F+168>>2])+O|0)^Y,(M=x>>>0<O>>>0?I+1|0:I)^h,16),I=s+(Z=l)|0,($=c+V|0)>>>0<c>>>0&&(I=I+1|0),H=I,c=jg((U=$)^rA,I^EA,63),s=l,rA=n[F+28>>2],k=G,I=(C=n[F+180>>2])+(Y=n[F+60>>2])|0,(EA=($=n[F+176>>2])+(G=n[F+56>>2])|0)>>>0<G>>>0&&(I=I+1|0),I=I+rA|0,I=(O=EA+n[F+24>>2]|0)>>>0<EA>>>0?I+1|0:I,EA=O,h=I,J=jg(k^O^327033209,I^aA^1541459225,32),aA=I=l,I=I+-1521486534|0,(O=J+1595750129|0)>>>0<1595750129&&(I=I+1|0),rA=O,G=O=jg(G^O,I^Y,24),k=rA,b=I,N=aA,rA=n[F+188>>2],I=h+(Y=l)|0,(O=G+EA|0)>>>0<EA>>>0&&(I=I+1|0),EA=O,I=I+(S=rA)|0,T=O=(aA=n[F+184>>2])+O|0,EA=jg(O^J,(h=N)^(N=O>>>0<EA>>>0?I+1|0:I),16),S=G,I=(G=l)+b|0,(h=(O=EA)+k|0)>>>0<O>>>0&&(I=I+1|0),J=h,O=I,h=jg(S^h,I^Y,63),Y=l,I=t+L|0,(L=_+R|0)>>>0<R>>>0&&(I=I+1|0),I=I+(k=fA=n[F+196>>2])|0,EA=jg((b=EA)^(k=EA=(wA=n[F+192>>2])+L|0),(_=G)^(G=k>>>0<L>>>0?I+1|0:I),32),L=F,_=I=l,S=R,I=H+I|0,(R=U+(b=EA)|0)>>>0<U>>>0&&(I=I+1|0),H=t,t=I,X=jg(S^R,H^I,24),EA=F,U=n[F+200>>2],S=b,I=G+(b=l)|0,(H=k+X|0)>>>0<k>>>0&&(I=I+1|0),G=U+H|0,I=(yA=n[EA+204>>2])+I|0,sA=G,gA=jg(S^G,(H=_)^(_=G>>>0<U>>>0?I+1|0:I),16),H=I=l,n[L+120>>2]=gA,n[L+124>>2]=I,I=t+I|0,(t=R+gA|0)>>>0<R>>>0&&(I=I+1|0),G=t,n[F+80>>2]=t,n[EA+84>>2]=I,t^=X,X=I,k=jg(t,b^I,63),b=l,EA=s,I=s+d|0,(c=v+(t=c)|0)>>>0<v>>>0&&(I=I+1|0),s=c,I=I+(L=i=n[F+212>>2])|0,nA=jg((S=q)^(q=c=(R=n[F+208>>2])+c|0),(c=c>>>0<s>>>0?I+1|0:I)^nA,32),v=t,I=(t=l)+O|0,(s=(O=nA)+J|0)>>>0<O>>>0&&(I=I+1|0),v=O=jg(v^s,I^EA,24),d=I,r=n[F+220>>2],z=nA,I=(EA=l)+c|0,(nA=q+v|0)>>>0<v>>>0&&(I=I+1|0),I=I+(S=r)|0,t=jg(z^(J=O=(L=n[F+216>>2])+nA|0),(q=J>>>0<nA>>>0?I+1|0:I)^t,16),I=(I=d)+(d=l)|0,(nA=t+s|0)>>>0<t>>>0&&(I=I+1|0),s=I,c=jg((S=nA)^v,I^EA,63),v=l,O=h,z=Y,I=Y+M|0,(h=h+x|0)>>>0<x>>>0&&(I=I+1|0),Y=h,I=I+(W=EA=n[F+228>>2])|0,W=h=(nA=n[F+224>>2])+h|0,AA=jg(h^AA,(M=w)^(w=h>>>0<Y>>>0?I+1|0:I),32),Y=O,I=m+(h=l)|0,(O=y+AA|0)>>>0<y>>>0&&(I=I+1|0),m=O=jg(Y^(y=O),I^z,24),x=I,M=h,QA=n[F+236>>2],I=(Y=l)+w|0,(w=m+W|0)>>>0<m>>>0&&(I=I+1|0),I=I+(IA=QA)|0,z=O=(h=n[F+232>>2])+w|0,w=jg(O^AA,(W=M)^(M=O>>>0<w>>>0?I+1|0:I),16),I=(I=x)+(x=l)|0,(y=y+w|0)>>>0<w>>>0&&(I=I+1|0),AA=y,y=I,Y=jg(AA^m,I^Y,63),m=l,IA=u,I=u+N|0,(u=(W=CA)+T|0)>>>0<W>>>0&&(I=I+1|0),I=I+(Q=n[F+244>>2])|0,N=Z,Z=I=(CA=(O=n[F+240>>2])+u|0)>>>0<u>>>0?I+1|0:I,V=jg((u=CA)^V,N^I,32),N=y,y=t,I=P+(CA=l)|0,(t=p+V|0)>>>0<p>>>0&&(I=I+1|0),p=I,W=jg(t^W,I^IA,24),T=I=l,P=CA,I=I+Z|0,(Z=u+(IA=W)|0)>>>0<u>>>0&&(I=I+1|0),I=I+(oA=e=n[F+252>>2])|0,I=(u=(CA=n[F+248>>2])+Z|0)>>>0<Z>>>0?I+1|0:I,Z=u,W=P,P=I,oA=jg(u^V,W^I,16),V=IA,I=p+(W=l)|0,(u=t+oA|0)>>>0<t>>>0&&(I=I+1|0),IA=u,t=I,V=jg(V^u,I^T,63),T=I=l,u=I,iA=y,I=_+Q|0,(p=(y=O)+sA|0)>>>0<y>>>0&&(I=I+1|0),I=I+u|0,u=y=p+V|0,y=jg(iA^y,(_=d)^(d=y>>>0<p>>>0?I+1|0:I),32),p=F,I=(I=N)+(N=l)|0,(AA=y+AA|0)>>>0<y>>>0&&(I=I+1|0),_=AA,AA=I,iA=T=jg(V^_,T^I,24),hA=I=l,V=I,sA=y,I=d+i|0,(y=u+R|0)>>>0<u>>>0&&(I=I+1|0),u=y,I=I+V|0,o=y=y+T|0,sA=jg(sA^y,(d=N)^(N=y>>>0<u>>>0?I+1|0:I),16),I=AA+(V=l)|0,(y=_+sA|0)>>>0<_>>>0&&(I=I+1|0),_=y,AA=I,u=jg(y^iA,I^hA,63),d=I=l,n[p+32>>2]=u,n[p+36>>2]=I,T=t,iA=w,I=tA+(p=b)|0,(t=K+(y=k)|0)>>>0<K>>>0&&(I=I+1|0),I=I+q|0,w=t=t+J|0,t=jg(iA^t,(k=t>>>0<J>>>0?I+1|0:I)^x,32),q=y,I=(y=l)+T|0,(K=t+IA|0)>>>0<t>>>0&&(I=I+1|0),J=p,p=I,J=x=jg(q^(b=K),J^I,24),q=I=l,K=I,T=t,I=k+fA|0,(t=w+wA|0)>>>0<w>>>0&&(I=I+1|0),w=t,I=I+K|0,k=t=t+x|0,T=jg(T^t,(K=t>>>0<w>>>0?I+1|0:I)^y,16),y=J,I=p+(x=l)|0,(t=b+T|0)>>>0<b>>>0&&(I=I+1|0),J=t,w=q,q=I,w=jg(y^t,w^I,63),t=l,y=c,I=(p=v)+yA|0,(U=c+U|0)>>>0<c>>>0&&(I=I+1|0),I=I+M|0,b=jg((v=c=U+z|0)^oA,(c=c>>>0<z>>>0?I+1|0:I)^W,32),M=y,I=X+(y=l)|0,(U=G+b|0)>>>0<G>>>0&&(I=I+1|0),G=p,p=I,X=M=jg(M^U,G^I,24),z=I=l,G=I,W=b,I=c+e|0,(b=(c=CA)+v|0)>>>0<c>>>0&&(I=I+1|0),I=I+G|0,I=(c=b+M|0)>>>0<b>>>0?I+1|0:I,b=c,v=I,tA=jg(W^c,I^y,16),G=X,I=p+(M=l)|0,(c=U+tA|0)>>>0<U>>>0&&(I=I+1|0),X=c,y=I,p=jg(G^c,I^z,63),U=l,z=m,I=m+QA|0,(Y=(G=Y)+(c=h)|0)>>>0<c>>>0&&(I=I+1|0),I=I+P|0,P=c=Y+Z|0,c=jg(c^gA,(Y=c>>>0<Z>>>0?I+1|0:I)^H,32),m=G,I=(I=s)+(s=l)|0,(G=c+S|0)>>>0<c>>>0&&(I=I+1|0),H=G,S=Z=jg(m^G,I^z,24),z=G=l,m=I,W=c,I=Y+C|0,(Y=(c=$)+P|0)>>>0<c>>>0&&(I=I+1|0),I=I+G|0,P=c=Y+Z|0,Y=jg(W^c,(Z=c>>>0<Y>>>0?I+1|0:I)^s,16),G=S,I=(I=m)+(m=l)|0,(s=(c=Y)+H|0)>>>0<c>>>0&&(I=I+1|0),S=s,s=I,H=jg(G^S,I^z,63),c=l,G=F,z=w,W=t,gA=Y,IA=w,I=N+g|0,(Y=(w=BA)+o|0)>>>0<w>>>0&&(I=I+1|0),I=I+t|0,t=jg(gA^(IA=w=IA+Y|0),(w=w>>>0<Y>>>0?I+1|0:I)^m,32),I=(gA=l)+y|0,(Y=t+X|0)>>>0<t>>>0&&(I=I+1|0),y=Y,Y=I,z=jg(y^z,I^W,24),m=I=l,N=I,I=w+EA|0,(X=(w=nA)+IA|0)>>>0<w>>>0&&(I=I+1|0),I=I+N|0,N=w=X+z|0,oA=jg(t^w,gA^(X=w>>>0<X>>>0?I+1|0:I),16),w=I=l,n[G+120>>2]=oA,n[G+124>>2]=I,G=z,I=I+Y|0,(t=y+oA|0)>>>0<y>>>0&&(I=I+1|0),z=t,y=I,Y=jg(G^t,I^m,63),G=l,m=p,W=U,I=U+K|0,(t=p+k|0)>>>0<k>>>0&&(I=I+1|0),p=t,I=I+(gA=yA=n[F+132>>2])|0,I=(t=(IA=n[F+128>>2])+t|0)>>>0<p>>>0?I+1|0:I,p=t,U=I,t=jg(t^sA,I^V,32),K=m,I=(I=s)+(s=l)|0,(m=t+S|0)>>>0<t>>>0&&(I=I+1|0),V=S=jg(K^(k=m),I^W,24),gA=m=l,K=I,iA=t,I=U+cA|0,(t=f+p|0)>>>0<p>>>0&&(I=I+1|0),p=t,I=I+m|0,S=t=t+S|0,t=jg(iA^t,(W=t>>>0<p>>>0?I+1|0:I)^s,16),I=(p=l)+K|0,(U=t+k|0)>>>0<t>>>0&&(I=I+1|0),K=U,s=U^V,V=I,s=jg(s,I^gA,63),U=l,m=c,gA=T,k=H,I=v+r|0,(H=b+L|0)>>>0<b>>>0&&(I=I+1|0),I=I+c|0,T=H=(T=k)+(b=H)|0,x=jg(gA^H,(c=H>>>0<b>>>0?I+1|0:I)^x,32),v=k,I=AA+(H=l)|0,(k=_+x|0)>>>0<_>>>0&&(I=I+1|0),AA=m=jg(v^k,I^m,24),gA=b=l,v=I,iA=x,_=m,I=c+rA|0,(m=(c=aA)+T|0)>>>0<c>>>0&&(I=I+1|0),I=I+b|0,x=c=_+m|0,H=jg(iA^c,(_=c>>>0<m>>>0?I+1|0:I)^H,16),m=AA,I=(AA=l)+v|0,(k=(c=H)+k|0)>>>0<c>>>0&&(I=I+1|0),v=k,c=I,k=jg(m^k,I^gA,63),b=l,T=d,I=d+B|0,(d=(m=u)+(u=eA)|0)>>>0<u>>>0&&(I=I+1|0),I=I+Z|0,d=I=(u=d+P|0)>>>0<P>>>0?I+1|0:I,gA=jg(u^tA,I^M,32),P=v,M=c,v=t,I=q+(t=l)|0,(c=J+gA|0)>>>0<J>>>0&&(I=I+1|0),q=J=jg(c^m,I^T,24),tA=T=l,m=I,Z=t,I=d+T|0,(d=u+J|0)>>>0<u>>>0&&(I=I+1|0),I=I+(iA=sA=n[F+156>>2])|0,I=(u=(t=n[F+152>>2])+d|0)>>>0<d>>>0?I+1|0:I,d=u,J=Z,Z=I,u=jg(u^gA,J^I,16),T=q,I=(J=l)+m|0,(m=(m=c)+(c=u)|0)>>>0<c>>>0&&(I=I+1|0),q=m,c=I,T=jg(T^m,I^tA,63),gA=I=l,m=I,iA=v,I=X+r|0,(v=N+L|0)>>>0<N>>>0&&(I=I+1|0),N=v,I=I+m|0,m=v=v+T|0,p=jg(iA^v,(N=v>>>0<N>>>0?I+1|0:I)^p,32),v=F,I=(I=M)+(M=l)|0,(X=p+P|0)>>>0<p>>>0&&(I=I+1|0),P=X,X=I,tA=gA=jg(T^P,gA^I,24),iA=I=l,T=I,hA=p,I=N+fA|0,(p=m+wA|0)>>>0<m>>>0&&(I=I+1|0),m=p,I=I+T|0,wA=p=p+gA|0,fA=jg(hA^p,(N=M)^(M=p>>>0<m>>>0?I+1|0:I),16),I=X+(N=l)|0,(p=P+fA|0)>>>0<P>>>0&&(I=I+1|0),P=p,X=I,p=jg(p^tA,I^iA,63),m=I=l,n[v+32>>2]=p,n[v+36>>2]=I,v=Y,T=G,gA=c,I=G+EA|0,(Y=(c=nA)+Y|0)>>>0<c>>>0&&(I=I+1|0),I=I+W|0,I=(c=Y+S|0)>>>0<S>>>0?I+1|0:I,S=c,Y=I,c=jg(c^H,I^AA,32),W=v,I=(H=l)+gA|0,(v=c+q|0)>>>0<c>>>0&&(I=I+1|0),G=v,v=I,W=AA=jg(W^G,I^T,24),gA=I=l,q=I,T=c,I=Y+yA|0,(c=S+IA|0)>>>0<IA>>>0&&(I=I+1|0),Y=c,I=I+q|0,tA=c=c+AA|0,T=jg(T^c,(q=c>>>0<Y>>>0?I+1|0:I)^H,16),I=v+(S=l)|0,(c=G+T|0)>>>0<G>>>0&&(I=I+1|0),AA=c,c^=W,W=I,Y=jg(c,I^gA,63),c=l,v=u,I=B+(G=U)|0,(u=(H=s)+(s=eA)|0)>>>0<s>>>0&&(I=I+1|0),I=I+_|0,u=s=u+x|0,s=jg(v^s,(U=s>>>0<x>>>0?I+1|0:I)^J,32),I=(I=y)+(y=l)|0,(v=s+z|0)>>>0<s>>>0&&(I=I+1|0),J=x=jg((_=H)^(H=v),I^G,24),_=G=l,v=I,z=s,I=U+cA|0,(s=f+u|0)>>>0<u>>>0&&(I=I+1|0),u=s,I=I+G|0,gA=s=s+x|0,U=jg(z^s,(x=s>>>0<u>>>0?I+1|0:I)^y,16),G=J,I=(J=l)+v|0,(y=(s=U)+H|0)>>>0<s>>>0&&(I=I+1|0),v=y,u=I,H=jg(G^y,I^_,63),s=l,I=e+(G=b)|0,(b=(y=k)+(k=CA)|0)>>>0<k>>>0&&(I=I+1|0),k=b+d|0,I=I+Z|0,b=w,w=I=k>>>0<d>>>0?I+1|0:I,Z=jg(k^oA,b^I,32),_=y,I=V+(y=l)|0,(b=K+Z|0)>>>0<K>>>0&&(I=I+1|0),d=G,G=I,_=K=jg(_^b,d^I,24),z=I=l,d=I,I=w+QA|0,(w=h+k|0)>>>0<k>>>0&&(I=I+1|0),k=w,I=I+d|0,K=w=w+K|0,IA=jg(d=w^Z,(Z=w>>>0<k>>>0?I+1|0:I)^y,16),k=_,I=G+(d=l)|0,(y=b+IA|0)>>>0<b>>>0&&(I=I+1|0),_=y,w=I,G=jg(k^y,I^z,63),y=l,k=F,b=Y,z=c,I=M+i|0,(M=(Y=R)+wA|0)>>>0<Y>>>0&&(I=I+1|0),I=I+c|0,I=(Y=(V=b)+M|0)>>>0<M>>>0?I+1|0:I,M=Y,Y=I,c=jg(M^IA,I^d,32),d=b,I=(IA=l)+u|0,(b=c+v|0)>>>0<c>>>0&&(I=I+1|0),u=b,b=I,z=jg(d^u,I^z,24),v=I=l,d=I,I=Y+Q|0,(M=(Y=O)+M|0)>>>0<Y>>>0&&(I=I+1|0),I=I+d|0,yA=Y=M+z|0,oA=jg(c^Y,IA^(M=Y>>>0<M>>>0?I+1|0:I),16),Y=I=l,n[k+120>>2]=oA,n[k+124>>2]=I,k=z,I=I+b|0,(c=u+oA|0)>>>0<u>>>0&&(I=I+1|0),z=c,u=I,k=jg(k^c,I^v,63),b=l,v=H,d=s,c=H,I=q+sA|0,(H=t+tA|0)>>>0<t>>>0&&(I=I+1|0),I=I+s|0,q=c=c+H|0,c=jg(c^fA,(s=c>>>0<H>>>0?I+1|0:I)^N,32),N=v,I=(I=w)+(w=l)|0,(v=c+_|0)>>>0<c>>>0&&(I=I+1|0),IA=N=jg(N^(H=v),I^d,24),V=v=l,d=I,iA=c,I=s+C|0,(s=(c=$)+q|0)>>>0<c>>>0&&(I=I+1|0),I=I+v|0,N=c=s+N|0,c=jg(iA^c,(_=c>>>0<s>>>0?I+1|0:I)^w,16),I=(w=l)+d|0,(H=c+H|0)>>>0<c>>>0&&(I=I+1|0),q=H,s=H^IA,IA=I,s=jg(s,I^V,63),H=l,v=G,d=y,V=G,I=x+rA|0,(x=(G=aA)+gA|0)>>>0<G>>>0&&(I=I+1|0),I=I+y|0,V=G=V+x|0,x=jg(G^T,(y=G>>>0<x>>>0?I+1|0:I)^S,32),S=v,I=X+(G=l)|0,(v=P+x|0)>>>0<P>>>0&&(I=I+1|0),S=X=jg(S^v,I^d,24),T=d=l,P=I,gA=x,I=y+g|0,(x=(y=BA)+V|0)>>>0<y>>>0&&(I=I+1|0),I=I+d|0,I=(y=x+X|0)>>>0<x>>>0?I+1|0:I,x=y,X=I,G=jg(gA^y,I^G,16),d=S,I=(S=l)+P|0,(v=(y=G)+v|0)>>>0<y>>>0&&(I=I+1|0),P=v,y=I,v=jg(d^v,I^T,63),d=l,V=p,T=m,iA=U,I=m+Z|0,(p=p+K|0)>>>0<K>>>0&&(I=I+1|0),U=p,I=I+(gA=fA=n[F+204>>2])|0,I=(p=(wA=n[F+200>>2])+p|0)>>>0<U>>>0?I+1|0:I,U=p,m=I,gA=jg(iA^p,I^J,32),K=y,y=c,I=W+(c=l)|0,(p=AA+gA|0)>>>0<AA>>>0&&(I=I+1|0),V=AA=jg(p^V,I^T,24),T=W=l,Z=p,J=I,I=m+W|0,(m=U+AA|0)>>>0<U>>>0&&(I=I+1|0),I=I+(iA=tA=n[F+164>>2])|0,AA=U=(p=n[F+160>>2])+m|0,U=jg(U^gA,(W=U>>>0<m>>>0?I+1|0:I)^c,16),I=(I=J)+(J=l)|0,(m=(c=U)+Z|0)>>>0<c>>>0&&(I=I+1|0),Z=m,c=I,V=jg(m^V,I^T,63),T=I=l,m=I,gA=y,I=M+rA|0,(M=(y=aA)+yA|0)>>>0<y>>>0&&(I=I+1|0),I=I+m|0,I=(y=M+V|0)>>>0<M>>>0?I+1|0:I,M=y,m=w,w=I,y=jg(gA^y,m^I,32),m=F,I=(I=K)+(K=l)|0,(gA=y+P|0)>>>0<y>>>0&&(I=I+1|0),iA=yA=jg(V^(P=gA),I^T,24),hA=V=l,T=P,gA=I,P=y,I=w+fA|0,(y=M+wA|0)>>>0<M>>>0&&(I=I+1|0),w=y,I=I+V|0,yA=y=y+yA|0,P=jg(P^y,(M=y>>>0<w>>>0?I+1|0:I)^K,16),I=(V=l)+gA|0,(w=(y=P)+T|0)>>>0<y>>>0&&(I=I+1|0),T=w,y=I,w=jg(w^iA,I^hA,63),K=I=l,n[m+32>>2]=w,n[m+36>>2]=I,m=k,gA=b,iA=G,I=b+sA|0,(G=t+k|0)>>>0<t>>>0&&(I=I+1|0),I=I+_|0,I=(t=G+N|0)>>>0<N>>>0?I+1|0:I,N=t,G=I,t=jg(iA^t,I^S,32),I=(I=c)+(c=l)|0,(b=t+Z|0)>>>0<t>>>0&&(I=I+1|0),_=Z=jg((k=b)^m,I^gA,24),S=b=l,m=I,iA=t,I=G+g|0,(G=(t=BA)+N|0)>>>0<t>>>0&&(I=I+1|0),I=I+b|0,gA=t=G+Z|0,G=jg(iA^t,(b=t>>>0<G>>>0?I+1|0:I)^c,16),I=(I=m)+(m=l)|0,(c=(t=G)+k|0)>>>0<t>>>0&&(I=I+1|0),Z=c,N=I,k=jg(c^_,I^S,63),t=l,_=s,S=H,I=H+QA|0,(c=s+h|0)>>>0<s>>>0&&(I=I+1|0),I=I+X|0,s=c=c+x|0,c=jg(c^U,(h=c>>>0<x>>>0?I+1|0:I)^J,32),I=(I=u)+(u=l)|0,(H=c+z|0)>>>0<c>>>0&&(I=I+1|0),U=H,H=I,_=J=jg(U^_,I^S,24),X=I=l,x=I,S=c,I=h+EA|0,(c=s+nA|0)>>>0<s>>>0&&(I=I+1|0),s=c,I=I+x|0,sA=c=c+J|0,QA=jg(S^c,(x=c>>>0<s>>>0?I+1|0:I)^u,16),I=H+(J=l)|0,(c=U+QA|0)>>>0<U>>>0&&(I=I+1|0),H=c,u=I,h=jg(c^_,I^X,63),c=l,I=r+(U=d)|0,(d=(s=v)+(v=L)|0)>>>0<v>>>0&&(I=I+1|0),I=I+W|0,X=v=d+AA|0,_=jg(v^oA,(_=Y)^(Y=v>>>0<AA>>>0?I+1|0:I),32),S=s,I=IA+(s=l)|0,(v=_+q|0)>>>0<q>>>0&&(I=I+1|0),q=U,U=I,S=q=jg(S^v,q^I,24),z=I=l,d=I,W=_,I=Y+Q|0,(_=(Y=O)+X|0)>>>0<Y>>>0&&(I=I+1|0),I=I+d|0,d=Y=_+q|0,AA=jg(W^Y,(_=Y>>>0<_>>>0?I+1|0:I)^s,16),I=U+(X=l)|0,(s=v+AA|0)>>>0<v>>>0&&(I=I+1|0),v=s,q=I,Y=jg(s^S,I^z,63),s=l,U=F,S=k,z=t,I=M+cA|0,(M=f+yA|0)>>>0<f>>>0&&(I=I+1|0),I=I+t|0,t=jg((W=k=M+k|0)^AA,(k=k>>>0<M>>>0?I+1|0:I)^X,32),I=(IA=l)+u|0,(H=t+H|0)>>>0<t>>>0&&(I=I+1|0),M=I,AA=jg((u=H)^S,I^z,24),X=I=l,H=I,I=k+C|0,(S=(k=$)+W|0)>>>0<k>>>0&&(I=I+1|0),I=I+H|0,I=(k=S+AA|0)>>>0<S>>>0?I+1|0:I,S=k,z=I,oA=jg(t^k,IA^I,16),H=I=l,n[U+120>>2]=oA,n[U+124>>2]=I,I=I+M|0,(t=u+oA|0)>>>0<u>>>0&&(I=I+1|0),M=t,u=I,U=jg(t^AA,I^X,63),k=l,X=c,t=h,I=b+B|0,(b=(h=eA)+gA|0)>>>0<h>>>0&&(I=I+1|0),I=I+c|0,AA=h=(W=t)+b|0,P=jg(h^P,(c=h>>>0<b>>>0?I+1|0:I)^V,32),b=t,I=q+(t=l)|0,(h=v+P|0)>>>0<v>>>0&&(I=I+1|0),W=X=jg(b^h,I^X,24),IA=b=l,v=I,V=P,I=c+i|0,(P=(c=R)+AA|0)>>>0<c>>>0&&(I=I+1|0),I=I+b|0,X=c=P+X|0,t=jg(V^c,(q=c>>>0<P>>>0?I+1|0:I)^t,16),I=(P=l)+v|0,(h=t+h|0)>>>0<t>>>0&&(I=I+1|0),AA=h,c=h^W,W=I,b=jg(c,I^IA,63),v=l,IA=s,V=G,h=Y,I=x+tA|0,(Y=(c=p)+sA|0)>>>0<c>>>0&&(I=I+1|0),I=I+s|0,G=c=(G=h)+Y|0,c=jg(V^c,(s=m)^(m=c>>>0<Y>>>0?I+1|0:I),32),s=h,I=(I=y)+(y=l)|0,(h=c+T|0)>>>0<c>>>0&&(I=I+1|0),x=s=jg(s^h,I^IA,24),IA=Y=l,V=I,iA=c,I=m+Y|0,(c=s+G|0)>>>0<G>>>0&&(I=I+1|0),s=c,I=I+(gA=sA=n[F+132>>2])|0,T=c=(Y=n[F+128>>2])+c|0,s=jg(iA^c,(gA=c>>>0<s>>>0?I+1|0:I)^y,16),G=x,I=(x=l)+V|0,(y=(c=s)+h|0)>>>0<c>>>0&&(I=I+1|0),c=I,G=jg(G^y,I^IA,63),m=l,IA=K,I=K+e|0,(K=(h=w)+(w=CA)|0)>>>0<w>>>0&&(I=I+1|0),I=I+_|0,K=I=(w=d+K|0)>>>0<d>>>0?I+1|0:I,d=jg(w^QA,I^J,32),J=y,_=c,y=t,I=N+(t=l)|0,(c=d+Z|0)>>>0<Z>>>0&&(I=I+1|0),V=N=jg(c^h,I^IA,24),QA=IA=l,h=c,Z=I,hA=d,I=K+IA|0,(c=w+N|0)>>>0<w>>>0&&(I=I+1|0),w=c,I=I+(iA=yA=n[F+196>>2])|0,N=c=(d=n[F+192>>2])+c|0,c=jg(hA^c,(IA=c>>>0<w>>>0?I+1|0:I)^t,16),K=V,I=(I=Z)+(Z=l)|0,(w=(t=c)+h|0)>>>0<t>>>0&&(I=I+1|0),V=w,t=I,QA=jg(K^w,I^QA,63),iA=I=l,w=I,K=y,I=z+fA|0,(y=S+wA|0)>>>0<S>>>0&&(I=I+1|0),h=y,I=I+w|0,I=(y=y+QA|0)>>>0<h>>>0?I+1|0:I,h=y,w=P,P=I,y=jg(K^y,w^I,32),w=F,I=(K=l)+_|0,(_=y+J|0)>>>0<y>>>0&&(I=I+1|0),J=_,QA=z=jg(QA^_,I^iA,24),fA=_=l,S=I,iA=y,I=P+sA|0,(y=h+Y|0)>>>0<h>>>0&&(I=I+1|0),h=y,I=I+_|0,wA=y=y+z|0,P=jg(iA^y,(_=y>>>0<h>>>0?I+1|0:I)^K,16),I=(I=S)+(S=l)|0,(h=(y=P)+J|0)>>>0<y>>>0&&(I=I+1|0),J=h,y=I,h=jg(h^QA,I^fA,63),K=I=l,n[w+32>>2]=h,n[w+36>>2]=I,z=k,QA=t,iA=s,I=k+B|0,(s=(w=U)+(t=eA)|0)>>>0<t>>>0&&(I=I+1|0),I=I+q|0,q=t=s+X|0,t=jg(iA^t,(s=t>>>0<X>>>0?I+1|0:I)^x,32),x=w,I=(w=l)+QA|0,(k=t+V|0)>>>0<t>>>0&&(I=I+1|0),U=k,V=z=jg(x^k,I^z,24),QA=k=l,x=U,X=I,U=t,I=s+rA|0,(s=(t=aA)+q|0)>>>0<t>>>0&&(I=I+1|0),I=I+k|0,q=t=s+z|0,U=jg(U^t,(z=t>>>0<s>>>0?I+1|0:I)^w,16),I=(I=X)+(X=l)|0,(s=(t=U)+x|0)>>>0<t>>>0&&(I=I+1|0),x=s,w=I,k=jg(s^V,I^QA,63),t=l,V=v,QA=c,I=v+cA|0,(b=(s=b)+(c=f)|0)>>>0<c>>>0&&(I=I+1|0),I=I+gA|0,b=c=b+T|0,c=jg(QA^c,(v=c>>>0<T>>>0?I+1|0:I)^Z,32),Z=s,I=(s=l)+u|0,(M=c+M|0)>>>0<c>>>0&&(I=I+1|0),u=M,M=I,T=V=jg(Z^u,I^V,24),QA=I=l,Z=I,gA=c,I=v+tA|0,(c=p+b|0)>>>0<b>>>0&&(I=I+1|0),p=c,I=I+Z|0,fA=c=c+V|0,gA=jg(gA^c,(v=c>>>0<p>>>0?I+1|0:I)^s,16),I=M+(Z=l)|0,(c=u+gA|0)>>>0<u>>>0&&(I=I+1|0),b=c,u=I,p=jg(c^T,I^QA,63),c=l,M=m,I=m+i|0,(m=(s=G)+(G=R)|0)>>>0<G>>>0&&(I=I+1|0),I=I+IA|0,IA=G=m+N|0,N=jg(G^oA,(m=H)^(H=G>>>0<N>>>0?I+1|0:I),32),V=s,I=W+(s=l)|0,(G=N+AA|0)>>>0<AA>>>0&&(I=I+1|0),m=I,W=AA=jg(V^G,I^M,24),V=I=l,M=I,T=N,I=H+e|0,(N=(H=CA)+IA|0)>>>0<H>>>0&&(I=I+1|0),I=I+M|0,M=H=N+AA|0,T=jg(T^H,(N=H>>>0<N>>>0?I+1|0:I)^s,16),I=m+(AA=l)|0,(s=G+T|0)>>>0<G>>>0&&(I=I+1|0),m=s,s^=W,W=I,H=jg(s,I^V,63),s=l,G=F,IA=k,V=t,QA=T,T=k,I=_+Q|0,(_=(k=O)+wA|0)>>>0<k>>>0&&(I=I+1|0),I=I+t|0,t=jg(QA^(T=k=T+_|0),(k=k>>>0<_>>>0?I+1|0:I)^AA,32),I=(QA=l)+u|0,(b=t+b|0)>>>0<t>>>0&&(I=I+1|0),_=I,V=jg(b^IA,I^V,24),AA=I=l,u=I,I=k+g|0,(IA=(k=BA)+T|0)>>>0<k>>>0&&(I=I+1|0),I=I+u|0,wA=k=IA+V|0,oA=jg(t^k,QA^(IA=k>>>0<IA>>>0?I+1|0:I),16),u=I=l,n[G+120>>2]=oA,n[G+124>>2]=I,I=I+_|0,(t=b+oA|0)>>>0<b>>>0&&(I=I+1|0),_=t,G=AA,AA=I,G=jg(t^V,G^I,63),k=l,b=c,V=P,t=p,I=z+r|0,(p=L+q|0)>>>0<q>>>0&&(I=I+1|0),P=p,I=I+c|0,q=p=(T=t)+p|0,P=jg(V^p,(c=p>>>0<P>>>0?I+1|0:I)^S,32),S=t,I=W+(t=l)|0,(p=m+P|0)>>>0<m>>>0&&(I=I+1|0),m=b,b=I,z=S=jg(S^p,m^I,24),W=I=l,m=I,V=P,I=c+EA|0,(P=(c=nA)+q|0)>>>0<c>>>0&&(I=I+1|0),I=I+m|0,m=c=P+S|0,c=jg(V^c,(P=c>>>0<P>>>0?I+1|0:I)^t,16),I=b+(q=l)|0,(t=c+p|0)>>>0<p>>>0&&(I=I+1|0),S=t,t^=z,z=I,p=jg(t,I^W,63),b=l,W=H,V=s,T=U,I=v+C|0,(U=(t=$)+fA|0)>>>0<t>>>0&&(I=I+1|0),I=I+s|0,s=t=U+H|0,t=jg(T^t,(U=t>>>0<U>>>0?I+1|0:I)^X,32),I=(I=y)+(y=l)|0,(v=t+J|0)>>>0<t>>>0&&(I=I+1|0),W=X=jg((H=v)^W,I^V,24),V=v=l,J=I,T=t,I=U+yA|0,(t=s+d|0)>>>0<s>>>0&&(I=I+1|0),s=t,I=I+v|0,v=t=t+X|0,s=jg(T^t,(X=t>>>0<s>>>0?I+1|0:I)^y,16),U=W,I=(I=J)+(J=l)|0,(y=(t=s)+H|0)>>>0<t>>>0&&(I=I+1|0),W=y,t=I,U=jg(U^y,I^V,63),H=l,V=h,T=K,iA=gA,I=N+K|0,(y=h+M|0)>>>0<M>>>0&&(I=I+1|0),h=y,I=I+(QA=fA=n[F+156>>2])|0,I=(y=(gA=n[F+152>>2])+y|0)>>>0<h>>>0?I+1|0:I,h=y,K=I,y=jg(iA^y,I^Z,32),M=t,I=(t=l)+w|0,(x=y+x|0)>>>0<y>>>0&&(I=I+1|0),V=N=jg((w=x)^V,I^T,24),QA=T=l,x=I,hA=y,I=K+T|0,(y=h+N|0)>>>0<h>>>0&&(I=I+1|0),h=y,I=I+(iA=tA=n[F+236>>2])|0,K=y=(Z=n[F+232>>2])+y|0,t=jg(hA^y,(N=y>>>0<h>>>0?I+1|0:I)^t,16),y=V,I=(I=x)+(x=l)|0,(w=t+w|0)>>>0<t>>>0&&(I=I+1|0),V=w,T=I,QA=jg(y^w,I^QA,63),iA=I=l,y=I,w=c,I=IA+cA|0,(c=f+wA|0)>>>0<f>>>0&&(I=I+1|0),I=I+y|0,IA=f=c+QA|0,f=jg(w^f,(y=f>>>0<c>>>0?I+1|0:I)^q,32),c=F,I=(w=l)+M|0,(M=f+W|0)>>>0<f>>>0&&(I=I+1|0),QA=W=jg(QA^(h=M),I^iA,24),cA=M=l,q=I,iA=f,I=y+EA|0,(y=(f=nA)+IA|0)>>>0<f>>>0&&(I=I+1|0),I=I+M|0,M=f=y+W|0,w=jg(iA^f,(W=f>>>0<y>>>0?I+1|0:I)^w,16),I=(I=q)+(q=l)|0,(y=(f=w)+h|0)>>>0<f>>>0&&(I=I+1|0),IA=y,f=y^QA,QA=I,y=jg(f,I^cA,63),h=I=l,n[c+32>>2]=y,n[c+36>>2]=I,iA=s,I=C+(c=k)|0,(G=(f=G)+(s=$)|0)>>>0<s>>>0&&(I=I+1|0),I=I+P|0,m=jg(iA^(P=s=G+m|0),(s=s>>>0<m>>>0?I+1|0:I)^J,32),k=f,I=T+(f=l)|0,(G=m+V|0)>>>0<V>>>0&&(I=I+1|0),J=c,c=I,V=J=jg(k^G,J^I,24),cA=I=l,k=I,T=m,I=s+i|0,(m=(s=R)+P|0)>>>0<s>>>0&&(I=I+1|0),I=I+k|0,wA=s=m+J|0,T=jg(T^s,(m=s>>>0<m>>>0?I+1|0:I)^f,16),I=c+(P=l)|0,(f=G+T|0)>>>0<G>>>0&&(I=I+1|0),J=f,c=f^V,V=I,G=jg(c,I^cA,63),k=l,iA=t,I=sA+(c=b)|0,(t=Y+(f=p)|0)>>>0<Y>>>0&&(I=I+1|0),I=I+X|0,s=I=(t=t+v|0)>>>0<v>>>0?I+1|0:I,b=jg(iA^t,I^x,32),v=f,I=AA+(f=l)|0,(p=b+_|0)>>>0<_>>>0&&(I=I+1|0),_=c,c=I,x=v=jg(v^p,_^I,24),_=I=l,Y=I,I=s+r|0,(s=t+L|0)>>>0<t>>>0&&(I=I+1|0),I=I+Y|0,cA=t=s+v|0,AA=jg(v=t^b,(b=t>>>0<s>>>0?I+1|0:I)^f,16),I=c+(v=l)|0,(f=p+AA|0)>>>0<p>>>0&&(I=I+1|0),Y=f,c=I,L=jg(f^x,I^_,63),f=l,I=yA+(s=H)|0,(p=d+(t=U)|0)>>>0<d>>>0&&(I=I+1|0),I=I+N|0,d=p=p+K|0,H=jg(p^oA,(H=u)^(u=p>>>0<K>>>0?I+1|0:I),32),U=t,I=z+(t=l)|0,(p=H+S|0)>>>0<S>>>0&&(I=I+1|0),_=s,s=I,x=K=jg(U^p,_^I,24),N=I=l,U=I,_=H,I=u+fA|0,(u=d+gA|0)>>>0<gA>>>0&&(I=I+1|0),H=u,I=I+U|0,I=(u=u+K|0)>>>0<H>>>0?I+1|0:I,H=u,d=I,X=jg(_^u,I^t,16),I=s+(U=l)|0,(t=p+X|0)>>>0<p>>>0&&(I=I+1|0),K=t,s=I,u=jg(t^x,I^N,63),t=l,p=F,x=G,N=k,_=c,I=k+W|0,(c=G+M|0)>>>0<M>>>0&&(I=I+1|0),G=c,I=I+(S=n[F+164>>2])|0,M=c=c+n[F+160>>2]|0,c=jg(c^X,(k=U)^(U=c>>>0<G>>>0?I+1|0:I),32),I=(I=_)+(_=l)|0,(G=c+Y|0)>>>0<c>>>0&&(I=I+1|0),k=I,N=jg(G^x,I^N,24),x=I=l,Y=I,I=U+tA|0,(U=M+Z|0)>>>0<Z>>>0&&(I=I+1|0),M=U,I=I+Y|0,gA=U=U+N|0,z=jg(c^U,_^(M=U>>>0<M>>>0?I+1|0:I),16),Y=I=l,n[p+120>>2]=z,n[p+124>>2]=I,I=I+k|0,(c=G+z|0)>>>0<G>>>0&&(I=I+1|0),G=c,k=I,p=jg(c^N,I^x,63),U=l,x=f,_=w,c=L,I=m+rA|0,(L=(w=aA)+wA|0)>>>0<w>>>0&&(I=I+1|0),I=I+f|0,f=jg(_^(Z=w=(S=c)+L|0),(w=w>>>0<L>>>0?I+1|0:I)^q,32),m=c,I=(c=l)+s|0,(L=f+K|0)>>>0<f>>>0&&(I=I+1|0),N=K=jg(m^(s=L),I^x,24),_=L=l,m=I,S=f,I=w+B|0,(w=(f=eA)+Z|0)>>>0<f>>>0&&(I=I+1|0),I=I+L|0,K=f=w+K|0,f=jg(S^f,(x=f>>>0<w>>>0?I+1|0:I)^c,16),I=(I=m)+(m=l)|0,(s=(c=f)+s|0)>>>0<c>>>0&&(I=I+1|0),Z=s,c=I,s=jg(s^N,I^_,63),w=l,L=u,N=t,_=u,I=b+e|0,(b=(u=CA)+cA|0)>>>0<u>>>0&&(I=I+1|0),I=I+t|0,X=u=_+b|0,_=jg(u^T,(t=u>>>0<b>>>0?I+1|0:I)^P,32),S=L,I=QA+(u=l)|0,(L=_+IA|0)>>>0<IA>>>0&&(I=I+1|0),b=I,q=N=jg(S^L,I^N,24),S=I=l,P=I,T=N,I=t+Q|0,(N=(t=O)+X|0)>>>0<t>>>0&&(I=I+1|0),I=I+P|0,P=t=T+N|0,W=jg(t^_,(N=t>>>0<N>>>0?I+1|0:I)^u,16),I=b+(_=l)|0,(t=L+W|0)>>>0<L>>>0&&(I=I+1|0),b=t,t=I,u=jg(b^q,I^S,63),L=l,q=h,I=h+g|0,(h=(X=y)+(y=BA)|0)>>>0<y>>>0&&(I=I+1|0),I=I+d|0,h=I=(y=h+H|0)>>>0<H>>>0?I+1|0:I,S=jg(y^AA,I^v,32),H=t,I=V+(t=l)|0,(v=J+S|0)>>>0<J>>>0&&(I=I+1|0),d=I,q=J=jg(v^X,I^q,24),IA=I=l,I=I+h|0,(h=y+J|0)>>>0<y>>>0&&(I=I+1|0),I=I+(X=n[F+204>>2])|0,J=y=h+n[F+200>>2]|0,AA=jg(y^S,(X=y>>>0<h>>>0?I+1|0:I)^t,16),y=q,I=d+(q=l)|0,(t=v+AA|0)>>>0<v>>>0&&(I=I+1|0),h=t,v=I,d=jg(y^t,I^IA,63),S=I=l,t=I,V=f,I=M+EA|0,(y=(f=nA)+gA|0)>>>0<f>>>0&&(I=I+1|0),I=I+t|0,M=f=y+d|0,f=jg(V^f,(y=f>>>0<y>>>0?I+1|0:I)^m,32),t=F,I=(I=H)+(H=l)|0,(m=f+b|0)>>>0<f>>>0&&(I=I+1|0),b=m,m=I,V=S=jg(d^b,S^I,24),T=I=l,d=I,IA=f,I=y+B|0,(y=(f=eA)+M|0)>>>0<f>>>0&&(I=I+1|0),I=I+d|0,d=f=y+S|0,IA=jg(IA^f,(S=H)^(H=f>>>0<y>>>0?I+1|0:I),16),I=m+(M=l)|0,(f=b+IA|0)>>>0<b>>>0&&(I=I+1|0),b=f,m=I,f=jg(f^V,I^T,63),y=I=l,n[t+32>>2]=f,n[t+36>>2]=I,S=U,I=U+g|0,(U=(t=p)+(p=BA)|0)>>>0<p>>>0&&(I=I+1|0),I=I+x|0,K=jg((x=p=U+K|0)^W,(p=p>>>0<K>>>0?I+1|0:I)^_,32),_=t,I=v+(t=l)|0,(U=h+K|0)>>>0<h>>>0&&(I=I+1|0),h=U,U=I,S=_=jg(_^h,I^S,24),V=I=l,v=I,W=K,I=p+e|0,(K=(p=CA)+x|0)>>>0<p>>>0&&(I=I+1|0),I=I+v|0,T=p=K+_|0,W=jg(W^p,(v=p>>>0<K>>>0?I+1|0:I)^t,16),I=U+(K=l)|0,(t=h+W|0)>>>0<h>>>0&&(I=I+1|0),U=t,x=I,h=jg(t^S,I^V,63),p=l,_=w,I=w+Q|0,(w=(t=s)+(s=O)|0)>>>0<s>>>0&&(I=I+1|0),I=I+N|0,w=I=(s=w+P|0)>>>0<P>>>0?I+1|0:I,q=jg(s^AA,I^q,32),S=t,I=k+(P=l)|0,(t=G+q|0)>>>0<G>>>0&&(I=I+1|0),G=t,k=I,N=t=jg(S^t,I^_,24),_=I=l,S=q,I=w+I|0,(t=t+s|0)>>>0<s>>>0&&(I=I+1|0),s=t,I=I+(AA=n[F+236>>2])|0,q=t=t+n[F+232>>2]|0,V=jg(S^t,(w=P)^(P=t>>>0<s>>>0?I+1|0:I),16),w=N,I=k+(N=l)|0,(t=G+V|0)>>>0<G>>>0&&(I=I+1|0),G=t,s=I,w=jg(w^t,I^_,63),t=l,k=u,S=c,I=X+(_=L)|0,(c=u+J|0)>>>0<J>>>0&&(I=I+1|0),u=c,I=I+(AA=n[F+164>>2])|0,J=c=c+n[F+160>>2]|0,c=jg(c^z,(u=c>>>0<u>>>0?I+1|0:I)^Y,32),X=k,I=(L=l)+S|0,(k=c+Z|0)>>>0<c>>>0&&(I=I+1|0),Y=k,k=I,X=_=jg(X^Y,I^_,24),S=I=l,Z=I,z=c,I=u+i|0,(u=(c=R)+J|0)>>>0<c>>>0&&(I=I+1|0),I=I+Z|0,gA=c=u+_|0,z=jg(z^c,(Z=c>>>0<u>>>0?I+1|0:I)^L,16),I=k+(J=l)|0,(c=Y+z|0)>>>0<Y>>>0&&(I=I+1|0),k=c,c=I,u=jg(k^X,I^S,63),L=l,Y=F,_=h,X=p,S=s,QA=z,I=p+H|0,(s=h+d|0)>>>0<d>>>0&&(I=I+1|0),h=s,I=I+(AA=n[F+132>>2])|0,z=s=s+n[F+128>>2]|0,s=jg(QA^s,(h=s>>>0<h>>>0?I+1|0:I)^J,32),d=_,I=(_=l)+S|0,(H=s+G|0)>>>0<s>>>0&&(I=I+1|0),p=H,H=I,J=jg(d^p,I^X,24),G=I=l,d=I,I=h+rA|0,(X=(h=aA)+z|0)>>>0<h>>>0&&(I=I+1|0),I=I+d|0,QA=h=X+J|0,AA=jg(s^h,_^(d=h>>>0<X>>>0?I+1|0:I),16),s=I=l,n[Y+120>>2]=AA,n[Y+124>>2]=I,I=I+H|0,(h=p+AA|0)>>>0<p>>>0&&(I=I+1|0),H=h,p=G,G=I,h=jg(h^J,p^I,63),p=l,Y=w,J=t,_=c,S=w,I=v+C|0,(w=(c=$)+T|0)>>>0<c>>>0&&(I=I+1|0),I=I+t|0,X=c=S+w|0,c=jg(c^IA,(w=c>>>0<w>>>0?I+1|0:I)^M,32),S=Y,I=(Y=l)+_|0,(k=(t=c)+k|0)>>>0<t>>>0&&(I=I+1|0),v=I,M=t=jg(S^k,I^J,24),J=I=l,z=c,I=w+I|0,(c=t+X|0)>>>0<t>>>0&&(I=I+1|0),I=I+(S=n[F+156>>2])|0,_=t=c+n[F+152>>2]|0,z=jg(z^t,(X=t>>>0<c>>>0?I+1|0:I)^Y,16),I=v+(Y=l)|0,(t=k+z|0)>>>0<k>>>0&&(I=I+1|0),k=t,v=I,c=jg(t^M,I^J,63),w=l,I=P+(M=L)|0,(u=q+(t=u)|0)>>>0<q>>>0&&(I=I+1|0),L=u,I=I+(J=n[F+204>>2])|0,L=I=(u=u+n[F+200>>2]|0)>>>0<L>>>0?I+1|0:I,J=jg(u^W,I^K,32),S=t,I=m+(P=l)|0,(t=b+J|0)>>>0<b>>>0&&(I=I+1|0),b=t,m=I,K=t=jg(S^t,I^M,24),M=I=l,q=J,I=L+I|0,(t=t+u|0)>>>0<u>>>0&&(I=I+1|0),u=t,I=I+(S=n[F+148>>2])|0,J=t=t+n[F+144>>2]|0,W=jg(q^t,(S=P)^(P=t>>>0<u>>>0?I+1|0:I),16),u=K,I=m+(K=l)|0,(t=b+W|0)>>>0<b>>>0&&(I=I+1|0),b=I,u=jg(u^t,I^M,63),L=l,m=f,M=y,I=y+Z|0,(y=f+gA|0)>>>0<f>>>0&&(I=I+1|0),I=I+(q=n[F+196>>2])|0,q=f=y+n[F+192>>2]|0,N=jg(f^V,(y=f>>>0<y>>>0?I+1|0:I)^N,32),S=m,I=x+(m=l)|0,(f=U+N|0)>>>0<U>>>0&&(I=I+1|0),U=f,M=f=jg(S^f,I^M,24),Z=I,V=n[F+220>>2],S=N,I=(x=l)+y|0,(y=f+q|0)>>>0<f>>>0&&(I=I+1|0),I=I+(IA=V)|0,q=f=(N=n[F+216>>2])+y|0,y=jg(S^f,(T=m)^(m=f>>>0<y>>>0?I+1|0:I),16),S=M,I=(M=l)+Z|0,(U=(f=y)+U|0)>>>0<f>>>0&&(I=I+1|0),f=x,x=I,Z=f=jg(S^U,f^I,63),S=I=l,I=d+I|0,(d=f+QA|0)>>>0<f>>>0&&(I=I+1|0),I=I+(T=n[F+236>>2])|0,T=f=d+n[F+232>>2]|0,IA=jg(f^z,(IA=Y)^(Y=f>>>0<d>>>0?I+1|0:I),32),I=b+(d=l)|0,(f=t+IA|0)>>>0<t>>>0&&(I=I+1|0),b=f,t=f^Z,Z=I,f=jg(t,I^S,24),t=F,S=f,z=I=l,I=Y+I|0,(Y=f+T|0)>>>0<f>>>0&&(I=I+1|0),I=I+V|0,V=f=Y+N|0,IA=jg(f^IA,(Y=d)^(d=f>>>0<N>>>0?I+1|0:I),16),I=Z+(N=l)|0,(f=b+IA|0)>>>0<b>>>0&&(I=I+1|0),b=f,Z=I,f=jg(f^S,I^z,63),Y=I=l,n[t+32>>2]=f,n[t+36>>2]=I,S=p,I=p+rA|0,(p=(t=h)+(h=aA)|0)>>>0<h>>>0&&(I=I+1|0),I=I+X|0,_=jg((X=h=p+_|0)^W,(h=h>>>0<_>>>0?I+1|0:I)^K,32),K=t,I=x+(t=l)|0,(p=U+_|0)>>>0<U>>>0&&(I=I+1|0),U=I,z=x=jg(K^p,I^S,24),W=I=l,K=I,S=x,I=h+Q|0,(x=(h=O)+X|0)>>>0<h>>>0&&(I=I+1|0),I=I+K|0,T=h=S+x|0,S=jg(h^_,(K=h>>>0<x>>>0?I+1|0:I)^t,16),I=U+(x=l)|0,(t=p+S|0)>>>0<p>>>0&&(I=I+1|0),_=t,X=I,h=jg(t^z,I^W,63),t=l,U=w,z=y,I=w+EA|0,(y=(p=c)+(c=nA)|0)>>>0<c>>>0&&(I=I+1|0),I=I+P|0,I=(c=y+J|0)>>>0<J>>>0?I+1|0:I,J=c,c=I,P=jg(z^J,I^M,32),I=G+(y=l)|0,(w=H+P|0)>>>0<H>>>0&&(I=I+1|0),H=w^p,p=I,M=H=jg(H,I^U,24),W=I=l,U=I,G=H,I=c+g|0,(H=(c=BA)+J|0)>>>0<c>>>0&&(I=I+1|0),I=I+U|0,I=(c=G+H|0)>>>0<H>>>0?I+1|0:I,H=c,G=I,z=jg(c^P,I^y,16),I=p+(P=l)|0,(c=w+z|0)>>>0<w>>>0&&(I=I+1|0),p=c,U=I,y=jg(c^M,I^W,63),c=l,I=m+(M=L)|0,(u=q+(w=u)|0)>>>0<q>>>0&&(I=I+1|0),L=u,I=I+(J=n[F+156>>2])|0,L=I=(u=u+n[F+152>>2]|0)>>>0<L>>>0?I+1|0:I,J=jg(u^AA,I^s,32),m=w,I=v+(w=l)|0,(s=k+J|0)>>>0<k>>>0&&(I=I+1|0),k=s,v=I,m=s=jg(m^s,I^M,24),M=I=l,I=L+I|0,(s=s+u|0)>>>0<u>>>0&&(I=I+1|0),u=s,I=I+(AA=n[F+204>>2])|0,gA=s=s+n[F+200>>2]|0,q=jg(q=s^J,(J=s>>>0<u>>>0?I+1|0:I)^w,16),I=v+(L=l)|0,(s=k+q|0)>>>0<k>>>0&&(I=I+1|0),k=s,v=I,s=jg(s^m,I^M,63),u=l,w=F,m=h,M=t,W=h,I=d+B|0,(d=(h=eA)+V|0)>>>0<h>>>0&&(I=I+1|0),I=I+t|0,d=jg((t=h=W+d|0)^q,(h=L)^(L=t>>>0<d>>>0?I+1|0:I),32),I=U+(q=l)|0,(h=p+d|0)>>>0<p>>>0&&(I=I+1|0),p=I,M=jg(h^m,I^M,24),I=L+(U=l)|0,(L=t+M|0)>>>0<t>>>0&&(I=I+1|0),t=(t=L)+(L=n[F+128>>2])|0,I=n[F+132>>2]+I|0,V=t,AA=jg(d^t,q^(m=t>>>0<L>>>0?I+1|0:I),16),L=I=l,n[w+120>>2]=AA,n[w+124>>2]=I,I=p+I|0,(t=h+AA|0)>>>0<h>>>0&&(I=I+1|0),d=t,t^=M,M=I,w=jg(t,I^U,63),h=l,p=c,t=y,I=K+e|0,(U=(y=CA)+T|0)>>>0<y>>>0&&(I=I+1|0),I=I+c|0,q=y=(q=t)+U|0,K=jg(y^IA,(c=y>>>0<U>>>0?I+1|0:I)^N,32),N=t,I=v+(y=l)|0,(t=k+K|0)>>>0<k>>>0&&(I=I+1|0),U=t,k=p,p=I,k=t=jg(N^t,k^I,24),v=I=l,T=K,I=c+I|0,(c=t+q|0)>>>0<t>>>0&&(I=I+1|0),I=I+(W=n[F+164>>2])|0,K=t=c+n[F+160>>2]|0,c=jg(T^t,(N=t>>>0<c>>>0?I+1|0:I)^y,16),q=k,I=p+(y=l)|0,(t=c+U|0)>>>0<U>>>0&&(I=I+1|0),k=t,p=v,v=I,p=jg(q^t,p^I,63),U=l,q=u,I=u+G|0,(s=H+(t=s)|0)>>>0<H>>>0&&(I=I+1|0),u=s,I=I+(W=n[F+196>>2])|0,x=jg((T=S)^(S=s=s+n[F+192>>2]|0),(s=s>>>0<u>>>0?I+1|0:I)^x,32),G=t,I=Z+(t=l)|0,(u=b+x|0)>>>0<b>>>0&&(I=I+1|0),H=I,Z=b=jg(G^u,I^q,24),q=I=l,G=I,T=b,I=s+C|0,(b=(s=$)+S|0)>>>0<s>>>0&&(I=I+1|0),I=I+G|0,G=s=T+b|0,W=jg(s^x,(b=s>>>0<b>>>0?I+1|0:I)^t,16),I=H+(x=l)|0,(t=u+W|0)>>>0<u>>>0&&(I=I+1|0),H=t,t=I,s=jg(H^Z,I^q,63),u=l,Z=f,q=Y,I=Y+J|0,(Y=f+gA|0)>>>0<f>>>0&&(I=I+1|0),I=I+(S=n[F+148>>2])|0,S=jg((T=z)^(z=f=Y+n[F+144>>2]|0),(f=f>>>0<Y>>>0?I+1|0:I)^P,32),Y=t,I=X+(t=l)|0,(P=_+S|0)>>>0<_>>>0&&(I=I+1|0),_=P^Z,Z=I,X=_=jg(_,I^q,24),q=I=l,J=I,T=_,I=f+i|0,(_=(f=R)+z|0)>>>0<f>>>0&&(I=I+1|0),I=I+J|0,J=f=T+_|0,IA=jg(f^S,(_=f>>>0<_>>>0?I+1|0:I)^t,16),t=X,I=Z+(X=l)|0,(f=P+IA|0)>>>0<P>>>0&&(I=I+1|0),P=f,Z=I,q=jg(t^f,I^q,63),S=I=l,f=I,T=c,I=m+C|0,(c=(t=$)+V|0)>>>0<t>>>0&&(I=I+1|0),I=I+f|0,z=t=c+q|0,f=jg(T^t,(c=t>>>0<c>>>0?I+1|0:I)^y,32),t=F,I=(y=l)+Y|0,(H=f+H|0)>>>0<f>>>0&&(I=I+1|0),Y=H,H=I,S=q=jg(q^Y,S^I,24),T=I=l,m=I,V=f,I=c+e|0,(c=(f=CA)+z|0)>>>0<f>>>0&&(I=I+1|0),I=I+m|0,cA=f=c+q|0,V=jg(V^f,(m=f>>>0<c>>>0?I+1|0:I)^y,16),c=S,I=H+(q=l)|0,(f=Y+V|0)>>>0<Y>>>0&&(I=I+1|0),S=f,z=I,y=jg(c^f,I^T,63),Y=I=l,n[t+32>>2]=y,n[t+36>>2]=I,I=Q+(t=h)|0,(w=(f=w)+(c=O)|0)>>>0<c>>>0&&(I=I+1|0),I=I+N|0,w=I=(c=w+K|0)>>>0<K>>>0?I+1|0:I,x=jg(c^W,I^x,32),N=f,I=Z+(h=l)|0,(f=P+x|0)>>>0<P>>>0&&(I=I+1|0),H=f,P=t,t=I,P=f=jg(N^f,P^I,24),K=I=l,I=w+I|0,(f=c+f|0)>>>0<c>>>0&&(I=I+1|0),I=I+(N=n[F+204>>2])|0,W=f=(c=f)+n[F+200>>2]|0,gA=jg(w=f^x,(x=f>>>0<c>>>0?I+1|0:I)^h,16),c=P,I=t+(P=l)|0,(f=H+gA|0)>>>0<H>>>0&&(I=I+1|0),Z=f,t=K,K=I,w=jg(c^f,t^I,63),f=l,I=b+(c=U)|0,(h=G+(t=p)|0)>>>0<G>>>0&&(I=I+1|0),p=h,I=I+(H=n[F+220>>2])|0,p=I=(h=h+n[F+216>>2]|0)>>>0<p>>>0?I+1|0:I,N=jg(h^IA,I^X,32),G=t,I=M+(U=l)|0,(t=N+d|0)>>>0<d>>>0&&(I=I+1|0),H=t,b=c,c=I,G=t=jg(G^t,b^I,24),b=I=l,I=p+I|0,(t=t+h|0)>>>0<h>>>0&&(I=I+1|0),h=t,I=I+(M=n[F+156>>2])|0,IA=t=t+n[F+152>>2]|0,QA=jg(t^N,(d=t>>>0<h>>>0?I+1|0:I)^U,16),I=c+(M=l)|0,(t=H+QA|0)>>>0<H>>>0&&(I=I+1|0),p=t,U=I,t=jg(t^G,I^b,63),h=l,H=u,I=u+_|0,(s=J+(c=s)|0)>>>0<J>>>0&&(I=I+1|0),u=s,I=I+(G=n[F+132>>2])|0,u=I=(s=s+n[F+128>>2]|0)>>>0<u>>>0?I+1|0:I,N=jg(s^AA,I^L,32),b=c,I=v+(L=l)|0,(c=k+N|0)>>>0<k>>>0&&(I=I+1|0),G=c,k=H,H=I,k=c=jg(b^c,k^I,24),b=I=l,I=u+I|0,(c=c+s|0)>>>0<s>>>0&&(I=I+1|0),s=c,I=I+(J=n[F+196>>2])|0,v=c=c+n[F+192>>2]|0,J=jg(u=c^N,(N=c>>>0<s>>>0?I+1|0:I)^L,16),I=H+(L=l)|0,(c=G+J|0)>>>0<G>>>0&&(I=I+1|0),H=c,G=I,u=jg(c^k,I^b,63),c=l,s=F,k=w,b=f,_=w,I=m+EA|0,(m=(w=nA)+cA|0)>>>0<w>>>0&&(I=I+1|0),I=I+f|0,_=jg((f=w=_+m|0)^J,(w=L)^(L=f>>>0<m>>>0?I+1|0:I),32),I=U+(AA=l)|0,(w=p+_|0)>>>0<p>>>0&&(I=I+1|0),p=w,U=I,X=jg(w^k,I^b,24),k=F,w=n[F+144>>2],I=L+(b=l)|0,(L=f+X|0)>>>0<f>>>0&&(I=I+1|0),L=(f=w)+L|0,I=(m=n[k+148>>2])+I|0,T=jg(k=_^(J=L),AA^(_=J>>>0<f>>>0?I+1|0:I),16),L=I=l,n[s+120>>2]=T,n[s+124>>2]=I,k=X,I=U+I|0,(f=p+T|0)>>>0<p>>>0&&(I=I+1|0),X=f,s=I,p=jg(k^f,I^b,63),U=l,f=t,k=h,I=h+x|0,(h=t+W|0)>>>0<t>>>0&&(I=I+1|0),I=I+(b=n[F+236>>2])|0,b=jg((x=t=h+n[F+232>>2]|0)^V,(t=t>>>0<h>>>0?I+1|0:I)^q,32),q=f,I=G+(f=l)|0,(h=b+H|0)>>>0<H>>>0&&(I=I+1|0),H=I,q=k=jg(q^h,I^k,24),W=I=l,G=I,V=b,b=k,I=t+rA|0,(k=(t=aA)+x|0)>>>0<t>>>0&&(I=I+1|0),I=I+G|0,b=t=b+k|0,t=jg(V^t,(x=t>>>0<k>>>0?I+1|0:I)^f,16),G=q,I=H+(q=l)|0,(f=t+h|0)>>>0<h>>>0&&(I=I+1|0),AA=f,H=W,W=I,h=jg(G^f,H^I,63),H=l,G=c,f=u,I=d+g|0,(k=(u=BA)+IA|0)>>>0<u>>>0&&(I=I+1|0),I=I+c|0,V=jg((c=u=(V=f)+k|0)^gA,(u=c>>>0<k>>>0?I+1|0:I)^P,32),P=f,I=z+(k=l)|0,(f=S+V|0)>>>0<S>>>0&&(I=I+1|0),d=f,P=f=jg(P^f,I^G,24),S=I,z=I=n[F+164>>2],IA=I,I=u+(G=l)|0,(f=c+f|0)>>>0<c>>>0&&(I=I+1|0),I=I+IA|0,IA=f=(cA=n[F+160>>2])+(c=f)|0,u=jg(u=f^V,(V=f>>>0<c>>>0?I+1|0:I)^k,16),k=P,I=(P=l)+S|0,(c=(f=u)+d|0)>>>0<f>>>0&&(I=I+1|0),f=I,G=jg(k^c,I^G,63),k=l,S=Y,I=Y+i|0,(Y=(d=y)+(y=R)|0)>>>0<y>>>0&&(I=I+1|0),I=I+N|0,M=jg((N=y=Y+v|0)^QA,(y=y>>>0<v>>>0?I+1|0:I)^M,32),I=K+(Y=l)|0,(v=M+Z|0)>>>0<Z>>>0&&(I=I+1|0),K=v^d,d=I,gA=Z=jg(K,I^S,24),QA=I=l,K=I,S=M,I=y+B|0,(M=(y=eA)+N|0)>>>0<y>>>0&&(I=I+1|0),I=I+K|0,K=y=M+Z|0,S=jg(S^y,(N=Y)^(Y=y>>>0<M>>>0?I+1|0:I),16),I=d+(M=l)|0,(y=v+S|0)>>>0<v>>>0&&(I=I+1|0),v=I,gA=jg(y^gA,I^QA,63),QA=I=l,d=I,N=t,I=_+i|0,(R=R+J|0)>>>0<J>>>0&&(I=I+1|0),I=I+d|0,d=R=(t=R)+gA|0,R=jg(N^R,(Z=R>>>0<t>>>0?I+1|0:I)^q,32),I=(N=l)+f|0,(t=(f=R)+c|0)>>>0<f>>>0&&(I=I+1|0),c=t,J=I,f=jg(gA^t,QA^I,24),t=F,_=f,q=I=l,gA=R,I=Z+I|0,(R=f+d|0)>>>0<d>>>0&&(I=I+1|0),I=I+m|0,QA=R=(f=R)+w|0,gA=jg(gA^R,(m=R>>>0<f>>>0?I+1|0:I)^N,16),I=J+(d=l)|0,(R=c+gA|0)>>>0<c>>>0&&(I=I+1|0),Z=R,c=I,R=jg(R^_,I^q,63),w=I=l,n[t+32>>2]=R,n[t+36>>2]=I,_=u,I=x+(t=U)|0,(u=b+(f=p)|0)>>>0<b>>>0&&(I=I+1|0),p=u,I=I+(N=n[F+196>>2])|0,P=jg(_^(x=u=u+n[F+192>>2]|0),(u=u>>>0<p>>>0?I+1|0:I)^P,32),U=f,I=v+(p=l)|0,(f=y+P|0)>>>0<y>>>0&&(I=I+1|0),y=f,v=t,t=I,U=f=jg(U^f,v^I,24),b=I=l,I=u+I|0,(u=f+x|0)>>>0<f>>>0&&(I=I+1|0),I=I+z|0,q=f=u+cA|0,z=jg(f^P,(v=f>>>0<u>>>0?I+1|0:I)^p,16),I=t+(P=l)|0,(f=y+z|0)>>>0<y>>>0&&(I=I+1|0),x=f,y=I,u=jg(f^U,I^b,63),f=l,p=h,I=rA+(U=H)|0,(h=(t=aA)+h|0)>>>0<t>>>0&&(I=I+1|0),I=I+V|0,b=t=h+IA|0,t=jg(t^S,(h=t>>>0<IA>>>0?I+1|0:I)^M,32),_=p,I=(I=s)+(s=l)|0,(H=t+X|0)>>>0<t>>>0&&(I=I+1|0),p=H,H=U,U=I,N=M=jg(_^p,H^I,24),J=I=l,H=I,_=t,I=h+C|0,(h=(t=$)+b|0)>>>0<t>>>0&&(I=I+1|0),I=I+H|0,H=t=h+M|0,S=jg(_^t,(b=t>>>0<h>>>0?I+1|0:I)^s,16),I=U+(M=l)|0,(t=p+S|0)>>>0<p>>>0&&(I=I+1|0),U=t,s=I,t=jg(t^N,I^J,63),h=l,N=k,I=k+g|0,(k=(p=G)+(G=BA)|0)>>>0<G>>>0&&(I=I+1|0),I=I+Y|0,J=G=k+K|0,K=jg(G^T,(k=L)^(L=G>>>0<K>>>0?I+1|0:I),32),k=p,I=W+(p=l)|0,(Y=K+AA|0)>>>0<AA>>>0&&(I=I+1|0),G=I,_=N=jg(k^Y,I^N,24),AA=I=l,k=I,X=K,I=L+B|0,(K=(L=eA)+J|0)>>>0<L>>>0&&(I=I+1|0),I=I+k|0,IA=L=K+N|0,X=jg(X^L,(k=L>>>0<K>>>0?I+1|0:I)^p,16),I=G+(K=l)|0,(L=Y+X|0)>>>0<Y>>>0&&(I=I+1|0),N=I,L=jg((G=L)^_,I^AA,63),p=l,Y=F,J=u,_=f,V=u,I=m+e|0,(m=(u=CA)+QA|0)>>>0<u>>>0&&(I=I+1|0),I=I+f|0,m=I=(u=V+m|0)>>>0<m>>>0?I+1|0:I,f=jg(u^X,I^K,32),I=(X=l)+s|0,(U=f+U|0)>>>0<f>>>0&&(I=I+1|0),AA=U,U=I,J=jg(AA^J,I^_,24),I=m+(K=l)|0,(s=u+J|0)>>>0<u>>>0&&(I=I+1|0),s=(u=n[F+216>>2])+s|0,I=n[F+220>>2]+I|0,V=s,s=jg(f^s,X^(m=s>>>0<u>>>0?I+1|0:I),16),u=I=l,n[Y+120>>2]=s,n[Y+124>>2]=I,_=J,I=I+U|0,(Y=(f=s)+AA|0)>>>0<f>>>0&&(I=I+1|0),J=Y,f=K,K=I,f=jg(_^Y,f^I,63),Y=l,U=t,_=h,I=h+v|0,(h=t+q|0)>>>0<t>>>0&&(I=I+1|0),I=I+(X=n[F+204>>2])|0,d=jg((X=t=h+n[F+200>>2]|0)^gA,(t=t>>>0<h>>>0?I+1|0:I)^d,32),v=U,I=N+(h=l)|0,(U=G+d|0)>>>0<G>>>0&&(I=I+1|0),G=I,_=N=jg(v^U,I^_,24),q=I=l,v=I,W=d,I=t+Q|0,(d=(t=O)+X|0)>>>0<t>>>0&&(I=I+1|0),I=I+v|0,T=t=d+N|0,AA=jg(W^t,(v=t>>>0<d>>>0?I+1|0:I)^h,16),I=G+(d=l)|0,(t=U+AA|0)>>>0<U>>>0&&(I=I+1|0),G=t,t=I,h=jg(G^_,I^q,63),U=l,_=p,X=c,q=I=n[F+156>>2],c=I,I=p+b|0,(L=H+(N=L)|0)>>>0<H>>>0&&(I=I+1|0),I=I+c|0,c=jg((W=z)^(z=L=(gA=n[F+152>>2])+(p=L)|0),(L=L>>>0<p>>>0?I+1|0:I)^P,32),I=(p=l)+X|0,(b=c+Z|0)>>>0<c>>>0&&(I=I+1|0),H=b,b=I,N=Z=jg(H^N,I^_,24),_=I=l,P=I,X=c,I=L+EA|0,(L=(c=nA)+z|0)>>>0<c>>>0&&(I=I+1|0),I=I+P|0,P=c=L+Z|0,W=jg(X^c,(Z=c>>>0<L>>>0?I+1|0:I)^p,16),X=N,I=b+(N=l)|0,(c=H+W|0)>>>0<H>>>0&&(I=I+1|0),p=c,H=I,c=jg(X^c,I^_,63),L=l,_=w,X=y,z=S,I=w+k|0,(w=(b=R)+IA|0)>>>0<b>>>0&&(I=I+1|0),I=I+(y=n[F+236>>2])|0,S=R=w+n[F+232>>2]|0,y=jg(z^R,(w=R>>>0<w>>>0?I+1|0:I)^M,32),R=b,I=(k=l)+X|0,(b=y+x|0)>>>0<y>>>0&&(I=I+1|0),M=R=jg(R^b,I^_,24),_=I,z=n[F+132>>2],QA=y,I=(x=l)+w|0,(w=R+S|0)>>>0<R>>>0&&(I=I+1|0),I=I+(IA=z)|0,X=R=(y=n[F+128>>2])+w|0,w=jg(QA^R,(S=k)^(k=R>>>0<w>>>0?I+1|0:I),16),R=M,I=(M=l)+_|0,(b=w+b|0)>>>0<w>>>0&&(I=I+1|0),_=x,x=I,_=R=jg(R^b,_^I,63),S=I=l,IA=AA,I=m+I|0,(m=R+V|0)>>>0<R>>>0&&(I=I+1|0),I=I+z|0,AA=R=y+m|0,z=jg(IA^R,(y=R>>>0<y>>>0?I+1|0:I)^d,32),R=F,I=H+(m=l)|0,(H=p+z|0)>>>0<p>>>0&&(I=I+1|0),p=H,H=I,S=_=jg(p^_,I^S,24),V=I=l,d=I,IA=_,I=y+g|0,(_=(y=BA)+AA|0)>>>0<y>>>0&&(I=I+1|0),I=I+d|0,d=y=IA+_|0,IA=jg(y^z,(IA=m)^(m=y>>>0<_>>>0?I+1|0:I),16),AA=S,I=H+(_=l)|0,(y=p+IA|0)>>>0<p>>>0&&(I=I+1|0),S=y,z=I,y=jg(AA^y,I^V,63),p=I=l,n[R+32>>2]=y,n[R+36>>2]=I,R=f,H=Y,I=Y+v|0,(Y=f+T|0)>>>0<f>>>0&&(I=I+1|0),I=I+(AA=n[F+148>>2])|0,N=jg((AA=f=Y+n[F+144>>2]|0)^W,(f=f>>>0<Y>>>0?I+1|0:I)^N,32),v=R,I=x+(Y=l)|0,(R=b+N|0)>>>0<b>>>0&&(I=I+1|0),b=R,R=H,H=I,R=jg(v^b,R^I,24),x=I=l,I=f+I|0,(f=(v=R)+AA|0)>>>0<v>>>0&&(I=I+1|0),I=I+q|0,V=R=f+gA|0,q=jg(q=R^N,(N=R>>>0<f>>>0?I+1|0:I)^Y,16),f=v,I=H+(v=l)|0,(R=b+q|0)>>>0<b>>>0&&(I=I+1|0),H=x,x=I,Y=jg(f^(b=R),H^I,63),H=l,R=h,T=w,I=Z+(f=U)|0,(w=h+P|0)>>>0<P>>>0&&(I=I+1|0),I=I+(AA=n[F+164>>2])|0,P=jg(T^(Z=w=(h=w)+n[F+160>>2]|0),(w=w>>>0<h>>>0?I+1|0:I)^M,32),U=R,I=K+(R=l)|0,(h=P+J|0)>>>0<J>>>0&&(I=I+1|0),M=f,f=I,M=K=jg(U^h,M^I,24),J=I=l,U=I,W=P,I=w+B|0,(P=(w=eA)+Z|0)>>>0<w>>>0&&(I=I+1|0),I=I+U|0,T=w=P+K|0,W=jg(W^w,(U=w>>>0<P>>>0?I+1|0:I)^R,16),I=f+(P=l)|0,(R=h+W|0)>>>0<h>>>0&&(I=I+1|0),K=I,R=jg((h=R)^M,I^J,63),w=l,M=c,Z=L,I=L+C|0,(c=(f=$)+c|0)>>>0<f>>>0&&(I=I+1|0),I=I+k|0,k=f=c+X|0,f=jg(f^s,(c=f>>>0<X>>>0?I+1|0:I)^u,32),I=(I=t)+(t=l)|0,(u=f+G|0)>>>0<f>>>0&&(I=I+1|0),s=u,u=I,M=G=jg(s^M,I^Z,24),Z=I=l,L=I,J=f,I=c+rA|0,(c=(f=aA)+k|0)>>>0<f>>>0&&(I=I+1|0),I=I+L|0,G=f=c+G|0,J=jg(J^f,(k=f>>>0<c>>>0?I+1|0:I)^t,16),t=M,I=u+(L=l)|0,(f=s+J|0)>>>0<s>>>0&&(I=I+1|0),M=f,c=I,s=jg(t^f,I^Z,63),f=l,Z=H,I=H+m|0,(Y=d+(u=Y)|0)>>>0<d>>>0&&(I=I+1|0),H=Y,I=I+(X=n[(t=F)+196>>2])|0,I=(Y=Y+n[t+192>>2]|0)>>>0<H>>>0?I+1|0:I,H=L,L=I,d=jg(Y^J,H^I,32),m=u,I=K+(J=l)|0,(u=h+d|0)>>>0<h>>>0&&(I=I+1|0),H=I,K=jg(m^(h=u),I^Z,24),I=L+(m=l)|0,(u=Y+K|0)>>>0<Y>>>0&&(I=I+1|0),u=(L=n[F+200>>2])+u|0,I=n[F+204>>2]+I|0,gA=u,AA=jg(d^u,J^(Y=u>>>0<L>>>0?I+1|0:I),16),u=I=l,n[t+120>>2]=AA,n[t+124>>2]=I,I=I+H|0,(t=h+AA|0)>>>0<h>>>0&&(I=I+1|0),H=t,h=m,m=I,t=jg(t^K,h^I,63),L=l,d=w,K=c,I=w+N|0,(w=(h=R)+V|0)>>>0<h>>>0&&(I=I+1|0),I=I+(c=QA=n[F+212>>2])|0,J=R=(Z=n[F+208>>2])+w|0,c=jg(R^IA,(w=R>>>0<w>>>0?I+1|0:I)^_,32),_=h,I=(h=l)+K|0,(K=c+M|0)>>>0<c>>>0&&(I=I+1|0),R=d,d=I,M=R=jg(_^K,R^I,24),N=I=l,_=c,I=w+I|0,(c=R+J|0)>>>0<R>>>0&&(I=I+1|0),I=I+(X=n[F+220>>2])|0,IA=R=c+n[F+216>>2]|0,c=jg(_^R,(J=R>>>0<c>>>0?I+1|0:I)^h,16),w=M,I=d+(M=l)|0,(R=c+K|0)>>>0<K>>>0&&(I=I+1|0),d=R,K=I,w=jg(w^R,I^N,63),h=l,R=s,N=f,_=q,q=s,I=U+EA|0,(U=(s=nA)+T|0)>>>0<s>>>0&&(I=I+1|0),I=I+f|0,q=s=q+U|0,X=jg(_^s,(f=s>>>0<U>>>0?I+1|0:I)^v,32),_=R,I=z+(s=l)|0,(R=S+X|0)>>>0<S>>>0&&(I=I+1|0),v=I,N=R=jg(_^(U=R),I^N,24),_=I=l,S=X,I=f+I|0,(f=R+q|0)>>>0<R>>>0&&(I=I+1|0),I=I+(z=n[F+236>>2])|0,X=R=f+n[F+232>>2]|0,S=jg(S^R,(q=R>>>0<f>>>0?I+1|0:I)^s,16),s=N,I=v+(N=l)|0,(R=U+S|0)>>>0<U>>>0&&(I=I+1|0),U=I,R=jg(s^(f=R),I^_,63),s=l,_=p,I=p+Q|0,(p=(v=y)+(y=O)|0)>>>0<y>>>0&&(I=I+1|0),I=I+k|0,P=jg((z=y=p+G|0)^W,(y=y>>>0<G>>>0?I+1|0:I)^P,32),I=x+(p=l)|0,(G=b+P|0)>>>0<b>>>0&&(I=I+1|0),k=I,x=v=jg(G^v,I^_,24),W=I=l,b=I,_=v,I=y+e|0,(v=(y=CA)+z|0)>>>0<y>>>0&&(I=I+1|0),I=I+b|0,_=jg((z=y=_+v|0)^P,(y=y>>>0<v>>>0?I+1|0:I)^p,16),I=k+(p=l)|0,(k=G+_|0)>>>0<G>>>0&&(I=I+1|0),G=k,k=I,v=jg(G^x,I^W,63),P=I=l,b=I,x=c,I=Y+Q|0,(c=O+gA|0)>>>0<O>>>0&&(I=I+1|0),I=I+b|0,W=O=c+v|0,x=jg(x^O,(c=O>>>0<c>>>0?I+1|0:I)^M,32),I=U+(Y=l)|0,(O=f+x|0)>>>0<f>>>0&&(I=I+1|0),b=I,O=jg(v^(U=O),P^I,24),f=F,P=I=l,I=c+I|0,(c=(v=O)+W|0)>>>0<v>>>0&&(I=I+1|0),I=I+QA|0,W=O=c+Z|0,M=jg(O^x,(c=Y)^(Y=O>>>0<Z>>>0?I+1|0:I),16),c=v,I=b+(v=l)|0,(O=U+M|0)>>>0<U>>>0&&(I=I+1|0),b=I,O=jg(c^(U=O),I^P,63),c=I=l,n[f+32>>2]=O,n[f+36>>2]=I,f=t,I=(P=L)+J|0,(L=t+IA|0)>>>0<t>>>0&&(I=I+1|0),I=I+(x=n[F+164>>2])|0,Z=jg((J=t=L+n[F+160>>2]|0)^S,(t=t>>>0<L>>>0?I+1|0:I)^N,32),S=f,I=k+(L=l)|0,(f=G+Z|0)>>>0<G>>>0&&(I=I+1|0),G=f,k=I,P=f=jg(S^f,I^P,24),x=I=l,I=t+I|0,(t=f+J|0)>>>0<f>>>0&&(I=I+1|0),I=I+(S=n[F+196>>2])|0,S=f=t+n[F+192>>2]|0,Z=jg(f^Z,(N=L)^(L=f>>>0<t>>>0?I+1|0:I),16),I=k+(IA=l)|0,(f=G+Z|0)>>>0<G>>>0&&(I=I+1|0),G=f,k=I,x=jg(f^P,I^x,63),f=l,P=h,I=h+q|0,(w=X+(t=w)|0)>>>0<X>>>0&&(I=I+1|0),I=I+(N=n[F+204>>2])|0,N=jg((J=w=(h=w)+n[F+200>>2]|0)^_,(w=w>>>0<h>>>0?I+1|0:I)^p,32),_=t,I=m+(t=l)|0,(h=H+N|0)>>>0<H>>>0&&(I=I+1|0),p=I,P=m=jg(_^h,I^P,24),_=I=l,H=I,I=w+e|0,(w=J+CA|0)>>>0<CA>>>0&&(I=I+1|0),I=I+H|0,N=jg((X=CA=w+m|0)^N,(w=X>>>0<w>>>0?I+1|0:I)^t,16),I=p+(H=l)|0,(CA=h+N|0)>>>0<h>>>0&&(I=I+1|0),p=I,CA=jg((h=CA)^P,I^_,63),t=l,m=R,P=s,I=y+s|0,(s=R+z|0)>>>0<R>>>0&&(I=I+1|0),I=I+(J=n[F+236>>2])|0,J=jg((_=R=s+n[F+232>>2]|0)^AA,(R=R>>>0<s>>>0?I+1|0:I)^u,32),I=K+(s=l)|0,(y=d+J|0)>>>0<d>>>0&&(I=I+1|0),u=I,P=d=jg(y^m,I^P,24),q=I=l,m=I,I=R+C|0,(R=_+$|0)>>>0<$>>>0&&(I=I+1|0),I=I+m|0,K=jg((m=$=R+d|0)^J,(d=m>>>0<R>>>0?I+1|0:I)^s,16),I=u+(J=l)|0,($=y+K|0)>>>0<y>>>0&&(I=I+1|0),u=I,R=jg((y=$)^P,I^q,63),s=l,$=F,I=Y+g|0,(Y=W+BA|0)>>>0<BA>>>0&&(I=I+1|0),I=I+(P=f)|0,_=EA,EA=I=(BA=Y+x|0)>>>0<Y>>>0?I+1|0:I,I=_+I|0,(Y=BA+nA|0)>>>0<BA>>>0&&(I=I+1|0),nA=I,EA=jg(K^BA,J^EA,32),I=p+(P=l)|0,(BA=h+EA|0)>>>0<h>>>0&&(I=I+1|0),h=f,f=I,BA=jg((p=BA)^x,h^I,24),I=(K=l)+nA|0,(h=Y+BA|0)>>>0<BA>>>0&&(I=I+1|0),n[$>>2]=h,n[$+4>>2]=I,nA=I,$=jg(h^EA,I^P,16),I=l,n[F+120>>2]=$,n[F+124>>2]=I,I=f+I|0,(f=p+$|0)>>>0<$>>>0&&(I=I+1|0),n[F+80>>2]=f,n[F+84>>2]=I,DA=F,uA=jg(f^BA,I^K,63),n[DA+40>>2]=uA,n[F+44>>2]=l,BA=F,f=t,I=t+L|0,(t=($=CA)+S|0)>>>0<$>>>0&&(I=I+1|0),I=I+(EA=n[F+132>>2])|0,t=I=(CA=t+n[F+128>>2]|0)>>>0<t>>>0?I+1|0:I,EA=jg(CA^M,I^v,32),p=$,I=u+(L=l)|0,($=y+EA|0)>>>0<y>>>0&&(I=I+1|0),y=$,$=I,f=jg(p^y,I^f,24),I=t+(u=l)|0,(t=f+CA|0)>>>0<CA>>>0&&(I=I+1|0),CA=(p=t)+(t=n[F+144>>2])|0,I=n[F+148>>2]+I|0,I=CA>>>0<t>>>0?I+1|0:I,n[BA+8>>2]=CA,n[BA+12>>2]=I,BA=jg(CA^EA,I^L,16),I=l,n[F+96>>2]=BA,n[F+100>>2]=I,I=I+$|0,($=y+BA|0)>>>0<BA>>>0&&(I=I+1|0),n[F+88>>2]=$,n[F+92>>2]=I,DA=F,uA=jg(f^$,I^u,63),n[DA+48>>2]=uA,n[F+52>>2]=l,BA=F,I=s+w|0,(f=R+X|0)>>>0<R>>>0&&(I=I+1|0),I=I+(CA=n[F+220>>2])|0,CA=I=($=f+n[F+216>>2]|0)>>>0<f>>>0?I+1|0:I,I=I+rA|0,(f=$+aA|0)>>>0<$>>>0&&(I=I+1|0),t=f,aA=I,f=jg($^Z,IA^CA,32),u=R,I=b+(R=l)|0,($=f+U|0)>>>0<U>>>0&&(I=I+1|0),CA=I,$=jg(u^(y=$),I^s,24),I=(s=l)+aA|0,(t=t+$|0)>>>0<$>>>0&&(I=I+1|0),n[BA+16>>2]=t,n[BA+20>>2]=I,BA=jg(f^t,I^R,16),I=l,n[F+104>>2]=BA,n[F+108>>2]=I,I=I+CA|0,(CA=y+BA|0)>>>0<BA>>>0&&(I=I+1|0),BA=CA,n[F+64>>2]=BA,n[F+68>>2]=I,DA=F,uA=jg($^BA,I^s,63),n[DA+56>>2]=uA,n[F+60>>2]=l,BA=F,aA=c,I=c+B|0,(CA=($=O)+eA|0)>>>0<$>>>0&&(I=I+1|0),I=I+d|0,CA=I=(O=m+CA|0)>>>0<m>>>0?I+1|0:I,eA=jg(O^N,I^H,32),t=$,I=k+(f=l)|0,($=G+eA|0)>>>0<G>>>0&&(I=I+1|0),c=aA,aA=I,R=jg(t^$,c^I,24),I=CA+(t=l)|0,(CA=R+O|0)>>>0<O>>>0&&(I=I+1|0),O=(c=CA)+(CA=n[F+152>>2])|0,I=n[F+156>>2]+I|0,I=O>>>0<CA>>>0?I+1|0:I,n[BA+24>>2]=O,n[BA+28>>2]=I,O=jg(O^eA,I^f,16),n[F+112>>2]=O,I=l,n[F+116>>2]=I,I=I+aA|0,(aA=$+O|0)>>>0<$>>>0&&(I=I+1|0),$=aA,n[F+72>>2]=$,n[BA+76>>2]=I,DA=F,uA=jg(R^$,I^t,63),n[DA+32>>2]=uA,n[F+36>>2]=l,I=A,BA=n[F+68>>2]^(a[I+4|0]|a[I+5|0]<<8|a[I+6|0]<<16|a[I+7|0]<<24)^nA,$=n[F+64>>2]^(a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24)^h,E[0|I]=$,E[I+1|0]=$>>>8,E[I+2|0]=$>>>16,E[I+3|0]=$>>>24,E[I+4|0]=BA,E[I+5|0]=BA>>>8,E[I+6|0]=BA>>>16,E[I+7|0]=BA>>>24,BA=1;I=($=BA<<3)+A|0,aA=$=F+$|0,O=n[$>>2]^(a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24),CA=n[($=$- -64|0)>>2],$=n[$+4>>2]^n[aA+4>>2]^(a[I+4|0]|a[I+5|0]<<8|a[I+6|0]<<16|a[I+7|0]<<24),aA=O^CA,E[0|I]=aA,E[I+1|0]=aA>>>8,E[I+2|0]=aA>>>16,E[I+3|0]=aA>>>24,E[I+4|0]=$,E[I+5|0]=$>>>8,E[I+6|0]=$>>>16,E[I+7|0]=$>>>24,8!=(0|(BA=BA+1|0)););D=F+256|0}function G(A,I,g,B){var C=0,Q=0,E=0,i=0,a=0,r=0,o=0,e=0,t=0,c=0,f=0,y=0,s=0,w=0,h=0,D=0,u=0,p=0,F=0,G=0,k=0,_=0,H=0,Y=0,b=0,m=0,U=0,v=0,S=0,N=0,R=0,M=0,d=0,P=0,J=0,x=0;for(function(A,I){for(var g=0,B=0,C=0,Q=0,E=0;Q=C=(B=g<<3)+A|0,E=zA(I+B|0),n[Q>>2]=E,n[C+4>>2]=l,16!=(0|(g=g+1|0)););}(g,I),I=j(B,A,64),E=n[g>>2],a=n[g+4>>2],B=0;;){if(C=jg(k=n[(Q=I)+32>>2],c=n[Q+36>>2],14),o=l,C=jg(k,c,18)^C,t=l^o,i=E,E=jg(k,c,41)^C,C=(l^t)+a|0,C=(o=i+E|0)>>>0<E>>>0?C+1|0:C,E=o,h=n[Q+48>>2],E=(t=n[(a=34784+(J=B<<3)|0)>>2])+E|0,C=n[a+4>>2]+C|0,C=E>>>0<t>>>0?C+1|0:C,E=(a=h^((_=n[Q+40>>2])^h)&k)+E|0,C=(((y=n[Q+52>>2])^(G=n[Q+44>>2]))&c^y)+C|0,C=E>>>0<a>>>0?C+1|0:C,o=(a=E)+(E=n[Q+56>>2])|0,C=n[Q+60>>2]+C|0,C=o>>>0<E>>>0?C+1|0:C,a=o+(t=n[Q+24>>2])|0,E=C,C=C+n[Q+28>>2]|0,D=C=(i=a)>>>0<t>>>0?C+1|0:C,n[Q+24>>2]=i,n[Q+28>>2]=C,C=jg(f=n[Q>>2],a=n[Q+4>>2],28),t=l,C=jg(f,a,34)^C,s=l^t,t=o+(jg(f,a,39)^C)|0,C=E+(l^s)|0,C=t>>>0<o>>>0?C+1|0:C,o=(r=t)+(t=f&((s=n[Q+16>>2])|(E=n[Q+8>>2]))|E&s)|0,C=(a&((e=n[Q+20>>2])|(w=n[Q+12>>2]))|e&w)+C|0,C=o>>>0<t>>>0?C+1|0:C,t=o,o=C,n[Q+56>>2]=t,n[Q+60>>2]=C,r=s,C=jg(i,D,14),s=l,u=jg(i,D,18)^C,m=l^s,C=((c^G)&D^G)+y|0,(h=(s=(k^_)&i^_)+h|0)>>>0<s>>>0&&(C=C+1|0),s=h,h=jg(i,D,41)^u,C=(l^m)+C|0,C=(s=s+h|0)>>>0<h>>>0?C+1|0:C,s=(u=n[(y=m=(h=(1|B)<<3)+g|0)>>2])+s|0,C=n[y+4>>2]+C|0,C=s>>>0<u>>>0?C+1|0:C,s=(y=n[(h=h+34784|0)>>2])+s|0,C=n[h+4>>2]+C|0,y=C=s>>>0<y>>>0?C+1|0:C,C=C+e|0,(r=(e=s)+r|0)>>>0<e>>>0&&(C=C+1|0),e=r,h=C,n[Q+16>>2]=r,n[Q+20>>2]=C,r=I,C=jg(t,o,28),Q=l,u=jg(t,o,34)^C,p=l^Q,C=((a|w)&o|a&w)+y|0,(s=(Q=(E|f)&t|E&f)+s|0)>>>0<Q>>>0&&(C=C+1|0),Q=s,s=jg(t,o,39)^u,C=(l^p)+C|0,C=(Q=Q+s|0)>>>0<s>>>0?C+1|0:C,s=Q,Q=C,n[r+48>>2]=s,n[r+52>>2]=C,u=I,r=E,C=jg(e,h,14),E=l,y=jg(e,h,18)^C,p=l^E,C=((c^D)&h^c)+G|0,(_=(E=(i^k)&e^k)+_|0)>>>0<E>>>0&&(C=C+1|0),y=jg(e,h,41)^y,C=(l^p)+C|0,C=(E=y+_|0)>>>0<y>>>0?C+1|0:C,E=(G=n[(_=S=(y=(2|B)<<3)+g|0)>>2])+E|0,C=n[_+4>>2]+C|0,C=E>>>0<G>>>0?C+1|0:C,E=(_=n[(y=y+34784|0)>>2])+E|0,C=n[y+4>>2]+C|0,y=w,w=C=E>>>0<_>>>0?C+1|0:C,C=y+C|0,(y=E+r|0)>>>0<E>>>0&&(C=C+1|0),r=y,y=C,n[u+8>>2]=r,n[u+12>>2]=C,C=jg(s,Q,28),_=l,G=jg(s,Q,34)^C,_^=l,C=((a|o)&Q|a&o)+w|0,(w=(w=E)+(E=(t|f)&s|t&f)|0)>>>0<E>>>0&&(C=C+1|0),E=w,w=jg(s,Q,39)^G,C=(l^_)+C|0,C=(E=E+w|0)>>>0<w>>>0?C+1|0:C,w=E,E=C,n[u+40>>2]=w,n[u+44>>2]=C,_=I,u=a,C=jg(r,y,14),a=l,G=jg(r,y,18)^C,p=l^a,C=(D^(h^D)&y)+c|0,(c=(a=i^(i^e)&r)+k|0)>>>0<a>>>0&&(C=C+1|0),a=c,c=jg(r,y,41)^G,C=(l^p)+C|0,C=(a=a+c|0)>>>0<c>>>0?C+1|0:C,a=(p=n[(G=k=(c=(3|B)<<3)+g|0)>>2])+a|0,C=n[G+4>>2]+C|0,C=a>>>0<p>>>0?C+1|0:C,a=(G=n[(c=c+34784|0)>>2])+a|0,C=n[c+4>>2]+C|0,G=C=a>>>0<G>>>0?C+1|0:C,C=C+u|0,(c=a+f|0)>>>0<a>>>0&&(C=C+1|0),u=C,n[_>>2]=c,n[_+4>>2]=C,C=jg(w,E,28),f=l,p=jg(w,E,34)^C,f^=l,C=((Q|o)&E|Q&o)+G|0,(G=(F=a)+(a=(t|s)&w|t&s)|0)>>>0<a>>>0&&(C=C+1|0),a=G,G=jg(w,E,39)^p,C=(l^f)+C|0,f=a=a+G|0,a=C=a>>>0<G>>>0?C+1|0:C,n[_+32>>2]=f,n[_+36>>2]=C,G=o,C=jg(c,u,14),o=l,p=jg(c,u,18)^C,F=l^o,C=D+(h^(y^h)&u)|0,(o=i+(e^(r^e)&c)|0)>>>0<i>>>0&&(C=C+1|0),i=jg(c,u,41)^p,C=(l^F)+C|0,C=(o=i+o|0)>>>0<i>>>0?C+1|0:C,o=(p=n[(D=d=(i=(4|B)<<3)+g|0)>>2])+o|0,C=n[D+4>>2]+C|0,C=o>>>0<p>>>0?C+1|0:C,o=(D=n[(i=i+34784|0)>>2])+o|0,C=n[i+4>>2]+C|0,i=G,G=C=o>>>0<D>>>0?C+1|0:C,C=i+C|0,(i=o+t|0)>>>0<o>>>0&&(C=C+1|0),D=C,n[_+56>>2]=i,n[_+60>>2]=C,C=jg(f,a,28),t=l,p=jg(f,a,34)^C,t^=l,C=((Q|E)&a|Q&E)+G|0,(G=(F=o)+(o=(s|w)&f|s&w)|0)>>>0<o>>>0&&(C=C+1|0),o=G,G=jg(f,a,39)^p,C=(l^t)+C|0,t=o=o+G|0,o=C=o>>>0<G>>>0?C+1|0:C,n[_+24>>2]=t,n[_+28>>2]=C,G=I,p=Q,C=jg(i,D,14),Q=l,_=jg(i,D,18)^C,F=l^Q,C=h+(y^(y^u)&D)|0,(Q=e+(r^(r^c)&i)|0)>>>0<e>>>0&&(C=C+1|0),e=jg(i,D,41)^_,C=(l^F)+C|0,C=(Q=e+Q|0)>>>0<e>>>0?C+1|0:C,Q=(F=n[(h=_=(e=(5|B)<<3)+g|0)>>2])+Q|0,C=n[h+4>>2]+C|0,C=Q>>>0<F>>>0?C+1|0:C,Q=(h=n[(e=e+34784|0)>>2])+Q|0,C=n[e+4>>2]+C|0,e=p,p=C=Q>>>0<h>>>0?C+1|0:C,C=e+C|0,(e=Q+s|0)>>>0<Q>>>0&&(C=C+1|0),h=C,n[G+48>>2]=e,n[G+52>>2]=C,C=jg(t,o,28),s=l,F=jg(t,o,34)^C,s^=l,C=((E|a)&o|E&a)+p|0,(p=(p=Q)+(Q=(f|w)&t|f&w)|0)>>>0<Q>>>0&&(C=C+1|0),Q=p,p=jg(t,o,39)^F,C=(l^s)+C|0,s=Q=Q+p|0,Q=C=Q>>>0<p>>>0?C+1|0:C,n[G+16>>2]=s,n[G+20>>2]=C,p=E,C=jg(e,h,14),E=l,F=jg(e,h,18)^C,N=l^E,C=y+(u^(D^u)&h)|0,(E=r+(c^(i^c)&e)|0)>>>0<r>>>0&&(C=C+1|0),r=jg(e,h,41)^F,C=(l^N)+C|0,C=(E=r+E|0)>>>0<r>>>0?C+1|0:C,E=(F=n[(y=x=(r=(6|B)<<3)+g|0)>>2])+E|0,C=n[y+4>>2]+C|0,C=E>>>0<F>>>0?C+1|0:C,E=(y=n[(r=r+34784|0)>>2])+E|0,C=n[r+4>>2]+C|0,r=p,p=C=E>>>0<y>>>0?C+1|0:C,C=r+C|0,(r=E+w|0)>>>0<E>>>0&&(C=C+1|0),y=C,n[G+40>>2]=r,n[G+44>>2]=C,C=jg(s,Q,28),w=l,F=jg(s,Q,34)^C,w^=l,C=((a|o)&Q|a&o)+p|0,(p=(p=E)+(E=(t|f)&s|t&f)|0)>>>0<E>>>0&&(C=C+1|0),E=p,p=jg(s,Q,39)^F,C=(l^w)+C|0,w=E=E+p|0,E=C=E>>>0<p>>>0?C+1|0:C,n[G+8>>2]=w,n[G+12>>2]=C,p=I,F=a,C=jg(r,y,14),a=l,G=jg(r,y,18)^C,N=l^a,C=u+(D^(h^D)&y)|0,(a=c+(i^(i^e)&r)|0)>>>0<c>>>0&&(C=C+1|0),c=jg(r,y,41)^G,C=(l^N)+C|0,C=(a=c+a|0)>>>0<c>>>0?C+1|0:C,a=(N=n[(u=G=(c=(7|B)<<3)+g|0)>>2])+a|0,C=n[u+4>>2]+C|0,C=a>>>0<N>>>0?C+1|0:C,a=(u=n[(c=c+34784|0)>>2])+a|0,C=n[c+4>>2]+C|0,c=F,F=C=a>>>0<u>>>0?C+1|0:C,C=c+C|0,(c=a+f|0)>>>0<a>>>0&&(C=C+1|0),u=C,n[p+32>>2]=c,n[p+36>>2]=C,C=jg(w,E,28),f=l,N=jg(w,E,34)^C,f^=l,C=((Q|o)&E|Q&o)+F|0,(F=(F=a)+(a=(t|s)&w|t&s)|0)>>>0<a>>>0&&(C=C+1|0),a=F,F=jg(w,E,39)^N,C=(l^f)+C|0,f=a=a+F|0,a=C=a>>>0<F>>>0?C+1|0:C,n[p>>2]=f,n[p+4>>2]=C,F=o,C=jg(c,u,14),o=l,N=jg(c,u,18)^C,U=l^o,C=D+(h^(y^h)&u)|0,(o=i+(e^(r^e)&c)|0)>>>0<i>>>0&&(C=C+1|0),i=jg(c,u,41)^N,C=(l^U)+C|0,C=(o=i+o|0)>>>0<i>>>0?C+1|0:C,o=(U=n[(D=N=(i=(8|B)<<3)+g|0)>>2])+o|0,C=n[D+4>>2]+C|0,C=o>>>0<U>>>0?C+1|0:C,o=(D=n[(i=i+34784|0)>>2])+o|0,C=n[i+4>>2]+C|0,i=F,F=C=o>>>0<D>>>0?C+1|0:C,C=i+C|0,(i=o+t|0)>>>0<o>>>0&&(C=C+1|0),D=C,n[p+24>>2]=i,n[p+28>>2]=C,C=jg(f,a,28),t=l,U=jg(f,a,34)^C,t^=l,C=((Q|E)&a|Q&E)+F|0,(F=(F=o)+(o=(s|w)&f|s&w)|0)>>>0<o>>>0&&(C=C+1|0),o=F,F=jg(f,a,39)^U,C=(l^t)+C|0,t=o=o+F|0,o=C=o>>>0<F>>>0?C+1|0:C,n[p+56>>2]=t,n[p+60>>2]=C,F=I,U=Q,C=jg(i,D,14),Q=l,p=jg(i,D,18)^C,v=l^Q,C=h+(y^(y^u)&D)|0,(Q=e+(r^(r^c)&i)|0)>>>0<e>>>0&&(C=C+1|0),e=jg(i,D,41)^p,C=(l^v)+C|0,C=(Q=e+Q|0)>>>0<e>>>0?C+1|0:C,Q=(v=n[(h=p=(e=(9|B)<<3)+g|0)>>2])+Q|0,C=n[h+4>>2]+C|0,C=Q>>>0<v>>>0?C+1|0:C,Q=(h=n[(e=e+34784|0)>>2])+Q|0,C=n[e+4>>2]+C|0,e=U,U=C=Q>>>0<h>>>0?C+1|0:C,C=e+C|0,(e=Q+s|0)>>>0<Q>>>0&&(C=C+1|0),h=C,n[F+16>>2]=e,n[F+20>>2]=C,C=jg(t,o,28),s=l,v=jg(t,o,34)^C,s^=l,C=((E|a)&o|E&a)+U|0,(U=(U=Q)+(Q=(f|w)&t|f&w)|0)>>>0<Q>>>0&&(C=C+1|0),Q=U,U=jg(t,o,39)^v,C=(l^s)+C|0,s=Q=Q+U|0,Q=C=Q>>>0<U>>>0?C+1|0:C,n[F+48>>2]=s,n[F+52>>2]=C,v=E,C=jg(e,h,14),E=l,U=jg(e,h,18)^C,Y=l^E,C=y+(u^(D^u)&h)|0,(E=r+(c^(i^c)&e)|0)>>>0<r>>>0&&(C=C+1|0),r=jg(e,h,41)^U,C=(l^Y)+C|0,C=(E=r+E|0)>>>0<r>>>0?C+1|0:C,E=(Y=n[(y=U=(r=(10|B)<<3)+g|0)>>2])+E|0,C=n[y+4>>2]+C|0,C=E>>>0<Y>>>0?C+1|0:C,E=(y=n[(r=r+34784|0)>>2])+E|0,C=n[r+4>>2]+C|0,r=C=E>>>0<y>>>0?C+1|0:C,C=C+v|0,(y=E+w|0)>>>0<E>>>0&&(C=C+1|0),w=y,y=C,n[F+8>>2]=w,n[F+12>>2]=C,C=jg(s,Q,28),v=l,Y=jg(s,Q,34)^C,v^=l,C=((a|o)&Q|a&o)+r|0,(r=(r=E)+(E=(t|f)&s|t&f)|0)>>>0<E>>>0&&(C=C+1|0),E=r,r=jg(s,Q,39)^Y,C=(l^v)+C|0,r=C=(E=E+r|0)>>>0<r>>>0?C+1|0:C,n[F+40>>2]=E,n[F+44>>2]=C,v=I,Y=a,C=jg(w,y,14),a=l,F=jg(w,y,18)^C,b=l^a,C=u+(D^(h^D)&y)|0,(a=c+(i^(i^e)&w)|0)>>>0<c>>>0&&(C=C+1|0),c=jg(w,y,41)^F,C=(l^b)+C|0,C=(a=c+a|0)>>>0<c>>>0?C+1|0:C,a=(b=n[(u=F=(c=(11|B)<<3)+g|0)>>2])+a|0,C=n[u+4>>2]+C|0,C=a>>>0<b>>>0?C+1|0:C,a=(u=n[(c=c+34784|0)>>2])+a|0,C=n[c+4>>2]+C|0,c=C=a>>>0<u>>>0?C+1|0:C,C=C+Y|0,(u=a+f|0)>>>0<a>>>0&&(C=C+1|0),f=u,u=C,n[v>>2]=f,n[v+4>>2]=C,C=jg(E,r,28),Y=l,b=jg(E,r,34)^C,Y^=l,C=((Q|o)&r|Q&o)+c|0,(c=(c=a)+(a=(t|s)&E|t&s)|0)>>>0<a>>>0&&(C=C+1|0),a=c,c=jg(E,r,39)^b,C=(l^Y)+C|0,c=C=(a=a+c|0)>>>0<c>>>0?C+1|0:C,n[v+32>>2]=a,n[v+36>>2]=C,Y=I,b=o,C=jg(f,u,14),o=l,v=jg(f,u,18)^C,R=l^o,C=D+(h^(y^h)&u)|0,(o=i+(e^(e^w)&f)|0)>>>0<i>>>0&&(C=C+1|0),i=jg(f,u,41)^v,C=(l^R)+C|0,C=(o=i+o|0)>>>0<i>>>0?C+1|0:C,o=(R=n[(D=v=(i=(12|B)<<3)+g|0)>>2])+o|0,C=n[D+4>>2]+C|0,C=o>>>0<R>>>0?C+1|0:C,o=(D=n[(i=i+34784|0)>>2])+o|0,C=n[i+4>>2]+C|0,i=b,b=C=o>>>0<D>>>0?C+1|0:C,C=i+C|0,(i=o+t|0)>>>0<o>>>0&&(C=C+1|0),R=i,i=C,n[Y+56>>2]=R,n[Y+60>>2]=C,D=I,C=jg(a,c,28),t=l,Y=jg(a,c,34)^C,t^=l,C=((Q|r)&c|Q&r)+b|0,(b=(b=o)+(o=(E|s)&a|E&s)|0)>>>0<o>>>0&&(C=C+1|0),Y=jg(a,c,39)^Y,C=(l^t)+C|0,b=o=Y+b|0,t=C=o>>>0<Y>>>0?C+1|0:C,n[D+24>>2]=o,n[D+28>>2]=C,o=I,D=s,Y=Q,C=jg(R,i,14),Q=l,s=jg(R,i,18)^C,H=l^Q,C=h+(y^(y^u)&i)|0,(Q=e+(w^(f^w)&R)|0)>>>0<e>>>0&&(C=C+1|0),s=jg(R,i,41)^s,C=(l^H)+C|0,C=(Q=s+Q|0)>>>0<s>>>0?C+1|0:C,Q=(H=n[(s=(e=(13|B)<<3)+g|0)>>2])+Q|0,C=n[s+4>>2]+C|0,C=Q>>>0<H>>>0?C+1|0:C,Q=(h=n[(e=e+34784|0)>>2])+Q|0,C=n[e+4>>2]+C|0,h=C=Q>>>0<h>>>0?C+1|0:C,C=C+Y|0,(D=Q+D|0)>>>0<Q>>>0&&(C=C+1|0),Y=D,e=C,n[o+48>>2]=D,n[o+52>>2]=C,C=jg(b,t,28),D=l,H=jg(b,t,34)^C,D^=l,C=((r|c)&t|r&c)+h|0,(h=(h=Q)+(Q=(E|a)&b|E&a)|0)>>>0<Q>>>0&&(C=C+1|0),Q=h,h=jg(b,t,39)^H,C=(l^D)+C|0,C=(Q=Q+h|0)>>>0<h>>>0?C+1|0:C,h=Q,Q=C,n[o+16>>2]=h,n[o+20>>2]=C,C=jg(Y,e,14),D=l,H=jg(Y,e,18)^C,D^=l,C=y+(u^(i^u)&e)|0,(y=w+(f^(f^R)&Y)|0)>>>0<w>>>0&&(C=C+1|0),w=y,y=jg(Y,e,41)^H,C=(l^D)+C|0,C=(w=w+y|0)>>>0<y>>>0?C+1|0:C,w=(M=n[(D=(y=(14|B)<<3)+g|0)>>2])+w|0,C=n[D+4>>2]+C|0,C=w>>>0<M>>>0?C+1|0:C,w=(H=n[(y=y+34784|0)>>2])+w|0,C=n[y+4>>2]+C|0,C=w>>>0<H>>>0?C+1|0:C,H=w,w=C,C=r+C|0,(r=E+H|0)>>>0<E>>>0&&(C=C+1|0),y=r,E=C,n[o+40>>2]=r,n[o+44>>2]=C,C=jg(h,Q,28),r=l,M=jg(h,Q,34)^C,r^=l,C=((t|c)&Q|t&c)+w|0,(H=(w=(a|b)&h|a&b)+H|0)>>>0<w>>>0&&(C=C+1|0),w=H,H=jg(h,Q,39)^M,C=(l^r)+C|0,C=(w=w+H|0)>>>0<H>>>0?C+1|0:C,H=w,r=C,n[o+8>>2]=w,n[o+12>>2]=C,C=jg(y,E,14),w=l,M=jg(y,E,18)^C,w^=l,C=u+(i^(i^e)&E)|0,(i=f+(R^(Y^R)&y)|0)>>>0<f>>>0&&(C=C+1|0),f=jg(y,E,41)^M,C=(l^w)+C|0,C=(E=f+i|0)>>>0<f>>>0?C+1|0:C,E=(e=n[(i=w=(f=(15|B)<<3)+g|0)>>2])+E|0,C=n[i+4>>2]+C|0,C=E>>>0<e>>>0?C+1|0:C,E=(i=n[(f=f+34784|0)>>2])+E|0,C=n[f+4>>2]+C|0,f=E,C=c+(E=E>>>0<i>>>0?C+1|0:C)|0,(i=a+f|0)>>>0<a>>>0&&(C=C+1|0),n[o+32>>2]=i,n[o+36>>2]=C,C=jg(H,r,28),o=l,a=jg(H,r,34)^C,i=l^o,C=((Q|t)&r|Q&t)+E|0,(E=(Q=(h|b)&H|h&b)+f|0)>>>0<Q>>>0&&(C=C+1|0),Q=(Q=E)+(E=jg(H,r,39)^a)|0,C=(l^i)+C|0,n[(o=I)>>2]=Q,n[o+4>>2]=Q>>>0<E>>>0?C+1|0:C,64==(0|B)){for(;o=g=(B=P<<3)+A|0,B=(Q=n[(C=I+B|0)>>2])+n[o>>2]|0,C=n[o+4>>2]+n[C+4>>2]|0,n[o>>2]=B,n[o+4>>2]=B>>>0<Q>>>0?C+1|0:C,8!=(0|(P=P+1|0)););break}f=((B=B+16|0)<<3)+g|0,Y=o=n[D+4>>2],C=o>>>6|0,o=((63&o)<<26|(b=n[D>>2])>>>6)^jg(b,o,19),C^=l,o=jg(b,Y,61)^o,C=(a=n[p+4>>2])+(l^C)|0,(Q=(Q=o)+(o=y=n[p>>2])|0)>>>0<o>>>0&&(C=C+1|0),o=(i=Q)+(E=n[(Q=g+J|0)>>2])|0,C=n[Q+4>>2]+C|0,o=(i=o)>>>0<E>>>0?C+1|0:C,E=Q=n[m+4>>2],C=Q>>>7|0,Q=((127&Q)<<25|(t=n[m>>2])>>>7)^jg(t,Q,1),C^=l,r=i,i=jg(t,E,8)^Q,C=(l^C)+o|0,r=Q=r+i|0,Q=C=Q>>>0<i>>>0?C+1|0:C,n[f>>2]=r,n[f+4>>2]=C,C=n[(i=m)+76>>2]+E|0,(E=(o=n[i+72>>2])+t|0)>>>0<o>>>0&&(C=C+1|0),f=E,E=C,C=(o=t=n[w+4>>2])>>>6|0,t=((63&o)<<26|(h=n[w>>2])>>>6)^jg(h,o,19),C^=l,e=f,f=jg(h,o,61)^t,C=(l^C)+E|0,c=t=e+f|0,E=t>>>0<f>>>0?C+1|0:C,t=e=n[m+12>>2],C=e>>>7|0,e=((127&e)<<25|(f=n[m+8>>2])>>>7)^jg(f,e,1),C^=l,u=c,c=jg(f,t,8)^e,C=(l^C)+E|0,C=(e=u+c|0)>>>0<c>>>0?C+1|0:C,c=e,E=C,n[i+128>>2]=e,n[i+132>>2]=C,i=S,e=t,C=jg(r,Q,19),u=l,t=C,C=Q>>>6|0,Q=jg(r,Q,61)^t^((63&Q)<<26|r>>>6),r=f,C=(t=n[F+4>>2])+(l^C^u)|0,(f=(f=Q)+(Q=u=n[F>>2])|0)>>>0<Q>>>0&&(C=C+1|0),C=C+e|0,m=Q=r+f|0,Q=Q>>>0<f>>>0?C+1|0:C,f=e=n[k+4>>2],C=e>>>7|0,e=((127&e)<<25|(r=n[k>>2])>>>7)^jg(r,e,1),C^=l,H=m,m=jg(r,f,8)^e,C=(l^C)+Q|0,C=(e=H+m|0)>>>0<m>>>0?C+1|0:C,m=e,Q=C,n[i+128>>2]=e,n[i+132>>2]=C,C=n[(e=k)+76>>2]+f|0,(i=(f=n[e+72>>2])+r|0)>>>0<f>>>0&&(C=C+1|0),f=i,i=C,C=jg(c,E,19),r=l,H=f,f=C,C=E>>>6|0,f=jg(c,E,61)^f^((63&E)<<26|c>>>6),C=(l^C^r)+i|0,c=E=H+f|0,E=E>>>0<f>>>0?C+1|0:C,f=r=n[k+12>>2],C=r>>>7|0,r=((127&r)<<25|(i=n[k+8>>2])>>>7)^jg(i,r,1),C^=l,k=c,c=jg(i,f,8)^r,C=(l^C)+E|0,C=(r=k+c|0)>>>0<c>>>0?C+1|0:C,c=r,E=C,n[e+128>>2]=r,n[e+132>>2]=C,e=d,r=f,C=jg(m,Q,19),k=l,f=C,C=Q>>>6|0,Q=jg(m,Q,61)^f^((63&Q)<<26|m>>>6),H=i,C=(f=n[s+4>>2])+(l^C^k)|0,(i=(i=Q)+(Q=m=n[s>>2])|0)>>>0<Q>>>0&&(C=C+1|0),C=C+r|0,S=Q=H+i|0,Q=Q>>>0<i>>>0?C+1|0:C,C=(i=k=n[_+4>>2])>>>7|0,k=((127&i)<<25|(r=n[_>>2])>>>7)^jg(r,i,1),C^=l,H=S,S=jg(r,i,8)^k,C=(l^C)+Q|0,Q=C=(k=H+S|0)>>>0<S>>>0?C+1|0:C,n[e+128>>2]=k,n[e+132>>2]=C,C=n[(e=_)+76>>2]+i|0,(r=(i=n[e+72>>2])+r|0)>>>0<i>>>0&&(C=C+1|0),i=r,r=C,C=jg(c,E,19),S=l,H=i,i=C,C=E>>>6|0,i=jg(c,E,61)^i^((63&E)<<26|c>>>6),C=(l^C^S)+r|0,c=E=H+i|0,E=E>>>0<i>>>0?C+1|0:C,C=(i=r=n[_+12>>2])>>>7|0,r=((127&i)<<25|(S=n[_+8>>2])>>>7)^jg(S,i,1),C^=l,_=c,c=jg(S,i,8)^r,C=(l^C)+E|0,_=r=_+c|0,E=C=r>>>0<c>>>0?C+1|0:C,n[e+128>>2]=r,n[e+132>>2]=C,e=x,r=i,C=jg(k,Q,19),d=l,i=C,C=Q>>>6|0,i=jg(k,Q,61)^i^((63&Q)<<26|k>>>6),C=(l^C^d)+o|0,C=(Q=i+h|0)>>>0<i>>>0?C+1|0:C,i=Q,C=C+r|0,k=Q=Q+S|0,Q=Q>>>0<i>>>0?C+1|0:C,C=(i=c=n[G+4>>2])>>>7|0,c=((127&i)<<25|(r=n[G>>2])>>>7)^jg(r,i,1),C^=l,H=k,k=jg(r,i,8)^c,C=(l^C)+Q|0,Q=C=(c=H+k|0)>>>0<k>>>0?C+1|0:C,n[e+128>>2]=c,n[e+132>>2]=C,C=n[(e=G)+76>>2]+i|0,(r=(i=n[e+72>>2])+r|0)>>>0<i>>>0&&(C=C+1|0),i=r,r=C,C=jg(_,E,19),k=l,H=i,i=C,C=E>>>6|0,i=jg(_,E,61)^i^((63&E)<<26|_>>>6),C=(l^C^k)+r|0,k=E=H+i|0,E=E>>>0<i>>>0?C+1|0:C,C=(i=r=n[G+12>>2])>>>7|0,r=((127&i)<<25|(_=n[G+8>>2])>>>7)^jg(_,i,1),C^=l,G=k,k=jg(_,i,8)^r,C=(l^C)+E|0,C=(r=G+k|0)>>>0<k>>>0?C+1|0:C,k=r,E=C,n[e+128>>2]=r,n[e+132>>2]=C,r=i,C=jg(c,Q,19),G=l,i=C,C=Q>>>6|0,Q=(Q=jg(c,Q,61)^i^((63&Q)<<26|c>>>6))+(i=n[(e=N)+72>>2])|0,C=n[e+76>>2]+(l^C^G)|0,C=Q>>>0<i>>>0?C+1|0:C,i=Q,C=C+r|0,i=C=(Q=Q+_|0)>>>0<i>>>0?C+1|0:C,C=jg(y,a,1),r=l,G=Q,c=C,C=(Q=a)>>>7|0,c=c^((127&Q)<<25|y>>>7)^jg(y,Q,8),C=(l^C^r)+i|0,r=Q=G+c|0,Q=C=Q>>>0<c>>>0?C+1|0:C,n[e+128>>2]=r,n[e+132>>2]=C,C=n[(i=p)+76>>2]+a|0,(e=(a=n[i+72>>2])+y|0)>>>0<a>>>0&&(C=C+1|0),a=e,e=C,C=jg(k,E,19),c=l,y=a,a=C,C=E>>>6|0,a=jg(k,E,61)^a^((63&E)<<26|k>>>6),C=(l^C^c)+e|0,c=E=y+a|0,E=E>>>0<a>>>0?C+1|0:C,C=(a=e=n[p+12>>2])>>>7|0,e=((127&a)<<25|(y=n[p+8>>2])>>>7)^jg(y,a,1),C^=l,p=c,c=jg(y,a,8)^e,C=(l^C)+E|0,C=(e=p+c|0)>>>0<c>>>0?C+1|0:C,c=e,E=C,n[i+128>>2]=e,n[i+132>>2]=C,e=a,C=jg(r,Q,19),k=l,a=C,C=Q>>>6|0,Q=(Q=jg(r,Q,61)^a^((63&Q)<<26|r>>>6))+(a=n[(i=U)+72>>2])|0,C=n[i+76>>2]+(l^C^k)|0,C=Q>>>0<a>>>0?C+1|0:C,a=Q,C=C+e|0,a=C=(Q=Q+y|0)>>>0<a>>>0?C+1|0:C,C=jg(u,t,1),e=l,y=Q,r=C,C=(Q=t)>>>7|0,r=r^((127&Q)<<25|u>>>7)^jg(u,Q,8),C=(l^C^e)+a|0,e=Q=y+r|0,Q=C=Q>>>0<r>>>0?C+1|0:C,n[i+128>>2]=e,n[i+132>>2]=C,C=n[(i=F)+76>>2]+t|0,(t=(a=n[i+72>>2])+u|0)>>>0<a>>>0&&(C=C+1|0),a=t,t=C,C=jg(c,E,19),r=l,y=a,a=C,C=E>>>6|0,a=jg(c,E,61)^a^((63&E)<<26|c>>>6),C=(l^C^r)+t|0,r=E=y+a|0,E=E>>>0<a>>>0?C+1|0:C,C=(a=t=n[F+12>>2])>>>7|0,t=((127&a)<<25|(c=n[F+8>>2])>>>7)^jg(c,a,1),C^=l,y=r,r=jg(c,a,8)^t,C=(l^C)+E|0,C=(t=y+r|0)>>>0<r>>>0?C+1|0:C,r=t,E=C,n[i+128>>2]=r,n[i+132>>2]=C,i=a,C=jg(e,Q,19),y=l,a=C,C=Q>>>6|0,Q=(Q=jg(e,Q,61)^a^((63&Q)<<26|e>>>6))+(a=n[(t=v)+72>>2])|0,C=n[t+76>>2]+(l^C^y)|0,C=Q>>>0<a>>>0?C+1|0:C,a=Q,C=C+i|0,a=C=(Q=Q+c|0)>>>0<a>>>0?C+1|0:C,C=jg(m,f,1),i=l,c=Q,e=C,C=(Q=f)>>>7|0,e=e^((127&Q)<<25|m>>>7)^jg(m,Q,8),C=(l^C^i)+a|0,i=Q=c+e|0,Q=C=Q>>>0<e>>>0?C+1|0:C,n[t+128>>2]=i,n[t+132>>2]=C,C=n[(a=s)+76>>2]+f|0,(f=(t=n[a+72>>2])+m|0)>>>0<t>>>0&&(C=C+1|0),t=f,f=C,C=jg(r,E,19),e=l,c=t,t=C,C=E>>>6|0,t=jg(r,E,61)^t^((63&E)<<26|r>>>6),C=(l^C^e)+f|0,e=E=c+t|0,E=E>>>0<t>>>0?C+1|0:C,f=t=n[s+12>>2],C=t>>>7|0,t=((127&t)<<25|(s=n[s+8>>2])>>>7)^jg(s,t,1),C^=l,s=jg(s,f,8)^t,C=(l^C)+E|0,f=t=s+e|0,E=C=t>>>0<s>>>0?C+1|0:C,n[a+128>>2]=t,n[a+132>>2]=C,C=n[(a=D)+76>>2]+Y|0,(s=(t=n[a+72>>2])+b|0)>>>0<t>>>0&&(C=C+1|0),t=s,s=C,C=jg(i,Q,19),e=l,r=t,t=C,C=Q>>>6|0,t=jg(i,Q,61)^t^((63&Q)<<26|i>>>6),C=(l^C^e)+s|0,t=C=(Q=r+t|0)>>>0<t>>>0?C+1|0:C,C=jg(h,o,1),s=l,r=Q,i=C,C=(Q=o)>>>7|0,Q=r+(i=i^((127&Q)<<25|h>>>7)^jg(h,Q,8))|0,C=(l^C^s)+t|0,n[a+128>>2]=Q,n[a+132>>2]=Q>>>0<i>>>0?C+1|0:C,C=n[(Q=w)+76>>2]+o|0,(a=(o=n[Q+72>>2])+h|0)>>>0<o>>>0&&(C=C+1|0),o=a,a=C,C=jg(f,E,19),t=l,i=C,C=E>>>6|0,E=jg(f,E,61)^i^((63&E)<<26|f>>>6),C=(l^C^t)+a|0,s=o=E+o|0,o=o>>>0<E>>>0?C+1|0:C,C=(a=t=n[w+12>>2])>>>7|0,t=((127&a)<<25|(E=n[w+8>>2])>>>7)^jg(E,a,1),C^=l,t=(i=s)+(s=jg(E,a,8)^t)|0,C=(l^C)+o|0,n[Q+128>>2]=t,n[Q+132>>2]=t>>>0<s>>>0?C+1|0:C}}function k(A){var I,g,B,C,Q,i,n,r,o,e,t,c,f,y,s,w,h,D,u,p=0,F=0,G=0,k=0,_=0,H=0,Y=0,b=0,m=0,U=0,v=0,S=0,N=0,R=0,M=0,d=0,P=0,J=0,x=0,L=0,K=0,q=0,X=0,V=0,T=0,W=0,j=0,Z=0,O=0,z=0,$=0,AA=0,IA=0,gA=0,BA=0,CA=0,QA=0,EA=0,iA=0;y=Cg(A),s=a[A+2|0]|a[A+3|0]<<8|a[A+4|0]<<16|a[A+5|0]<<24,w=Cg(A+5|0),h=l,gA=a[A+7|0]|a[A+8|0]<<8|a[A+9|0]<<16|a[A+10|0]<<24,BA=a[A+10|0]|a[A+11|0]<<8|a[A+12|0]<<16|a[A+13|0]<<24,D=Cg(A+13|0),CA=l,M=a[A+15|0]|a[A+16|0]<<8|a[A+17|0]<<16|a[A+18|0]<<24,O=Cg(A+18|0),d=l,U=Cg(A+21|0),H=a[A+23|0]|a[A+24|0]<<8|a[A+25|0]<<16|a[A+26|0]<<24,_=Cg(A+26|0),G=l,IA=a[A+28|0]|a[A+29|0]<<8|a[A+30|0]<<16|a[A+31|0]<<24,X=a[A+31|0]|a[A+32|0]<<8|a[A+33|0]<<16|a[A+34|0]<<24,j=Cg(A+34|0),W=l,P=a[A+36|0]|a[A+37|0]<<8|a[A+38|0]<<16|a[A+39|0]<<24,z=Cg(A+39|0),x=l,b=Cg(A+42|0),k=a[A+44|0]|a[A+45|0]<<8|a[A+46|0]<<16|a[A+47|0]<<24,u=A,F=Cg(A+47|0),p=xg(I=2097151&((3&(Y=l))<<30|F>>>2),0,136657,0),F=l,(p=(G=2097151&((3&G)<<30|_>>>2))+p|0)>>>0<G>>>0&&(F=F+1|0),_=(G=xg(g=(a[A+49|0]|a[A+50|0]<<8|a[A+51|0]<<16|a[A+52|0]<<24)>>>7&2097151,0,-997805,-1))+p|0,p=l+F|0,p=_>>>0<G>>>0?p+1|0:p,F=xg(B=(a[A+52|0]|a[A+53|0]<<8|a[A+54|0]<<16|a[A+55|0]<<24)>>>4&2097151,0,654183,0),G=l+p|0,G=(_=F+_|0)>>>0<F>>>0?G+1|0:G,p=_,F=Cg(A+55|0),_=p+(F=xg(C=2097151&((1&(_=l))<<31|F>>>1),0,470296,0))|0,p=l+G|0,p=_>>>0<F>>>0?p+1|0:p,G=xg(Q=(a[A+57|0]|a[A+58|0]<<8|a[A+59|0]<<16|a[A+60|0]<<24)>>>6&2097151,0,666643,0),F=l+p|0,S=F=(_=G+_|0)>>>0<G>>>0?F+1|0:F,G=F,m=k>>>5&2097151,F=2097151&b,k=xg(i=(a[A+60|0]|a[A+61|0]<<8|a[A+62|0]<<16|a[A+63|0]<<24)>>>3|0,0,-683901,-1)+F|0,p=l,b=k,N=p=k>>>0<F>>>0?p+1|0:p,R=(p=k)- -1048576|0,K=k=N-((p>>>0<4293918720)+-1|0)|0,p=k>>21,r=m=(k=(2097151&k)<<11|R>>>21)+m|0,T=F=m>>>0<k>>>0?p+1|0:p,p=xg(m,F,-683901,-1),F=l+G|0,Z=Y=p+_|0,v=Y>>>0<p>>>0?F+1|0:F,F=xg(I,0,-997805,-1),p=l,(F=(G=H>>>5&2097151)+F|0)>>>0<G>>>0&&(p=p+1|0),Y=(G=F)+(F=xg(g,0,654183,0))|0,G=l+p|0,G=Y>>>0<F>>>0?G+1|0:G,p=xg(B,0,470296,0),F=l+G|0,F=(Y=p+Y|0)>>>0<p>>>0?F+1|0:F,G=xg(C,0,666643,0),p=l+F|0,G=(H=Y=G+Y|0)>>>0<G>>>0?p+1|0:p,p=2097151&U,Y=xg(I,0,654183,0)+p|0,F=l,F=Y>>>0<p>>>0?F+1|0:F,k=(p=Y)+(Y=xg(g,0,470296,0))|0,p=l+F|0,p=k>>>0<Y>>>0?p+1|0:p,Y=xg(B,0,666643,0),F=l+p|0,m=k=Y+k|0,k=F=k>>>0<Y>>>0?F+1|0:F,$=(p=m)- -1048576|0,J=Y=F-((p>>>0<4293918720)+-1|0)|0,G=(p=Y>>>21|0)+G|0,U=G=(H=Y=(F=(2097151&Y)<<11|$>>>21)+H|0)>>>0<F>>>0?G+1|0:G,q=(p=H)- -1048576|0,c=_- -1048576|0,S=S-((_>>>0<4293918720)+-1|0)|0,F=(p=(G=L=G-((p>>>0<4293918720)+-1|0)|0)>>21)+v|0,S=(F=(L=(_=(2097151&G)<<11|q>>>21)+Z|0)>>>0<_>>>0?F+1|0:F)-(((_=L)>>>0<(p=-2097152&c)>>>0)+(Y=S)|0)|0,QA=(p=_-p|0)-(F=-2097152&(f=p- -1048576|0))|0,EA=S-((p>>>0<F>>>0)+(_=S-((p>>>0<4293918720)+-1|0)|0)|0)|0,F=xg(r,T,136657,0)+H|0,p=U+l|0,p=F>>>0<H>>>0?p+1|0:p,AA=(H=F)-(F=-2097152&q)|0,Z=p-((H>>>0<F>>>0)+G|0)|0,S=b-(p=-2097152&R)|0,v=N-((b>>>0<p>>>0)+K|0)|0,p=xg(i,0,136657,0),F=l,(p=(G=2097151&((7&x)<<29|z>>>3))+p|0)>>>0<G>>>0&&(F=F+1|0),H=(G=xg(Q,0,-683901,-1))+p|0,p=l+F|0,b=H,H=H>>>0<G>>>0?p+1|0:p,p=xg(C,0,-683901,-1),F=l,(p=(G=P>>>6&2097151)+p|0)>>>0<G>>>0&&(F=F+1|0),U=(G=p)+(p=xg(i,0,-997805,-1))|0,G=l+F|0,G=U>>>0<p>>>0?G+1|0:G,F=xg(Q,0,136657,0),p=l+G|0,q=F=(R=p=(U=F+U|0)>>>0<F>>>0?p+1|0:p)-(((p=U)>>>0<4293918720)+-1|0)|0,p=(2097151&F)<<11|(z=p- -1048576|0)>>>21,F=(F>>21)+H|0,N=F=(b=p+b|0)>>>0<p>>>0?F+1|0:F,L=(p=b)- -1048576|0,K=F=F-((p>>>0<4293918720)+-1|0)|0,p=(G=F>>21)+v|0,o=H=(F=(2097151&F)<<11|L>>>21)+S|0,V=p=H>>>0<F>>>0?p+1|0:p,F=xg(H,p,-683901,-1),p=l+Z|0,iA=G=F+AA|0,P=G>>>0<F>>>0?p+1|0:p,v=m,p=xg(I,0,470296,0),F=l,(p=(G=2097151&((7&d)<<29|O>>>3))+p|0)>>>0<G>>>0&&(F=F+1|0),G=p,p=xg(g,0,666643,0),F=l+F|0,S=G=G+p|0,G=G>>>0<p>>>0?F+1|0:F,F=xg(I,0,666643,0),p=l,(F=(H=M>>>6&2097151)+F|0)>>>0<H>>>0&&(p=p+1|0),m=F,d=H=(M=p)-(((p=F)>>>0<4293918720)+-1|0)|0,F=(F=H>>>21|0)+G|0,x=F=(H=(p=(2097151&H)<<11|(AA=p- -1048576|0)>>>21)+S|0)>>>0<p>>>0?F+1|0:F,O=F-(((p=H)>>>0<4293918720)+-1|0)|0,Z=p- -1048576|0,n=b-(p=-2097152&L)|0,e=G=N-((b>>>0<p>>>0)+K|0)|0,p=((S=O)>>>21|0)+k|0,p=(v=(b=(2097151&S)<<11|Z>>>21)+v|0)>>>0<b>>>0?p+1|0:p,v=(k=xg(r,T,-997805,-1))+((b=v)-(F=-2097152&$)|0)|0,F=l+(p-((8191&J)+(b>>>0<F>>>0)|0)|0)|0,F=v>>>0<k>>>0?F+1|0:F,p=xg(o,V,136657,0),F=l+F|0,F=(k=p+v|0)>>>0<p>>>0?F+1|0:F,G=xg(n,G,-683901,-1),p=l+F|0,N=p=(k=G+k|0)>>>0<G>>>0?p+1|0:p,L=(p=k)- -1048576|0,K=G=N-((p>>>0<4293918720)+-1|0)|0,F=(p=G>>21)+P|0,v=F=(b=(G=(2097151&G)<<11|L>>>21)+iA|0)>>>0<G>>>0?F+1|0:F,J=(p=G=b)- -1048576|0,p=(p=(b=P=F-((p>>>0<4293918720)+-1|0)|0)>>21)+EA|0,QA=P=(F=(2097151&b)<<11|J>>>21)+QA|0,P=P>>>0<F>>>0?p+1|0:p,EA=G-(p=-2097152&J)|0,iA=v-((G>>>0<p>>>0)+b|0)|0,O=k-(p=-2097152&L)|0,$=N-((k>>>0<p>>>0)+K|0)|0,p=xg(r,T,654183,0),G=l+(x-((8191&S)+(H>>>0<(F=-2097152&Z)>>>0)|0)|0)|0,G=(k=p+(H-F|0)|0)>>>0<p>>>0?G+1|0:G,F=xg(o,V,-997805,-1),p=l+G|0,p=(k=F+k|0)>>>0<F>>>0?p+1|0:p,G=xg(n,e,136657,0),F=l+p|0,L=k=G+k|0,b=k>>>0<G>>>0?F+1|0:F,J=U-(p=-2097152&z)|0,x=R-((U>>>0<p>>>0)+q|0)|0,F=xg(B,0,-683901,-1),p=l,(F=(G=2097151&((1&W)<<31|j>>>1))+F|0)>>>0<G>>>0&&(p=p+1|0),G=F,F=xg(C,0,136657,0),p=l+p|0,p=(G=G+F|0)>>>0<F>>>0?p+1|0:p,k=(F=G)+(G=xg(i,0,654183,0))|0,F=l+p|0,F=k>>>0<G>>>0?F+1|0:F,p=xg(Q,0,-997805,-1),F=l+F|0,U=G=p+k|0,k=G>>>0<p>>>0?F+1|0:F,p=xg(g,0,-683901,-1),G=l,(p=(F=X>>>4&2097151)+p|0)>>>0<F>>>0&&(G=G+1|0),H=(F=xg(B,0,136657,0))+p|0,p=l+G|0,p=H>>>0<F>>>0?p+1|0:p,G=xg(C,0,-997805,-1),F=l+p|0,F=(H=G+H|0)>>>0<G>>>0?F+1|0:F,G=xg(i,0,470296,0),p=l+F|0,p=(H=G+H|0)>>>0<G>>>0?p+1|0:p,G=xg(Q,0,654183,0),F=l+p|0,N=F=(H=G+H|0)>>>0<G>>>0?F+1|0:F,q=(p=H)- -1048576|0,K=G=F-((p>>>0<4293918720)+-1|0)|0,p=(p=G>>21)+k|0,k=G=(F=(2097151&G)<<11|q>>>21)+U|0,v=p=G>>>0<F>>>0?p+1|0:p,S=(p=G)- -1048576|0,U=G=v-((p>>>0<4293918720)+-1|0)|0,F=(p=G>>21)+x|0,t=R=(G=(2097151&G)<<11|S>>>21)+J|0,X=F=R>>>0<G>>>0?F+1|0:F,p=xg(R,F,-683901,-1),G=l+b|0,x=F=p+L|0,b=F>>>0<p>>>0?G+1|0:G,j=k-(p=-2097152&S)|0,W=U=v-((k>>>0<p>>>0)+U|0)|0,G=(p=xg(r,T,470296,0))+(m-(F=-2097152&AA)|0)|0,F=l+(M-((2047&d)+(m>>>0<F>>>0)|0)|0)|0,F=G>>>0<p>>>0?F+1|0:F,p=xg(o,V,654183,0),F=l+F|0,F=(G=p+G|0)>>>0<p>>>0?F+1|0:F,k=(p=xg(n,e,-997805,-1))+G|0,G=l+F|0,G=k>>>0<p>>>0?G+1|0:G,F=xg(R,X,136657,0),p=l+G|0,p=(k=F+k|0)>>>0<F>>>0?p+1|0:p,G=xg(j,U,-683901,-1),F=l+p|0,v=F=(k=G+k|0)>>>0<G>>>0?F+1|0:F,d=(p=k)- -1048576|0,U=G=F-((p>>>0<4293918720)+-1|0)|0,p=(p=G>>21)+b|0,b=p=(G=(F=(2097151&G)<<11|d>>>21)+x|0)>>>0<F>>>0?p+1|0:p,S=(p=G)- -1048576|0,F=(p=(m=x=b-((p>>>0<4293918720)+-1|0)|0)>>21)+$|0,O=M=(x=(2097151&m)<<11|S>>>21)+O|0,x=M>>>0<x>>>0?F+1|0:F,$=G-(p=-2097152&S)|0,z=b-((G>>>0<p>>>0)+m|0)|0,L=k-(p=-2097152&d)|0,R=v-((k>>>0<p>>>0)+U|0)|0,F=xg(r,T,666643,0),p=l,(F=(G=2097151&((1&CA)<<31|D>>>1))+F|0)>>>0<G>>>0&&(p=p+1|0),k=(G=xg(o,V,470296,0))+F|0,F=l+p|0,F=k>>>0<G>>>0?F+1|0:F,G=xg(n,e,654183,0),p=l+F|0,p=(k=G+k|0)>>>0<G>>>0?p+1|0:p,F=xg(t,X,-997805,-1),G=l+p|0,G=(k=F+k|0)>>>0<F>>>0?G+1|0:G,p=xg(j,W,136657,0),F=l+G|0,U=k=p+k|0,m=k>>>0<p>>>0?F+1|0:F,b=H-(p=-2097152&q)|0,H=N-((H>>>0<p>>>0)+K|0)|0,p=xg(I,0,-683901,-1),F=l,(p=(G=IA>>>7&2097151)+p|0)>>>0<G>>>0&&(F=F+1|0),k=(G=p)+(p=xg(g,0,136657,0))|0,G=l+F|0,G=k>>>0<p>>>0?G+1|0:G,F=xg(B,0,-997805,-1),p=l+G|0,p=(k=F+k|0)>>>0<F>>>0?p+1|0:p,G=xg(C,0,654183,0),F=l+p|0,F=(k=G+k|0)>>>0<G>>>0?F+1|0:F,G=xg(i,0,666643,0),p=l+F|0,p=(k=G+k|0)>>>0<G>>>0?p+1|0:p,G=xg(Q,0,470296,0),F=l+p|0,p=F=(k=G+k|0)>>>0<G>>>0?F+1|0:F,F=Y>>21,k=(Y=(2097151&Y)<<11|c>>>21)+(G=k)|0,G=p+F|0,K=G=k>>>0<Y>>>0?G+1|0:G,N=(p=k)- -1048576|0,v=G=G-((p>>>0<4293918720)+-1|0)|0,p=(F=G>>21)+H|0,T=Y=(G=(2097151&G)<<11|N>>>21)+b|0,J=p=Y>>>0<G>>>0?p+1|0:p,p=xg(Y,p,-683901,-1),F=l+m|0,m=G=p+U|0,Y=G>>>0<p>>>0?F+1|0:F,p=xg(o,V,666643,0),G=l,(p=(F=BA>>>4&2097151)+p|0)>>>0<F>>>0&&(G=G+1|0),H=(F=xg(n,e,470296,0))+p|0,p=l+G|0,p=H>>>0<F>>>0?p+1|0:p,G=xg(t,X,654183,0),F=l+p|0,F=(H=G+H|0)>>>0<G>>>0?F+1|0:F,p=xg(j,W,-997805,-1),F=l+F|0,F=(G=p+H|0)>>>0<p>>>0?F+1|0:F,H=(p=G)+(G=xg(T,J,136657,0))|0,p=l+F|0,U=p=H>>>0<G>>>0?p+1|0:p,M=(p=H)- -1048576|0,b=G=U-((p>>>0<4293918720)+-1|0)|0,p=(F=G>>21)+Y|0,G=p=(Y=m=(G=(2097151&G)<<11|M>>>21)+m|0)>>>0<G>>>0?p+1|0:p,d=(p=Y)- -1048576|0,p=(F=(m=S=G-((p>>>0<4293918720)+-1|0)|0)>>21)+R|0,AA=q=(S=(2097151&m)<<11|d>>>21)+L|0,S=q>>>0<S>>>0?p+1|0:p,p=k-(F=-2097152&N)|0,k=K-((k>>>0<F>>>0)+v|0)|0,v=p,p=(p=_>>21)+k|0,N=p=(k=_=v+(F=(2097151&_)<<11|f>>>21)|0)>>>0<F>>>0?p+1|0:p,q=(p=k)- -1048576|0,K=_=N-((p>>>0<4293918720)+-1|0)|0,R=p=_>>21,p=xg(V=(2097151&_)<<11|q>>>21,p,-683901,-1),F=l+G|0,F=(_=p+Y|0)>>>0<p>>>0?F+1|0:F,Z=(G=_)-(p=-2097152&d)|0,L=F-((G>>>0<p>>>0)+m|0)|0,F=xg(V,R,136657,0)+H|0,p=U+l|0,p=F>>>0<H>>>0?p+1|0:p,IA=(G=F)-(F=-2097152&M)|0,M=p-((G>>>0<F>>>0)+b|0)|0,p=xg(n,e,666643,0),F=l,(p=(G=gA>>>7&2097151)+p|0)>>>0<G>>>0&&(F=F+1|0),_=(G=p)+(p=xg(t,X,470296,0))|0,G=l+F|0,G=_>>>0<p>>>0?G+1|0:G,F=xg(j,W,654183,0),p=l+G|0,p=(_=F+_|0)>>>0<F>>>0?p+1|0:p,F=xg(T,J,-997805,-1),p=l+p|0,b=G=F+_|0,G=G>>>0<F>>>0?p+1|0:p,p=xg(t,X,666643,0),F=l,(p=(_=2097151&((3&h)<<30|w>>>2))+p|0)>>>0<_>>>0&&(F=F+1|0),_=p,p=xg(j,W,470296,0),F=l+F|0,F=(_=_+p|0)>>>0<p>>>0?F+1|0:F,Y=(p=_)+(_=xg(T,J,654183,0))|0,p=l+F|0,m=p=Y>>>0<_>>>0?p+1|0:p,d=(p=_=Y)- -1048576|0,p=(F=(H=Y=m-((p>>>0<4293918720)+-1|0)|0)>>21)+G|0,U=b=(Y=(2097151&H)<<11|d>>>21)+b|0,G=p=b>>>0<Y>>>0?p+1|0:p,b=(p=b)- -1048576|0,p=(F=(Y=v=G-((p>>>0<4293918720)+-1|0)|0)>>21)+M|0,gA=X=(v=(2097151&Y)<<11|b>>>21)+IA|0,v=X>>>0<v>>>0?p+1|0:p,p=xg(V,R,-997805,-1),G=l+G|0,G=(F=p+U|0)>>>0<p>>>0?G+1|0:G,BA=F-(p=-2097152&b)|0,CA=G-((F>>>0<p>>>0)+Y|0)|0,p=xg(V,R,654183,0)+_|0,F=m+l|0,F=p>>>0<_>>>0?F+1|0:F,IA=(G=p)-(p=-2097152&d)|0,X=F-((G>>>0<p>>>0)+H|0)|0,p=xg(j,W,666643,0),G=l,(p=(F=s>>>5&2097151)+p|0)>>>0<F>>>0&&(G=G+1|0),_=(F=xg(T,J,470296,0))+p|0,p=l+G|0,H=_,G=_>>>0<F>>>0?p+1|0:p,F=2097151&y,_=xg(T,J,666643,0)+F|0,p=l,Y=_,b=_=(U=p=_>>>0<F>>>0?p+1|0:p)-(((p=_)>>>0<4293918720)+-1|0)|0,G=(F=_>>21)+G|0,m=G=(_=(p=(2097151&_)<<11|(M=p- -1048576|0)>>>21)+H|0)>>>0<p>>>0?G+1|0:G,d=(p=_)- -1048576|0,H=G=G-((p>>>0<4293918720)+-1|0)|0,p=(F=G>>21)+X|0,G=p=(J=(G=(2097151&G)<<11|d>>>21)+IA|0)>>>0<G>>>0?p+1|0:p,p=xg(V,R,470296,0)+_|0,F=m+l|0,H=(F=p>>>0<_>>>0?F+1|0:F)-(((m=p)>>>0<(_=-2097152&d)>>>0)+H|0)|0,m=p=p-_|0,_=(F=xg(V,R,666643,0))+(Y-(p=-2097152&M)|0)|0,p=l+(U-((Y>>>0<p>>>0)+b|0)|0)|0,Y=_,F=(F=(p=_>>>0<F>>>0?p+1|0:p)>>21)+H|0,W=_=m+(p=(2097151&p)<<11|_>>>21)|0,G=(p=(F=_>>>0<p>>>0?F+1|0:F)>>21)+G|0,H=_=(F=(2097151&F)<<11|_>>>21)+J|0,F=(G=(p=_)>>>0<F>>>0?G+1|0:G)>>21,G=(2097151&G)<<11|p>>>21,p=F+CA|0,b=_=G+BA|0,G=(p=(F=_)>>>0<G>>>0?p+1|0:p)>>21,p=(2097151&p)<<11|F>>>21,F=G+v|0,v=_=p+gA|0,p=(p=(F=(G=_)>>>0<p>>>0?F+1|0:F)>>21)+L|0,J=G=(F=(2097151&F)<<11|G>>>21)+Z|0,F=(F=(p=G>>>0<F>>>0?p+1|0:p)>>21)+S|0,R=G=(p=(2097151&p)<<11|G>>>21)+AA|0,p=(F=G>>>0<p>>>0?F+1|0:F)>>21,F=(2097151&F)<<11|G>>>21,G=p+z|0,M=_=F+$|0,F=(G=(p=_)>>>0<F>>>0?G+1|0:G)>>21,G=(2097151&G)<<11|p>>>21,p=F+x|0,d=_=G+O|0,G=(p=(F=_)>>>0<G>>>0?p+1|0:p)>>21,p=(2097151&p)<<11|F>>>21,F=G+iA|0,x=_=p+EA|0,p=(p=(F=(G=_)>>>0<p>>>0?F+1|0:F)>>21)+P|0,S=G=(F=(2097151&F)<<11|G>>>21)+QA|0,F=(p=G>>>0<F>>>0?p+1|0:p)>>21,_=(2097151&p)<<11|G>>>21,p=k-(G=-2097152&q)|0,G=(N-((k>>>0<G>>>0)+K|0)|0)+F|0,K=_=_+p|0,P=(2097151&(G=(F=_)>>>0<p>>>0?G+1|0:G))<<11|F>>>21,U=p=G>>21,F=2097151&Y,G=xg(P,p,666643,0)+F|0,p=l,m=G,_=p=G>>>0<F>>>0?p+1|0:p,E[0|u]=G,E[A+1|0]=(255&p)<<24|G>>>8,p=2097151&W,G=xg(P,U,470296,0)+p|0,F=l,F=G>>>0<p>>>0?F+1|0:F,Y=G,k=(2097151&(G=_))<<11|m>>>21,G=(p=G>>21)+F|0,G=(N=Y+k|0)>>>0<k>>>0?G+1|0:G,k=N,E[A+4|0]=(2047&G)<<21|k>>>11,p=F=G,G=k,E[A+3|0]=(7&p)<<29|G>>>3,G=2097151&H,H=xg(P,U,654183,0)+G|0,p=l,p=H>>>0<G>>>0?p+1|0:p,G=H,H=(2097151&F)<<11|k>>>21,F=(F>>21)+p|0,F=(N=G+H|0)>>>0<H>>>0?F+1|0:F,H=N,p=F,E[A+6|0]=(63&p)<<26|H>>>6,Y=0,G=31&((65535&_)<<16|m>>>16),F=m=2097151&k,E[A+2|0]=G|F<<5,G=2097151&b,k=xg(P,U,-997805,-1)+G|0,F=l,G=F=k>>>0<G>>>0?F+1|0:F,G=(F=p>>21)+G|0,b=k=(p=(2097151&p)<<11|H>>>21)+k|0,G=k>>>0<p>>>0?G+1|0:G,E[A+9|0]=(511&G)<<23|k>>>9,p=F=G,G=k,E[A+8|0]=(1&p)<<31|G>>>1,k=0,G=H&=2097151,E[A+5|0]=(524287&Y)<<13|m>>>19|G<<2,G=2097151&v,Y=xg(P,U,136657,0)+G|0,p=l,p=(p=Y>>>0<G>>>0?p+1|0:p)+(G=F>>21)|0,m=Y=(F=(2097151&F)<<11|b>>>21)+Y|0,p=Y>>>0<F>>>0?p+1|0:p,F=Y,E[A+12|0]=(4095&p)<<20|F>>>12,G=p,E[A+11|0]=(15&p)<<28|F>>>4,Y=0,F=v=2097151&b,E[A+7|0]=(16383&k)<<18|H>>>14|F<<7,p=2097151&J,k=xg(P,U,-683901,-1)+p|0,F=l,F=k>>>0<p>>>0?F+1|0:F,F=(p=G>>21)+F|0,H=k=(G=(2097151&G)<<11|m>>>21)+k|0,p=F=k>>>0<G>>>0?F+1|0:F,E[A+14|0]=(127&p)<<25|k>>>7,k=0,G=b=2097151&m,E[A+10|0]=(131071&Y)<<15|v>>>17|G<<4,F=p>>21,G=(m=(p=(2097151&p)<<11|H>>>21)+(2097151&R)|0)>>>0<p>>>0?F+1|0:F,E[A+17|0]=(1023&G)<<22|m>>>10,p=G,G=m,E[A+16|0]=(3&p)<<30|G>>>2,G=U=2097151&H,E[A+13|0]=(1048575&k)<<12|b>>>20|G<<1,G=(2097151&p)<<11|m>>>21,p>>=21,p=(H=G+(2097151&M)|0)>>>0<G>>>0?p+1|0:p,F=H,E[A+20|0]=(8191&p)<<19|F>>>13,E[A+19|0]=(31&p)<<27|F>>>5,F=b=2097151&m,E[A+15|0]=(32767&Y)<<17|U>>>15|F<<6,_=(2097151&p)<<11|H>>>21,p=F=p>>21,_=p=(U=_+(2097151&d)|0)>>>0<_>>>0?p+1|0:p,E[A+21|0]=U,p=H,E[A+18|0]=(262143&k)<<14|b>>>18|p<<3,p=_,E[A+22|0]=(255&p)<<24|U>>>8,G=p,p>>=21,G=(H=(Y=(2097151&G)<<11|U>>>21)+(2097151&x)|0)>>>0<Y>>>0?p+1|0:p,E[(F=A)+25|0]=(2047&G)<<21|H>>>11,p=G,G=H,E[F+24|0]=(7&p)<<29|G>>>3,G=F,Y=(2097151&p)<<11|H>>>21,p>>=21,F=p=(k=m=Y+(2097151&S)|0)>>>0<Y>>>0?p+1|0:p,E[G+27|0]=(63&p)<<26|k>>>6,Y=0,p=m=2097151&H,E[G+23|0]=31&((65535&_)<<16|U>>>16)|p<<5,F=(p=F)>>21,F=(_=(p=(2097151&p)<<11|k>>>21)+(2097151&K)|0)>>>0<p>>>0?F+1|0:F,G=_,E[A+31|0]=(131071&F)<<15|G>>>17,p=F,E[A+30|0]=(511&p)<<23|G>>>9,E[A+29|0]=(1&p)<<31|G>>>1,F=0,k&=2097151,E[A+26|0]=(524287&Y)<<13|m>>>19|k<<2,E[A+28|0]=(16383&F)<<18|k>>>14|G<<7}function _(A){var I,g=0,B=0,C=0,Q=0,E=0,i=0,o=0,e=0,c=0,f=0,y=0,s=0,w=0;D=I=D-16|0;A:{I:{g:{B:{C:{Q:{E:{i:{n:{a:{r:{o:{if((A|=0)>>>0<=244){if(3&(g=(Q=n[8961])>>>(A=(i=A>>>0<11?16:A+11&-8)>>>3|0)|0)){A=(g=n[35892+(E=(B=A+(1&(-1^g))|0)<<3)>>2])+8|0,(0|(C=n[g+8>>2]))!=(0|(E=E+35884|0))?(n[C+12>>2]=E,n[E+8>>2]=C):(s=35844,w=ng(-2,B)&Q,n[s>>2]=w),B<<=3,n[g+4>>2]=3|B,n[4+(g=g+B|0)>>2]=1|n[g+4>>2];break A}if(i>>>0<=(e=n[8963])>>>0)break o;if(g){B=g=(A=(0-(A=(0-(B=2<<A)|B)&g<<A)&A)-1|0)>>>12&16,B|=g=(A=A>>>g|0)>>>5&8,B|=g=(A=A>>>g|0)>>>2&4,g=n[35892+(C=(B=((B|=g=(A=A>>>g|0)>>>1&2)|(g=(A=A>>>g|0)>>>1&1))+(A>>>g|0)|0)<<3)>>2],(0|(A=n[g+8>>2]))!=(0|(C=C+35884|0))?(n[A+12>>2]=C,n[C+8>>2]=A):(Q=ng(-2,B)&Q,n[8961]=Q),A=g+8|0,n[g+4>>2]=3|i,E=(B<<=3)-i|0,n[4+(o=g+i|0)>>2]=1|E,n[g+B>>2]=E,e&&(g=35884+((B=e>>>3|0)<<3)|0,C=n[8966],(B=1<<B)&Q?B=n[g+8>>2]:(n[8961]=B|Q,B=g),n[g+8>>2]=C,n[B+12>>2]=C,n[C+12>>2]=g,n[C+8>>2]=B),n[8966]=o,n[8963]=E;break A}if(!(f=n[8962]))break o;for(B=g=(A=(f&0-f)-1|0)>>>12&16,B|=g=(A=A>>>g|0)>>>5&8,B|=g=(A=A>>>g|0)>>>2&4,g=n[36148+(((B|=g=(A=A>>>g|0)>>>1&2)|(g=(A=A>>>g|0)>>>1&1))+(A>>>g|0)<<2)>>2],C=(-8&n[g+4>>2])-i|0,B=g;(A=n[B+16>>2])||(A=n[B+20>>2]);)C=(B=(E=(-8&n[A+4>>2])-i|0)>>>0<C>>>0)?E:C,g=B?A:g,B=A;if((y=g+i|0)>>>0<=g>>>0)break r;if(c=n[g+24>>2],(0|(E=n[g+12>>2]))!=(0|g)){A=n[g+8>>2],n[A+12>>2]=E,n[E+8>>2]=A;break I}if(!(A=n[(B=g+20|0)>>2])){if(!(A=n[g+16>>2]))break a;B=g+16|0}for(;o=B,E=A,(A=n[(B=A+20|0)>>2])||(B=E+16|0,A=n[E+16>>2]););n[o>>2]=0;break I}if(i=-1,!(A>>>0>4294967231)&&(i=-8&(g=A+11|0),e=n[8962])){B=0-i|0,Q=0,(g=g>>>8|0)&&(Q=31,i>>>0>16777215||(Q=28+((A=((Q=(g<<=C=g+1048320>>>16&8)<<(A=g+520192>>>16&4))<<(g=Q+245760>>>16&2)>>>15|0)-(g|A|C)|0)<<1|i>>>A+21&1)|0));e:{t:{if(C=n[36148+(Q<<2)>>2])for(g=i<<(31==(0|Q)?0:25-(Q>>>1|0)|0),A=0;;){if(!((o=(-8&n[C+4>>2])-i|0)>>>0>=B>>>0||(E=C,B=o))){B=0,A=C;break t}if(o=n[C+20>>2],C=n[16+((g>>>29&4)+C|0)>>2],A=o?(0|o)==(0|C)?A:o:A,g<<=0!=(0|C),!C)break}else A=0;if(!(A|E)){if(!(A=(0-(A=2<<Q)|A)&e))break o;C=g=(A=(A&0-A)-1|0)>>>12&16,C|=g=(A=A>>>g|0)>>>5&8,C|=g=(A=A>>>g|0)>>>2&4,A=n[36148+(((C|=g=(A=A>>>g|0)>>>1&2)|(g=(A=A>>>g|0)>>>1&1))+(A>>>g|0)<<2)>>2]}if(!A)break e}for(;B=(g=(C=(-8&n[A+4>>2])-i|0)>>>0<B>>>0)?C:B,E=g?A:E,A=(g=n[A+16>>2])||n[A+20>>2];);}if(!(!E|B>>>0>=n[8963]-i>>>0)){if((Q=E+i|0)>>>0<=E>>>0)break r;if(c=n[E+24>>2],(0|E)!=(0|(g=n[E+12>>2]))){A=n[E+8>>2],n[A+12>>2]=g,n[g+8>>2]=A;break g}if(!(A=n[(C=E+20|0)>>2])){if(!(A=n[E+16>>2]))break n;C=E+16|0}for(;o=C,g=A,(A=n[(C=A+20|0)>>2])||(C=g+16|0,A=n[g+16>>2]););n[o>>2]=0;break g}}}if((g=n[8963])>>>0>=i>>>0){A=n[8966],(B=g-i|0)>>>0>=16?(n[8963]=B,C=A+i|0,n[8966]=C,n[C+4>>2]=1|B,n[A+g>>2]=B,n[A+4>>2]=3|i):(n[8966]=0,n[8963]=0,n[A+4>>2]=3|g,n[4+(g=A+g|0)>>2]=1|n[g+4>>2]),A=A+8|0;break A}if((C=n[8964])>>>0>i>>>0){g=C-i|0,n[8964]=g,B=(A=n[8967])+i|0,n[8967]=B,n[B+4>>2]=1|g,n[A+4>>2]=3|i,A=A+8|0;break A}if(A=0,B=E=i+47|0,n[9079]?g=n[9081]:(n[9082]=-1,n[9083]=-1,n[9080]=4096,n[9081]=4096,n[9079]=I+12&-16^1431655768,n[9084]=0,n[9072]=0,g=4096),(B=(Q=B+g|0)&(o=0-g|0))>>>0<=i>>>0)break A;if((g=n[9071])&&(c=(e=n[9069])+B|0)>>>0<=e>>>0|c>>>0>g>>>0)break A;if(4&a[36288])break Q;o:{e:{if(g=n[8967])for(A=36292;;){if((e=n[A>>2])+n[A+4>>2]>>>0>g>>>0&&e>>>0<=g>>>0)break e;if(!(A=n[A+8>>2]))break}if(-1==(0|(g=FI(0))))break E;if(Q=B,(C=(A=n[9080])+-1|0)&g&&(Q=(B-g|0)+(g+C&0-A)|0),Q>>>0<=i>>>0|Q>>>0>2147483646)break E;if((A=n[9071])&&(o=(C=n[9069])+Q|0)>>>0<=C>>>0|o>>>0>A>>>0)break E;if((0|g)!=(0|(A=FI(Q))))break o;break C}if((Q=o&Q-C)>>>0>2147483646)break E;if((0|(g=FI(Q)))==(n[A>>2]+n[A+4>>2]|0))break i;A=g}if(!(-1==(0|A)|i+48>>>0<=Q>>>0)){if((g=(g=n[9081])+(E-Q|0)&0-g)>>>0>2147483646){g=A;break C}if(-1!=(0|FI(g))){Q=g+Q|0,g=A;break C}FI(0-Q|0);break E}if(g=A,-1!=(0|A))break C;break E}t()}E=0;break I}g=0;break g}if(-1!=(0|g))break C}n[9072]=4|n[9072]}if(B>>>0>2147483646)break B;if((g=FI(B))>>>0>=(A=FI(0))>>>0|-1==(0|g)|-1==(0|A))break B;if((Q=A-g|0)>>>0<=i+40>>>0)break B}A=n[9069]+Q|0,n[9069]=A,A>>>0>r[9070]&&(n[9070]=A);C:{Q:{E:{if(B=n[8967]){for(A=36292;;){if(((C=n[A>>2])+(E=n[A+4>>2])|0)==(0|g))break E;if(!(A=n[A+8>>2]))break}break Q}for(g>>>0>=(A=n[8965])>>>0&&A||(n[8965]=g),A=0,n[9074]=Q,n[9073]=g,n[8969]=-1,n[8970]=n[9079],n[9076]=0;C=35884+(B=A<<3)|0,n[B+35892>>2]=C,n[B+35896>>2]=C,32!=(0|(A=A+1|0)););C=(A=Q+-40|0)-(B=g+8&7?-8-g&7:0)|0,n[8964]=C,B=g+B|0,n[8967]=B,n[B+4>>2]=1|C,n[4+(A+g|0)>>2]=40,n[8968]=n[9083];break C}if(!(8&a[A+12|0]|g>>>0<=B>>>0|C>>>0>B>>>0)){n[A+4>>2]=Q+E,g=(A=B+8&7?-8-B&7:0)+B|0,n[8967]=g,A=(C=n[8964]+Q|0)-A|0,n[8964]=A,n[g+4>>2]=1|A,n[4+(B+C|0)>>2]=40,n[8968]=n[9083];break C}}g>>>0<(E=n[8965])>>>0&&(n[8965]=g,E=0),C=g+Q|0,A=36292;Q:{E:{i:{n:{a:{r:{for(;;){if((0|C)!=n[A>>2]){if(A=n[A+8>>2])continue;break r}break}if(!(8&a[A+12|0]))break a}for(A=36292;;){if((C=n[A>>2])>>>0<=B>>>0&&(E=C+n[A+4>>2]|0)>>>0>B>>>0)break n;A=n[A+8>>2]}}if(n[A>>2]=g,n[A+4>>2]=n[A+4>>2]+Q,n[4+(c=(g+8&7?-8-g&7:0)+g|0)>>2]=3|i,A=((g=C+(C+8&7?-8-C&7:0)|0)-c|0)-i|0,o=i+c|0,(0|g)==(0|B)){n[8967]=o,A=n[8964]+A|0,n[8964]=A,n[o+4>>2]=1|A;break E}if(n[8966]==(0|g)){n[8966]=o,A=n[8963]+A|0,n[8963]=A,n[o+4>>2]=1|A,n[A+o>>2]=A;break E}if(1==(3&(B=n[g+4>>2]))){f=-8&B;a:if(B>>>0<=255){if(E=B>>>3|0,B=n[g+8>>2],(0|(C=n[g+12>>2]))==(0|B)){s=35844,w=n[8961]&ng(-2,E),n[s>>2]=w;break a}n[B+12>>2]=C,n[C+8>>2]=B}else{if(e=n[g+24>>2],(0|(Q=n[g+12>>2]))==(0|g))if((i=n[(C=g+20|0)>>2])||(i=n[(C=g+16|0)>>2])){for(;B=C,(i=n[(C=(Q=i)+20|0)>>2])||(C=Q+16|0,i=n[Q+16>>2]););n[B>>2]=0}else Q=0;else B=n[g+8>>2],n[B+12>>2]=Q,n[Q+8>>2]=B;if(e){B=n[g+28>>2];r:{if(n[(C=36148+(B<<2)|0)>>2]==(0|g)){if(n[C>>2]=Q,Q)break r;s=35848,w=n[8962]&ng(-2,B),n[s>>2]=w;break a}if(n[e+(n[e+16>>2]==(0|g)?16:20)>>2]=Q,!Q)break a}n[Q+24>>2]=e,(B=n[g+16>>2])&&(n[Q+16>>2]=B,n[B+24>>2]=Q),(B=n[g+20>>2])&&(n[Q+20>>2]=B,n[B+24>>2]=Q)}}g=g+f|0,A=A+f|0}if(n[g+4>>2]=-2&n[g+4>>2],n[o+4>>2]=1|A,n[A+o>>2]=A,A>>>0<=255){A=35884+((g=A>>>3|0)<<3)|0,(B=n[8961])&(g=1<<g)?g=n[A+8>>2]:(n[8961]=g|B,g=A),n[A+8>>2]=o,n[g+12>>2]=o,n[o+12>>2]=A,n[o+8>>2]=g;break E}if(g=0,(C=A>>>8|0)&&(g=31,A>>>0>16777215||(g=28+((g=((i=(C<<=E=C+1048320>>>16&8)<<(g=C+520192>>>16&4))<<(C=i+245760>>>16&2)>>>15|0)-(C|g|E)|0)<<1|A>>>g+21&1)|0)),n[(B=o)+28>>2]=g,n[o+16>>2]=0,n[o+20>>2]=0,B=36148+(g<<2)|0,(C=n[8962])&(E=1<<g)){for(C=A<<(31==(0|g)?0:25-(g>>>1|0)|0),g=n[B>>2];;){if(B=g,(-8&n[g+4>>2])==(0|A))break i;if(g=C>>>29|0,C<<=1,!(g=n[16+(E=(4&g)+B|0)>>2]))break}n[E+16>>2]=o}else n[8962]=C|E,n[B>>2]=o;n[o+24>>2]=B,n[o+12>>2]=o,n[o+8>>2]=o;break E}for(o=(A=Q+-40|0)-(C=g+8&7?-8-g&7:0)|0,n[8964]=o,C=g+C|0,n[8967]=C,n[C+4>>2]=1|o,n[4+(A+g|0)>>2]=40,n[8968]=n[9083],n[(C=(A=(E+(E+-39&7?39-E&7:0)|0)-47|0)>>>0<B+16>>>0?B:A)+4>>2]=27,A=n[9076],n[C+16>>2]=n[9075],n[C+20>>2]=A,A=n[9074],n[C+8>>2]=n[9073],n[C+12>>2]=A,n[9075]=C+8,n[9074]=Q,n[9073]=g,n[9076]=0,A=C+24|0;n[A+4>>2]=7,g=A+8|0,A=A+4|0,E>>>0>g>>>0;);if((0|B)==(0|C))break C;if(n[C+4>>2]=-2&n[C+4>>2],E=C-B|0,n[B+4>>2]=1|E,n[C>>2]=E,E>>>0<=255){A=35884+((g=E>>>3|0)<<3)|0,(C=n[8961])&(g=1<<g)?g=n[A+8>>2]:(n[8961]=g|C,g=A),n[A+8>>2]=B,n[g+12>>2]=B,n[B+12>>2]=A,n[B+8>>2]=g;break C}if(n[B+16>>2]=0,n[B+20>>2]=0,A=0,(C=E>>>8|0)&&(A=31,E>>>0>16777215||(A=28+((A=((o=(C<<=Q=C+1048320>>>16&8)<<(A=C+520192>>>16&4))<<(C=o+245760>>>16&2)>>>15|0)-(C|A|Q)|0)<<1|E>>>A+21&1)|0)),n[(g=B)+28>>2]=A,g=36148+(A<<2)|0,(C=n[8962])&(Q=1<<A)){for(A=E<<(31==(0|A)?0:25-(A>>>1|0)|0),g=n[g>>2];;){if(C=g,(0|E)==(-8&n[g+4>>2]))break Q;if(g=A>>>29|0,A<<=1,!(g=n[16+(Q=C+(4&g)|0)>>2]))break}n[Q+16>>2]=B,n[B+24>>2]=C}else n[8962]=C|Q,n[g>>2]=B,n[B+24>>2]=g;n[B+12>>2]=B,n[B+8>>2]=B;break C}A=n[B+8>>2],n[A+12>>2]=o,n[B+8>>2]=o,n[o+24>>2]=0,n[o+12>>2]=B,n[o+8>>2]=A}A=c+8|0;break A}A=n[C+8>>2],n[A+12>>2]=B,n[C+8>>2]=B,n[B+24>>2]=0,n[B+12>>2]=C,n[B+8>>2]=A}if(!((A=n[8964])>>>0<=i>>>0)){g=A-i|0,n[8964]=g,B=(A=n[8967])+i|0,n[8967]=B,n[B+4>>2]=1|g,n[A+4>>2]=3|i,A=A+8|0;break A}}n[8960]=48,A=0;break A}g:if(c){A=n[E+28>>2];B:{if(n[(C=36148+(A<<2)|0)>>2]==(0|E)){if(n[C>>2]=g,g)break B;e=ng(-2,A)&e,n[8962]=e;break g}if(n[c+(n[c+16>>2]==(0|E)?16:20)>>2]=g,!g)break g}n[g+24>>2]=c,(A=n[E+16>>2])&&(n[g+16>>2]=A,n[A+24>>2]=g),(A=n[E+20>>2])&&(n[g+20>>2]=A,n[A+24>>2]=g)}g:if(B>>>0<=15)A=B+i|0,n[E+4>>2]=3|A,n[4+(A=A+E|0)>>2]=1|n[A+4>>2];else if(n[E+4>>2]=3|i,n[Q+4>>2]=1|B,n[B+Q>>2]=B,B>>>0<=255)A=35884+((g=B>>>3|0)<<3)|0,(B=n[8961])&(g=1<<g)?g=n[A+8>>2]:(n[8961]=g|B,g=A),n[A+8>>2]=Q,n[g+12>>2]=Q,n[Q+12>>2]=A,n[Q+8>>2]=g;else{A=0,(C=B>>>8|0)&&(A=31,B>>>0>16777215||(A=28+((A=((o=(C<<=i=C+1048320>>>16&8)<<(A=C+520192>>>16&4))<<(C=o+245760>>>16&2)>>>15|0)-(C|A|i)|0)<<1|B>>>A+21&1)|0)),n[(g=Q)+28>>2]=A,n[Q+16>>2]=0,n[Q+20>>2]=0,g=36148+(A<<2)|0;B:{if((C=1<<A)&e){for(A=B<<(31==(0|A)?0:25-(A>>>1|0)|0),i=n[g>>2];;){if((-8&n[(g=i)+4>>2])==(0|B))break B;if(C=A>>>29|0,A<<=1,!(i=n[16+(C=(4&C)+g|0)>>2]))break}n[C+16>>2]=Q}else n[8962]=C|e,n[g>>2]=Q;n[Q+24>>2]=g,n[Q+12>>2]=Q,n[Q+8>>2]=Q;break g}A=n[g+8>>2],n[A+12>>2]=Q,n[g+8>>2]=Q,n[Q+24>>2]=0,n[Q+12>>2]=g,n[Q+8>>2]=A}A=E+8|0;break A}I:if(c){A=n[g+28>>2];g:{if(n[(B=36148+(A<<2)|0)>>2]==(0|g)){if(n[B>>2]=E,E)break g;s=35848,w=ng(-2,A)&f,n[s>>2]=w;break I}if(n[c+(n[c+16>>2]==(0|g)?16:20)>>2]=E,!E)break I}n[E+24>>2]=c,(A=n[g+16>>2])&&(n[E+16>>2]=A,n[A+24>>2]=E),(A=n[g+20>>2])&&(n[E+20>>2]=A,n[A+24>>2]=E)}C>>>0<=15?(A=C+i|0,n[g+4>>2]=3|A,n[4+(A=A+g|0)>>2]=1|n[A+4>>2]):(n[g+4>>2]=3|i,n[y+4>>2]=1|C,n[C+y>>2]=C,e&&(A=35884+((B=e>>>3|0)<<3)|0,E=n[8966],(B=1<<B)&Q?B=n[A+8>>2]:(n[8961]=B|Q,B=A),n[A+8>>2]=E,n[B+12>>2]=E,n[E+12>>2]=A,n[E+8>>2]=B),n[8966]=y,n[8963]=C),A=g+8|0}return D=I+16|0,0|A}function H(A,I,g){var B,C,Q,E,i,a,r,e,t,c,f,y,s,w,h,D,u,p,F,G,k,_,H,Y,b,m,U,v,S,N,R,M,d,P,J,x,L,K,q,X,V,T,W,j,Z,O,z,$,AA,IA,gA,BA,CA,QA,EA=0,iA=0,nA=0,aA=0,rA=0,oA=0,eA=0,tA=0,cA=0,fA=0,yA=0,sA=0,wA=0,hA=0,DA=0,uA=0,pA=0,lA=0,FA=0,GA=0,kA=0,_A=0,HA=0,YA=0,bA=0;eA=A,e=EA=_A=n[g+4>>2],t=EA>>31,L=EA=(DA=n[I+20>>2])<<1,EA=xg(e,t,EA,H=EA>>31),nA=l,iA=EA,B=EA=n[g>>2],C=EA>>31,c=EA=n[I+24>>2],rA=xg(B,C,EA,Q=EA>>31),EA=l+nA|0,EA=(iA=iA+rA|0)>>>0<rA>>>0?EA+1|0:EA,nA=iA,Y=iA=oA=n[g+8>>2],u=iA>>31,f=iA=n[I+16>>2],iA=nA+(rA=xg(oA,u,iA,E=iA>>31))|0,nA=l+EA|0,nA=iA>>>0<rA>>>0?nA+1|0:nA,K=EA=pA=n[g+12>>2],p=EA>>31,q=EA=(sA=n[I+12>>2])<<1,EA=(rA=xg(pA,p,EA,b=EA>>31))+iA|0,iA=l+nA|0,iA=EA>>>0<rA>>>0?iA+1|0:iA,nA=EA,O=EA=uA=n[g+16>>2],k=EA>>31,y=EA=n[I+8>>2],rA=xg(uA,k,EA,i=EA>>31),EA=l+iA|0,EA=(nA=nA+rA|0)>>>0<rA>>>0?EA+1|0:EA,aA=nA,z=iA=fA=n[g+20>>2],m=iA>>31,X=iA=(tA=n[I+4>>2])<<1,nA=xg(fA,m,iA,U=iA>>31),EA=l+EA|0,EA=(iA=aA+nA|0)>>>0<nA>>>0?EA+1|0:EA,nA=iA,$=iA=yA=n[g+24>>2],V=iA>>31,s=iA=n[I>>2],rA=xg(yA,V,iA,a=iA>>31),iA=l+EA|0,iA=(nA=nA+rA|0)>>>0<rA>>>0?iA+1|0:iA,lA=n[g+28>>2],F=EA=o(lA,19),G=EA>>31,T=EA=(wA=n[I+36>>2])<<1,EA=(rA=xg(F,G,EA,v=EA>>31))+nA|0,nA=l+iA|0,nA=EA>>>0<rA>>>0?nA+1|0:nA,iA=EA,hA=n[g+32>>2],FA=EA=o(hA,19),GA=EA>>31,w=EA=n[I+32>>2],rA=xg(FA,GA,EA,r=EA>>31),EA=l+nA|0,EA=(iA=iA+rA|0)>>>0<rA>>>0?EA+1|0:EA,nA=iA,AA=n[g+36>>2],h=g=o(AA,19),D=g>>31,W=g=(I=n[I+28>>2])<<1,iA=xg(h,D,g,S=g>>31),EA=l+EA|0,cA=g=nA+iA|0,g=g>>>0<iA>>>0?EA+1|0:EA,EA=xg(f,E,e,t),iA=l,DA=xg(B,C,rA=DA,N=rA>>31),nA=l+iA|0,nA=(EA=DA+EA|0)>>>0<DA>>>0?nA+1|0:nA,DA=sA,sA=xg(oA,u,sA,R=sA>>31),iA=l+nA|0,iA=(EA=sA+EA|0)>>>0<sA>>>0?iA+1|0:iA,nA=(sA=xg(y,i,pA,p))+EA|0,EA=l+iA|0,EA=nA>>>0<sA>>>0?EA+1|0:EA,iA=nA,sA=tA,nA=xg(uA,k,tA,M=tA>>31),EA=l+EA|0,EA=(iA=iA+nA|0)>>>0<nA>>>0?EA+1|0:EA,nA=xg(s,a,fA,m),EA=l+EA|0,EA=(iA=nA+iA|0)>>>0<nA>>>0?EA+1|0:EA,nA=iA,d=iA=o(yA,19),iA=nA+(wA=xg(iA,_=iA>>31,tA=wA,P=tA>>31))|0,nA=l+EA|0,nA=iA>>>0<wA>>>0?nA+1|0:nA,EA=(wA=xg(w,r,F,G))+iA|0,iA=l+nA|0,iA=EA>>>0<wA>>>0?iA+1|0:iA,wA=I,I=(nA=xg(FA,GA,I,J=I>>31))+EA|0,EA=l+iA|0,EA=I>>>0<nA>>>0?EA+1|0:EA,iA=xg(h,D,c,Q),EA=l+EA|0,HA=I=iA+I|0,I=I>>>0<iA>>>0?EA+1|0:EA,EA=xg(e,t,q,b),nA=l,iA=(yA=xg(B,C,f,E))+EA|0,EA=l+nA|0,EA=iA>>>0<yA>>>0?EA+1|0:EA,yA=xg(y,i,oA,u),nA=l+EA|0,nA=(iA=yA+iA|0)>>>0<yA>>>0?nA+1|0:nA,EA=(yA=xg(pA,p,X,U))+iA|0,iA=l+nA|0,iA=EA>>>0<yA>>>0?iA+1|0:iA,nA=(yA=xg(s,a,uA,k))+EA|0,EA=l+iA|0,EA=nA>>>0<yA>>>0?EA+1|0:EA,aA=nA,j=iA=o(fA,19),nA=xg(iA,x=iA>>31,T,v),EA=l+EA|0,EA=(iA=aA+nA|0)>>>0<nA>>>0?EA+1|0:EA,nA=xg(w,r,d,_),EA=l+EA|0,EA=(iA=nA+iA|0)>>>0<nA>>>0?EA+1|0:EA,fA=xg(F,G,W,S),nA=l+EA|0,nA=(iA=fA+iA|0)>>>0<fA>>>0?nA+1|0:nA,EA=(fA=xg(FA,GA,c,Q))+iA|0,iA=l+nA|0,iA=EA>>>0<fA>>>0?iA+1|0:iA,nA=(fA=xg(h,D,L,H))+EA|0,EA=l+iA|0,EA=nA>>>0<fA>>>0?EA+1|0:EA,fA=nA,gA=EA,(iA=nA+33554432|0)>>>0<33554432&&(EA=EA+1|0),yA=iA,BA=EA,nA=HA,HA=(67108863&EA)<<6|iA>>>26,EA=(EA>>26)+I|0,EA=(nA=nA+HA|0)>>>0<HA>>>0?EA+1|0:EA,HA=nA,nA=EA,(I=HA+16777216|0)>>>0<16777216&&(nA=nA+1|0),CA=I,EA=g+(iA=nA>>25)|0,EA=(I=(nA=(33554431&nA)<<7|I>>>25)+cA|0)>>>0<nA>>>0?EA+1|0:EA,(I=(g=I)+33554432|0)>>>0<33554432&&(EA=EA+1|0),YA=I,I=EA,EA=-67108864&YA,n[eA+24>>2]=g-EA,cA=A,g=xg(e,t,X,U),EA=l,iA=xg(B,C,y,i),nA=l+EA|0,nA=(g=iA+g|0)>>>0<iA>>>0?nA+1|0:nA,iA=xg(s,a,Y,u),EA=l+nA|0,EA=(g=iA+g|0)>>>0<iA>>>0?EA+1|0:EA,nA=g,eA=g=o(pA,19),iA=xg(g,pA=g>>31,T,v),EA=l+EA|0,EA=(g=nA+iA|0)>>>0<iA>>>0?EA+1|0:EA,iA=g,IA=g=o(uA,19),g=iA+(nA=xg(w,r,g,Z=g>>31))|0,iA=l+EA|0,iA=g>>>0<nA>>>0?iA+1|0:iA,nA=xg(W,S,j,x),EA=l+iA|0,EA=(g=nA+g|0)>>>0<nA>>>0?EA+1|0:EA,iA=xg(c,Q,d,_),nA=l+EA|0,nA=(g=iA+g|0)>>>0<iA>>>0?nA+1|0:nA,iA=xg(F,G,L,H),EA=l+nA|0,EA=(g=iA+g|0)>>>0<iA>>>0?EA+1|0:EA,iA=xg(FA,GA,f,E),EA=l+EA|0,EA=(g=iA+g|0)>>>0<iA>>>0?EA+1|0:EA,nA=xg(h,D,q,b),iA=l+EA|0,aA=g=nA+g|0,g=g>>>0<nA>>>0?iA+1|0:iA,EA=xg(s,a,e,t),nA=l,iA=(uA=xg(B,C,sA,M))+EA|0,EA=l+nA|0,EA=iA>>>0<uA>>>0?EA+1|0:EA,nA=iA,uA=iA=o(oA,19),iA=nA+(oA=xg(iA,kA=iA>>31,tA,P))|0,nA=l+EA|0,nA=iA>>>0<oA>>>0?nA+1|0:nA,oA=xg(w,r,eA,pA),EA=l+nA|0,EA=(iA=oA+iA|0)>>>0<oA>>>0?EA+1|0:EA,nA=xg(IA,Z,wA,J),EA=l+EA|0,EA=(iA=nA+iA|0)>>>0<nA>>>0?EA+1|0:EA,nA=(oA=xg(c,Q,j,x))+iA|0,iA=l+EA|0,iA=nA>>>0<oA>>>0?iA+1|0:iA,oA=xg(d,_,rA,N),EA=l+iA|0,EA=(nA=oA+nA|0)>>>0<oA>>>0?EA+1|0:EA,iA=(oA=xg(f,E,F,G))+nA|0,nA=l+EA|0,nA=iA>>>0<oA>>>0?nA+1|0:nA,oA=xg(FA,GA,DA,R),EA=l+nA|0,EA=(iA=oA+iA|0)>>>0<oA>>>0?EA+1|0:EA,nA=xg(h,D,y,i),EA=l+EA|0,bA=iA=nA+iA|0,oA=iA>>>0<nA>>>0?EA+1|0:EA,EA=xg(EA=o(_A,19),EA>>31,T,v),iA=l,nA=xg(B,C,s,a),iA=l+iA|0,iA=(EA=nA+EA|0)>>>0<nA>>>0?iA+1|0:iA,nA=(_A=xg(w,r,uA,kA))+EA|0,EA=l+iA|0,iA=(eA=xg(eA,pA,W,S))+nA|0,nA=l+(nA>>>0<_A>>>0?EA+1|0:EA)|0,nA=iA>>>0<eA>>>0?nA+1|0:nA,eA=xg(c,Q,IA,Z),EA=l+nA|0,EA=(iA=eA+iA|0)>>>0<eA>>>0?EA+1|0:EA,nA=xg(L,H,j,x),EA=l+EA|0,EA=(iA=nA+iA|0)>>>0<nA>>>0?EA+1|0:EA,nA=(eA=xg(f,E,d,_))+iA|0,iA=l+EA|0,iA=nA>>>0<eA>>>0?iA+1|0:iA,eA=xg(F,G,q,b),EA=l+iA|0,EA=(nA=eA+nA|0)>>>0<eA>>>0?EA+1|0:EA,iA=(eA=xg(FA,GA,y,i))+nA|0,nA=l+EA|0,nA=iA>>>0<eA>>>0?nA+1|0:nA,eA=xg(h,D,X,U),EA=l+nA|0,EA=(iA=eA+iA|0)>>>0<eA>>>0?EA+1|0:EA,eA=iA,_A=EA,(iA=iA+33554432|0)>>>0<33554432&&(EA=EA+1|0),pA=iA,uA=EA,kA=(67108863&EA)<<6|iA>>>26,iA=(nA=EA>>26)+oA|0,oA=EA=kA+bA|0,nA=aA,EA=EA>>>0<kA>>>0?iA+1|0:iA,(iA=oA+16777216|0)>>>0<16777216&&(EA=EA+1|0),QA=iA,aA=(33554431&EA)<<7|iA>>>25,EA=(EA>>25)+g|0,EA=(iA=nA+aA|0)>>>0<aA>>>0?EA+1|0:EA,(g=iA+33554432|0)>>>0<33554432&&(EA=EA+1|0),kA=g,g=EA,EA=-67108864&kA,n[cA+8>>2]=iA-EA,aA=A,EA=xg(c,Q,e,t),nA=l,iA=(cA=xg(B,C,wA,J))+EA|0,EA=l+nA|0,EA=iA>>>0<cA>>>0?EA+1|0:EA,nA=xg(Y,u,rA,N),EA=l+EA|0,EA=(iA=nA+iA|0)>>>0<nA>>>0?EA+1|0:EA,nA=xg(f,E,K,p),EA=l+EA|0,EA=(iA=nA+iA|0)>>>0<nA>>>0?EA+1|0:EA,cA=xg(O,k,DA,R),nA=l+EA|0,nA=(iA=cA+iA|0)>>>0<cA>>>0?nA+1|0:nA,EA=(cA=xg(y,i,z,m))+iA|0,iA=l+nA|0,iA=EA>>>0<cA>>>0?iA+1|0:iA,nA=(cA=xg(sA,M,$,V))+EA|0,EA=l+iA|0,EA=nA>>>0<cA>>>0?EA+1|0:EA,iA=nA,nA=xg(s,a,cA=lA,bA=cA>>31),EA=l+EA|0,EA=(iA=iA+nA|0)>>>0<nA>>>0?EA+1|0:EA,nA=xg(FA,GA,tA,P),EA=l+EA|0,EA=(iA=nA+iA|0)>>>0<nA>>>0?EA+1|0:EA,lA=xg(h,D,w,r),nA=l+EA|0,nA=(iA=lA+iA|0)>>>0<lA>>>0?nA+1|0:nA,EA=I>>26,I=(lA=(67108863&I)<<6|YA>>>26)+iA|0,iA=EA+nA|0,EA=iA=I>>>0<lA>>>0?iA+1|0:iA,(I=(nA=I)+16777216|0)>>>0<16777216&&(EA=EA+1|0),YA=I,I=EA,EA=-33554432&YA,n[aA+28>>2]=nA-EA,lA=A,EA=xg(y,i,e,t),iA=l,aA=xg(B,C,DA,R),nA=l+iA|0,nA=(EA=aA+EA|0)>>>0<aA>>>0?nA+1|0:nA,aA=xg(Y,u,sA,M),iA=l+nA|0,iA=(EA=aA+EA|0)>>>0<aA>>>0?iA+1|0:iA,nA=(aA=xg(s,a,K,p))+EA|0,EA=l+iA|0,EA=nA>>>0<aA>>>0?EA+1|0:EA,iA=nA,nA=xg(IA,Z,tA,P),EA=l+EA|0,EA=(iA=iA+nA|0)>>>0<nA>>>0?EA+1|0:EA,nA=xg(w,r,j,x),EA=l+EA|0,EA=(iA=nA+iA|0)>>>0<nA>>>0?EA+1|0:EA,aA=xg(d,_,wA,J),nA=l+EA|0,nA=(iA=aA+iA|0)>>>0<aA>>>0?nA+1|0:nA,EA=(aA=xg(c,Q,F,G))+iA|0,iA=l+nA|0,iA=EA>>>0<aA>>>0?iA+1|0:iA,nA=(aA=xg(FA,GA,rA,N))+EA|0,EA=l+iA|0,EA=nA>>>0<aA>>>0?EA+1|0:EA,iA=nA,nA=xg(h,D,f,E),EA=l+EA|0,aA=iA=iA+nA|0,EA=(EA=iA>>>0<nA>>>0?EA+1|0:EA)+(iA=g>>26)|0,nA=EA=(g=aA+(nA=(67108863&g)<<6|kA>>>26)|0)>>>0<nA>>>0?EA+1|0:EA,(g=(iA=g)+16777216|0)>>>0<16777216&&(nA=nA+1|0),FA=g,g=nA,EA=-33554432&FA,n[lA+12>>2]=iA-EA,EA=xg(e,t,W,S),nA=l,iA=(aA=xg(B,C,w,r))+EA|0,EA=l+nA|0,EA=iA>>>0<aA>>>0?EA+1|0:EA,nA=xg(c,Q,Y,u),EA=l+EA|0,EA=(iA=nA+iA|0)>>>0<nA>>>0?EA+1|0:EA,aA=xg(K,p,L,H),nA=l+EA|0,nA=(iA=aA+iA|0)>>>0<aA>>>0?nA+1|0:nA,EA=(aA=xg(f,E,O,k))+iA|0,iA=l+nA|0,iA=EA>>>0<aA>>>0?iA+1|0:iA,nA=(aA=xg(q,b,z,m))+EA|0,EA=l+iA|0,EA=nA>>>0<aA>>>0?EA+1|0:EA,iA=nA,nA=xg(y,i,$,V),EA=l+EA|0,EA=(iA=iA+nA|0)>>>0<nA>>>0?EA+1|0:EA,nA=xg(cA,bA,X,U),EA=l+EA|0,EA=(iA=nA+iA|0)>>>0<nA>>>0?EA+1|0:EA,hA=xg(s,a,aA=hA,GA=aA>>31),nA=l+EA|0,nA=(iA=hA+iA|0)>>>0<hA>>>0?nA+1|0:nA,EA=(hA=xg(h,D,T,v))+iA|0,iA=l+nA|0,iA=EA>>>0<hA>>>0?iA+1|0:iA,hA=EA,EA=(EA=I>>25)+iA|0,EA=(I=hA+(nA=(33554431&I)<<7|YA>>>25)|0)>>>0<nA>>>0?EA+1|0:EA,(I=(iA=I)+33554432|0)>>>0<33554432&&(EA=EA+1|0),hA=I,I=EA,EA=-67108864&hA,n[lA+32>>2]=iA-EA,nA=iA=fA-(EA=-67108864&yA)|0,EA=(EA=gA-((fA>>>0<EA>>>0)+BA|0)|0)+(iA=g>>25)|0,EA=(g=nA+(fA=(33554431&g)<<7|FA>>>25)|0)>>>0<fA>>>0?EA+1|0:EA,(iA=g+33554432|0)>>>0<33554432&&(EA=EA+1|0),nA=(HA-(-33554432&CA)|0)+((67108863&EA)<<6|iA>>>26)|0,n[A+20>>2]=nA,EA=-67108864&iA,n[A+16>>2]=g-EA,EA=xg(w,r,e,t),nA=l,iA=(tA=xg(B,C,tA,P))+EA|0,EA=l+nA|0,EA=iA>>>0<tA>>>0?EA+1|0:EA,nA=(tA=xg(Y,u,wA,J))+iA|0,iA=l+EA|0,iA=nA>>>0<tA>>>0?iA+1|0:iA,EA=(tA=xg(c,Q,K,p))+nA|0,nA=l+iA|0,iA=(rA=xg(O,k,rA,N))+EA|0,EA=l+(EA>>>0<tA>>>0?nA+1|0:nA)|0,EA=iA>>>0<rA>>>0?EA+1|0:EA,nA=xg(f,E,z,m),EA=l+EA|0,EA=(iA=nA+iA|0)>>>0<nA>>>0?EA+1|0:EA,nA=xg(DA,R,$,V),EA=l+EA|0,EA=(iA=nA+iA|0)>>>0<nA>>>0?EA+1|0:EA,nA=(rA=xg(y,i,cA,bA))+iA|0,iA=l+EA|0,iA=nA>>>0<rA>>>0?iA+1|0:iA,EA=(rA=xg(aA,GA,sA,M))+nA|0,nA=l+iA|0,nA=EA>>>0<rA>>>0?nA+1|0:nA,iA=(rA=xg(s,a,AA,AA>>31))+EA|0,EA=l+nA|0,g=iA,EA=(EA=iA>>>0<rA>>>0?EA+1|0:EA)+(iA=I>>26)|0,EA=(I=g+(nA=(67108863&I)<<6|hA>>>26)|0)>>>0<nA>>>0?EA+1|0:EA,nA=g=I,(I=g+16777216|0)>>>0<16777216&&(EA=EA+1|0),I=-33554432&(iA=I),n[A+36>>2]=g-I,g=A,nA=oA-(-33554432&QA)|0,rA=eA-(I=-67108864&pA)|0,DA=_A-((eA>>>0<I>>>0)+uA|0)|0,EA=xg((33554431&(I=EA))<<7|iA>>>25,EA>>=25,19,0),iA=l+DA|0,aA=g,EA=iA=(I=EA+rA|0)>>>0<EA>>>0?iA+1|0:iA,(g=I+33554432|0)>>>0<33554432&&(EA=EA+1|0),iA=((67108863&EA)<<6|(iA=g)>>>26)+nA|0,n[aA+4>>2]=iA,iA=A,A=-67108864&g,n[iA>>2]=I-A}function Y(A,I){var g,B,C,Q,E,i,a,r,e,t,c,f,y,s,w,h,D,u,p,F,G,k,_,H,Y,b,m,U,v,S,N,R,M,d,P,J,x,L=0,K=0,q=0,X=0,V=0,T=0,W=0,j=0,Z=0,O=0,z=0,$=0,AA=0,IA=0,gA=0,BA=0,CA=0,QA=0,EA=0,iA=0,nA=0;iA=A,Q=L=(V=n[I+12>>2])<<1,E=L>>31,i=L=(Z=n[I+4>>2])<<1,L=xg(Q,E,L,g=L>>31),q=l,K=L,k=L=IA=n[I+8>>2],X=xg(L,$=L>>31,L,$),L=l+q|0,L=(K=K+X|0)>>>0<X>>>0?L+1|0:L,X=K,a=K=BA=n[I+16>>2],r=K>>31,e=K=(CA=n[I>>2])<<1,q=xg(a,r,K,B=K>>31),L=l+L|0,L=(K=X+q|0)>>>0<q>>>0?L+1|0:L,W=K,q=n[I+28>>2],p=K=o(q,38),v=q,X=xg(K,h=K>>31,q,_=q>>31),L=l+L|0,L=(K=W+X|0)>>>0<X>>>0?L+1|0:L,T=K,W=n[I+32>>2],j=xg(c=K=o(W,19),f=K>>31,K=(X=n[I+24>>2])<<1,K>>31),K=l+L|0,K=(O=T+j|0)>>>0<j>>>0?K+1|0:K,T=O,AA=n[I+36>>2],t=L=o(AA,38),C=L>>31,D=I=(O=n[I+20>>2])<<1,j=xg(L,C,I,s=I>>31),I=l+K|0,H=(L=T+j|0)<<1,d=L=(L>>>0<j>>>0?I+1|0:I)<<1|L>>>31,(I=H+33554432|0)>>>0<33554432&&(L=L+1|0),S=I,P=L,I=L>>26,L=(67108863&L)<<6|S>>>26,K=xg(i,g,a,r),j=l,T=L,u=L=IA<<1,QA=V,V=xg(L,w=L>>31,V,Y=V>>31),L=l+j|0,L=(K=V+K|0)>>>0<V>>>0?L+1|0:L,IA=O,V=(j=xg(O,F=O>>31,e,B))+K|0,K=l+L|0,K=V>>>0<j>>>0?K+1|0:K,gA=V,N=L=q<<1,V=xg(c,f,L,b=L>>31),L=l+K|0,L=(q=gA+V|0)>>>0<V>>>0?L+1|0:L,K=q,V=X,q=xg(t,C,X,y=X>>31),L=l+L|0,L=(K=K+q|0)>>>0<q>>>0?L+1|0:L,q=K,I=I+(K=L<<1|K>>>31)|0,EA=L=T+(q<<=1)|0,L=L>>>0<q>>>0?I+1|0:I,(I=EA+16777216|0)>>>0<16777216&&(L=L+1|0),J=I,I=(33554431&L)<<7|I>>>25,q=L>>25,L=xg(Q,E,QA,Y),K=l,T=I,I=(j=xg(a,r,u,w))+L|0,L=l+K|0,L=I>>>0<j>>>0?L+1|0:L,K=xg(i,g,D,s),L=l+L|0,L=(I=K+I|0)>>>0<K>>>0?L+1|0:L,K=(j=xg(e,B,V,y))+I|0,I=l+L|0,I=K>>>0<j>>>0?I+1|0:I,j=W,W=xg(c,f,W,G=W>>31),L=l+I|0,L=(K=W+K|0)>>>0<W>>>0?L+1|0:L,I=(W=xg(t,C,N,b))+K|0,K=l+L|0,I=((L=I)>>>0<W>>>0?K+1|0:K)<<1|L>>>31,W=L<<1,L=I+q|0,L=(K=T+W|0)>>>0<W>>>0?L+1|0:L,(K=(I=K)+33554432|0)>>>0<33554432&&(L=L+1|0),gA=K,q=L,L=-67108864&K,n[iA+24>>2]=I-L,W=A,I=xg(I=o(O,38),I>>31,IA,F),L=l,T=I,O=xg(I=CA,K=I>>31,I,K),K=l+L|0,K=(I=T+O|0)>>>0<O>>>0?K+1|0:K,L=I,z=I=o(X,19),m=I>>31,R=I=BA<<1,I=L+(X=xg(z,m,I,U=I>>31))|0,L=l+K|0,L=I>>>0<X>>>0?L+1|0:L,K=xg(Q,E,p,h),L=l+L|0,L=(I=K+I|0)>>>0<K>>>0?L+1|0:L,K=(X=xg(c,f,u,w))+I|0,I=l+L|0,I=K>>>0<X>>>0?I+1|0:I,X=xg(i,g,t,C),L=l+I|0,iA=L=((I=K=X+K|0)>>>0<X>>>0?L+1|0:L)<<1|I>>>31,K=L,(I=33554432+(O=I<<1)|0)>>>0<33554432&&(K=K+1|0),CA=I,BA=K,I=(67108863&K)<<6|I>>>26,X=K>>26,L=xg(z,m,D,s),K=l,nA=I,I=(Z=xg(e,B,T=Z,M=T>>31))+L|0,L=l+K|0,L=I>>>0<Z>>>0?L+1|0:L,K=(Z=xg(a,r,p,h))+I|0,I=l+L|0,I=K>>>0<Z>>>0?I+1|0:I,Z=xg(c,f,Q,E),L=l+I|0,L=(K=Z+K|0)>>>0<Z>>>0?L+1|0:L,I=(Z=xg(t,C,k,$))+K|0,K=l+L|0,I=((L=I)>>>0<Z>>>0?K+1|0:K)<<1|L>>>31,Z=L<<1,L=I+X|0,L=(K=nA+Z|0)>>>0<Z>>>0?L+1|0:L,Z=K,(I=K+16777216|0)>>>0<16777216&&(L=L+1|0),nA=I,K=I,I=L>>25,L=(33554431&L)<<7|K>>>25,X=I,I=xg(e,B,k,$),K=l,x=L,T=xg(i,g,T,M),L=l+K|0,L=(I=T+I|0)>>>0<T>>>0?L+1|0:L,T=xg(z,m,V,y),K=l+L|0,K=(I=T+I|0)>>>0<T>>>0?K+1|0:K,T=xg(D,s,p,h),L=l+K|0,L=(I=T+I|0)>>>0<T>>>0?L+1|0:L,K=xg(c,f,R,U),L=l+L|0,L=(I=K+I|0)>>>0<K>>>0?L+1|0:L,K=(T=xg(t,C,Q,E))+I|0,I=l+L|0,L=(L=(I=K>>>0<T>>>0?I+1|0:I)<<1|K>>>31)+X|0,K=L=(I=x+(K<<=1)|0)>>>0<K>>>0?L+1|0:L,(L=I+33554432|0)>>>0<33554432&&(K=K+1|0),T=L,X=K,L&=-67108864,n[W+8>>2]=I-L,I=xg(u,w,IA,F),K=l,L=(z=xg(a,r,Q,E))+I|0,I=l+K|0,I=L>>>0<z>>>0?I+1|0:I,K=(z=xg(i,g,V,y))+L|0,L=l+I|0,L=K>>>0<z>>>0?L+1|0:L,I=(z=xg(e,B,v,_))+K|0,K=l+L|0,K=I>>>0<z>>>0?K+1|0:K,z=xg(t,C,j,G),L=l+K|0,L=(L=(L=(I=z+I|0)>>>0<z>>>0?L+1|0:L)<<1|I>>>31)+(K=q>>26)|0,K=I=(q=(67108863&q)<<6|gA>>>26)+(I<<1)|0,I=L=I>>>0<q>>>0?L+1|0:L,(L=K+16777216|0)>>>0<16777216&&(I=I+1|0),gA=L,q=I,I=-33554432&L,n[W+28>>2]=K-I,I=xg(e,B,QA,Y),L=l,K=xg(i,g,k,$),L=l+L|0,L=(I=K+I|0)>>>0<K>>>0?L+1|0:L,K=xg(V,y,p,h),L=l+L|0,L=(I=K+I|0)>>>0<K>>>0?L+1|0:L,K=($=xg(c,f,D,s))+I|0,I=l+L|0,I=K>>>0<$>>>0?I+1|0:I,L=($=xg(t,C,a,r))+K|0,K=l+I|0,I=L,L=(L>>>0<$>>>0?K+1|0:K)<<1|L>>>31,K=I<<1,L=(I=X>>26)+L|0,L=(K=K+(X=(67108863&X)<<6|T>>>26)|0)>>>0<X>>>0?L+1|0:L,(K=(I=K)+16777216|0)>>>0<16777216&&(L=L+1|0),QA=K,X=L,L=-33554432&K,n[W+12>>2]=I-L,$=A,I=xg(V,y,u,w),L=l,K=xg(a,r,a,r),L=l+L|0,L=(I=K+I|0)>>>0<K>>>0?L+1|0:L,K=xg(Q,E,D,s),L=l+L|0,L=(I=K+I|0)>>>0<K>>>0?L+1|0:L,K=xg(i,g,N,b),L=l+L|0,L=(I=K+I|0)>>>0<K>>>0?L+1|0:L,K=(W=xg(e,B,j,G))+I|0,I=l+L|0,I=K>>>0<W>>>0?I+1|0:I,L=(AA=xg(t,C,W=AA,T=W>>31))+K|0,K=l+I|0,I=L,L=(L>>>0<AA>>>0?K+1|0:K)<<1|L>>>31,K=I<<1,L=(I=q>>25)+L|0,L=(K=K+(q=(33554431&q)<<7|gA>>>25)|0)>>>0<q>>>0?L+1|0:L,(K=(I=K)+33554432|0)>>>0<33554432&&(L=L+1|0),AA=K,q=L,L=-67108864&K,n[$+32>>2]=I-L,L=X>>25,K=(X=(33554431&X)<<7|QA>>>25)+(H-(I=-67108864&S)|0)|0,I=L+(d-((H>>>0<I>>>0)+P|0)|0)|0,L=I=K>>>0<X>>>0?I+1|0:I,(I=K+33554432|0)>>>0<33554432&&(L=L+1|0),X=((67108863&L)<<6|I>>>26)+(EA=EA-(-33554432&J)|0)|0,n[$+20>>2]=X,I&=-67108864,n[A+16>>2]=K-I,I=xg(Q,E,V,y),K=l,L=(V=xg(IA,F,R,U))+I|0,I=l+K|0,I=L>>>0<V>>>0?I+1|0:I,K=(V=xg(u,w,v,_))+L|0,L=l+I|0,L=K>>>0<V>>>0?L+1|0:L,I=(V=xg(i,g,j,G))+K|0,K=l+L|0,K=I>>>0<V>>>0?K+1|0:K,V=xg(e,B,W,T),L=l+K|0,L=(L=(L=(I=V+I|0)>>>0<V>>>0?L+1|0:L)<<1|I>>>31)+(K=q>>26)|0,L=(I=(q=(67108863&q)<<6|AA>>>26)+(I<<1)|0)>>>0<q>>>0?L+1|0:L,K=I,q=I,X=I,I=L,(L=K+16777216|0)>>>0<16777216&&(I=I+1|0),K=-33554432&L,n[A+36>>2]=q-K,q=A,X=Z-(-33554432&nA)|0,I=(L=xg((33554431&I)<<7|L>>>25,I>>25,19,0))+(O-(K=-67108864&CA)|0)|0,K=l+(iA-((O>>>0<K>>>0)+BA|0)|0)|0,K=I>>>0<L>>>0?K+1|0:K,L=I,V=q,I=K,(K=L+33554432|0)>>>0<33554432&&(I=I+1|0),q=((67108863&I)<<6|K>>>26)+X|0,n[V+4>>2]=q,I=A,A=-67108864&K,n[I>>2]=L-A}function b(A,I,g){var B,C=0,Q=0,E=0,i=0,a=0,r=0,o=0,e=0,t=0,c=0,f=0,y=0,s=0,w=0,h=0,u=0,p=0,F=0,G=0,k=0,_=0,H=0,Y=0,b=0,m=0,U=0,v=0,S=0,N=0,R=0,M=0,d=0,P=0,J=0,x=0,L=0,K=0,q=0,X=0,V=0,T=0,W=0,j=0,Z=0,O=0,z=0,$=0,AA=0,IA=0,gA=0,BA=0,CA=0;for(D=B=D-2048|0,BB(B+1024|0,I),YI(B+1024|0,A),BB(B,B+1024|0),YI(B,g),I=0;e=n[(i=(B+1024|0)+(96|(A=M<<7))|0)>>2],Q=n[i+4>>2],a=k=jg((C=e)^(e=MI(e=n[(r=o=A+(B+1024|0)|0)>>2],a=n[r+4>>2],E=n[(r=(B+1024|0)+(32|A)|0)>>2],t=n[r+4>>2])),(a=Q)^(Q=l),32),y=e,w=Q,C=jg((k=MI(C=n[(Q=e=(B+1024|0)+(64|A)|0)>>2],s=n[Q+4>>2],k,Q=l))^E,(C=t)^(t=l),24),E=jg(a^(S=MI(y,w,C,s=l)),(U=l)^Q,16),a=Q=l,n[i>>2]=E,n[i+4>>2]=Q,t=MI(k,t,E,Q),h=Q=l,n[e>>2]=t,n[e+4>>2]=Q,k=jg(C^t,Q^s,63),s=Q=l,n[r>>2]=k,n[r+4>>2]=Q,C=n[(Q=m=(B+1024|0)+(104|A)|0)>>2],b=n[Q+4>>2],_=n[(Q=(B+1024|0)+(72|A)|0)>>2],f=n[Q+4>>2],c=C,u=MI(u=n[(C=w=(B+1024|0)+(8|A)|0)>>2],F=n[C+4>>2],y=n[(C=G=(B+1024|0)+(40|A)|0)>>2],v=n[C+4>>2]),C=MI(_,f,P=jg(c^u,(C=b)^(b=l),32),F=l),Z=MI(c=u,b,v=jg(_=C^y,(y=l)^v,24),u=l),C=MI(C,y,b=jg(Z^P,(O=l)^F,16),z=l),y=P=l,n[Q>>2]=C,n[Q+4>>2]=y,v=jg(C^v,y^u,63),u=l,J=n[(F=P=(B+1024|0)+(112|A)|0)>>2],N=n[F+4>>2],H=n[(F=(B+1024|0)+(80|A)|0)>>2],L=n[F+4>>2],d=jg((f=J)^(Y=MI(Y=n[(_=J=(B+1024|0)+(16|A)|0)>>2],p=n[_+4>>2],R=n[(c=_=(B+1024|0)+(48|A)|0)>>2],c=n[c+4>>2])),(p=N)^(N=l),32),c=jg(H=(f=MI(H,L,d,p=l))^R,c^(R=l),24),IA=jg(($=MI(Y,H=N,c,N=l))^d,(AA=l)^p,16),N=jg(c^(L=MI(f,R,IA,gA=l)),(V=l)^N,63),c=l,d=n[(Y=R=(B+1024|0)+(120|A)|0)>>2],p=n[Y+4>>2],q=n[(f=Y=(B+1024|0)+(88|A)|0)>>2],j=n[f+4>>2],x=jg((X=d)^(W=MI(T=n[(f=d=(B+1024|0)+(24|A)|0)>>2],x=n[f+4>>2],H=n[(A=(B+1024|0)+(56|A)|0)>>2],f=n[A+4>>2])),(T=p)^(p=l),32),f=jg(X=(q=MI(q,j,x,K=l))^H,f^(H=l),24),X=H,x=jg((H=MI(W,H=p,f,p=l))^x,(W=l)^K,16),p=jg(f^(q=MI(q,X,x,K=l)),(j=l)^p,63),f=l,X=L,T=V,L=jg(x^(S=MI(S,U,v,u)),K^(U=l),32),v=jg((x=MI(X,T,L,V=l))^v,(K=l)^u,24),u=MI(u=S,U,v,S=l),U=l,n[o>>2]=u,n[o+4>>2]=U,o=jg(u^L,V^U,16),u=l,n[R>>2]=o,n[R+4>>2]=u,o=MI(x,K,o,u),u=l,n[F>>2]=o,n[F+4>>2]=u,BA=G,CA=jg(o^v,u^S,63),n[BA>>2]=CA,n[G+4>>2]=l,G=jg((o=MI(Z,O,N,c))^E,(u=a)^(a=l),32),E=jg((u=MI(q,j,G,v=l))^N,(F=l)^c,24),o=MI(o,c=a,E,a=l),c=N=l,n[w>>2]=o,n[w+4>>2]=c,o=jg(o^G,c^v,16),w=l,n[i>>2]=o,n[i+4>>2]=w,i=MI(u,F,o,w),n[Y>>2]=i,o=l,n[Y+4>>2]=o,BA=_,CA=jg(E^i,o^a,63),n[BA>>2]=CA,n[_+4>>2]=l,w=t,E=MI($,AA,p,f),h=MI(w,h,o=jg(b^E,z^(t=l),32),a=l),E=MI(E,c=t,i=jg(h^p,(w=l)^f,24),t=l),G=l,n[J>>2]=E,n[J+4>>2]=G,E=jg(E^o,a^G,16),o=l,n[m>>2]=E,n[m+4>>2]=o,E=MI(h,w,E,o),n[e>>2]=E,a=e,e=l,n[a+4>>2]=e,BA=A,CA=jg(E^i,e^t,63),n[BA>>2]=CA,n[A+4>>2]=l,A=k,i=MI(H,W,k,s),k=MI(C,y,E=jg(IA^i,gA^(e=l),32),t=l),i=MI(i,a=e,A=jg(A^k,(C=l)^s,24),e=l),o=l,n[d>>2]=i,n[d+4>>2]=o,i=jg(E^i,t^o,16),E=l,n[P>>2]=i,n[P+4>>2]=E,i=MI(k,C,i,E),n[Q>>2]=i,C=Q,Q=l,n[C+4>>2]=Q,BA=r,CA=jg(A^i,Q^e,63),n[BA>>2]=CA,n[r+4>>2]=l,8!=(0|(M=M+1|0)););for(;r=n[(i=768+(A=(Q=I<<4)+(B+1024|0)|0)|0)>>2],i=n[i+4>>2],C=r,r=n[A+256>>2],e=n[A+260>>2],t=jg(C^(E=MI(n[A>>2],n[A+4>>2],r,e)),(t=i)^(i=l),32),a=i,i=l,k=jg((C=r)^(r=MI(n[A+512>>2],n[A+516>>2],t,i)),(s=e)^(e=l),24),i=jg(t^(b=MI(E,a,k,C=l)),(y=l)^i,16),E=t=l,n[A+768>>2]=i,n[A+772>>2]=E,r=MI(r,e,i,E),t=e=l,n[A+512>>2]=r,n[A+516>>2]=e,e=jg(r^k,C^e,63),k=C=l,n[A+256>>2]=e,n[A+260>>2]=C,M=n[A+780>>2],w=n[A+520>>2],c=n[A+524>>2],s=n[A+776>>2],Q=C=(B+1024|0)+(8|Q)|0,o=n[A+264>>2],a=n[A+268>>2],h=MI(n[Q>>2],n[Q+4>>2],o,a),Q=MI(w,c,s=jg(s^h,(Q=M)^(M=l),32),m=l),v=MI(w=h,M,a=jg(c=Q^o,a^(o=l),24),h=l),Q=MI(Q,o,M=jg(v^s,(u=l)^m,16),P=l),o=s=l,n[A+520>>2]=Q,n[A+524>>2]=o,a=jg(Q^a,o^h,63),h=l,s=n[A+900>>2],_=n[A+640>>2],f=n[A+644>>2],F=n[A+896>>2],m=n[A+384>>2],w=n[A+388>>2],F=jg(F^(G=MI(n[A+128>>2],n[A+132>>2],m,w)),(c=s)^(s=l),32),w=jg(c=(_=MI(_,f,F,J=l))^m,w^(m=l),24),c=_,_=jg((_=F)^(F=MI(G,f=s,w,s=l)),(f=J)^(J=l),16),s=jg(w^(c=MI(c,m,_,N=l)),(R=l)^s,63),m=l,w=n[A+908>>2],S=n[A+648>>2],U=n[A+652>>2],p=n[A+904>>2],G=n[A+392>>2],Y=n[A+396>>2],p=jg(p^(d=MI(n[A+136>>2],n[A+140>>2],G,Y)),(f=w)^(w=l),32),H=Y=jg(U=(S=MI(S,U,p,f=l))^G,Y^(G=l),24),p=jg((Y=MI(d,U=w,Y,w=l))^p,(d=l)^f,16),w=jg(H^(S=MI(S,G,p,f=l)),(U=l)^w,63),G=l,H=c,L=R,c=jg(p^(b=MI(b,y,a,h)),f^(y=l),32),a=jg((p=MI(H,L,c,R=l))^a,(f=l)^h,24),h=MI(h=b,y,a,b=l),y=l,n[A>>2]=h,n[A+4>>2]=y,h=jg(h^c,R^y,16),y=l,n[A+904>>2]=h,n[A+908>>2]=y,h=MI(p,f,h,y),y=l,n[A+640>>2]=h,n[A+644>>2]=y,BA=A,CA=jg(a^h,y^b,63),n[BA+264>>2]=CA,n[A+268>>2]=l,y=s,h=jg((a=MI(v,u,s,m))^i,(s=E)^(E=l),32),i=jg(y^(b=MI(S,U,h,s=l)),(c=m)^(m=l),24),E=MI(y=a,E,i,a=l),y=l,n[C>>2]=E,n[C+4>>2]=y,E=jg(E^h,s^y,16),C=l,n[A+768>>2]=E,n[A+772>>2]=C,E=MI(b,m,E,C),n[A+648>>2]=E,C=l,n[A+652>>2]=C,BA=A,CA=jg(E^i,C^a,63),n[BA+384>>2]=CA,n[A+388>>2]=l,a=r,s=t,r=MI(F,J,w,G),M=MI(a,s,t=jg(M^r,P^(E=l),32),C=l),r=MI(r,s=E,i=jg(M^w,(a=l)^G,24),E=l),h=l,n[A+128>>2]=r,n[A+132>>2]=h,r=jg(r^t,C^h,16),C=t=l,n[A+776>>2]=r,n[A+780>>2]=C,r=MI(M,a,r,C),n[A+512>>2]=r,t=l,n[A+516>>2]=t,BA=A,CA=jg(i^r,E^t,63),n[BA+392>>2]=CA,n[A+396>>2]=l,C=e,t=Q,Q=jg(_^(r=MI(Y,d,e,k)),N^(e=l),32),i=jg(C^(t=MI(t,o,Q,E=l)),(a=k)^(k=l),24),r=MI(r,C=e,i,e=l),C=l,n[A+136>>2]=r,n[A+140>>2]=C,r=jg(Q^r,E^C,16),Q=l,n[A+896>>2]=r,n[A+900>>2]=Q,r=MI(t,k,r,Q),n[A+520>>2]=r,Q=l,n[A+524>>2]=Q,BA=A,CA=jg(i^r,Q^e,63),n[BA+256>>2]=CA,n[A+260>>2]=l,8!=(0|(I=I+1|0)););BB(g,B),YI(g,B+1024|0),D=B+2048|0}function m(A,I,g){var B,C=0,Q=0,E=0,i=0,a=0,r=0,o=0,e=0,t=0,c=0,f=0,y=0,s=0,w=0,h=0,u=0,p=0,F=0,G=0,k=0,_=0,H=0,Y=0,b=0,m=0,U=0,v=0,S=0,N=0,R=0,M=0,d=0,P=0,J=0,x=0,L=0,K=0,q=0,X=0,V=0,T=0,W=0,j=0,Z=0,O=0,z=0,$=0,AA=0,IA=0,gA=0,BA=0,CA=0;for(D=B=D-2048|0,BB(B+1024|0,I),YI(B+1024|0,A),BB(B,B+1024|0),I=0;e=n[(i=(B+1024|0)+(96|(A=M<<7))|0)>>2],Q=n[i+4>>2],a=k=jg((C=e)^(e=MI(e=n[(r=o=A+(B+1024|0)|0)>>2],a=n[r+4>>2],E=n[(r=(B+1024|0)+(32|A)|0)>>2],t=n[r+4>>2])),(a=Q)^(Q=l),32),y=e,w=Q,C=jg((k=MI(C=n[(Q=e=(B+1024|0)+(64|A)|0)>>2],s=n[Q+4>>2],k,Q=l))^E,(C=t)^(t=l),24),E=jg(a^(S=MI(y,w,C,s=l)),(U=l)^Q,16),a=Q=l,n[i>>2]=E,n[i+4>>2]=Q,t=MI(k,t,E,Q),h=Q=l,n[e>>2]=t,n[e+4>>2]=Q,k=jg(C^t,Q^s,63),s=Q=l,n[r>>2]=k,n[r+4>>2]=Q,C=n[(Q=m=(B+1024|0)+(104|A)|0)>>2],b=n[Q+4>>2],_=n[(Q=(B+1024|0)+(72|A)|0)>>2],f=n[Q+4>>2],c=C,u=MI(u=n[(C=w=(B+1024|0)+(8|A)|0)>>2],F=n[C+4>>2],y=n[(C=G=(B+1024|0)+(40|A)|0)>>2],v=n[C+4>>2]),C=MI(_,f,P=jg(c^u,(C=b)^(b=l),32),F=l),Z=MI(c=u,b,v=jg(_=C^y,(y=l)^v,24),u=l),C=MI(C,y,b=jg(Z^P,(O=l)^F,16),z=l),y=P=l,n[Q>>2]=C,n[Q+4>>2]=y,v=jg(C^v,y^u,63),u=l,J=n[(F=P=(B+1024|0)+(112|A)|0)>>2],N=n[F+4>>2],H=n[(F=(B+1024|0)+(80|A)|0)>>2],L=n[F+4>>2],d=jg((f=J)^(Y=MI(Y=n[(_=J=(B+1024|0)+(16|A)|0)>>2],p=n[_+4>>2],R=n[(c=_=(B+1024|0)+(48|A)|0)>>2],c=n[c+4>>2])),(p=N)^(N=l),32),c=jg(H=(f=MI(H,L,d,p=l))^R,c^(R=l),24),IA=jg(($=MI(Y,H=N,c,N=l))^d,(AA=l)^p,16),N=jg(c^(L=MI(f,R,IA,gA=l)),(V=l)^N,63),c=l,d=n[(Y=R=(B+1024|0)+(120|A)|0)>>2],p=n[Y+4>>2],q=n[(f=Y=(B+1024|0)+(88|A)|0)>>2],j=n[f+4>>2],x=jg((X=d)^(W=MI(T=n[(f=d=(B+1024|0)+(24|A)|0)>>2],x=n[f+4>>2],H=n[(A=(B+1024|0)+(56|A)|0)>>2],f=n[A+4>>2])),(T=p)^(p=l),32),f=jg(X=(q=MI(q,j,x,K=l))^H,f^(H=l),24),X=H,x=jg((H=MI(W,H=p,f,p=l))^x,(W=l)^K,16),p=jg(f^(q=MI(q,X,x,K=l)),(j=l)^p,63),f=l,X=L,T=V,L=jg(x^(S=MI(S,U,v,u)),K^(U=l),32),v=jg((x=MI(X,T,L,V=l))^v,(K=l)^u,24),u=MI(u=S,U,v,S=l),U=l,n[o>>2]=u,n[o+4>>2]=U,o=jg(u^L,V^U,16),u=l,n[R>>2]=o,n[R+4>>2]=u,o=MI(x,K,o,u),u=l,n[F>>2]=o,n[F+4>>2]=u,BA=G,CA=jg(o^v,u^S,63),n[BA>>2]=CA,n[G+4>>2]=l,G=jg((o=MI(Z,O,N,c))^E,(u=a)^(a=l),32),E=jg((u=MI(q,j,G,v=l))^N,(F=l)^c,24),o=MI(o,c=a,E,a=l),c=N=l,n[w>>2]=o,n[w+4>>2]=c,o=jg(o^G,c^v,16),w=l,n[i>>2]=o,n[i+4>>2]=w,i=MI(u,F,o,w),n[Y>>2]=i,o=l,n[Y+4>>2]=o,BA=_,CA=jg(E^i,o^a,63),n[BA>>2]=CA,n[_+4>>2]=l,w=t,E=MI($,AA,p,f),h=MI(w,h,o=jg(b^E,z^(t=l),32),a=l),E=MI(E,c=t,i=jg(h^p,(w=l)^f,24),t=l),G=l,n[J>>2]=E,n[J+4>>2]=G,E=jg(E^o,a^G,16),o=l,n[m>>2]=E,n[m+4>>2]=o,E=MI(h,w,E,o),n[e>>2]=E,a=e,e=l,n[a+4>>2]=e,BA=A,CA=jg(E^i,e^t,63),n[BA>>2]=CA,n[A+4>>2]=l,A=k,i=MI(H,W,k,s),k=MI(C,y,E=jg(IA^i,gA^(e=l),32),t=l),i=MI(i,a=e,A=jg(A^k,(C=l)^s,24),e=l),o=l,n[d>>2]=i,n[d+4>>2]=o,i=jg(E^i,t^o,16),E=l,n[P>>2]=i,n[P+4>>2]=E,i=MI(k,C,i,E),n[Q>>2]=i,C=Q,Q=l,n[C+4>>2]=Q,BA=r,CA=jg(A^i,Q^e,63),n[BA>>2]=CA,n[r+4>>2]=l,8!=(0|(M=M+1|0)););for(;r=n[(i=768+(A=(Q=I<<4)+(B+1024|0)|0)|0)>>2],i=n[i+4>>2],C=r,r=n[A+256>>2],e=n[A+260>>2],t=jg(C^(E=MI(n[A>>2],n[A+4>>2],r,e)),(t=i)^(i=l),32),a=i,i=l,k=jg((C=r)^(r=MI(n[A+512>>2],n[A+516>>2],t,i)),(s=e)^(e=l),24),i=jg(t^(b=MI(E,a,k,C=l)),(y=l)^i,16),E=t=l,n[A+768>>2]=i,n[A+772>>2]=E,r=MI(r,e,i,E),t=e=l,n[A+512>>2]=r,n[A+516>>2]=e,e=jg(r^k,C^e,63),k=C=l,n[A+256>>2]=e,n[A+260>>2]=C,M=n[A+780>>2],w=n[A+520>>2],c=n[A+524>>2],s=n[A+776>>2],Q=C=(B+1024|0)+(8|Q)|0,o=n[A+264>>2],a=n[A+268>>2],h=MI(n[Q>>2],n[Q+4>>2],o,a),Q=MI(w,c,s=jg(s^h,(Q=M)^(M=l),32),m=l),v=MI(w=h,M,a=jg(c=Q^o,a^(o=l),24),h=l),Q=MI(Q,o,M=jg(v^s,(u=l)^m,16),P=l),o=s=l,n[A+520>>2]=Q,n[A+524>>2]=o,a=jg(Q^a,o^h,63),h=l,s=n[A+900>>2],_=n[A+640>>2],f=n[A+644>>2],F=n[A+896>>2],m=n[A+384>>2],w=n[A+388>>2],F=jg(F^(G=MI(n[A+128>>2],n[A+132>>2],m,w)),(c=s)^(s=l),32),w=jg(c=(_=MI(_,f,F,J=l))^m,w^(m=l),24),c=_,_=jg((_=F)^(F=MI(G,f=s,w,s=l)),(f=J)^(J=l),16),s=jg(w^(c=MI(c,m,_,N=l)),(R=l)^s,63),m=l,w=n[A+908>>2],S=n[A+648>>2],U=n[A+652>>2],p=n[A+904>>2],G=n[A+392>>2],Y=n[A+396>>2],p=jg(p^(d=MI(n[A+136>>2],n[A+140>>2],G,Y)),(f=w)^(w=l),32),H=Y=jg(U=(S=MI(S,U,p,f=l))^G,Y^(G=l),24),p=jg((Y=MI(d,U=w,Y,w=l))^p,(d=l)^f,16),w=jg(H^(S=MI(S,G,p,f=l)),(U=l)^w,63),G=l,H=c,L=R,c=jg(p^(b=MI(b,y,a,h)),f^(y=l),32),a=jg((p=MI(H,L,c,R=l))^a,(f=l)^h,24),h=MI(h=b,y,a,b=l),y=l,n[A>>2]=h,n[A+4>>2]=y,h=jg(h^c,R^y,16),y=l,n[A+904>>2]=h,n[A+908>>2]=y,h=MI(p,f,h,y),y=l,n[A+640>>2]=h,n[A+644>>2]=y,BA=A,CA=jg(a^h,y^b,63),n[BA+264>>2]=CA,n[A+268>>2]=l,y=s,h=jg((a=MI(v,u,s,m))^i,(s=E)^(E=l),32),i=jg(y^(b=MI(S,U,h,s=l)),(c=m)^(m=l),24),E=MI(y=a,E,i,a=l),y=l,n[C>>2]=E,n[C+4>>2]=y,E=jg(E^h,s^y,16),C=l,n[A+768>>2]=E,n[A+772>>2]=C,E=MI(b,m,E,C),n[A+648>>2]=E,C=l,n[A+652>>2]=C,BA=A,CA=jg(E^i,C^a,63),n[BA+384>>2]=CA,n[A+388>>2]=l,a=r,s=t,r=MI(F,J,w,G),M=MI(a,s,t=jg(M^r,P^(E=l),32),C=l),r=MI(r,s=E,i=jg(M^w,(a=l)^G,24),E=l),h=l,n[A+128>>2]=r,n[A+132>>2]=h,r=jg(r^t,C^h,16),C=t=l,n[A+776>>2]=r,n[A+780>>2]=C,r=MI(M,a,r,C),n[A+512>>2]=r,t=l,n[A+516>>2]=t,BA=A,CA=jg(i^r,E^t,63),n[BA+392>>2]=CA,n[A+396>>2]=l,C=e,t=Q,Q=jg(_^(r=MI(Y,d,e,k)),N^(e=l),32),i=jg(C^(t=MI(t,o,Q,E=l)),(a=k)^(k=l),24),r=MI(r,C=e,i,e=l),C=l,n[A+136>>2]=r,n[A+140>>2]=C,r=jg(Q^r,E^C,16),Q=l,n[A+896>>2]=r,n[A+900>>2]=Q,r=MI(t,k,r,Q),n[A+520>>2]=r,Q=l,n[A+524>>2]=Q,BA=A,CA=jg(i^r,Q^e,63),n[BA+256>>2]=CA,n[A+260>>2]=l,8!=(0|(I=I+1|0)););BB(g,B),YI(g,B+1024|0),D=B+2048|0}function U(A,I){var g,B,C,Q,E,i,a,r,e,t,c,f,y,s,w,h,D,u,p,F,G,k,_,H,Y,b,m,U,v,S,N,R,M,d,P,J,x=0,L=0,K=0,q=0,X=0,V=0,T=0,W=0,j=0,Z=0,O=0,z=0,$=0,AA=0,IA=0,gA=0,BA=0,CA=0,QA=0;V=A,t=L=(x=n[I+12>>2])<<1,W=x,x=xg(L,Q=L>>31,x,H=x>>31),K=l,L=x,E=x=CA=n[I+16>>2],i=x>>31,D=x=(Z=n[I+8>>2])<<1,X=xg(E,i,x,y=x>>31),x=l+K|0,x=(L=L+X|0)>>>0<X>>>0?x+1|0:x,K=L,s=L=(X=n[I+20>>2])<<1,w=L>>31,a=L=(O=n[I+4>>2])<<1,q=xg(s,w,L,g=L>>31),L=l+x|0,L=(K=K+q|0)>>>0<q>>>0?L+1|0:L,u=x=T=n[I+24>>2],c=x>>31,r=x=(gA=n[I>>2])<<1,q=xg(T,c,x,B=x>>31),x=l+L|0,x=(K=q+K|0)>>>0<q>>>0?x+1|0:x,j=K,L=n[I+32>>2],h=K=o(L,19),Y=L,K=xg(K,f=K>>31,L,G=L>>31),x=l+x|0,x=(L=j+K|0)>>>0<K>>>0?x+1|0:x,j=L,$=n[I+36>>2],e=L=o($,38),C=L>>31,N=I=(K=n[I+28>>2])<<1,q=xg(L,C,I,b=I>>31),I=l+x|0,AA=L=j+q|0,z=L>>>0<q>>>0?I+1|0:I,I=xg(a,g,E,i),x=l,L=xg(D,y,W,H),x=l+x|0,x=(I=L+I|0)>>>0<L>>>0?x+1|0:x,m=X,q=xg(X,k=X>>31,r,B),L=l+x|0,L=(I=q+I|0)>>>0<q>>>0?L+1|0:L,q=xg(h,f,N,b),x=l+L|0,x=(I=q+I|0)>>>0<q>>>0?x+1|0:x,L=xg(e,C,T,c),x=l+x|0,j=I=L+I|0,BA=I>>>0<L>>>0?x+1|0:x,I=xg(a,g,t,Q),L=l,x=(Z=xg(q=Z,p=q>>31,q,p))+I|0,I=l+L|0,I=x>>>0<Z>>>0?I+1|0:I,L=(Z=xg(r,B,E,i))+x|0,x=l+I|0,x=L>>>0<Z>>>0?x+1|0:x,_=I=o(K,38),Z=K,I=(K=xg(I,F=I>>31,K,U=K>>31))+L|0,L=l+x|0,L=I>>>0<K>>>0?L+1|0:L,I=(x=I)+(K=xg(h,f,I=T<<1,I>>31))|0,x=l+L|0,x=I>>>0<K>>>0?x+1|0:x,L=xg(e,C,s,w),x=l+x|0,v=I=L+I|0,d=x=I>>>0<L>>>0?x+1|0:x,I=x,(x=v+33554432|0)>>>0<33554432&&(I=I+1|0),R=x,P=I,x=(x=I>>26)+BA|0,BA=I=(L=(67108863&I)<<6|R>>>26)+j|0,L=I>>>0<L>>>0?x+1|0:x,(I=I+16777216|0)>>>0<16777216&&(L=L+1|0),J=I,x=(x=L>>25)+z|0,x=(I=(L=(33554431&L)<<7|I>>>25)+AA|0)>>>0<L>>>0?x+1|0:x,L=I,I=x,(x=L+33554432|0)>>>0<33554432&&(I=I+1|0),j=x,K=I,I=-67108864&x,n[V+24>>2]=L-I,z=A,I=xg(r,B,q,p),x=l,O=xg(a,g,V=O,IA=V>>31),L=l+x|0,L=(I=O+I|0)>>>0<O>>>0?L+1|0:L,x=I,O=I=o(T,19),I=x+(T=xg(I,AA=I>>31,u,c))|0,x=l+L|0,x=I>>>0<T>>>0?x+1|0:x,L=(T=xg(s,w,_,F))+I|0,I=l+x|0,I=L>>>0<T>>>0?I+1|0:I,M=x=CA<<1,T=xg(h,f,x,S=x>>31),x=l+I|0,x=(L=T+L|0)>>>0<T>>>0?x+1|0:x,I=L,L=xg(e,C,t,Q),x=l+x|0,QA=I=I+L|0,T=I>>>0<L>>>0?x+1|0:x,I=xg(s,w,O,AA),x=l,V=xg(r,B,V,IA),L=l+x|0,L=(I=V+I|0)>>>0<V>>>0?L+1|0:L,V=xg(E,i,_,F),x=l+L|0,x=(I=V+I|0)>>>0<V>>>0?x+1|0:x,L=(V=xg(h,f,t,Q))+I|0,I=l+x|0,I=L>>>0<V>>>0?I+1|0:I,V=xg(e,C,q,p),x=l+I|0,IA=L=V+L|0,V=L>>>0<V>>>0?x+1|0:x,I=xg(I=o(X,38),I>>31,m,k),x=l,X=I,L=xg(I=gA,L=I>>31,I,L),x=l+x|0,x=(I=X+L|0)>>>0<L>>>0?x+1|0:x,X=xg(O,AA,M,S),L=l+x|0,L=(I=X+I|0)>>>0<X>>>0?L+1|0:L,X=xg(t,Q,_,F),x=l+L|0,x=(I=X+I|0)>>>0<X>>>0?x+1|0:x,L=(X=xg(h,f,D,y))+I|0,I=l+x|0,I=L>>>0<X>>>0?I+1|0:I,X=xg(a,g,e,C),x=l+I|0,O=L=X+L|0,AA=x=L>>>0<X>>>0?x+1|0:x,(I=L+33554432|0)>>>0<33554432&&(x=x+1|0),gA=I,CA=x,L=(I=x>>26)+V|0,V=x=(X=(67108863&x)<<6|gA>>>26)+IA|0,x=x>>>0<X>>>0?L+1|0:L,(I=V+16777216|0)>>>0<16777216&&(x=x+1|0),IA=I,X=(33554431&x)<<7|I>>>25,x=(x>>25)+T|0,x=(L=X+QA|0)>>>0<X>>>0?x+1|0:x,(L=(I=L)+33554432|0)>>>0<33554432&&(x=x+1|0),T=L,X=x,x=-67108864&L,n[z+8>>2]=I-x,I=xg(D,y,m,k),x=l,L=xg(E,i,t,Q),x=l+x|0,x=(I=L+I|0)>>>0<L>>>0?x+1|0:x,L=xg(a,g,u,c),x=l+x|0,x=(I=L+I|0)>>>0<L>>>0?x+1|0:x,L=xg(r,B,Z,U),x=l+x|0,x=(I=L+I|0)>>>0<L>>>0?x+1|0:x,L=(QA=xg(e,C,Y,G))+I|0,I=l+x|0,x=K>>26,K=(j=(67108863&K)<<6|j>>>26)+L|0,L=(I=L>>>0<QA>>>0?I+1|0:I)+x|0,x=L=K>>>0<j>>>0?L+1|0:L,(L=(I=K)+16777216|0)>>>0<16777216&&(x=x+1|0),j=L,K=x,x=-33554432&L,n[z+28>>2]=I-x,I=xg(r,B,W,H),L=l,x=(q=xg(a,g,q,p))+I|0,I=l+L|0,I=x>>>0<q>>>0?I+1|0:I,q=xg(u,c,_,F),L=l+I|0,L=(x=q+x|0)>>>0<q>>>0?L+1|0:L,I=(q=xg(h,f,s,w))+x|0,x=l+L|0,x=I>>>0<q>>>0?x+1|0:x,L=xg(e,C,E,i),x=l+x|0,x=(x=(I=L+I|0)>>>0<L>>>0?x+1|0:x)+(L=X>>26)|0,L=I=(X=(67108863&X)<<6|T>>>26)+I|0,I=x=I>>>0<X>>>0?x+1|0:x,(x=L+16777216|0)>>>0<16777216&&(I=I+1|0),T=x,X=I,I=-33554432&x,n[z+12>>2]=L-I,q=A,I=xg(u,c,D,y),x=l,L=xg(E,i,E,i),x=l+x|0,x=(I=L+I|0)>>>0<L>>>0?x+1|0:x,L=xg(t,Q,s,w),x=l+x|0,x=(I=L+I|0)>>>0<L>>>0?x+1|0:x,L=(W=xg(a,g,N,b))+I|0,I=l+x|0,I=L>>>0<W>>>0?I+1|0:I,x=(W=xg(r,B,Y,G))+L|0,L=l+I|0,L=x>>>0<W>>>0?L+1|0:L,I=($=xg(e,C,W=$,z=W>>31))+x|0,x=l+L|0,x=I>>>0<$>>>0?x+1|0:x,L=I,x=(I=K>>25)+x|0,x=(L=L+(K=(33554431&K)<<7|j>>>25)|0)>>>0<K>>>0?x+1|0:x,(L=(I=L)+33554432|0)>>>0<33554432&&(x=x+1|0),$=L,K=x,x=-67108864&L,n[q+32>>2]=I-x,x=X>>25,L=(X=(33554431&X)<<7|T>>>25)+(v-(I=-67108864&R)|0)|0,I=x+(d-((v>>>0<I>>>0)+P|0)|0)|0,x=I=L>>>0<X>>>0?I+1|0:I,(I=L+33554432|0)>>>0<33554432&&(x=x+1|0),X=((67108863&x)<<6|I>>>26)+(BA=BA-(-33554432&J)|0)|0,n[q+20>>2]=X,I&=-67108864,n[A+16>>2]=L-I,X=A,I=xg(t,Q,u,c),L=l,x=(q=xg(m,k,M,S))+I|0,I=l+L|0,I=x>>>0<q>>>0?I+1|0:I,L=(q=xg(D,y,Z,U))+x|0,x=l+I|0,x=L>>>0<q>>>0?x+1|0:x,I=(q=xg(a,g,Y,G))+L|0,L=l+x|0,L=I>>>0<q>>>0?L+1|0:L,q=xg(r,B,W,z),x=l+L|0,L=I=q+I|0,x=(I=I>>>0<q>>>0?x+1|0:x)+(x=K>>26)|0,x=(L=(K=(67108863&K)<<6|$>>>26)+L|0)>>>0<K>>>0?x+1|0:x,K=L,T=L,I=x,(x=L+16777216|0)>>>0<16777216&&(I=I+1|0),L=-33554432&x,n[X+36>>2]=K-L,q=xg((33554431&I)<<7|x>>>25,I>>25,19,0),x=l+(AA-((O>>>0<(L=-67108864&gA)>>>0)+CA|0)|0)|0,L=I=q+(O-L|0)|0,I=I>>>0<q>>>0?x+1|0:x,(x=L+33554432|0)>>>0<33554432&&(I=I+1|0),K=(V-(-33554432&IA)|0)+((67108863&I)<<6|x>>>26)|0,n[A+4>>2]=K,I=A,A=-67108864&x,n[I>>2]=L-A}function v(A){var I=0,g=0,B=0,C=0,Q=0,E=0,i=0,a=0,o=0;A:if(A|=0){Q=(B=A+-8|0)+(A=-8&(g=n[A+-4>>2]))|0;I:if(!(1&g)){if(!(3&g))break A;if((B=B-(g=n[B>>2])|0)>>>0<r[8965])break A;if(A=A+g|0,n[8966]==(0|B)){if(3==(3&(g=n[Q+4>>2])))return n[8963]=A,n[Q+4>>2]=-2&g,n[B+4>>2]=1|A,void(n[A+B>>2]=A)}else{if(g>>>0<=255){if(C=n[B+8>>2],g=g>>>3|0,(0|(I=n[B+12>>2]))==(0|C)){a=35844,o=n[8961]&ng(-2,g),n[a>>2]=o;break I}n[C+12>>2]=I,n[I+8>>2]=C;break I}if(i=n[B+24>>2],(0|B)==(0|(g=n[B+12>>2])))if((I=n[(C=B+20|0)>>2])||(I=n[(C=B+16|0)>>2])){for(;E=C,(I=n[(C=(g=I)+20|0)>>2])||(C=g+16|0,I=n[g+16>>2]););n[E>>2]=0}else g=0;else I=n[B+8>>2],n[I+12>>2]=g,n[g+8>>2]=I;if(!i)break I;C=n[B+28>>2];g:{if(n[(I=36148+(C<<2)|0)>>2]==(0|B)){if(n[I>>2]=g,g)break g;a=35848,o=n[8962]&ng(-2,C),n[a>>2]=o;break I}if(n[i+(n[i+16>>2]==(0|B)?16:20)>>2]=g,!g)break I}if(n[g+24>>2]=i,(I=n[B+16>>2])&&(n[g+16>>2]=I,n[I+24>>2]=g),!(I=n[B+20>>2]))break I;n[g+20>>2]=I,n[I+24>>2]=g}}if(!(Q>>>0<=B>>>0)&&1&(g=n[Q+4>>2])){I:{if(!(2&g)){if(n[8967]==(0|Q)){if(n[8967]=B,A=n[8964]+A|0,n[8964]=A,n[B+4>>2]=1|A,n[8966]!=(0|B))break A;return n[8963]=0,void(n[8966]=0)}if(n[8966]==(0|Q))return n[8966]=B,A=n[8963]+A|0,n[8963]=A,n[B+4>>2]=1|A,void(n[A+B>>2]=A);A=(-8&g)+A|0;g:if(g>>>0<=255){if(g=g>>>3|0,(0|(I=n[Q+8>>2]))==(0|(C=n[Q+12>>2]))){a=35844,o=n[8961]&ng(-2,g),n[a>>2]=o;break g}n[I+12>>2]=C,n[C+8>>2]=I}else{if(i=n[Q+24>>2],(0|Q)==(0|(g=n[Q+12>>2])))if((I=n[(C=Q+20|0)>>2])||(I=n[(C=Q+16|0)>>2])){for(;E=C,(I=n[(C=(g=I)+20|0)>>2])||(C=g+16|0,I=n[g+16>>2]););n[E>>2]=0}else g=0;else I=n[Q+8>>2],n[I+12>>2]=g,n[g+8>>2]=I;if(i){C=n[Q+28>>2];B:{if(n[(I=36148+(C<<2)|0)>>2]==(0|Q)){if(n[I>>2]=g,g)break B;a=35848,o=n[8962]&ng(-2,C),n[a>>2]=o;break g}if(n[i+(n[i+16>>2]==(0|Q)?16:20)>>2]=g,!g)break g}n[g+24>>2]=i,(I=n[Q+16>>2])&&(n[g+16>>2]=I,n[I+24>>2]=g),(I=n[Q+20>>2])&&(n[g+20>>2]=I,n[I+24>>2]=g)}}if(n[B+4>>2]=1|A,n[A+B>>2]=A,n[8966]!=(0|B))break I;return void(n[8963]=A)}n[Q+4>>2]=-2&g,n[B+4>>2]=1|A,n[A+B>>2]=A}if(A>>>0<=255)return g=35884+((A=A>>>3|0)<<3)|0,(I=n[8961])&(A=1<<A)?A=n[g+8>>2]:(n[8961]=A|I,A=g),n[g+8>>2]=B,n[A+12>>2]=B,n[B+12>>2]=g,void(n[B+8>>2]=A);n[B+16>>2]=0,n[B+20>>2]=0,I=0,(C=A>>>8|0)&&(I=31,A>>>0>16777215||(I=(g=C)<<(C=C+1048320>>>16&8),I=28+((I=((I<<=i=I+520192>>>16&4)<<(E=I+245760>>>16&2)>>>15|0)-(E|C|i)|0)<<1|A>>>I+21&1)|0)),n[(Q=B)+28>>2]=I,E=36148+(I<<2)|0;I:{g:{if((C=n[8962])&(g=1<<I)){for(C=A<<(31==(0|I)?0:25-(I>>>1|0)|0),g=n[E>>2];;){if(I=g,(-8&n[g+4>>2])==(0|A))break g;if(g=C>>>29|0,C<<=1,!(g=n[16+(E=I+(4&g)|0)>>2]))break}n[E+16>>2]=B,n[B+24>>2]=I}else n[8962]=g|C,n[E>>2]=B,n[B+24>>2]=E;n[B+12>>2]=B,n[B+8>>2]=B;break I}A=n[I+8>>2],n[A+12>>2]=B,n[I+8>>2]=B,n[B+24>>2]=0,n[B+12>>2]=I,n[B+8>>2]=A}if(A=n[8969]+-1|0,n[8969]=A,!A){for(B=36300;B=(A=n[B>>2])+8|0,A;);n[8969]=-1}}}}function S(A,I){var g=0,B=0,C=0,Q=0,E=0,i=0,a=0,r=0;Q=A+I|0;A:{I:if(!(1&(g=n[A+4>>2]))){if(!(3&g))break A;if(I=(g=n[A>>2])+I|0,(0|(A=A-g|0))==n[8966]){if(3==(3&(g=n[Q+4>>2])))return n[8963]=I,n[Q+4>>2]=-2&g,n[A+4>>2]=1|I,void(n[Q>>2]=I)}else{if(g>>>0<=255){if(C=g>>>3|0,g=n[A+8>>2],(0|(B=n[A+12>>2]))==(0|g)){a=35844,r=n[8961]&ng(-2,C),n[a>>2]=r;break I}n[g+12>>2]=B,n[B+8>>2]=g;break I}if(i=n[A+24>>2],(0|(g=n[A+12>>2]))==(0|A))if((C=n[(B=A+20|0)>>2])||(C=n[(B=A+16|0)>>2])){for(;E=B,(C=n[(B=(g=C)+20|0)>>2])||(B=g+16|0,C=n[g+16>>2]););n[E>>2]=0}else g=0;else B=n[A+8>>2],n[B+12>>2]=g,n[g+8>>2]=B;if(!i)break I;B=n[A+28>>2];g:{if(n[(C=36148+(B<<2)|0)>>2]==(0|A)){if(n[C>>2]=g,g)break g;a=35848,r=n[8962]&ng(-2,B),n[a>>2]=r;break I}if(n[i+(n[i+16>>2]==(0|A)?16:20)>>2]=g,!g)break I}if(n[g+24>>2]=i,(B=n[A+16>>2])&&(n[g+16>>2]=B,n[B+24>>2]=g),!(B=n[A+20>>2]))break I;n[g+20>>2]=B,n[B+24>>2]=g}}I:{if(!(2&(g=n[Q+4>>2]))){if(n[8967]==(0|Q)){if(n[8967]=A,I=n[8964]+I|0,n[8964]=I,n[A+4>>2]=1|I,n[8966]!=(0|A))break A;return n[8963]=0,void(n[8966]=0)}if(n[8966]==(0|Q))return n[8966]=A,I=n[8963]+I|0,n[8963]=I,n[A+4>>2]=1|I,void(n[A+I>>2]=I);I=(-8&g)+I|0;g:if(g>>>0<=255){if(C=g>>>3|0,g=n[Q+8>>2],(0|(B=n[Q+12>>2]))==(0|g)){a=35844,r=n[8961]&ng(-2,C),n[a>>2]=r;break g}n[g+12>>2]=B,n[B+8>>2]=g}else{if(i=n[Q+24>>2],(0|Q)==(0|(g=n[Q+12>>2])))if((C=n[(B=Q+20|0)>>2])||(C=n[(B=Q+16|0)>>2])){for(;E=B,(C=n[(B=(g=C)+20|0)>>2])||(B=g+16|0,C=n[g+16>>2]););n[E>>2]=0}else g=0;else B=n[Q+8>>2],n[B+12>>2]=g,n[g+8>>2]=B;if(i){B=n[Q+28>>2];B:{if(n[(C=36148+(B<<2)|0)>>2]==(0|Q)){if(n[C>>2]=g,g)break B;a=35848,r=n[8962]&ng(-2,B),n[a>>2]=r;break g}if(n[i+(n[i+16>>2]==(0|Q)?16:20)>>2]=g,!g)break g}n[g+24>>2]=i,(B=n[Q+16>>2])&&(n[g+16>>2]=B,n[B+24>>2]=g),(B=n[Q+20>>2])&&(n[g+20>>2]=B,n[B+24>>2]=g)}}if(n[A+4>>2]=1|I,n[A+I>>2]=I,n[8966]!=(0|A))break I;return void(n[8963]=I)}n[Q+4>>2]=-2&g,n[A+4>>2]=1|I,n[A+I>>2]=I}if(I>>>0<=255)return I=35884+((g=I>>>3|0)<<3)|0,(B=n[8961])&(g=1<<g)?g=n[I+8>>2]:(n[8961]=g|B,g=I),n[I+8>>2]=A,n[g+12>>2]=A,n[A+12>>2]=I,void(n[A+8>>2]=g);n[A+16>>2]=0,n[A+20>>2]=0,g=0,(C=I>>>8|0)&&(g=31,I>>>0>16777215||(g=28+((g=((Q=(C<<=E=C+1048320>>>16&8)<<(g=C+520192>>>16&4))<<(C=Q+245760>>>16&2)>>>15|0)-(C|g|E)|0)<<1|I>>>g+21&1)|0)),n[(B=A)+28>>2]=g,C=36148+(g<<2)|0;I:{if((B=n[8962])&(E=1<<g)){for(B=I<<(31==(0|g)?0:25-(g>>>1|0)|0),g=n[C>>2];;){if(C=g,(-8&n[g+4>>2])==(0|I))break I;if(g=B>>>29|0,B<<=1,!(g=n[16+(E=C+(4&g)|0)>>2]))break}n[E+16>>2]=A}else n[8962]=B|E,n[C>>2]=A;return n[A+24>>2]=C,n[A+12>>2]=A,void(n[A+8>>2]=A)}I=n[C+8>>2],n[I+12>>2]=A,n[C+8>>2]=A,n[A+24>>2]=0,n[A+12>>2]=C,n[A+8>>2]=I}}function N(A,I,g,B,C){var Q,i,r,o,e,t,c,f,y,s,w,h,u,p,l,F=0,G=0,k=0,_=0,H=0,Y=0,b=0,m=0,U=0,v=0,S=0,N=0,R=0,M=0,d=0,P=0,J=0,x=0,L=0,K=0,q=0,X=0,V=0,T=0,W=0,j=0,Z=0,O=0,z=0,$=0,AA=0,IA=0,gA=0,BA=0;for(D=Q=D+-64|0,i=n[A+60>>2],r=n[A+56>>2],L=n[A+52>>2],K=n[A+48>>2],o=n[A+44>>2],e=n[A+40>>2],t=n[A+36>>2],c=n[A+32>>2],f=n[A+28>>2],y=n[A+24>>2],s=n[A+20>>2],w=n[A+16>>2],h=n[A+12>>2],u=n[A+8>>2],p=n[A+4>>2],l=n[A>>2];;){if(!C&B>>>0>63|C>>>0>0)_=g;else{if(F=0,_=G=eA(Q,0,64),B|C)for(;E[F+G|0]=a[I+F|0],!C&B>>>0>(F=F+1|0)>>>0|C>>>0>0;);I=_,V=g}for(q=20,m=l,U=p,v=u,S=h,F=w,G=s,g=y,N=f,H=c,Y=t,R=e,M=i,d=r,k=L,P=K,x=o;b=F,m=gB((F=F+m|0)^P,16),P=gB(b^(H=m+H|0),12),b=H,H=gB((H=m)^(m=F+P|0),8),F=gB(P^(J=b+H|0),7),b=G,U=gB((G=G+U|0)^k,16),k=gB(b^(Y=U+Y|0),12),b=Y,Y=gB((Y=U)^(U=G+k|0),8),G=gB(k^(X=b+Y|0),7),k=g,v=gB((g=g+v|0)^d,16),b=d=gB(k^(R=v+R|0),12),d=gB((k=v)^(v=g+d|0),8),g=gB(b^(R=d+R|0),7),k=N,S=gB((N=N+S|0)^M,16),x=k=gB(k^(M=S+x|0),12),b=M,M=gB((M=S)^(S=N+k|0),8),N=gB(x^(k=b+M|0),7),b=R,R=gB((m=G+m|0)^M,16),G=gB((P=b+R|0)^G,12),M=gB(R^(m=G+m|0),8),G=gB(G^(R=P+M|0),7),H=gB((U=g+U|0)^H,16),g=gB((k=H+k|0)^g,12),P=gB(H^(U=g+U|0),8),g=gB(g^(x=k+P|0),7),H=gB((v=N+v|0)^Y,16),N=gB((Y=H+J|0)^N,12),k=gB(H^(v=N+v|0),8),N=gB(N^(H=Y+k|0),7),Y=gB((S=F+S|0)^d,16),F=gB((J=Y+X|0)^F,12),d=gB(Y^(S=F+S|0),8),F=gB(F^(Y=J+d|0),7),q=q+-2|0;);if(q=a[I+4|0]|a[I+5|0]<<8|a[I+6|0]<<16|a[I+7|0]<<24,J=a[I+8|0]|a[I+9|0]<<8|a[I+10|0]<<16|a[I+11|0]<<24,X=a[I+12|0]|a[I+13|0]<<8|a[I+14|0]<<16|a[I+15|0]<<24,T=a[I+16|0]|a[I+17|0]<<8|a[I+18|0]<<16|a[I+19|0]<<24,W=a[I+20|0]|a[I+21|0]<<8|a[I+22|0]<<16|a[I+23|0]<<24,j=a[I+24|0]|a[I+25|0]<<8|a[I+26|0]<<16|a[I+27|0]<<24,Z=a[I+28|0]|a[I+29|0]<<8|a[I+30|0]<<16|a[I+31|0]<<24,O=a[I+32|0]|a[I+33|0]<<8|a[I+34|0]<<16|a[I+35|0]<<24,z=a[I+36|0]|a[I+37|0]<<8|a[I+38|0]<<16|a[I+39|0]<<24,$=a[I+40|0]|a[I+41|0]<<8|a[I+42|0]<<16|a[I+43|0]<<24,AA=a[I+44|0]|a[I+45|0]<<8|a[I+46|0]<<16|a[I+47|0]<<24,IA=a[I+48|0]|a[I+49|0]<<8|a[I+50|0]<<16|a[I+51|0]<<24,gA=a[I+52|0]|a[I+53|0]<<8|a[I+54|0]<<16|a[I+55|0]<<24,BA=a[I+56|0]|a[I+57|0]<<8|a[I+58|0]<<16|a[I+59|0]<<24,b=a[I+60|0]|a[I+61|0]<<8|a[I+62|0]<<16|a[I+63|0]<<24,fg(_,m+l^(a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24)),fg(_+4|0,U+p^q),fg(_+8|0,v+u^J),fg(_+12|0,S+h^X),fg(_+16|0,F+w^T),fg(_+20|0,G+s^W),fg(_+24|0,g+y^j),fg(_+28|0,N+f^Z),fg(_+32|0,H+c^O),fg(_+36|0,Y+t^z),fg(_+40|0,$^R+e),fg(_+44|0,AA^x+o),fg(_+48|0,IA^P+K),fg(_+52|0,gA^k+L),fg(_+56|0,BA^d+r),fg(_+60|0,b^M+i),L=((F=K+1|0)>>>0<K>>>0)+L|0,!C&B>>>0<=64|C>>>0<0){if(!(!B|!C&B>>>0>63|C>>>0>0))for(G=0;E[G+V|0]=a[_+G|0],(0|B)!=(0|(G=G+1|0)););n[A+52>>2]=L,n[A+48>>2]=F,D=Q- -64|0;break}I=I- -64|0,g=_- -64|0,C=C+-1|0,(B=B+-64|0)>>>0<4294967232&&(C=C+1|0),K=F}}function R(A,I,g,B){var C=0,Q=0,E=0,i=0,r=0,e=0,t=0,c=0,f=0,y=0,s=0,w=0,h=0,D=0,u=0,p=0,F=0,G=0,k=0,_=0,H=0,Y=0,b=0,m=0,U=0;if(Q=n[A+36>>2],i=n[A+32>>2],t=n[A+28>>2],E=n[A+24>>2],e=n[A+20>>2],!B&g>>>0>=16|B>>>0>0)for(_=!a[A+80|0]<<24,y=n[A+4>>2],H=o(y,5),u=n[A+8>>2],k=o(u,5),F=n[A+12>>2],G=o(F,5),C=n[A+16>>2],p=o(C,5),Y=C,s=n[A>>2];C=xg(r=((a[I+3|0]|a[I+4|0]<<8|a[I+5|0]<<16|a[I+6|0]<<24)>>>2&67108863)+E|0,0,F,0),E=l,f=xg(e=(67108863&(a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24))+e|0,0,Y,0),E=l+E|0,E=(C=f+C|0)>>>0<f>>>0?E+1|0:E,t=(f=xg(w=((a[I+6|0]|a[I+7|0]<<8|a[I+8|0]<<16|a[I+9|0]<<24)>>>4&67108863)+t|0,0,u,0))+C|0,C=l+E|0,i=xg(h=((a[I+9|0]|a[I+10|0]<<8|a[I+11|0]<<16|a[I+12|0]<<24)>>>6|0)+i|0,0,y,0),C=l+(t>>>0<f>>>0?C+1|0:C)|0,C=(E=i+t|0)>>>0<i>>>0?C+1|0:C,Q=xg(D=((a[I+12|0]|a[I+13|0]<<8|a[I+14|0]<<16|a[I+15|0]<<24)>>>8|_)+Q|0,0,s,0),C=l+C|0,b=E=Q+E|0,t=E>>>0<Q>>>0?C+1|0:C,C=xg(r,0,u,0),E=l,i=xg(e,0,F,0),Q=l+E|0,Q=(C=i+C|0)>>>0<i>>>0?Q+1|0:Q,i=xg(w,0,y,0),E=l+Q|0,E=(C=i+C|0)>>>0<i>>>0?E+1|0:E,Q=(i=xg(h,0,s,0))+C|0,C=l+E|0,C=Q>>>0<i>>>0?C+1|0:C,E=Q,Q=xg(D,0,p,0),C=l+C|0,m=E=E+Q|0,f=E>>>0<Q>>>0?C+1|0:C,C=xg(r,0,y,0),Q=l,E=(i=xg(e,0,u,0))+C|0,C=l+Q|0,C=E>>>0<i>>>0?C+1|0:C,i=xg(w,0,s,0),Q=l+C|0,Q=(E=i+E|0)>>>0<i>>>0?Q+1|0:Q,C=(i=xg(h,0,p,0))+E|0,E=l+Q|0,E=C>>>0<i>>>0?E+1|0:E,Q=(i=xg(D,0,G,0))+C|0,C=l+E|0,U=Q,i=Q>>>0<i>>>0?C+1|0:C,C=xg(r,0,s,0),Q=l,E=(c=xg(e,0,y,0))+C|0,C=l+Q|0,C=E>>>0<c>>>0?C+1|0:C,Q=xg(w,0,p,0),C=l+C|0,C=(E=Q+E|0)>>>0<Q>>>0?C+1|0:C,c=xg(h,0,G,0),Q=l+C|0,Q=(E=c+E|0)>>>0<c>>>0?Q+1|0:Q,C=(c=xg(D,0,k,0))+E|0,E=l+Q|0,E=C>>>0<c>>>0?E+1|0:E,c=C,C=xg(r,0,p,0),r=l,Q=(e=xg(e,0,s,0))+C|0,C=l+r|0,C=Q>>>0<e>>>0?C+1|0:C,r=xg(w,0,G,0),C=l+C|0,C=(Q=r+Q|0)>>>0<r>>>0?C+1|0:C,r=xg(h,0,k,0),C=l+C|0,C=(Q=r+Q|0)>>>0<r>>>0?C+1|0:C,r=(e=xg(D,0,H,0))+Q|0,Q=l+C|0,(Q=(C=(67108863&(Q=r>>>0<e>>>0?Q+1|0:Q))<<6|(C=r)>>>26)+c|0)>>>0<C>>>0&&(E=E+1|0),e=Q,C=i,(Q=(E=(67108863&E)<<6|Q>>>26)+U|0)>>>0<E>>>0&&(C=C+1|0),i=Q,Q=f,(E=(C=(67108863&C)<<6|i>>>26)+m|0)>>>0<C>>>0&&(Q=Q+1|0),C=E,E=t,(t=(Q=(67108863&Q)<<6|C>>>26)+b|0)>>>0<Q>>>0&&(E=E+1|0),E=(67108863&e)+((r=o((67108863&E)<<6|(Q=t)>>>26,5)+(67108863&r)|0)>>>26|0)|0,t=67108863&i,i=67108863&C,Q&=67108863,e=67108863&r,I=I+16|0,C=B+-1|0,(g=g+-16|0)>>>0<4294967280&&(C=C+1|0),B=C,!C&g>>>0>15|C>>>0>0;);n[A+20>>2]=e,n[A+36>>2]=Q,n[A+32>>2]=i,n[A+28>>2]=t,n[A+24>>2]=E}function M(A,I,g){var B,C,Q,i,n=0,r=0,o=0,e=0,t=0;return D=Q=D-160|0,ig(I,g,32,0),E[0|I]=248&a[0|I],E[I+31|0]=63&a[I+31|0]|64,tA(Q,I),NI(A,Q),r=a[(C=g)+8|0]|a[C+9|0]<<8|a[C+10|0]<<16|a[C+11|0]<<24,n=a[C+12|0]|a[C+13|0]<<8|a[C+14|0]<<16|a[C+15|0]<<24,o=a[C+16|0]|a[C+17|0]<<8|a[C+18|0]<<16|a[C+19|0]<<24,e=a[C+20|0]|a[C+21|0]<<8|a[C+22|0]<<16|a[C+23|0]<<24,t=a[0|C]|a[C+1|0]<<8|a[C+2|0]<<16|a[C+3|0]<<24,g=a[C+4|0]|a[C+5|0]<<8|a[C+6|0]<<16|a[C+7|0]<<24,B=I,i=a[C+28|0]|a[C+29|0]<<8|a[C+30|0]<<16|a[C+31|0]<<24,I=a[C+24|0]|a[C+25|0]<<8|a[C+26|0]<<16|a[C+27|0]<<24,E[B+24|0]=I,E[B+25|0]=I>>>8,E[B+26|0]=I>>>16,E[B+27|0]=I>>>24,E[B+28|0]=i,E[B+29|0]=i>>>8,E[B+30|0]=i>>>16,E[B+31|0]=i>>>24,E[B+16|0]=o,E[B+17|0]=o>>>8,E[B+18|0]=o>>>16,E[B+19|0]=o>>>24,E[B+20|0]=e,E[B+21|0]=e>>>8,E[B+22|0]=e>>>16,E[B+23|0]=e>>>24,E[B+8|0]=r,E[B+9|0]=r>>>8,E[B+10|0]=r>>>16,E[B+11|0]=r>>>24,E[B+12|0]=n,E[B+13|0]=n>>>8,E[B+14|0]=n>>>16,E[B+15|0]=n>>>24,E[0|B]=t,E[B+1|0]=t>>>8,E[B+2|0]=t>>>16,E[B+3|0]=t>>>24,E[B+4|0]=g,E[B+5|0]=g>>>8,E[B+6|0]=g>>>16,E[B+7|0]=g>>>24,o=a[(n=A)+8|0]|a[n+9|0]<<8|a[n+10|0]<<16|a[n+11|0]<<24,e=a[n+12|0]|a[n+13|0]<<8|a[n+14|0]<<16|a[n+15|0]<<24,t=a[n+16|0]|a[n+17|0]<<8|a[n+18|0]<<16|a[n+19|0]<<24,g=a[n+20|0]|a[n+21|0]<<8|a[n+22|0]<<16|a[n+23|0]<<24,I=a[0|n]|a[n+1|0]<<8|a[n+2|0]<<16|a[n+3|0]<<24,A=a[n+4|0]|a[n+5|0]<<8|a[n+6|0]<<16|a[n+7|0]<<24,r=a[n+28|0]|a[n+29|0]<<8|a[n+30|0]<<16|a[n+31|0]<<24,n=a[n+24|0]|a[n+25|0]<<8|a[n+26|0]<<16|a[n+27|0]<<24,E[B+56|0]=n,E[B+57|0]=n>>>8,E[B+58|0]=n>>>16,E[B+59|0]=n>>>24,E[B+60|0]=r,E[B+61|0]=r>>>8,E[B+62|0]=r>>>16,E[B+63|0]=r>>>24,E[B+48|0]=t,E[B+49|0]=t>>>8,E[B+50|0]=t>>>16,E[B+51|0]=t>>>24,E[B+52|0]=g,E[B+53|0]=g>>>8,E[B+54|0]=g>>>16,E[B+55|0]=g>>>24,E[B+40|0]=o,E[B+41|0]=o>>>8,E[B+42|0]=o>>>16,E[B+43|0]=o>>>24,E[B+44|0]=e,E[B+45|0]=e>>>8,E[B+46|0]=e>>>16,E[B+47|0]=e>>>24,E[B+32|0]=I,E[B+33|0]=I>>>8,E[B+34|0]=I>>>16,E[B+35|0]=I>>>24,E[B+36|0]=A,E[B+37|0]=A>>>8,E[B+38|0]=A>>>16,E[B+39|0]=A>>>24,D=Q+160|0,0}function d(A,I){var g,B,C,Q,E,i,a,r,o,e=0,t=0,c=0,f=0,y=0,s=0,w=0,h=0,D=0,u=0,p=0,F=0,G=0,k=0,_=0;p=t=n[(e=I)+4>>2],D=t>>31,F=t=n[e+8>>2],B=t>>31,h=t=n[e+12>>2],u=t>>31,G=t=n[e+16>>2],C=t>>31,w=t=n[e+20>>2],s=t>>31,k=t=n[e+24>>2],Q=t>>31,E=t=n[e>>2],i=t>>31,f=A,y=t=xg(e=n[e+36>>2],e>>31,121666,0),e=l,(t=t+16777216|0)>>>0<16777216&&(e=e+1|0),g=t,t=e,a=y-(-33554432&g)|0,c=xg(e=n[I+32>>2],e>>31,121666,0),r=l,y=xg(I=n[I+28>>2],I>>31,121666,0),e=l,_=c,(I=y+16777216|0)>>>0<16777216&&(e=e+1|0),o=I,c=I,I=(I=e>>25)+r|0,I=(e=_+(c=(33554431&e)<<7|c>>>25)|0)>>>0<c>>>0?I+1|0:I,c=e,_=f,e=I,(I=c+33554432|0)>>>0<33554432&&(e=e+1|0),f=((67108863&e)<<6|I>>>26)+a|0,n[_+36>>2]=f,I&=-67108864,n[A+32>>2]=c-I,f=y-(-33554432&o)|0,e=xg(k,Q,121666,0),k=l,y=xg(w,s,121666,0),I=l,c=e,(e=y+16777216|0)>>>0<16777216&&(I=I+1|0),w=e,s=e,e=(e=I>>25)+k|0,e=(I=c+(s=(33554431&I)<<7|s>>>25)|0)>>>0<s>>>0?e+1|0:e,(c=I+33554432|0)>>>0<33554432&&(e=e+1|0),f=f+((67108863&e)<<6|c>>>26)|0,n[A+28>>2]=f,e=-67108864&c,n[A+24>>2]=I-e,f=A,w=y-(-33554432&w)|0,I=xg(G,C,121666,0),G=l,y=xg(h,u,121666,0),e=l,c=I,(I=y+16777216|0)>>>0<16777216&&(e=e+1|0),h=I,u=(33554431&e)<<7|I>>>25,e=(e>>25)+G|0,s=f,I=e=(c=c+u|0)>>>0<u>>>0?e+1|0:e,(e=c+33554432|0)>>>0<33554432&&(I=I+1|0),f=((67108863&I)<<6|e>>>26)+w|0,n[s+20>>2]=f,I=-67108864&e,n[A+16>>2]=c-I,f=A,h=y-(-33554432&h)|0,e=xg(F,B,121666,0),F=l,y=xg(p,D,121666,0),I=l,c=e,(e=y+16777216|0)>>>0<16777216&&(I=I+1|0),p=e,D=(33554431&I)<<7|e>>>25,I=(I>>25)+F|0,w=f,e=I=(c=c+D|0)>>>0<D>>>0?I+1|0:I,(I=c+33554432|0)>>>0<33554432&&(e=e+1|0),f=((67108863&e)<<6|I>>>26)+h|0,n[w+12>>2]=f,I&=-67108864,n[A+8>>2]=c-I,I=xg((33554431&t)<<7|g>>>25,t>>25,19,0),e=l,f=y-(-33554432&p)|0,t=xg(E,i,121666,0),e=l+e|0,e=(I=t+I|0)>>>0<t>>>0?e+1|0:e,(t=I+33554432|0)>>>0<33554432&&(e=e+1|0),y=f+((67108863&e)<<6|t>>>26)|0,n[A+4>>2]=y,e=A,A=-67108864&t,n[e>>2]=I-A}function P(A,I,g){var B,C=0,Q=0,i=0;D=B=D+-64|0;A:{if(!(!g|g>>>0>=65)){if(C=-1,!(a[A+80|0]|a[A+81|0]<<8|a[A+82|0]<<16|a[A+83|0]<<24|a[A+84|0]|a[A+85|0]<<8|a[A+86|0]<<16|a[A+87|0]<<24)){if(Q=A,(C=a[A+352|0]|a[A+353|0]<<8|a[A+354|0]<<16|a[A+355|0]<<24)>>>0>=129){if(wA(A,128),F(A,i=A+96|0),C=(a[A+352|0]|a[A+353|0]<<8|a[A+354|0]<<16|a[A+355|0]<<24)-128|0,E[A+352|0]=C,E[A+353|0]=C>>>8,E[A+354|0]=C>>>16,E[A+355|0]=C>>>24,C>>>0>=129)break A;j(i,A+224|0,C),C=a[A+352|0]|a[A+353|0]<<8|a[A+354|0]<<16|a[A+355|0]<<24}wA(Q,C),a[A+356|0]&&(E[A+88|0]=-1,E[A+89|0]=16777215,E[A+90|0]=65535,E[A+91|0]=255,E[A+92|0]=-1,E[A+93|0]=16777215,E[A+94|0]=65535,E[A+95|0]=255),E[A+80|0]=-1,E[A+81|0]=16777215,E[A+82|0]=65535,E[A+83|0]=255,E[A+84|0]=-1,E[A+85|0]=16777215,E[A+86|0]=65535,E[A+87|0]=255,eA((C=A+96|0)+(Q=a[A+352|0]|a[A+353|0]<<8|a[A+354|0]<<16|a[A+355|0]<<24)|0,0,256-Q|0),F(A,C),LI(B,a[0|A]|a[A+1|0]<<8|a[A+2|0]<<16|a[A+3|0]<<24,a[A+4|0]|a[A+5|0]<<8|a[A+6|0]<<16|a[A+7|0]<<24),LI(8|B,a[A+8|0]|a[A+9|0]<<8|a[A+10|0]<<16|a[A+11|0]<<24,a[A+12|0]|a[A+13|0]<<8|a[A+14|0]<<16|a[A+15|0]<<24),LI(B+16|0,a[A+16|0]|a[A+17|0]<<8|a[A+18|0]<<16|a[A+19|0]<<24,a[A+20|0]|a[A+21|0]<<8|a[A+22|0]<<16|a[A+23|0]<<24),LI(B+24|0,a[A+24|0]|a[A+25|0]<<8|a[A+26|0]<<16|a[A+27|0]<<24,a[A+28|0]|a[A+29|0]<<8|a[A+30|0]<<16|a[A+31|0]<<24),LI(B+32|0,a[A+32|0]|a[A+33|0]<<8|a[A+34|0]<<16|a[A+35|0]<<24,a[A+36|0]|a[A+37|0]<<8|a[A+38|0]<<16|a[A+39|0]<<24),LI(B+40|0,a[A+40|0]|a[A+41|0]<<8|a[A+42|0]<<16|a[A+43|0]<<24,a[A+44|0]|a[A+45|0]<<8|a[A+46|0]<<16|a[A+47|0]<<24),LI(B+48|0,a[A+48|0]|a[A+49|0]<<8|a[A+50|0]<<16|a[A+51|0]<<24,a[A+52|0]|a[A+53|0]<<8|a[A+54|0]<<16|a[A+55|0]<<24),LI(B+56|0,a[A+56|0]|a[A+57|0]<<8|a[A+58|0]<<16|a[A+59|0]<<24,a[A+60|0]|a[A+61|0]<<8|a[A+62|0]<<16|a[A+63|0]<<24),j(I,B,g),KI(A,64),KI(C,256),C=0}return D=B- -64|0,C}Gg(),t()}c(1854,1886,306,1931),t()}function J(A,I){var g,B,C,Q,E,i,r,o,e,t=0,c=0,f=0,y=0,s=0,w=0,h=0,D=0,u=0,p=0,F=0,G=0;g=a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24,p=Cg(I+4|0),t=l,D=Cg(I+7|0),f=l,u=Cg(I+10|0),c=l,B=Cg(I+13|0),h=l,y=a[I+16|0]|a[I+17|0]<<8|a[I+18|0]<<16|a[I+19|0]<<24,C=Cg(I+20|0),F=l,Q=Cg(I+23|0),E=l,i=Cg(I+26|0),r=l,o=Cg(I+29|0),I=c<<3|u>>>29,G=c=u<<3,(c=c+16777216|0)>>>0<16777216&&(I=I+1|0),u=c,c=I,f=I=f<<5|D>>>27,e=w=A,w=s=D<<5,t=I=t<<6|(D=p)>>>26,(I=16777216+(D<<=6)|0)>>>0<16777216&&(t=t+1|0),p=I,s=I,I=(I=t>>25)+f|0,I=(t=w+(s=(33554431&t)<<7|s>>>25)|0)>>>0<s>>>0?I+1|0:I,(f=t+33554432|0)>>>0<33554432&&(I=I+1|0),w=(G-(-33554432&u)|0)+((67108863&I)<<6|f>>>26)|0,n[e+12>>2]=w,I=-67108864&f,n[A+8>>2]=t-I,I=0,(y=(f=y)+16777216|0)>>>0<16777216&&(I=1),w=y,y=I,G=f-(-33554432&w)|0,I=h<<2|(f=B)>>>30,h=f<<2,f=I,I=c>>25,c=(s=h)+(h=(33554431&c)<<7|u>>>25)|0,I=I+f|0,s=t=A,t=I=c>>>0<h>>>0?I+1|0:I,(I=c+33554432|0)>>>0<33554432&&(t=t+1|0),f=((67108863&t)<<6|I>>>26)+G|0,n[s+20>>2]=f,I&=-67108864,n[A+16>>2]=c-I,s=(t=C)<<7,I=(I=F<<7|t>>>25)+(t=y>>25)|0,I=(y=s+(f=(33554431&y)<<7|w>>>25)|0)>>>0<f>>>0?I+1|0:I,y=t=y,(t=t+33554432|0)>>>0<33554432&&(I=I+1|0),f=t,t=I,I=-67108864&f,n[(c=A)+24>>2]=y-I,I=E<<5|(c=Q)>>>27,F=c<<=5,(c=c+16777216|0)>>>0<16777216&&(I=I+1|0),h=c,c=I,t=(F-(-33554432&h)|0)+((67108863&t)<<6|f>>>26)|0,n[(y=A)+28>>2]=t,f=(t=i)<<4,t=I=r<<4|t>>>28,I=(I=c>>25)+t|0,I=(c=(w=f)+(f=(33554431&c)<<7|h>>>25)|0)>>>0<f>>>0?I+1|0:I,c=t=c,(t=t+33554432|0)>>>0<33554432&&(I=I+1|0),f=t,t=I,I=-67108864&f,n[y+32>>2]=c-I,I=0,c=y=(y=o)<<2&33554428,(y=y+16777216|0)>>>0<16777216&&(I=I+1|0),c=(c-(33554432&y)|0)+((67108863&t)<<6|f>>>26)|0,n[A+36>>2]=c,y=xg((33554431&I)<<7|y>>>25,I>>>25|0,19,0),I=l,I=(t=y+g|0)>>>0<y>>>0?I+1|0:I,(c=t+33554432|0)>>>0<33554432&&(I=I+1|0),y=(D-(-33554432&p)|0)+((67108863&I)<<6|c>>>26)|0,n[A+4>>2]=y,I=A,A=-67108864&c,n[I>>2]=t-A}function x(A,I,g,B){var C,Q=0,i=0;D=C=D-16|0,Q=-31;A:{I:{g:{B:switch(B+-1|0){case 1:if(I>>>0<13)break I;B=a[35660]|a[35661]<<8|a[35662]<<16|a[35663]<<24,Q=a[35656]|a[35657]<<8|a[35658]<<16|a[35659]<<24,E[0|A]=Q,E[A+1|0]=Q>>>8,E[A+2|0]=Q>>>16,E[A+3|0]=Q>>>24,E[A+4|0]=B,E[A+5|0]=B>>>8,E[A+6|0]=B>>>16,E[A+7|0]=B>>>24,B=a[35665]|a[35666]<<8|a[35667]<<16|a[35668]<<24,Q=a[35661]|a[35662]<<8|a[35663]<<16|a[35664]<<24,E[A+5|0]=Q,E[A+6|0]=Q>>>8,E[A+7|0]=Q>>>16,E[A+8|0]=Q>>>24,E[A+9|0]=B,E[A+10|0]=B>>>8,E[A+11|0]=B>>>16,E[A+12|0]=B>>>24,i=-12,B=12;break g;case 0:break B;default:break A}if(I>>>0<12)break I;B=a[35673]|a[35674]<<8|a[35675]<<16|a[35676]<<24,Q=a[35669]|a[35670]<<8|a[35671]<<16|a[35672]<<24,E[0|A]=Q,E[A+1|0]=Q>>>8,E[A+2|0]=Q>>>16,E[A+3|0]=Q>>>24,E[A+4|0]=B,E[A+5|0]=B>>>8,E[A+6|0]=B>>>16,E[A+7|0]=B>>>24,B=a[35677]|a[35678]<<8|a[35679]<<16|a[35680]<<24,E[A+8|0]=B,E[A+9|0]=B>>>8,E[A+10|0]=B>>>16,E[A+11|0]=B>>>24,i=-11,B=11}if(Q=DA(g))break A;if(oI(C+5|0,19),!((Q=I+i|0)>>>0<=(I=VA(C+5|0))>>>0)&&(A=j(A+B|0,C+5|0,I+1|0),!((B=Q-I|0)>>>0<4)&&(E[0|(A=A+I|0)]=4025636,E[A+1|0]=15725,E[A+2|0]=61,E[A+3|0]=0,oI(C+5|0,n[g+44>>2]),!((B=B+-3|0)>>>0<=(I=VA(C+5|0))>>>0)&&(A=j(A+3|0,C+5|0,I+1|0),!((B=B-I|0)>>>0<4)&&(E[0|(A=A+I|0)]=4027436,E[A+1|0]=15732,E[A+2|0]=61,E[A+3|0]=0,oI(C+5|0,n[g+40>>2]),!((B=B+-3|0)>>>0<=(I=VA(C+5|0))>>>0)&&(A=j(A+3|0,C+5|0,I+1|0),!((B=B-I|0)>>>0<4)&&(E[0|(A=A+I|0)]=4026412,E[A+1|0]=15728,E[A+2|0]=61,E[A+3|0]=0,oI(C+5|0,n[g+48>>2]),!((B=B+-3|0)>>>0<=(I=VA(C+5|0))>>>0)&&(A=j(A+3|0,C+5|0,I+1|0),!((B=B-I|0)>>>0<2)&&(E[0|(A=A+I|0)]=36,E[A+1|0]=0,AA(A=A+1|0,I=B+-1|0,n[g+16>>2],n[g+20>>2],3)))))))))){if(Q=-31,(B=(B=I)-(I=VA(A))|0)>>>0<2)break A;return E[0|(A=A+I|0)]=36,E[A+1|0]=0,A=AA(A+1|0,B+-1|0,n[g>>2],n[g+4>>2],3),D=C+16|0,A?0:-31}}Q=-31}return D=C+16|0,Q}function L(A,I,g,B){var C,Q=0;C=Q=D,D=Q=Q-576&-64,n[Q+188>>2]=0,fg(Q+188|0,I);A:if(I>>>0<=64){if((0|vI(Q+192|0,0,0,I))<0)break A;if((0|Tg(Q+192|0,Q+188|0,4,0))<0)break A;if((0|Tg(Q+192|0,g,B,0))<0)break A;og(Q+192|0,A,I)}else if(!((0|vI(Q+192|0,0,0,64))<0||(0|Tg(Q+192|0,Q+188|0,4,0))<0||(0|Tg(Q+192|0,g,B,0))<0||(0|og(Q+192|0,Q+112|0,64))<0)){if(g=n[Q+116>>2],B=n[Q+112>>2],E[0|A]=B,E[A+1|0]=B>>>8,E[A+2|0]=B>>>16,E[A+3|0]=B>>>24,E[A+4|0]=g,E[A+5|0]=g>>>8,E[A+6|0]=g>>>16,E[A+7|0]=g>>>24,g=n[Q+124>>2],B=n[Q+120>>2],E[A+8|0]=B,E[A+9|0]=B>>>8,E[A+10|0]=B>>>16,E[A+11|0]=B>>>24,E[A+12|0]=g,E[A+13|0]=g>>>8,E[A+14|0]=g>>>16,E[A+15|0]=g>>>24,g=n[Q+140>>2],B=n[Q+136>>2],E[A+24|0]=B,E[A+25|0]=B>>>8,E[A+26|0]=B>>>16,E[A+27|0]=B>>>24,E[A+28|0]=g,E[A+29|0]=g>>>8,E[A+30|0]=g>>>16,E[A+31|0]=g>>>24,g=n[Q+132>>2],B=n[Q+128>>2],E[A+16|0]=B,E[A+17|0]=B>>>8,E[A+18|0]=B>>>16,E[A+19|0]=B>>>24,E[A+20|0]=g,E[A+21|0]=g>>>8,E[A+22|0]=g>>>16,E[A+23|0]=g>>>24,A=A+32|0,(I=I+-32|0)>>>0>=65)for(;;){if(j(Q+48|0,Q+112|0,64),(0|Ag(Q+112|0,64,Q+48|0,64,0,0,0))<0)break A;if(g=n[Q+116>>2],B=n[Q+112>>2],E[0|A]=B,E[A+1|0]=B>>>8,E[A+2|0]=B>>>16,E[A+3|0]=B>>>24,E[A+4|0]=g,E[A+5|0]=g>>>8,E[A+6|0]=g>>>16,E[A+7|0]=g>>>24,g=n[Q+124>>2],B=n[Q+120>>2],E[A+8|0]=B,E[A+9|0]=B>>>8,E[A+10|0]=B>>>16,E[A+11|0]=B>>>24,E[A+12|0]=g,E[A+13|0]=g>>>8,E[A+14|0]=g>>>16,E[A+15|0]=g>>>24,g=n[Q+140>>2],B=n[Q+136>>2],E[A+24|0]=B,E[A+25|0]=B>>>8,E[A+26|0]=B>>>16,E[A+27|0]=B>>>24,E[A+28|0]=g,E[A+29|0]=g>>>8,E[A+30|0]=g>>>16,E[A+31|0]=g>>>24,g=n[Q+132>>2],B=n[Q+128>>2],E[A+16|0]=B,E[A+17|0]=B>>>8,E[A+18|0]=B>>>16,E[A+19|0]=B>>>24,E[A+20|0]=g,E[A+21|0]=g>>>8,E[A+22|0]=g>>>16,E[A+23|0]=g>>>24,A=A+32|0,!((I=I+-32|0)>>>0>64))break}j(Q+48|0,Q+112|0,64),(0|Ag(Q+112|0,I,Q+48|0,64,0,0,0))<0||j(A,Q+112|0,I)}KI(Q+192|0,384),D=C}function K(A,I,g){var B=0,C=0,Q=0,E=0,i=0,n=0,r=0,o=0,e=0,t=0,c=0,f=0,y=0,s=0,w=0,h=0,D=0,u=0,p=0;for(Q=2036477234,e=857760878,t=1634760805,E=1797285236,o=a[0|g]|a[g+1|0]<<8|a[g+2|0]<<16|a[g+3|0]<<24,B=a[g+4|0]|a[g+5|0]<<8|a[g+6|0]<<16|a[g+7|0]<<24,C=a[g+8|0]|a[g+9|0]<<8|a[g+10|0]<<16|a[g+11|0]<<24,n=a[g+12|0]|a[g+13|0]<<8|a[g+14|0]<<16|a[g+15|0]<<24,f=a[g+16|0]|a[g+17|0]<<8|a[g+18|0]<<16|a[g+19|0]<<24,y=a[g+20|0]|a[g+21|0]<<8|a[g+22|0]<<16|a[g+23|0]<<24,w=a[g+24|0]|a[g+25|0]<<8|a[g+26|0]<<16|a[g+27|0]<<24,h=a[g+28|0]|a[g+29|0]<<8|a[g+30|0]<<16|a[g+31|0]<<24,g=a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24,c=a[I+4|0]|a[I+5|0]<<8|a[I+6|0]<<16|a[I+7|0]<<24,i=a[I+8|0]|a[I+9|0]<<8|a[I+10|0]<<16|a[I+11|0]<<24,I=a[I+12|0]|a[I+13|0]<<8|a[I+14|0]<<16|a[I+15|0]<<24;r=o,t=gB((s=g)^(g=o+t|0),16),r=f=gB(r^(o=t+f|0),12),f=gB((s=t)^(t=g+f|0),8),o=gB(r^(D=f+o|0),7),r=B,e=gB((g=B+e|0)^c,16),r=c=gB(r^(B=e+y|0),12),c=gB((s=e)^(e=g+c|0),8),g=gB(r^(y=c+B|0),7),r=C,B=gB((Q=Q+C|0)^i,16),r=i=gB(r^(C=B+w|0),12),s=gB(B^(i=Q+i|0),8),Q=gB(r^(B=s+C|0),7),E=gB((C=I)^(I=E+n|0),16),n=gB((C=E+h|0)^n,12),I=gB(E^(u=I+n|0),8),E=gB(n^(C=I+C|0),7),r=B,B=gB((B=I)^(I=g+t|0),16),g=gB((n=r+B|0)^g,12),I=gB(B^(t=I+g|0),8),B=gB(g^(w=n+I|0),7),r=C,C=gB((g=Q+e|0)^f,16),Q=gB((n=r+C|0)^Q,12),g=gB(C^(e=g+Q|0),8),C=gB(Q^(h=n+g|0),7),n=gB((Q=E+i|0)^c,16),E=gB((i=n+D|0)^E,12),c=gB(n^(Q=Q+E|0),8),n=gB(E^(f=i+c|0),7),i=gB((E=o+u|0)^s,16),o=gB((y=i+y|0)^o,12),i=gB(i^(E=E+o|0),8),o=gB(o^(y=y+i|0),7),10!=(0|(p=p+1|0)););fg(A,t),fg(A+4|0,e),fg(A+8|0,Q),fg(A+12|0,E),fg(A+16|0,g),fg(A+20|0,c),fg(A+24|0,i),fg(A+28|0,I)}function q(A){var I,g=0,B=0;D=I=D-48|0,g=a[28+(A|=0)|0]|a[A+29|0]<<8|a[A+30|0]<<16|a[A+31|0]<<24,n[I+24>>2]=a[A+24|0]|a[A+25|0]<<8|a[A+26|0]<<16|a[A+27|0]<<24,n[I+28>>2]=g,g=a[A+20|0]|a[A+21|0]<<8|a[A+22|0]<<16|a[A+23|0]<<24,n[I+16>>2]=a[A+16|0]|a[A+17|0]<<8|a[A+18|0]<<16|a[A+19|0]<<24,n[I+20>>2]=g,g=a[A+4|0]|a[A+5|0]<<8|a[A+6|0]<<16|a[A+7|0]<<24,n[I>>2]=a[0|A]|a[A+1|0]<<8|a[A+2|0]<<16|a[A+3|0]<<24,n[I+4>>2]=g,g=a[A+12|0]|a[A+13|0]<<8|a[A+14|0]<<16|a[A+15|0]<<24,n[I+8>>2]=a[A+8|0]|a[A+9|0]<<8|a[A+10|0]<<16|a[A+11|0]<<24,n[I+12>>2]=g,g=a[A+40|0]|a[A+41|0]<<8|a[A+42|0]<<16|a[A+43|0]<<24,n[I+32>>2]=a[A+36|0]|a[A+37|0]<<8|a[A+38|0]<<16|a[A+39|0]<<24,n[I+36>>2]=g,Q[n[8956]](I,I,40,0,A+32|0,0,A),g=n[I+28>>2],B=n[I+24>>2],E[A+24|0]=B,E[A+25|0]=B>>>8,E[A+26|0]=B>>>16,E[A+27|0]=B>>>24,E[A+28|0]=g,E[A+29|0]=g>>>8,E[A+30|0]=g>>>16,E[A+31|0]=g>>>24,g=n[I+20>>2],B=n[I+16>>2],E[A+16|0]=B,E[A+17|0]=B>>>8,E[A+18|0]=B>>>16,E[A+19|0]=B>>>24,E[A+20|0]=g,E[A+21|0]=g>>>8,E[A+22|0]=g>>>16,E[A+23|0]=g>>>24,g=n[I+12>>2],B=n[I+8>>2],E[A+8|0]=B,E[A+9|0]=B>>>8,E[A+10|0]=B>>>16,E[A+11|0]=B>>>24,E[A+12|0]=g,E[A+13|0]=g>>>8,E[A+14|0]=g>>>16,E[A+15|0]=g>>>24,g=n[I+4>>2],B=n[I>>2],E[0|A]=B,E[A+1|0]=B>>>8,E[A+2|0]=B>>>16,E[A+3|0]=B>>>24,E[A+4|0]=g,E[A+5|0]=g>>>8,E[A+6|0]=g>>>16,E[A+7|0]=g>>>24,g=n[I+36>>2],B=n[I+32>>2],E[A+36|0]=B,E[A+37|0]=B>>>8,E[A+38|0]=B>>>16,E[A+39|0]=B>>>24,E[A+40|0]=g,E[A+41|0]=g>>>8,E[A+42|0]=g>>>16,E[A+43|0]=g>>>24,hg(A),D=I+48|0}function X(A,I,g){var B=0,C=0,Q=0,E=0,i=0,n=0,r=0,o=0,e=0,t=0,c=0,f=0,y=0,s=0,w=0,h=0,D=0,u=0,p=0,l=0,F=0;for(C=2036477234,Q=857760878,E=1634760805,i=1797285236,w=20,o=a[0|g]|a[g+1|0]<<8|a[g+2|0]<<16|a[g+3|0]<<24,s=a[g+4|0]|a[g+5|0]<<8|a[g+6|0]<<16|a[g+7|0]<<24,h=a[g+8|0]|a[g+9|0]<<8|a[g+10|0]<<16|a[g+11|0]<<24,f=a[g+12|0]|a[g+13|0]<<8|a[g+14|0]<<16|a[g+15|0]<<24,e=a[g+16|0]|a[g+17|0]<<8|a[g+18|0]<<16|a[g+19|0]<<24,n=a[g+20|0]|a[g+21|0]<<8|a[g+22|0]<<16|a[g+23|0]<<24,t=a[g+24|0]|a[g+25|0]<<8|a[g+26|0]<<16|a[g+27|0]<<24,c=a[g+28|0]|a[g+29|0]<<8|a[g+30|0]<<16|a[g+31|0]<<24,g=a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24,r=a[I+4|0]|a[I+5|0]<<8|a[I+6|0]<<16|a[I+7|0]<<24,B=a[I+8|0]|a[I+9|0]<<8|a[I+10|0]<<16|a[I+11|0]<<24,I=a[I+12|0]|a[I+13|0]<<8|a[I+14|0]<<16|a[I+15|0]<<24;D=B,B=gB(E+n|0,7)^f,y=D^gB(B+E|0,9),u=gB(B+y|0,13)^n,f=gB(y+u|0,18),I=gB(Q+o|0,7)^I,t=gB(I+Q|0,9)^t,o=gB(I+t|0,13)^o,l=gB(t+o|0,18),c=gB(g+C|0,7)^c,n=gB(c+C|0,9)^s,p=gB(n+c|0,13)^g,F=gB(n+p|0,18),g=gB(i+e|0,7)^h,r=gB(g+i|0,9)^r,e=gB(g+r|0,13)^e,D=gB(r+e|0,18),o=gB((E^=f)+g|0,7)^o,s=gB(o+E|0,9)^n,h=gB(o+s|0,13)^g,E=gB(s+h|0,18)^E,g=gB((Q^=l)+B|0,7)^p,r=gB(g+Q|0,9)^r,f=gB(g+r|0,13)^B,Q=gB(r+f|0,18)^Q,e=gB((C^=F)+I|0,7)^e,B=gB(e+C|0,9)^y,I=gB(B+e|0,13)^I,C=gB(I+B|0,18)^C,n=gB((i^=D)+c|0,7)^u,t=gB(n+i|0,9)^t,c=gB(n+t|0,13)^c,i=gB(t+c|0,18)^i,y=w>>>0>2,w=w+-2|0,y;);return fg(A,E),fg(A+4|0,Q),fg(A+8|0,C),fg(A+12|0,i),fg(A+16|0,g),fg(A+20|0,r),fg(A+24|0,B),fg(A+28|0,I),0}function V(A,I,g,B,C,Q,i){var r,o,e,t,c,f,y,s=0;return D=r=D-560|0,Ng(r+352|0,i),ig(r+288|0,Q,32,0),W(r+352|0,r+320|0,32,0),W(r+352|0,g,B,C),ag(r+352|0,r+224|0),o=a[(s=Q)+32|0]|a[s+33|0]<<8|a[s+34|0]<<16|a[s+35|0]<<24,e=a[s+36|0]|a[s+37|0]<<8|a[s+38|0]<<16|a[s+39|0]<<24,t=a[s+40|0]|a[s+41|0]<<8|a[s+42|0]<<16|a[s+43|0]<<24,c=a[s+44|0]|a[s+45|0]<<8|a[s+46|0]<<16|a[s+47|0]<<24,f=a[s+48|0]|a[s+49|0]<<8|a[s+50|0]<<16|a[s+51|0]<<24,Q=a[s+52|0]|a[s+53|0]<<8|a[s+54|0]<<16|a[s+55|0]<<24,y=a[s+60|0]|a[s+61|0]<<8|a[s+62|0]<<16|a[s+63|0]<<24,s=a[s+56|0]|a[s+57|0]<<8|a[s+58|0]<<16|a[s+59|0]<<24,E[A+56|0]=s,E[A+57|0]=s>>>8,E[A+58|0]=s>>>16,E[A+59|0]=s>>>24,E[A+60|0]=y,E[A+61|0]=y>>>8,E[A+62|0]=y>>>16,E[A+63|0]=y>>>24,E[A+48|0]=f,E[A+49|0]=f>>>8,E[A+50|0]=f>>>16,E[A+51|0]=f>>>24,E[A+52|0]=Q,E[A+53|0]=Q>>>8,E[A+54|0]=Q>>>16,E[A+55|0]=Q>>>24,E[A+40|0]=t,E[A+41|0]=t>>>8,E[A+42|0]=t>>>16,E[A+43|0]=t>>>24,E[A+44|0]=c,E[A+45|0]=c>>>8,E[A+46|0]=c>>>16,E[A+47|0]=c>>>24,E[0|(Q=A+32|0)]=o,E[Q+1|0]=o>>>8,E[Q+2|0]=o>>>16,E[Q+3|0]=o>>>24,E[Q+4|0]=e,E[Q+5|0]=e>>>8,E[Q+6|0]=e>>>16,E[Q+7|0]=e>>>24,k(r+224|0),tA(r,r+224|0),NI(A,r),Ng(r+352|0,i),W(r+352|0,A,64,0),W(r+352|0,g,B,C),ag(r+352|0,r+160|0),k(r+160|0),E[r+288|0]=248&a[r+288|0],E[r+319|0]=63&a[r+319|0]|64,function(A,I,g,B){var C,Q,i,n,r,o,e,t,c,f,y,s,w,h,D,u,p,F,G,k,_,H,Y,b,m,U,v,S,N,R,M,d,P,J,x,L,K,q,X,V,T,W,j,Z,O,z,$,AA,IA,gA=0,BA=0,CA=0,QA=0,EA=0,iA=0,nA=0,aA=0,rA=0,oA=0,eA=0,tA=0,cA=0,fA=0,yA=0,sA=0,wA=0,hA=0,DA=0,uA=0,pA=0,lA=0,FA=0,GA=0,kA=0,_A=0,HA=0,YA=0,bA=0,mA=0,UA=0,vA=0,SA=0,NA=0,RA=0,MA=0,dA=0,PA=0,JA=0,xA=0,LA=0,KA=0,qA=0,XA=0,VA=0,TA=0,WA=0,jA=0,ZA=0,OA=0,zA=0;JA=Cg(I),FA=a[I+2|0]|a[I+3|0]<<8|a[I+4|0]<<16|a[I+5|0]<<24,WA=Cg(I+5|0),HA=l,sA=a[I+7|0]|a[I+8|0]<<8|a[I+9|0]<<16|a[I+10|0]<<24,wA=a[I+10|0]|a[I+11|0]<<8|a[I+12|0]<<16|a[I+13|0]<<24,mA=Cg(I+13|0),yA=l,eA=a[I+15|0]|a[I+16|0]<<8|a[I+17|0]<<16|a[I+18|0]<<24,qA=Cg(I+18|0),cA=l,YA=Cg(I+21|0),nA=a[I+23|0]|a[I+24|0]<<8|a[I+25|0]<<16|a[I+26|0]<<24,rA=Cg(I+26|0),QA=l,gA=a[I+28|0]|a[I+29|0]<<8|a[I+30|0]<<16|a[I+31|0]<<24,RA=Cg(g),GA=a[(I=g)+2|0]|a[I+3|0]<<8|a[I+4|0]<<16|a[I+5|0]<<24,XA=Cg(I+5|0),oA=l,hA=a[I+7|0]|a[I+8|0]<<8|a[I+9|0]<<16|a[I+10|0]<<24,fA=a[I+10|0]|a[I+11|0]<<8|a[I+12|0]<<16|a[I+13|0]<<24,VA=Cg(I+13|0),tA=l,EA=a[I+15|0]|a[I+16|0]<<8|a[I+17|0]<<16|a[I+18|0]<<24,TA=Cg(I+18|0),CA=l,xA=Cg(I+21|0),BA=a[I+23|0]|a[I+24|0]<<8|a[I+25|0]<<16|a[I+26|0]<<24,iA=Cg(I+26|0),g=l,I=a[I+28|0]|a[I+29|0]<<8|a[I+30|0]<<16|a[I+31|0]<<24,Z=Cg(B),O=a[B+2|0]|a[B+3|0]<<8|a[B+4|0]<<16|a[B+5|0]<<24,z=Cg(B+5|0),$=l,MA=a[B+7|0]|a[B+8|0]<<8|a[B+9|0]<<16|a[B+10|0]<<24,LA=a[B+10|0]|a[B+11|0]<<8|a[B+12|0]<<16|a[B+13|0]<<24,KA=Cg(B+13|0),SA=l,UA=a[B+15|0]|a[B+16|0]<<8|a[B+17|0]<<16|a[B+18|0]<<24,jA=Cg(B+18|0),vA=l,kA=Cg(B+21|0),AA=A,I=xg(C=I>>>7|0,0,Q=2097151&((3&QA)<<30|rA>>>2),0),aA=l,QA=I,I=xg(i=2097151&((3&g)<<30|iA>>>2),0,n=gA>>>7|0,0),gA=l+aA|0,gA=(g=QA+I|0)>>>0<I>>>0?gA+1|0:gA,iA=g,I=xg(Q,0,i,0),QA=l,BA=(g=xg(r=BA>>>5&2097151,0,n,0))+I|0,I=l+QA|0,I=BA>>>0<g>>>0?I+1|0:I,g=BA,BA=xg(C,0,o=nA>>>5&2097151,0),I=l+I|0,aA=QA=g+BA|0,lA=I=QA>>>0<BA>>>0?I+1|0:I,DA=(I=QA)- -1048576|0,uA=BA=lA-((I>>>0<4293918720)+-1|0)|0,I=(g=BA>>21)+gA|0,rA=I=(QA=(BA=(2097151&BA)<<11|DA>>>21)+iA|0)>>>0<BA>>>0?I+1|0:I,_A=(I=BA=QA)- -1048576|0,iA=nA=rA-((I>>>0<4293918720)+-1|0)|0,QA=(I=QA=xg(C,0,n,0))-(nA=-2097152&(dA=I- -1048576|0))|0,I=((NA=l)-((I>>>0<nA>>>0)+(gA=bA=NA-((I>>>0<4293918720)+-1|0)|0)|0)|0)+(g=iA>>21)|0,d=I=(U=QA+((2097151&iA)<<11|_A>>>21)|0)>>>0<QA>>>0?I+1|0:I,nA=xg(U,I,-683901,-1),QA=l,P=g=gA>>21,I=xg(S=(2097151&gA)<<11|dA>>>21,g,136657,0),g=l+QA|0,bA=gA=I+nA|0,nA=gA>>>0<I>>>0?g+1|0:g,I=xg(e=2097151&((1&tA)<<31|VA>>>1),0,Q,0),gA=l,QA=(g=xg(t=fA>>>4&2097151,0,n,0))+I|0,I=l+gA|0,g=(gA=QA)>>>0<g>>>0?I+1|0:I,QA=(I=xg(c=EA>>>6&2097151,0,o,0))+gA|0,gA=l+g|0,gA=QA>>>0<I>>>0?gA+1|0:gA,g=QA,m=I=0,QA=(I=xg(f=2097151&xA,I,y=2097151&((7&cA)<<29|qA>>>3),0))+g|0,g=l+gA|0,g=QA>>>0<I>>>0?g+1|0:g,gA=xg(s=2097151&((7&CA)<<29|TA>>>3),0,w=2097151&YA,0),I=l+g|0,I=(QA=gA+QA|0)>>>0<gA>>>0?I+1|0:I,gA=QA,g=I,I=xg(r,0,h=eA>>>6&2097151,0),g=l+g|0,g=(gA=I+gA|0)>>>0<I>>>0?g+1|0:g,QA=(I=gA)+(gA=xg(i,0,D=2097151&((1&yA)<<31|mA>>>1),0))|0,I=l+g|0,I=QA>>>0<gA>>>0?I+1|0:I,gA=xg(C,0,u=wA>>>4&2097151,0),I=l+I|0,cA=QA=QA+gA|0,QA=QA>>>0<gA>>>0?I+1|0:I,I=xg(Q,0,t,0),g=l,gA=I,I=xg(p=hA>>>7&2097151,0,n,0),g=l+g|0,g=(gA=gA+I|0)>>>0<I>>>0?g+1|0:g,CA=(I=gA)+(gA=xg(o,0,e,0))|0,I=l+g|0,I=CA>>>0<gA>>>0?I+1|0:I,g=xg(c,0,w,0),I=l+I|0,I=(gA=g+CA|0)>>>0<g>>>0?I+1|0:I,CA=(g=xg(f,m,h,0))+gA|0,gA=l+I|0,gA=CA>>>0<g>>>0?gA+1|0:gA,I=xg(y,0,s,0),g=l+gA|0,g=(CA=I+CA|0)>>>0<I>>>0?g+1|0:g,I=xg(r,0,D,0),g=l+g|0,g=(gA=I+CA|0)>>>0<I>>>0?g+1|0:g,CA=(I=gA)+(gA=xg(i,0,u,0))|0,I=l+g|0,I=CA>>>0<gA>>>0?I+1|0:I,gA=xg(C,0,F=sA>>>7&2097151,0),I=l+I|0,fA=CA=CA+gA|0,EA=I=CA>>>0<gA>>>0?I+1|0:I,tA=(I=CA)- -1048576|0,CA=gA=EA-((I>>>0<4293918720)+-1|0)|0,I=(g=gA>>21)+QA|0,QA=I=(hA=(gA=(2097151&gA)<<11|tA>>>21)+cA|0)>>>0<gA>>>0?I+1|0:I,g=I+nA|0,(nA=(I=gA=hA)+bA|0)>>>0<I>>>0&&(g=g+1|0),I=nA,nA=QA-((gA>>>0<4293918720)+-1|0)|0,eA=I-(gA=-2097152&(yA=gA- -1048576|0))|0,cA=g-((I>>>0<gA>>>0)+(QA=nA)|0)|0,N=BA-(g=-2097152&_A)|0,J=I=rA-((BA>>>0<g>>>0)+iA|0)|0,gA=xg(S,P,-997805,-1),g=l+EA|0,g=(BA=gA+fA|0)>>>0<gA>>>0?g+1|0:g,gA=xg(U,d,136657,0),g=l+g|0,g=(BA=gA+BA|0)>>>0<gA>>>0?g+1|0:g,gA=xg(N,I,-683901,-1),I=l+g|0,I=(BA=gA+BA|0)>>>0<gA>>>0?I+1|0:I,nA=(gA=BA)-(g=-2097152&tA)|0,EA=I-((gA>>>0<g>>>0)+CA|0)|0,I=xg(Q,0,p,0),g=l,gA=I,I=xg(G=2097151&((3&oA)<<30|XA>>>2),0,n,0),g=l+g|0,g=(gA=gA+I|0)>>>0<I>>>0?g+1|0:g,BA=(I=gA)+(gA=xg(o,0,t,0))|0,I=l+g|0,I=BA>>>0<gA>>>0?I+1|0:I,gA=xg(e,0,w,0),g=l+I|0,g=(BA=gA+BA|0)>>>0<gA>>>0?g+1|0:g,gA=xg(c,0,y,0),I=l+g|0,I=(BA=gA+BA|0)>>>0<gA>>>0?I+1|0:I,g=xg(f,m,D,0),gA=l+I|0,gA=(BA=g+BA|0)>>>0<g>>>0?gA+1|0:gA,I=xg(s,0,h,0),g=l+gA|0,g=(BA=I+BA|0)>>>0<I>>>0?g+1|0:g,gA=xg(r,0,u,0),I=l+g|0,I=(BA=gA+BA|0)>>>0<gA>>>0?I+1|0:I,gA=xg(i,0,F,0),g=l+I|0,g=(BA=gA+BA|0)>>>0<gA>>>0?g+1|0:g,gA=xg(C,0,k=2097151&((3&HA)<<30|WA>>>2),0),I=l+g|0,CA=BA=gA+BA|0,BA=BA>>>0<gA>>>0?I+1|0:I,I=xg(Q,0,G,0),g=l,iA=(gA=I)+(I=xg(_=GA>>>5&2097151,0,n,0))|0,gA=l+g|0,gA=iA>>>0<I>>>0?gA+1|0:gA,I=xg(o,0,p,0),g=l+gA|0,g=(iA=I+iA|0)>>>0<I>>>0?g+1|0:g,gA=xg(t,0,w,0),I=l+g|0,I=(iA=gA+iA|0)>>>0<gA>>>0?I+1|0:I,gA=xg(e,0,y,0),g=l+I|0,g=(iA=gA+iA|0)>>>0<gA>>>0?g+1|0:g,gA=xg(c,0,h,0),I=l+g|0,I=(iA=gA+iA|0)>>>0<gA>>>0?I+1|0:I,g=xg(f,m,u,0),gA=l+I|0,gA=(iA=g+iA|0)>>>0<g>>>0?gA+1|0:gA,I=xg(s,0,D,0),g=l+gA|0,g=(iA=I+iA|0)>>>0<I>>>0?g+1|0:g,gA=xg(r,0,F,0),I=l+g|0,I=(iA=gA+iA|0)>>>0<gA>>>0?I+1|0:I,gA=xg(i,0,k,0),g=l+I|0,g=(iA=gA+iA|0)>>>0<gA>>>0?g+1|0:g,gA=xg(C,0,H=FA>>>5&2097151,0),I=l+g|0,hA=iA=gA+iA|0,XA=I=iA>>>0<gA>>>0?I+1|0:I,IA=(I=iA)- -1048576|0,VA=gA=XA-((I>>>0<4293918720)+-1|0)|0,g=(I=gA>>21)+BA|0,fA=CA=(gA=(2097151&gA)<<11|IA>>>21)+CA|0,TA=g=CA>>>0<gA>>>0?g+1|0:g,WA=(I=CA)- -1048576|0,xA=gA=g-((I>>>0<4293918720)+-1|0)|0,I=(I=gA>>21)+EA|0,tA=gA=(g=(2097151&gA)<<11|WA>>>21)+nA|0,NA=I=gA>>>0<g>>>0?I+1|0:I,mA=(I=gA)- -1048576|0,bA=gA=NA-((I>>>0<4293918720)+-1|0)|0,g=(I=gA>>21)+cA|0,nA=BA=(gA=(2097151&gA)<<11|mA>>>21)+eA|0,_A=g=BA>>>0<gA>>>0?g+1|0:g,FA=gA=g-(((I=BA)>>>0<4293918720)+-1|0)|0,rA=(2097151&gA)<<11|(YA=I- -1048576|0)>>>21,CA=gA>>21,g=xg(Q,0,c,0),I=l,gA=g,g=xg(n,0,e,0),I=l+I|0,I=(gA=gA+g|0)>>>0<g>>>0?I+1|0:I,BA=(g=xg(f,m,w,0))+gA|0,gA=l+I|0,gA=BA>>>0<g>>>0?gA+1|0:gA,I=xg(o,0,s,0),g=l+gA|0,g=(BA=I+BA|0)>>>0<I>>>0?g+1|0:g,I=xg(r,0,y,0),g=l+g|0,g=(gA=I+BA|0)>>>0<I>>>0?g+1|0:g,BA=(I=gA)+(gA=xg(i,0,h,0))|0,I=l+g|0,I=BA>>>0<gA>>>0?I+1|0:I,g=xg(C,0,D,0),I=l+I|0,I=(gA=g+BA|0)>>>0<g>>>0?I+1|0:I,BA=gA,EA=gA+(g=xg(S,P,-683901,-1))|0,gA=l+I|0,gA=EA>>>0<g>>>0?gA+1|0:gA,g=EA,EA=I,GA=(I=BA)- -1048576|0,EA=gA-((BA=EA=EA-((I>>>0<4293918720)+-1|0)|0)+((I=g)>>>0<(iA=-2097152&GA)>>>0)|0)|0,I=g=I-iA|0,g=QA>>21,QA=I+(gA=(2097151&QA)<<11|yA>>>21)|0,I=g+EA|0,I=QA>>>0<gA>>>0?I+1|0:I,gA=(g=QA)-(EA=-2097152&(oA=g- -1048576|0))|0,g=(I-((g>>>0<EA>>>0)+(QA=iA=I-((g>>>0<4293918720)+-1|0)|0)|0)|0)+CA|0,x=rA=gA+rA|0,L=g=rA>>>0<gA>>>0?g+1|0:g,iA=xg(rA,g,-683901,-1),EA=l,g=xg(o,0,f,m),I=l,gA=g,g=xg(n,0,c,0),I=l+I|0,I=(gA=gA+g|0)>>>0<g>>>0?I+1|0:I,CA=(g=xg(Q,0,s,0))+gA|0,gA=l+I|0,gA=CA>>>0<g>>>0?gA+1|0:gA,I=xg(r,0,w,0),g=l+gA|0,g=(CA=I+CA|0)>>>0<I>>>0?g+1|0:g,gA=xg(i,0,y,0),I=l+g|0,I=(CA=gA+CA|0)>>>0<gA>>>0?I+1|0:I,gA=xg(C,0,h,0),g=l+I|0,I=(I=g=(CA=gA+CA|0)>>>0<gA>>>0?g+1|0:g)+(g=BA>>21)|0,sA=CA=(I=(BA=CA+(gA=(2097151&BA)<<11|GA>>>21)|0)>>>0<gA>>>0?I+1|0:I)-(((g=BA)>>>0<4293918720)+-1|0)|0,gA=g-(BA=-2097152&(PA=g- -1048576|0))|0,g=(QA>>21)+(g=I-((g>>>0<BA>>>0)+CA|0)|0)|0,K=BA=(I=(2097151&QA)<<11|oA>>>21)+gA|0,q=g=BA>>>0<I>>>0?g+1|0:g,g=xg(BA,g,136657,0),I=l+EA|0,qA=gA=g+iA|0,wA=gA>>>0<g>>>0?I+1|0:I,I=xg(w,0,_,0),g=l,gA=I,I=xg(Y=2097151&RA,0,o,0),g=l+g|0,g=(gA=gA+I|0)>>>0<I>>>0?g+1|0:g,BA=(I=gA)+(gA=xg(y,0,G,0))|0,I=l+g|0,I=BA>>>0<gA>>>0?I+1|0:I,gA=xg(h,0,p,0),g=l+I|0,g=(BA=gA+BA|0)>>>0<gA>>>0?g+1|0:g,gA=xg(t,0,D,0),I=l+g|0,I=(BA=gA+BA|0)>>>0<gA>>>0?I+1|0:I,g=xg(e,0,u,0),gA=l+I|0,gA=(BA=g+BA|0)>>>0<g>>>0?gA+1|0:gA,I=xg(c,0,F,0),g=l+gA|0,g=(BA=I+BA|0)>>>0<I>>>0?g+1|0:g,gA=xg(f,m,H,0),I=l+g|0,I=(BA=gA+BA|0)>>>0<gA>>>0?I+1|0:I,gA=xg(s,0,k,0),g=l+I|0,g=(BA=gA+BA|0)>>>0<gA>>>0?g+1|0:g,gA=xg(r,0,b=2097151&JA,0),I=l+g|0,gA=(g=BA=gA+BA|0)>>>0<gA>>>0?I+1|0:I,(I=BA+(g=(a[B+23|0]|a[B+24|0]<<8|a[B+25|0]<<16|a[B+26|0]<<24)>>>5&2097151)|0)>>>0<g>>>0&&(gA=gA+1|0),QA=I,BA=gA,g=xg(y,0,_,0),I=l,gA=g,g=xg(w,0,Y,0),I=l+I|0,I=(gA=gA+g|0)>>>0<g>>>0?I+1|0:I,CA=(g=gA)+(gA=xg(h,0,G,0))|0,g=l+I|0,g=CA>>>0<gA>>>0?g+1|0:g,gA=xg(D,0,p,0),I=l+g|0,I=(CA=gA+CA|0)>>>0<gA>>>0?I+1|0:I,gA=xg(t,0,u,0),g=l+I|0,g=(CA=gA+CA|0)>>>0<gA>>>0?g+1|0:g,I=xg(e,0,F,0),gA=l+g|0,gA=(CA=I+CA|0)>>>0<I>>>0?gA+1|0:gA,g=xg(c,0,k,0),I=l+gA|0,I=(CA=g+CA|0)>>>0<g>>>0?I+1|0:I,gA=xg(f,m,b,0),g=l+I|0,g=(CA=gA+CA|0)>>>0<gA>>>0?g+1|0:g,gA=xg(s,0,H,0),I=l+g|0,I=(CA=gA+CA|0)>>>0<gA>>>0?I+1|0:I,EA=CA=(gA=2097151&kA)+CA|0,yA=g=CA>>>0<gA>>>0?I+1|0:I,HA=(I=CA)- -1048576|0,eA=gA=g-((I>>>0<4293918720)+-1|0)|0,g=(I=gA>>21)+BA|0,oA=g=(CA=QA=(gA=(2097151&gA)<<11|HA>>>21)+QA|0)>>>0<gA>>>0?g+1|0:g,RA=aA-(I=-2097152&DA)|0,kA=lA-((aA>>>0<I>>>0)+uA|0)|0,I=xg(Q,0,r,0),g=l,gA=I,I=xg(n,0,f,m),g=l+g|0,g=(gA=gA+I|0)>>>0<I>>>0?g+1|0:g,BA=(I=gA)+(gA=xg(i,0,o,0))|0,I=l+g|0,I=BA>>>0<gA>>>0?I+1|0:I,gA=xg(C,0,w,0),g=l+I|0,aA=BA=gA+BA|0,BA=BA>>>0<gA>>>0?g+1|0:g,I=xg(n,0,s,0),g=l,QA=(gA=I)+(I=xg(Q,0,f,m))|0,gA=l+g|0,gA=QA>>>0<I>>>0?gA+1|0:gA,g=xg(o,0,r,0),I=l+gA|0,I=(QA=g+QA|0)>>>0<g>>>0?I+1|0:I,gA=xg(i,0,w,0),g=l+I|0,g=(QA=gA+QA|0)>>>0<gA>>>0?g+1|0:g,gA=xg(C,0,y,0),I=l+g|0,iA=gA=(rA=I=(QA=gA+QA|0)>>>0<gA>>>0?I+1|0:I)-(((I=QA)>>>0<4293918720)+-1|0)|0,I=(2097151&gA)<<11|(lA=I- -1048576|0)>>>21,gA=(gA>>21)+BA|0,aA=gA=(BA=aA=I+aA|0)>>>0<I>>>0?gA+1|0:gA,uA=(I=BA)- -1048576|0,I=(g=(gA=DA=gA-((I>>>0<4293918720)+-1|0)|0)>>21)+kA|0,X=I=(v=RA=(DA=(2097151&gA)<<11|uA>>>21)+RA|0)>>>0<DA>>>0?I+1|0:I,kA=xg(v,I,470296,0),DA=l,R=BA-(g=-2097152&uA)|0,dA=I=aA-((BA>>>0<g>>>0)+gA|0)|0,gA=xg(N,J,666643,0),g=l+DA|0,g=(BA=gA+kA|0)>>>0<gA>>>0?g+1|0:g,gA=xg(R,I,654183,0),I=l+g|0,aA=BA=gA+BA|0,gA=BA>>>0<gA>>>0?I+1|0:I,I=QA-(g=-2097152&lA)|0,g=(sA>>21)+(QA=rA-((QA>>>0<g>>>0)+iA|0)|0)|0,V=iA=(BA=(2097151&sA)<<11|PA>>>21)+I|0,JA=g=iA>>>0<BA>>>0?g+1|0:g,ZA=CA- -1048576|0,BA=I=oA-((CA>>>0<4293918720)+-1|0)|0,g=xg(iA,g,-997805,-1),gA=l+gA|0,g=(gA=(QA=g+aA|0)>>>0<g>>>0?gA+1|0:gA)+oA|0,kA=(CA=QA+CA|0)-(gA=-2097152&ZA)|0,DA=(g=CA>>>0<QA>>>0?g+1|0:g)-((CA>>>0<gA>>>0)+I|0)|0,I=xg(R,dA,470296,0),g=l,gA=I,I=xg(v,X,666643,0),g=l+g|0,g=(gA=gA+I|0)>>>0<I>>>0?g+1|0:g,I=xg(iA,JA,654183,0),g=l+g|0,I=(g=(gA=I+gA|0)>>>0<I>>>0?g+1|0:g)+yA|0,oA=(gA=gA+EA|0)-(g=-2097152&HA)|0,EA=(I=gA>>>0<EA>>>0?I+1|0:I)-((gA>>>0<g>>>0)+eA|0)|0,g=xg(h,0,_,0),I=l,gA=g,g=xg(y,0,Y,0),I=l+I|0,I=(gA=gA+g|0)>>>0<g>>>0?I+1|0:I,QA=(g=gA)+(gA=xg(D,0,G,0))|0,g=l+I|0,g=QA>>>0<gA>>>0?g+1|0:g,gA=xg(u,0,p,0),I=l+g|0,I=(QA=gA+QA|0)>>>0<gA>>>0?I+1|0:I,gA=xg(t,0,F,0),g=l+I|0,g=(QA=gA+QA|0)>>>0<gA>>>0?g+1|0:g,I=xg(e,0,k,0),gA=l+g|0,gA=(QA=I+QA|0)>>>0<I>>>0?gA+1|0:gA,g=xg(c,0,H,0),I=l+gA|0,I=(QA=g+QA|0)>>>0<g>>>0?I+1|0:I,gA=xg(s,0,b,0),g=l+I|0,I=g=(QA=gA+QA|0)>>>0<gA>>>0?g+1|0:g,(g=QA+(gA=2097151&((7&vA)<<29|jA>>>3))|0)>>>0<gA>>>0&&(I=I+1|0),CA=g,QA=I,I=xg(D,0,_,0),g=l,gA=I,I=xg(h,0,Y,0),g=l+g|0,g=(gA=gA+I|0)>>>0<I>>>0?g+1|0:g,I=xg(u,0,G,0),g=l+g|0,g=(gA=I+gA|0)>>>0<I>>>0?g+1|0:g,aA=(I=xg(F,0,p,0))+gA|0,gA=l+g|0,gA=aA>>>0<I>>>0?gA+1|0:gA,g=xg(t,0,k,0),I=l+gA|0,I=(aA=g+aA|0)>>>0<g>>>0?I+1|0:I,g=xg(e,0,H,0),I=l+I|0,I=(gA=g+aA|0)>>>0<g>>>0?I+1|0:I,aA=(g=gA)+(gA=xg(c,0,b,0))|0,g=l+I|0,g=aA>>>0<gA>>>0?g+1|0:g,(I=(gA=UA>>>6&2097151)+aA|0)>>>0<gA>>>0&&(g=g+1|0),lA=I,rA=g,uA=I- -1048576|0,cA=gA=g-((I>>>0<4293918720)+-1|0)|0,g=(I=gA>>21)+QA|0,iA=g=(CA=(gA=(2097151&gA)<<11|uA>>>21)+CA|0)>>>0<gA>>>0?g+1|0:g,sA=(I=CA)- -1048576|0,aA=gA=g-((I>>>0<4293918720)+-1|0)|0,g=(I=gA>>21)+EA|0,yA=QA=(gA=(2097151&gA)<<11|sA>>>21)+oA|0,EA=g=QA>>>0<gA>>>0?g+1|0:g,eA=(I=QA)- -1048576|0,GA=gA=g-((I>>>0<4293918720)+-1|0)|0,g=(I=gA>>21)+DA|0,g=(QA=(gA=(2097151&gA)<<11|eA>>>21)+kA|0)>>>0<gA>>>0?g+1|0:g,gA=QA,QA=g,I=g+wA|0,(oA=(g=gA)+qA|0)>>>0<g>>>0&&(I=I+1|0),g=oA,oA=QA-((gA>>>0<4293918720)+-1|0)|0,zA=g-(gA=-2097152&(OA=gA- -1048576|0))|0,pA=I-((g>>>0<gA>>>0)+(QA=oA)|0)|0,g=xg(K,q,-997805,-1),I=l+EA|0,PA=gA=g+yA|0,oA=gA>>>0<g>>>0?I+1|0:I,g=xg(V,JA,470296,0),I=l,gA=g,g=xg(R,dA,666643,0),I=l+I|0,g=(I=(gA=gA+g|0)>>>0<g>>>0?I+1|0:I)+iA|0,sA=(gA=gA+CA|0)-(I=-2097152&sA)|0,wA=(g=gA>>>0<CA>>>0?g+1|0:g)-((gA>>>0<I>>>0)+aA|0)|0,I=xg(V,JA,666643,0),gA=l+rA|0,yA=g=I+lA|0,EA=g>>>0<I>>>0?gA+1|0:gA,g=xg(u,0,_,0),I=l,gA=g,g=xg(D,0,Y,0),I=l+I|0,I=(gA=gA+g|0)>>>0<g>>>0?I+1|0:I,CA=(g=gA)+(gA=xg(F,0,G,0))|0,g=l+I|0,g=CA>>>0<gA>>>0?g+1|0:g,gA=xg(k,0,p,0),I=l+g|0,I=(CA=gA+CA|0)>>>0<gA>>>0?I+1|0:I,gA=xg(t,0,H,0),g=l+I|0,g=(CA=gA+CA|0)>>>0<gA>>>0?g+1|0:g,I=xg(e,0,b,0),gA=l+g|0,I=(g=CA=I+CA|0)>>>0<I>>>0?gA+1|0:gA,(g=(gA=2097151&((1&SA)<<31|KA>>>1))+g|0)>>>0<gA>>>0&&(I=I+1|0),aA=g,CA=I,I=xg(F,0,_,0),g=l,gA=I,I=xg(u,0,Y,0),g=l+g|0,g=(gA=gA+I|0)>>>0<I>>>0?g+1|0:g,iA=(I=xg(k,0,G,0))+gA|0,gA=l+g|0,gA=iA>>>0<I>>>0?gA+1|0:gA,g=xg(H,0,p,0),I=l+gA|0,I=(iA=g+iA|0)>>>0<g>>>0?I+1|0:I,gA=xg(t,0,b,0),g=l+I|0,I=g=(iA=gA+iA|0)>>>0<gA>>>0?g+1|0:g,(g=iA+(gA=LA>>>4&2097151)|0)>>>0<gA>>>0&&(I=I+1|0),rA=g,HA=I,jA=(I=g)- -1048576|0,LA=gA=HA-((I>>>0<4293918720)+-1|0)|0,g=(I=gA>>21)+CA|0,SA=g=(iA=aA=(gA=(2097151&gA)<<11|jA>>>21)+aA|0)>>>0<gA>>>0?g+1|0:g,qA=(I=iA)- -1048576|0,UA=gA=g-((I>>>0<4293918720)+-1|0)|0,I=(I=gA>>21)+EA|0,I=(gA=(g=(2097151&gA)<<11|qA>>>21)+yA|0)>>>0<g>>>0?I+1|0:I,g=gA,vA=(gA=I)-((g>>>0<(I=-2097152&uA)>>>0)+cA|0)|0,RA=(I=aA=g-I|0)- -1048576|0,lA=g=vA-((I>>>0<4293918720)+-1|0)|0,I=(gA=g>>21)+wA|0,kA=CA=(g=(2097151&g)<<11|RA>>>21)+sA|0,uA=I=CA>>>0<g>>>0?I+1|0:I,DA=(I=CA)- -1048576|0,sA=g=uA-((I>>>0<4293918720)+-1|0)|0,M=nA-(I=-2097152&YA)|0,KA=CA=_A-((nA>>>0<I>>>0)+FA|0)|0,I=(2097151&g)<<11|DA>>>21,g=(g>>21)+oA|0,g=(EA=I+PA|0)>>>0<I>>>0?g+1|0:g,nA=(gA=xg(x,L,136657,0))+(EA-(I=-2097152&eA)|0)|0,I=l+(g-((EA>>>0<I>>>0)+GA|0)|0)|0,I=nA>>>0<gA>>>0?I+1|0:I,gA=xg(M,CA,-683901,-1),g=l+I|0,nA=CA=gA+nA|0,wA=g=CA>>>0<gA>>>0?g+1|0:g,YA=(I=CA)- -1048576|0,yA=g=g-((I>>>0<4293918720)+-1|0)|0,I=(gA=g>>21)+pA|0,EA=CA=(g=(2097151&g)<<11|YA>>>21)+zA|0,cA=g=(eA=I=CA>>>0<g>>>0?I+1|0:I)-(((I=CA)>>>0<4293918720)+-1|0)|0,PA=(2097151&g)<<11|(_A=I- -1048576|0)>>>21,GA=g>>21,I=xg(o,0,_,0),g=l,gA=I,I=xg(Q,0,Y,0),g=l+g|0,g=(gA=gA+I|0)>>>0<I>>>0?g+1|0:g,I=xg(w,0,G,0),g=l+g|0,g=(gA=I+gA|0)>>>0<I>>>0?g+1|0:g,CA=(I=gA)+(gA=xg(y,0,p,0))|0,I=l+g|0,I=CA>>>0<gA>>>0?I+1|0:I,g=xg(t,0,h,0),I=l+I|0,I=(gA=g+CA|0)>>>0<g>>>0?I+1|0:I,CA=(g=xg(e,0,D,0))+gA|0,gA=l+I|0,gA=CA>>>0<g>>>0?gA+1|0:gA,I=xg(c,0,u,0),g=l+gA|0,g=(CA=I+CA|0)>>>0<I>>>0?g+1|0:g,I=xg(f,m,k,0),g=l+g|0,g=(gA=I+CA|0)>>>0<I>>>0?g+1|0:g,CA=(I=gA)+(gA=xg(s,0,F,0))|0,I=l+g|0,I=CA>>>0<gA>>>0?I+1|0:I,g=xg(r,0,H,0),I=l+I|0,I=(gA=g+CA|0)>>>0<g>>>0?I+1|0:I,CA=(g=xg(i,0,b,0))+gA|0,gA=l+I|0,g=(I=CA)>>>0<g>>>0?gA+1|0:gA,I=Cg(B+26|0),(I=CA+(gA=2097151&((3&(gA=l))<<30|I>>>2))|0)>>>0<gA>>>0&&(g=g+1|0),FA=I,CA=g,I=xg(N,J,470296,0),g=l,gA=I,I=xg(U,d,666643,0),g=l+g|0,g=(gA=gA+I|0)>>>0<I>>>0?g+1|0:g,pA=(I=gA)+(gA=xg(v,X,654183,0))|0,I=l+g|0,I=pA>>>0<gA>>>0?I+1|0:I,g=xg(R,dA,-997805,-1),gA=l+I|0,gA=(pA=g+pA|0)>>>0<g>>>0?gA+1|0:gA,g=xg(V,JA,136657,0),I=l+gA|0,g=(I=(pA=g+pA|0)>>>0<g>>>0?I+1|0:I)+CA|0,T=(I=FA)- -1048576|0,CA=oA=CA-((I>>>0<4293918720)+-1|0)|0,g=(g=(pA=(gA=pA)+FA|0)>>>0<gA>>>0?g+1|0:g)+(gA=BA>>21)|0,g=(BA=pA+(I=(2097151&BA)<<11|ZA>>>21)|0)>>>0<I>>>0?g+1|0:g,I=(FA=BA)-(BA=-2097152&T)|0,gA=xg(K,q,-683901,-1),g=(BA=g-((FA>>>0<BA>>>0)+CA|0)|0)+l|0,W=I- -1048576|0,oA=BA-((I>>>0<4293918720)+-1|0)|0,g=(g=(pA=I+gA|0)>>>0<gA>>>0?g+1|0:g)+(gA=QA>>21)|0,g=(oA=(g=(QA=pA+(I=(2097151&QA)<<11|OA>>>21)|0)>>>0<I>>>0?g+1|0:g)-((QA>>>0<(gA=-2097152&W)>>>0)+(BA=oA)|0)|0)+GA|0,(QA=(I=QA-gA|0)+PA|0)>>>0<I>>>0&&(g=g+1|0),j=I- -1048576|0,oA=oA-((I>>>0<4293918720)+-1|0)|0,ZA=(I=gA=QA)-(gA=-2097152&j)|0,OA=g-((I>>>0<gA>>>0)+(QA=oA)|0)|0,zA=EA-(I=-2097152&_A)|0,pA=eA-((EA>>>0<I>>>0)+cA|0)|0,PA=nA-(I=-2097152&YA)|0,YA=wA-((nA>>>0<I>>>0)+yA|0)|0,g=xg(K,q,654183,0),I=l+uA|0,I=(gA=g+kA|0)>>>0<g>>>0?I+1|0:I,nA=(g=xg(x,L,-997805,-1))+((EA=gA)-(gA=-2097152&DA)|0)|0,gA=l+(I-((EA>>>0<gA>>>0)+sA|0)|0)|0,I=xg(M,KA,136657,0),g=l+(nA>>>0<g>>>0?gA+1|0:gA)|0,_A=EA=I+nA|0,nA=EA>>>0<I>>>0?g+1|0:g,FA=tA-(I=-2097152&mA)|0,wA=NA-((tA>>>0<I>>>0)+bA|0)|0,g=xg(U,d,-997805,-1),I=l,gA=g,g=xg(S,P,654183,0),I=l+I|0,I=(gA=gA+g|0)>>>0<g>>>0?I+1|0:I,EA=(g=xg(N,J,136657,0))+gA|0,gA=l+I|0,gA=EA>>>0<g>>>0?gA+1|0:gA,I=xg(v,X,-683901,-1),g=l+gA|0,g=(g=(EA=I+EA|0)>>>0<I>>>0?g+1|0:g)+TA|0,g=(I=EA+fA|0)>>>0<fA>>>0?g+1|0:g,yA=(gA=I)-(I=-2097152&WA)|0,eA=g-((gA>>>0<I>>>0)+xA|0)|0,g=xg(U,d,654183,0),I=l,gA=g,g=xg(S,P,470296,0),I=l+I|0,I=(gA=gA+g|0)>>>0<g>>>0?I+1|0:I,EA=(g=gA)+(gA=xg(N,J,-997805,-1))|0,g=l+I|0,g=XA+(EA>>>0<gA>>>0?g+1|0:g)|0,g=(I=EA+hA|0)>>>0<hA>>>0?g+1|0:g,EA=(gA=I)+(I=xg(v,X,136657,0))|0,gA=l+g|0,gA=EA>>>0<I>>>0?gA+1|0:gA,g=xg(R,dA,-683901,-1),I=l+gA|0,I=(EA=g+EA|0)>>>0<g>>>0?I+1|0:I,fA=(gA=EA)-(g=-2097152&IA)|0,tA=I-((gA>>>0<g>>>0)+VA|0)|0,I=xg(Q,0,_,0),g=l,gA=I,I=xg(n,0,Y,0),g=l+g|0,g=(gA=gA+I|0)>>>0<I>>>0?g+1|0:g,EA=(I=xg(o,0,G,0))+gA|0,gA=l+g|0,gA=EA>>>0<I>>>0?gA+1|0:gA,g=xg(w,0,p,0),I=l+gA|0,I=(EA=g+EA|0)>>>0<g>>>0?I+1|0:I,gA=xg(t,0,y,0),g=l+I|0,g=(EA=gA+EA|0)>>>0<gA>>>0?g+1|0:g,gA=xg(e,0,h,0),I=l+g|0,I=(EA=gA+EA|0)>>>0<gA>>>0?I+1|0:I,gA=xg(c,0,D,0),g=l+I|0,g=(EA=gA+EA|0)>>>0<gA>>>0?g+1|0:g,I=xg(f,m,F,0),gA=l+g|0,gA=(EA=I+EA|0)>>>0<I>>>0?gA+1|0:gA,g=xg(s,0,u,0),I=l+gA|0,I=(EA=g+EA|0)>>>0<g>>>0?I+1|0:I,gA=xg(r,0,k,0),g=l+I|0,g=(EA=gA+EA|0)>>>0<gA>>>0?g+1|0:g,gA=xg(C,0,b,0),I=l+g|0,I=(EA=gA+EA|0)>>>0<gA>>>0?I+1|0:I,gA=xg(i,0,H,0),g=l+I|0,gA=(I=EA=gA+EA|0)>>>0<gA>>>0?g+1|0:g,(I=(g=(a[B+28|0]|a[B+29|0]<<8|a[B+30|0]<<16|a[B+31|0]<<24)>>>7|0)+I|0)>>>0<g>>>0&&(gA=gA+1|0),g=CA>>21,CA=(B=(2097151&CA)<<11|T>>>21)+I|0,I=g+gA|0,EA=CA,GA=B=(cA=I=CA>>>0<B>>>0?I+1|0:I)-(((I=CA)>>>0<4293918720)+-1|0)|0,g=(g=B>>21)+tA|0,CA=B=(I=(2097151&B)<<11|(uA=I- -1048576|0)>>>21)+fA|0,oA=g=B>>>0<I>>>0?g+1|0:g,sA=(I=B)- -1048576|0,hA=B=g-((I>>>0<4293918720)+-1|0)|0,I=(g=B>>21)+eA|0,I=(gA=(B=(2097151&B)<<11|sA>>>21)+yA|0)>>>0<B>>>0?I+1|0:I,B=gA,tA=gA=(fA=I)-(((I=gA)>>>0<4293918720)+-1|0)|0,g=(g=gA>>21)+wA|0,mA=gA=(I=(2097151&gA)<<11|(eA=I- -1048576|0)>>>21)+FA|0,bA=g=gA>>>0<I>>>0?g+1|0:g,I=xg(gA,g,-683901,-1),gA=l+nA|0,yA=g=I+_A|0,nA=g>>>0<I>>>0?gA+1|0:gA,kA=B-(I=-2097152&eA)|0,_A=tA=fA-((B>>>0<I>>>0)+tA|0)|0,g=xg(K,q,470296,0)+aA|0,I=vA+l|0,I=g>>>0<aA>>>0?I+1|0:I,aA=(B=xg(x,L,654183,0))+((gA=g)-(g=-2097152&RA)|0)|0,g=l+(I-((gA>>>0<g>>>0)+lA|0)|0)|0,g=aA>>>0<B>>>0?g+1|0:g,I=xg(M,KA,-997805,-1),gA=l+g|0,gA=(B=I+aA|0)>>>0<I>>>0?gA+1|0:gA,g=xg(mA,bA,136657,0),I=l+gA|0,I=(B=g+B|0)>>>0<g>>>0?I+1|0:I,g=xg(kA,tA,-683901,-1),I=l+I|0,fA=I=(gA=B=g+B|0)>>>0<g>>>0?I+1|0:I,wA=(I=gA)- -1048576|0,tA=B=fA-((I>>>0<4293918720)+-1|0)|0,I=(g=B>>21)+nA|0,I=(aA=(B=(2097151&B)<<11|wA>>>21)+yA|0)>>>0<B>>>0?I+1|0:I,B=aA,aA=I,eA=(I=B)- -1048576|0,I=(g=(nA=yA=aA-((I>>>0<4293918720)+-1|0)|0)>>21)+YA|0,YA=lA=(yA=(2097151&nA)<<11|eA>>>21)+PA|0,yA=lA>>>0<yA>>>0?I+1|0:I,XA=B-(I=-2097152&eA)|0,VA=aA-((B>>>0<I>>>0)+nA|0)|0,xA=gA-(I=-2097152&wA)|0,NA=fA-((gA>>>0<I>>>0)+tA|0)|0,B=(I=xg(K,q,666643,0))+(iA-(g=-2097152&qA)|0)|0,g=l+(SA-((iA>>>0<g>>>0)+UA|0)|0)|0,g=B>>>0<I>>>0?g+1|0:g,gA=(I=B)+(B=xg(x,L,470296,0))|0,I=l+g|0,I=gA>>>0<B>>>0?I+1|0:I,g=xg(M,KA,654183,0),I=l+I|0,tA=B=g+gA|0,B=B>>>0<g>>>0?I+1|0:I,iA=CA-(I=-2097152&sA)|0,nA=oA-((CA>>>0<I>>>0)+hA|0)|0,I=xg(U,d,470296,0),g=l,gA=I,I=xg(S,P,666643,0),g=l+g|0,g=(gA=gA+I|0)>>>0<I>>>0?g+1|0:g,CA=(I=gA)+(gA=xg(N,J,654183,0))|0,I=l+g|0,I=CA>>>0<gA>>>0?I+1|0:I,g=xg(v,X,-997805,-1),I=l+I|0,I=(gA=g+CA|0)>>>0<g>>>0?I+1|0:I,CA=(g=gA)+(gA=xg(R,dA,136657,0))|0,g=l+I|0,g=CA>>>0<gA>>>0?g+1|0:g,I=xg(V,JA,-683901,-1),gA=l+g|0,g=(gA=(CA=I+CA|0)>>>0<I>>>0?gA+1|0:gA)+cA|0,g=(I=CA+EA|0)>>>0<EA>>>0?g+1|0:g,CA=I,I=I-(gA=-2097152&uA)|0,CA=g-((CA>>>0<gA>>>0)+GA|0)|0,g=BA>>21,BA=(gA=(2097151&BA)<<11|W>>>21)+I|0,I=g+CA|0,aA=BA,hA=gA=(oA=I=BA>>>0<gA>>>0?I+1|0:I)-(((I=BA)>>>0<4293918720)+-1|0)|0,g=(g=gA>>21)+nA|0,DA=gA=(I=(2097151&gA)<<11|(vA=I- -1048576|0)>>>21)+iA|0,FA=g=gA>>>0<I>>>0?g+1|0:g,g=xg(gA,g,-683901,-1),I=l+B|0,I=(gA=g+tA|0)>>>0<g>>>0?I+1|0:I,g=xg(mA,bA,-997805,-1),I=l+I|0,I=(B=g+gA|0)>>>0<g>>>0?I+1|0:I,g=xg(kA,_A,136657,0),gA=l+I|0,iA=B=g+B|0,CA=B>>>0<g>>>0?gA+1|0:gA,I=xg(k,0,_,0),g=l,B=I,I=xg(F,0,Y,0),g=l+g|0,g=(B=B+I|0)>>>0<I>>>0?g+1|0:g,I=xg(H,0,G,0),g=l+g|0,g=(B=I+B|0)>>>0<I>>>0?g+1|0:g,gA=(I=B)+(B=xg(b,0,p,0))|0,I=l+g|0,I=gA>>>0<B>>>0?I+1|0:I,(g=(B=MA>>>7&2097151)+gA|0)>>>0<B>>>0&&(I=I+1|0),EA=g,B=I,I=xg(H,0,_,0),g=l,BA=(gA=I)+(I=xg(k,0,Y,0))|0,gA=l+g|0,gA=BA>>>0<I>>>0?gA+1|0:gA,g=xg(b,0,G,0),I=l+gA|0,g=(gA=BA=g+BA|0)>>>0<g>>>0?I+1|0:I,(I=BA+(gA=2097151&((3&$)<<30|z>>>2))|0)>>>0<gA>>>0&&(g=g+1|0),nA=I,BA=g,UA=I- -1048576|0,eA=g=g-((I>>>0<4293918720)+-1|0)|0,I=B+(gA=g>>>21|0)|0,fA=g=(cA=I=(EA=(g=(2097151&g)<<11|UA>>>21)+EA|0)>>>0<g>>>0?I+1|0:I)-(((I=EA)>>>0<4293918720)+-1|0)|0,I=rA+((2097151&g)<<11|(lA=I- -1048576|0)>>>21)|0,g=HA+(g>>21)|0,g=I>>>0<rA>>>0?g+1|0:g,rA=(B=xg(x,L,666643,0))+((gA=I)-(I=-2097152&jA)|0)|0,I=l+(g-((gA>>>0<I>>>0)+LA|0)|0)|0,I=rA>>>0<B>>>0?I+1|0:I,g=xg(M,KA,470296,0),gA=l+I|0,gA=(B=g+rA|0)>>>0<g>>>0?gA+1|0:gA,I=xg(DA,FA,136657,0),g=l+gA|0,g=(B=I+B|0)>>>0<I>>>0?g+1|0:g,gA=(I=B)+(B=xg(mA,bA,654183,0))|0,I=l+g|0,I=gA>>>0<B>>>0?I+1|0:I,B=xg(kA,_A,-997805,-1),g=l+I|0,uA=gA=B+gA|0,tA=g=gA>>>0<B>>>0?g+1|0:g,sA=(I=gA)- -1048576|0,rA=B=g-((I>>>0<4293918720)+-1|0)|0,gA=(I=B>>21)+CA|0,CA=B=(g=(2097151&B)<<11|sA>>>21)+iA|0,B=gA=B>>>0<g>>>0?gA+1|0:gA,wA=(I=CA)- -1048576|0,iA=gA=gA-((I>>>0<4293918720)+-1|0)|0,g=(I=gA>>21)+NA|0,TA=GA=(gA=(2097151&gA)<<11|wA>>>21)+xA|0,GA=GA>>>0<gA>>>0?g+1|0:g,I=aA-(g=-2097152&vA)|0,gA=oA-((aA>>>0<g>>>0)+hA|0)|0,gA=(g=QA>>21)+gA|0,oA=gA=(QA=(aA=I)+(I=(2097151&QA)<<11|j>>>21)|0)>>>0<I>>>0?gA+1|0:gA,hA=gA=gA-(((I=QA)>>>0<4293918720)+-1|0)|0,SA=g=gA>>21,I=xg(MA=(2097151&gA)<<11|(vA=I- -1048576|0)>>>21,g,-683901,-1),g=l+B|0,g=(gA=I+CA|0)>>>0<I>>>0?g+1|0:g,xA=gA-(I=-2097152&wA)|0,NA=g-((gA>>>0<I>>>0)+iA|0)|0,I=xg(MA,SA,136657,0),gA=l+tA|0,gA=(g=I+uA|0)>>>0<I>>>0?gA+1|0:gA,HA=g-(I=-2097152&sA)|0,LA=gA-((g>>>0<I>>>0)+rA|0)|0,B=(g=xg(M,KA,666643,0))+(EA-(I=-2097152&lA)|0)|0,I=l+(cA-((EA>>>0<I>>>0)+fA|0)|0)|0,I=B>>>0<g>>>0?I+1|0:I,g=xg(DA,FA,-997805,-1),I=l+I|0,I=(B=g+B|0)>>>0<g>>>0?I+1|0:I,gA=(g=B)+(B=xg(mA,bA,470296,0))|0,g=l+I|0,g=gA>>>0<B>>>0?g+1|0:g,B=(I=xg(kA,_A,654183,0))+gA|0,gA=l+g|0,cA=B,iA=B>>>0<I>>>0?gA+1|0:gA,CA=BA,I=xg(b,0,_,0),g=l,B=I,I=xg(H,0,Y,0),g=l+g|0,I=g=(B=B+I|0)>>>0<I>>>0?g+1|0:g,(g=(g=B)+(B=O>>>5&2097151)|0)>>>0<B>>>0&&(I=I+1|0),EA=g,B=I,g=2097151&Z,gA=xg(b,0,Y,0)+g|0,I=l,BA=gA,tA=gA=(fA=I=gA>>>0<g>>>0?I+1|0:I)-(((I=gA)>>>0<4293918720)+-1|0)|0,I=(2097151&gA)<<11|(lA=I- -1048576|0)>>>21,gA=(gA>>>21|0)+B|0,rA=gA=(B=EA=I+EA|0)>>>0<I>>>0?gA+1|0:gA,uA=(I=B)- -1048576|0,aA=gA=gA-((I>>>0<4293918720)+-1|0)|0,I=(g=gA>>>21|0)+CA|0,I=(EA=(gA=(2097151&gA)<<11|uA>>>21)+nA|0)>>>0<gA>>>0?I+1|0:I,EA=(g=xg(DA,FA,654183,0))+((CA=EA)-(gA=-2097152&UA)|0)|0,gA=l+(I-((16383&eA)+(CA>>>0<gA>>>0)|0)|0)|0,I=xg(mA,bA,666643,0),g=l+(EA>>>0<g>>>0?gA+1|0:gA)|0,g=(CA=I+EA|0)>>>0<I>>>0?g+1|0:g,gA=xg(kA,_A,470296,0),I=l+g|0,sA=CA=gA+CA|0,EA=gA=(nA=I=CA>>>0<gA>>>0?I+1|0:I)-(((I=CA)>>>0<4293918720)+-1|0)|0,g=(g=gA>>21)+iA|0,eA=gA=(I=(2097151&gA)<<11|(wA=I- -1048576|0)>>>21)+cA|0,CA=g=gA>>>0<I>>>0?g+1|0:g;cA=(I=gA)- -1048576|0,I=(g=(gA=iA=g-((I>>>0<4293918720)+-1|0)|0)>>21)+LA|0,iA=(HA=UA=(iA=(2097151&gA)<<11|cA>>>21)+HA|0)>>>0<iA>>>0?I+1|0:I,g=xg(MA,SA,-997805,-1),I=l+CA|0,I=(eA=g+eA|0)>>>0<g>>>0?I+1|0:I,LA=(CA=eA)-(g=-2097152&cA)|0,UA=I-((CA>>>0<g>>>0)+gA|0)|0,I=xg(MA,SA,654183,0),gA=l+nA|0,gA=(g=I+sA|0)>>>0<I>>>0?gA+1|0:gA,eA=g-(I=-2097152&wA)|0,cA=gA-((g>>>0<I>>>0)+EA|0)|0,gA=(I=xg(DA,FA,470296,0))+(B-(g=-2097152&uA)|0)|0,g=l+(rA-((16383&aA)+(B>>>0<g>>>0)|0)|0)|0,g=gA>>>0<I>>>0?g+1|0:g,I=xg(kA,_A,666643,0),g=l+g|0,EA=B=I+gA|0,CA=B>>>0<I>>>0?g+1|0:g,I=xg(DA,FA,666643,0),gA=l+(fA-((4095&tA)+(BA>>>0<(g=-2097152&lA)>>>0)|0)|0)|0,aA=gA=(B=I+(BA-g|0)|0)>>>0<I>>>0?gA+1|0:gA,fA=(I=B)- -1048576|0,nA=gA=gA-((I>>>0<4293918720)+-1|0)|0,g=(I=gA>>21)+CA|0,tA=BA=(gA=(2097151&gA)<<11|fA>>>21)+EA|0,EA=g=BA>>>0<gA>>>0?g+1|0:g,CA=gA=g-(((I=BA)>>>0<4293918720)+-1|0)|0,g=(2097151&gA)<<11|(rA=I- -1048576|0)>>>21,gA=(gA>>21)+cA|0,cA=BA=g+eA|0,BA=BA>>>0<g>>>0?gA+1|0:gA,I=xg(MA,SA,470296,0),g=l+EA|0,CA=(g=(gA=I+tA|0)>>>0<I>>>0?g+1|0:g)-(((EA=gA)>>>0<(gA=-2097152&rA)>>>0)+CA|0)|0,tA=I=EA-gA|0,I=xg(MA,SA,666643,0),gA=l+(aA-((B>>>0<(g=-2097152&fA)>>>0)+nA|0)|0)|0,nA=EA=I+(B-g|0)|0,B=(2097151&(gA=EA>>>0<I>>>0?gA+1|0:gA))<<11|(I=EA)>>>21,I=(g=gA>>21)+CA|0,CA=gA=tA+B|0,gA=(I=(g=gA)>>>0<B>>>0?I+1|0:I)>>21,I=(2097151&I)<<11|g>>>21,g=gA+BA|0,EA=B=I+cA|0,I=(I=(g=B>>>0<I>>>0?g+1|0:g)>>21)+UA|0,rA=B=(g=(2097151&g)<<11|B>>>21)+LA|0,g=(g=(I=B>>>0<g>>>0?I+1|0:I)>>21)+iA|0,uA=B=(I=(2097151&I)<<11|B>>>21)+HA|0,gA=(I=(g=B>>>0<I>>>0?g+1|0:g)>>21)+NA|0,sA=B=(g=(2097151&g)<<11|B>>>21)+xA|0,B=(2097151&(gA=(I=B)>>>0<g>>>0?gA+1|0:gA))<<11|I>>>21,I=(g=gA>>21)+GA|0,wA=gA=B+TA|0,gA=(I=(g=gA)>>>0<B>>>0?I+1|0:I)>>21,I=(2097151&I)<<11|g>>>21,g=gA+VA|0,eA=B=I+XA|0,I=(I=(g=B>>>0<I>>>0?g+1|0:g)>>21)+yA|0,cA=B=(g=(2097151&g)<<11|B>>>21)+YA|0,g=(g=(I=B>>>0<g>>>0?I+1|0:I)>>21)+pA|0,GA=B=(I=(2097151&I)<<11|B>>>21)+zA|0,gA=(I=(g=B>>>0<I>>>0?g+1|0:g)>>21)+OA|0,fA=B=(g=(2097151&g)<<11|B>>>21)+ZA|0,I=B,g=(oA-((QA>>>0<(B=-2097152&vA)>>>0)+hA|0)|0)+(g=(gA=I>>>0<g>>>0?gA+1|0:gA)>>21)|0,tA=gA=(gA=(2097151&gA)<<11|I>>>21)+(I=QA-B|0)|0,aA=I=(g=gA>>>0<I>>>0?g+1|0:g)>>21,g=xg(hA=(2097151&g)<<11|gA>>>21,I,666643,0),gA=l,nA=g=g+(I=2097151&nA)|0,B=gA=g>>>0<I>>>0?gA+1|0:gA,E[0|AA]=g,E[A+1|0]=(255&gA)<<24|g>>>8,I=2097151&CA,BA=xg(hA,aA,470296,0)+I|0,g=l,g=BA>>>0<I>>>0?g+1|0:g,g=(I=B>>21)+g|0,g=(CA=QA=(gA=BA)+(BA=(2097151&B)<<11|nA>>>21)|0)>>>0<BA>>>0?g+1|0:g,gA=CA,E[A+4|0]=(2047&g)<<21|gA>>>11,I=g,E[A+3|0]=(7&I)<<29|gA>>>3,g=A,BA=2097151&EA,QA=xg(hA,aA,654183,0)+BA|0,gA=l,gA=QA>>>0<BA>>>0?gA+1|0:gA,BA=I,I=(I>>=21)+gA|0,EA=QA=(BA=(2097151&BA)<<11|CA>>>21)+QA|0,gA=I=QA>>>0<BA>>>0?I+1|0:I,E[g+6|0]=(63&I)<<26|QA>>>6,QA=0,I=iA=2097151&CA,E[g+2|0]=31&((65535&B)<<16|nA>>>16)|I<<5,BA=g,I=2097151&rA,B=xg(hA,aA,-997805,-1)+I|0,g=l,g=B>>>0<I>>>0?g+1|0:g,g=(I=gA>>21)+g|0,nA=gA=(CA=B)+(B=(2097151&gA)<<11|EA>>>21)|0,g=gA>>>0<B>>>0?g+1|0:g,E[BA+9|0]=(511&g)<<23|gA>>>9,B=g,I=g,g=gA,E[BA+8|0]=(1&I)<<31|g>>>1,CA=0,g=rA=2097151&EA,E[BA+5|0]=(524287&QA)<<13|iA>>>19|g<<2,g=2097151&uA,gA=xg(hA,aA,136657,0)+g|0,I=l,I=gA>>>0<g>>>0?I+1|0:I,g=B>>21,QA=(B=(2097151&B)<<11|nA>>>21)+gA|0,gA=I+g|0,EA=QA,gA=QA>>>0<B>>>0?gA+1|0:gA,E[BA+12|0]=(4095&gA)<<20|QA>>>12,g=gA,E[BA+11|0]=(15&g)<<28|QA>>>4,QA=0,B=iA=2097151&nA,E[BA+7|0]=(16383&CA)<<18|rA>>>14|B<<7,B=BA,gA=2097151&sA,BA=xg(hA,aA,-683901,-1)+gA|0,I=l,I=BA>>>0<gA>>>0?I+1|0:I,gA=BA,BA=(2097151&g)<<11|EA>>>21,g=(g>>21)+I|0,I=g=(CA=gA+BA|0)>>>0<BA>>>0?g+1|0:g,E[B+14|0]=(127&I)<<25|CA>>>7,BA=0,B=nA=2097151&EA,E[A+10|0]=(131071&QA)<<15|iA>>>17|B<<4,I>>=21,g=(EA=(gA=(2097151&g)<<11|CA>>>21)+(2097151&wA)|0)>>>0<gA>>>0?I+1|0:I,B=EA,E[A+17|0]=(1023&g)<<22|B>>>10,I=g,E[A+16|0]=(3&I)<<30|B>>>2,gA=0,B=aA=2097151&CA,E[A+13|0]=(1048575&BA)<<12|nA>>>20|B<<1,I>>=21,CA=BA=(g=(2097151&g)<<11|EA>>>21)+(2097151&eA)|0,I=BA>>>0<g>>>0?I+1|0:I,B=BA,E[A+20|0]=(8191&I)<<19|B>>>13,g=I,E[A+19|0]=(31&I)<<27|B>>>5,B=nA=2097151&EA,E[A+15|0]=(32767&gA)<<17|aA>>>15|B<<6,gA=I>>=21,EA=aA=(B=(2097151&g)<<11|BA>>>21)+(2097151&cA)|0,E[(BA=A)+21|0]=EA,I=CA,E[BA+18|0]=(262143&QA)<<14|nA>>>18|I<<3,B=EA>>>0<B>>>0?gA+1|0:gA,E[BA+22|0]=(255&B)<<24|EA>>>8,g=gA=(I=B)>>21,QA=CA=(I=(2097151&I)<<11|EA>>>21)+(2097151&GA)|0,g=CA>>>0<I>>>0?g+1|0:g,gA=CA,E[BA+25|0]=(2047&g)<<21|gA>>>11,I=g,E[BA+24|0]=(7&I)<<29|gA>>>3,gA=BA,I>>=21,(BA=(g=(2097151&g)<<11|CA>>>21)+(2097151&fA)|0)>>>0<g>>>0&&(I=I+1|0),g=I,E[gA+27|0]=(63&I)<<26|BA>>>6,gA=0,B=31&((65535&B)<<16|EA>>>16),I=EA=2097151&QA,E[A+23|0]=B|I<<5,QA=(2097151&g)<<11|BA>>>21,g>>=21,g=(nA=QA+(2097151&tA)|0)>>>0<QA>>>0?g+1|0:g,B=QA=nA,E[A+31|0]=(131071&g)<<15|B>>>17,I=g,E[A+30|0]=(511&I)<<23|B>>>9,E[A+29|0]=(1&I)<<31|B>>>1,g=0,BA&=2097151,E[A+26|0]=(524287&gA)<<13|EA>>>19|BA<<2,E[A+28|0]=(16383&g)<<18|BA>>>14|B<<7}(Q,r+160|0,r+288|0,r+224|0),KI(r+288|0,64),KI(r+224|0,64),I&&(n[I>>2]=64,n[I+4>>2]=0),D=r+560|0,0}function T(A,I,g,B){var C;D=C=D-2272|0,uA(C+2016|0,I),uA(C+1760|0,B),zI(C+480|0,g),cg(C+320|0,g),jI(C,C+320|0),tI(C+320|0,C,C+480|0),jI(C+160|0,C+320|0),zI(I=C+640|0,C+160|0),tI(C+320|0,C,I),jI(C+160|0,C+320|0),zI(I=C+800|0,C+160|0),tI(C+320|0,C,I),jI(C+160|0,C+320|0),zI(I=C+960|0,C+160|0),tI(C+320|0,C,I),jI(C+160|0,C+320|0),zI(I=C+1120|0,C+160|0),tI(C+320|0,C,I),jI(C+160|0,C+320|0),zI(I=C+1280|0,C+160|0),tI(C+320|0,C,I),jI(C+160|0,C+320|0),zI(I=C+1440|0,C+160|0),tI(C+320|0,C,I),jI(C+160|0,C+320|0),zI(C+1600|0,C+160|0),iB(A),Vg(A+40|0),Vg(A+80|0),B=255;A:{for(;;){if(!(a[(g=B)+(C+2016|0)|0]|a[(C+1760|0)+g|0])){if(B=g+-1|0,g)continue;break A}break}if(!((0|g)<0))for(;pI(C+320|0,A),(0|(g=E[(I=g)+(C+2016|0)|0]))>=1?(jI(C+160|0,C+320|0),tI(C+320|0,C+160|0,(C+480|0)+o((254&g)>>>1|0,160)|0)):(0|g)>-1||(jI(C+160|0,C+320|0),cI(C+320|0,C+160|0,(C+480|0)+o((0-g&254)>>>1|0,160)|0)),(0|(g=E[I+(C+1760|0)|0]))>=1?(jI(C+160|0,C+320|0),wI(C+320|0,C+160|0,o((254&g)>>>1|0,120)+2272|0)):(0|g)>-1||(jI(C+160|0,C+320|0),sI(C+320|0,C+160|0,o((0-g&254)>>>1|0,120)+2272|0)),Ig(A,C+320|0),g=I+-1|0,(0|I)>0;);}D=C+2272|0}function W(A,I,g,B){var C,Q=0,i=0,r=0,o=0,e=0,t=0,c=0;if(D=C=D-704|0,g|B)if(e=(t=n[(Q=A)+72>>2])+(r=(i=g)<<3)|0,i=(o=n[Q+76>>2])+(B<<3|i>>>29)|0,i=e>>>0<r>>>0?i+1|0:i,n[Q+72>>2]=e,n[Q+76>>2]=i,Q=n[Q+64>>2],r=n[A+68>>2],(0|i)==(0|o)&e>>>0<t>>>0|i>>>0<o>>>0&&((Q=Q+1|0)>>>0<1&&(r=r+1|0),n[(i=A)+64>>2]=Q,n[i+68>>2]=r),(Q=(c=B>>>29|0)+Q|0)>>>0<c>>>0&&(r=r+1|0),n[(i=A)+64>>2]=Q,n[i+68>>2]=r,(0|B)==(0|(r=e=0-(128<(i=127&((7&o)<<29|t>>>3))>>>0)|0))&(Q=o=128-i|0)>>>0<=g>>>0|r>>>0<B>>>0){for(Q=0,r=0;E[80+(A+(c=Q+i|0)|0)|0]=a[I+Q|0],(Q=Q+1|0)>>>0<1&&(r=r+1|0),(0|o)!=(0|Q)|(0|r)!=(0|e););if(G(A,A+80|0,C,r=C+640|0),I=I+o|0,!(B=B-((g>>>0<o>>>0)+e|0)|0)&(g=g-o|0)>>>0>127|B>>>0>0)for(;G(A,I,C,r),I=I+128|0,i=B+-1|0,(g=g+-128|0)>>>0<4294967168&&(i=i+1|0),B=i,!i&g>>>0>127|i>>>0>0;);if(g|B)for(Q=0,r=0;E[80+(A+Q|0)|0]=a[I+Q|0],(i=Q+1|0)>>>0<1&&(r=r+1|0),(0|g)!=(0|(Q=i))|(0|B)!=(0|r););KI(C,704)}else for(Q=g,o=(g=!B&g>>>0>1|B>>>0>0)?Q:1,B=g?B:0,Q=0,r=0;E[80+(A+(t=Q+i|0)|0)|0]=a[I+Q|0],(g=Q+1|0)>>>0<1&&(r=r+1|0),(0|o)!=(0|(Q=g))|(0|B)!=(0|r););return D=C+704|0,0}function j(A,I,g){var B,C=0,Q=0;if(g>>>0>=512)return w(0|A,0|I,0|g),A;B=A+g|0;A:if(3&(A^I))if(B>>>0<4)g=A;else if((C=B+-4|0)>>>0<A>>>0)g=A;else for(g=A;E[0|g]=a[0|I],E[g+1|0]=a[I+1|0],E[g+2|0]=a[I+2|0],E[g+3|0]=a[I+3|0],I=I+4|0,(g=g+4|0)>>>0<=C>>>0;);else{I:if((0|g)<1)g=A;else if(3&A)for(g=A;;){if(E[0|g]=a[0|I],I=I+1|0,(g=g+1|0)>>>0>=B>>>0)break I;if(!(3&g))break}else g=A;if(!((C=-4&B)>>>0<64||g>>>0>(Q=C+-64|0)>>>0))for(;n[g>>2]=n[I>>2],n[g+4>>2]=n[I+4>>2],n[g+8>>2]=n[I+8>>2],n[g+12>>2]=n[I+12>>2],n[g+16>>2]=n[I+16>>2],n[g+20>>2]=n[I+20>>2],n[g+24>>2]=n[I+24>>2],n[g+28>>2]=n[I+28>>2],n[g+32>>2]=n[I+32>>2],n[g+36>>2]=n[I+36>>2],n[g+40>>2]=n[I+40>>2],n[g+44>>2]=n[I+44>>2],n[g+48>>2]=n[I+48>>2],n[g+52>>2]=n[I+52>>2],n[g+56>>2]=n[I+56>>2],n[g+60>>2]=n[I+60>>2],I=I- -64|0,(g=g- -64|0)>>>0<=Q>>>0;);if(g>>>0>=C>>>0)break A;for(;n[g>>2]=n[I>>2],I=I+4|0,(g=g+4|0)>>>0<C>>>0;);}if(g>>>0<B>>>0)for(;E[0|g]=a[0|I],I=I+1|0,(0|B)!=(0|(g=g+1|0)););return A}function Z(A,I,g,B,C,Q,i,a){A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,i|=0,a|=0;var r,o=0,e=0,t=0,c=0,f=0,y=0,s=0,w=0,h=0;D=r=D-16|0,n[r+12>>2]=0,Zg(a);A:{if(B){w=4&a;I:{g:{B:{for(;;){o=c;C:{Q:{for(;;){if(y=E[g+o|0],255!=(0|(t=w?aI(y):rI(y))))break Q;if(!C)break C;if(!bg(C,y))break B;if(!((o=o+1|0)>>>0<B>>>0))break}A=c+1|0,n[r+12>>2]=A>>>0<B>>>0?B:A;break g}if(s=(s<<6)+t|0,(t=e+6|0)>>>0<8)e=t;else{if(e=e+-2|0,f>>>0>=I>>>0){n[r+12>>2]=o,n[8960]=68,o=1;break I}E[A+f|0]=s>>>e,f=f+1|0}if((c=o+1|0)>>>0<B>>>0)continue}break}n[r+12>>2]=c;break g}n[r+12>>2]=o}o=0}if(!(e>>>0<=4)){A=-1;break A}}if(A=-1,!((-1<<e^-1)&s|o)&&(2&a||!(A=function(A,I,g,B,C){var Q=0,i=0,a=0;I:if(C)for(Q=n[g>>2];;){g:{if(Q>>>0>=I>>>0)n[8960]=68;else{if(61==(0|(i=E[A+Q|0]))){C=C+-1|0;break g}if(B&&bg(B,i))break g;n[8960]=28}a=-1;break I}if(Q=Q+1|0,n[g>>2]=Q,!C)break}return a}(g,B,r+12|0,C,e>>>1|0)))){A=0;I:if(C&&!((o=n[r+12>>2])>>>0>=B>>>0)){g:{for(;;){if(!bg(C,E[g+o|0]))break g;if((0|(o=o+1|0))==(0|B))break}n[r+12>>2]=B;break I}n[r+12>>2]=o}h=f}}return I=n[r+12>>2],i?n[i>>2]=I+g:(0|I)!=(0|B)&&(n[8960]=28,A=-1),Q&&(n[Q>>2]=h),D=r+16|0,0|A}function O(A,I){var g;for(D=g=D-192|0,U(g+144|0,I),U(g+96|0,g+144|0),U(g+96|0,g+96|0),H(g+96|0,I,g+96|0),H(g+144|0,g+144|0,g+96|0),U(g+48|0,g+144|0),H(g+96|0,g+96|0,g+48|0),U(g+48|0,g+96|0),I=1;U(g+48|0,g+48|0),5!=(0|(I=I+1|0)););for(H(g+96|0,g+48|0,g+96|0),U(g+48|0,g+96|0),I=1;U(g+48|0,g+48|0),10!=(0|(I=I+1|0)););for(H(g+48|0,g+48|0,g+96|0),U(g,g+48|0),I=1;U(g,g),20!=(0|(I=I+1|0)););for(H(g+48|0,g,g+48|0),U(g+48|0,g+48|0),I=1;U(g+48|0,g+48|0),10!=(0|(I=I+1|0)););for(H(g+96|0,g+48|0,g+96|0),U(g+48|0,g+96|0),I=1;U(g+48|0,g+48|0),50!=(0|(I=I+1|0)););for(H(g+48|0,g+48|0,g+96|0),U(g,g+48|0),I=1;U(g,g),100!=(0|(I=I+1|0)););for(H(g+48|0,g,g+48|0),U(g+48|0,g+48|0),I=1;U(g+48|0,g+48|0),50!=(0|(I=I+1|0)););for(H(g+96|0,g+48|0,g+96|0),U(g+96|0,g+96|0),I=1;U(g+96|0,g+96|0),5!=(0|(I=I+1|0)););H(A,g+96|0,g+144|0),D=g+192|0}function z(A,I,g){var B,C,Q,E=0;D=B=D-16|0,C=n[A+20>>2],n[A+20>>2]=0,Q=n[A+4>>2],n[A+4>>2]=0,E=-26;A:{I:{g:switch(g+-1|0){case 1:if(E=-32,eI(I,35621,9))break A;I=I+9|0;break I;case 0:break g;default:break A}if(E=-32,eI(I,35631,8))break A;I=I+8|0}if(!eI(I,35640,3)&&(I=XA(I+3|0,B+12|0))){if(E=-26,19!=n[B+12>>2])break A;if(!eI(I,35644,3)&&(I=XA(I+3|0,B+12|0))&&(n[A+44>>2]=n[B+12>>2],!eI(I,35648,3)&&(I=XA(I+3|0,B+12|0))&&(n[A+40>>2]=n[B+12>>2],!eI(I,35652,3)&&(I=XA(I+3|0,B+12|0))&&(g=n[B+12>>2],n[A+48>>2]=g,n[A+52>>2]=g,36==(0|(g=a[0|I]))&&(n[B+12>>2]=C,I=36==(0|g)?I+1|0:I,!Z(n[A+16>>2],C,I,VA(I),0,B+12|0,B+8|0,3)&&(n[A+20>>2]=n[B+12>>2],I=n[B+8>>2],36==(0|(g=a[0|I]))&&(n[B+12>>2]=Q,I=36==(0|g)?I+1|0:I,!Z(n[A>>2],Q,I,VA(I),0,B+12|0,B+8|0,3)))))))){if(n[A+4>>2]=n[B+12>>2],I=n[B+8>>2],E=DA(A))break A;return D=B+16|0,a[0|I]?-32:0}}E=-32}return D=B+16|0,E}function $(A,I){var g,B,C,Q,i,a,r=0,e=0,t=0,c=0,f=0,y=0,s=0,w=0,h=0,D=0,u=0;(r=c=n[A+60>>2])|(e=n[A+56>>2])&&(c=e,E[(y=e+A|0)- -64|0]=1,(e=e+1|0)>>>0<1&&(r=r+1|0),!r&e>>>0<=15|r>>>0<0&&eA(y+65|0,0,15-c|0),E[A+80|0]=1,R(A,A- -64|0,16,0)),a=n[A+52>>2],u=n[A+48>>2],s=n[A+44>>2],r=n[A+24>>2],c=n[A+28>>2]+(r>>>26|0)|0,t=n[A+32>>2]+(c>>>26|0)|0,h=(c=(D=(-67108864|(g=n[A+36>>2]+(t>>>26|0)|0))+((Q=(B=67108863&t)+((C=(f=67108863&c)+((t=(r=(67108863&r)+((D=n[A+20>>2]+o(g>>>26|0,5)|0)>>>26|0)|0)+((y=5+(e=67108863&D)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)>>31)&r|(w=t)&(t=67108863&(i=(D>>>31|0)-1|0)),w=I,r=0,(e=(y=e&c|t&y|h<<26)+n[A+40>>2]|0)>>>0<y>>>0&&(r=1),fg(w,e),e=0,(f=(w=s)+(h=(s=c&f|t&C)<<20|h>>>6)|0)>>>0<h>>>0&&(e=1),w=f,f=r,h=w+r|0,r=e,r=h>>>0<f>>>0?r+1|0:r,fg(y=I+4|0,h),e=0,(s=(f=u)+(t=(u=c&B|t&Q)<<14|s>>>12)|0)>>>0<t>>>0&&(e=1),f=s,s=r,t=f+r|0,r=e,r=t>>>0<s>>>0?r+1|0:r,fg(w=I+8|0,t),fg(e=I+12|0,r=r+(c=(I=(D&i|c&g)<<8|u>>>18)+a|0)|0),KI(A,88)}function AA(A,I,g,B,C){A|=0,I|=0,g|=0,B|=0;var Q=0,i=0,n=0,r=0,e=0,f=0,y=0,s=0,w=0,h=0;Zg(C|=0),i=(Q=(B>>>0)/3|0)<<2,(Q=o(Q,-3)+B|0)&&(i=2&C?(2|i)+(Q>>>1|0)|0:i+4|0);A:{I:{s=i;g:{B:{if(i>>>0<I>>>0){if(!(4&C)){if(n=0,!B)break g;C=0,Q=0;break B}if(n=0,!B)break g;for(C=0,Q=0;;){for(e=a[g+r|0]|e<<8,C=C+8|0;f=Q,y=C,w=A+Q|0,h=bI(e>>>(C=C+-6|0)&63),E[0|w]=h,Q=Q+1|0,C>>>0>5;);if((0|(r=r+1|0))==(0|B))break}if(n=Q,!C)break g;w=A+Q|0,h=bI(e<<12-y&63),E[0|w]=h,n=f+2|0;break g}Gg(),t()}for(;;){for(e=a[g+r|0]|e<<8,C=C+8|0;f=Q,y=C,w=A+Q|0,h=mI(e>>>(C=C+-6|0)&63),E[0|w]=h,Q=Q+1|0,C>>>0>5;);if((0|(r=r+1|0))==(0|B))break}n=Q,C&&(w=A+Q|0,h=mI(e<<12-y&63),E[0|w]=h,n=f+2|0)}if(s>>>0>=(Q=n)>>>0){if(i>>>0>Q>>>0)break I;i=Q;break A}c(35568,35587,230,35603),t()}eA(A+Q|0,61,i-Q|0)}return eA(A+i|0,0,((g=i+1|0)>>>0<I>>>0?I:g)-i|0),0|A}function IA(A,I,g,B){var C=0,Q=0,i=0,r=0,o=0,e=0;A:{if((Q=n[A+56>>2])|(C=n[A+60>>2])){if(e=A,o=r=16-Q|0,o=(r=(0|B)==(0|(i=0-((16<Q>>>0)+C|0)|0))&r>>>0>g>>>0|i>>>0>B>>>0)?g:o,r=i=r?B:i,i|o){if(E[(A+Q|0)- -64|0]=a[0|I],C=1,Q=0,1!=(0|o)|r)for(;i=C+n[A+56>>2]|0,E[(A+i|0)- -64|0]=a[I+C|0],(C=C+1|0)>>>0<1&&(Q=Q+1|0),(0|o)!=(0|C)|(0|Q)!=(0|r););C=n[A+60>>2],i=n[A+56>>2]}else i=Q;if(Q=C+r|0,(i=(C=o)+i|0)>>>0<C>>>0&&(Q=Q+1|0),C=i,n[e+56>>2]=C,n[e+60>>2]=Q,!Q&C>>>0<16|Q>>>0<0)break A;R(A,A- -64|0,16,0),n[A+56>>2]=0,n[A+60>>2]=0,g=(Q=g)-(C=o)|0,B=B-((Q>>>0<C>>>0)+r|0)|0,I=I+C|0}if(!B&g>>>0>=16|B>>>0>0&&(R(A,I,Q=-16&g,B),g&=15,B=0,I=I+Q|0),g|B){for(C=0,Q=0;e=C+n[A+56>>2]|0,E[(A+e|0)- -64|0]=a[I+C|0],(C=C+1|0)>>>0<1&&(Q=Q+1|0),(0|g)!=(0|C)|(0|B)!=(0|Q););I=A,i=A,B=B+n[A+60>>2]|0,(A=g+n[A+56>>2]|0)>>>0<g>>>0&&(B=B+1|0),n[i+56>>2]=A,n[I+60>>2]=B}}}function gA(A,I,g){var B,C=0;B=C=D,D=C=C-448&-64,!A|!I||(vI(C- -64|0,0,0,64),fg(C+60|0,n[I+48>>2]),Tg(C- -64|0,C+60|0,4,0),fg(C+60|0,n[I+4>>2]),Tg(C- -64|0,C+60|0,4,0),fg(C+60|0,n[I+44>>2]),Tg(C- -64|0,C+60|0,4,0),fg(C+60|0,n[I+40>>2]),Tg(C- -64|0,C+60|0,4,0),fg(C+60|0,19),Tg(C- -64|0,C+60|0,4,0),fg(C+60|0,g),Tg(C- -64|0,C+60|0,4,0),fg(C+60|0,n[I+12>>2]),Tg(C- -64|0,C+60|0,4,0),(g=n[I+8>>2])&&(Tg(C- -64|0,g,n[I+12>>2],0),1&E[I+56|0]&&(KI(n[I+8>>2],n[I+12>>2]),n[I+12>>2]=0)),fg(C+60|0,n[I+20>>2]),Tg(C- -64|0,C+60|0,4,0),(g=n[I+16>>2])&&Tg(C- -64|0,g,n[I+20>>2],0),fg(C+60|0,n[I+28>>2]),Tg(C- -64|0,C+60|0,4,0),(g=n[I+24>>2])&&(Tg(C- -64|0,g,n[I+28>>2],0),2&a[I+56|0]&&(KI(n[I+24>>2],n[I+28>>2]),n[I+28>>2]=0)),fg(C+60|0,n[I+36>>2]),Tg(C- -64|0,C+60|0,4,0),(g=n[I+32>>2])&&Tg(C- -64|0,g,n[I+36>>2],0),og(C- -64|0,A,64)),D=B}function BA(A,I,g,B,C,Q,i,r,o,e){var c,f=0,y=0,s=0,w=0,h=0;D=c=D-352|0,g&&(n[g>>2]=0,n[g+4>>2]=0),B&&(E[0|B]=255),h=-1;A:{if(!(!i&Q>>>0<17|i>>>0<0)){if(f=i+-1|0,(y=Q+-17|0)>>>0<4294967279&&(f=f+1|0),s=y,y=f,!f&s>>>0>=4294967279|f>>>0>0)break A;IB(c+32|0,64,w=A+32|0,A),Og(c+96|0,c+32|0),KI(c+32|0,64),Lg(c+96|0,r,o,e),Lg(c+96|0,35712,0-o&15,0),eA(c+32|0,0,64),E[c+32|0]=a[0|C],uI(c+32|0,c+32|0,64,0,w,1,A),r=a[c+32|0],E[c+32|0]=a[0|C],Lg(c+96|0,c+32|0,64,0),Lg(c+96|0,C=C+1|0,s,y),Lg(c+96|0,35712,15&(f=Q+-1|0),0),LI(c+24|0,o,e),Lg(c+96|0,c+24|0,8,0),f=i,(Q=Q+47|0)>>>0<47&&(f=f+1|0),LI(o=c+24|0,Q,f),Lg(c+96|0,c+24|0,8,0),zg(c+96|0,c),KI(c+96|0,256),hI(c,C+s|0,16)?KI(c,16):(uI(I,C,s,y,w,2,A),ZI(A+36|0,c),VI(w),(2&r||RI(w,4))&&q(A),g&&(n[g>>2]=s,n[g+4>>2]=y),h=0,B&&(E[0|B]=r))}return D=c+352|0,h}Gg(),t()}function CA(A,I){var g,B=0;for(D=g=D-1760|0,zI(g+480|0,I),cg(g+320|0,I),jI(g,g+320|0),tI(g+320|0,g,g+480|0),jI(g+160|0,g+320|0),zI(I=g+640|0,g+160|0),tI(g+320|0,g,I),jI(g+160|0,g+320|0),zI(I=g+800|0,g+160|0),tI(g+320|0,g,I),jI(g+160|0,g+320|0),zI(I=g+960|0,g+160|0),tI(g+320|0,g,I),jI(g+160|0,g+320|0),zI(I=g+1120|0,g+160|0),tI(g+320|0,g,I),jI(g+160|0,g+320|0),zI(I=g+1280|0,g+160|0),tI(g+320|0,g,I),jI(g+160|0,g+320|0),zI(I=g+1440|0,g+160|0),tI(g+320|0,g,I),jI(g+160|0,g+320|0),zI(g+1600|0,g+160|0),kg(A),I=252;cg(g+320|0,A),B=I,(0|(I=E[I+34208|0]))>=1?(jI(g+160|0,g+320|0),tI(g+320|0,g+160|0,(g+480|0)+o((254&I)>>>1|0,160)|0)):(0|I)>-1||(jI(g+160|0,g+320|0),cI(g+320|0,g+160|0,(g+480|0)+o((0-I&254)>>>1|0,160)|0)),jI(A,g+320|0),I=B+-1|0,B;);D=g+1760|0}function QA(A,I,g){var B,C,Q,E,i,a,r,o,e,t,c,f,y=0,s=0,w=0,h=0,D=0,u=0,p=0,l=0,F=0;B=n[I+4>>2],C=n[A+4>>2],Q=n[I+8>>2],s=n[A+8>>2],E=n[I+12>>2],w=n[A+12>>2],i=n[I+16>>2],h=n[A+16>>2],a=n[I+20>>2],D=n[A+20>>2],r=n[I+24>>2],u=n[A+24>>2],o=n[I+28>>2],p=n[A+28>>2],e=n[I+32>>2],l=n[A+32>>2],t=n[I+36>>2],F=n[A+36>>2],f=(g=0-g|0)&((c=n[I>>2])^(y=n[A>>2])),n[A>>2]=f^y,y=F,F=g&(F^t),n[A+36>>2]=y^F,y=l,l=g&(l^e),n[A+32>>2]=y^l,y=p,p=g&(p^o),n[A+28>>2]=y^p,y=u,u=g&(u^r),n[A+24>>2]=y^u,y=D,D=g&(D^a),n[A+20>>2]=y^D,y=h,h=g&(h^i),n[A+16>>2]=y^h,y=w,w=g&(w^E),n[A+12>>2]=y^w,y=s,s=g&(s^Q),n[A+8>>2]=y^s,y=A,A=g&(B^C),n[y+4>>2]=A^C,n[I+36>>2]=F^t,n[I+32>>2]=l^e,n[I+28>>2]=p^o,n[I+24>>2]=u^r,n[I+20>>2]=D^a,n[I+16>>2]=h^i,n[I+12>>2]=w^E,n[I+8>>2]=s^Q,n[I+4>>2]=A^B,n[I>>2]=c^f}function EA(A,I){var g=0,B=0,C=0,Q=0,E=0,i=0,e=0,t=0,c=0,f=0;A:if(A&&(2!=n[A+36>>2]||(B=n[I>>2],a[I+8|0]<2&&!B)?(function(A,I,g){var B,C=0,Q=0,E=0;if(D=B=D-4096|0,EB(B+3072|0),EB(B+2048|0),!(!A|!I)&&(n[B+2048>>2]=n[I>>2],n[B+2052>>2]=0,n[B+2056>>2]=n[I+4>>2],n[B+2060>>2]=0,n[B+2064>>2]=a[I+8|0],n[B+2068>>2]=0,n[B+2072>>2]=n[A+16>>2],n[B+2076>>2]=0,n[B+2080>>2]=n[A+8>>2],n[B+2084>>2]=0,n[B+2088>>2]=n[A+36>>2],n[B+2092>>2]=0,n[A+20>>2]))for(I=0;(E=127&I)||(C=n[B+2100>>2],(Q=n[B+2096>>2]+1|0)>>>0<1&&(C=C+1|0),n[B+2096>>2]=Q,n[B+2100>>2]=C,EB(B),EB(B+1024|0),b(B+3072|0,B+2048|0,B),b(B+3072|0,B,B+1024|0)),E=n[4+(Q=(B+1024|0)+(E<<3)|0)>>2],n[(C=(I<<3)+g|0)>>2]=n[Q>>2],n[C+4>>2]=E,(I=I+1|0)>>>0<r[A+20>>2];);D=B+4096|0}(A,I,c=n[A+4>>2]),B=n[I>>2],f=0):(c=n[A+4>>2],f=1),!((Q=!((i=B)|(B=a[I+8|0]))<<1)>>>0>=(g=n[A+20>>2])>>>0)))for(C=n[A+24>>2],g=(B=(o(C,n[I+4>>2])+Q|0)+o(g,B)|0)+((B>>>0)%(C>>>0)|0?-1:C+-1|0)|0;;){if(C=1==((B>>>0)%(C>>>0)|0)?B+-1|0:g,g=f?n[n[A>>2]+4>>2]+(C<<10)|0:(Q<<3)+c|0,E=n[g+4>>2],e=n[g>>2],g=n[A+28>>2],n[I+12>>2]=Q,g=(E>>>0)%(g>>>0)|0,E=n[I+4>>2],i=t=a[I+8|0]?g:E,i=(t=n[I>>2])?g:i,g=n[n[A>>2]+4>>2],E=((o(i,n[A+24>>2])<<10)+g|0)+(YA(A,I,e,!0&(0|E)==(0|i))<<10)|0,e=g+(C<<10)|0,g=g+(B<<10)|0,t?b(e,E,g):m(e,E,g),(Q=Q+1|0)>>>0>=r[A+20>>2])break A;B=B+1|0,g=C+1|0,C=n[A+24>>2]}}function iA(A,I,g,B,C){var Q,i=0;return D=Q=D-96|0,i=-1,Yg(Q+32|0,Q)||(OI(Q- -64|0,Q+32|0,C),i=$I(A+32|0,I,g,B,Q- -64|0,C,Q),I=n[Q+60>>2],g=n[Q+56>>2],E[A+24|0]=g,E[A+25|0]=g>>>8,E[A+26|0]=g>>>16,E[A+27|0]=g>>>24,E[A+28|0]=I,E[A+29|0]=I>>>8,E[A+30|0]=I>>>16,E[A+31|0]=I>>>24,I=n[Q+52>>2],g=n[Q+48>>2],E[A+16|0]=g,E[A+17|0]=g>>>8,E[A+18|0]=g>>>16,E[A+19|0]=g>>>24,E[A+20|0]=I,E[A+21|0]=I>>>8,E[A+22|0]=I>>>16,E[A+23|0]=I>>>24,I=n[Q+44>>2],g=n[Q+40>>2],E[A+8|0]=g,E[A+9|0]=g>>>8,E[A+10|0]=g>>>16,E[A+11|0]=g>>>24,E[A+12|0]=I,E[A+13|0]=I>>>8,E[A+14|0]=I>>>16,E[A+15|0]=I>>>24,I=n[Q+36>>2],g=n[Q+32>>2],E[0|A]=g,E[A+1|0]=g>>>8,E[A+2|0]=g>>>16,E[A+3|0]=g>>>24,E[A+4|0]=I,E[A+5|0]=I>>>8,E[A+6|0]=I>>>16,E[A+7|0]=I>>>24,KI(Q,32),KI(Q+32|0,32),KI(Q- -64|0,24)),D=Q+96|0,i}function nA(A,I){var g;n[A>>2]=67108863&(a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24),n[A+4>>2]=(a[I+3|0]|a[I+4|0]<<8|a[I+5|0]<<16|a[I+6|0]<<24)>>>2&67108611,n[A+8>>2]=(a[I+6|0]|a[I+7|0]<<8|a[I+8|0]<<16|a[I+9|0]<<24)>>>4&67092735,n[A+12>>2]=(a[I+9|0]|a[I+10|0]<<8|a[I+11|0]<<16|a[I+12|0]<<24)>>>6&66076671,g=a[I+12|0]|a[I+13|0]<<8|a[I+14|0]<<16|a[I+15|0]<<24,n[A+20>>2]=0,n[A+24>>2]=0,n[A+28>>2]=0,n[A+32>>2]=0,n[A+36>>2]=0,n[A+16>>2]=g>>>8&1048575,n[A+40>>2]=a[I+16|0]|a[I+17|0]<<8|a[I+18|0]<<16|a[I+19|0]<<24,n[A+44>>2]=a[I+20|0]|a[I+21|0]<<8|a[I+22|0]<<16|a[I+23|0]<<24,n[A+48>>2]=a[I+24|0]|a[I+25|0]<<8|a[I+26|0]<<16|a[I+27|0]<<24,I=a[I+28|0]|a[I+29|0]<<8|a[I+30|0]<<16|a[I+31|0]<<24,E[A+80|0]=0,n[A+56>>2]=0,n[A+60>>2]=0,n[A+52>>2]=I}function aA(A,I,g){var B=0;A:if((0|A)!=(0|I)){if((I-A|0)-g>>>0<=0-(g<<1)>>>0)return j(A,I,g);if(B=3&(A^I),A>>>0<I>>>0){if(B)B=A;else{if(3&A)for(B=A;;){if(!g)break A;if(E[0|B]=a[0|I],I=I+1|0,g=g+-1|0,!(3&(B=B+1|0)))break}else B=A;if(!(g>>>0<=3))for(;n[B>>2]=n[I>>2],I=I+4|0,B=B+4|0,(g=g+-4|0)>>>0>3;);}if(g)for(;E[0|B]=a[0|I],B=B+1|0,I=I+1|0,g=g+-1|0;);}else{if(!B){if(A+g&3)for(;;){if(!g)break A;if(E[0|(B=(g=g+-1|0)+A|0)]=a[I+g|0],!(3&B))break}if(!(g>>>0<=3))for(;n[(g=g+-4|0)+A>>2]=n[I+g>>2],g>>>0>3;);}if(!g)break A;for(;E[(g=g+-1|0)+A|0]=a[I+g|0],g;);}}return A}function rA(A,I,g,B){var C=0,Q=0,i=0,n=0,r=0,o=0;A:if(g|B)for(o=A+224|0,i=A+96|0,C=a[A+352|0]|a[A+353|0]<<8|a[A+354|0]<<16|a[A+355|0]<<24;;){if(n=96+(A+C|0)|0,r=Q=256-C|0,!B&g>>>0<=Q>>>0|B>>>0<0){j(n,I,g),I=g+(a[A+352|0]|a[A+353|0]<<8|a[A+354|0]<<16|a[A+355|0]<<24)|0,E[A+352|0]=I,E[A+353|0]=I>>>8,E[A+354|0]=I>>>16,E[A+355|0]=I>>>24;break A}if(j(n,I,Q),C=(a[A+352|0]|a[A+353|0]<<8|a[A+354|0]<<16|a[A+355|0]<<24)+Q|0,E[A+352|0]=C,E[A+353|0]=C>>>8,E[A+354|0]=C>>>16,E[A+355|0]=C>>>24,wA(A,128),F(A,i),j(i,o,128),C=(a[A+352|0]|a[A+353|0]<<8|a[A+354|0]<<16|a[A+355|0]<<24)-128|0,E[A+352|0]=C,E[A+353|0]=C>>>8,E[A+354|0]=C>>>16,E[A+355|0]=C>>>24,I=I+Q|0,!((g=(Q=g)-r|0)|(B=B-(Q>>>0<r>>>0)|0)))break}return 0}function oA(A,I){var g,B=0;D=g=D-48|0,function(A,I){var g,B,C,Q,E,i,a,r,e=0;B=n[I+28>>2],C=n[I+24>>2],Q=n[I+20>>2],E=n[I+16>>2],i=n[I+12>>2],a=n[I+8>>2],r=n[I+4>>2],e=n[I>>2],g=n[I+36>>2],I=n[I+32>>2],e=o(((B+(C+(Q+(E+(i+(a+(r+(e+(o(g,19)+16777216>>>25|0)>>26)>>25)>>26)>>25)>>26)>>25)>>26)>>25)+I>>26)+g>>25,19)+e|0,n[A>>2]=67108863&e,e=r+(e>>26)|0,n[A+4>>2]=33554431&e,e=a+(e>>25)|0,n[A+8>>2]=67108863&e,e=i+(e>>26)|0,n[A+12>>2]=33554431&e,e=E+(e>>25)|0,n[A+16>>2]=67108863&e,e=Q+(e>>26)|0,n[A+20>>2]=33554431&e,e=C+(e>>25)|0,n[A+24>>2]=67108863&e,e=B+(e>>26)|0,n[A+28>>2]=33554431&e,I=I+(e>>25)|0,n[A+32>>2]=67108863&I,n[A+36>>2]=g+(I>>26)&33554431}(g,I),I=n[g>>2],E[0|A]=I,E[A+2|0]=I>>>16,E[A+1|0]=I>>>8,B=n[g+4>>2],E[A+5|0]=B>>>14,E[A+4|0]=B>>>6,E[A+3|0]=B<<2|I>>>24,I=n[g+8>>2],E[A+8|0]=I>>>13,E[A+7|0]=I>>>5,E[A+6|0]=I<<3|B>>>22,B=n[g+12>>2],E[A+11|0]=B>>>11,E[A+10|0]=B>>>3,E[A+9|0]=B<<5|I>>>21,I=n[g+16>>2],E[A+15|0]=I>>>18,E[A+14|0]=I>>>10,E[A+13|0]=I>>>2,E[A+12|0]=I<<6|B>>>19,I=n[g+20>>2],E[A+16|0]=I,E[A+18|0]=I>>>16,E[A+17|0]=I>>>8,B=n[g+24>>2],E[A+21|0]=B>>>15,E[A+20|0]=B>>>7,E[A+19|0]=B<<1|I>>>24,I=n[g+28>>2],E[A+24|0]=I>>>13,E[A+23|0]=I>>>5,E[A+22|0]=I<<3|B>>>23,B=n[g+32>>2],E[A+27|0]=B>>>12,E[A+26|0]=B>>>4,E[A+25|0]=B<<4|I>>>21,I=n[g+36>>2],E[A+31|0]=I>>>18,E[A+30|0]=I>>>10,E[A+29|0]=I>>>2,E[A+28|0]=I<<6|B>>>20,D=g+48|0}function eA(A,I,g){var B=0,C=0,Q=0,i=0;if(g&&(E[(B=A+g|0)-1|0]=I,E[0|A]=I,!(g>>>0<3||(E[B+-2|0]=I,E[A+1|0]=I,E[B+-3|0]=I,E[A+2|0]=I,g>>>0<7||(E[B+-4|0]=I,E[A+3|0]=I,g>>>0<9||(C=(B=0-A&3)+A|0,I=o(255&I,16843009),n[C>>2]=I,n[(B=(g=g-B&-4)+C|0)-4>>2]=I,g>>>0<9||(n[C+8>>2]=I,n[C+4>>2]=I,n[B+-8>>2]=I,n[B+-12>>2]=I,g>>>0<25||(n[C+24>>2]=I,n[C+20>>2]=I,n[C+16>>2]=I,n[C+12>>2]=I,n[B+-16>>2]=I,n[B+-20>>2]=I,n[B+-24>>2]=I,n[B+-28>>2]=I,(g=g-(i=4&C|24)|0)>>>0<32))))))))for(B=I,Q=I,I=C+i|0;n[I+24>>2]=Q,n[I+28>>2]=B,n[I+16>>2]=Q,n[I+20>>2]=B,n[I+8>>2]=Q,n[I+12>>2]=B,n[I>>2]=Q,n[I+4>>2]=B,I=I+32|0,(g=g+-32|0)>>>0>31;);return A}function tA(A,I){var g,B=0,C=0,Q=0,i=0;for(D=g=D-464|0;C=B<<1,i=a[I+B|0],E[C+(g+400|0)|0]=15&i,E[(g+400|0)+(1|C)|0]=i>>>4,32!=(0|(B=B+1|0)););for(B=0;I=8+(C=(I=B)+a[0|(B=(g+400|0)+Q|0)]|0)|0,E[0|B]=C-(240&I),B=I<<24>>28,63!=(0|(Q=Q+1|0)););for(E[g+463|0]=a[g+463|0]+B,kg(A),B=1;Kg(g,B>>>1|0,E[(g+400|0)+B|0]),wI(g+240|0,A,g),jI(A,g+240|0),I=B>>>0<62,B=B+2|0,I;);for(cg(g+240|0,A),Ig(g+120|0,g+240|0),pI(g+240|0,g+120|0),Ig(g+120|0,g+240|0),pI(g+240|0,g+120|0),Ig(g+120|0,g+240|0),pI(g+240|0,g+120|0),jI(A,g+240|0),B=0;Kg(g,B>>>1|0,E[(g+400|0)+B|0]),wI(g+240|0,A,g),jI(A,g+240|0),I=B>>>0<62,B=B+2|0,I;);D=g+464|0}function cA(A,I,g,B,C,Q,i,r,o,e){var c,f=0;if(D=c=D-336|0,g&&(n[g>>2]=0,n[g+4>>2]=0),!Q&C>>>0<4294967279|Q>>>0<0)return IB(c+16|0,64,f=A+32|0,A),Og(c+80|0,c+16|0),KI(c+16|0,64),Lg(c+80|0,i,r,o),Lg(c+80|0,35712,0-r&15,0),eA(c+16|0,0,64),E[c+16|0]=e,uI(c+16|0,c+16|0,64,0,f,1,A),Lg(c+80|0,c+16|0,64,0),E[0|I]=a[c+16|0],uI(i=I+1|0,B,C,Q,f,2,A),Lg(c+80|0,i,C,Q),Lg(c+80|0,35712,15&C,0),LI(c+8|0,r,o),Lg(c+80|0,c+8|0,8,0),LI(c+8|0,C- -64|0,Q-((C>>>0<4294967232)+-1|0)|0),Lg(c+80|0,c+8|0,8,0),zg(c+80|0,I=C+i|0),KI(c+80|0,256),ZI(A+36|0,I),VI(f),(2&e||RI(f,4))&&q(A),g&&((A=C+17|0)>>>0<17&&(Q=Q+1|0),n[g>>2]=A,n[g+4>>2]=Q),D=c+336|0,0;Gg(),t()}function fA(A,I,g,B,C,Q,E){var i,a,r,o,e=0;return D=i=D-352|0,X(i,Q,E),!C&g-A>>>0>=B>>>0|0>C>>>0|g>>>0<=A>>>0&&!(!C&A-g>>>0<B>>>0|0<C>>>0&&A>>>0>g>>>0)||(g=aA(A,g,B)),n[i+56>>2]=0,n[i+60>>2]=0,n[i+48>>2]=0,n[i+52>>2]=0,n[i+40>>2]=0,n[i+44>>2]=0,n[i+32>>2]=0,n[i+36>>2]=0,(a=!((E=(e=!C&B>>>0>32|C>>>0>0)?32:B)|(e=e?0:C)))||j(i- -64|0,g,E),o=Q+16|0,Q=e,(r=E+32|0)>>>0<32&&(Q=Q+1|0),_g(i+32|0,i+32|0,r,Q,o,i),Og(i+96|0,i+32|0),a||j(A,i- -64|0,E),KI(i+32|0,64),!C&B>>>0>=33|C>>>0>0&&Hg(A+E|0,Q=g+E|0,(g=B)-E|0,C-(e+(g>>>0<E>>>0)|0)|0,o,i),KI(i,32),Lg(i+96|0,A,B,C),zg(i+96|0,I),KI(i+96|0,256),D=i+352|0,0}function yA(A,I,g,B,C,E,i){var a,r,o=0,e=0,t=0;D=a=D-96|0,X(a,E,i),r=E+16|0,Q[n[8951]](a+32|0,32,0,r,a),E=-1;A:{if(!(0|Q[n[8945]](g,I,B,C,a+32|0))){if(E=0,!A)break A;!C&A-I>>>0>=B>>>0|0>C>>>0|A>>>0<=I>>>0&&!(!C&I-A>>>0<B>>>0|0<C>>>0&&I>>>0>A>>>0)||(I=aA(A,I,B)),g=(E=!C&B>>>0>32|C>>>0>0)?32:B,i=E=E?0:C,g|E?(o=g,t=j(a- -64|0,I,g),E=i,(e=g+32|0)>>>0<32&&(E=E+1|0),_g(a+32|0,a+32|0,e,E,r,a),j(A,t,o)):(E=i,(o=g+32|0)>>>0<32&&(E=E+1|0),_g(e=a+32|0,t=a+32|0,o,E,r,a)),E=0,!C&B>>>0<33|C>>>0<0||Hg((o=A)+(A=g)|0,A+I|0,B-A|0,C-(i+(B>>>0<A>>>0)|0)|0,r,a)}KI(a,32)}return D=a+96|0,E}function sA(A,I){var g,B=0;D=g=D+-64|0,function(A,I){var g;D=g=D+-64|0,ag(A,g),W(A=A+208|0,g,64,0),ag(A,I),KI(g,64),D=g- -64|0}(A,g),B=n[g+28>>2],A=n[g+24>>2],E[I+24|0]=A,E[I+25|0]=A>>>8,E[I+26|0]=A>>>16,E[I+27|0]=A>>>24,E[I+28|0]=B,E[I+29|0]=B>>>8,E[I+30|0]=B>>>16,E[I+31|0]=B>>>24,B=n[g+20>>2],A=n[g+16>>2],E[I+16|0]=A,E[I+17|0]=A>>>8,E[I+18|0]=A>>>16,E[I+19|0]=A>>>24,E[I+20|0]=B,E[I+21|0]=B>>>8,E[I+22|0]=B>>>16,E[I+23|0]=B>>>24,B=n[g+12>>2],A=n[g+8>>2],E[I+8|0]=A,E[I+9|0]=A>>>8,E[I+10|0]=A>>>16,E[I+11|0]=A>>>24,E[I+12|0]=B,E[I+13|0]=B>>>8,E[I+14|0]=B>>>16,E[I+15|0]=B>>>24,B=n[g+4>>2],A=n[g>>2],E[0|I]=A,E[I+1|0]=A>>>8,E[I+2|0]=A>>>16,E[I+3|0]=A>>>24,E[I+4|0]=B,E[I+5|0]=B>>>8,E[I+6|0]=B>>>16,E[I+7|0]=B>>>24,D=g- -64|0}function wA(A,I){var g,B,C=0,Q=0;Q=g=a[A+68|0]|a[A+69|0]<<8|a[A+70|0]<<16|a[A+71|0]<<24,(C=I+(B=a[A+64|0]|a[A+65|0]<<8|a[A+66|0]<<16|a[A+67|0]<<24)|0)>>>0<B>>>0&&(Q=Q+1|0),E[A+64|0]=C,E[A+65|0]=C>>>8,E[A+66|0]=C>>>16,E[A+67|0]=C>>>24,E[A+68|0]=Q,E[A+69|0]=Q>>>8,E[A+70|0]=Q>>>16,E[A+71|0]=Q>>>24,I=a[A+76|0]|a[A+77|0]<<8|a[A+78|0]<<16|a[A+79|0]<<24,(C=(Q=(0|Q)==(0|g)&C>>>0<B>>>0|Q>>>0<g>>>0)+(a[A+72|0]|a[A+73|0]<<8|a[A+74|0]<<16|a[A+75|0]<<24)|0)>>>0<Q>>>0&&(I=I+1|0),E[A+72|0]=C,E[A+73|0]=C>>>8,E[A+74|0]=C>>>16,E[A+75|0]=C>>>24,E[A+76|0]=I,E[A+77|0]=I>>>8,E[A+78|0]=I>>>16,E[A+79|0]=I>>>24}function hA(A,I){n[A>>2]=1634760805,n[A+4>>2]=857760878,n[A+8>>2]=2036477234,n[A+12>>2]=1797285236,n[A+16>>2]=a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24,n[A+20>>2]=a[I+4|0]|a[I+5|0]<<8|a[I+6|0]<<16|a[I+7|0]<<24,n[A+24>>2]=a[I+8|0]|a[I+9|0]<<8|a[I+10|0]<<16|a[I+11|0]<<24,n[A+28>>2]=a[I+12|0]|a[I+13|0]<<8|a[I+14|0]<<16|a[I+15|0]<<24,n[A+32>>2]=a[I+16|0]|a[I+17|0]<<8|a[I+18|0]<<16|a[I+19|0]<<24,n[A+36>>2]=a[I+20|0]|a[I+21|0]<<8|a[I+22|0]<<16|a[I+23|0]<<24,n[A+40>>2]=a[I+24|0]|a[I+25|0]<<8|a[I+26|0]<<16|a[I+27|0]<<24,n[A+44>>2]=a[I+28|0]|a[I+29|0]<<8|a[I+30|0]<<16|a[I+31|0]<<24}function DA(A){var I=0,g=0;if(!A)return-25;if(!n[A>>2])return-1;A:{I:{if(I=-2,!(r[A+4>>2]<16)&&(n[A+8>>2]||(I=-18,!n[A+12>>2]))){if(g=n[A+20>>2],!n[A+16>>2])break I;if(I=-6,!(g>>>0<8)&&(n[A+24>>2]||(I=-20,!n[A+28>>2]))&&(n[A+32>>2]||(I=-21,!n[A+36>>2]))&&(I=-14,!((g=n[A+44>>2])>>>0<8||(I=-15,g>>>0>2097152||(I=-14,g>>>0<(g=n[A+48>>2])<<3>>>0))))){if(!n[A+40>>2])return-12;if(!g)return-16;if(I=-17,!(g>>>0>16777215)){if(A=n[A+52>>2])break A;I=-28}}}return I}return g?-19:-6}return A>>>0>16777215?-29:0}function uA(A,I){for(var g=0,B=0,C=0,Q=0,i=0,n=0,r=0,o=0,e=0,t=0;E[A+g|0]=a[(g>>>3|0)+I|0]>>>(7&g)&1,256!=(0|(g=g+1|0)););for(C=254;;){n=(Q=n)+1|0;A:if(!(!a[0|(i=A+Q|0)]|Q>>>0>254))for(I=1,t=(C>>>0<5?C:5)+1|0,g=n;;){r=I;I:if(B=E[0|(I=A+g|0)])if((0|(e=(o=E[0|i])+(B<<=r)|0))<=15)E[0|i]=e,E[0|I]=0;else{if((0|(I=o-B|0))<-15)break A;for(E[0|i]=I;;){if(!a[0|(I=A+g|0)]){E[0|I]=1;break I}if(E[0|I]=0,I=g>>>0<255,g=g+1|0,!I)break}}if(g=Q+(I=r+1|0)|0,(0|r)==(0|t))break}if(C=C+-1|0,256==(0|n))break}}function pA(A,I,g){var B,C,Q,E,i,a,r,o,e,t,c,f,y,s,w,h,D,u,p,l;c=n[I+4>>2],B=n[A+4>>2],f=n[I+8>>2],C=n[A+8>>2],y=n[I+12>>2],Q=n[A+12>>2],s=n[I+16>>2],E=n[A+16>>2],w=n[I+20>>2],i=n[A+20>>2],h=n[I+24>>2],a=n[A+24>>2],D=n[I+28>>2],r=n[A+28>>2],u=n[I+32>>2],o=n[A+32>>2],p=n[I+36>>2],e=n[A+36>>2],t=n[A>>2],l=n[I>>2]^t,I=0-g|0,n[A>>2]=t^l&I,n[A+36>>2]=I&(e^p)^e,n[A+32>>2]=I&(o^u)^o,n[A+28>>2]=I&(r^D)^r,n[A+24>>2]=I&(a^h)^a,n[A+20>>2]=I&(i^w)^i,n[A+16>>2]=I&(E^s)^E,n[A+12>>2]=I&(Q^y)^Q,n[A+8>>2]=I&(C^f)^C,n[A+4>>2]=I&(B^c)^B}function lA(A,I,g,B){var C,Q,E,i,a=0;D=C=D+-64|0,eA(C+8|0,0,52),a=VA(A),n[C+20>>2]=a,n[C+36>>2]=a,n[C+4>>2]=a,Q=_(a),n[C+32>>2]=Q,E=_(a),n[C+16>>2]=E,i=_(a),n[C>>2]=i;A:if(!i|!Q|!E||!(a=_(a)))v(Q),v(E),v(i),A=-22;else{if(A=z(C,A,B)){v(n[C+32>>2]),v(n[C+16>>2]),v(n[C>>2]),v(a);break A}A=0,I=NA(n[C+40>>2],n[C+44>>2],n[C+52>>2],I,g,n[C+16>>2],n[C+20>>2],a,n[C+4>>2],0,0,B),v(n[C+32>>2]),v(n[C+16>>2]),(I||hI(a,n[C>>2],n[C+4>>2]))&&(A=-35),v(a),v(n[C>>2])}return D=C- -64|0,A}function FA(A,I){var g,B,C=0;D=g=D-288|0,J(B=A+40|0,I),Vg(C=A+80|0),U(g+240|0,B),H(g+192|0,g+240|0,2128),_A(g+240|0,g+240|0,C),HA(g+192|0,g+192|0,C),U(g+144|0,g+192|0),H(g+144|0,g+144|0,g+192|0),U(A,g+144|0),H(A,A,g+192|0),H(A,A,g+240|0),function(A,I){var g,B=0;for(D=g=D-144|0,U(g+96|0,I),U(g+48|0,g+96|0),U(g+48|0,g+48|0),H(g+48|0,I,g+48|0),H(g+96|0,g+96|0,g+48|0),U(g+96|0,g+96|0),H(g+96|0,g+48|0,g+96|0),U(g+48|0,g+96|0),B=1;U(g+48|0,g+48|0),5!=(0|(B=B+1|0)););for(H(g+96|0,g+48|0,g+96|0),U(g+48|0,g+96|0),B=1;U(g+48|0,g+48|0),10!=(0|(B=B+1|0)););for(H(g+48|0,g+48|0,g+96|0),U(g,g+48|0),B=1;U(g,g),20!=(0|(B=B+1|0)););for(H(g+48|0,g,g+48|0),U(g+48|0,g+48|0),B=1;U(g+48|0,g+48|0),10!=(0|(B=B+1|0)););for(H(g+96|0,g+48|0,g+96|0),U(g+48|0,g+96|0),B=1;U(g+48|0,g+48|0),50!=(0|(B=B+1|0)););for(H(g+48|0,g+48|0,g+96|0),U(g,g+48|0),B=1;U(g,g),100!=(0|(B=B+1|0)););for(H(g+48|0,g,g+48|0),U(g+48|0,g+48|0),B=1;U(g+48|0,g+48|0),50!=(0|(B=B+1|0)););H(g+96|0,g+48|0,g+96|0),U(g+96|0,g+96|0),U(g+96|0,g+96|0),H(A,g+96|0,I),D=g+144|0}(A,A),H(A,A,g+144|0),H(A,A,g+240|0),U(g+96|0,A),H(g+96|0,g+96|0,g+192|0),_A(g+48|0,g+96|0,g+240|0);A:{if(!tg(g+48|0)){if(HA(g,g+96|0,g+240|0),C=-1,!tg(g))break A;H(A,A,2176)}(0|yg(A))==(a[I+31|0]>>>7|0)&&TA(A,A),H(A+120|0,A,B),C=0}return D=g+288|0,C}function GA(A,I){var g,B=0;B=a[I+4|0]|a[I+5|0]<<8|a[I+6|0]<<16|a[I+7|0]<<24,g=a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24,E[A+32|0]=g,E[A+33|0]=g>>>8,E[A+34|0]=g>>>16,E[A+35|0]=g>>>24,E[A+36|0]=B,E[A+37|0]=B>>>8,E[A+38|0]=B>>>16,E[A+39|0]=B>>>24,B=a[I+12|0]|a[I+13|0]<<8|a[I+14|0]<<16|a[I+15|0]<<24,I=a[I+8|0]|a[I+9|0]<<8|a[I+10|0]<<16|a[I+11|0]<<24,E[A+40|0]=I,E[A+41|0]=I>>>8,E[A+42|0]=I>>>16,E[A+43|0]=I>>>24,E[A+44|0]=B,E[A+45|0]=B>>>8,E[A+46|0]=B>>>16,E[A+47|0]=B>>>24}function kA(A,I){var g,B=0;B=a[I+4|0]|a[I+5|0]<<8|a[I+6|0]<<16|a[I+7|0]<<24,g=a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24,E[A+48|0]=g,E[A+49|0]=g>>>8,E[A+50|0]=g>>>16,E[A+51|0]=g>>>24,E[A+52|0]=B,E[A+53|0]=B>>>8,E[A+54|0]=B>>>16,E[A+55|0]=B>>>24,B=a[I+12|0]|a[I+13|0]<<8|a[I+14|0]<<16|a[I+15|0]<<24,I=a[I+8|0]|a[I+9|0]<<8|a[I+10|0]<<16|a[I+11|0]<<24,E[A+56|0]=I,E[A+57|0]=I>>>8,E[A+58|0]=I>>>16,E[A+59|0]=I>>>24,E[A+60|0]=B,E[A+61|0]=B>>>8,E[A+62|0]=B>>>16,E[A+63|0]=B>>>24}function _A(A,I,g){var B,C,Q,E,i,a,r,o,e,t,c,f,y,s,w,h,D,u;B=n[g+4>>2],C=n[I+4>>2],Q=n[g+8>>2],E=n[I+8>>2],i=n[g+12>>2],a=n[I+12>>2],r=n[g+16>>2],o=n[I+16>>2],e=n[g+20>>2],t=n[I+20>>2],c=n[g+24>>2],f=n[I+24>>2],y=n[g+28>>2],s=n[I+28>>2],w=n[g+32>>2],h=n[I+32>>2],D=n[g+36>>2],u=n[I+36>>2],n[A>>2]=n[I>>2]-n[g>>2],n[A+36>>2]=u-D,n[A+32>>2]=h-w,n[A+28>>2]=s-y,n[A+24>>2]=f-c,n[A+20>>2]=t-e,n[A+16>>2]=o-r,n[A+12>>2]=a-i,n[A+8>>2]=E-Q,n[A+4>>2]=C-B}function HA(A,I,g){var B,C,Q,E,i,a,r,o,e,t,c,f,y,s,w,h,D,u;B=n[g+4>>2],C=n[I+4>>2],Q=n[g+8>>2],E=n[I+8>>2],i=n[g+12>>2],a=n[I+12>>2],r=n[g+16>>2],o=n[I+16>>2],e=n[g+20>>2],t=n[I+20>>2],c=n[g+24>>2],f=n[I+24>>2],y=n[g+28>>2],s=n[I+28>>2],w=n[g+32>>2],h=n[I+32>>2],D=n[g+36>>2],u=n[I+36>>2],n[A>>2]=n[g>>2]+n[I>>2],n[A+36>>2]=D+u,n[A+32>>2]=w+h,n[A+28>>2]=y+s,n[A+24>>2]=c+f,n[A+20>>2]=e+t,n[A+16>>2]=r+o,n[A+12>>2]=i+a,n[A+8>>2]=Q+E,n[A+4>>2]=B+C}function YA(A,I,g,B){var C=0,Q=0;A:{I:{g:{B:{C:{if(!n[I>>2]){if(C=a[I+8|0],Q=n[I+12>>2]+-1|0,!C)break B;if(C=o(C,n[A+20>>2]),I=n[I+12>>2],!B)break C;Q=(I+C|0)-1|0;break B}if(C=n[A+20>>2],A=n[A+24>>2],!B)break g;B=n[I+12>>2]+((-1^C)+A|0)|0;break I}Q=C-!I|0}B=Q,A=n[A+24>>2],Q=0;break A}B=(A-C|0)-!n[I+12>>2]|0}Q=0,3!=(0|(I=a[I+8|0]))&&(Q=o(C,I+1|0))}return C=Q,I=0,(C=(Q=B+-1|0)+C|0)>>>0<Q>>>0&&(I=1),xg(g,0,g,0),xg(B,0,l,0),function(A,I,g){var B=0,C=0,Q=0,E=0,i=0,n=0,a=0,r=0,t=0;A:{I:{g:{B:{C:{Q:{E:{i:{n:{if(C=I){if(!(B=g))break n;break i}return u=A-o((A>>>0)/(g>>>0)|0,g)|0,p=0,void(l=0)}if(!A)break E;break Q}if(!((E=B+-1|0)&B))break C;i=0-(E=(e(B)+33|0)-e(C)|0)|0;break g}return u=0,p=C,void(l=0)}if((B=32-e(C)|0)>>>0<31)break B;break I}if(u=A&E,p=0,1==(0|B))break A;return g=31&(A=B?31-e(B+-1^B)|0:32),void(l=32<=(63&A)>>>0?0:I>>>g|0)}E=B+1|0,i=63-B|0}if(B=I,Q=31&(C=63&E),32<=C>>>0?(C=0,Q=B>>>Q|0):(C=B>>>Q|0,Q=((1<<Q)-1&B)<<32-Q|A>>>Q),B=31&(i&=63),32<=i>>>0?(I=A<<B,A=0):(I=(1<<B)-1&A>>>32-B|I<<B,A<<=B),E)for(B=-1,-1!=(0|(i=g+-1|0))&&(B=0);Q=(a=n=Q<<1|I>>>31)-(r=g&(n=B-((C=C<<1|Q>>>31)+(i>>>0<n>>>0)|0)>>31))|0,C=C-(a>>>0<r>>>0)|0,I=I<<1|A>>>31,A=t|A<<1,t=1&n,E=E+-1|0;);return u=Q,p=C,void(l=I<<1|A>>>31)}u=A,p=I,I=0}l=I}(C-(g=l)|0,I-(C>>>0<g>>>0)|0,A),l=p,u}function bA(A,I,g,B,C){var Q;if(D=Q=D-192|0,!(!g|(I+-1&255)>>>0>=64))return i[Q+130>>1]=257,E[Q+129|0]=32,E[Q+128|0]=I,ug(Q+128|4),LI(Q+128|8,0,0),n[Q+152>>2]=0,n[Q+156>>2]=0,n[Q+144>>2]=0,n[Q+148>>2]=0,B?GA(Q+128|0,B):(n[Q+168>>2]=0,n[Q+172>>2]=0,n[Q+160>>2]=0,n[Q+164>>2]=0),C?kA(Q+128|0,C):(n[Q+184>>2]=0,n[Q+188>>2]=0,n[Q+176>>2]=0,n[Q+180>>2]=0),vA(A,Q+128|0),eA(Q+32|0,0,96),rA(I=A,A=j(Q,g,32),128,0),KI(A,128),void(D=A+192|0);Gg(),t()}function mA(A){var I,g=0,B=0,C=0,Q=0;for(E[11+(I=D-16|0)|0]=0,E[I+12|0]=0,E[I+13|0]=0,E[I+14|0]=0,n[I+8>>2]=0;;){for(C=a[A+B|0],g=0;E[0|(Q=(I+8|0)+g|0)]=a[0|Q]|C^a[(34464+(g<<5)|0)+B|0],7!=(0|(g=g+1|0)););if(31==(0|(B=B+1|0)))break}for(B=127&a[A+31|0],A=0,g=0;E[0|(C=(I+8|0)+g|0)]=a[0|C]|B^a[34495+(g<<5)|0],7!=(0|(g=g+1|0)););for(g=0;g=a[(I+8|0)+A|0]+-1|g,7!=(0|(A=A+1|0)););return g>>>8&1}function UA(A){var I,g=0,B=0,C=0,Q=0;for(E[11+(I=D-16|0)|0]=0,E[I+12|0]=0,E[I+13|0]=0,E[I+14|0]=0,n[I+8>>2]=0;;){for(C=a[A+B|0],g=0;E[0|(Q=(I+8|0)+g|0)]=a[0|Q]|C^a[(3232+(g<<5)|0)+B|0],7!=(0|(g=g+1|0)););if(31==(0|(B=B+1|0)))break}for(B=127&a[A+31|0],A=0,g=0;E[0|(C=(I+8|0)+g|0)]=a[0|C]|B^a[3263+(g<<5)|0],7!=(0|(g=g+1|0)););for(g=0;g=a[(I+8|0)+A|0]+-1|g,7!=(0|(A=A+1|0)););return g>>>8&1}function vA(A,I){var g=0,B=0,C=0,Q=0,i=0;for(eA(j(A,1952,64)- -64|0,0,293);C=B=(g=Q<<3)+A|0,g=I+g|0,i=a[0|B]|a[B+1|0]<<8|a[B+2|0]<<16|a[B+3|0]<<24,B=(a[g+4|0]|a[g+5|0]<<8|a[g+6|0]<<16|a[g+7|0]<<24)^(a[B+4|0]|a[B+5|0]<<8|a[B+6|0]<<16|a[B+7|0]<<24),g=(a[0|g]|a[g+1|0]<<8|a[g+2|0]<<16|a[g+3|0]<<24)^i,E[0|C]=g,E[C+1|0]=g>>>8,E[C+2|0]=g>>>16,E[C+3|0]=g>>>24,E[C+4|0]=B,E[C+5|0]=B>>>8,E[C+6|0]=B>>>16,E[C+7|0]=B>>>24,8!=(0|(Q=Q+1|0)););}function SA(A,I){var g,B=0,C=0,Q=0,E=0;if(D=g=D-48|0,!((B=DA(A))||(B=-26,I+-1>>>0>1||(Q=n[A+44>>2],B=n[A+48>>2],n[g>>2]=0,C=n[A+40>>2],n[g+28>>2]=B,n[g+12>>2]=-1,n[g+8>>2]=C,B=((C=Q>>>0<(C=B<<3)>>>0?C:Q)>>>0)/((Q=B<<2)>>>0)|0,n[g+20>>2]=B,n[g+24>>2]=B<<2,n[g+16>>2]=o(B,Q),B=n[A+52>>2],n[g+36>>2]=I,n[g+32>>2]=B,B=function(A,I){var g,B=0;return D=g=D-80|0,B=-25,!A|!I||(B=_(n[A+20>>2]<<3),n[A+4>>2]=B,B?(B=function(A,I){var g,B=0,C=0;D=g=D-16|0,C=-22;A:if(!(!A|!I)&&1024==(((B=I<<10)>>>0)/(I>>>0)|0)&&(I=_(12),n[A>>2]=I,I)){n[I>>2]=0,n[I+4>>2]=0,I=function(A,I){if(4294967168<I>>>0)A=48;else{if(!(I=function(A){var I=0,g=0,B=0,C=0,Q=0,E=0;return 4294967168<=A>>>0?(n[8960]=48,0):(A=_(76+(B=A>>>0<11?16:A+11&-8)|0))?(I=A+-8|0,63&A?(C=(-8&(E=n[(Q=A+-4|0)>>2]))-(g=(A=(A=(A+63&-64)-8|0)-I>>>0>15?A:A- -64|0)-I|0)|0,3&E?(n[A+4>>2]=C|1&n[A+4>>2]|2,n[4+(C=A+C|0)>>2]=1|n[C+4>>2],n[Q>>2]=g|1&n[Q>>2]|2,n[A+4>>2]=1|n[A+4>>2],S(I,g)):(I=n[I>>2],n[A+4>>2]=C,n[A>>2]=I+g)):A=I,3&(I=n[A+4>>2])&&((g=-8&I)>>>0<=B+16>>>0||(n[A+4>>2]=B|1&I|2,I=A+B|0,B=g-B|0,n[I+4>>2]=3|B,n[4+(g=A+g|0)>>2]=1|n[g+4>>2],S(I,B))),A+8|0):0}(I)))return 48;n[A>>2]=I,A=0}return A}(g+12|0,B),n[8960]=I;I:{if(I)n[g+12>>2]=0;else if(I=n[g+12>>2])break I;v(n[A>>2]),n[A>>2]=0;break A}n[n[A>>2]>>2]=I,n[n[A>>2]+4>>2]=I,n[n[A>>2]+8>>2]=B,C=0}return D=g+16|0,C}(A,n[A+16>>2]))?xI(A,n[I+56>>2]):(gA(g,I,n[A+36>>2]),KI(g- -64|0,8),function(A,I){var g,B=0,C=0,Q=0;if(D=g=D-1024|0,n[I+28>>2])for(Q=A+68|0,C=A- -64|0;fg(C,0),fg(Q,B),L(g,1024,A,72),fI(n[n[I>>2]+4>>2]+(o(n[I+24>>2],B)<<10)|0,g),fg(C,1),L(g,1024,A,72),fI(1024+(n[n[I>>2]+4>>2]+(o(n[I+24>>2],B)<<10)|0)|0,g),(B=B+1|0)>>>0<r[I+28>>2];);KI(g,1024),D=g+1024|0}(g,A),KI(g,72),B=0):B=-22),D=g+80|0,B}(g,A))))){if(n[g+8>>2])for(;JA(g,E),(E=E+1|0)>>>0<r[g+8>>2];);!function(A,I){var g,B=0,C=0;if(D=g=D-2048|0,!(!A|!I)){if(BB(g+1024|0,(n[n[I>>2]+4>>2]+(n[I+24>>2]<<10)|0)-1024|0),r[I+28>>2]>=2)for(B=1;C=n[I+24>>2],YI(g+1024|0,(n[n[I>>2]+4>>2]+(C+o(B,C)<<10)|0)-1024|0),(B=B+1|0)>>>0<r[I+28>>2];);!function(A,I){for(var g=0,B=0;LI((g=B<<3)+A|0,n[(g=I+g|0)>>2],n[g+4>>2]),128!=(0|(B=B+1|0)););}(g,g+1024|0),L(n[A>>2],n[A+4>>2],g,1024),KI(g+1024|0,1024),KI(g,1024),xI(I,n[A+56>>2])}D=g+2048|0}(A,g),B=0}return D=g+48|0,B}function NA(A,I,g,B,C,Q,E,i,a,r,o,e){var t,c;return D=t=D+-64|0,(c=_(a))?(n[t+32>>2]=0,n[t+36>>2]=0,n[t+24>>2]=0,n[t+28>>2]=0,n[t+20>>2]=E,n[t+16>>2]=Q,n[t+12>>2]=C,n[t+8>>2]=B,n[t+4>>2]=a,n[t>>2]=c,n[t+56>>2]=0,n[t+52>>2]=g,n[t+48>>2]=g,n[t+44>>2]=I,n[t+40>>2]=A,(g=SA(t,e))?KI(c,a):(i&&j(i,c,a),!r|!o||!x(r,o,t,e)?(KI(c,a),g=0):(KI(c,a),KI(r,o),g=-31)),v(c)):g=-22,D=t- -64|0,g}function RA(A,I,g,B,C){var Q,E=0,i=0;D=Q=D+-64|0;A:{I:{if((E=VA(A))>>>0<128&&!g|g>>>0<0){if(g=eA(Q,0,60),i=JI(E))break I}else n[8960]=28;A=-1;break A}n[g+32>>2]=0,n[g+36>>2]=0,n[g+8>>2]=i,n[g+16>>2]=i,n[g+20>>2]=E,n[g>>2]=i,n[g+12>>2]=E,n[g+24>>2]=0,n[g+28>>2]=0,n[g+4>>2]=E,z(g,A,C)?(n[8960]=28,A=-1):(A=1,(0|I)==n[g+40>>2]&&(A=n[g+44>>2]!=(B>>>10|0))),v(i)}return D=Q- -64|0,A}function MA(A,I,g,B,C,Q){var E,i,n=0,a=0,r=0;return D=E=D-592|0,n=-1,SI(i=A+32|0)&&(UA(A)||PI(C)&&(UA(C)||FA(E+128|0,C)||(Ng(E+384|0,Q),W(E+384|0,A,32,0),W(E+384|0,C,32,0),W(E+384|0,I,g,B),ag(E+384|0,E+320|0),k(E+320|0),T(E+8|0,E+320|0,E+128|0,i),NI(E+288|0,E+8|0),a=-1,r=$g(E+288|0,A),n=((E+288|0)==(0|A)?a:r)|hI(A,E+288|0,32)))),D=E+592|0,n}function dA(A,I){var g,B=0,C=0;for(D=g=D-192|0,rg(A),eA(g- -64|0,54,128),E[g+64|0]=54^a[0|I],B=1;E[0|(C=(g- -64|0)+B|0)]=a[0|C]^a[I+B|0],32!=(0|(B=B+1|0)););for(W(A,g- -64|0,128,0),rg(A=A+208|0),eA(g- -64|0,92,128),E[g+64|0]=92^a[0|I],B=1;E[0|(C=(g- -64|0)+B|0)]=a[0|C]^a[I+B|0],32!=(0|(B=B+1|0)););W(A,g- -64|0,128,0),KI(g- -64|0,128),KI(g,64),D=g+192|0}function PA(A,I,g,B,C,Q,E,i,n,a){var r;return D=r=D-352|0,IB(r+32|0,64,n,a),Og(r+96|0,r+32|0),KI(r+32|0,64),Lg(r+96|0,Q,E,i),Lg(r+96|0,34688,0-E&15,0),Lg(r+96|0,I,g,B),Lg(r+96|0,34688,0-g&15,0),LI(r+24|0,E,i),Lg(r+96|0,r+24|0,8,0),LI(r+24|0,g,B),Lg(r+96|0,r+24|0,8,0),zg(r+96|0,r),KI(r+96|0,256),C=AB(r,C),KI(r,16),A&&(C?(eA(A,0,g),C=-1):(uI(A,I,g,B,n,1,a),C=0)),D=r+352|0,C}function JA(A,I){var g,B=0,C=0,Q=0;if(D=g=D-32|0,!(!A|!n[A+28>>2]))for(n[g+16>>2]=I,B=1;;){if(E[g+24|0]=C,I=0,Q=0,B)for(;n[g+28>>2]=0,B=n[g+28>>2],n[g+8>>2]=n[g+24>>2],n[g+12>>2]=B,n[g+20>>2]=I,B=n[g+20>>2],n[g>>2]=n[g+16>>2],n[g+4>>2]=B,EA(A,g),(I=I+1|0)>>>0<(Q=n[A+28>>2])>>>0;);if(B=Q,4==(0|(C=C+1|0)))break}D=g+32|0}function xA(A,I,g,B,C,Q){var E,i;return D=E=D-32|0,i=a[0|C]|a[C+1|0]<<8|a[C+2|0]<<16|a[C+3|0]<<24,C=a[C+4|0]|a[C+5|0]<<8|a[C+6|0]<<16|a[C+7|0]<<24,n[E+24>>2]=0,n[E+28>>2]=0,n[E+16>>2]=i,n[E+20>>2]=C,LI(E,g,B),n[E+8>>2]=0,n[E+12>>2]=0,I+-16>>>0>=49?(n[8960]=28,A=-1):(g=E+16|0,A=I+-1>>>0>63?-1:function(A,I,g,B,C){var Q,E=0;if(Q=E=D,D=E=E-384&-64,!(!I|!A|(g+-1&255)>>>0>=64))return bA(E,g,I,B,C),rA(E,0,0,0),P(E,A,g),D=Q,0;Gg(),t()}(A,Q,255&I,E,g)),D=E+32|0,A}function LA(A,I,g,B,C,Q,E,i,a,r,o){var e;return D=e=D-336|0,IB(e+16|0,64,r,o),Og(e+80|0,e+16|0),KI(e+16|0,64),Lg(e+80|0,E,i,a),Lg(e+80|0,34688,0-i&15,0),uI(A,B,C,Q,r,1,o),Lg(e+80|0,A,C,Q),Lg(e+80|0,34688,0-C&15,0),LI(e+8|0,i,a),Lg(e+80|0,e+8|0,8,0),LI(e+8|0,C,Q),Lg(e+80|0,e+8|0,8,0),zg(e+80|0,I),KI(e+80|0,256),g&&(n[g>>2]=16,n[g+4>>2]=0),D=e+336|0,0}function KA(A,I,g,B,C,Q){var E=0;A:{I:{if(!(!C&B>>>0<64|C>>>0<0||(C=C+-1|0,(B=B+-64|0)>>>0<4294967232&&(C=C+1|0),!C&B>>>0>4294967231|C>>>0>0))){if(!Rg(g,E=g- -64|0,B,C,Q))break I;A&&eA(A,0,B)}if(g=-1,!I)break A;return n[I>>2]=0,n[I+4>>2]=0,-1}I&&(n[I>>2]=B,n[I+4>>2]=C),g=0,A&&aA(A,E,B)}return g}function qA(A,I,g,B,C,Q,E,i,n,a){var r;return D=r=D-352|0,Jg(r+32|0,n,a),Og(r+96|0,r+32|0),KI(r+32|0,64),Lg(r+96|0,Q,E,i),LI(r+24|0,E,i),Lg(r+96|0,r+24|0,8,0),Lg(r+96|0,I,g,B),LI(r+24|0,g,B),Lg(r+96|0,r+24|0,8,0),zg(r+96|0,r),KI(r+96|0,256),C=AB(r,C),KI(r,16),A&&(C?(eA(A,0,g),C=-1):(Bg(A,I,g,B,n,a),C=0)),D=r+352|0,C}function XA(A,I){var g,B=0,C=0,Q=0,E=0,i=0;A:if(!(((g=a[0|A])+-48&255)>>>0>9)){for(C=g,B=A;;){if(E=B,Q>>>0>429496729)break A;if((B=(255&C)-48|0)>>>0>(-1^(C=o(Q,10)))>>>0)break A;if(Q=B+C|0,!(((C=a[0|(B=E+1|0)])+-48&255)>>>0<10))break}(0|A)==(0|B)|(48==(0|g)?(0|A)!=(0|E):0)||(n[I>>2]=Q,i=B)}return i}function VA(A){var I=0,g=0,B=0;A:{I:if(3&(I=A)){if(!a[0|A])return 0;for(;;){if(!(3&(I=I+1|0)))break I;if(!a[0|I])break}break A}for(;g=I,I=I+4|0,!((-1^(B=n[g>>2]))&B+-16843009&-2139062144););if(!(255&B))return g-A|0;for(;B=a[g+1|0],g=I=g+1|0,B;);}return I-A|0}function TA(A,I){var g,B,C,Q,E,i,a,r,o;g=n[I+4>>2],B=n[I+8>>2],C=n[I+12>>2],Q=n[I+16>>2],E=n[I+20>>2],i=n[I+24>>2],a=n[I+28>>2],r=n[I+32>>2],o=n[I+36>>2],n[A>>2]=0-n[I>>2],n[A+36>>2]=0-o,n[A+32>>2]=0-r,n[A+28>>2]=0-a,n[A+24>>2]=0-i,n[A+20>>2]=0-E,n[A+16>>2]=0-Q,n[A+12>>2]=0-C,n[A+8>>2]=0-B,n[A+4>>2]=0-g}function WA(A,I,g){var B=0;B=I<<8&16711680|I<<24,B|=255&(g<<8|I>>>24)|65280&(g<<24|I>>>8),I=-16777216&((255&g)<<24|I>>>8)|16711680&((16777215&g)<<8|I>>>24)|g>>>8&65280|g>>>24|0,E[0|A]=I,E[A+1|0]=I>>>8,E[A+2|0]=I>>>16,E[A+3|0]=I>>>24,I=B,E[A+4|0]=I,E[A+5|0]=I>>>8,E[A+6|0]=I>>>16,E[A+7|0]=I>>>24}function jA(A,I,g){var B;B=A,g?(n[A+48>>2]=a[0|g]|a[g+1|0]<<8|a[g+2|0]<<16|a[g+3|0]<<24,g=a[g+4|0]|a[g+5|0]<<8|a[g+6|0]<<16|a[g+7|0]<<24):(n[A+48>>2]=0,g=0),n[B+52>>2]=g,n[A+56>>2]=a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24,n[A+60>>2]=a[I+4|0]|a[I+5|0]<<8|a[I+6|0]<<16|a[I+7|0]<<24}function ZA(A,I){var g,B,C,Q,E,i,a,r,o;g=n[I+8>>2],B=n[I+12>>2],C=n[I+16>>2],Q=n[I+20>>2],E=n[I+24>>2],i=n[I+28>>2],a=n[I>>2],r=n[I+4>>2],o=n[I+36>>2],n[A+32>>2]=n[I+32>>2],n[A+36>>2]=o,n[A+24>>2]=E,n[A+28>>2]=i,n[A+16>>2]=C,n[A+20>>2]=Q,n[A+8>>2]=g,n[A+12>>2]=B,n[A>>2]=a,n[A+4>>2]=r}function OA(A,I,g,B,C,Q,E,i,a,r,o){var e;return D=e=D-336|0,Jg(e+16|0,r,o),Og(e+80|0,e+16|0),KI(e+16|0,64),Lg(e+80|0,E,i,a),LI(e+8|0,i,a),Lg(e+80|0,e+8|0,8,0),Bg(A,B,C,Q,r,o),Lg(e+80|0,A,C,Q),LI(e+8|0,C,Q),Lg(e+80|0,e+8|0,8,0),zg(e+80|0,I),KI(e+80|0,256),g&&(n[g>>2]=16,n[g+4>>2]=0),D=e+336|0,0}function zA(A){var I;return I=a[0|A]|a[A+1|0]<<8|a[A+2|0]<<16|a[A+3|0]<<24,A=a[A+4|0]|a[A+5|0]<<8|a[A+6|0]<<16|a[A+7|0]<<24,l=65280&(A<<24|I>>>8)|255&(A<<8|I>>>24)|I<<8&16711680|I<<24,-16777216&((255&A)<<24|I>>>8)|16711680&((16777215&A)<<8|I>>>24)|A>>>8&65280|A>>>24|0}function $A(A,I,g,B,C,Q,E,i,r,o,e){var t;return D=t=D-48|0,n[t+4>>2]=0,K(t+16|0,o,e),e=a[o+16|0]|a[o+17|0]<<8|a[o+18|0]<<16|a[o+19|0]<<24,o=a[o+20|0]|a[o+21|0]<<8|a[o+22|0]<<16|a[o+23|0]<<24,n[t+8>>2]=e,n[t+12>>2]=o,function(A,I,g,B,C,Q,E,i,a,r,o){var e;D=e=D-336|0,Pg(e+16|0,64,r,o),Og(e+80|0,e+16|0),KI(e+16|0,64),Lg(e+80|0,E,i,a),Lg(e+80|0,34704,0-i&15,0),gg(A,B,C,Q,r,1,o),Lg(e+80|0,A,C,Q),Lg(e+80|0,34704,0-C&15,0),LI(e+8|0,i,a),Lg(e+80|0,e+8|0,8,0),LI(e+8|0,C,Q),Lg(e+80|0,e+8|0,8,0),zg(e+80|0,I),KI(e+80|0,256),g&&(n[g>>2]=16,n[g+4>>2]=0),D=e+336|0}(A,I,g,B,C,Q,E,i,r,t+4|0,t+16|0),KI(t+16|0,32),D=t+48|0,0}function AI(A,I,g,B,C,Q,E,i,r,o){var e;return D=e=D-48|0,n[e+4>>2]=0,K(e+16|0,r,o),o=a[r+16|0]|a[r+17|0]<<8|a[r+18|0]<<16|a[r+19|0]<<24,r=a[r+20|0]|a[r+21|0]<<8|a[r+22|0]<<16|a[r+23|0]<<24,n[e+8>>2]=o,n[e+12>>2]=r,A=function(A,I,g,B,C,Q,E,i,n,a){var r;return D=r=D-352|0,Pg(r+32|0,64,n,a),Og(r+96|0,r+32|0),KI(r+32|0,64),Lg(r+96|0,Q,E,i),Lg(r+96|0,34704,0-E&15,0),Lg(r+96|0,I,g,B),Lg(r+96|0,34704,0-g&15,0),LI(r+24|0,E,i),Lg(r+96|0,r+24|0,8,0),LI(r+24|0,g,B),Lg(r+96|0,r+24|0,8,0),zg(r+96|0,r),KI(r+96|0,256),C=AB(r,C),KI(r,16),A&&(C?(eA(A,0,g),C=-1):(gg(A,I,g,B,n,1,a),C=0)),D=r+352|0,C}(A,I,g,B,C,Q,E,i,e+4|0,e+16|0),KI(e+16|0,32),D=e+48|0,A}function II(A,I,g,B){var C;if(D=C=D-192|0,!(!g|(I+-1&255)>>>0>=64|(B+-1&255)>>>0>=64))return i[C+130>>1]=257,E[C+129|0]=B,E[C+128|0]=I,ug(C+128|4),LI(C+128|8,0,0),eA(C+144|0,0,48),vA(A,C+128|0),eA(B+C|0,0,128-B|0),rA(I=A,A=j(C,g,B),128,0),KI(A,128),D=A+192|0,0;Gg(),t()}function gI(A,I,g,B,C,Q,E,i,a,r){var o=0,e=0;return o=-1,!C&B>>>0>=16|C>>>0>0&&(e=A,A=C+-1|0,(o=B+-16|0)>>>0<4294967280&&(A=A+1|0),o=PA(e,g,o,A,(g+B|0)-16|0,Q,E,i,a,r)),I&&(A=C+-1|0,(g=B+-16|0)>>>0<4294967280&&(A=A+1|0),n[(Q=I)>>2]=o?0:g,n[I+4>>2]=o?0:A),o}function BI(A,I,g,B,C,Q,E,i,a,r){var o=0,e=0;return o=-1,!C&B>>>0>=16|C>>>0>0&&(e=A,A=C+-1|0,(o=B+-16|0)>>>0<4294967280&&(A=A+1|0),o=AI(e,g,o,A,(g+B|0)-16|0,Q,E,i,a,r)),I&&(A=C+-1|0,(g=B+-16|0)>>>0<4294967280&&(A=A+1|0),n[(Q=I)>>2]=o?0:g,n[I+4>>2]=o?0:A),o}function CI(A,I,g,B,C,Q,E,i,a,r){var o=0,e=0;return o=-1,!C&B>>>0>=16|C>>>0>0&&(e=A,A=C+-1|0,(o=B+-16|0)>>>0<4294967280&&(A=A+1|0),o=qA(e,g,o,A,(g+B|0)-16|0,Q,E,i,a,r)),I&&(A=C+-1|0,(g=B+-16|0)>>>0<4294967280&&(A=A+1|0),n[(Q=I)>>2]=o?0:g,n[I+4>>2]=o?0:A),o}function QI(A,I,g,B,C,Q){var E,i;return D=E=D-16|0,i=g,g=B,mg(A,E+8|0,aA(A- -64|0,i,B),B,C,Q),64!=n[E+8>>2]|n[E+12>>2]?(I&&(n[I>>2]=0,n[I+4>>2]=0),eA(A,0,g- -64|0),A=-1):(A=0,I&&(n[I>>2]=B- -64,n[I+4>>2]=C-((B>>>0<4294967232)+-1|0))),D=E+16|0,A}function EI(A,I,g,B,C,Q,E){var i;return D=i=D-16|0,A=eA(A,0,128),B|=Q,E>>>0<2147483649&&!B|B>>>0<0?E>>>0>8191&&!Q&C>>>0>=3|Q>>>0>0?(qI(i,16),A=NA(C,E>>>10|0,1,I,g,i,16,0,32,A,128,1)?-1:0):(n[8960]=28,A=-1):(n[8960]=22,A=-1),D=i+16|0,A}function iI(A,I,g){n[A+48>>2]=g?a[0|g]|a[g+1|0]<<8|a[g+2|0]<<16|a[g+3|0]<<24:0,n[A+52>>2]=a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24,n[A+56>>2]=a[I+4|0]|a[I+5|0]<<8|a[I+6|0]<<16|a[I+7|0]<<24,n[A+60>>2]=a[I+8|0]|a[I+9|0]<<8|a[I+10|0]<<16|a[I+11|0]<<24}function nI(A,I,g,B,C,Q,E){var i;return D=i=D-16|0,A=eA(A,0,128),B|=Q,E>>>0<2147483649&&!B|B>>>0<0?E>>>0>8191&&C|Q?(qI(i,16),A=NA(C,E>>>10|0,1,I,g,i,16,0,32,A,128,2)?-1:0):(n[8960]=28,A=-1):(n[8960]=22,A=-1),D=i+16|0,A}function aI(A){var I=0;return(0-(I=A+4&(A+65488>>>8^-1)&(57-A>>>8^-1)&255|((I=A+-65|0)>>>8^-1)&I&(90-A>>>8^-1)&255|A+185&(A+65439>>>8^-1)&(122-A>>>8^-1)&255|63&(1+(16288^A)>>>8^-1)|62&(1+(16338^A)>>>8^-1))>>>8^-1)&1+(65470^A)>>>8&255|I}function rI(A){var I=0;return(0-(I=A+4&(A+65488>>>8^-1)&(57-A>>>8^-1)&255|((I=A+-65|0)>>>8^-1)&I&(90-A>>>8^-1)&255|A+185&(A+65439>>>8^-1)&(122-A>>>8^-1)&255|63&(1+(16336^A)>>>8^-1)|62&(1+(16340^A)>>>8^-1))>>>8^-1)&1+(65470^A)>>>8&255|I}function oI(A,I){var g,B,C=0,Q=0,i=0,n=0;for(D=g=D-16|0,C=10;n=C,i=(I>>>0)/10|0,E[0|(Q=(C=C+-1|0)+(g+6|0)|0)]=I-o(i,10)|48,!(I>>>0<10)&&(I=i,C););B=j(I=A,Q,A=11-n|0)+A|0,E[0|B]=0,D=g+16|0}function eI(A,I,g){var B=0,C=0,Q=0;if(!g)return 0;A:if(B=a[0|A]){for(;;){if((0|(C=a[0|I]))==(0|B)&&!(!(g=g+-1|0)|!C)){if(I=I+1|0,B=a[A+1|0],A=A+1|0,B)continue;break A}break}Q=B}return(255&Q)-a[0|I]|0}function tI(A,I,g){var B,C,Q,E=0;D=C=D-48|0,HA(A,E=I+40|0,I),_A(B=A+40|0,E,I),H(E=A+80|0,A,g),H(B,B,g+40|0),H(Q=A+120|0,g+120|0,I+120|0),H(A,I+80|0,g+80|0),HA(C,A,A),_A(A,E,B),HA(B,E,B),HA(E,C,Q),_A(Q,C,Q),D=C+48|0}function cI(A,I,g){var B,C,Q,E=0;D=C=D-48|0,HA(A,E=I+40|0,I),_A(B=A+40|0,E,I),H(E=A+80|0,A,g+40|0),H(B,B,g),H(Q=A+120|0,g+120|0,I+120|0),H(A,I+80|0,g+80|0),HA(C,A,A),_A(A,E,B),HA(B,E,B),_A(E,C,Q),HA(Q,C,Q),D=C+48|0}function fI(A,I){for(var g=0,B=0,C=0,Q=0;C=(g=B<<3)+A|0,Q=a[0|(g=I+g|0)]|a[g+1|0]<<8|a[g+2|0]<<16|a[g+3|0]<<24,g=a[g+4|0]|a[g+5|0]<<8|a[g+6|0]<<16|a[g+7|0]<<24,n[C>>2]=Q,n[C+4>>2]=g,128!=(0|(B=B+1|0)););}function yI(A,I,g){var B;if(n[12+(B=D-16|0)>>2]=A,n[B+8>>2]=I,I=0,n[B+4>>2]=0,(0|g)>=1)for(;n[B+4>>2]=n[B+4>>2]|a[n[B+8>>2]+I|0]^a[n[B+12>>2]+I|0],(0|g)!=(0|(I=I+1|0)););return(n[B+4>>2]+-1>>>8&1)-1|0}function sI(A,I,g){var B,C,Q,E=0;D=C=D-48|0,HA(A,E=I+40|0,I),_A(B=A+40|0,E,I),H(E=A+80|0,A,g+40|0),H(B,B,g),H(Q=A+120|0,g+80|0,I+120|0),HA(C,I=I+80|0,I),_A(A,E,B),HA(B,E,B),_A(E,C,Q),HA(Q,C,Q),D=C+48|0}function wI(A,I,g){var B,C,Q,E=0;D=C=D-48|0,HA(A,E=I+40|0,I),_A(B=A+40|0,E,I),H(E=A+80|0,A,g),H(B,B,g+40|0),H(Q=A+120|0,g+80|0,I+120|0),HA(C,I=I+80|0,I),_A(A,E,B),HA(B,E,B),HA(E,C,Q),_A(Q,C,Q),D=C+48|0}function hI(A,I,g){var B;if(n[12+(B=D-16|0)>>2]=A,n[B+8>>2]=I,I=0,E[B+7|0]=0,g)for(;E[B+7|0]=a[B+7|0]|a[n[B+8>>2]+I|0]^a[n[B+12>>2]+I|0],(0|g)!=(0|(I=I+1|0)););return(a[B+7|0]+-1>>>8&1)-1|0}function DI(A,I,g){var B,C=0,i=0;if(D=B=D-16|0,E[B+15|0]=0,i=-1,!(0|Q[n[8949]](A,I,g))){for(;E[B+15|0]=a[A+C|0]|a[B+15|0],32!=(0|(C=C+1|0)););i=0-(a[B+15|0]+-1>>>8&1)|0}return D=B+16|0,i}function uI(A,I,g,B,C,Q,E){var i,n=0,a=0;n=B,(a=g+63|0)>>>0<63&&(n=n+1|0),i=n>>>6|0,a=0-(n=(63&n)<<26|a>>>6)|0,!(n=1-(i+(0<n>>>0)|0)|0)&a>>>0<Q>>>0|n>>>0<0&&(Gg(),t()),gg(A,I,g,B,C,Q,E)}function pI(A,I){var g,B,C,Q,E;D=B=D-48|0,U(A,I),U(g=A+80|0,E=I+40|0),Y(Q=A+120|0,I+80|0),HA(C=A+40|0,I,E),U(B,C),HA(C,g,A),_A(g,g,A),_A(A,B,C),_A(Q,Q,g),D=B+48|0}function lI(A,I){var g;return D=g=D+-64|0,(I+-1&255)>>>0>=64&&(Gg(),t()),E[g+3|0]=1,E[g+1|0]=256,E[g+2|0]=1,E[0|g]=I,ug(4|g),LI(8|g,0,0),eA(g+16|0,0,48),vA(A,g),D=g- -64|0,0}function FI(A){var I,g;return(A=(I=n[9108])+(g=A+3&-4)|0)>>>0<=I>>>0&&(0|g)>=1||A>>>0>hB()<<16>>>0&&!(0|h(0|A))?(n[8960]=48,-1):(n[9108]=A,I)}function GI(A,I,g,B,C,Q,E){var i=0,n=0,a=0;return!B&g>>>0>=16|B>>>0>0?(i=A,n=I+16|0,a=I,A=B+-1|0,(I=g+-16|0)>>>0<4294967280&&(A=A+1|0),A=WI(i,n,a,I,A,C,Q,E)):A=-1,A}function kI(A,I,g,B,C,Q,E,i,a,r){if(!C&B>>>0<4294967280|C>>>0<0)return OA(A,A+B|0,0,g,B,C,Q,E,i,a,r),I&&((A=B+16|0)>>>0<16&&(C=C+1|0),n[I>>2]=A,n[I+4>>2]=C),0;Gg(),t()}function _I(A,I,g,B,C,Q,E,i,a,r){if(!C&B>>>0<4294967280|C>>>0<0)return LA(A,A+B|0,0,g,B,C,Q,E,i,a,r),I&&((A=B+16|0)>>>0<16&&(C=C+1|0),n[I>>2]=A,n[I+4>>2]=C),0;Gg(),t()}function HI(A,I,g,B,C,Q,E,i,a,r){if(!C&B>>>0<4294967280|C>>>0<0)return $A(A,A+B|0,0,g,B,C,Q,E,i,a,r),I&&((A=B+16|0)>>>0<16&&(C=C+1|0),n[I>>2]=A,n[I+4>>2]=C),0;Gg(),t()}function YI(A,I){for(var g=0,B=0,C=0,Q=0;B=(g=C<<3)+A|0,Q=n[(g=I+g|0)>>2],g=n[B+4>>2]^n[g+4>>2],n[B>>2]=n[B>>2]^Q,n[B+4>>2]=g,128!=(0|(C=C+1|0)););}function bI(A){var I,g;return 95&(1+(32704^A)>>>8^-1)|45&(1+(16321^A)>>>8^-1)|(I=A+65510>>>8&255)&A+65|(g=A+65484>>>8|0)&A+71&(255^I)|A+252&A+65474>>>8&(-1^g)&255}function mI(A){var I,g;return 47&(1+(16320^A)>>>8^-1)|43&(1+(16321^A)>>>8^-1)|(I=A+65510>>>8&255)&A+65|(g=A+65484>>>8|0)&A+71&(255^I)|A+252&A+65474>>>8&(-1^g)&255}function UI(A,I,g,B,C,Q,E,i,a,r,o){switch(o+-1|0){case 0:return function(A,I,g,B,C,Q,E,i,a,r){var o,e;o=I,e=eA(A,0,I),A=22;A:if(!(g>>>0>0)){if(!(!g&I>>>0<16|g>>>0<0)){if(r>>>0>2147483648|(Q|a)>>>0>0)break A;if(!(!a&i>>>0<3|a>>>0<0|r>>>0<8192))return NA(i,r>>>10|0,1,B,C,E,16,e,o,0,0,1)?-1:0}A=28}return n[8960]=A,-1}(A,I,g,B,C,Q,E,i,a,r);case 1:return function(A,I,g,B,C,Q,E,i,a,r){var o,e;o=I,e=eA(A,0,I),A=22;A:if(!(g>>>0>0)){if(!(!g&I>>>0<16|g>>>0<0)){if(r>>>0>2147483648|(Q|a)>>>0>0)break A;if(!(!(i|a)|r>>>0<8192))return NA(i,r>>>10|0,1,B,C,E,16,e,o,0,0,2)?-1:0}A=28}return n[8960]=A,-1}(A,I,g,B,C,Q,E,i,a,r)}return n[8960]=28,-1}function vI(A,I,g,B){var C=0;C=-1;A:if(!(g>>>0>64|B+-1>>>0>63)){I:{if(!g||!I){if(!lI(A,255&B))break I;break A}if(II(A,255&B,I,255&g))break A}C=0}return C}function SI(A){var I=0,g=0,B=0,C=0,Q=0;for(I=32,g=1;Q=(B=a[(I=I+-1|0)+A|0])-(C=a[I+3456|0])>>8&g|255&Q,g&=65535+(B^C)>>>8,I;);return 0!=(0|Q)}function NI(A,I){var g,B,C;D=g=D-144|0,O(g+96|0,I+80|0),H(g+48|0,I,g+96|0),H(g,I+40|0,g+96|0),oA(A,g),B=A,C=yg(g+48|0)<<7^a[A+31|0],E[B+31|0]=C,D=g+144|0}function RI(A,I){var g,B=0;if(E[15+(g=D-16|0)|0]=0,I)for(;E[g+15|0]=a[A+B|0]|a[g+15|0],(0|(B=B+1|0))!=(0|I););return a[g+15|0]+-1>>>8&1}function MI(A,I,g,B){var C;return B=I+B|0,(C=A+g|0)>>>0<g>>>0&&(B=B+1|0),g=xg(A<<1&-2,1&(I=I<<1|A>>>31),g,0),A=l+B|0,l=A=(I=g+C|0)>>>0<g>>>0?A+1|0:A,I}function dI(A,I,g){var B,C=0;if(B=g>>>3|0)for(g=0;WA((C=g<<3)+A|0,n[(C=I+C|0)>>2],n[C+4>>2]),(0|B)!=(0|(g=g+1|0)););}function PI(A){var I=0,g=0;for(g=127&(-1^a[A+31|0]),I=30;g=-1^a[A+I|0]|g,I=I+-1|0;);return 1&(((255&g)-1&236-a[0|A])>>>8^-1)}function JI(A){var I=0,g=0;return I=0,A&&(g=A,I=A,(1|A)>>>0<65536||(I=g)),g=I,!(A=_(I))|!(3&a[A+-4|0])||eA(A,0,g),A}function xI(A,I){var g=0;!function(A,I){I&&((I=n[A>>2])&&KI(n[I+4>>2],n[A+16>>2]<<10),(I=n[A+4>>2])&&KI(I,n[A+20>>2]<<3))}(A,4&I),v(n[A+4>>2]),n[A+4>>2]=0,(I=n[A>>2])&&(g=n[I>>2])&&v(g),v(I),n[A>>2]=0}function LI(A,I,g){E[0|A]=I,E[A+1|0]=I>>>8,E[A+2|0]=I>>>16,E[A+3|0]=I>>>24,E[A+4|0]=g,E[A+5|0]=g>>>8,E[A+6|0]=g>>>16,E[A+7|0]=g>>>24}function KI(A,I){var g;if(n[12+(g=D-16|0)>>2]=A,I)for(A=0;E[n[g+12>>2]+A|0]=0,(0|I)!=(0|(A=A+1|0)););}function qI(A,I){A|=0;var g=0,B=0,C=0;if(I|=0)for(;B=A+g|0,C=Qg(),E[0|B]=C,(0|(g=g+1|0))!=(0|I););}function XI(A,I,g,B,C){var Q,E;return A|=0,I|=0,g|=0,B|=0,D=Q=(E=D)-128&-64,nA(Q,C|=0),IA(Q,I,g,B),$(Q,A),D=E,0}function VI(A){var I=0,g=0,B=0;for(I=1;I=a[0|(B=A+g|0)]+I|0,E[0|B]=I,I=I>>>8|0,4!=(0|(g=g+1|0)););}function TI(A,I,g,B,C,Q,E,i){var n,a=0;return D=n=D-32|0,a=-1,lg(n,E,i)||(a=Ug(A,I,g,B,C,Q,n),KI(n,32)),D=n+32|0,a}function WI(A,I,g,B,C,Q,E,i){var n,a=0;return D=n=D-32|0,a=-1,lg(n,E,i)||(a=vg(A,I,g,B,C,Q,n),KI(n,32)),D=n+32|0,a}function jI(A,I){var g,B,C;H(A,I,g=I+120|0),H(A+40|0,B=I+40|0,C=I+80|0),H(A+80|0,C,g),H(A+120|0,I,B)}function ZI(A,I){for(var g=0,B=0;E[0|(B=A+g|0)]=a[0|B]^a[I+g|0],8!=(0|(g=g+1|0)););}function OI(A,I,g){var B,C;D=B=(C=D)-384&-64,wg(B,0,0,24),Xg(B,I,32,0),Xg(B,g,32,0),pg(B,A,24),D=C}function zI(A,I){var g;HA(A,g=I+40|0,I),_A(A+40|0,g,I),ZA(A+80|0,I+80|0),H(A+120|0,I+120|0,2224)}function $I(A,I,g,B,C,Q,E){return!B&g>>>0>=4294967280|B>>>0>0&&(Gg(),t()),TI(A+16|0,A,I,g,B,C,Q,E)}function Ag(A,I,g,B,C,Q,E){return I+-1>>>0>63|E>>>0>64?-1:function(A,I,g,B,C,Q,E){var i,n=0;if(i=n=D,D=n=n-384&-64,!(!A|(B+-1&255)>>>0>=64|(C|Q?!I:0)|E>>>0>=65|(E?!g:0)))return E?II(n,B,g,E):lI(n,B),rA(n,I,C,Q),P(n,A,B),D=i,0;Gg(),t()}(A,g,Q,255&I,B,C,255&E)}function Ig(A,I){var g;H(A,I,g=I+120|0),H(A+40|0,I+40|0,I=I+80|0),H(A+80|0,I,g)}function gg(A,I,g,B,C,E,i){1==(0|B)&g>>>0>=0|B>>>0>1&&(Gg(),t()),Q[n[8956]](A,I,g,B,C,E,i)}function Bg(A,I,g,B,C,E){1==(0|B)&g>>>0>=0|B>>>0>1&&(Gg(),t()),Q[n[8955]](A,I,g,B,C,1,0,E)}function Cg(A){var I;return I=a[0|A]|a[A+1|0]<<8,A=a[A+2|0],l=A>>>16|0,I|A<<16}function Qg(){var A,I;return D=A=D-16|0,E[A+15|0]=0,I=0|f(1024,A+15|0,0),D=A+16|0,0|I}function Eg(A,I,g,B,C){var Q;return D=Q=D-416|0,dA(Q,C),W(Q,I,g,B),sA(Q,A),D=Q+416|0,0}function ig(A,I,g,B){var C;return D=C=D-208|0,rg(C),W(C,I,g,B),ag(C,A),D=C+208|0,0}function ng(A,I){var g=0;return(-1>>>(g=31&I)&A)<<g|((g=A)&-1<<(A=0-I&31))>>>A}function ag(A,I){var g;D=g=D-704|0,function(A,I){var g,B=0;A:if((g=n[A+72>>2]>>>3&127)>>>0<=111){if(!(B=112-g|0))break A;j(80+(A+g|0)|0,35424,B)}else j((B=A+80|0)+g|0,35424,128-g|0),G(A,B,I,I+640|0),eA(B,0,112);dI(A+192|0,A- -64|0,16),G(A,A+80|0,I,I+640|0)}(A,g),dI(I,A,64),KI(g,704),KI(A,208),D=g+704|0}function rg(A){n[A+64>>2]=0,n[A+68>>2]=0,n[A+72>>2]=0,n[A+76>>2]=0,j(A,34720,64)}function og(A,I,g){return g>>>0>=256&&(c(2016,2036,107,2089),t()),P(A,I,255&g)}function eg(){var A;D=A=D-16|0,E[A+15|0]=0,f(1062,A+15|0,0),D=A+16|0}function tg(A){var I;return D=I=D-32|0,oA(I,A),A=RI(I,32),D=I+32|0,A}function cg(A,I){var g;D=g=D-128|0,function(A,I){ZA(A,I),ZA(A+40|0,I+40|0),ZA(A+80|0,I+80|0)}(g+8|0,I),pI(A,g+8|0),D=g+128|0}function fg(A,I){E[0|A]=I,E[A+1|0]=I>>>8,E[A+2|0]=I>>>16,E[A+3|0]=I>>>24}function yg(A){var I;return D=I=D-32|0,oA(I,A),D=I+32|0,1&E[0|I]}function sg(A,I,g){pA(A,I,g),pA(A+40|0,I+40|0,g),pA(A+80|0,I+80|0,g)}function wg(A,I,g,B){return 0|vI(A|=0,I|=0,g|=0,B|=0)}function hg(A){E[A+32|0]=1,E[A+33|0]=0,E[A+34|0]=0,E[A+35|0]=0}function Dg(A){n[A>>2]=0,n[A+4>>2]=0,n[A+8>>2]=0,n[A+12>>2]=0}function ug(A){E[0|A]=0,E[A+1|0]=0,E[A+2|0]=0,E[A+3|0]=0}function pg(A,I,g){return 0|og(A|=0,I|=0,g|=0)}function lg(A,I,g){return 0|function(A,I,g){var B,C=0;return D=B=D-32|0,C=-1,DI(B,g,I)||(C=X(A,35552,B)),D=B+32|0,C}(A|=0,I|=0,g|=0)}function Fg(A,I,g){return 0|DI(A|=0,I|=0,g|=0)}function Gg(){var A;(A=n[9105])&&Q[0|A](),y(),t()}function kg(A){iB(A),Vg(A+40|0),Vg(A+80|0),iB(A+120|0)}function _g(A,I,g,B,C,E){Q[n[8952]](A,I,g,B,C,0,0,E)}function Hg(A,I,g,B,C,E){Q[n[8952]](A,I,g,B,C,1,0,E)}function Yg(A,I){return A|=0,qI(I|=0,32),0|qg(A,I)}function bg(A,I){return A=function(A,I){var g=0,B=0;A:{if(B=255&I){if(3&A)for(;;){if(!(g=a[0|A])|(0|g)==(255&I))break A;if(!(3&(A=A+1|0)))break}I:if(!((-1^(g=n[A>>2]))&g+-16843009&-2139062144))for(B=o(B,16843009);;){if((-1^(g^=B))&g+-16843009&-2139062144)break I;if(g=n[A+4>>2],A=A+4|0,g+-16843009&(-1^g)&-2139062144)break}for(;(B=a[0|(g=A)])&&(A=g+1|0,(0|B)!=(255&I)););return g}return VA(A)+A|0}return A}(A,I),a[0|A]==(255&I)?A:0}function mg(A,I,g,B,C,Q){return V(A,I,g,B,C,Q,0),0}function Ug(A,I,g,B,C,Q,E){return fA(A,I,g,B,C,Q,E)}function vg(A,I,g,B,C,Q,E){return yA(A,I,g,B,C,Q,E)}function Sg(A,I,g,B,C,Q,E){return Ag(A,I,g,B,C,Q,E)}function Ng(A,I){rg(A),I&&W(A,35728,34,0)}function Rg(A,I,g,B,C){return MA(A,I,g,B,C,0)}function Mg(A,I){return 0|qg(A|=0,I|=0)}function dg(A,I){return(255&(A^I))-1>>>31|0}function Pg(A,I,g,B){Q[n[8954]](A,I,0,g,B)}function Jg(A,I,g){Q[n[8953]](A,64,0,I,g)}function xg(A,I,g,B){return function(A,I,g,B){var C,Q,E,i,n=0,a=0;return i=o(n=g>>>16|0,a=A>>>16|0),n=(65535&(a=((E=o(C=65535&g,Q=65535&A))>>>16|0)+o(a,C)|0))+o(n,Q)|0,A=(o(I,g)+i|0)+o(A,B)+(a>>>16)+(n>>>16)|0,l=A,65535&E|n<<16}(A,I,g,B)}function Lg(A,I,g,B){Q[n[8947]](A,I,g,B)}function Kg(A,I,g){!function(A,I,g){var B,C;D=B=D-128|0,Vg(A),Vg(A+40|0),iB(A+80|0),sg(A,I,dg(g=g-((0-(C=(128&g)>>>7|0)&g)<<1)<<24>>24,1)),sg(A,I+120|0,dg(g,2)),sg(A,I+240|0,dg(g,3)),sg(A,I+360|0,dg(g,4)),sg(A,I+480|0,dg(g,5)),sg(A,I+600|0,dg(g,6)),sg(A,I+720|0,dg(g,7)),sg(A,I+840|0,dg(g,8)),ZA(B+8|0,A+40|0),ZA(B+48|0,A),TA(B+88|0,A+80|0),sg(A,B+8|0,C),D=B+128|0}(A,o(I,960)+3488|0,g)}function qg(A,I){return 0|Q[n[8950]](A,I)}function Xg(A,I,g,B){return Tg(A,I,g,B)}function Vg(A){n[A>>2]=1,eA(A+4|0,0,36)}function Tg(A,I,g,B){return rA(A,I,g,B)}function Wg(A,I,g){return function(A,I,g){var B=0,C=0,Q=0,E=0;return B=31&(Q=E=63&g),32<=Q>>>0?B=-1>>>B|0:(C=-1>>>B|0,B=(1<<B)-1<<32-B|-1>>>B),Q=B&A,B=I&C,C=31&E,32<=E>>>0?(B=Q<<C,E=0):(B=(1<<C)-1&Q>>>32-C|B<<C,E=Q<<C),Q=B,g=31&(B=C=0-g&63),32<=B>>>0?(B=-1<<g,g=0):(B=(1<<g)-1&-1>>>32-g|-1<<g,g=-1<<g),A&=g,B&=I,I=31&C,32<=C>>>0?(g=0,A=B>>>I|0):(g=B>>>I|0,A=((1<<I)-1&B)<<32-I|A>>>I),l=g|Q,A|E}(A,I,g)}function jg(A,I,g){return function(A,I,g){var B=0,C=0,Q=0,E=0,i=0;return B=31&(E=63&g),32<=E>>>0?(C=-1<<B,i=0):(C=(1<<B)-1&-1>>>32-B|-1<<B,i=-1<<B),i&=A,B=I&C,Q=31&E,32<=E>>>0?(C=0,E=B>>>Q|0):(C=B>>>Q|0,E=((1<<Q)-1&B)<<32-Q|i>>>Q),i=C,Q=31&(B=0-g&63),32<=B>>>0?(C=0,g=-1>>>Q|0):(C=-1>>>Q|0,g=(1<<Q)-1<<32-Q|-1>>>Q),A&=g,I&=C,C=31&B,32<=B>>>0?(g=A<<C,A=0):(g=(1<<C)-1&A>>>32-C|I<<C,A<<=C),l=g|i,A|E}(A,I,g)}function Zg(A){1!=(-7&A)&&(Gg(),t())}function Og(A,I){Q[n[8946]](A,I)}function zg(A,I){Q[n[8948]](A,I)}function $g(A,I){return yI(A,I,32)}function AB(A,I){return yI(A,I,16)}function IB(A,I,g,B){Pg(A,I,g,B)}function gB(A,I){return ng(A,I)}function BB(A,I){j(A,I,1024)}function CB(A){qI(A|=0,32)}function QB(A,I,g){!function(A,I,g){var B,C,Q,E,i,n,r,o,e,t,c,f,y=0,s=0,w=0,h=0,D=0,u=0,p=0,l=0,F=0,G=0,k=0,_=0,H=0,Y=0,b=0,m=0,U=0,v=0,S=0,N=0,R=0;for(B=a[0|g]|a[g+1|0]<<8|a[g+2|0]<<16|a[g+3|0]<<24,C=a[g+4|0]|a[g+5|0]<<8|a[g+6|0]<<16|a[g+7|0]<<24,Q=a[g+8|0]|a[g+9|0]<<8|a[g+10|0]<<16|a[g+11|0]<<24,E=a[g+12|0]|a[g+13|0]<<8|a[g+14|0]<<16|a[g+15|0]<<24,i=a[g+16|0]|a[g+17|0]<<8|a[g+18|0]<<16|a[g+19|0]<<24,n=a[g+20|0]|a[g+21|0]<<8|a[g+22|0]<<16|a[g+23|0]<<24,r=a[g+24|0]|a[g+25|0]<<8|a[g+26|0]<<16|a[g+27|0]<<24,o=a[g+28|0]|a[g+29|0]<<8|a[g+30|0]<<16|a[g+31|0]<<24,g=1634760805,h=B,D=C,b=Q,u=E,H=857760878,p=e=a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24,l=t=a[I+4|0]|a[I+5|0]<<8|a[I+6|0]<<16|a[I+7|0]<<24,F=c=a[I+8|0]|a[I+9|0]<<8|a[I+10|0]<<16|a[I+11|0]<<24,_=f=a[I+12|0]|a[I+13|0]<<8|a[I+14|0]<<16|a[I+15|0]<<24,I=2036477234,s=i,G=1797285236,k=o,w=r,y=n;u=gB(g+y|0,7)^u,F=gB(u+g|0,9)^F,m=gB(F+u|0,13)^y,S=gB(F+m|0,18),y=gB(h+H|0,7)^_,Y=gB(y+H|0,9)^w,h=gB(y+Y|0,13)^h,_=gB(Y+h|0,18),k=gB(I+p|0,7)^k,D=gB(k+I|0,9)^D,p=gB(D+k|0,13)^p,N=gB(D+p|0,18),w=gB(s+G|0,7)^b,l=gB(w+G|0,9)^l,U=gB(l+w|0,13)^s,R=gB(l+U|0,18),h=gB((g^=S)+w|0,7)^h,D=gB(h+g|0,9)^D,b=gB(h+D|0,13)^w,g=gB(D+b|0,18)^g,p=gB((s=H^_)+u|0,7)^p,l=gB(p+s|0,9)^l,u=gB(l+p|0,13)^u,H=gB(l+u|0,18)^s,s=gB((I^=N)+y|0,7)^U,F=gB(s+I|0,9)^F,_=gB(F+s|0,13)^y,I=gB(F+_|0,18)^I,y=gB((G^=R)+k|0,7)^m,w=gB(y+G|0,9)^Y,k=gB(y+w|0,13)^k,G=gB(w+k|0,18)^G,Y=v>>>0<18,v=v+2|0,Y;);fg(A,g+1634760805|0),fg(A+4|0,h+B|0),fg(A+8|0,D+C|0),fg(A+12|0,b+Q|0),fg(A+16|0,u+E|0),fg(A+20|0,H+857760878|0),fg(A+24|0,p+e|0),fg(A+28|0,l+t|0),fg(A+32|0,F+c|0),fg(A+36|0,_+f|0),fg(A+40|0,I+2036477234|0),fg(A+44|0,s+i|0),fg(A+48|0,y+n|0),fg(A+52|0,w+r|0),fg(A+56|0,k+o|0),fg(A+60|0,G+1797285236|0)}(A,I,g)}function EB(A){eA(A,0,1024)}function iB(A){eA(A,0,40)}function nB(){return 16}function aB(){return 32}function rB(){return 24}function oB(){return-17}function eB(){return 64}function tB(){return 1}function cB(){return 2}function fB(){return 8}function yB(){return 0}function sB(){return-1}function wB(){return 3}function hB(){return B.byteLength/65536|0}return Q[1]=XI,Q[2]=function(A,I,g,B,C){var Q;return A|=0,D=Q=D-16|0,XI(Q,I|=0,g|=0,B|=0,C|=0),A=AB(A,Q),D=Q+16|0,0|A},Q[3]=function(A,I){return nA(A|=0,I|=0),0},Q[4]=function(A,I,g,B){return IA(A|=0,I|=0,g|=0,B|=0),0},Q[5]=function(A,I){return $(A|=0,I|=0),0},Q[6]=function(A,I,g){A|=0,I|=0;var B,C=0,Q=0;if(D=B=D-336|0,C=-1,!mA(g|=0)){for(C=0;E[A+C|0]=a[I+C|0],32!=(0|(C=C+1|0)););for(E[0|A]=248&a[0|A],E[A+31|0]=63&a[A+31|0]|64,J(B+288|0,g),Vg(B+240|0),iB(B+192|0),ZA(B+144|0,B+288|0),Vg(B+96|0),g=254,I=0;C=I,Q=g,QA(B+240|0,B+144|0,C^=I=a[(g>>>3|0)+A|0]>>>(7&g)&1),QA(B+192|0,B+96|0,C),g=g+-1|0,_A(B+48|0,B+144|0,B+96|0),_A(B,B+240|0,B+192|0),HA(B+240|0,B+240|0,B+192|0),HA(B+192|0,B+144|0,B+96|0),H(B+96|0,B+48|0,B+240|0),H(B+192|0,B+192|0,B),U(B+48|0,B),U(B,B+240|0),HA(B+144|0,B+96|0,B+192|0),_A(B+192|0,B+96|0,B+192|0),H(B+240|0,B,B+48|0),_A(B,B,B+48|0),U(B+192|0,B+192|0),d(B+96|0,B),U(B+144|0,B+144|0),HA(B+48|0,B+48|0,B+96|0),H(B+96|0,B+288|0,B+192|0),H(B+192|0,B,B+48|0),Q;);QA(B+240|0,B+144|0,I),QA(B+192|0,B+96|0,I),O(B+192|0,B+192|0),H(B+240|0,B+240|0,B+192|0),oA(A,B+240|0),C=0}return D=B+336|0,0|C},Q[7]=function(A,I){A|=0,I|=0;var g,B=0;for(D=g=D-208|0;E[A+B|0]=a[I+B|0],32!=(0|(B=B+1|0)););return E[0|A]=248&a[0|A],E[A+31|0]=63&a[A+31|0]|64,tA(g+48|0,A),function(A,I,g){var B;D=B=D-96|0,HA(B+48|0,g,I),_A(B,g,I),O(B,B),H(A,B+48|0,B),D=B+96|0}(g,g+88|0,g+128|0),oA(A,g),D=g+208|0,0},Q[8]=function(A,I,g,B,C){A|=0,B|=0,C|=0;var Q,i=0;if(D=Q=D-112|0,(I|=0)|(g|=0)){i=a[C+28|0]|a[C+29|0]<<8|a[C+30|0]<<16|a[C+31|0]<<24,n[Q+24>>2]=a[C+24|0]|a[C+25|0]<<8|a[C+26|0]<<16|a[C+27|0]<<24,n[Q+28>>2]=i,i=a[C+20|0]|a[C+21|0]<<8|a[C+22|0]<<16|a[C+23|0]<<24,n[Q+16>>2]=a[C+16|0]|a[C+17|0]<<8|a[C+18|0]<<16|a[C+19|0]<<24,n[Q+20>>2]=i,i=a[C+4|0]|a[C+5|0]<<8|a[C+6|0]<<16|a[C+7|0]<<24,n[Q>>2]=a[0|C]|a[C+1|0]<<8|a[C+2|0]<<16|a[C+3|0]<<24,n[Q+4>>2]=i,i=a[C+12|0]|a[C+13|0]<<8|a[C+14|0]<<16|a[C+15|0]<<24,n[Q+8>>2]=a[C+8|0]|a[C+9|0]<<8|a[C+10|0]<<16|a[C+11|0]<<24,n[Q+12>>2]=i,C=a[0|B]|a[B+1|0]<<8|a[B+2|0]<<16|a[B+3|0]<<24,B=a[B+4|0]|a[B+5|0]<<8|a[B+6|0]<<16|a[B+7|0]<<24,n[Q+104>>2]=0,n[Q+108>>2]=0,n[Q+96>>2]=C,n[Q+100>>2]=B;A:{if(!g&I>>>0>=64|g>>>0>0){for(;;){for(QB(A,Q+96|0,Q),C=8,B=1;B=a[0|(i=(Q+96|0)+C|0)]+B|0,E[0|i]=B,B=B>>>8|0,16!=(0|(C=C+1|0)););if(A=A- -64|0,g=g+-1|0,(I=I+-64|0)>>>0<4294967232&&(g=g+1|0),!(!g&I>>>0>63|g>>>0>0))break}if(!(I|g))break A}if(C=0,QB(Q+32|0,Q+96|0,Q),I)for(;E[A+C|0]=a[(Q+32|0)+C|0],(0|I)!=(0|(C=C+1|0)););}KI(Q+32|0,64),KI(Q,32)}return D=Q+112|0,0},Q[9]=function(A,I,g,B,C,Q,i,r){A|=0,I|=0,C|=0,Q|=0,i|=0,r|=0;var o,e=0,t=0;if(D=o=D-112|0,(g|=0)|(B|=0)){for(e=a[r+28|0]|a[r+29|0]<<8|a[r+30|0]<<16|a[r+31|0]<<24,n[o+24>>2]=a[r+24|0]|a[r+25|0]<<8|a[r+26|0]<<16|a[r+27|0]<<24,n[o+28>>2]=e,e=a[r+20|0]|a[r+21|0]<<8|a[r+22|0]<<16|a[r+23|0]<<24,n[o+16>>2]=a[r+16|0]|a[r+17|0]<<8|a[r+18|0]<<16|a[r+19|0]<<24,n[o+20>>2]=e,e=a[r+4|0]|a[r+5|0]<<8|a[r+6|0]<<16|a[r+7|0]<<24,n[o>>2]=a[0|r]|a[r+1|0]<<8|a[r+2|0]<<16|a[r+3|0]<<24,n[o+4>>2]=e,e=8,t=a[r+12|0]|a[r+13|0]<<8|a[r+14|0]<<16|a[r+15|0]<<24,n[o+8>>2]=a[r+8|0]|a[r+9|0]<<8|a[r+10|0]<<16|a[r+11|0]<<24,n[o+12>>2]=t,r=a[C+4|0]|a[C+5|0]<<8|a[C+6|0]<<16|a[C+7|0]<<24,n[o+96>>2]=a[0|C]|a[C+1|0]<<8|a[C+2|0]<<16|a[C+3|0]<<24,n[o+100>>2]=r;E[(o+96|0)+e|0]=Q,Q=(255&i)<<24|Q>>>8,i=i>>>8|0,16!=(0|(e=e+1|0)););if(!B&g>>>0>63|B>>>0>0)for(;;){for(e=0,QB(o+32|0,o+96|0,o);E[A+e|0]=a[(o+32|0)+e|0]^a[I+e|0],r=1,64!=(0|(e=e+1|0)););for(e=8;C=a[0|(Q=(o+96|0)+e|0)]+r|0,E[0|Q]=C,r=C>>>8|0,16!=(0|(e=e+1|0)););if(I=I- -64|0,A=A- -64|0,B=B+-1|0,(g=g+-64|0)>>>0<4294967232&&(B=B+1|0),!(!B&g>>>0>63|B>>>0>0))break}if(g|B&&(e=0,QB(o+32|0,o+96|0,o),g))for(;E[A+e|0]=a[(o+32|0)+e|0]^a[I+e|0],(0|g)!=(0|(e=e+1|0)););KI(o+32|0,64),KI(o,32)}return D=o+112|0,0},Q[10]=function(A,I,g,B,C){var Q;return A|=0,B|=0,D=Q=D+-64|0,(I|=0)|(g|=0)&&(hA(Q,C|=0),jA(Q,B,0),N(Q,A=eA(A,0,I),A,I,g),KI(Q,64)),D=Q- -64|0,0},Q[11]=function(A,I,g,B,C){var Q;return A|=0,B|=0,D=Q=D+-64|0,(I|=0)|(g|=0)&&(hA(Q,C|=0),iI(Q,B,0),N(Q,A=eA(A,0,I),A,I,g),KI(Q,64)),D=Q- -64|0,0},Q[12]=function(A,I,g,B,C,Q,E,i){var n;return A|=0,I|=0,C|=0,E|=0,i|=0,D=n=D-80|0,(g|=0)|(B|=0)&&(fg(n+8|0,Q|=0),fg(n+12|0,E),hA(n+16|0,i),jA(n+16|0,C,n+8|0),N(n+16|0,I,A,g,B),KI(n+16|0,64)),D=n+80|0,0},Q[13]=function(A,I,g,B,C,Q,E){var i;return A|=0,I|=0,C|=0,E|=0,D=i=D-80|0,(g|=0)|(B|=0)&&(fg(i+12|0,Q|=0),hA(i+16|0,E),iI(i+16|0,C,i+12|0),N(i+16|0,I,A,g,B),KI(i+16|0,64)),D=i+80|0,0},{g:function(){},h:function(A,I,g,B,C,Q,E,i,n,a,r,o){return 0|OA(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,n|=0,r|=0,o|=0)},i:function(A,I,g,B,C,Q,E,i,n,a,r){return 0|kI(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,a|=0,r|=0)},j:function(A,I,g,B,C,Q,E,i,n,a,r,o){return 0|LA(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,n|=0,r|=0,o|=0)},k:function(A,I,g,B,C,Q,E,i,n,a,r){return 0|_I(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,a|=0,r|=0)},l:function(A,I,g,B,C,Q,E,i,n,a,r){return 0|qA(A|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,n|=0,a|=0,r|=0)},m:function(A,I,g,B,C,Q,E,i,n,a,r){return 0|CI(A|=0,I|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,n|=0,a|=0,r|=0)},n:function(A,I,g,B,C,Q,E,i,n,a,r){return 0|PA(A|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,n|=0,a|=0,r|=0)},o:function(A,I,g,B,C,Q,E,i,n,a,r){return 0|gI(A|=0,I|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,n|=0,a|=0,r|=0)},p:aB,q:function(){return 12},r:yB,s:nB,t:oB,u:CB,v:aB,w:fB,x:yB,y:nB,z:oB,A:CB,B:function(A,I,g,B,C,Q,E,i,n,a,r,o){return 0|$A(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,n|=0,r|=0,o|=0)},C:function(A,I,g,B,C,Q,E,i,n,a,r){return 0|HI(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,a|=0,r|=0)},D:function(A,I,g,B,C,Q,E,i,n,a,r){return 0|AI(A|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,n|=0,a|=0,r|=0)},E:function(A,I,g,B,C,Q,E,i,n,a,r){return 0|BI(A|=0,I|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,n|=0,a|=0,r|=0)},F:aB,G:rB,H:yB,I:nB,J:oB,K:CB,L:aB,M:aB,N:function(A,I,g,B,C){return 0|Eg(A|=0,I|=0,g|=0,B|=0,C|=0)},O:function(A,I,g,B,C){return 0|function(A,I,g,B,C){var Q;return D=Q=D-32|0,Eg(Q,I,g,B,C),I=$g(A,Q),g=hI(Q,A,32),D=Q+32|0,g|((0|A)==(0|Q)?-1:I)}(A|=0,I|=0,g|=0,B|=0,C|=0)},P:CB,Q:aB,R:aB,S:aB,T:aB,U:rB,V:nB,W:oB,X:function(A,I,g){return 0|function(A,I,g){var B,C=0;return D=B=D+-64|0,ig(B,g,32,0),g=n[B+28>>2],C=n[B+24>>2],E[I+24|0]=C,E[I+25|0]=C>>>8,E[I+26|0]=C>>>16,E[I+27|0]=C>>>24,E[I+28|0]=g,E[I+29|0]=g>>>8,E[I+30|0]=g>>>16,E[I+31|0]=g>>>24,g=n[B+20>>2],C=n[B+16>>2],E[I+16|0]=C,E[I+17|0]=C>>>8,E[I+18|0]=C>>>16,E[I+19|0]=C>>>24,E[I+20|0]=g,E[I+21|0]=g>>>8,E[I+22|0]=g>>>16,E[I+23|0]=g>>>24,g=n[B+12>>2],C=n[B+8>>2],E[I+8|0]=C,E[I+9|0]=C>>>8,E[I+10|0]=C>>>16,E[I+11|0]=C>>>24,E[I+12|0]=g,E[I+13|0]=g>>>8,E[I+14|0]=g>>>16,E[I+15|0]=g>>>24,g=n[B+4>>2],C=n[B>>2],E[0|I]=C,E[I+1|0]=C>>>8,E[I+2|0]=C>>>16,E[I+3|0]=C>>>24,E[I+4|0]=g,E[I+5|0]=g>>>8,E[I+6|0]=g>>>16,E[I+7|0]=g>>>24,KI(B,64),A=qg(A,I),D=B- -64|0,A}(A|=0,I|=0,g|=0)},Y:Yg,Z:lg,_:function(A,I,g,B,C,Q,E){return 0|Ug(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0)},$:function(A,I,g,B,C,Q,E,i){return 0|TI(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0)},aa:function(A,I,g,B,C,Q){return 0|function(A,I,g,B,C,Q){return!B&g>>>0>=4294967280|B>>>0>0&&(Gg(),t()),Ug(A+16|0,A,I,g,B,C,Q)}(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0)},ba:function(A,I,g,B,C,Q,E){return 0|$I(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0)},ca:function(A,I,g,B,C,Q,E){return 0|vg(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0)},da:function(A,I,g,B,C,Q,E,i){return 0|WI(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0)},ea:function(A,I,g,B,C,Q){return 0|function(A,I,g,B,C,Q){var E=0,i=0,n=0;return!B&g>>>0>=16|B>>>0>0?(E=A,i=I+16|0,n=I,A=B+-1|0,(I=g+-16|0)>>>0<4294967280&&(A=A+1|0),A=vg(E,i,n,I,A,C,Q)):A=-1,A}(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0)},fa:function(A,I,g,B,C,Q,E){return 0|GI(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0)},ga:function(A,I,g,B,C){return 0|iA(A|=0,I|=0,g|=0,B|=0,C|=0)},ha:function(A,I,g,B,C,Q){return 0|function(A,I,g,B,C,Q){var E,i=0;return D=E=D-32|0,i=-1,!B&g>>>0>=48|B>>>0>0&&(OI(E,I,C),C=A,A=B+-1|0,(g=g+-32|0)>>>0<4294967264&&(A=A+1|0),i=GI(C,i=I+32|0,g,A,E,I,Q)),D=E+32|0,i}(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0)},ia:function(){return 48},ja:nB,ka:eB,la:aB,ma:nB,na:eB,oa:aB,pa:function(){return 384},qa:function(A,I,g,B,C,Q,E){return 0|Sg(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0)},ra:wg,sa:function(A,I,g,B){return 0|Xg(A|=0,I|=0,g|=0,B|=0)},ta:pg,ua:CB,va:eB,wa:function(A,I,g,B){return 0|ig(A|=0,I|=0,g|=0,B|=0)},xa:nB,ya:eB,za:fB,Aa:aB,Ba:function(A,I,g,B,C,Q){return 0|xA(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0)},Ca:CB,Da:function(A,I,g){return A|=0,Sg(I|=0,32,g|=0,32,0,0,0),0|Mg(A,I)},Ea:function(A,I){return A|=0,qI(I|=0,32),0|Mg(A,I)},Fa:function(A,I,g,B,C){I|=0,g|=0,C|=0;var Q,i,n=0;if(i=n=D,D=n=n-512&-64,Q=(A|=0)||I){if(A=-1,!Fg(n+96|0,B|=0,C)){for(I=I||Q,A=0,wg(n+128|0,0,0,64),Xg(n+128|0,n+96|0,32,0),KI(n+96|0,32),Xg(n+128|0,g,32,0),Xg(n+128|0,C,32,0),pg(n+128|0,n+32|0,64),KI(n+128|0,384);g=(n+32|0)+A|0,E[A+Q|0]=a[0|g],E[A+I|0]=a[g+32|0],32!=(0|(A=A+1|0)););KI(n+32|0,64),A=0}return D=i,0|A}Gg(),t()},Ga:function(A,I,g,B,C){I|=0,g|=0,C|=0;var Q,i,n=0;if(i=n=D,D=n=n-512&-64,Q=(A|=0)||I){if(A=-1,!Fg(n+96|0,B|=0,C)){for(I=I||Q,A=0,wg(n+128|0,0,0,64),Xg(n+128|0,n+96|0,32,0),KI(n+96|0,32),Xg(n+128|0,C,32,0),Xg(n+128|0,g,32,0),pg(n+128|0,n+32|0,64),KI(n+128|0,384);g=(n+32|0)+A|0,E[A+I|0]=a[0|g],E[A+Q|0]=a[g+32|0],32!=(0|(A=A+1|0)););KI(n+32|0,64),A=0}return D=i,0|A}Gg(),t()},Ha:aB,Ia:aB,Ja:aB,Ka:aB,La:tB,Ma:cB,Na:cB,Oa:nB,Pa:sB,Qa:yB,Ra:sB,Sa:nB,Ta:function(){return 128},Ua:function(){return 35681},Va:tB,Wa:sB,Xa:function(){return 8192},Ya:function(){return-2147483648},Za:cB,_a:function(){return 67108864},$a:wB,ab:function(){return 268435456},bb:function(){return 4},cb:function(){return 1073741824},db:function(A,I,g,B,C,Q,E,i,n,a,r){return 0|UI(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,n|=0,a|=0,r|=0)},eb:function(A,I,g,B,C,Q,E){return 0|nI(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0)},fb:function(A,I,g,B,C,Q,E,i){return 0|function(A,I,g,B,C,Q,E,i){switch(i+-1|0){case 1:return nI(A,I,g,B,C,Q,E);default:Gg(),t();case 0:}return EI(A,I,g,B,C,Q,E)}(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0)},gb:function(A,I,g,B){return 0|function(A,I,g,B){return eI(A,35681,10)?eI(A,35692,9)?(n[8960]=28,-1):function(A,I,g,B){A:{if(1==(0|B)&g>>>0>=0|B>>>0>1)n[8960]=22;else{if(!(A=lA(A,I,g,1)))break A;-35==(0|A)&&(n[8960]=28)}A=-1}return A}(A,I,g,B):function(A,I,g,B){A:{if(1==(0|B)&g>>>0>=0|B>>>0>1)n[8960]=22;else{if(!(A=lA(A,I,g,2)))break A;-35==(0|A)&&(n[8960]=28)}A=-1}return A}(A,I,g,B)}(A|=0,I|=0,g|=0,B|=0)},hb:function(A,I,g,B){return 0|function(A,I,g,B){return eI(A,35681,10)?eI(A,35692,9)?(n[8960]=28,-1):RA(A,I,g,B,1):RA(A,I,g,B,2)}(A|=0,I|=0,g|=0,B|=0)},ib:Mg,jb:Fg,kb:aB,lb:aB,mb:aB,nb:rB,ob:nB,pb:oB,qb:CB,rb:Ug,sb:function(A,I,g,B,C,Q){return 0|function(A,I,g,B,C,Q){return!B&g>>>0>=4294967280|B>>>0>0&&(Gg(),t()),fA(A+16|0,A,I,g,B,C,Q),0}(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0)},tb:vg,ub:function(A,I,g,B,C,Q){return 0|function(A,I,g,B,C,Q){var E=0,i=0,n=0;return!B&g>>>0>=16|B>>>0>0?(E=A,i=I+16|0,n=I,A=B+-1|0,(I=g+-16|0)>>>0<4294967280&&(A=A+1|0),A=yA(E,i,n,I,A,C,Q)):A=-1,A}(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0)},vb:CB,wb:function(A,I,g){return A|=0,g|=0,qI(I|=0,24),K(A,I,g),hg(A),g=a[I+16|0]|a[I+17|0]<<8|a[I+18|0]<<16|a[I+19|0]<<24,I=a[I+20|0]|a[I+21|0]<<8|a[I+22|0]<<16|a[I+23|0]<<24,E[A+44|0]=0,E[A+45|0]=0,E[A+46|0]=0,E[A+47|0]=0,E[A+48|0]=0,E[A+49|0]=0,E[A+50|0]=0,E[A+51|0]=0,E[A+36|0]=g,E[A+37|0]=g>>>8,E[A+38|0]=g>>>16,E[A+39|0]=g>>>24,E[A+40|0]=I,E[A+41|0]=I>>>8,E[A+42|0]=I>>>16,E[A+43|0]=I>>>24,0},xb:function(A,I,g){return K(A|=0,I|=0,g|=0),hg(A),g=a[I+16|0]|a[I+17|0]<<8|a[I+18|0]<<16|a[I+19|0]<<24,I=a[I+20|0]|a[I+21|0]<<8|a[I+22|0]<<16|a[I+23|0]<<24,E[A+44|0]=0,E[A+45|0]=0,E[A+46|0]=0,E[A+47|0]=0,E[A+48|0]=0,E[A+49|0]=0,E[A+50|0]=0,E[A+51|0]=0,E[A+36|0]=g,E[A+37|0]=g>>>8,E[A+38|0]=g>>>16,E[A+39|0]=g>>>24,E[A+40|0]=I,E[A+41|0]=I>>>8,E[A+42|0]=I>>>16,E[A+43|0]=I>>>24,0},yb:q,zb:function(A,I,g,B,C,Q,E,i,n,a){return 0|cA(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,n|=0,a|=0)},Ab:function(A,I,g,B,C,Q,E,i,n,a){return 0|BA(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0,E|=0,i|=0,n|=0,a|=0)},Bb:function(){return 52},Cb:function(){return 17},Db:rB,Eb:aB,Fb:function(){return-18},Gb:yB,Hb:tB,Ib:cB,Jb:wB,Kb:fB,Lb:nB,Mb:function(A,I,g,B,C){return 0|function(A,I,g,B){var C=0,Q=0,E=0,i=0,n=0,r=0,o=0,e=0,t=0,c=0,f=0,y=0,s=0,w=0,h=0,D=0,u=0;if(E=1886610805^(Q=a[0|B]|a[B+1|0]<<8|a[B+2|0]<<16|a[B+3|0]<<24),i=1936682341^(C=a[B+4|0]|a[B+5|0]<<8|a[B+6|0]<<16|a[B+7|0]<<24),r=1852142177^Q,o=1819895653^C,C=1852075885^(Q=a[B+8|0]|a[B+9|0]<<8|a[B+10|0]<<16|a[B+11|0]<<24),n=1685025377^(B=a[B+12|0]|a[B+13|0]<<8|a[B+14|0]<<16|a[B+15|0]<<24),t=2037671283^Q,e=1952801890^B,(0|(Q=(I+g|0)-(w=7&g)|0))!=(0|I)){for(;c=a[0|I]|a[I+1|0]<<8|a[I+2|0]<<16|a[I+3|0]<<24,y=a[I+4|0]|a[I+5|0]<<8|a[I+6|0]<<16|a[I+7|0]<<24,f=Wg(C,n,13),B=i+n|0,s=l,(C=C+E|0)>>>0<E>>>0&&(B=B+1|0),E=B,h=Wg(C,B,32),D=l,t=Wg(i=t^c,B=e^y,16),B=B+o|0,(n=i+r|0)>>>0<i>>>0&&(B=B+1|0),i=n^t,t=r=B^(e=l),r=Wg(i,r,21),e=l,o=E^=s,E=Wg(C^=f,E,17),f=l,B=B+o|0,(C=C+n|0)>>>0<n>>>0&&(B=B+1|0),o=Wg(C,B,32),s=l,u=Wg(n=C^E,f^=B,13),B=t+D|0,(C=i+h|0)>>>0<i>>>0&&(B=B+1|0),B=f+(E=B)|0,h=l,(f=C+n|0)>>>0<C>>>0&&(B=B+1|0),n=B,i=Wg(f,B,32),t=l,e=Wg(C^=r,B=E^e,16),B=B+s|0,(r=C+o|0)>>>0<o>>>0&&(B=B+1|0),B=(o=(C=B)^l)+t|0,(E=i+(e=t=r^e)|0)>>>0<e>>>0&&(B=B+1|0),t=Wg(t,o,21)^E,i=B,e=B^l,f=Wg(o=f^u,B=n^h,17),B=C+B|0,(o=o+r|0)>>>0<r>>>0&&(B=B+1|0),C=o^f,n=B^(s=l),E^=c,i^=y,r=Wg(o,B,32),o=l,(0|Q)!=(0|(I=I+8|0)););I=Q}switch(Q=g<<24,g=0,w+-1|0){case 6:Q|=a[I+6|0]<<16;case 5:Q|=a[I+5|0]<<8;case 4:Q|=a[I+4|0];case 3:B=(g=a[I+3|0])>>>8|0,g<<=24,Q|=B;case 2:g|=(B=a[I+2|0])<<16,Q|=c=B>>>16|0;case 1:g|=(B=a[I+1|0])<<8,Q|=c=B>>>24|0;case 0:g=a[0|I]|g}return c=Wg(C,n,13),B=i+n|0,i=l,(I=C+E|0)>>>0<E>>>0&&(B=B+1|0),C=B,y=Wg(I,B,32),f=l,t=Wg(n=g^t,B=Q^e,16),B=B+o|0,(E=n+r|0)>>>0<n>>>0&&(B=B+1|0),o=r=B^(e=l),t=Wg(n=E^t,r,21),e=l,i=C^=i,C=Wg(I^=c,C,17),r=l,B=B+i|0,(I=I+E|0)>>>0<E>>>0&&(B=B+1|0),i=Wg(I,B,32),c=l,w=Wg(E=I^C,r^=B,13),B=o+f|0,(I=n+y|0)>>>0<n>>>0&&(B=B+1|0),B=r+(C=B)|0,o=l,(E=I+E|0)>>>0<I>>>0&&(B=B+1|0),n=B,r=Wg(E,B,32),y=l,t=Wg(I^=t,B=C^e,16),B=B+c|0,(I=I+i|0)>>>0<i>>>0&&(B=B+1|0),C=I^t,t=i=B^(e=l),i=Wg(C,i,21),e=l,o=n^=o,n=Wg(E^=w,n,17),c=l,B=B+o|0,(E=I+E|0)>>>0<I>>>0&&(B=B+1|0),o=Wg(E,B,32),f=l,n=Wg(E^=n,I=B^c,13),B=t+y|0,B=(t=I)+(Q^(I=(C=C+r|0)>>>0<r>>>0?B+1|0:B))|0,r=l,(g=E+(Q=g^C)|0)>>>0<Q>>>0&&(B=B+1|0),Q=B,E=Wg(g,B,32),t=l,i=Wg(C^=i,B=I^=e,16),B=B+f|0,(I=C+(255^o)|0)>>>0<C>>>0&&(B=B+1|0),C=I^i,o=i=B^(e=l),i=Wg(C,i,21),e=l,r=Q^=r,Q=Wg(g^=n,Q,17),n=l,B=B+r|0,(g=I+g|0)>>>0<I>>>0&&(B=B+1|0),r=Wg(g,B,32),c=l,n=Wg(g^=Q,I=B^n,13),B=o+t|0,B=(Q=I)+(I=(C=C+E|0)>>>0<E>>>0?B+1|0:B)|0,o=l,(g=g+C|0)>>>0<C>>>0&&(B=B+1|0),Q=B,E=Wg(g,B,32),t=l,i=Wg(C^=i,B=I^=e,16),B=B+c|0,(I=C+r|0)>>>0<C>>>0&&(B=B+1|0),C=I^i,r=i=B^(e=l),i=Wg(C,i,21),e=l,o=Q^=o,Q=Wg(g^=n,Q,17),n=l,B=B+o|0,(g=I+g|0)>>>0<I>>>0&&(B=B+1|0),o=Wg(g,B,32),c=l,n=Wg(g^=Q,Q=B^n,13),B=r+t|0,B=Q+(I=(C=C+E|0)>>>0<E>>>0?B+1|0:B)|0,r=l,(g=g+C|0)>>>0<C>>>0&&(B=B+1|0),Q=B,E=Wg(g,B,32),t=l,i=Wg(C^=i,B=I^=e,16),B=B+c|0,(I=C+o|0)>>>0<C>>>0&&(B=B+1|0),C=I^i,o=i=B^(e=l),i=Wg(C,i,21),e=l,r=Q^=r,Q=Wg(g^=n,Q,17),n=l,B=B+r|0,(g=I+g|0)>>>0<I>>>0&&(B=B+1|0),r=Wg(g,B,32),c=l,n=I=B^n,f=Wg(y=g^Q,I,13),B=o+t|0,(I=C+E|0)>>>0<E>>>0&&(B=B+1|0),E=l,Q=B,i=Wg(C=I^i,B=g=e^B,16),B=B+c|0,(g=C+r|0)>>>0<C>>>0&&(B=B+1|0),C=B,i=Wg(g^i,B^(o=l),21),B=Q+n|0,(Q=I+y|0)>>>0<I>>>0&&(B=B+1|0),B=C+(E^=B)|0,(I=(Q^=f)+g|0)>>>0<g>>>0&&(B=B+1|0),g=l,Q=Wg(Q,E,17)^I^i,g=l^g^B,LI(A,Wg(I,B,32)^Q,l^g),0}(A|=0,I|=0,g|=0,C|=0)},Nb:function(A){qI(A|=0,16)},Ob:function(){return 208},Pb:eB,Qb:aB,Rb:aB,Sb:eB,Tb:function(){return-65},Ub:function(A,I,g){return 0|M(A|=0,I|=0,g|=0)},Vb:function(A,I){return 0|function(A,I){var g;return D=g=D-32|0,qI(g,32),M(A,I,g),KI(g,32),D=g+32|0,0}(A|=0,I|=0)},Wb:function(A,I,g,B,C,Q){return 0|QI(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0)},Xb:function(A,I,g,B,C,Q){return 0|KA(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0)},Yb:function(A,I,g,B,C,Q){return 0|mg(A|=0,I|=0,g|=0,B|=0,C|=0,Q|=0)},Zb:function(A,I,g,B,C){return 0|Rg(A|=0,I|=0,g|=0,B|=0,C|=0)},_b:function(A){return rg(A|=0),0},$b:function(A,I,g,B){return 0|W(A|=0,I|=0,g|=0,B|=0)},ac:function(A,I,g,B){return 0|function(A,I,g,B){var C;return D=C=D+-64|0,ag(A,C),A=V(I,g,C,64,0,B,1),D=C- -64|0,A}(A|=0,I|=0,g|=0,B|=0)},bc:function(A,I,g){return 0|function(A,I,g){var B;return D=B=D+-64|0,ag(A,B),A=MA(I,B,64,0,g,1),D=B- -64|0,A}(A|=0,I|=0,g|=0)},cc:function(A,I){A|=0;var g,B=0;return D=g=D-256|0,B=-1,UA(I|=0)||FA(g+96|0,I)||function(A){var I;return D=I=D-160|0,CA(I,A),A=tg(I),D=I+160|0,A}(g+96|0)&&(Vg(g),_A(g,g,I=g+136|0),Vg(g+48|0),HA(g+48|0,g+48|0,I),O(g,g),H(g+48|0,g+48|0,g),oA(A,g+48|0),B=0),D=g+256|0,0|B},dc:function(A,I){A|=0;var g,B=0;return D=g=D+-64|0,ig(g,I|=0,32,0),E[0|g]=248&a[0|g],E[g+31|0]=63&a[g+31|0]|64,I=n[g+20>>2],B=n[g+16>>2],E[A+16|0]=B,E[A+17|0]=B>>>8,E[A+18|0]=B>>>16,E[A+19|0]=B>>>24,E[A+20|0]=I,E[A+21|0]=I>>>8,E[A+22|0]=I>>>16,E[A+23|0]=I>>>24,I=n[g+12>>2],B=n[g+8>>2],E[A+8|0]=B,E[A+9|0]=B>>>8,E[A+10|0]=B>>>16,E[A+11|0]=B>>>24,E[A+12|0]=I,E[A+13|0]=I>>>8,E[A+14|0]=I>>>16,E[A+15|0]=I>>>24,I=n[g+4>>2],B=n[g>>2],E[0|A]=B,E[A+1|0]=B>>>8,E[A+2|0]=B>>>16,E[A+3|0]=B>>>24,E[A+4|0]=I,E[A+5|0]=I>>>8,E[A+6|0]=I>>>16,E[A+7|0]=I>>>24,I=n[g+28>>2],B=n[g+24>>2],E[A+24|0]=B,E[A+25|0]=B>>>8,E[A+26|0]=B>>>16,E[A+27|0]=B>>>24,E[A+28|0]=I,E[A+29|0]=I>>>8,E[A+30|0]=I>>>16,E[A+31|0]=I>>>24,KI(g,64),D=g- -64|0,0},ec:Qg,fc:eg,gc:function(A){var I=0,g=0;if((A|=0)>>>0>=2){for(g=(0-A>>>0)%(A>>>0)|0;(I=Qg())>>>0<g>>>0;);A=(I>>>0)%(A>>>0)|0}else A=0;return 0|A},hc:qI,ic:function(A,I,g){IB(A|=0,I|=0,1784,g|=0)},jc:aB,kc:function(){var A=0,I=0;return(A=n[9097])&&(A=n[A+20>>2])&&(I=0|Q[0|A]()),0|I},lc:function(A,I,g){!function(A,I,g){1==(0|g)&I>>>0>=0|g>>>0>1&&(c(1796,1816,197,1842),t()),qI(A,I)}(A|=0,I|=0,g|=0)},mc:function(A,I,g,B){A|=0,g|=0;var C=0,Q=0,i=0;if(!((B|=0)>>>0>2147483646|B<<1>>>0>=(I|=0)>>>0)){if(I=0,B){for(;C=I<<1,Q=(i=a[I+g|0])>>>4|0,E[C+A|0]=87+(Q+(Q+65526>>>8&217)|0),Q=(1|C)+A|0,C=15&i,E[0|Q]=22272+((C<<8)+(C+65526&55552)|0)>>>8,(0|B)!=(0|(I=I+1|0)););I=B<<1}else I=0;return E[I+A|0]=0,0|A}Gg(),t()},nc:function(A,I,g,B,C,Q,i){A|=0,I|=0,g|=0,C|=0,Q|=0,i|=0;var r=0,o=0,e=0,t=0,c=0,f=0,y=0,s=0,w=0,h=0,D=0;A:if(B|=0){I:{g:{B:for(;;){for(o=r;;){C:{if(!(255&((w=(65526+(y=(223&(f=a[g+o|0]))-55&255)^y+65520)>>>8|0)|(e=65526+(h=48^f)>>>8|0)))){if(e=1,!C|255&c)break g;if(bg(C,f))break C;r=o;break A}if(t>>>0>=I>>>0){n[8960]=68,e=0;break g}if(r=y&w|e&h,255&c?(E[A+t|0]=r|D,t=t+1|0):D=r<<4,c^=-1,e=1,(r=o+1|0)>>>0<B>>>0)continue B;break I}if(c=0,!((o=o+1|0)>>>0<B>>>0))break}break}r=(A=r+1|0)>>>0<B>>>0?B:A;break A}r=o}255&c?(n[8960]=28,s=-1,r=r+-1|0,t=0):e||(t=0,s=-1)}return i?n[i>>2]=g+r:(0|B)!=(0|r)&&(n[8960]=28,s=-1),Q&&(n[Q>>2]=t),0|s},oc:function(A,I){var g;return A|=0,Zg(I|=0),A=o(g=(A>>>0)/3|0,-3)+A|0,o(4-(3-A&0-(I>>>1&1))|0,1&(A|A>>>1))+(g<<2|1)|0},pc:AA,qc:Z,rc:function(){var A=0;return n[9104]?A=1:(n[9086]=0,function(){var A;D=A=D-16|0,Dg(A),n[A>>2]&&(Dg(A),eA(36348,0,40)),D=A+16|0}(),n[9085]=1,eg(),function(){var A=0;(0|(A=0|s(30)))>=1?n[8943]=A:A=n[8943],A>>>0<=15&&(Gg(),t()),qI(36400,16)}(),n[9104]=1,A=0),0|A},sc:function(A,I,g,B,C){A|=0,I|=0,g|=0,C|=0;var Q,i=0,r=0,o=0;D=Q=D-16|0;A:{if(B|=0){if(o=-1,(i=(i=B+-1|0)-(r=i&B?(g>>>0)%(B>>>0)|0:g&i)|0)>>>0>=(-1^g)>>>0)break A;if(!((g=g+i|0)>>>0>=C>>>0))for(A&&(n[A>>2]=g+1),A=I+g|0,o=0,E[Q+15|0]=0,I=B>>>0>1?B:1,B=0;C=g=A-B|0,r=a[0|g]&a[Q+15|0],g=(B^i)-1>>>24|0,E[0|C]=r|128&g,E[Q+15|0]=g|a[Q+15|0],(0|I)!=(0|(B=B+1|0)););}else o=-1;return D=Q+16|0,0|o}Gg(),t()},tc:function(A,I,g,B){A|=0,I|=0,g|=0,B|=0;var C,Q=0,E=0,i=0,r=0,o=0;if(n[12+(C=D-16|0)>>2]=0,B+-1>>>0<g>>>0){for(o=(Q=g+-1|0)+I|0,g=0,I=0;r=((128^(E=a[o-g|0]))-1&n[C+12>>2]+-1&i+-1)>>>8&1,n[C+12>>2]=n[C+12>>2]|0-r&g,I|=r,i|=E,(0|B)!=(0|(g=g+1|0)););n[A>>2]=Q-n[C+12>>2],A=I+-1|0}else A=-1;return 0|A},uc:function(){return 35762},vc:function(){return 10},wc:wB,xc:tB,yc:function(){return 35840},zc:_,Ac:v,Bc:function(I){return 0|function(I){I|=0;var g=0|hB(),Q=g+I|0;if(g<Q&&Q<65536){var e=new ArrayBuffer(o(Q,65536)),t=new A.Int8Array(e);t.set(E),E=t,E=new A.Int8Array(e),i=new A.Int16Array(e),n=new A.Int32Array(e),a=new A.Uint8Array(e),new A.Uint16Array(e),r=new A.Uint32Array(e),new A.Float32Array(e),new A.Float64Array(e),B=e,C.buffer=e}return g}(0|(I|=0))}}}({Int8Array:Int8Array,Int16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array,NaN:NaN,Infinity:1/0,Math:Math},A,I.buffer)}(RA,s,u)},instantiate:function(A,I){return{then:function(I){var g=new w.Module(A);I({instance:new w.Instance(g)})}}},RuntimeError:Error};function h(A,I,g,B){switch(\"*\"===(g=g||\"i8\").charAt(g.length-1)&&(g=\"i32\"),g){case\"i1\":case\"i8\":H[A>>0]=I;break;case\"i16\":b[A>>1]=I;break;case\"i32\":m[A>>2]=I;break;case\"i64\":tA=[I>>>0,(eA=I,+O(eA)>=1?eA>0?(0|AA(+$(eA/4294967296),4294967295))>>>0:~~+z((eA-+(~~eA>>>0))/4294967296)>>>0:0)],m[A>>2]=tA[0],m[A+4>>2]=tA[1];break;case\"float\":U[A>>2]=I;break;case\"double\":v[A>>3]=I;break;default:EA(\"invalid type for setValue: \"+g)}}function D(A,I,g){switch(\"*\"===(I=I||\"i8\").charAt(I.length-1)&&(I=\"i32\"),I){case\"i1\":case\"i8\":return H[A>>0];case\"i16\":return b[A>>1];case\"i32\":case\"i64\":return m[A>>2];case\"float\":return U[A>>2];case\"double\":return v[A>>3];default:EA(\"invalid type for getValue: \"+I)}return null}f=[],\"object\"!=typeof w&&EA(\"no native wasm support detected\");var u=new w.Table({initial:14,maximum:22,element:\"anyfunc\"}),p=!1;function l(A,I){A||EA(\"Assertion failed: \"+I)}var F=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf8\"):void 0;function G(A,I,g){for(var B=I+g,C=I;A[C]&&!(C>=B);)++C;if(C-I>16&&A.subarray&&F)return F.decode(A.subarray(I,C));for(var Q=\"\";I<C;){var E=A[I++];if(128&E){var i=63&A[I++];if(192!=(224&E)){var n=63&A[I++];if((E=224==(240&E)?(15&E)<<12|i<<6|n:(7&E)<<18|i<<12|n<<6|63&A[I++])<65536)Q+=String.fromCharCode(E);else{var a=E-65536;Q+=String.fromCharCode(55296|a>>10,56320|1023&a)}}else Q+=String.fromCharCode((31&E)<<6|i)}else Q+=String.fromCharCode(E)}return Q}function k(A,I){return A?G(Y,A,I):\"\"}var _,H,Y,b,m,U,v,S=65536;function N(A,I){return A%I>0&&(A+=I-A%I),A}function R(A){_=A,I.HEAP8=H=new Int8Array(A),I.HEAP16=b=new Int16Array(A),I.HEAP32=m=new Int32Array(A),I.HEAPU8=Y=new Uint8Array(A),I.HEAPU16=new Uint16Array(A),I.HEAPU32=new Uint32Array(A),I.HEAPF32=U=new Float32Array(A),I.HEAPF64=v=new Float64Array(A)}var M=5279472,d=36432,P=I.INITIAL_MEMORY||16777216;function J(A){for(;A.length>0;){var g=A.shift();if(\"function\"!=typeof g){var B=g.func;\"number\"==typeof B?void 0===g.arg?I.dynCall_v(B):I.dynCall_vi(B,g.arg):B(void 0===g.arg?null:g.arg)}else g(I)}}(s=I.wasmMemory?I.wasmMemory:new w.Memory({initial:P/S,maximum:2147483648/S}))&&(_=s.buffer),P=_.byteLength,R(_),m[d>>2]=M;var x=[],L=[],K=[],q=[];function X(){if(I.preRun)for(\"function\"==typeof I.preRun&&(I.preRun=[I.preRun]);I.preRun.length;)j(I.preRun.shift());J(x)}function V(){J(L)}function T(){J(K)}function W(){if(I.postRun)for(\"function\"==typeof I.postRun&&(I.postRun=[I.postRun]);I.postRun.length;)Z(I.postRun.shift());J(q)}function j(A){x.unshift(A)}function Z(A){q.unshift(A)}var O=Math.abs,z=Math.ceil,$=Math.floor,AA=Math.min,IA=0,gA=null,BA=null;function CA(A){IA++,I.monitorRunDependencies&&I.monitorRunDependencies(IA)}function QA(A){if(IA--,I.monitorRunDependencies&&I.monitorRunDependencies(IA),0==IA&&(null!==gA&&(clearInterval(gA),gA=null),BA)){var g=BA;BA=null,g()}}function EA(A){throw I.onAbort&&I.onAbort(A),y(A+=\"\"),p=!0,A=\"abort(\"+A+\"). Build with -s ASSERTIONS=1 for more info.\",new w.RuntimeError(A)}function iA(A,I){return String.prototype.startsWith?A.startsWith(I):0===A.indexOf(I)}I.preloadedImages={},I.preloadedAudios={};var nA=\"data:application/octet-stream;base64,\";function aA(A){return iA(A,nA)}var rA=\"file://\";function oA(A){return iA(A,rA)}var eA,tA,cA=\"\";function fA(){try{if(f)return new Uint8Array(f);var A=SA(cA);if(A)return A;if(r)return r(cA);throw\"both async and sync fetching of the wasm failed\"}catch(A){EA(A)}}function yA(){return f||!Q&&!E||\"function\"!=typeof fetch||oA(cA)?new Promise((function(A,I){A(fA())})):fetch(cA,{credentials:\"same-origin\"}).then((function(A){if(!A.ok)throw\"failed to load wasm binary file at '\"+cA+\"'\";return A.arrayBuffer()})).catch((function(){return fA()}))}function sA(){var A={a:RA};function g(A,g){var B=A.exports;I.asm=B,QA()}function B(A){g(A.instance)}function C(I){return yA().then((function(I){return w.instantiate(I,A)})).then(I,(function(A){y(\"failed to asynchronously prepare wasm: \"+A),EA(A)}))}if(CA(),I.instantiateWasm)try{return I.instantiateWasm(A,g)}catch(A){return y(\"Module.instantiateWasm callback failed with error: \"+A),!1}return function(){if(f||\"function\"!=typeof w.instantiateStreaming||aA(cA)||oA(cA)||\"function\"!=typeof fetch)return C(B);fetch(cA,{credentials:\"same-origin\"}).then((function(I){return w.instantiateStreaming(I,A).then(B,(function(A){return y(\"wasm streaming compile failed: \"+A),y(\"falling back to ArrayBuffer instantiation\"),C(B)}))}))}(),{}}aA(cA)||(cA=c(cA));var wA={1024:function(){return I.getRandomValue()},1062:function(){if(void 0===I.getRandomValue)try{var A=\"object\"==typeof window?window:self,g=void 0!==A.crypto?A.crypto:A.msCrypto,B=function(){var A=new Uint32Array(1);return g.getRandomValues(A),A[0]>>>0};B(),I.getRandomValue=B}catch(A){try{var C=require(\"crypto\"),Q=function(){var A=C.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};Q(),I.getRandomValue=Q}catch(A){throw\"No secure random number generator found\"}}}};function hA(A,I,g){var B=YA(I,g);return wA[A].apply(null,B)}function DA(A,I,g,B){EA(\"Assertion failed: \"+k(A)+\", at: \"+[I?k(I):\"unknown filename\",g,B?k(B):\"unknown function\"])}function uA(){EA()}function pA(A,I,g){Y.copyWithin(A,I,I+g)}function lA(){return Y.length}function FA(A){try{return s.grow(A-_.byteLength+65535>>>16),R(s.buffer),1}catch(A){}}function GA(A){A>>>=0;var I=lA();if(A>2147483648)return!1;for(var g=1;g<=4;g*=2){var B=I*(1+.2/g);if(B=Math.min(B,A+100663296),FA(Math.min(2147483648,N(Math.max(16777216,A,B),65536))))return!0}return!1}function kA(A){return m[dA()>>2]=A,A}function _A(A){switch(A){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return\"object\"==typeof navigator&&navigator.hardwareConcurrency||1}return kA(28),-1}L.push({func:function(){MA()}});var HA=[];function YA(A,I){var g;for(HA.length=0,I>>=2;g=Y[A++];){var B=g<105;B&&1&I&&I++,HA.push(B?v[I++>>1]:m[I]),++I}return HA}var bA=!1;function mA(A){for(var I=[],g=0;g<A.length;g++){var B=A[g];B>255&&(bA&&l(!1,\"Character code \"+B+\" (\"+String.fromCharCode(B)+\") at offset \"+g+\" not in 0x00-0xFF.\"),B&=255),I.push(String.fromCharCode(B))}return I.join(\"\")}var UA=\"function\"==typeof atob?atob:function(A){var I,g,B,C,Q,E,i=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",n=\"\",a=0;A=A.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do{I=i.indexOf(A.charAt(a++))<<2|(C=i.indexOf(A.charAt(a++)))>>4,g=(15&C)<<4|(Q=i.indexOf(A.charAt(a++)))>>2,B=(3&Q)<<6|(E=i.indexOf(A.charAt(a++))),n+=String.fromCharCode(I),64!==Q&&(n+=String.fromCharCode(g)),64!==E&&(n+=String.fromCharCode(B))}while(a<A.length);return n};function vA(A){if(\"boolean\"==typeof i&&i){var I;try{I=Buffer.from(A,\"base64\")}catch(g){I=new Buffer(A,\"base64\")}return new Uint8Array(I.buffer,I.byteOffset,I.byteLength)}try{for(var g=UA(A),B=new Uint8Array(g.length),C=0;C<g.length;++C)B[C]=g.charCodeAt(C);return B}catch(A){throw new Error(\"Converting base64 string to bytes failed.\")}}function SA(A){if(aA(A))return vA(A.slice(nA.length))}var NA,RA={a:DA,c:uA,b:hA,e:pA,f:GA,memory:s,d:_A,table:u},MA=(sA(),I.___wasm_call_ctors=function(){return(MA=I.___wasm_call_ctors=I.asm.g).apply(null,arguments)}),dA=(I._crypto_aead_chacha20poly1305_encrypt_detached=function(){return(I._crypto_aead_chacha20poly1305_encrypt_detached=I.asm.h).apply(null,arguments)},I._crypto_aead_chacha20poly1305_encrypt=function(){return(I._crypto_aead_chacha20poly1305_encrypt=I.asm.i).apply(null,arguments)},I._crypto_aead_chacha20poly1305_ietf_encrypt_detached=function(){return(I._crypto_aead_chacha20poly1305_ietf_encrypt_detached=I.asm.j).apply(null,arguments)},I._crypto_aead_chacha20poly1305_ietf_encrypt=function(){return(I._crypto_aead_chacha20poly1305_ietf_encrypt=I.asm.k).apply(null,arguments)},I._crypto_aead_chacha20poly1305_decrypt_detached=function(){return(I._crypto_aead_chacha20poly1305_decrypt_detached=I.asm.l).apply(null,arguments)},I._crypto_aead_chacha20poly1305_decrypt=function(){return(I._crypto_aead_chacha20poly1305_decrypt=I.asm.m).apply(null,arguments)},I._crypto_aead_chacha20poly1305_ietf_decrypt_detached=function(){return(I._crypto_aead_chacha20poly1305_ietf_decrypt_detached=I.asm.n).apply(null,arguments)},I._crypto_aead_chacha20poly1305_ietf_decrypt=function(){return(I._crypto_aead_chacha20poly1305_ietf_decrypt=I.asm.o).apply(null,arguments)},I._crypto_aead_chacha20poly1305_ietf_keybytes=function(){return(I._crypto_aead_chacha20poly1305_ietf_keybytes=I.asm.p).apply(null,arguments)},I._crypto_aead_chacha20poly1305_ietf_npubbytes=function(){return(I._crypto_aead_chacha20poly1305_ietf_npubbytes=I.asm.q).apply(null,arguments)},I._crypto_aead_chacha20poly1305_ietf_nsecbytes=function(){return(I._crypto_aead_chacha20poly1305_ietf_nsecbytes=I.asm.r).apply(null,arguments)},I._crypto_aead_chacha20poly1305_ietf_abytes=function(){return(I._crypto_aead_chacha20poly1305_ietf_abytes=I.asm.s).apply(null,arguments)},I._crypto_aead_chacha20poly1305_ietf_messagebytes_max=function(){return(I._crypto_aead_chacha20poly1305_ietf_messagebytes_max=I.asm.t).apply(null,arguments)},I._crypto_aead_chacha20poly1305_ietf_keygen=function(){return(I._crypto_aead_chacha20poly1305_ietf_keygen=I.asm.u).apply(null,arguments)},I._crypto_aead_chacha20poly1305_keybytes=function(){return(I._crypto_aead_chacha20poly1305_keybytes=I.asm.v).apply(null,arguments)},I._crypto_aead_chacha20poly1305_npubbytes=function(){return(I._crypto_aead_chacha20poly1305_npubbytes=I.asm.w).apply(null,arguments)},I._crypto_aead_chacha20poly1305_nsecbytes=function(){return(I._crypto_aead_chacha20poly1305_nsecbytes=I.asm.x).apply(null,arguments)},I._crypto_aead_chacha20poly1305_abytes=function(){return(I._crypto_aead_chacha20poly1305_abytes=I.asm.y).apply(null,arguments)},I._crypto_aead_chacha20poly1305_messagebytes_max=function(){return(I._crypto_aead_chacha20poly1305_messagebytes_max=I.asm.z).apply(null,arguments)},I._crypto_aead_chacha20poly1305_keygen=function(){return(I._crypto_aead_chacha20poly1305_keygen=I.asm.A).apply(null,arguments)},I._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=function(){return(I._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=I.asm.B).apply(null,arguments)},I._crypto_aead_xchacha20poly1305_ietf_encrypt=function(){return(I._crypto_aead_xchacha20poly1305_ietf_encrypt=I.asm.C).apply(null,arguments)},I._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=function(){return(I._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=I.asm.D).apply(null,arguments)},I._crypto_aead_xchacha20poly1305_ietf_decrypt=function(){return(I._crypto_aead_xchacha20poly1305_ietf_decrypt=I.asm.E).apply(null,arguments)},I._crypto_aead_xchacha20poly1305_ietf_keybytes=function(){return(I._crypto_aead_xchacha20poly1305_ietf_keybytes=I.asm.F).apply(null,arguments)},I._crypto_aead_xchacha20poly1305_ietf_npubbytes=function(){return(I._crypto_aead_xchacha20poly1305_ietf_npubbytes=I.asm.G).apply(null,arguments)},I._crypto_aead_xchacha20poly1305_ietf_nsecbytes=function(){return(I._crypto_aead_xchacha20poly1305_ietf_nsecbytes=I.asm.H).apply(null,arguments)},I._crypto_aead_xchacha20poly1305_ietf_abytes=function(){return(I._crypto_aead_xchacha20poly1305_ietf_abytes=I.asm.I).apply(null,arguments)},I._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=function(){return(I._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=I.asm.J).apply(null,arguments)},I._crypto_aead_xchacha20poly1305_ietf_keygen=function(){return(I._crypto_aead_xchacha20poly1305_ietf_keygen=I.asm.K).apply(null,arguments)},I._crypto_auth_bytes=function(){return(I._crypto_auth_bytes=I.asm.L).apply(null,arguments)},I._crypto_auth_keybytes=function(){return(I._crypto_auth_keybytes=I.asm.M).apply(null,arguments)},I._crypto_auth=function(){return(I._crypto_auth=I.asm.N).apply(null,arguments)},I._crypto_auth_verify=function(){return(I._crypto_auth_verify=I.asm.O).apply(null,arguments)},I._crypto_auth_keygen=function(){return(I._crypto_auth_keygen=I.asm.P).apply(null,arguments)},I._crypto_box_seedbytes=function(){return(I._crypto_box_seedbytes=I.asm.Q).apply(null,arguments)},I._crypto_box_publickeybytes=function(){return(I._crypto_box_publickeybytes=I.asm.R).apply(null,arguments)},I._crypto_box_secretkeybytes=function(){return(I._crypto_box_secretkeybytes=I.asm.S).apply(null,arguments)},I._crypto_box_beforenmbytes=function(){return(I._crypto_box_beforenmbytes=I.asm.T).apply(null,arguments)},I._crypto_box_noncebytes=function(){return(I._crypto_box_noncebytes=I.asm.U).apply(null,arguments)},I._crypto_box_macbytes=function(){return(I._crypto_box_macbytes=I.asm.V).apply(null,arguments)},I._crypto_box_messagebytes_max=function(){return(I._crypto_box_messagebytes_max=I.asm.W).apply(null,arguments)},I._crypto_box_seed_keypair=function(){return(I._crypto_box_seed_keypair=I.asm.X).apply(null,arguments)},I._crypto_box_keypair=function(){return(I._crypto_box_keypair=I.asm.Y).apply(null,arguments)},I._crypto_box_beforenm=function(){return(I._crypto_box_beforenm=I.asm.Z).apply(null,arguments)},I._crypto_box_detached_afternm=function(){return(I._crypto_box_detached_afternm=I.asm._).apply(null,arguments)},I._crypto_box_detached=function(){return(I._crypto_box_detached=I.asm.$).apply(null,arguments)},I._crypto_box_easy_afternm=function(){return(I._crypto_box_easy_afternm=I.asm.aa).apply(null,arguments)},I._crypto_box_easy=function(){return(I._crypto_box_easy=I.asm.ba).apply(null,arguments)},I._crypto_box_open_detached_afternm=function(){return(I._crypto_box_open_detached_afternm=I.asm.ca).apply(null,arguments)},I._crypto_box_open_detached=function(){return(I._crypto_box_open_detached=I.asm.da).apply(null,arguments)},I._crypto_box_open_easy_afternm=function(){return(I._crypto_box_open_easy_afternm=I.asm.ea).apply(null,arguments)},I._crypto_box_open_easy=function(){return(I._crypto_box_open_easy=I.asm.fa).apply(null,arguments)},I._crypto_box_seal=function(){return(I._crypto_box_seal=I.asm.ga).apply(null,arguments)},I._crypto_box_seal_open=function(){return(I._crypto_box_seal_open=I.asm.ha).apply(null,arguments)},I._crypto_box_sealbytes=function(){return(I._crypto_box_sealbytes=I.asm.ia).apply(null,arguments)},I._crypto_generichash_bytes_min=function(){return(I._crypto_generichash_bytes_min=I.asm.ja).apply(null,arguments)},I._crypto_generichash_bytes_max=function(){return(I._crypto_generichash_bytes_max=I.asm.ka).apply(null,arguments)},I._crypto_generichash_bytes=function(){return(I._crypto_generichash_bytes=I.asm.la).apply(null,arguments)},I._crypto_generichash_keybytes_min=function(){return(I._crypto_generichash_keybytes_min=I.asm.ma).apply(null,arguments)},I._crypto_generichash_keybytes_max=function(){return(I._crypto_generichash_keybytes_max=I.asm.na).apply(null,arguments)},I._crypto_generichash_keybytes=function(){return(I._crypto_generichash_keybytes=I.asm.oa).apply(null,arguments)},I._crypto_generichash_statebytes=function(){return(I._crypto_generichash_statebytes=I.asm.pa).apply(null,arguments)},I._crypto_generichash=function(){return(I._crypto_generichash=I.asm.qa).apply(null,arguments)},I._crypto_generichash_init=function(){return(I._crypto_generichash_init=I.asm.ra).apply(null,arguments)},I._crypto_generichash_update=function(){return(I._crypto_generichash_update=I.asm.sa).apply(null,arguments)},I._crypto_generichash_final=function(){return(I._crypto_generichash_final=I.asm.ta).apply(null,arguments)},I._crypto_generichash_keygen=function(){return(I._crypto_generichash_keygen=I.asm.ua).apply(null,arguments)},I._crypto_hash_bytes=function(){return(I._crypto_hash_bytes=I.asm.va).apply(null,arguments)},I._crypto_hash=function(){return(I._crypto_hash=I.asm.wa).apply(null,arguments)},I._crypto_kdf_bytes_min=function(){return(I._crypto_kdf_bytes_min=I.asm.xa).apply(null,arguments)},I._crypto_kdf_bytes_max=function(){return(I._crypto_kdf_bytes_max=I.asm.ya).apply(null,arguments)},I._crypto_kdf_contextbytes=function(){return(I._crypto_kdf_contextbytes=I.asm.za).apply(null,arguments)},I._crypto_kdf_keybytes=function(){return(I._crypto_kdf_keybytes=I.asm.Aa).apply(null,arguments)},I._crypto_kdf_derive_from_key=function(){return(I._crypto_kdf_derive_from_key=I.asm.Ba).apply(null,arguments)},I._crypto_kdf_keygen=function(){return(I._crypto_kdf_keygen=I.asm.Ca).apply(null,arguments)},I._crypto_kx_seed_keypair=function(){return(I._crypto_kx_seed_keypair=I.asm.Da).apply(null,arguments)},I._crypto_kx_keypair=function(){return(I._crypto_kx_keypair=I.asm.Ea).apply(null,arguments)},I._crypto_kx_client_session_keys=function(){return(I._crypto_kx_client_session_keys=I.asm.Fa).apply(null,arguments)},I._crypto_kx_server_session_keys=function(){return(I._crypto_kx_server_session_keys=I.asm.Ga).apply(null,arguments)},I._crypto_kx_publickeybytes=function(){return(I._crypto_kx_publickeybytes=I.asm.Ha).apply(null,arguments)},I._crypto_kx_secretkeybytes=function(){return(I._crypto_kx_secretkeybytes=I.asm.Ia).apply(null,arguments)},I._crypto_kx_seedbytes=function(){return(I._crypto_kx_seedbytes=I.asm.Ja).apply(null,arguments)},I._crypto_kx_sessionkeybytes=function(){return(I._crypto_kx_sessionkeybytes=I.asm.Ka).apply(null,arguments)},I._crypto_pwhash_alg_argon2i13=function(){return(I._crypto_pwhash_alg_argon2i13=I.asm.La).apply(null,arguments)},I._crypto_pwhash_alg_argon2id13=function(){return(I._crypto_pwhash_alg_argon2id13=I.asm.Ma).apply(null,arguments)},I._crypto_pwhash_alg_default=function(){return(I._crypto_pwhash_alg_default=I.asm.Na).apply(null,arguments)},I._crypto_pwhash_bytes_min=function(){return(I._crypto_pwhash_bytes_min=I.asm.Oa).apply(null,arguments)},I._crypto_pwhash_bytes_max=function(){return(I._crypto_pwhash_bytes_max=I.asm.Pa).apply(null,arguments)},I._crypto_pwhash_passwd_min=function(){return(I._crypto_pwhash_passwd_min=I.asm.Qa).apply(null,arguments)},I._crypto_pwhash_passwd_max=function(){return(I._crypto_pwhash_passwd_max=I.asm.Ra).apply(null,arguments)},I._crypto_pwhash_saltbytes=function(){return(I._crypto_pwhash_saltbytes=I.asm.Sa).apply(null,arguments)},I._crypto_pwhash_strbytes=function(){return(I._crypto_pwhash_strbytes=I.asm.Ta).apply(null,arguments)},I._crypto_pwhash_strprefix=function(){return(I._crypto_pwhash_strprefix=I.asm.Ua).apply(null,arguments)},I._crypto_pwhash_opslimit_min=function(){return(I._crypto_pwhash_opslimit_min=I.asm.Va).apply(null,arguments)},I._crypto_pwhash_opslimit_max=function(){return(I._crypto_pwhash_opslimit_max=I.asm.Wa).apply(null,arguments)},I._crypto_pwhash_memlimit_min=function(){return(I._crypto_pwhash_memlimit_min=I.asm.Xa).apply(null,arguments)},I._crypto_pwhash_memlimit_max=function(){return(I._crypto_pwhash_memlimit_max=I.asm.Ya).apply(null,arguments)},I._crypto_pwhash_opslimit_interactive=function(){return(I._crypto_pwhash_opslimit_interactive=I.asm.Za).apply(null,arguments)},I._crypto_pwhash_memlimit_interactive=function(){return(I._crypto_pwhash_memlimit_interactive=I.asm._a).apply(null,arguments)},I._crypto_pwhash_opslimit_moderate=function(){return(I._crypto_pwhash_opslimit_moderate=I.asm.$a).apply(null,arguments)},I._crypto_pwhash_memlimit_moderate=function(){return(I._crypto_pwhash_memlimit_moderate=I.asm.ab).apply(null,arguments)},I._crypto_pwhash_opslimit_sensitive=function(){return(I._crypto_pwhash_opslimit_sensitive=I.asm.bb).apply(null,arguments)},I._crypto_pwhash_memlimit_sensitive=function(){return(I._crypto_pwhash_memlimit_sensitive=I.asm.cb).apply(null,arguments)},I._crypto_pwhash=function(){return(I._crypto_pwhash=I.asm.db).apply(null,arguments)},I._crypto_pwhash_str=function(){return(I._crypto_pwhash_str=I.asm.eb).apply(null,arguments)},I._crypto_pwhash_str_alg=function(){return(I._crypto_pwhash_str_alg=I.asm.fb).apply(null,arguments)},I._crypto_pwhash_str_verify=function(){return(I._crypto_pwhash_str_verify=I.asm.gb).apply(null,arguments)},I._crypto_pwhash_str_needs_rehash=function(){return(I._crypto_pwhash_str_needs_rehash=I.asm.hb).apply(null,arguments)},I._crypto_scalarmult_base=function(){return(I._crypto_scalarmult_base=I.asm.ib).apply(null,arguments)},I._crypto_scalarmult=function(){return(I._crypto_scalarmult=I.asm.jb).apply(null,arguments)},I._crypto_scalarmult_bytes=function(){return(I._crypto_scalarmult_bytes=I.asm.kb).apply(null,arguments)},I._crypto_scalarmult_scalarbytes=function(){return(I._crypto_scalarmult_scalarbytes=I.asm.lb).apply(null,arguments)},I._crypto_secretbox_keybytes=function(){return(I._crypto_secretbox_keybytes=I.asm.mb).apply(null,arguments)},I._crypto_secretbox_noncebytes=function(){return(I._crypto_secretbox_noncebytes=I.asm.nb).apply(null,arguments)},I._crypto_secretbox_macbytes=function(){return(I._crypto_secretbox_macbytes=I.asm.ob).apply(null,arguments)},I._crypto_secretbox_messagebytes_max=function(){return(I._crypto_secretbox_messagebytes_max=I.asm.pb).apply(null,arguments)},I._crypto_secretbox_keygen=function(){return(I._crypto_secretbox_keygen=I.asm.qb).apply(null,arguments)},I._crypto_secretbox_detached=function(){return(I._crypto_secretbox_detached=I.asm.rb).apply(null,arguments)},I._crypto_secretbox_easy=function(){return(I._crypto_secretbox_easy=I.asm.sb).apply(null,arguments)},I._crypto_secretbox_open_detached=function(){return(I._crypto_secretbox_open_detached=I.asm.tb).apply(null,arguments)},I._crypto_secretbox_open_easy=function(){return(I._crypto_secretbox_open_easy=I.asm.ub).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_keygen=function(){return(I._crypto_secretstream_xchacha20poly1305_keygen=I.asm.vb).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_init_push=function(){return(I._crypto_secretstream_xchacha20poly1305_init_push=I.asm.wb).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_init_pull=function(){return(I._crypto_secretstream_xchacha20poly1305_init_pull=I.asm.xb).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_rekey=function(){return(I._crypto_secretstream_xchacha20poly1305_rekey=I.asm.yb).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_push=function(){return(I._crypto_secretstream_xchacha20poly1305_push=I.asm.zb).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_pull=function(){return(I._crypto_secretstream_xchacha20poly1305_pull=I.asm.Ab).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_statebytes=function(){return(I._crypto_secretstream_xchacha20poly1305_statebytes=I.asm.Bb).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_abytes=function(){return(I._crypto_secretstream_xchacha20poly1305_abytes=I.asm.Cb).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_headerbytes=function(){return(I._crypto_secretstream_xchacha20poly1305_headerbytes=I.asm.Db).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_keybytes=function(){return(I._crypto_secretstream_xchacha20poly1305_keybytes=I.asm.Eb).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_messagebytes_max=function(){return(I._crypto_secretstream_xchacha20poly1305_messagebytes_max=I.asm.Fb).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_tag_message=function(){return(I._crypto_secretstream_xchacha20poly1305_tag_message=I.asm.Gb).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_tag_push=function(){return(I._crypto_secretstream_xchacha20poly1305_tag_push=I.asm.Hb).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_tag_rekey=function(){return(I._crypto_secretstream_xchacha20poly1305_tag_rekey=I.asm.Ib).apply(null,arguments)},I._crypto_secretstream_xchacha20poly1305_tag_final=function(){return(I._crypto_secretstream_xchacha20poly1305_tag_final=I.asm.Jb).apply(null,arguments)},I._crypto_shorthash_bytes=function(){return(I._crypto_shorthash_bytes=I.asm.Kb).apply(null,arguments)},I._crypto_shorthash_keybytes=function(){return(I._crypto_shorthash_keybytes=I.asm.Lb).apply(null,arguments)},I._crypto_shorthash=function(){return(I._crypto_shorthash=I.asm.Mb).apply(null,arguments)},I._crypto_shorthash_keygen=function(){return(I._crypto_shorthash_keygen=I.asm.Nb).apply(null,arguments)},I._crypto_sign_statebytes=function(){return(I._crypto_sign_statebytes=I.asm.Ob).apply(null,arguments)},I._crypto_sign_bytes=function(){return(I._crypto_sign_bytes=I.asm.Pb).apply(null,arguments)},I._crypto_sign_seedbytes=function(){return(I._crypto_sign_seedbytes=I.asm.Qb).apply(null,arguments)},I._crypto_sign_publickeybytes=function(){return(I._crypto_sign_publickeybytes=I.asm.Rb).apply(null,arguments)},I._crypto_sign_secretkeybytes=function(){return(I._crypto_sign_secretkeybytes=I.asm.Sb).apply(null,arguments)},I._crypto_sign_messagebytes_max=function(){return(I._crypto_sign_messagebytes_max=I.asm.Tb).apply(null,arguments)},I._crypto_sign_seed_keypair=function(){return(I._crypto_sign_seed_keypair=I.asm.Ub).apply(null,arguments)},I._crypto_sign_keypair=function(){return(I._crypto_sign_keypair=I.asm.Vb).apply(null,arguments)},I._crypto_sign=function(){return(I._crypto_sign=I.asm.Wb).apply(null,arguments)},I._crypto_sign_open=function(){return(I._crypto_sign_open=I.asm.Xb).apply(null,arguments)},I._crypto_sign_detached=function(){return(I._crypto_sign_detached=I.asm.Yb).apply(null,arguments)},I._crypto_sign_verify_detached=function(){return(I._crypto_sign_verify_detached=I.asm.Zb).apply(null,arguments)},I._crypto_sign_init=function(){return(I._crypto_sign_init=I.asm._b).apply(null,arguments)},I._crypto_sign_update=function(){return(I._crypto_sign_update=I.asm.$b).apply(null,arguments)},I._crypto_sign_final_create=function(){return(I._crypto_sign_final_create=I.asm.ac).apply(null,arguments)},I._crypto_sign_final_verify=function(){return(I._crypto_sign_final_verify=I.asm.bc).apply(null,arguments)},I._crypto_sign_ed25519_pk_to_curve25519=function(){return(I._crypto_sign_ed25519_pk_to_curve25519=I.asm.cc).apply(null,arguments)},I._crypto_sign_ed25519_sk_to_curve25519=function(){return(I._crypto_sign_ed25519_sk_to_curve25519=I.asm.dc).apply(null,arguments)},I._randombytes_random=function(){return(I._randombytes_random=I.asm.ec).apply(null,arguments)},I._randombytes_stir=function(){return(I._randombytes_stir=I.asm.fc).apply(null,arguments)},I._randombytes_uniform=function(){return(I._randombytes_uniform=I.asm.gc).apply(null,arguments)},I._randombytes_buf=function(){return(I._randombytes_buf=I.asm.hc).apply(null,arguments)},I._randombytes_buf_deterministic=function(){return(I._randombytes_buf_deterministic=I.asm.ic).apply(null,arguments)},I._randombytes_seedbytes=function(){return(I._randombytes_seedbytes=I.asm.jc).apply(null,arguments)},I._randombytes_close=function(){return(I._randombytes_close=I.asm.kc).apply(null,arguments)},I._randombytes=function(){return(I._randombytes=I.asm.lc).apply(null,arguments)},I._sodium_bin2hex=function(){return(I._sodium_bin2hex=I.asm.mc).apply(null,arguments)},I._sodium_hex2bin=function(){return(I._sodium_hex2bin=I.asm.nc).apply(null,arguments)},I._sodium_base64_encoded_len=function(){return(I._sodium_base64_encoded_len=I.asm.oc).apply(null,arguments)},I._sodium_bin2base64=function(){return(I._sodium_bin2base64=I.asm.pc).apply(null,arguments)},I._sodium_base642bin=function(){return(I._sodium_base642bin=I.asm.qc).apply(null,arguments)},I._sodium_init=function(){return(I._sodium_init=I.asm.rc).apply(null,arguments)},I._sodium_pad=function(){return(I._sodium_pad=I.asm.sc).apply(null,arguments)},I._sodium_unpad=function(){return(I._sodium_unpad=I.asm.tc).apply(null,arguments)},I._sodium_version_string=function(){return(I._sodium_version_string=I.asm.uc).apply(null,arguments)},I._sodium_library_version_major=function(){return(I._sodium_library_version_major=I.asm.vc).apply(null,arguments)},I._sodium_library_version_minor=function(){return(I._sodium_library_version_minor=I.asm.wc).apply(null,arguments)},I._sodium_library_minimal=function(){return(I._sodium_library_minimal=I.asm.xc).apply(null,arguments)},I.___errno_location=function(){return(dA=I.___errno_location=I.asm.yc).apply(null,arguments)}),PA=(I._malloc=function(){return(I._malloc=I.asm.zc).apply(null,arguments)},I._free=function(){return(I._free=I.asm.Ac).apply(null,arguments)},I.__growWasmMemory=function(){return(PA=I.__growWasmMemory=I.asm.Bc).apply(null,arguments)});function JA(A){function g(){NA||(NA=!0,I.calledRun=!0,p||(V(),T(),I.onRuntimeInitialized&&I.onRuntimeInitialized(),W()))}A=A||C,IA>0||(X(),IA>0||(I.setStatus?(I.setStatus(\"Running...\"),setTimeout((function(){setTimeout((function(){I.setStatus(\"\")}),1),g()}),1)):g()))}if(I.setValue=h,I.getValue=D,I.UTF8ToString=k,BA=function A(){NA||JA(),NA||(BA=A)},I.run=JA,I.preInit)for(\"function\"==typeof I.preInit&&(I.preInit=[I.preInit]);I.preInit.length>0;)I.preInit.pop()();JA(),Object.keys(B).forEach((function(A){\"getRandomValue\"!==A&&delete B[A]})),Object.keys(I).forEach((function(A){B[A]=I[A]}))};var g,C=void 0!==C?C:{},Q={};for(g in C)C.hasOwnProperty(g)&&(Q[g]=C[g]);var E=[],i=!1,n=!1,a=!1,r=!1;i=\"object\"==typeof window,n=\"function\"==typeof importScripts,a=\"object\"==typeof process&&\"object\"==typeof process.versions&&\"string\"==typeof process.versions.node,r=!i&&!a&&!n;var o,e,t,c,f=\"\";function y(A){return C.locateFile?C.locateFile(A,f):f+A}a?(f=n?require(\"path\").dirname(f)+\"/\":__dirname+\"/\",o=function(A,I){var g=NA(A);return g?I?g:g.toString():(t||(t=require(\"fs\")),c||(c=require(\"path\")),A=c.normalize(A),t.readFileSync(A,I?null:\"utf8\"))},e=function(A){var I=o(A,!0);return I.buffer||(I=new Uint8Array(I)),F(I.buffer),I},process.argv.length>1&&process.argv[1].replace(/\\\\/g,\"/\"),E=process.argv.slice(2),\"undefined\"!=typeof module&&(module.exports=C),process.on(\"unhandledRejection\",iA),C.inspect=function(){return\"[Emscripten Module object]\"}):r?(\"undefined\"!=typeof read&&(o=function(A){var I=NA(A);return I?UA(I):read(A)}),e=function(A){var I;return(I=NA(A))?I:\"function\"==typeof readbuffer?new Uint8Array(readbuffer(A)):(F(\"object\"==typeof(I=read(A,\"binary\"))),I)},\"undefined\"!=typeof scriptArgs?E=scriptArgs:void 0!==arguments&&(E=arguments),\"undefined\"!=typeof print&&(\"undefined\"==typeof console&&(console={}),console.log=print,console.warn=console.error=\"undefined\"!=typeof printErr?printErr:print)):(i||n)&&(n?f=self.location.href:document.currentScript&&(f=document.currentScript.src),f=0!==f.indexOf(\"blob:\")?f.substr(0,f.lastIndexOf(\"/\")+1):\"\",o=function(A){try{var I=new XMLHttpRequest;return I.open(\"GET\",A,!1),I.send(null),I.responseText}catch(I){var g=NA(A);if(g)return UA(g);throw I}},n&&(e=function(A){try{var I=new XMLHttpRequest;return I.open(\"GET\",A,!1),I.responseType=\"arraybuffer\",I.send(null),new Uint8Array(I.response)}catch(I){var g=NA(A);if(g)return g;throw I}})),C.print;var s,w,h=C.printErr||void 0;for(g in Q)Q.hasOwnProperty(g)&&(C[g]=Q[g]);function D(A,I,g,B){switch(\"*\"===(g=g||\"i8\").charAt(g.length-1)&&(g=\"i32\"),g){case\"i1\":case\"i8\":Y[A>>0]=I;break;case\"i16\":m[A>>1]=I;break;case\"i32\":U[A>>2]=I;break;case\"i64\":cA=[I>>>0,(tA=I,+z(tA)>=1?tA>0?(0|IA(+AA(tA/4294967296),4294967295))>>>0:~~+$((tA-+(~~tA>>>0))/4294967296)>>>0:0)],U[A>>2]=cA[0],U[A+4>>2]=cA[1];break;case\"float\":v[A>>2]=I;break;case\"double\":S[A>>3]=I;break;default:iA(\"invalid type for setValue: \"+g)}}function u(A,I,g){switch(\"*\"===(I=I||\"i8\").charAt(I.length-1)&&(I=\"i32\"),I){case\"i1\":case\"i8\":return Y[A>>0];case\"i16\":return m[A>>1];case\"i32\":case\"i64\":return U[A>>2];case\"float\":return v[A>>2];case\"double\":return S[A>>3];default:iA(\"invalid type for getValue: \"+I)}return null}Q=null,C.arguments&&(E=C.arguments),C.thisProgram&&C.thisProgram,C.quit&&C.quit,C.wasmBinary&&(s=C.wasmBinary),C.noExitRuntime&&C.noExitRuntime,\"object\"!=typeof WebAssembly&&iA(\"no native wasm support detected\");var p=new WebAssembly.Table({initial:14,maximum:22,element:\"anyfunc\"}),l=!1;function F(A,I){A||iA(\"Assertion failed: \"+I)}var G=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf8\"):void 0;function k(A,I,g){for(var B=I+g,C=I;A[C]&&!(C>=B);)++C;if(C-I>16&&A.subarray&&G)return G.decode(A.subarray(I,C));for(var Q=\"\";I<C;){var E=A[I++];if(128&E){var i=63&A[I++];if(192!=(224&E)){var n=63&A[I++];if((E=224==(240&E)?(15&E)<<12|i<<6|n:(7&E)<<18|i<<12|n<<6|63&A[I++])<65536)Q+=String.fromCharCode(E);else{var a=E-65536;Q+=String.fromCharCode(55296|a>>10,56320|1023&a)}}else Q+=String.fromCharCode((31&E)<<6|i)}else Q+=String.fromCharCode(E)}return Q}function _(A,I){return A?k(b,A,I):\"\"}var H,Y,b,m,U,v,S,N=65536;function R(A,I){return A%I>0&&(A+=I-A%I),A}function M(A){H=A,C.HEAP8=Y=new Int8Array(A),C.HEAP16=m=new Int16Array(A),C.HEAP32=U=new Int32Array(A),C.HEAPU8=b=new Uint8Array(A),C.HEAPU16=new Uint16Array(A),C.HEAPU32=new Uint32Array(A),C.HEAPF32=v=new Float32Array(A),C.HEAPF64=S=new Float64Array(A)}var d=5279472,P=36432,J=C.INITIAL_MEMORY||16777216;function x(A){for(;A.length>0;){var I=A.shift();if(\"function\"!=typeof I){var g=I.func;\"number\"==typeof g?void 0===I.arg?C.dynCall_v(g):C.dynCall_vi(g,I.arg):g(void 0===I.arg?null:I.arg)}else I(C)}}(w=C.wasmMemory?C.wasmMemory:new WebAssembly.Memory({initial:J/N,maximum:2147483648/N}))&&(H=w.buffer),J=H.byteLength,M(H),U[P>>2]=d;var L=[],K=[],q=[],X=[];function V(){if(C.preRun)for(\"function\"==typeof C.preRun&&(C.preRun=[C.preRun]);C.preRun.length;)Z(C.preRun.shift());x(L)}function T(){x(K)}function W(){x(q)}function j(){if(C.postRun)for(\"function\"==typeof C.postRun&&(C.postRun=[C.postRun]);C.postRun.length;)O(C.postRun.shift());x(X)}function Z(A){L.unshift(A)}function O(A){X.unshift(A)}var z=Math.abs,$=Math.ceil,AA=Math.floor,IA=Math.min,gA=0,BA=null,CA=null;function QA(A){gA++,C.monitorRunDependencies&&C.monitorRunDependencies(gA)}function EA(A){if(gA--,C.monitorRunDependencies&&C.monitorRunDependencies(gA),0==gA&&(null!==BA&&(clearInterval(BA),BA=null),CA)){var I=CA;CA=null,I()}}function iA(A){throw C.onAbort&&C.onAbort(A),h(A+=\"\"),l=!0,A=\"abort(\"+A+\"). Build with -s ASSERTIONS=1 for more info.\",new WebAssembly.RuntimeError(A)}function nA(A,I){return String.prototype.startsWith?A.startsWith(I):0===A.indexOf(I)}C.preloadedImages={},C.preloadedAudios={};var aA=\"data:application/octet-stream;base64,\";function rA(A){return nA(A,aA)}var oA=\"file://\";function eA(A){return nA(A,oA)}var tA,cA,fA=\"data:application/octet-stream;base64,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AUgEQCAAIQIMAQsgAEEDcUUEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA08NASACQQNxDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIANBfGoiBCAASQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAAL7AEBEn8gAigCBCEDIAEoAgQhBCACKAIIIQUgASgCCCEGIAIoAgwhByABKAIMIQggAigCECEJIAEoAhAhCiACKAIUIQsgASgCFCEMIAIoAhghDSABKAIYIQ4gAigCHCEPIAEoAhwhECACKAIgIREgASgCICESIAIoAiQhEyABKAIkIRQgACACKAIAIAEoAgBqNgIAIAAgEyAUajYCJCAAIBEgEmo2AiAgACAPIBBqNgIcIAAgDSAOajYCGCAAIAsgDGo2AhQgACAJIApqNgIQIAAgByAIajYCDCAAIAUgBmo2AgggACADIARqNgIECxgBAX9BxJwCKAIAIgAEQCAAEQ4ACxACAAtAAQN/IAAgASABQfgAaiICEAsgAEEoaiABQShqIgMgAUHQAGoiBBALIABB0ABqIAQgAhALIABB+ABqIAEgAxALC+wBARJ/IAIoAgQhAyABKAIEIQQgAigCCCEFIAEoAgghBiACKAIMIQcgASgCDCEIIAIoAhAhCSABKAIQIQogAigCFCELIAEoAhQhDCACKAIYIQ0gASgCGCEOIAIoAhwhDyABKAIcIRAgAigC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IQUgBSALIAggBSAOaiIOc0EIEAgiCGoiC3NBBxAIIQUgFUF+aiIVDQALIAEoAAQhLCABKAAIIS0gASgADCEuIAEoABAhLyABKAAUITAgASgAGCExIAEoABwhMiABKAAgITMgASgAJCE0IAEoACghFSABKAAsIRYgASgAMCEXIAEoADQhGSABKAA4IRogASgAPCEbIAQgASgAACANICpqcxAKIARBBGogLCAUIClqcxAKIARBCGogLSAQIChqcxAKIARBDGogLiAOICdqcxAKIARBEGogLyAFICZqcxAKIARBFGogMCAKICVqcxAKIARBGGogMSACICRqcxAKIARBHGogMiAPICNqcxAKIARBIGogMyAMICJqcxAKIARBJGogNCALICFqcxAKIARBKGogFSAYICBqcxAKIARBLGogFiAHIB9qcxAKIARBMGogFyAGIBNqcxAKIARBNGogGSAJIBJqcxAKIARBOGogGiAIIB5qcxAKIARBPGogGyARIB1qcxAKIBIgE0EBaiIHIBNJaiESIANCwABYBEACQCADQj9WDQAgA6ciAUUNAEEAIQoDQCAKICtqIAQgCmotAAA6AAAgCkEBaiIKIAFHDQALCyAAIBI2AjQgACAHNgIwIBxBQGskAAUgAUFAayEBIARBQGshAiADQkB8IQMgByETDAELCwtxACAAQuXwwYvmjZmQMzcCACAAQrLaiMvHrpmQ6wA3AgggACABKAAANgIQIAAgASgABDYCFCAAIAEoAAg2AhggACABKAAMNgIcIAAgASgAEDYCICAAIAEoABQ2AiQgACABKAAYNgIoIAAgASgAHDYCLAsLACAAIAEgAhDaAgupAwEVfyABKAIEIQsgACgCBCEMIAEoAgghDSAAKAIIIQ4gASgCDCEPIAAoAgwhAyABKAIQIRAgACgCECEEIAEoAhQhESAAKAIUIQUgASgCGCESIAAoAhghBiABKAIcIRMgACgCHCEHIAEoAiAhFCAAKAIgIQggASgCJCEVIAAoAiQhCSAAQQAgAmsiAiABKAIAIhYgACgCACIKc3EiFyAKczYCACAAIAkgCSAVcyACcSIKczYCJCAAIAggCCAUcyACcSIJczYCICAAIAcgByATcyACcSIIczYCHCAAIAYgBiAScyACcSIHczYCGCAAIAUgBSARcyACcSIGczYCFCAAIAQgBCAQcyACcSIFczYCECAAIAMgAyAPcyACcSIEczYCDCAAIA4gDSAOcyACcSIDczYCCCAAIAwgCyAMcyACcSIAczYCBCABIAogFXM2AiQgASAJIBRzNgIgIAEgCCATczYCHCABIAcgEnM2AhggASAGIBFzNgIUIAEgBSAQczYCECABIAQgD3M2AgwgASADIA1zNgIIIAEgACALczYCBCABIBYgF3M2AgALKQEBfyMAQYABayICJAAgAkEIaiABEOcCIAAgAkEIahA5IAJBgAFqJAALMgEBfyAAIAEgAUH4AGoiAhALIABBKGogAUEoaiABQdAAaiIBEAsgAEHQAGogASACEAsLrwIBE38gASgCBCEMIAAoAgQhAyABKAIIIQ0gACgCCCEEIAEoAgwhDiAAKAIMIQUgASgCECEPIAAoAhAhBiABKAIUIRAgACgCFCEHIAEoAhghESAAKAIYIQggASgCHCESIAAoAhwhCSABKAIgIRMgACgCICEKIAEoAiQhFCAAKAIkIQsgAEEAIAJrIgIgACgCACIVIAEoAgBzcSAVczYCACAAIAsgCyAUcyACcXM2AiQgACAKIAogE3MgAnFzNgIgIAAgCSAJIBJzIAJxczYCHCAAIAggCCARcyACcXM2AhggACAHIAcgEHMgAnFzNgIUIAAgBiAGIA9zIAJxczYCECAAIAUgBSAOcyACcXM2AgwgACAEIAQgDXMgAnFzNgIIIAAgAyADIAxzIAJxczYCBAskAQF/IwBBIGsiASQAIAEgABAtIAFBIBBlIQAgAUEgaiQAIAALpgQCCn8OfiAAKAIkIQQgACgCICEFIAAoAhwhBiAAKAIYIQcgACgCFCEDIAJCEFoEQCAALQBQRUEYdCEIIAAoAgQiCUEFbK0hGSAAKAIIIgpBBWytIRcgACgCDCILQQVsrSEVIAAoAhAiDEEFbK0hEyAMrSEaIAutIRggCq0hFiAJrSEUIAA1AgAhEgNAIAEoAANBAnZB////H3EgB2qtIg0gGH4gASgAAEH///8fcSADaq0iDiAafnwgASgABkEEdkH///8fcSAGaq0iDyAWfnwgASgACUEGdiAFaq0iECAUfnwgASgADEEIdiAIciAEaq0iESASfnwgDSAWfiAOIBh+fCAPIBR+fCAQIBJ+fCARIBN+fCANIBR+IA4gFn58IA8gEn58IBAg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IAFBf2pBP0sgBUHAAEtyBH8gBgUgACACIAQgAUH/AXEgAyAFQf8BcRDGAQsL0QIBA38jAEFAaiIEJAACQCACRSACQcEAT3JFBEBBfyEDIAApAFBQBEAgACAAKADgAiIDQYEBTwR/IABCgAEQWSAAIABB4ABqIgUQXiAAIAAoAOACQYB/aiIDNgDgAiADQYEBTw0DIAUgAEHgAWogAxASGiAAKADgAgUgAwutEFkgACIDLQDkAgRAIANCfzcAWAsgA0J/NwBQIABB4ABqIgMgACgA4AIiBWpBAEGAAiAFaxAQGiAAIAMQXiAEIAApAAAQESAEQQhyIAApAAgQESAEQRBqIAApABAQESAEQRhqIAApABgQESAEQSBqIAApACAQESAEQShqIAApACgQESAEQTBqIAApADAQESAEQThqIAApADgQESABIAQgAhASGiAAQcAAEAkgA0GAAhAJQQAhAwsgBEFAayQAIAMPCxAUAAtBvg5B3g5BsgJBiw8QAAALJgEBfiAAIAEgACkAQCIBfCICNwBAIAAgACkASCACIAFUrXw3AEgLCQAgAEEANgAAC0UBA38gAEGgD0HAABASQUBrQQBBpQIQEBoDQCAAIAJBA3QiA2oiBCABIANqKQAAIAQpAACFNwAAIAJBAWoiAkEIRw0ACwsWACAAEDUgAQRAIABBkJcCQiIQHBoLC5YBAQF/IwBBMGsiASQAIAEgACkAGDcDGCABIAApABA3AxAgASAAKQAANwMAIAEgACkACDcDCCABIAApACQ3AyAgASABQiggAEEgakEAIABB8JcCKAIAERQAGiAAIAEpAxg3ABggACABKQMQNwAQIAAgASkDCDcACCAAIAEpAwA3AAAgACABKQMgNwAkIAAQXyABQTBqJAALnzgCA38efiMAQYACayICJAADQCADQQN0IgQgAkGAAWpqIAEgBGopAAA3AwAgA0EBaiIDQRBHDQALIAIgAEHAABASIgFC8e30+KWn/aelfzcDWCAAKQBYISAgACkASCEcIAApAFAhCyABKQMAIAEpAyAiISABKQOAAXx8IhYgACkAQIVC0YWa7/rPlIfRAIVBIBAGIRsgASAbIBtCiJLznf/M+YTqAHwiHSAhhUEYEAYiHyAWfCABKQOIASIhfCIIhUEQEAYiFjcDYCABIBYgHXwiHTcDQCABIB0gH4VB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IAIgBSATcyIFakEHEAggCnMiCiAFakEJEAggB3MiECAKakENEAggAnMiEiAQakESEAggBXMhBSAEIBRzIgQgC2pBBxAIIBVzIgIgBGpBCRAIIAhzIgggAmpBDRAIIAtzIgsgCGpBEhAIIARzIQQgAyAWcyIDIAFqQQcQCCAMcyIMIANqQQkQCCAJcyIJIAxqQQ0QCCABcyIBIAlqQRIQCCADcyEDIAYgF3MiBiAOakEHEAggEXMiByAGakEJEAggDXMiDSAHakENEAggDnMiDiANakESEAggBnMhBiAPQQJLIREgD0F+aiEPIBENAAsgACAFEAogAEEEaiAEEAogAEEIaiADEAogAEEMaiAGEAogAEEQaiACEAogAEEUaiAIEAogAEEYaiAJEAogAEEcaiABEApBAAsEAEEICygAIAJCgICAgBBaBEAQFAALIAAgASACIAMgBCAFQfCXAigCABEUABoLJAAgAUKAgICAEFoEQBAUAAsgACABIAIgA0HolwIoAgAREQAaCxkAIAAgASACIANCACAEQeCXAigCABEVABoLEAAgACABQdiXAigCABECAAsrAQJ/IwBBEGsiACQAIABBADoAD0GACCAAQQ9qQQAQASEBIABBEGokACABC5USAR5+IAAQDyEQIAA1AAIhESAAQQVqEA8hEiAANQAHIRkgADUACiEaIABBDWoQDyEbIAA1AA8hCyAAQRJqEA8hCiAAQRVqEA8hCCAANQAXIQUgAEEaahAPIQEgADUAHCEcIAA1AB8hEyAAQSJqEA8hFCAANQAkIQwgAEEnahAPIQ8gAEEqahAPIQkgADUALCEGIAAgAEEvahAPQgKIQv///wCDIgJC0asIfiABQgKIQv///wCDfCAANQAxQgeIQv///wCDIgFC04xDfnwgADUANEIEiEL///8AgyIDQuf2J358IABBN2oQD0IBiEL///8AgyIEQpjaHH58IAA1ADlCBohC////AIMiB0KT2Ch+fCIVIAZCBYhC////AIMgADUAPEIDiCIGQoOhVn4gCUL///8Ag3wiDUKAgEB9Ig5CFYd8IglCg6FWfnwgAkLTjEN+IAVCBYhC////AIN8IAFC5/YnfnwgA0KY2hx+fCAEQpPYKH58IAJC5/YnfiAIQv///wCDfCABQpjaHH58IANCk9gofnwiBUKAgEB9IhZCFYh8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QhCIQh+DIAFC////AIMiAUIFhoQ8ABcgACAIQv///wCDIANCFYd8IgJCEYg8AB8gACACQgmIPAAeIAAgAkIBiDwAHSAAIANC////AIMiA0IChiABQhOIhDwAGiAAIAJCB4YgA0IOiIQ8ABwL2gEBBX8jAEEQayIDQQA2AAsgA0EANgIIA0AgACACai0AACEEQQAhAQNAIANBCGogAWoiBSAFLQAAIAFBBXRBoBlqIAJqLQAAIARzcjoAACABQQFqIgFBB0cNAAsgAkEBaiICQR9HDQALIAAtAB9B/wBxIQJBACEAQQAhAQNAIANBCGogAWoiBCAELQAAIAIgAUEFdEG/GWotAABzcjoAACABQQFqIgFBB0cNAAtBACEBA0AgA0EIaiAAai0AAEF/aiABciEBIABBAWoiAEEHRw0ACyABQQh2QQFxC54DAQV/IwBB0ANrIgIkAANAIANBAXQiBSACQZADamogASADai0AACIGQQ9xOgAAIAJBkANqIAVBAXJqIAZBBHY6AAAgA0EBaiIDQSBHDQALQQAhAwNAIAJBkANqIARqIgEgAS0AACADaiIBIAFBCGoiAUHwAXFrOgAAIAFBGHRBHHUhAyAEQQFqIgRBP0cNAAsgAiACLQDPAyADajoAzwMgABCqAUEBIQMDQCACIANBAXYgAkGQA2ogA2osAAAQqAEgAkHwAWogACACEHcgACACQfABahAVIANBPkkhASADQQJqIQMgAQ0ACyACQfABaiAAEE8gAkH4AGogAkHwAWoQUCACQfABaiACQfgAahA5IAJB+ABqIAJB8AFqEFAgAkHwAWogAkH4AGoQOSACQfgAaiACQfABahBQIAJB8AFqIAJB+ABqEDkgACACQfABahAVQQAhAwNAIAIgA0EBdiACQZADaiADaiwAABCoASACQfABaiAAIAIQdyAAIAJB8AFqEBUgA0E+SSEBIANBAmohAyABDQALIAJB0ANqJAALiwEBBH8jAEEwayIFJAAgACABQShqIgMgARATIABBKGoiBCADIAEQFiAAQdAAaiIDIAAgAhALIAQgBCACQShqEAsgAEH4AGoiBiACQdAAaiABQfgAahALIAUgAUHQAGoiASABEBMgACADIAQQFiAEIAMgBBATIAMgBSAGEBMgBiAFIAYQFiAFQTBqJAALXgEBfyMAQZABayICJAAgAkHgAGogAUHQAGoQOiACQTBqIAEgAkHgAGoQCyACIAFBKGogAkHgAGoQCyAAIAIQLSAAIAJBMGoQrgFBB3QgAC0AH3M6AB8gAkGQAWokAAuqAQEJfyABKAIEIQIgASgCCCEDIAEoAgwhBCABKAIQIQUgASgCFCEGIAEoAhghByABKAIcIQggASgCICEJIAEoAiQhCiAAQQAgASgCAGs2AgAgAEEAIAprNgIkIABBACAJazYCICAAQQAgCGs2AhwgAEEAIAdrNgIYIABBACAGazYCFCAAQQAgBWs2AhAgAEEAIARrNgIMIABBACADazYCCCAAQQAgAms2AgQLwgMBDH4gATUAACEEIAFBBGoQDyEFIAFBB2oQDyEGIAFBCmoQDyECIAFBDWoQDyEHIAE1ABAhAyABQRRqEA8hCCABQRdqEA8hCSABQRpqEA8hCiABQR1qEA8hCyAAIAJCA4YiAiACQoCAgAh8IgJCgICA8A+DfSAGQgWGIAVCBoYiBUKAgIAIfCIGQhmHfCIMQoCAgBB8Ig1CGoh8PgIMIAAgDCANQoCAgOAPg30+AgggACADIANCgICACHwiA0KAgIDwD4N9IAdCAoYgAkIZh3wiAkKAgIAQfCIHQhqIfD4CFCAAIAIgB0KAgIDgD4N9PgIQIAAgCEIHhiADQhmHfCIDIANCgICAEHwiA0KAgIDgD4N9PgIYIAAgCUIFhiICIAJCgICACHwiAkKAgIDwD4N9IANCGoh8PgIcIAAgCkIEhiACQhmHfCIDIANCgICAEHwiA0KAgIDgD4N9PgIgIAAgC0IChkL8//8PgyICIAJCgICACHwiAkKAgIAQg30gA0IaiHw+AiQgACAFIAZCgICA8A+DfSAEIAJCGYhCE358IgNCgICAEHwiBEIaiHw+AgQgACADIARCgICA4A+DfT4CAAurAwILfwR+IAApAzgiDVBFBEAgACANpyIDaiICQUBrQQE6AAAgDUIBfEIPWARAIAJBwQBqQQBBDyADaxAQGgsgAEEBOgBQIAAgAEFAa0IQEFMLIAA1AjQhDiAANQIwIQ8gADUCLCEQIAEgADUCKCAAKAIkIAAoAiAgACgCHCAAKAIYIgZBGnZqIgNBGnZqIgJBGnZqIghBgICAYHIgAkH///8fcSIKIANB////H3EiCyAAKAIUIAhBGnZBBWxqIgJB////H3EiBEEFaiIHQRp2IAZB////H3EgAkEadmoiDGoiAkEadmoiA0EadmoiBkEadmoiCUEfdSIFIARxIAcgCUEfdkF/aiIHQf///x9xIgRxciAFIAxxIAIgBHFyIgJBGnRyrXwiDacQCiABQQRqIBAgBSALcSADIARxciIDQRR0IAJBBnZyrXwgDUIgiHwiDacQCiABQQhqIA8gBSAKcSAEIAZxciICQQ50IANBDHZyrXwgDUIgiHwiDacQCiABQQxqIA4gByAJcSAFIAhxckEIdCACQRJ2cq18IA1CIIh8pxAKIABB2AAQCQuNAgECfgJAIAApAzgiA1BFBEAgACACQhAgA30iBCAEIAJWGyIEUAR+IAMFIAAgA6dqQUBrIAEtAAA6AABCASEDIARCAVIEQANAIAAgACkDOCADfKdqQUBrIAEgA6dqLQAAOgAAIANCAXwiAyAEUg0ACwsgACkDOAsgBHwiAzcDOCADQhBUDQEgACAAQUBrQhAQUyAAQgA3AzggAiAEfSECIAEgBKdqIQELIAJCEFoEQCAAIAEgAkJwgyIDEFMgAkIPgyECIAEgA6dqIQELIAJQDQBCACEDA0AgACAAKQM4IAN8p2pBQGsgASADp2otAAA6AAAgA0IBfCIDIAJSDQALIAAgACkDOCACfDcDOAsLsgEBAX8gACABKAAAQf///x9xNgIAIAAgASgAA0ECdkGD/v8fcTYCBCAAIAEoAAZBBHZB/4H/H3E2AgggACABKAAJQQZ2Qf//wB9xNgIMIAEoAAwhAiAAQgA3AhQgAEIANwIcIABBADYCJCAAIAJBCHZB//8/cTYCECAAIAEoABA2AiggACABKAAUNgIsIAAgASgAGDYCMCABKAAcIQEgAEEAOgBQIABCADcDOCAAIAE2AjQLLQECfyMAIgVBgAFrQUBxIgQkACAEIAMQfSAEIAEgAhB8IAQgABB7IAUkAEEACwsAIAAgAUEgEIABC2wBAX8jAEEQayIDIAA2AgwgAyABNgIIQQAhASADQQA2AgQgAkEBTgRAA0AgAyADKAIEIAMoAgggAWotAAAgAygCDCABai0AAHNyNgIEIAFBAWoiASACRw0ACwsgAygCBEF/akEIdkEBcUF/agspAQJ/A0AgACACQQN0IgNqIAEgA2opAAA3AwAgAkEBaiICQYABRw0ACwtCAQF/IAAgAUEEcRC+ASAAKAIEEBkgAEEANgIEAkAgACgCACIBRQ0AIAEoAgAiAkUNACACEBkLIAEQGSAAQQA2AgALsAEBAX8jAEHAAWsiBCQAIAJFIAFBf2pB/wFxQcAAT3IgA0F/akH/AXFBwABPckUEQCAEQYECOwGCASAEIAM6AIEBIAQgAToAgAEgBEGAAWpBBHIQWiAEQYABakEIckIAEBEgBEGQAWpBAEEwEBAaIAAgBEGAAWoQWyADIARqQQBBgAEgA2sQEBogACAEIAIgAxASIgBCgAEQMhogAEGAARAJIABBwAFqJABBAA8LEBQAC2EBAX8jAEFAaiICJAAgAUF/akH/AXFBwABPBEAQFAALIAJBAToAAyACQYACOwABIAIgAToAACACQQRyEFogAkEIckIAEBEgAkEQakEAQTAQEBogACACEFsgAkFAayQAQQALDwAgACABIAIgA0EAEIYBC9wBAQN/IwBB0ARrIgUkAEF/IQYCQCAAQSBqIgcQ4AJFDQAgABB1DQAgAxDiAkUNACADEHUNACAFQYABaiADEK0BDQAgBUGAA2ogBBBcIAVBgANqIABCIBAcGiAFQYADaiADQiAQHBogBUGAA2ogASACEBwaIAVBgANqIAVBwAJqECcgBUHAAmoQdCAFQQhqIAVBwAJqIAVBgAFqIAcQ6gIgBUGgAmogBUEIahB4QX8gBUGgAmogABB/IAVBoAJqIABGGyAAIAVBoAJqQSAQRXIhBgsgBUHQBGokACAGCxQAIAAgASACIAMgBEEAEIgBGkEAC8YCAgF/A34jAEGwBGsiBiQAIAZB4AJqIAUQXCAGQaACaiAEQiAQNBogBkHgAmogBkHAAmpCIBAcGiAGQeACaiACIAMQHBogBkHgAmogBkHgAWoQJyAEKQAgIQcgBCkAKCEIIAQpADAhCSAAIAQpADg3ADggACAJNwAwIAAgCDcAKCAAQSBqIgQgBzcAACAGQeABahB0IAYgBkHgAWoQdiAAIAYQeCAGQeACaiAFEFwgBkHgAmogAELAABAcGiAGQeACaiACIAMQHBogBkHgAmogBkGgAWoQJyAGQaABahB0IAYgBi0AoAJB+AFxOgCgAiAGIAYtAL8CQT9xQcAAcjoAvwIgBCAGQaABaiAGQaACaiAGQeABahDhAiAGQaACakHAABAJIAZB4AFqQcAAEAkgAQRAIAFCwAA3AwALIAZBsARqJABBAAu2AQIBfwN+IwBBoAFrIgMkACABIAJCIBA0GiABIAEtAABB+AFxOgAAIAEgAS0AH0E/cUHAAHI6AB8gAyABEHYgACADEHggAikACCEEIAIpABAhBSACKQAAIQYgASACKQAYNwAYIAEgBTcAECABIAQ3AAggASAGNwAAIAApAAghBCAAKQAQIQUgACkAACEGIAEgACkAGDcAOCABIAU3ADAgASAENwAoIAEgBjcAICADQaABaiQAQQALKwECfwNAIAAgAmoiAyADLQAAIAEgAmotAABzOgAAIAJBAWoiAkEIRw0ACwuYAQEBfyMAQRBrIgUkACAAQQBBgAEQECEAAn8gAiADhEL/////D1hBACAEQYGAgIB4SRtFBEBBgJgCQRY2AgBBfwwBCyADUEVBACAEQf8/SxtFBEBBgJgCQRw2AgBBfwwBCyAFQRAQH0F/QQAgA6cgBEEKdkEBIAEgAqcgBUEQQQBBICAAQYABQQIQMxsLIQAgBUEQaiQAIAAL0AEBBH8jAEFAaiIHJAACQAJAAkAgAUL/////D1hBACAAECEiBUGAAUkbRQRAQYCYAkEcNgIADAELIAdBAEE8EBAhBCAFELgBIgYNAQtBfyEADAELIARCADcDICAEIAY2AgggBCAGNgIQIAQgBTYCFCAEIAY2AgAgBCAFNgIMIARCADcDGCAEIAU2AgQCfyAEIAAgAxCOAQRAQYCYAkEcNgIAQX8MAQtBASAEKAIoIAGnRw0AGiAEKAIsIAJBCnZHCyEAIAYQGQsgB0FAayQAIAALnAIBBX8jAEFAaiIEJAAgBEEIakEAQTQQEBogBCAAECEiBTYCFCAEIAU2AiQgBCAFNgIEIAQgBRAgIgY2AiAgBCAFECAiBzYCECAEIAUQICIINgIAAkACQCAIRSAGRSAHRXJyDQAgBRAgIgVFDQAgBCAAIAMQjgEiAARAIAQoAiAQGSAEKAIQEBkgBCgCABAZIAUQGQwCC0EAIQAgBCgCKCAEKAIsIAQoAjQgASACIAQoAhAgBCgCFCAFIAQoAgRBAEEAIAMQMyEBIAQoAiAQGSAEKAIQEBkCQCABRQRAIAUgBCgCACAEKAIEEEVFDQELQV0hAAsgBRAZIAQoAgAQGQwBCyAGEBkgBxAZIAgQGUFqIQALIARBQGskACAAC+QDAQR/IwBBEGsiAyQAIAAoAhQhBSAAQQA2AhQgACgCBCEGIABBADYCBEFmIQQCQAJAAn8CQAJAIAJBf2oOAgEABAtBYCEEIAFBpZYCQQkQIg0DIAFBCWoMAQtBYCEEIAFBr5YCQQgQIg0CIAFBCGoLIgRBuJYCQQMQIg0AIARBA2ogA0EMahBCIgFFDQBBZiEEIAMoAgxBE0cNASABQbyWAkEDECINACABQQNqIANBDGoQQiIBRQ0AIAAgAygCDDYCLCABQcCWAkEDECINACABQQNqIANBDGoQQiIBRQ0AIAAgAygCDDYCKCABQcSWAkEDECINACABQQNqIANBDGoQQiIBRQ0AIAAgAygCDCICNgIwIAAgAjYCNCABLQAAIgJBJEcNACADIAU2AgwgACgCECAFIAFBAWogASACQSRGGyIBIAEQIUEAIANBDGogA0EIakEDEGINACAAIAMoAgw2AhQgAygCCCIBLQAAIgJBJEcNACADIAY2AgwgACgCACAGIAFBAWogASACQSRGGyIBIAEQIUEAIANBDGogA0EIakEDEGINACAAIAMoAgw2AgQgAygCCCEBIAAQVCIEDQEgAS0AACEAIANBEGokAEFgQQAgABsPC0FgIQQLIANBEGokACAEC3oBAn8gAEHA/wBzQQFqQQh2QX9zQS9xIABBwf8Ac0EBakEIdkF/c0ErcSAAQeb/A2pBCHZB/wFxIgEgAEHBAGpxcnIgAEHM/wNqQQh2IgIgAEHHAGpxIAFB/wFzcXIgAEH8AWogAEHC/wNqQQh2cSACQX9zcUH/AXFyC3sBAn8gAEHA/wFzQQFqQQh2QX9zQd8AcSAAQcH/AHNBAWpBCHZBf3NBLXEgAEHm/wNqQQh2Qf8BcSIBIABBwQBqcXJyIABBzP8DakEIdiICIABBxwBqcSABQf8Bc3FyIABB/AFqIABBwv8DakEIdnEgAkF/c3FB/wFxcgsyAQN/QQEhAQNAIAAgAmoiAyABIAMtAABqIgE6AAAgAUEIdiEBIAJBAWoiAkEERw0ACws9AQJ/IwAiBEGAA2tBQHEiAyQAIANBAEEAQRgQRhogAyABQiAQJRogAyACQiAQJRogAyAAQRgQRBogBCQACxAAIAAgASACIAMgBCAFEFcLKgEBf0F/IQYgAkIQWgR/IAAgAUEQaiABIAJCcHwgAyAEIAUQlQEFIAYLCzwBAn8jAEEgayIHJABBfyEIIAcgBSAGEGxFBEAgACABIAIgAyAEIAcQaCEIIAdBIBAJCyAHQSBqJAAgCAslACACQvD///8PWgRAEBQACyAAQRBqIAAgASACIAMgBCAFEJcBCzwBAn8jAEEgayIHJABBfyEIIAcgBSAGEGxFBEAgACABIAIgAyAEIAcQaSEIIAdBIBAJCyAHQSBqJAAgCAsOACABQSAQHyAAIAEQcgsvAQF/IwBBoANrIgQkACAEIAMQwgIgBCABIAIQHBogBCAAEMACIARBoANqJABBAAs2AQJ/IAJBA3YiAwRAQQAhAgNAIAAgAkEDdCIEaiABIARqKQMAEMUCIAJBAWoiAiADRw0ACwsLVgEBfyMAQTBrIggkACAIQQA2AgQgCEEQaiAGIAcQSiAIIAYpABA3AgggACABIAIgAyAEIAUgCEEEaiAIQRBqEMkCIQAgCEEQakEgEAkgCEEwaiQAIAALVgEBfyMAQTBrIgkkACAJQQA2AgQgCUEQaiAHIAgQSiAJIAcpABA3AgggACABIAIgAyAEIAUgBiAJQQRqIAlBEGoQywIgCUEQakEgEAkgCUEwaiQAQQAL/wEBAX8jAEHgAmsiCCQAIAhBIGpCwAAgBiAHEDcgCEHgAGogCEEgahAkIAhBIGpBwAAQCSAIQeAAaiAEIAUQDSAIQeAAakGAjwJCACAFfUIPgxANIAhB4ABqIAEgAhANIAhB4ABqQYCPAkIAIAJ9Qg+DEA0gCEEYaiAFEBEgCEHgAGogCEEYakIIEA0gCEEYaiACEBEgCEHgAGogCEEYakIIEA0gCEHgAGogCBAjIAhB4ABqQYACEAkgCCADEDshAyAIQRAQCQJAIABFDQAgAwRAIABBACACpxAQGkF/IQMMAQsgACABIAIgBkEBIAcQMEEAIQMLIAhB4AJqJAAgAwvUAQEBfyMAQeACayIIJAAgCEEgaiAGIAcQogEgCEHgAGogCEEgahAkIAhBIGpBwAAQCSAIQeAAaiAEIAUQDSAIQRhqIAUQESAIQeAAaiAIQRhqQggQDSAIQeAAaiABIAIQDSAIQRhqIAIQESAIQeAAaiAIQRhqQggQDSAIQeAAaiAIECMgCEHgAGpBgAIQCSAIIAMQOyEDIAhBEBAJAkAgAEUNACADBEAgAEEAIAKnEBAaQX8hAwwBCyAAIAEgAiAGIAcQoQFBACEDCyAIQeACaiQAIAML3AEBAX8jAEHQAmsiCSQAIAlBEGpCwAAgByAIEDcgCUHQAGogCUEQahAkIAlBEGpBwAAQCSAJQdAAaiAFIAYQDSAJQdAAakGAjwJCACAGfUIPgxANIAAgAyAEIAdBASAIEDAgCUHQAGogACAEEA0gCUHQAGpBgI8CQgAgBH1CD4MQDSAJQQhqIAYQESAJQdAAaiAJQQhqQggQDSAJQQhqIAQQESAJQdAAaiAJQQhqQggQDSAJQdAAaiABECMgCUHQAGpBgAIQCSACBEAgAkIQNwMACyAJQdACaiQAQQALsQEBAX8jAEHQAmsiCSQAIAlBEGogByAIEKIBIAlB0ABqIAlBEGoQJCAJQRBqQcAAEAkgCUHQAGogBSAGEA0gCUEIaiAGEBEgCUHQAGogCUEIakIIEA0gACADIAQgByAIEKEBIAlB0ABqIAAgBBANIAlBCGogBBARIAlB0ABqIAlBCGpCCBANIAlB0ABqIAEQIyAJQdAAakGAAhAJIAIEQCACQhA3AwALIAlB0AJqJABBAAsoACACQoCAgIAQWgRAEBQACyAAIAEgAiADQgEgBEHslwIoAgARFQAaCxYAIABCwAAgASACQeSXAigCABERABoLMgAgACACBH8gAigAAAVBAAs2AjAgACABKAAANgI0IAAgASgABDYCOCAAIAEoAAg2AjwLPQAgAAJ/IAIEQCAAIAIoAAA2AjAgAigABAwBCyAAQQA2AjBBAAs2AjQgACABKAAANgI4IAAgASgABDYCPAsZACAAIAEgAiADQgEgBEHglwIoAgARFQAaCygBAX8jAEEQayIAJAAgAEEAOgAPQaYIIABBD2pBABABGiAAQRBqJAALagEDfyMAQRBrIgMkACADQQA6AA9BfyEFIAAgASACQdSXAigCABEDAEUEQANAIAMgACAEai0AACADLQAPcjoADyAEQQFqIgRBIEcNAAtBACADLQAPQX9qQQh2QQFxayEFCyADQRBqJAAgBQsTACAAIAFBwAdsQaAbaiACEOUCCxAAIABCADcCACAAQgA3AggLHQAgABA4IABBKGoQHSAAQdAAahAdIABB+ABqEDgLmAIBCn8DQCAAIAJqIAEgAkEDdmotAAAgAkEHcXZBAXE6AAAgAkEBaiICQYACRw0AC0H+ASEEA0AgAyIFQQFqIQMCQCAAIAVqIgYtAABFIAVB/gFLcg0AQQEhASAEQQUgBEEFSRtBAWohCSADIQIDQCABIQcCQCAAIAJqIgEsAAAiCEUNACAIIAd0IgggBiwAACIKaiILQQ9MBEAgBiALOgAAIAFBADoAAAwBCyAKIAhrIgFBcUgNAiAGIAE6AAADQCAAIAJqIgEtAABFBEAgAUEBOgAADAILIAFBADoAACACQf8BSSEBIAJBAWohAiABDQALCyAHQQFqIgEgBWohAiAHIAlHDQALCyAEQX9qIQQgA0GAAkcNAAsLlQEBBH8jAEEwayIFJAAgACABQShqIgMgARATIABBKGoiBCADIAEQFiAAQdAAaiIDIAAgAkEoahALIAQgBCACEAsgAEH4AGoiBiACQfgAaiABQfgAahALIAAgAUHQAGogAkHQAGoQCyAFIAAgABATIAAgAyAEEBYgBCADIAQQEyADIAUgBhAWIAYgBSAGEBMgBUEwaiQAC9QCAQN/IwBBoAJrIgIkACAAQShqIgMgARB6IABB0ABqIgQQHSACQfABaiADEAwgAkHAAWogAkHwAWpB0BAQCyACQfABaiACQfABaiAEEBYgAkHAAWogAkHAAWogBBATIAJBkAFqIAJBwAFqEAwgAkGQAWogAkGQAWogAkHAAWoQCyAAIAJBkAFqEAwgACAAIAJBwAFqEAsgACAAIAJB8AFqEAsgACAAELABIAAgACACQZABahALIAAgACACQfABahALIAJB4ABqIAAQDCACQeAAaiACQeAAaiACQcABahALIAJBMGogAkHgAGogAkHwAWoQFgJ/IAJBMGoQUkUEQCACIAJB4ABqIAJB8AFqEBNBfyACEFJFDQEaIAAgAEGAERALCyAAEK4BIAEtAB9BB3ZGBEAgACAAEHkLIABB+ABqIAAgAxALQQALIQAgAkGgAmokACAACyYBAX8jAEEgayIBJAAgASAAEC0gAS0AACEAIAFBIGokACAAQQFxC6oMAQZ/IAAgAWohBQJAAkAgACgCBCICQQFxDQAgAkEDcUUNASAAKAIAIgMgAWohASAAIANrIgBBmJgCKAIARwRAQZSYAigCACEEIANB/wFNBEAgACgCCCIEIANBA3YiA0EDdEGsmAJqRxogBCAAKAIMIgJGBEBBhJgCQYSYAigCAEF+IAN3cTYC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AkHgAGoQDEEBIQMDQCACQTBqIAJBMGoQDCADQQFqIgNBMkcNAAsgAkEwaiACQTBqIAJB4ABqEAsgAiACQTBqEAxBASEDA0AgAiACEAwgA0EBaiIDQeQARw0ACyACQTBqIAIgAkEwahALIAJBMGogAkEwahAMQQEhAwNAIAJBMGogAkEwahAMIANBAWoiA0EyRw0ACyACQeAAaiACQTBqIAJB4ABqEAsgAkHgAGogAkHgAGoQDCACQeAAaiACQeAAahAMIAAgAkHgAGogARALIAJBkAFqJAALKgACfwJ/QTBBgH8gAUkNARogARC0ASIBRQsEQEEwDwsgACABNgIAQQALC84CAQl/IAAgASgCICICIAEoAhwiAyABKAIYIgQgASgCFCIFIAEoAhAiBiABKAIMIgcgASgCCCIIIAEoAgQiCSABKAIAIgogASgCJCIBQRNsQYCAgAhqQRl2akEadWpBGXVqQRp1akEZdWpBGnVqQRl1akEadWpBGXVqQRp1IAFqQRl1QRNsIApqIgpB////H3E2AgAgACAJIApBGnVqIglB////D3E2AgQgACAIIAlBGXVqIghB////H3E2AgggACAHIAhBGnVqIgdB////D3E2AgwgACAGIAdBGXVqIgZB////H3E2AhAgACAFIAZBGnVqIgVB////D3E2AhQgACAEIAVBGXVqIgRB////H3E2AhggACADIARBGnVqIgNB////D3E2AhwgACACIANBGXVqIgJB////H3E2AiAgACABIAJBGnVqQf///w9xNgIkCwoAIAAgARB7QQAL1wIBBn9BgH8gAE0EQEGAmAJBMDYCAEEADwtBECAAQQtqQXhxIABBC0kbIgNBzABqECAiAEUEQEEADwsgAEF4aiEBAkAgAEE/cUUEQCABIQAMAQsgAEF8aiIFKAIAIgZBeHEgAEE/akFAcUF4aiIAIABBQGsgACABa0EPSxsiACABayICayEEIAZBA3FFBEAgASgCACEBIAAgBDYCBCAAIAEgAmo2AgAMAQsgACAEIAAoAgRBAXFyQQJyNgIEIAAgBGoiBCAEKAIEQQFyNgIEIAUgAiAFKAIAQQFxckECcjYCACAAIAAoAgRBAXI2AgQgASACEK8BCwJAIAAoAgQiAUEDcUUNACABQXhxIgIgA0EQak0NACAAIAMgAUEBcXJBAnI2AgQgACADaiIBIAIgA2siA0EDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAMQrwELIABBCGoLDAAgACABIAIQfEEACwoAIAAgARB9QQALKQEBfyMAQRBrIgQkACAEIAEgAiADEH4aIAAgBBA7IQAgBEEQaiQAIAALVgIBfwF+AkACf0EAIABFDQAaIACtIgKnIgEgAEEBckGAgARJDQAaQX8gASACQiCIpxsLIgEQICIARQ0AIABBfGotAABBA3FFDQAgAEEAIAEQEBoLIAALpgEBBH8jAEGACGsiAiQAIAEoAhwEQCAAQcQAaiEFIABBQGshBANAIARBABAKIAUgAxAKIAJBgAggAEHIABBWIAEoAgAoAgQgASgCGCADbEEKdGogAhCBASAEQQEQCiACQYAIIABByAAQViABKAIAKAIEIAEoAhggA2xBCnRqQYAIaiACEIEBIANBAWoiAyABKAIcSQ0ACwsgAkGACBAJIAJBgAhqJAAL8AMBAn8jACIDIQQgA0HAA2tBQHEiAyQAIABFIAFFckUEQCADQUBrQQBBAEHAABA+GiADQTxqIAEoAjAQCiADQUBrIANBPGpCBBAYGiADQTxqIAEoAgQQCiADQUBrIANBPGpCBBAYGiADQTxqIAEoAiwQCiADQUBrIANBPGpCBBAYGiADQTxqIAEoAigQCiADQUBrIANBPGpCBBAYGiADQTxqQRMQCiADQUBrIANBPGpCBBAYGiADQTxqIAIQCiADQUBrIANBPGpCBBAYGiADQTxqIAEoAgwQCiADQUBrIANBPGpCBBAYGgJAIAEoAggiAkUNACADQUBrIAIgATUCDBAYGiABLQA4QQFxRQ0AIAEoAgggASgCDBAJIAFBADYCDAsgA0E8aiABKAIUEAogA0FAayADQTxqQgQQGBogASgCECICBEAgA0FAayACIAE1AhQQGBoLIANBPGogASgCHBAKIANBQGsgA0E8akIEEBgaAkAgASgCGCICRQ0AIANBQGsgAiABNQIcEBgaIAEtADhBAnFFDQAgASgCGCABKAIcEAkgAUEANgIcCyADQTxqIAEoAiQQCiADQUBrIANBPGpCBBAYGiABKAIgIgIEQCADQUBrIAIgATUCJBAYGgsgA0FAayAAQcAAED0aCyAEJAALrwEBA38jAEEQayICJABBaiEDAkAgAEUgAUVyDQAg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chBaIAVBgAFqQQhyQgAQESAFQgA3A5gBIAVCADcDkAECQCADBEAgBUGAAWogAxDiAQwBCyAFQgA3A6gBIAVCADcDoAELAkAgBARAIAVBgAFqIAQQ1wEMAQsgBUIANwO4ASAFQgA3A7ABCyAAIAVBgAFqEFsgBUEgakEAQeAAEBAaIAAgBSACQSAQEiIAQoABEDIaIABBgAEQCSAAQcABaiQADwsQFAALEQAgACABrSACrUIghoQQvAILEgAgACABIAKtIAOtQiCGhBAcCxUAIAAgASACrSADrUIghoQgBBCFAQsXACAAIAEgAiADrSAErUIghoQgBRCHAQsXACAAIAEgAiADrSAErUIghoQgBRCDAgsXACAAIAEgAiADrSAErUIghoQgBRCEAgsVACAAIAEgAq0gA61CIIaEIAQQiQILJQAgACABIAIgAyAEIAWtIAatQiCGhCAHIAitIAmtQiCGhBCNAgslACAAIAEgAiADIAStIAWtQiCGhCAGIAetIAitQiCGhCAJEI4CCxcAIAAgASACrSADrUIghoQgBCAFELkCCxgAIAAgASACIAOtIAStQiCGhCAFIAYQagsXACAAIAEgAq0gA61CIIaEIAQgBRC6AgsYACAAIAEgAiADrSAErUIghoQgBSAGEGsLEwAgACABrSACrUIghoQgAxCRAgsTACAAIAEgAq0gA61CIIaEEJICCxYAIAAgASkAADcAMCAAIAEpAAg3ADgLIQAgACABIAKtIAOtQiCGhCAErSAFrUIghoQgBiAHEJMCCx8AIAAgASACrSADrUIghoQgBK0gBa1CIIaEIAYQiwELLQAgACABrSACrUIghoQgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCSAKEJQCCxcAIAAgASACrSADrUIghoQgBCAFELICCxIAIAAgASACrSADrUIghoQQNAsSACAAIAEgAq0gA61CIIaEECULGQAgACABIAIgA60gBK1CIIaEIAUgBhCTAQsXACAAIAEgAq0gA61CIIaEIAQgBRC0AgsVACAAIAEgAq0gA61CIIaEIAQQtQILGQAgACABIAKtIAOtQiCGhCAEIAUgBhCUAQsWACAAIAEpAAA3ACAgACABKQAINwAoCxcAIAAgASACrSADrUIghoQgBCAFELcCCxsAIAAgASACIAOtIAStQiCGhCAFIAYgBxCVAQsYACAAIAEgAiADrSAErUIghoQgBSAGEGgLGQAgACABIAKtIAOtQiCGhCAEIAUgBhCWAQsXACAAIAEgAq0gA61CIIaEIAQgBRC4AgsbACAAIAEgAiADrSAErUIghoQgBSAGIAcQlwELGAAgACABIAIgA60gBK1CIIaEIAUgBhBpCxUAIAAgASACrSADrUIghoQgBBC/AgsVACAAIAEgAq0gA61CIIaEIAQQmQELJQAgACABIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAkgChDIAgslACAAIAIgA60gBK1CIIaEIAUgBiAHrSAIrUIghoQgCSAKEJsBCyUAIAAgASACIAOtIAStQiCGhCAFIAatIAetQiCGhCAJIAoQygILJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALEJwBCyUAIAAgASADIAStIAWtQiCGhCAGIAetIAitQiCGhCAJIAoQzgILJQAgACACIAOtIAStQiCGhCAFIAYgB60gCK1CIIaEIAkgChCdAQslACAAIAEgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCSAKEM8CCyUAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQngELJQAgACABIAIgA60gBK1CIIaEIAUgBq0gB61CIIaEIAkgChDQAgsnACAAIAEgAiADIAStIAWtQiCGhCAGIAetIAitQiCGhCAKIAsQnwELJQAgACABIAIgA60gBK1CIIaEIAUgBq0gB61CIIaEIAkgChDRAgsnACAAIAEgAiADIAStIAWtQiCGhCAGIAetIAitQiCGhCAKIAsQoAELBABBCgsGAEGylwILCwAgACABIAIQgQILDQAgACABIAIgAxCCAgsIACAAEDVBAAsJACAAIAEQhwILCwAgACABIAIQiQELBQBBv38LBQBB0AELLAEBfyMAQUBqIgMkACAAIAMQJyABIANCwAAgAkEBEIYBIQAgA0FAayQAIAALLgEBfyMAQUBqIgQkACAAIAQQJyABIAIgBELAACADQQEQiAEhACAEQUBrJAAgAAt7AQF/AkACQAJAIANCwABUDQAgA0JAfCIDQr////8PVg0AIAIgAkFAayIFIAMgBBCFAUUNASAARQ0AIABBACADpxAQGgtBfyECIAFFDQEgAUIANwMAQX8P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ahATIANB4ABqIANBMGogA0HwAWoQCyADQcABaiADQcABaiADEAsgA0EwaiADEAwgAyADQfABahAMIANBkAFqIANB4ABqIANBwAFqEBMgA0HAAWogA0HgAGogA0HAAWoQFiADQfABaiADIANBMGoQCyADIAMgA0EwahAWIANBwAFqIANBwAFqEAwgA0HgAGogAxDdAiADQZABaiADQZABahAMIANBMGogA0EwaiADQeAAahATIANB4ABqIANBoAJqIANBwAFqEAsgA0HAAWogAyADQTBqEAsgASEEIAUNAAsgA0HwAWogA0GQAWogARBOIANBwAFqIANB4ABqIAEQTiADQcABaiADQcABahA6IANB8AFqIANB8AFqIANBwAFqEAsgACADQfABahAtQQAhBAsgA0HQAmokACAEC1QBBX9BICEBQQEhAgNAIAAgAUF/aiIBai0AACIEIAFBgBtqLQAAIgVrQQh1IAJxIANB/wFxciEDIAQgBXNB//8DakEIdiACcSECIAENAAsgA0EARwvoHgE6fiABEA8hEiABNQACIRMgAUEFahAPIRQgATUAByEVIAE1AAohFiABQQ1qEA8hFyABNQAPIREgAUESahAPIQ4gAUEVahAPIRAgATUAFyEIIAFBGmoQDyEEIAE1ABwhByACEA8hGCACNQACIRkgAkEFahAPIRogAjUAByEbIAI1AAohCiACQQ1qEA8hCSACNQAPIQsgAkESahAPIQ8gAkEVahAPIQwgAjUAFyENIAJBGmoQDyEFIAI1ABwhBiADEA8hMiADNQACITMgA0EFahAPITQgAzUAByE1IAM1AAohISADQQ1qEA8hLiADNQAPISggA0ESahAPISkgA0EVahAPISIgACAGQgeIIgYgBEICiEL///8AgyIEfiAFQgKIQv///wCDIgUgB0IHiCIHfnwgBCAFfiANQgWIQv///wCDIg0gB358IAYgCEIFiEL///8AgyIIfnwiH0KAgEB9IiBCFYd8IiNCgIBAfSIcQhWHIAYgB34iJCAkQoCAQH0iJUKAgIB/g318IiRCg6FWfiAlQhWHIiVC0asIfnwgCUIBiEL///8AgyIJIAR+IApCBIhC////AIMiCiAHfnwgC0IGiEL///8AgyILIAh+fCAMQv///wCDIgwgDkIDiEL///8AgyIOfnwgD0IDiEL///8A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wAJqEBUgAkGABWoiASACQaABahAbIAJBwAJqIAIgARAaIAJBoAFqIAJBwAJqEBUgAkGgBmoiASACQaABahAbIAJBwAJqIAIgARAaIAJBoAFqIAJBwAJqEBUgAkHAB2oiASACQaABahAbIAJBwAJqIAIgARAaIAJBoAFqIAJBwAJqEBUgAkHgCGoiASACQaABahAbIAJBwAJqIAIgARAaIAJBoAFqIAJBwAJqEBUgAkGACmoiASACQaABahAbIAJBwAJqIAIgARAaIAJBoAFqIAJBwAJqEBUgAkGgC2oiASACQaABahAbIAJBwAJqIAIgARAaIAJBoAFqIAJBwAJqEBUgAkHADGogAkGgAWoQGyAAEKoBQfwBIQEDQCACQcACaiAAEE8CQCABIgNBoIsCaiwAACIBQQFOBEAgAkGgAWogAkHAAmoQFSACQcACaiACQaABaiACQeADaiABQf4BcUEBdkGgAWxqEBoMAQsgAUF/Sg0AIAJBoAFqIAJBwAJqEBUgAkHAAmogAkGgAWogAkHgA2pBACABa0H+AXFBAXZBoAFsahCsAQsgACACQcACahAVIANBf2ohASADDQALIAJB4A1qJAALJQEBfyMAQaABayIBJAAgASAAEOMCIAEQUiEAIAFBoAFqJAAgAAvwAQECfyMAQYABayIDJAAgABAdIABBKGoQHSAAQdAAahA4IAAgASACQQAgAkGAAXFBB3YiBGsgAnFBAXRrQRh0QRh1IgJBARApECYgACABQfgAaiACQQIQKRAmIAAgAUHwAWogAkEDECkQJiAAIAFB6AJqIAJBBBApECYgACABQeADaiACQQUQKRAmIAAgAUHYBGogAkEGECkQJiAAIAFB0AVqIAJBBxApECYgACABQcgGaiACQQgQKRAmIANBCGogAEEoahAsIANBMGogABAsIANB2ABqIABB0ABqEHkgACADQQhqIAQQJiADQYABaiQAC+kGAgl/HH4gACABKAIMIgRBAXSsIhEgASgCBCIFQQF0rCILfiABKAIIIgasIhYgFn58IAEoAhAiB6wiECABKAIAIghBAXSsIg5+fCABKAIcIgJBJmysIhcgAqwiGn58IAEoAiAiCUETbKwiDCABKAIYIgNBAXSsfnwgASgCJCIKQSZsrCINIAEoAhQiAUEBdKwiEn58QgGGIh5CgICAEHwiH0Ia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IHZhciB3aW5kb3dfID0gJ29iamVjdCcgPT09IHR5cGVvZiB3aW5kb3cgPyB3aW5kb3cgOiBzZWxmOyB2YXIgY3J5cHRvXyA9IHR5cGVvZiB3aW5kb3dfLmNyeXB0byAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3dfLmNyeXB0byA6IHdpbmRvd18ubXNDcnlwdG87IHZhciByYW5kb21WYWx1ZXNTdGFuZGFyZCA9IGZ1bmN0aW9uKCkgeyB2YXIgYnVmID0gbmV3IFVpbnQzMkFycmF5KDEpOyBjcnlwdG9fLmdldFJhbmRvbVZhbHVlcyhidWYpOyByZXR1cm4gYnVmWzBdID4+PiAwOyB9OyByYW5kb21WYWx1ZXNTdGFuZGFyZCgpOyBNb2R1bGUuZ2V0UmFuZG9tVmFsdWUgPSByYW5kb21WYWx1ZXNTdGFuZGFyZDsgfSBjYXRjaCAoZSkgeyB0cnkgeyB2YXIgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7IHZhciByYW5kb21WYWx1ZU5vZGVKUyA9IGZ1bmN0aW9uKCkgeyB2YXIgYnVmID0gY3J5cHRvWydyYW5kb21CeXRlcyddKDQpOyByZXR1cm4gKGJ1ZlswXSA8PCAyNCB8IGJ1ZlsxXSA8PCAxNiB8IGJ1ZlsyXSA8PCA4IHwgYnVmWzNdKSA+Pj4gMDsgfTsgcmFuZG9tVmFsdWVOb2RlSlMoKTsgTW9kdWxlLmdldFJhbmRvbVZhbHVlID0gcmFuZG9tVmFsdWVOb2RlSlM7IH0gY2F0Y2ggKGUpIHsgdGhyb3cgJ05vIHNlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBmb3VuZCc7IH0gfSB9IH0ATGlic29kaXVtRFJHYnVmX2xlbiA8PSBTSVpFX01BWAByYW5kb21ieXRlcy9yYW5kb21ieXRlcy5jAHJhbmRvbWJ5dGVzAFMtPmJ1ZmxlbiA8PSBCTEFLRTJCX0JMT0NLQllURVMAY3J5cHRvX2dlbmVyaWNoYXNoL2JsYWtlMmIvcmVmL2JsYWtlMmItcmVmLmMAYmxha2UyYl9maW5hbAAAAAAAAAAACMm882fmCWo7p8qEha5nuyv4lP5y82488TYdXzr1T6XRguatf1IOUR9sPiuMaAWba71B+6vZgx95IX4TGc3gW291dGxlbiA8PSBVSU5UOF9NQVgAY3J5cHRvX2dlbmVyaWNoYXNoL2JsYWtlMmIvcmVmL2dlbmVyaWNoYXNoX2JsYWtlMmIuYwBjcnlwdG9fZ2VuZXJpY2hhc2hfYmxha2UyYl9maW5hbAAAAAAAAAC2eFn/hXLTAL1uFf8PCmoAKcABAJjoef+8PKD/mXHO/wC34v60DUj/AAAAAAAAAACwoA7+08mG/54YjwB/aTUAYAy9AKfX+/+fTID+amXh/x78BACSDK4AQbARCydZ8bL+CuWm/3vdKv4eFNQAUoADADDR8wB3eUD/MuOc/wBuxQFnG5AAQeARC8AHhTuMAb3xJP/4JcMBYNw3ALdMPv/DQj0AMkykAeGkTP9MPaP/dT4fAFGRQP92QQ4AonPW/waKLgB85vT/CoqPADQawgC49EwAgY8pAb70E/97qnr/YoFEAHnVkwBWZR7/oWebAIxZQ//v5b4BQwu1AMbwif7uRbz/Q5fuABMqbP/lVXEBMkSH/xFqCQAyZwH/UAGoASOYHv8QqLkBOFno/2XS/AAp+kcAzKpP/w4u7/9QTe8AvdZL/xGN+QAmUEz/vlV1AFbkqgCc2NABw8+k/5ZCTP+v4RD/jVBiAUzb8gDGonIALtqYAJsr8f6boGj/M7ulAAIRrwBCVKAB9zoeACNBNf5F7L8ALYb1AaN73QAgbhT/NBelALrWRwDpsGAA8u82ATlZigBTAFT/iKBkAFyOeP5ofL4AtbE+//opVQCYgioBYPz2AJeXP/7vhT4AIDicAC2nvf+OhbMBg1bTALuzlv76qg7/0qNOACU0lwBjTRoA7pzV/9XA0QFJLlQAFEEpATbOTwDJg5L+qm8Y/7EhMv6rJsv/Tvd0ANHdmQCFgLIBOiwZAMknOwG9E/wAMeXSAXW7dQC1s7gBAHLbADBekwD1KTgAfQ3M/vStdwAs3SD+VOoUAPmgxgHsfur/L2Oo/qrimf9ms9gA4o16/3pCmf629YYA4+QZAdY56//YrTj/tefSAHeAnf+BX4j/bn4zAAKpt/8HgmL+RbBe/3QE4wHZ8pH/yq0fAWkBJ/8ur0UA5C86/9fgRf7POEX/EP6L/xfP1P/KFH7/X9Vg/wmwIQDIBc//8SqA/iMhwP/45cQBgRF4APtnl/8HNHD/jDhC/yji9f/ZRiX+rNYJ/0hDhgGSwNb/LCZwAES4S//OWvsAleuNALWqOgB09O8AXJ0CAGatYgDpiWABfzHLAAWblAAXlAn/03oMACKGGv/bzIgAhggp/+BTK/5VGfcAbX8A/qmIMADud9v/563VAM4S/v4Iugf/fgkHAW8qSABvNOz+YD+NAJO/f/7NTsD/DmrtAbvbTACv87v+aVmtAFUZWQGi85QAAnbR/iGeCQCLoy7/XUYoAGwqjv5v/I7/m9+QADPlp/9J/Jv/XnQM/5ig2v+c7iX/s+rP/8UAs/+apI0A4cRoAAojGf7R1PL/Yf3e/rhl5QDeEn8BpIiH/x7PjP6SYfMAgcAa/slUIf9vCk7/k1Gy/wQEGACh7tf/Bo0hADXXDv8ptdD/54udALPL3f//uXEAveKs/3FC1v/KPi3/ZkAI/06uEP6FdUT/AEHAGQsBAQBB4BkLsAEm6JWPwrInsEXD9Iny75jw1d+sBdPGMzmxOAKIbVP8BccXanA9TdhPujwLdg0QZw8qIFP6LDnMxk7H/XeSrAN67P///////////////////////////////////////3/t////////////////////////////////////////f+7///////////////////////////////////////9/7dP1XBpjEljWnPei3vneFABBnxsL/PABEIU7jAG98ST/+CXDAWDcNwC3TD7/w0I9ADJMpAHhpEz/TD2j/3U+HwBRkUD/dkEOAKJz1v8Gii4AfOb0/wqKjwA0GsIAuPRMAIGPKQG+9BP/e6p6/2KBRAB51ZMAVmUe/6FnmwCMWUP/7+W+AUMLtQDG8In+7kW8/+pxPP8l/zn/RbK2/oDQswB2Gn3+AwfW//EyTf9Vy8X/04f6/xkwZP+71bT+EVhpAFPRngEFc2IABK48/qs3bv/ZtRH/FLyqAJKcZv5X1q7/cnqbAeksqgB/CO8B1uzqAK8F2wAxaj3/BkLQ/wJqbv9R6hP/12vA/0OX7gATKmz/5VVxATJEh/8RagkAMmcB/1ABqAEjmB7/EKi5AThZ6P9l0vwAKfpHAMyqT/8OLu//UE3vAL3WS/8RjfkAJlBM/75VdQBW5KoAnNjQAcPPpP+WQkz/r+EQ/41QYgFM2/IAxqJyAC7amACbK/H+m6Bo/7IJ/P5kbtQADgWnAOnvo/8cl50BZZIK//6e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\";function yA(){try{if(s)return new Uint8Array(s);var A=NA(fA);if(A)return A;if(e)return e(fA);throw\"both async and sync fetching of the wasm failed\"}catch(A){iA(A)}}function sA(){return s||!i&&!n||\"function\"!=typeof fetch||eA(fA)?new Promise((function(A,I){A(yA())})):fetch(fA,{credentials:\"same-origin\"}).then((function(A){if(!A.ok)throw\"failed to load wasm binary file at '\"+fA+\"'\";return A.arrayBuffer()})).catch((function(){return yA()}))}function wA(){var A={a:MA};function I(A,I){var g=A.exports;C.asm=g,EA()}function g(A){I(A.instance)}function B(I){return sA().then((function(I){return WebAssembly.instantiate(I,A)})).then(I,(function(A){h(\"failed to asynchronously prepare wasm: \"+A),iA(A)}))}if(QA(),C.instantiateWasm)try{return C.instantiateWasm(A,I)}catch(A){return h(\"Module.instantiateWasm callback failed with error: \"+A),!1}return function(){if(s||\"function\"!=typeof WebAssembly.instantiateStreaming||rA(fA)||eA(fA)||\"function\"!=typeof fetch)return B(g);fetch(fA,{credentials:\"same-origin\"}).then((function(I){return WebAssembly.instantiateStreaming(I,A).then(g,(function(A){return h(\"wasm streaming compile failed: \"+A),h(\"falling back to ArrayBuffer instantiation\"),B(g)}))}))}(),{}}rA(fA)||(fA=y(fA));var hA={1024:function(){return C.getRandomValue()},1062:function(){if(void 0===C.getRandomValue)try{var A=\"object\"==typeof window?window:self,I=void 0!==A.crypto?A.crypto:A.msCrypto,g=function(){var A=new Uint32Array(1);return I.getRandomValues(A),A[0]>>>0};g(),C.getRandomValue=g}catch(A){try{var B=require(\"crypto\"),Q=function(){var A=B.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};Q(),C.getRandomValue=Q}catch(A){throw\"No secure random number generator found\"}}}};function DA(A,I,g){var B=bA(I,g);return hA[A].apply(null,B)}function uA(A,I,g,B){iA(\"Assertion failed: \"+_(A)+\", at: \"+[I?_(I):\"unknown filename\",g,B?_(B):\"unknown function\"])}function pA(){iA()}function lA(A,I,g){b.copyWithin(A,I,I+g)}function FA(){return b.length}function GA(A){try{return w.grow(A-H.byteLength+65535>>>16),M(w.buffer),1}catch(A){}}function kA(A){A>>>=0;var I=FA();if(A>2147483648)return!1;for(var g=1;g<=4;g*=2){var B=I*(1+.2/g);if(B=Math.min(B,A+100663296),GA(Math.min(2147483648,R(Math.max(16777216,A,B),65536))))return!0}return!1}function _A(A){return U[PA()>>2]=A,A}function HA(A){switch(A){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return\"object\"==typeof navigator&&navigator.hardwareConcurrency||1}return _A(28),-1}K.push({func:function(){dA()}});var YA=[];function bA(A,I){var g;for(YA.length=0,I>>=2;g=b[A++];){var B=g<105;B&&1&I&&I++,YA.push(B?S[I++>>1]:U[I]),++I}return YA}var mA=!1;function UA(A){for(var I=[],g=0;g<A.length;g++){var B=A[g];B>255&&(mA&&F(!1,\"Character code \"+B+\" (\"+String.fromCharCode(B)+\") at offset \"+g+\" not in 0x00-0xFF.\"),B&=255),I.push(String.fromCharCode(B))}return I.join(\"\")}var vA=\"function\"==typeof atob?atob:function(A){var I,g,B,C,Q,E,i=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",n=\"\",a=0;A=A.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do{I=i.indexOf(A.charAt(a++))<<2|(C=i.indexOf(A.charAt(a++)))>>4,g=(15&C)<<4|(Q=i.indexOf(A.charAt(a++)))>>2,B=(3&Q)<<6|(E=i.indexOf(A.charAt(a++))),n+=String.fromCharCode(I),64!==Q&&(n+=String.fromCharCode(g)),64!==E&&(n+=String.fromCharCode(B))}while(a<A.length);return n};function SA(A){if(\"boolean\"==typeof a&&a){var I;try{I=Buffer.from(A,\"base64\")}catch(g){I=new Buffer(A,\"base64\")}return new Uint8Array(I.buffer,I.byteOffset,I.byteLength)}try{for(var g=vA(A),B=new Uint8Array(g.length),C=0;C<g.length;++C)B[C]=g.charCodeAt(C);return B}catch(A){throw new Error(\"Converting base64 string to bytes failed.\")}}function NA(A){if(rA(A))return SA(A.slice(aA.length))}var RA,MA={a:uA,c:pA,b:DA,e:lA,f:kA,memory:w,d:HA,table:p},dA=(wA(),C.___wasm_call_ctors=function(){return(dA=C.___wasm_call_ctors=C.asm.g).apply(null,arguments)}),PA=(C._crypto_aead_chacha20poly1305_encrypt_detached=function(){return(C._crypto_aead_chacha20poly1305_encrypt_detached=C.asm.h).apply(null,arguments)},C._crypto_aead_chacha20poly1305_encrypt=function(){return(C._crypto_aead_chacha20poly1305_encrypt=C.asm.i).apply(null,arguments)},C._crypto_aead_chacha20poly1305_ietf_encrypt_detached=function(){return(C._crypto_aead_chacha20poly1305_ietf_encrypt_detached=C.asm.j).apply(null,arguments)},C._crypto_aead_chacha20poly1305_ietf_encrypt=function(){return(C._crypto_aead_chacha20poly1305_ietf_encrypt=C.asm.k).apply(null,arguments)},C._crypto_aead_chacha20poly1305_decrypt_detached=function(){return(C._crypto_aead_chacha20poly1305_decrypt_detached=C.asm.l).apply(null,arguments)},C._crypto_aead_chacha20poly1305_decrypt=function(){return(C._crypto_aead_chacha20poly1305_decrypt=C.asm.m).apply(null,arguments)},C._crypto_aead_chacha20poly1305_ietf_decrypt_detached=function(){return(C._crypto_aead_chacha20poly1305_ietf_decrypt_detached=C.asm.n).apply(null,arguments)},C._crypto_aead_chacha20poly1305_ietf_decrypt=function(){return(C._crypto_aead_chacha20poly1305_ietf_decrypt=C.asm.o).apply(null,arguments)},C._crypto_aead_chacha20poly1305_ietf_keybytes=function(){return(C._crypto_aead_chacha20poly1305_ietf_keybytes=C.asm.p).apply(null,arguments)},C._crypto_aead_chacha20poly1305_ietf_npubbytes=function(){return(C._crypto_aead_chacha20poly1305_ietf_npubbytes=C.asm.q).apply(null,arguments)},C._crypto_aead_chacha20poly1305_ietf_nsecbytes=function(){return(C._crypto_aead_chacha20poly1305_ietf_nsecbytes=C.asm.r).apply(null,arguments)},C._crypto_aead_chacha20poly1305_ietf_abytes=function(){return(C._crypto_aead_chacha20poly1305_ietf_abytes=C.asm.s).apply(null,arguments)},C._crypto_aead_chacha20poly1305_ietf_messagebytes_max=function(){return(C._crypto_aead_chacha20poly1305_ietf_messagebytes_max=C.asm.t).apply(null,arguments)},C._crypto_aead_chacha20poly1305_ietf_keygen=function(){return(C._crypto_aead_chacha20poly1305_ietf_keygen=C.asm.u).apply(null,arguments)},C._crypto_aead_chacha20poly1305_keybytes=function(){return(C._crypto_aead_chacha20poly1305_keybytes=C.asm.v).apply(null,arguments)},C._crypto_aead_chacha20poly1305_npubbytes=function(){return(C._crypto_aead_chacha20poly1305_npubbytes=C.asm.w).apply(null,arguments)},C._crypto_aead_chacha20poly1305_nsecbytes=function(){return(C._crypto_aead_chacha20poly1305_nsecbytes=C.asm.x).apply(null,arguments)},C._crypto_aead_chacha20poly1305_abytes=function(){return(C._crypto_aead_chacha20poly1305_abytes=C.asm.y).apply(null,arguments)},C._crypto_aead_chacha20poly1305_messagebytes_max=function(){return(C._crypto_aead_chacha20poly1305_messagebytes_max=C.asm.z).apply(null,arguments)},C._crypto_aead_chacha20poly1305_keygen=function(){return(C._crypto_aead_chacha20poly1305_keygen=C.asm.A).apply(null,arguments)},C._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=function(){return(C._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=C.asm.B).apply(null,arguments)},C._crypto_aead_xchacha20poly1305_ietf_encrypt=function(){return(C._crypto_aead_xchacha20poly1305_ietf_encrypt=C.asm.C).apply(null,arguments)},C._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=function(){return(C._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=C.asm.D).apply(null,arguments)},C._crypto_aead_xchacha20poly1305_ietf_decrypt=function(){return(C._crypto_aead_xchacha20poly1305_ietf_decrypt=C.asm.E).apply(null,arguments)},C._crypto_aead_xchacha20poly1305_ietf_keybytes=function(){return(C._crypto_aead_xchacha20poly1305_ietf_keybytes=C.asm.F).apply(null,arguments)},C._crypto_aead_xchacha20poly1305_ietf_npubbytes=function(){return(C._crypto_aead_xchacha20poly1305_ietf_npubbytes=C.asm.G).apply(null,arguments)},C._crypto_aead_xchacha20poly1305_ietf_nsecbytes=function(){return(C._crypto_aead_xchacha20poly1305_ietf_nsecbytes=C.asm.H).apply(null,arguments)},C._crypto_aead_xchacha20poly1305_ietf_abytes=function(){return(C._crypto_aead_xchacha20poly1305_ietf_abytes=C.asm.I).apply(null,arguments)},C._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=function(){return(C._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=C.asm.J).apply(null,arguments)},C._crypto_aead_xchacha20poly1305_ietf_keygen=function(){return(C._crypto_aead_xchacha20poly1305_ietf_keygen=C.asm.K).apply(null,arguments)},C._crypto_auth_bytes=function(){return(C._crypto_auth_bytes=C.asm.L).apply(null,arguments)},C._crypto_auth_keybytes=function(){return(C._crypto_auth_keybytes=C.asm.M).apply(null,arguments)},C._crypto_auth=function(){return(C._crypto_auth=C.asm.N).apply(null,arguments)},C._crypto_auth_verify=function(){return(C._crypto_auth_verify=C.asm.O).apply(null,arguments)},C._crypto_auth_keygen=function(){return(C._crypto_auth_keygen=C.asm.P).apply(null,arguments)},C._crypto_box_seedbytes=function(){return(C._crypto_box_seedbytes=C.asm.Q).apply(null,arguments)},C._crypto_box_publickeybytes=function(){return(C._crypto_box_publickeybytes=C.asm.R).apply(null,arguments)},C._crypto_box_secretkeybytes=function(){return(C._crypto_box_secretkeybytes=C.asm.S).apply(null,arguments)},C._crypto_box_beforenmbytes=function(){return(C._crypto_box_beforenmbytes=C.asm.T).apply(null,arguments)},C._crypto_box_noncebytes=function(){return(C._crypto_box_noncebytes=C.asm.U).apply(null,arguments)},C._crypto_box_macbytes=function(){return(C._crypto_box_macbytes=C.asm.V).apply(null,arguments)},C._crypto_box_messagebytes_max=function(){return(C._crypto_box_messagebytes_max=C.asm.W).apply(null,arguments)},C._crypto_box_seed_keypair=function(){return(C._crypto_box_seed_keypair=C.asm.X).apply(null,arguments)},C._crypto_box_keypair=function(){return(C._crypto_box_keypair=C.asm.Y).apply(null,arguments)},C._crypto_box_beforenm=function(){return(C._crypto_box_beforenm=C.asm.Z).apply(null,arguments)},C._crypto_box_detached_afternm=function(){return(C._crypto_box_detached_afternm=C.asm._).apply(null,arguments)},C._crypto_box_detached=function(){return(C._crypto_box_detached=C.asm.$).apply(null,arguments)},C._crypto_box_easy_afternm=function(){return(C._crypto_box_easy_afternm=C.asm.aa).apply(null,arguments)},C._crypto_box_easy=function(){return(C._crypto_box_easy=C.asm.ba).apply(null,arguments)},C._crypto_box_open_detached_afternm=function(){return(C._crypto_box_open_detached_afternm=C.asm.ca).apply(null,arguments)},C._crypto_box_open_detached=function(){return(C._crypto_box_open_detached=C.asm.da).apply(null,arguments)},C._crypto_box_open_easy_afternm=function(){return(C._crypto_box_open_easy_afternm=C.asm.ea).apply(null,arguments)},C._crypto_box_open_easy=function(){return(C._crypto_box_open_easy=C.asm.fa).apply(null,arguments)},C._crypto_box_seal=function(){return(C._crypto_box_seal=C.asm.ga).apply(null,arguments)},C._crypto_box_seal_open=function(){return(C._crypto_box_seal_open=C.asm.ha).apply(null,arguments)},C._crypto_box_sealbytes=function(){return(C._crypto_box_sealbytes=C.asm.ia).apply(null,arguments)},C._crypto_generichash_bytes_min=function(){return(C._crypto_generichash_bytes_min=C.asm.ja).apply(null,arguments)},C._crypto_generichash_bytes_max=function(){return(C._crypto_generichash_bytes_max=C.asm.ka).apply(null,arguments)},C._crypto_generichash_bytes=function(){return(C._crypto_generichash_bytes=C.asm.la).apply(null,arguments)},C._crypto_generichash_keybytes_min=function(){return(C._crypto_generichash_keybytes_min=C.asm.ma).apply(null,arguments)},C._crypto_generichash_keybytes_max=function(){return(C._crypto_generichash_keybytes_max=C.asm.na).apply(null,arguments)},C._crypto_generichash_keybytes=function(){return(C._crypto_generichash_keybytes=C.asm.oa).apply(null,arguments)},C._crypto_generichash_statebytes=function(){return(C._crypto_generichash_statebytes=C.asm.pa).apply(null,arguments)},C._crypto_generichash=function(){return(C._crypto_generichash=C.asm.qa).apply(null,arguments)},C._crypto_generichash_init=function(){return(C._crypto_generichash_init=C.asm.ra).apply(null,arguments)},C._crypto_generichash_update=function(){return(C._crypto_generichash_update=C.asm.sa).apply(null,arguments)},C._crypto_generichash_final=function(){return(C._crypto_generichash_final=C.asm.ta).apply(null,arguments)},C._crypto_generichash_keygen=function(){return(C._crypto_generichash_keygen=C.asm.ua).apply(null,arguments)},C._crypto_hash_bytes=function(){return(C._crypto_hash_bytes=C.asm.va).apply(null,arguments)},C._crypto_hash=function(){return(C._crypto_hash=C.asm.wa).apply(null,arguments)},C._crypto_kdf_bytes_min=function(){return(C._crypto_kdf_bytes_min=C.asm.xa).apply(null,arguments)},C._crypto_kdf_bytes_max=function(){return(C._crypto_kdf_bytes_max=C.asm.ya).apply(null,arguments)},C._crypto_kdf_contextbytes=function(){return(C._crypto_kdf_contextbytes=C.asm.za).apply(null,arguments)},C._crypto_kdf_keybytes=function(){return(C._crypto_kdf_keybytes=C.asm.Aa).apply(null,arguments)},C._crypto_kdf_derive_from_key=function(){return(C._crypto_kdf_derive_from_key=C.asm.Ba).apply(null,arguments)},C._crypto_kdf_keygen=function(){return(C._crypto_kdf_keygen=C.asm.Ca).apply(null,arguments)},C._crypto_kx_seed_keypair=function(){return(C._crypto_kx_seed_keypair=C.asm.Da).apply(null,arguments)},C._crypto_kx_keypair=function(){return(C._crypto_kx_keypair=C.asm.Ea).apply(null,arguments)},C._crypto_kx_client_session_keys=function(){return(C._crypto_kx_client_session_keys=C.asm.Fa).apply(null,arguments)},C._crypto_kx_server_session_keys=function(){return(C._crypto_kx_server_session_keys=C.asm.Ga).apply(null,arguments)},C._crypto_kx_publickeybytes=function(){return(C._crypto_kx_publickeybytes=C.asm.Ha).apply(null,arguments)},C._crypto_kx_secretkeybytes=function(){return(C._crypto_kx_secretkeybytes=C.asm.Ia).apply(null,arguments)},C._crypto_kx_seedbytes=function(){return(C._crypto_kx_seedbytes=C.asm.Ja).apply(null,arguments)},C._crypto_kx_sessionkeybytes=function(){return(C._crypto_kx_sessionkeybytes=C.asm.Ka).apply(null,arguments)},C._crypto_pwhash_alg_argon2i13=function(){return(C._crypto_pwhash_alg_argon2i13=C.asm.La).apply(null,arguments)},C._crypto_pwhash_alg_argon2id13=function(){return(C._crypto_pwhash_alg_argon2id13=C.asm.Ma).apply(null,arguments)},C._crypto_pwhash_alg_default=function(){return(C._crypto_pwhash_alg_default=C.asm.Na).apply(null,arguments)},C._crypto_pwhash_bytes_min=function(){return(C._crypto_pwhash_bytes_min=C.asm.Oa).apply(null,arguments)},C._crypto_pwhash_bytes_max=function(){return(C._crypto_pwhash_bytes_max=C.asm.Pa).apply(null,arguments)},C._crypto_pwhash_passwd_min=function(){return(C._crypto_pwhash_passwd_min=C.asm.Qa).apply(null,arguments)},C._crypto_pwhash_passwd_max=function(){return(C._crypto_pwhash_passwd_max=C.asm.Ra).apply(null,arguments)},C._crypto_pwhash_saltbytes=function(){return(C._crypto_pwhash_saltbytes=C.asm.Sa).apply(null,arguments)},C._crypto_pwhash_strbytes=function(){return(C._crypto_pwhash_strbytes=C.asm.Ta).apply(null,arguments)},C._crypto_pwhash_strprefix=function(){return(C._crypto_pwhash_strprefix=C.asm.Ua).apply(null,arguments)},C._crypto_pwhash_opslimit_min=function(){return(C._crypto_pwhash_opslimit_min=C.asm.Va).apply(null,arguments)},C._crypto_pwhash_opslimit_max=function(){return(C._crypto_pwhash_opslimit_max=C.asm.Wa).apply(null,arguments)},C._crypto_pwhash_memlimit_min=function(){return(C._crypto_pwhash_memlimit_min=C.asm.Xa).apply(null,arguments)},C._crypto_pwhash_memlimit_max=function(){return(C._crypto_pwhash_memlimit_max=C.asm.Ya).apply(null,arguments)},C._crypto_pwhash_opslimit_interactive=function(){return(C._crypto_pwhash_opslimit_interactive=C.asm.Za).apply(null,arguments)},C._crypto_pwhash_memlimit_interactive=function(){return(C._crypto_pwhash_memlimit_interactive=C.asm._a).apply(null,arguments)},C._crypto_pwhash_opslimit_moderate=function(){return(C._crypto_pwhash_opslimit_moderate=C.asm.$a).apply(null,arguments)},C._crypto_pwhash_memlimit_moderate=function(){return(C._crypto_pwhash_memlimit_moderate=C.asm.ab).apply(null,arguments)},C._crypto_pwhash_opslimit_sensitive=function(){return(C._crypto_pwhash_opslimit_sensitive=C.asm.bb).apply(null,arguments)},C._crypto_pwhash_memlimit_sensitive=function(){return(C._crypto_pwhash_memlimit_sensitive=C.asm.cb).apply(null,arguments)},C._crypto_pwhash=function(){return(C._crypto_pwhash=C.asm.db).apply(null,arguments)},C._crypto_pwhash_str=function(){return(C._crypto_pwhash_str=C.asm.eb).apply(null,arguments)},C._crypto_pwhash_str_alg=function(){return(C._crypto_pwhash_str_alg=C.asm.fb).apply(null,arguments)},C._crypto_pwhash_str_verify=function(){return(C._crypto_pwhash_str_verify=C.asm.gb).apply(null,arguments)},C._crypto_pwhash_str_needs_rehash=function(){return(C._crypto_pwhash_str_needs_rehash=C.asm.hb).apply(null,arguments)},C._crypto_scalarmult_base=function(){return(C._crypto_scalarmult_base=C.asm.ib).apply(null,arguments)},C._crypto_scalarmult=function(){return(C._crypto_scalarmult=C.asm.jb).apply(null,arguments)},C._crypto_scalarmult_bytes=function(){return(C._crypto_scalarmult_bytes=C.asm.kb).apply(null,arguments)},C._crypto_scalarmult_scalarbytes=function(){return(C._crypto_scalarmult_scalarbytes=C.asm.lb).apply(null,arguments)},C._crypto_secretbox_keybytes=function(){return(C._crypto_secretbox_keybytes=C.asm.mb).apply(null,arguments)},C._crypto_secretbox_noncebytes=function(){return(C._crypto_secretbox_noncebytes=C.asm.nb).apply(null,arguments)},C._crypto_secretbox_macbytes=function(){return(C._crypto_secretbox_macbytes=C.asm.ob).apply(null,arguments)},C._crypto_secretbox_messagebytes_max=function(){return(C._crypto_secretbox_messagebytes_max=C.asm.pb).apply(null,arguments)},C._crypto_secretbox_keygen=function(){return(C._crypto_secretbox_keygen=C.asm.qb).apply(null,arguments)},C._crypto_secretbox_detached=function(){return(C._crypto_secretbox_detached=C.asm.rb).apply(null,arguments)},C._crypto_secretbox_easy=function(){return(C._crypto_secretbox_easy=C.asm.sb).apply(null,arguments)},C._crypto_secretbox_open_detached=function(){return(C._crypto_secretbox_open_detached=C.asm.tb).apply(null,arguments)},C._crypto_secretbox_open_easy=function(){return(C._crypto_secretbox_open_easy=C.asm.ub).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_keygen=function(){return(C._crypto_secretstream_xchacha20poly1305_keygen=C.asm.vb).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_init_push=function(){return(C._crypto_secretstream_xchacha20poly1305_init_push=C.asm.wb).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_init_pull=function(){return(C._crypto_secretstream_xchacha20poly1305_init_pull=C.asm.xb).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_rekey=function(){return(C._crypto_secretstream_xchacha20poly1305_rekey=C.asm.yb).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_push=function(){return(C._crypto_secretstream_xchacha20poly1305_push=C.asm.zb).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_pull=function(){return(C._crypto_secretstream_xchacha20poly1305_pull=C.asm.Ab).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_statebytes=function(){return(C._crypto_secretstream_xchacha20poly1305_statebytes=C.asm.Bb).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_abytes=function(){return(C._crypto_secretstream_xchacha20poly1305_abytes=C.asm.Cb).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_headerbytes=function(){return(C._crypto_secretstream_xchacha20poly1305_headerbytes=C.asm.Db).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_keybytes=function(){return(C._crypto_secretstream_xchacha20poly1305_keybytes=C.asm.Eb).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_messagebytes_max=function(){return(C._crypto_secretstream_xchacha20poly1305_messagebytes_max=C.asm.Fb).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_tag_message=function(){return(C._crypto_secretstream_xchacha20poly1305_tag_message=C.asm.Gb).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_tag_push=function(){return(C._crypto_secretstream_xchacha20poly1305_tag_push=C.asm.Hb).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_tag_rekey=function(){return(C._crypto_secretstream_xchacha20poly1305_tag_rekey=C.asm.Ib).apply(null,arguments)},C._crypto_secretstream_xchacha20poly1305_tag_final=function(){return(C._crypto_secretstream_xchacha20poly1305_tag_final=C.asm.Jb).apply(null,arguments)},C._crypto_shorthash_bytes=function(){return(C._crypto_shorthash_bytes=C.asm.Kb).apply(null,arguments)},C._crypto_shorthash_keybytes=function(){return(C._crypto_shorthash_keybytes=C.asm.Lb).apply(null,arguments)},C._crypto_shorthash=function(){return(C._crypto_shorthash=C.asm.Mb).apply(null,arguments)},C._crypto_shorthash_keygen=function(){return(C._crypto_shorthash_keygen=C.asm.Nb).apply(null,arguments)},C._crypto_sign_statebytes=function(){return(C._crypto_sign_statebytes=C.asm.Ob).apply(null,arguments)},C._crypto_sign_bytes=function(){return(C._crypto_sign_bytes=C.asm.Pb).apply(null,arguments)},C._crypto_sign_seedbytes=function(){return(C._crypto_sign_seedbytes=C.asm.Qb).apply(null,arguments)},C._crypto_sign_publickeybytes=function(){return(C._crypto_sign_publickeybytes=C.asm.Rb).apply(null,arguments)},C._crypto_sign_secretkeybytes=function(){return(C._crypto_sign_secretkeybytes=C.asm.Sb).apply(null,arguments)},C._crypto_sign_messagebytes_max=function(){return(C._crypto_sign_messagebytes_max=C.asm.Tb).apply(null,arguments)},C._crypto_sign_seed_keypair=function(){return(C._crypto_sign_seed_keypair=C.asm.Ub).apply(null,arguments)},C._crypto_sign_keypair=function(){return(C._crypto_sign_keypair=C.asm.Vb).apply(null,arguments)},C._crypto_sign=function(){return(C._crypto_sign=C.asm.Wb).apply(null,arguments)},C._crypto_sign_open=function(){return(C._crypto_sign_open=C.asm.Xb).apply(null,arguments)},C._crypto_sign_detached=function(){return(C._crypto_sign_detached=C.asm.Yb).apply(null,arguments)},C._crypto_sign_verify_detached=function(){return(C._crypto_sign_verify_detached=C.asm.Zb).apply(null,arguments)},C._crypto_sign_init=function(){return(C._crypto_sign_init=C.asm._b).apply(null,arguments)},C._crypto_sign_update=function(){return(C._crypto_sign_update=C.asm.$b).apply(null,arguments)},C._crypto_sign_final_create=function(){return(C._crypto_sign_final_create=C.asm.ac).apply(null,arguments)},C._crypto_sign_final_verify=function(){return(C._crypto_sign_final_verify=C.asm.bc).apply(null,arguments)},C._crypto_sign_ed25519_pk_to_curve25519=function(){return(C._crypto_sign_ed25519_pk_to_curve25519=C.asm.cc).apply(null,arguments)},C._crypto_sign_ed25519_sk_to_curve25519=function(){return(C._crypto_sign_ed25519_sk_to_curve25519=C.asm.dc).apply(null,arguments)},C._randombytes_random=function(){return(C._randombytes_random=C.asm.ec).apply(null,arguments)},C._randombytes_stir=function(){return(C._randombytes_stir=C.asm.fc).apply(null,arguments)},C._randombytes_uniform=function(){return(C._randombytes_uniform=C.asm.gc).apply(null,arguments)},C._randombytes_buf=function(){return(C._randombytes_buf=C.asm.hc).apply(null,arguments)},C._randombytes_buf_deterministic=function(){return(C._randombytes_buf_deterministic=C.asm.ic).apply(null,arguments)},C._randombytes_seedbytes=function(){return(C._randombytes_seedbytes=C.asm.jc).apply(null,arguments)},C._randombytes_close=function(){return(C._randombytes_close=C.asm.kc).apply(null,arguments)},C._randombytes=function(){return(C._randombytes=C.asm.lc).apply(null,arguments)},C._sodium_bin2hex=function(){return(C._sodium_bin2hex=C.asm.mc).apply(null,arguments)},C._sodium_hex2bin=function(){return(C._sodium_hex2bin=C.asm.nc).apply(null,arguments)},C._sodium_base64_encoded_len=function(){return(C._sodium_base64_encoded_len=C.asm.oc).apply(null,arguments)},C._sodium_bin2base64=function(){return(C._sodium_bin2base64=C.asm.pc).apply(null,arguments)},C._sodium_base642bin=function(){return(C._sodium_base642bin=C.asm.qc).apply(null,arguments)},C._sodium_init=function(){return(C._sodium_init=C.asm.rc).apply(null,arguments)},C._sodium_pad=function(){return(C._sodium_pad=C.asm.sc).apply(null,arguments)},C._sodium_unpad=function(){return(C._sodium_unpad=C.asm.tc).apply(null,arguments)},C._sodium_version_string=function(){return(C._sodium_version_string=C.asm.uc).apply(null,arguments)},C._sodium_library_version_major=function(){return(C._sodium_library_version_major=C.asm.vc).apply(null,arguments)},C._sodium_library_version_minor=function(){return(C._sodium_library_version_minor=C.asm.wc).apply(null,arguments)},C._sodium_library_minimal=function(){return(C._sodium_library_minimal=C.asm.xc).apply(null,arguments)},C.___errno_location=function(){return(PA=C.___errno_location=C.asm.yc).apply(null,arguments)});function JA(A){function I(){RA||(RA=!0,C.calledRun=!0,l||(T(),W(),C.onRuntimeInitialized&&C.onRuntimeInitialized(),j()))}A=A||E,gA>0||(V(),gA>0||(C.setStatus?(C.setStatus(\"Running...\"),setTimeout((function(){setTimeout((function(){C.setStatus(\"\")}),1),I()}),1)):I()))}if(C._malloc=function(){return(C._malloc=C.asm.zc).apply(null,arguments)},C._free=function(){return(C._free=C.asm.Ac).apply(null,arguments)},C.setValue=D,C.getValue=u,C.UTF8ToString=_,CA=function A(){RA||JA(),RA||(CA=A)},C.run=JA,C.preInit)for(\"function\"==typeof C.preInit&&(C.preInit=[C.preInit]);C.preInit.length>0;)C.preInit.pop()();JA()})).catch((function(){B.useBackupModule()})),\"object\"==typeof process&&\"function\"==typeof process.removeAllListeners&&(process.removeAllListeners(\"uncaughtException\"),process.removeAllListeners(\"unhandledRejection\")),I}\"function\"==typeof define&&define.amd?define([\"exports\"],I):\"object\"==typeof exports&&\"string\"!=typeof exports.nodeName?I(exports):A.libsodium=I(A.libsodium_mod||(A.commonJsStrict={}))}(this);\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","/*\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","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","// 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/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.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","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","module.exports = require('./lib/_stream_writable.js');\n","module.exports = require('./lib/_stream_duplex.js');\n","module.exports = require('./readable').Transform\n","module.exports = require('./readable').PassThrough\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","module.exports = require('./browser/algorithms.json')\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\n\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n process.nextTick(function () {\n callback(null, out)\n })\n }, function (e) {\n process.nextTick(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n return process.nextTick(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","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 Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\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 Buffer = require('buffer').Buffer;\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 }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\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 parseHex (str, start, end) {\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 <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\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 var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\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\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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","'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 '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) + '>';\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 '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) +\n ' y: ' + this.y.toString(16, 2) +\n ' z: ' + this.z.toString(16, 2) + '>';\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 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 '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' z: ' + this.z.fromRed().toString(16, 2) + '>';\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 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 '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) +\n ' z: ' + this.z.fromRed().toString(16, 2) + '>';\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\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');\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');\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\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","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 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 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","'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 '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\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<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [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<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [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","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\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 Buffer = require('buffer').Buffer;\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 }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\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 parseHex (str, start, end) {\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 <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\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 var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\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\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 ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\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}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict'\n\nvar base58 = require('bs58')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (checksumFn) {\n // Encode a buffer as a base58-check encoded string\n function encode (payload) {\n var checksum = checksumFn(payload)\n\n return base58.encode(Buffer.concat([\n payload,\n checksum\n ], payload.length + 4))\n }\n\n function decodeRaw (buffer) {\n var payload = buffer.slice(0, -4)\n var checksum = buffer.slice(-4)\n var newChecksum = checksumFn(payload)\n\n if (checksum[0] ^ newChecksum[0] |\n checksum[1] ^ newChecksum[1] |\n checksum[2] ^ newChecksum[2] |\n checksum[3] ^ newChecksum[3]) return\n\n return payload\n }\n\n // Decode a base58-check encoded string to a buffer, no result if checksum is wrong\n function decodeUnsafe (string) {\n var buffer = base58.decodeUnsafe(string)\n if (!buffer) return\n\n return decodeRaw(buffer)\n }\n\n function decode (string) {\n var buffer = base58.decode(string)\n var payload = decodeRaw(buffer, checksumFn)\n if (!payload) throw new Error('Invalid checksum')\n return payload\n }\n\n return {\n encode: encode,\n decode: decode,\n decodeUnsafe: decodeUnsafe\n }\n}\n","var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\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 leading spaces.\n if (source[psz] === ' ') { return }\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 trailing spaces.\n if (source[psz] === ' ') { return }\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","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./xml-http-request\"));\nvar xml_http_request_event_target_1 = require(\"./xml-http-request-event-target\");\nexports.XMLHttpRequestEventTarget = xml_http_request_event_target_1.XMLHttpRequestEventTarget;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var 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 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) || 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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar http = require(\"http\");\nvar https = require(\"https\");\nvar os = require(\"os\");\nvar url = require(\"url\");\nvar progress_event_1 = require(\"./progress-event\");\nvar errors_1 = require(\"./errors\");\nvar xml_http_request_event_target_1 = require(\"./xml-http-request-event-target\");\nvar xml_http_request_upload_1 = require(\"./xml-http-request-upload\");\nvar Cookie = require(\"cookiejar\");\nvar XMLHttpRequest = /** @class */ (function (_super) {\n __extends(XMLHttpRequest, _super);\n function XMLHttpRequest(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this) || this;\n _this.UNSENT = XMLHttpRequest.UNSENT;\n _this.OPENED = XMLHttpRequest.OPENED;\n _this.HEADERS_RECEIVED = XMLHttpRequest.HEADERS_RECEIVED;\n _this.LOADING = XMLHttpRequest.LOADING;\n _this.DONE = XMLHttpRequest.DONE;\n _this.onreadystatechange = null;\n _this.readyState = XMLHttpRequest.UNSENT;\n _this.response = null;\n _this.responseText = '';\n _this.responseType = '';\n _this.status = 0; // TODO: UNSENT?\n _this.statusText = '';\n _this.timeout = 0;\n _this.upload = new xml_http_request_upload_1.XMLHttpRequestUpload();\n _this.responseUrl = '';\n _this.withCredentials = false;\n _this._method = null;\n _this._url = null;\n _this._sync = false;\n _this._headers = {};\n _this._loweredHeaders = {};\n _this._mimeOverride = null; // TODO: is type right?\n _this._request = null;\n _this._response = null;\n _this._responseParts = null;\n _this._responseHeaders = null;\n _this._aborting = null; // TODO: type?\n _this._error = null; // TODO: type?\n _this._loadedBytes = 0;\n _this._totalBytes = 0;\n _this._lengthComputable = false;\n _this._restrictedMethods = { CONNECT: true, TRACE: true, TRACK: true };\n _this._restrictedHeaders = {\n 'accept-charset': true,\n 'accept-encoding': true,\n 'access-control-request-headers': true,\n 'access-control-request-method': true,\n connection: true,\n 'content-length': true,\n cookie: true,\n cookie2: true,\n date: true,\n dnt: true,\n expect: true,\n host: true,\n 'keep-alive': true,\n origin: true,\n referer: true,\n te: true,\n trailer: true,\n 'transfer-encoding': true,\n upgrade: true,\n 'user-agent': true,\n via: true\n };\n _this._privateHeaders = { 'set-cookie': true, 'set-cookie2': true };\n _this._userAgent = \"Mozilla/5.0 (\" + os.type() + \" \" + os.arch() + \") node.js/\" + process.versions.node + \" v8/\" + process.versions.v8;\n _this._anonymous = options.anon || false;\n return _this;\n }\n XMLHttpRequest.prototype.open = function (method, url, async, user, password) {\n if (async === void 0) { async = true; }\n method = method.toUpperCase();\n if (this._restrictedMethods[method]) {\n throw new XMLHttpRequest.SecurityError(\"HTTP method \" + method + \" is not allowed in XHR\");\n }\n ;\n var xhrUrl = this._parseUrl(url, user, password);\n if (this.readyState === XMLHttpRequest.HEADERS_RECEIVED || this.readyState === XMLHttpRequest.LOADING) {\n // TODO(pwnall): terminate abort(), terminate send()\n }\n this._method = method;\n this._url = xhrUrl;\n this._sync = !async;\n this._headers = {};\n this._loweredHeaders = {};\n this._mimeOverride = null;\n this._setReadyState(XMLHttpRequest.OPENED);\n this._request = null;\n this._response = null;\n this.status = 0;\n this.statusText = '';\n this._responseParts = [];\n this._responseHeaders = null;\n this._loadedBytes = 0;\n this._totalBytes = 0;\n this._lengthComputable = false;\n };\n XMLHttpRequest.prototype.setRequestHeader = function (name, value) {\n if (this.readyState !== XMLHttpRequest.OPENED) {\n throw new XMLHttpRequest.InvalidStateError('XHR readyState must be OPENED');\n }\n var loweredName = name.toLowerCase();\n if (this._restrictedHeaders[loweredName] || /^sec-/.test(loweredName) || /^proxy-/.test(loweredName)) {\n console.warn(\"Refused to set unsafe header \\\"\" + name + \"\\\"\");\n return;\n }\n value = value.toString();\n if (this._loweredHeaders[loweredName] != null) {\n name = this._loweredHeaders[loweredName];\n this._headers[name] = this._headers[name] + \", \" + value;\n }\n else {\n this._loweredHeaders[loweredName] = name;\n this._headers[name] = value;\n }\n };\n XMLHttpRequest.prototype.send = function (data) {\n if (this.readyState !== XMLHttpRequest.OPENED) {\n throw new XMLHttpRequest.InvalidStateError('XHR readyState must be OPENED');\n }\n if (this._request) {\n throw new XMLHttpRequest.InvalidStateError('send() already called');\n }\n switch (this._url.protocol) {\n case 'file:':\n return this._sendFile(data);\n case 'http:':\n case 'https:':\n return this._sendHttp(data);\n default:\n throw new XMLHttpRequest.NetworkError(\"Unsupported protocol \" + this._url.protocol);\n }\n };\n XMLHttpRequest.prototype.abort = function () {\n if (this._request == null) {\n return;\n }\n this._request.abort();\n this._setError();\n this._dispatchProgress('abort');\n this._dispatchProgress('loadend');\n };\n XMLHttpRequest.prototype.getResponseHeader = function (name) {\n if (this._responseHeaders == null || name == null) {\n return null;\n }\n var loweredName = name.toLowerCase();\n return this._responseHeaders.hasOwnProperty(loweredName)\n ? this._responseHeaders[name.toLowerCase()]\n : null;\n };\n XMLHttpRequest.prototype.getAllResponseHeaders = function () {\n var _this = this;\n if (this._responseHeaders == null) {\n return '';\n }\n return Object.keys(this._responseHeaders).map(function (key) { return key + \": \" + _this._responseHeaders[key]; }).join('\\r\\n');\n };\n XMLHttpRequest.prototype.overrideMimeType = function (mimeType) {\n if (this.readyState === XMLHttpRequest.LOADING || this.readyState === XMLHttpRequest.DONE) {\n throw new XMLHttpRequest.InvalidStateError('overrideMimeType() not allowed in LOADING or DONE');\n }\n this._mimeOverride = mimeType.toLowerCase();\n };\n XMLHttpRequest.prototype.nodejsSet = function (options) {\n this.nodejsHttpAgent = options.httpAgent || this.nodejsHttpAgent;\n this.nodejsHttpsAgent = options.httpsAgent || this.nodejsHttpsAgent;\n if (options.hasOwnProperty('baseUrl')) {\n if (options.baseUrl != null) {\n var parsedUrl = url.parse(options.baseUrl, false, true);\n if (!parsedUrl.protocol) {\n throw new XMLHttpRequest.SyntaxError(\"baseUrl must be an absolute URL\");\n }\n }\n this.nodejsBaseUrl = options.baseUrl;\n }\n };\n XMLHttpRequest.nodejsSet = function (options) {\n XMLHttpRequest.prototype.nodejsSet(options);\n };\n XMLHttpRequest.prototype._setReadyState = function (readyState) {\n this.readyState = readyState;\n this.dispatchEvent(new progress_event_1.ProgressEvent('readystatechange'));\n };\n XMLHttpRequest.prototype._sendFile = function (data) {\n // TODO\n throw new Error('Protocol file: not implemented');\n };\n XMLHttpRequest.prototype._sendHttp = function (data) {\n if (this._sync) {\n throw new Error('Synchronous XHR processing not implemented');\n }\n if (data && (this._method === 'GET' || this._method === 'HEAD')) {\n console.warn(\"Discarding entity body for \" + this._method + \" requests\");\n data = null;\n }\n else {\n data = data || '';\n }\n this.upload._setData(data);\n this._finalizeHeaders();\n this._sendHxxpRequest();\n };\n XMLHttpRequest.prototype._sendHxxpRequest = function () {\n var _this = this;\n if (this.withCredentials) {\n var cookie = XMLHttpRequest.cookieJar\n .getCookies(Cookie.CookieAccessInfo(this._url.hostname, this._url.pathname, this._url.protocol === 'https:')).toValueString();\n this._headers.cookie = this._headers.cookie2 = cookie;\n }\n var _a = this._url.protocol === 'http:' ? [http, this.nodejsHttpAgent] : [https, this.nodejsHttpsAgent], hxxp = _a[0], agent = _a[1];\n var requestMethod = hxxp.request.bind(hxxp);\n var request = requestMethod({\n hostname: this._url.hostname,\n port: +this._url.port,\n path: this._url.path,\n auth: this._url.auth,\n method: this._method,\n headers: this._headers,\n agent: agent\n });\n this._request = request;\n if (this.timeout) {\n request.setTimeout(this.timeout, function () { return _this._onHttpTimeout(request); });\n }\n request.on('response', function (response) { return _this._onHttpResponse(request, response); });\n request.on('error', function (error) { return _this._onHttpRequestError(request, error); });\n this.upload._startUpload(request);\n if (this._request === request) {\n this._dispatchProgress('loadstart');\n }\n };\n XMLHttpRequest.prototype._finalizeHeaders = function () {\n this._headers = __assign({}, this._headers, { Connection: 'keep-alive', Host: this._url.host, 'User-Agent': this._userAgent }, this._anonymous ? { Referer: 'about:blank' } : {});\n this.upload._finalizeHeaders(this._headers, this._loweredHeaders);\n };\n XMLHttpRequest.prototype._onHttpResponse = function (request, response) {\n var _this = this;\n if (this._request !== request) {\n return;\n }\n if (this.withCredentials && (response.headers['set-cookie'] || response.headers['set-cookie2'])) {\n XMLHttpRequest.cookieJar\n .setCookies(response.headers['set-cookie'] || response.headers['set-cookie2']);\n }\n if ([301, 302, 303, 307, 308].indexOf(response.statusCode) >= 0) {\n this._url = this._parseUrl(response.headers.location);\n this._method = 'GET';\n if (this._loweredHeaders['content-type']) {\n delete this._headers[this._loweredHeaders['content-type']];\n delete this._loweredHeaders['content-type'];\n }\n if (this._headers['Content-Type'] != null) {\n delete this._headers['Content-Type'];\n }\n delete this._headers['Content-Length'];\n this.upload._reset();\n this._finalizeHeaders();\n this._sendHxxpRequest();\n return;\n }\n this._response = response;\n this._response.on('data', function (data) { return _this._onHttpResponseData(response, data); });\n this._response.on('end', function () { return _this._onHttpResponseEnd(response); });\n this._response.on('close', function () { return _this._onHttpResponseClose(response); });\n this.responseUrl = this._url.href.split('#')[0];\n this.status = response.statusCode;\n this.statusText = http.STATUS_CODES[this.status];\n this._parseResponseHeaders(response);\n var lengthString = this._responseHeaders['content-length'] || '';\n this._totalBytes = +lengthString;\n this._lengthComputable = !!lengthString;\n this._setReadyState(XMLHttpRequest.HEADERS_RECEIVED);\n };\n XMLHttpRequest.prototype._onHttpResponseData = function (response, data) {\n if (this._response !== response) {\n return;\n }\n this._responseParts.push(new Buffer(data));\n this._loadedBytes += data.length;\n if (this.readyState !== XMLHttpRequest.LOADING) {\n this._setReadyState(XMLHttpRequest.LOADING);\n }\n this._dispatchProgress('progress');\n };\n XMLHttpRequest.prototype._onHttpResponseEnd = function (response) {\n if (this._response !== response) {\n return;\n }\n this._parseResponse();\n this._request = null;\n this._response = null;\n this._setReadyState(XMLHttpRequest.DONE);\n this._dispatchProgress('load');\n this._dispatchProgress('loadend');\n };\n XMLHttpRequest.prototype._onHttpResponseClose = function (response) {\n if (this._response !== response) {\n return;\n }\n var request = this._request;\n this._setError();\n request.abort();\n this._setReadyState(XMLHttpRequest.DONE);\n this._dispatchProgress('error');\n this._dispatchProgress('loadend');\n };\n XMLHttpRequest.prototype._onHttpTimeout = function (request) {\n if (this._request !== request) {\n return;\n }\n this._setError();\n request.abort();\n this._setReadyState(XMLHttpRequest.DONE);\n this._dispatchProgress('timeout');\n this._dispatchProgress('loadend');\n };\n XMLHttpRequest.prototype._onHttpRequestError = function (request, error) {\n if (this._request !== request) {\n return;\n }\n this._setError();\n request.abort();\n this._setReadyState(XMLHttpRequest.DONE);\n this._dispatchProgress('error');\n this._dispatchProgress('loadend');\n };\n XMLHttpRequest.prototype._dispatchProgress = function (eventType) {\n var event = new XMLHttpRequest.ProgressEvent(eventType);\n event.lengthComputable = this._lengthComputable;\n event.loaded = this._loadedBytes;\n event.total = this._totalBytes;\n this.dispatchEvent(event);\n };\n XMLHttpRequest.prototype._setError = function () {\n this._request = null;\n this._response = null;\n this._responseHeaders = null;\n this._responseParts = null;\n };\n XMLHttpRequest.prototype._parseUrl = function (urlString, user, password) {\n var absoluteUrl = this.nodejsBaseUrl == null ? urlString : url.resolve(this.nodejsBaseUrl, urlString);\n var xhrUrl = url.parse(absoluteUrl, false, true);\n xhrUrl.hash = null;\n var _a = (xhrUrl.auth || '').split(':'), xhrUser = _a[0], xhrPassword = _a[1];\n if (xhrUser || xhrPassword || user || password) {\n xhrUrl.auth = (user || xhrUser || '') + \":\" + (password || xhrPassword || '');\n }\n return xhrUrl;\n };\n XMLHttpRequest.prototype._parseResponseHeaders = function (response) {\n this._responseHeaders = {};\n for (var name_1 in response.headers) {\n var loweredName = name_1.toLowerCase();\n if (this._privateHeaders[loweredName]) {\n continue;\n }\n this._responseHeaders[loweredName] = response.headers[name_1];\n }\n if (this._mimeOverride != null) {\n this._responseHeaders['content-type'] = this._mimeOverride;\n }\n };\n XMLHttpRequest.prototype._parseResponse = function () {\n var buffer = Buffer.concat(this._responseParts);\n this._responseParts = null;\n switch (this.responseType) {\n case 'json':\n this.responseText = null;\n try {\n this.response = JSON.parse(buffer.toString('utf-8'));\n }\n catch (_a) {\n this.response = null;\n }\n return;\n case 'buffer':\n this.responseText = null;\n this.response = buffer;\n return;\n case 'arraybuffer':\n this.responseText = null;\n var arrayBuffer = new ArrayBuffer(buffer.length);\n var view = new Uint8Array(arrayBuffer);\n for (var i = 0; i < buffer.length; i++) {\n view[i] = buffer[i];\n }\n this.response = arrayBuffer;\n return;\n case 'text':\n default:\n try {\n this.responseText = buffer.toString(this._parseResponseEncoding());\n }\n catch (_b) {\n this.responseText = buffer.toString('binary');\n }\n this.response = this.responseText;\n }\n };\n XMLHttpRequest.prototype._parseResponseEncoding = function () {\n return /;\\s*charset=(.*)$/.exec(this._responseHeaders['content-type'] || '')[1] || 'utf-8';\n };\n XMLHttpRequest.ProgressEvent = progress_event_1.ProgressEvent;\n XMLHttpRequest.InvalidStateError = errors_1.InvalidStateError;\n XMLHttpRequest.NetworkError = errors_1.NetworkError;\n XMLHttpRequest.SecurityError = errors_1.SecurityError;\n XMLHttpRequest.SyntaxError = errors_1.SyntaxError;\n XMLHttpRequest.XMLHttpRequestUpload = xml_http_request_upload_1.XMLHttpRequestUpload;\n XMLHttpRequest.UNSENT = 0;\n XMLHttpRequest.OPENED = 1;\n XMLHttpRequest.HEADERS_RECEIVED = 2;\n XMLHttpRequest.LOADING = 3;\n XMLHttpRequest.DONE = 4;\n XMLHttpRequest.cookieJar = Cookie.CookieJar();\n return XMLHttpRequest;\n}(xml_http_request_event_target_1.XMLHttpRequestEventTarget));\nexports.XMLHttpRequest = XMLHttpRequest;\nXMLHttpRequest.prototype.nodejsHttpAgent = http.globalAgent;\nXMLHttpRequest.prototype.nodejsHttpsAgent = https.globalAgent;\nXMLHttpRequest.prototype.nodejsBaseUrl = null;\n//# sourceMappingURL=xml-http-request.js.map","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\nvar toArrayBuffer = require('to-arraybuffer')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else if (capability.vbArray && preferBinary) {\n\t\treturn 'text:vbarray'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n\t\tif (capability.arraybuffer) {\n\t\t\tbody = toArrayBuffer(Buffer.concat(self._body))\n\t\t} else if (capability.blobConstructor) {\n\t\t\tbody = new global.Blob(self._body.map(function (buffer) {\n\t\t\t\treturn toArrayBuffer(buffer)\n\t\t\t}), {\n\t\t\t\ttype: (headersObj['content-type'] || {}).value || ''\n\t\t\t})\n\t\t} else {\n\t\t\t// get utf8 string\n\t\t\tbody = Buffer.concat(self._body).toString()\n\t\t}\n\t}\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tvar fetchTimer = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tglobal.clearTimeout(self._fetchTimer)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode.split(':')[0]\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress()\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._fetchTimer)\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () {\n\tvar self = this\n\tself._destroyed = true\n\tglobal.clearTimeout(self._fetchTimer)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setTimeout = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","var Buffer = require('buffer').Buffer\n\nmodule.exports = function (buf) {\n\t// If the buffer is backed by a Uint8Array, a faster version will work\n\tif (buf instanceof Uint8Array) {\n\t\t// If the buffer isn't a subarray, return the underlying ArrayBuffer\n\t\tif (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {\n\t\t\treturn buf.buffer\n\t\t} else if (typeof buf.buffer.slice === 'function') {\n\t\t\t// Otherwise we need to get a proper copy\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)\n\t\t}\n\t}\n\n\tif (Buffer.isBuffer(buf)) {\n\t\t// This is the slow version that will work with any Buffer\n\t\t// implementation (even in old browsers)\n\t\tvar arrayCopy = new Uint8Array(buf.length)\n\t\tvar len = buf.length\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tarrayCopy[i] = buf[i]\n\t\t}\n\t\treturn arrayCopy.buffer\n\t} else {\n\t\tthrow new Error('Argument must be a Buffer')\n\t}\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\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// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\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 stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","exports.endianness = function () { return 'LE' };\n\nexports.hostname = function () {\n if (typeof location !== 'undefined') {\n return location.hostname\n }\n else return '';\n};\n\nexports.loadavg = function () { return [] };\n\nexports.uptime = function () { return 0 };\n\nexports.freemem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.totalmem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.cpus = function () { return [] };\n\nexports.type = function () { return 'Browser' };\n\nexports.release = function () {\n if (typeof navigator !== 'undefined') {\n return navigator.appVersion;\n }\n return '';\n};\n\nexports.networkInterfaces\n= exports.getNetworkInterfaces\n= function () { return {} };\n\nexports.arch = function () { return 'javascript' };\n\nexports.platform = function () { return 'browser' };\n\nexports.tmpdir = exports.tmpDir = function () {\n return '/tmp';\n};\n\nexports.EOL = '\\n';\n\nexports.homedir = function () {\n\treturn '/'\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ProgressEvent = /** @class */ (function () {\n function ProgressEvent(type) {\n this.type = type;\n this.bubbles = false;\n this.cancelable = false;\n this.loaded = 0;\n this.lengthComputable = false;\n this.total = 0;\n }\n return ProgressEvent;\n}());\nexports.ProgressEvent = ProgressEvent;\n//# sourceMappingURL=progress-event.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var 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 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 SecurityError = /** @class */ (function (_super) {\n __extends(SecurityError, _super);\n function SecurityError() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return SecurityError;\n}(Error));\nexports.SecurityError = SecurityError;\nvar InvalidStateError = /** @class */ (function (_super) {\n __extends(InvalidStateError, _super);\n function InvalidStateError() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return InvalidStateError;\n}(Error));\nexports.InvalidStateError = InvalidStateError;\nvar NetworkError = /** @class */ (function (_super) {\n __extends(NetworkError, _super);\n function NetworkError() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return NetworkError;\n}(Error));\nexports.NetworkError = NetworkError;\nvar SyntaxError = /** @class */ (function (_super) {\n __extends(SyntaxError, _super);\n function SyntaxError() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return SyntaxError;\n}(Error));\nexports.SyntaxError = SyntaxError;\n//# sourceMappingURL=errors.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var 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 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 xml_http_request_event_target_1 = require(\"./xml-http-request-event-target\");\nvar XMLHttpRequestUpload = /** @class */ (function (_super) {\n __extends(XMLHttpRequestUpload, _super);\n function XMLHttpRequestUpload() {\n var _this = _super.call(this) || this;\n _this._contentType = null;\n _this._body = null;\n _this._reset();\n return _this;\n }\n XMLHttpRequestUpload.prototype._reset = function () {\n this._contentType = null;\n this._body = null;\n };\n XMLHttpRequestUpload.prototype._setData = function (data) {\n if (data == null) {\n return;\n }\n if (typeof data === 'string') {\n if (data.length !== 0) {\n this._contentType = 'text/plain;charset=UTF-8';\n }\n this._body = new Buffer(data, 'utf-8');\n }\n else if (Buffer.isBuffer(data)) {\n this._body = data;\n }\n else if (data instanceof ArrayBuffer) {\n var body = new Buffer(data.byteLength);\n var view = new Uint8Array(data);\n for (var i = 0; i < data.byteLength; i++) {\n body[i] = view[i];\n }\n this._body = body;\n }\n else if (data.buffer && data.buffer instanceof ArrayBuffer) {\n var body = new Buffer(data.byteLength);\n var offset = data.byteOffset;\n var view = new Uint8Array(data.buffer);\n for (var i = 0; i < data.byteLength; i++) {\n body[i] = view[i + offset];\n }\n this._body = body;\n }\n else {\n throw new Error(\"Unsupported send() data \" + data);\n }\n };\n XMLHttpRequestUpload.prototype._finalizeHeaders = function (headers, loweredHeaders) {\n if (this._contentType && !loweredHeaders['content-type']) {\n headers['Content-Type'] = this._contentType;\n }\n if (this._body) {\n headers['Content-Length'] = this._body.length.toString();\n }\n };\n XMLHttpRequestUpload.prototype._startUpload = function (request) {\n if (this._body) {\n request.write(this._body);\n }\n request.end();\n };\n return XMLHttpRequestUpload;\n}(xml_http_request_event_target_1.XMLHttpRequestEventTarget));\nexports.XMLHttpRequestUpload = XMLHttpRequestUpload;\n//# sourceMappingURL=xml-http-request-upload.js.map","/* jshint node: true */\n(function () {\n \"use strict\";\n\n function CookieAccessInfo(domain, path, secure, script) {\n if (this instanceof CookieAccessInfo) {\n this.domain = domain || undefined;\n this.path = path || \"/\";\n this.secure = !!secure;\n this.script = !!script;\n return this;\n }\n return new CookieAccessInfo(domain, path, secure, script);\n }\n CookieAccessInfo.All = Object.freeze(Object.create(null));\n exports.CookieAccessInfo = CookieAccessInfo;\n\n function Cookie(cookiestr, request_domain, request_path) {\n if (cookiestr instanceof Cookie) {\n return cookiestr;\n }\n if (this instanceof Cookie) {\n this.name = null;\n this.value = null;\n this.expiration_date = Infinity;\n this.path = String(request_path || \"/\");\n this.explicit_path = false;\n this.domain = request_domain || null;\n this.explicit_domain = false;\n this.secure = false; //how to define default?\n this.noscript = false; //httponly\n if (cookiestr) {\n this.parse(cookiestr, request_domain, request_path);\n }\n return this;\n }\n return new Cookie(cookiestr, request_domain, request_path);\n }\n exports.Cookie = Cookie;\n\n Cookie.prototype.toString = function toString() {\n var str = [this.name + \"=\" + this.value];\n if (this.expiration_date !== Infinity) {\n str.push(\"expires=\" + (new Date(this.expiration_date)).toGMTString());\n }\n if (this.domain) {\n str.push(\"domain=\" + this.domain);\n }\n if (this.path) {\n str.push(\"path=\" + this.path);\n }\n if (this.secure) {\n str.push(\"secure\");\n }\n if (this.noscript) {\n str.push(\"httponly\");\n }\n return str.join(\"; \");\n };\n\n Cookie.prototype.toValueString = function toValueString() {\n return this.name + \"=\" + this.value;\n };\n\n var cookie_str_splitter = /[:](?=\\s*[a-zA-Z0-9_\\-]+\\s*[=])/g;\n Cookie.prototype.parse = function parse(str, request_domain, request_path) {\n if (this instanceof Cookie) {\n var parts = str.split(\";\").filter(function (value) {\n return !!value;\n });\n var i;\n\n var pair = parts[0].match(/([^=]+)=([\\s\\S]*)/);\n if (!pair) {\n console.warn(\"Invalid cookie header encountered. Header: '\"+str+\"'\");\n return;\n }\n\n var key = pair[1];\n var value = pair[2];\n if ( typeof key !== 'string' || key.length === 0 || typeof value !== 'string' ) {\n console.warn(\"Unable to extract values from cookie header. Cookie: '\"+str+\"'\");\n return;\n }\n\n this.name = key;\n this.value = value;\n\n for (i = 1; i < parts.length; i += 1) {\n pair = parts[i].match(/([^=]+)(?:=([\\s\\S]*))?/);\n key = pair[1].trim().toLowerCase();\n value = pair[2];\n switch (key) {\n case \"httponly\":\n this.noscript = true;\n break;\n case \"expires\":\n this.expiration_date = value ?\n Number(Date.parse(value)) :\n Infinity;\n break;\n case \"path\":\n this.path = value ?\n value.trim() :\n \"\";\n this.explicit_path = true;\n break;\n case \"domain\":\n this.domain = value ?\n value.trim() :\n \"\";\n this.explicit_domain = !!this.domain;\n break;\n case \"secure\":\n this.secure = true;\n break;\n }\n }\n\n if (!this.explicit_path) {\n this.path = request_path || \"/\";\n }\n if (!this.explicit_domain) {\n this.domain = request_domain;\n }\n\n return this;\n }\n return new Cookie().parse(str, request_domain, request_path);\n };\n\n Cookie.prototype.matches = function matches(access_info) {\n if (access_info === CookieAccessInfo.All) {\n return true;\n }\n if (this.noscript && access_info.script ||\n this.secure && !access_info.secure ||\n !this.collidesWith(access_info)) {\n return false;\n }\n return true;\n };\n\n Cookie.prototype.collidesWith = function collidesWith(access_info) {\n if ((this.path && !access_info.path) || (this.domain && !access_info.domain)) {\n return false;\n }\n if (this.path && access_info.path.indexOf(this.path) !== 0) {\n return false;\n }\n if (this.explicit_path && access_info.path.indexOf( this.path ) !== 0) {\n return false;\n }\n var access_domain = access_info.domain && access_info.domain.replace(/^[\\.]/,'');\n var cookie_domain = this.domain && this.domain.replace(/^[\\.]/,'');\n if (cookie_domain === access_domain) {\n return true;\n }\n if (cookie_domain) {\n if (!this.explicit_domain) {\n return false; // we already checked if the domains were exactly the same\n }\n var wildcard = access_domain.indexOf(cookie_domain);\n if (wildcard === -1 || wildcard !== access_domain.length - cookie_domain.length) {\n return false;\n }\n return true;\n }\n return true;\n };\n\n function CookieJar() {\n var cookies, cookies_list, collidable_cookie;\n if (this instanceof CookieJar) {\n cookies = Object.create(null); //name: [Cookie]\n\n this.setCookie = function setCookie(cookie, request_domain, request_path) {\n var remove, i;\n cookie = new Cookie(cookie, request_domain, request_path);\n //Delete the cookie if the set is past the current time\n remove = cookie.expiration_date <= Date.now();\n if (cookies[cookie.name] !== undefined) {\n cookies_list = cookies[cookie.name];\n for (i = 0; i < cookies_list.length; i += 1) {\n collidable_cookie = cookies_list[i];\n if (collidable_cookie.collidesWith(cookie)) {\n if (remove) {\n cookies_list.splice(i, 1);\n if (cookies_list.length === 0) {\n delete cookies[cookie.name];\n }\n return false;\n }\n cookies_list[i] = cookie;\n return cookie;\n }\n }\n if (remove) {\n return false;\n }\n cookies_list.push(cookie);\n return cookie;\n }\n if (remove) {\n return false;\n }\n cookies[cookie.name] = [cookie];\n return cookies[cookie.name];\n };\n //returns a cookie\n this.getCookie = function getCookie(cookie_name, access_info) {\n var cookie, i;\n cookies_list = cookies[cookie_name];\n if (!cookies_list) {\n return;\n }\n for (i = 0; i < cookies_list.length; i += 1) {\n cookie = cookies_list[i];\n if (cookie.expiration_date <= Date.now()) {\n if (cookies_list.length === 0) {\n delete cookies[cookie.name];\n }\n continue;\n }\n\n if (cookie.matches(access_info)) {\n return cookie;\n }\n }\n };\n //returns a list of cookies\n this.getCookies = function getCookies(access_info) {\n var matches = [], cookie_name, cookie;\n for (cookie_name in cookies) {\n cookie = this.getCookie(cookie_name, access_info);\n if (cookie) {\n matches.push(cookie);\n }\n }\n matches.toString = function toString() {\n return matches.join(\":\");\n };\n matches.toValueString = function toValueString() {\n return matches.map(function (c) {\n return c.toValueString();\n }).join(';');\n };\n return matches;\n };\n\n return this;\n }\n return new CookieJar();\n }\n exports.CookieJar = CookieJar;\n\n //returns list of cookies that were set correctly. Cookies that are expired and removed are not returned.\n CookieJar.prototype.setCookies = function setCookies(cookies, request_domain, request_path) {\n cookies = Array.isArray(cookies) ?\n cookies :\n cookies.split(cookie_str_splitter);\n var successful = [],\n i,\n cookie;\n cookies = cookies.map(function(item){\n return new Cookie(item, request_domain, request_path);\n });\n for (i = 0; i < cookies.length; i += 1) {\n cookie = cookies[i];\n if (this.setCookie(cookie, request_domain, request_path)) {\n successful.push(cookie);\n }\n }\n return successful;\n };\n}());\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","const b2b = require('./blake2b')\nconst b2s = require('./blake2s')\n\nmodule.exports = {\n blake2b: b2b.blake2b,\n blake2bHex: b2b.blake2bHex,\n blake2bInit: b2b.blake2bInit,\n blake2bUpdate: b2b.blake2bUpdate,\n blake2bFinal: b2b.blake2bFinal,\n blake2s: b2s.blake2s,\n blake2sHex: b2s.blake2sHex,\n blake2sInit: b2s.blake2sInit,\n blake2sUpdate: b2s.blake2sUpdate,\n blake2sFinal: b2s.blake2sFinal\n}\n","// Blake2B in pure Javascript\n// Adapted from the reference implementation in RFC7693\n// Ported to Javascript by DC - https://github.com/dcposch\n\nconst util = require('./util')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n const o0 = v[a] + v[b]\n let o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n let o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n let o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return arr[i] ^ (arr[i + 1] << 8) ^ (arr[i + 2] << 16) ^ (arr[i + 3] << 24)\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n const x0 = m[ix]\n const x1 = m[ix + 1]\n const y0 = m[iy]\n const y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n let xor0 = v[d] ^ v[a]\n let xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nconst BLAKE2B_IV32 = new Uint32Array([\n 0xf3bcc908,\n 0x6a09e667,\n 0x84caa73b,\n 0xbb67ae85,\n 0xfe94f82b,\n 0x3c6ef372,\n 0x5f1d36f1,\n 0xa54ff53a,\n 0xade682d1,\n 0x510e527f,\n 0x2b3e6c1f,\n 0x9b05688c,\n 0xfb41bd6b,\n 0x1f83d9ab,\n 0x137e2179,\n 0x5be0cd19\n])\n\nconst SIGMA8 = [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 14,\n 10,\n 4,\n 8,\n 9,\n 15,\n 13,\n 6,\n 1,\n 12,\n 0,\n 2,\n 11,\n 7,\n 5,\n 3,\n 11,\n 8,\n 12,\n 0,\n 5,\n 2,\n 15,\n 13,\n 10,\n 14,\n 3,\n 6,\n 7,\n 1,\n 9,\n 4,\n 7,\n 9,\n 3,\n 1,\n 13,\n 12,\n 11,\n 14,\n 2,\n 6,\n 5,\n 10,\n 4,\n 0,\n 15,\n 8,\n 9,\n 0,\n 5,\n 7,\n 2,\n 4,\n 10,\n 15,\n 14,\n 1,\n 11,\n 12,\n 6,\n 8,\n 3,\n 13,\n 2,\n 12,\n 6,\n 10,\n 0,\n 11,\n 8,\n 3,\n 4,\n 13,\n 7,\n 5,\n 15,\n 14,\n 1,\n 9,\n 12,\n 5,\n 1,\n 15,\n 14,\n 13,\n 4,\n 10,\n 0,\n 7,\n 6,\n 3,\n 9,\n 2,\n 8,\n 11,\n 13,\n 11,\n 7,\n 14,\n 12,\n 1,\n 3,\n 9,\n 5,\n 0,\n 15,\n 4,\n 8,\n 6,\n 2,\n 10,\n 6,\n 15,\n 14,\n 9,\n 11,\n 3,\n 0,\n 8,\n 12,\n 2,\n 13,\n 7,\n 1,\n 4,\n 10,\n 5,\n 10,\n 2,\n 8,\n 4,\n 7,\n 6,\n 1,\n 5,\n 15,\n 11,\n 9,\n 14,\n 3,\n 12,\n 13,\n 0,\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 14,\n 10,\n 4,\n 8,\n 9,\n 15,\n 13,\n 6,\n 1,\n 12,\n 0,\n 2,\n 11,\n 7,\n 5,\n 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nconst SIGMA82 = new Uint8Array(\n SIGMA8.map(function (x) {\n return x * 2\n })\n)\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nconst v = new Uint32Array(32)\nconst m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n let i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n // uncomment the DebugPrint calls to log the computation\n // and match the RFC sample documentation\n // util.debugPrint(' m[16]', m, 64)\n for (i = 0; i < 12; i++) {\n // util.debugPrint(' (i=' + (i < 10 ? ' ' : '') + i + ') v[16]', v, 64)\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n // util.debugPrint(' (i=12) v[16]', v, 64)\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n // util.debugPrint('h[8]', ctx.h, 64)\n}\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\nfunction blake2bInit (outlen, key) {\n if (outlen === 0 || outlen > 64) {\n throw new Error('Illegal output length, expected 0 < length <= 64')\n }\n if (key && key.length > 64) {\n throw new Error('Illegal key, expected Uint8Array with 0 < length <= 64')\n }\n\n // state, 'param block'\n const ctx = {\n b: new Uint8Array(128),\n h: new Uint32Array(16),\n t: 0, // input count\n c: 0, // pointer within buffer\n outlen: outlen // output length in bytes\n }\n\n // initialize hash state\n for (let i = 0; i < 16; i++) {\n ctx.h[i] = BLAKE2B_IV32[i]\n }\n const keylen = key ? key.length : 0\n ctx.h[0] ^= 0x01010000 ^ (keylen << 8) ^ outlen\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(ctx, key)\n // at the end\n ctx.c = 128\n }\n\n return ctx\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (let i = 0; i < input.length; i++) {\n if (ctx.c === 128) {\n // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) {\n // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n // little endian convert and store\n const out = new Uint8Array(ctx.outlen)\n for (let i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\n// Computes the BLAKE2B hash of a string or byte array, and returns a Uint8Array\n//\n// Returns a n-byte Uint8Array\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer or Uint8Array\n// - key - optional key Uint8Array, up to 64 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2b (input, key, outlen) {\n // preprocess inputs\n outlen = outlen || 64\n input = util.normalizeInput(input)\n\n // do the math\n const ctx = blake2bInit(outlen, key)\n blake2bUpdate(ctx, input)\n return blake2bFinal(ctx)\n}\n\n// Computes the BLAKE2B hash of a string or byte array\n//\n// Returns an n-byte hash in hex, all lowercase\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 64 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2bHex (input, key, outlen) {\n const output = blake2b(input, key, outlen)\n return util.toHex(output)\n}\n\nmodule.exports = {\n blake2b: blake2b,\n blake2bHex: blake2bHex,\n blake2bInit: blake2bInit,\n blake2bUpdate: blake2bUpdate,\n blake2bFinal: blake2bFinal\n}\n","// BLAKE2s hash function in pure Javascript\n// Adapted from the reference implementation in RFC7693\n// Ported to Javascript by DC - https://github.com/dcposch\n\nconst util = require('./util')\n\n// Little-endian byte access.\n// Expects a Uint8Array and an index\n// Returns the little-endian uint32 at v[i..i+3]\nfunction B2S_GET32 (v, i) {\n return v[i] ^ (v[i + 1] << 8) ^ (v[i + 2] << 16) ^ (v[i + 3] << 24)\n}\n\n// Mixing function G.\nfunction B2S_G (a, b, c, d, x, y) {\n v[a] = v[a] + v[b] + x\n v[d] = ROTR32(v[d] ^ v[a], 16)\n v[c] = v[c] + v[d]\n v[b] = ROTR32(v[b] ^ v[c], 12)\n v[a] = v[a] + v[b] + y\n v[d] = ROTR32(v[d] ^ v[a], 8)\n v[c] = v[c] + v[d]\n v[b] = ROTR32(v[b] ^ v[c], 7)\n}\n\n// 32-bit right rotation\n// x should be a uint32\n// y must be between 1 and 31, inclusive\nfunction ROTR32 (x, y) {\n return (x >>> y) ^ (x << (32 - y))\n}\n\n// Initialization Vector.\nconst BLAKE2S_IV = new Uint32Array([\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n])\n\nconst SIGMA = new Uint8Array([\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 14,\n 10,\n 4,\n 8,\n 9,\n 15,\n 13,\n 6,\n 1,\n 12,\n 0,\n 2,\n 11,\n 7,\n 5,\n 3,\n 11,\n 8,\n 12,\n 0,\n 5,\n 2,\n 15,\n 13,\n 10,\n 14,\n 3,\n 6,\n 7,\n 1,\n 9,\n 4,\n 7,\n 9,\n 3,\n 1,\n 13,\n 12,\n 11,\n 14,\n 2,\n 6,\n 5,\n 10,\n 4,\n 0,\n 15,\n 8,\n 9,\n 0,\n 5,\n 7,\n 2,\n 4,\n 10,\n 15,\n 14,\n 1,\n 11,\n 12,\n 6,\n 8,\n 3,\n 13,\n 2,\n 12,\n 6,\n 10,\n 0,\n 11,\n 8,\n 3,\n 4,\n 13,\n 7,\n 5,\n 15,\n 14,\n 1,\n 9,\n 12,\n 5,\n 1,\n 15,\n 14,\n 13,\n 4,\n 10,\n 0,\n 7,\n 6,\n 3,\n 9,\n 2,\n 8,\n 11,\n 13,\n 11,\n 7,\n 14,\n 12,\n 1,\n 3,\n 9,\n 5,\n 0,\n 15,\n 4,\n 8,\n 6,\n 2,\n 10,\n 6,\n 15,\n 14,\n 9,\n 11,\n 3,\n 0,\n 8,\n 12,\n 2,\n 13,\n 7,\n 1,\n 4,\n 10,\n 5,\n 10,\n 2,\n 8,\n 4,\n 7,\n 6,\n 1,\n 5,\n 15,\n 11,\n 9,\n 14,\n 3,\n 12,\n 13,\n 0\n])\n\n// Compression function. \"last\" flag indicates last block\nconst v = new Uint32Array(16)\nconst m = new Uint32Array(16)\nfunction blake2sCompress (ctx, last) {\n let i = 0\n for (i = 0; i < 8; i++) {\n // init work variables\n v[i] = ctx.h[i]\n v[i + 8] = BLAKE2S_IV[i]\n }\n\n v[12] ^= ctx.t // low 32 bits of offset\n v[13] ^= ctx.t / 0x100000000 // high 32 bits\n if (last) {\n // last block flag set ?\n v[14] = ~v[14]\n }\n\n for (i = 0; i < 16; i++) {\n // get little-endian words\n m[i] = B2S_GET32(ctx.b, 4 * i)\n }\n\n // ten rounds of mixing\n // uncomment the DebugPrint calls to log the computation\n // and match the RFC sample documentation\n // util.debugPrint(' m[16]', m, 32)\n for (i = 0; i < 10; i++) {\n // util.debugPrint(' (i=' + i + ') v[16]', v, 32)\n B2S_G(0, 4, 8, 12, m[SIGMA[i * 16 + 0]], m[SIGMA[i * 16 + 1]])\n B2S_G(1, 5, 9, 13, m[SIGMA[i * 16 + 2]], m[SIGMA[i * 16 + 3]])\n B2S_G(2, 6, 10, 14, m[SIGMA[i * 16 + 4]], m[SIGMA[i * 16 + 5]])\n B2S_G(3, 7, 11, 15, m[SIGMA[i * 16 + 6]], m[SIGMA[i * 16 + 7]])\n B2S_G(0, 5, 10, 15, m[SIGMA[i * 16 + 8]], m[SIGMA[i * 16 + 9]])\n B2S_G(1, 6, 11, 12, m[SIGMA[i * 16 + 10]], m[SIGMA[i * 16 + 11]])\n B2S_G(2, 7, 8, 13, m[SIGMA[i * 16 + 12]], m[SIGMA[i * 16 + 13]])\n B2S_G(3, 4, 9, 14, m[SIGMA[i * 16 + 14]], m[SIGMA[i * 16 + 15]])\n }\n // util.debugPrint(' (i=10) v[16]', v, 32)\n\n for (i = 0; i < 8; i++) {\n ctx.h[i] ^= v[i] ^ v[i + 8]\n }\n // util.debugPrint('h[8]', ctx.h, 32)\n}\n\n// Creates a BLAKE2s hashing context\n// Requires an output length between 1 and 32 bytes\n// Takes an optional Uint8Array key\nfunction blake2sInit (outlen, key) {\n if (!(outlen > 0 && outlen <= 32)) {\n throw new Error('Incorrect output length, should be in [1, 32]')\n }\n const keylen = key ? key.length : 0\n if (key && !(keylen > 0 && keylen <= 32)) {\n throw new Error('Incorrect key length, should be in [1, 32]')\n }\n\n const ctx = {\n h: new Uint32Array(BLAKE2S_IV), // hash state\n b: new Uint8Array(64), // input block\n c: 0, // pointer within block\n t: 0, // input count\n outlen: outlen // output length in bytes\n }\n ctx.h[0] ^= 0x01010000 ^ (keylen << 8) ^ outlen\n\n if (keylen > 0) {\n blake2sUpdate(ctx, key)\n ctx.c = 64 // at the end\n }\n\n return ctx\n}\n\n// Updates a BLAKE2s streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2sUpdate (ctx, input) {\n for (let i = 0; i < input.length; i++) {\n if (ctx.c === 64) {\n // buffer full ?\n ctx.t += ctx.c // add counters\n blake2sCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2s streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2sFinal (ctx) {\n ctx.t += ctx.c // mark last block offset\n while (ctx.c < 64) {\n // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2sCompress(ctx, true) // final block flag = 1\n\n // little endian convert and store\n const out = new Uint8Array(ctx.outlen)\n for (let i = 0; i < ctx.outlen; i++) {\n out[i] = (ctx.h[i >> 2] >> (8 * (i & 3))) & 0xff\n }\n return out\n}\n\n// Computes the BLAKE2S hash of a string or byte array, and returns a Uint8Array\n//\n// Returns a n-byte Uint8Array\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 32 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2s (input, key, outlen) {\n // preprocess inputs\n outlen = outlen || 32\n input = util.normalizeInput(input)\n\n // do the math\n const ctx = blake2sInit(outlen, key)\n blake2sUpdate(ctx, input)\n return blake2sFinal(ctx)\n}\n\n// Computes the BLAKE2S hash of a string or byte array\n//\n// Returns an n-byte hash in hex, all lowercase\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 32 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2sHex (input, key, outlen) {\n const output = blake2s(input, key, outlen)\n return util.toHex(output)\n}\n\nmodule.exports = {\n blake2s: blake2s,\n blake2sHex: blake2sHex,\n blake2sInit: blake2sInit,\n blake2sUpdate: blake2sUpdate,\n blake2sFinal: blake2sFinal\n}\n","'use strict';\n\nmodule.exports = API;\n\nvar chromeApi = require( './google-u2f-api' );\n\n// Feature detection (yes really)\nvar isBrowser = ( typeof navigator !== 'undefined' ) && !!navigator.userAgent;\nvar isSafari = isBrowser && navigator.userAgent.match( /Safari\\// )\n\t&& !navigator.userAgent.match( /Chrome\\// );\nvar isEDGE = isBrowser && navigator.userAgent.match( /Edge\\/1[2345]/ );\n\nvar _backend = null;\nfunction getBackend( Promise )\n{\n\tif ( !_backend )\n\t\t_backend = new Promise( function( resolve, reject )\n\t\t{\n\t\t\tfunction notSupported( )\n\t\t\t{\n\t\t\t\t// Note; {native: true} means *not* using Google's hack\n\t\t\t\tresolve( { u2f: null, native: true } );\n\t\t\t}\n\n\t\t\tif ( !isBrowser )\n\t\t\t\treturn notSupported( );\n\n\t\t\tif ( isSafari )\n\t\t\t\t// Safari doesn't support U2F, and the Safari-FIDO-U2F\n\t\t\t\t// extension lacks full support (Multi-facet apps), so we\n\t\t\t\t// block it until proper support.\n\t\t\t\treturn notSupported( );\n\n\t\t\tvar hasNativeSupport =\n\t\t\t\t( typeof window.u2f !== 'undefined' ) &&\n\t\t\t\t( typeof window.u2f.sign === 'function' );\n\n\t\t\tif ( hasNativeSupport )\n\t\t\t\tresolve( { u2f: window.u2f, native: true } );\n\n\t\t\tif ( isEDGE )\n\t\t\t\t// We don't want to check for Google's extension hack on EDGE\n\t\t\t\t// as it'll cause trouble (popups, etc)\n\t\t\t\treturn notSupported( );\n\n\t\t\tif ( location.protocol === 'http:' )\n\t\t\t\t// U2F isn't supported over http, only https\n\t\t\t\treturn notSupported( );\n\n\t\t\tif ( typeof MessageChannel === 'undefined' )\n\t\t\t\t// Unsupported browser, the chrome hack would throw\n\t\t\t\treturn notSupported( );\n\n\t\t\t// Test for google extension support\n\t\t\tchromeApi.isSupported( function( ok )\n\t\t\t{\n\t\t\t\tif ( ok )\n\t\t\t\t\tresolve( { u2f: chromeApi, native: false } );\n\t\t\t\telse\n\t\t\t\t\tnotSupported( );\n\t\t\t} );\n\t\t} );\n\n\treturn _backend;\n}\n\nfunction API( Promise )\n{\n\treturn {\n\t\tisSupported : isSupported.bind( Promise ),\n\t\tensureSupport : ensureSupport.bind( Promise ),\n\t\tregister : register.bind( Promise ),\n\t\tsign : sign.bind( Promise ),\n\t\tErrorCodes : API.ErrorCodes,\n\t\tErrorNames : API.ErrorNames\n\t};\n}\n\nAPI.ErrorCodes = {\n\tCANCELLED: -1,\n\tOK: 0,\n\tOTHER_ERROR: 1,\n\tBAD_REQUEST: 2,\n\tCONFIGURATION_UNSUPPORTED: 3,\n\tDEVICE_INELIGIBLE: 4,\n\tTIMEOUT: 5\n};\nAPI.ErrorNames = {\n\t\"-1\": \"CANCELLED\",\n\t\"0\": \"OK\",\n\t\"1\": \"OTHER_ERROR\",\n\t\"2\": \"BAD_REQUEST\",\n\t\"3\": \"CONFIGURATION_UNSUPPORTED\",\n\t\"4\": \"DEVICE_INELIGIBLE\",\n\t\"5\": \"TIMEOUT\"\n};\n\nfunction makeError( msg, err )\n{\n\tvar code = err != null ? err.errorCode : 1; // Default to OTHER_ERROR\n\tvar type = API.ErrorNames[ '' + code ];\n\tvar error = new Error( msg );\n\terror.metaData = {\n\t\ttype: type,\n\t\tcode: code\n\t}\n\treturn error;\n}\n\nfunction deferPromise( Promise, promise )\n{\n\tvar ret = { };\n\tret.promise = new Promise( function( resolve, reject ) {\n\t\tret.resolve = resolve;\n\t\tret.reject = reject;\n\t\tpromise.then( resolve, reject );\n\t} );\n\t/**\n\t * Reject request promise and disconnect port if 'disconnect' flag is true\n\t * @param {string} msg\n\t * @param {boolean} disconnect\n\t */\n\tret.promise.cancel = function( msg, disconnect )\n\t{\n\t\tgetBackend( Promise )\n\t\t.then( function( backend )\n\t\t{\n\t\t\tif ( disconnect && !backend.native )\n\t\t\t\tbackend.u2f.disconnect( );\n\n\t\t\tret.reject( makeError( msg, { errorCode: -1 } ) );\n\t\t} );\n\t};\n\treturn ret;\n}\n\nfunction defer( Promise, fun )\n{\n\treturn deferPromise( Promise, new Promise( function( resolve, reject )\n\t{\n\t\ttry\n\t\t{\n\t\t\tfun && fun( resolve, reject );\n\t\t}\n\t\tcatch ( err )\n\t\t{\n\t\t\treject( err );\n\t\t}\n\t} ) );\n}\n\nfunction isSupported( )\n{\n\tvar Promise = this;\n\n\treturn getBackend( Promise )\n\t.then( function( backend )\n\t{\n\t\treturn !!backend.u2f;\n\t} );\n}\n\nfunction _ensureSupport( backend )\n{\n\tif ( !backend.u2f )\n\t{\n\t\tif ( location.protocol === 'http:' )\n\t\t\tthrow new Error( \"U2F isn't supported over http, only https\" );\n\t\tthrow new Error( \"U2F not supported\" );\n\t}\n}\n\nfunction ensureSupport( )\n{\n\tvar Promise = this;\n\n\treturn getBackend( Promise )\n\t.then( _ensureSupport );\n}\n\nfunction register( registerRequests, signRequests /* = null */, timeout )\n{\n\tvar Promise = this;\n\n\tif ( !Array.isArray( registerRequests ) )\n\t\tregisterRequests = [ registerRequests ];\n\n\tif ( typeof signRequests === 'number' && typeof timeout === 'undefined' )\n\t{\n\t\ttimeout = signRequests;\n\t\tsignRequests = null;\n\t}\n\n\tif ( !signRequests )\n\t\tsignRequests = [ ];\n\n\treturn deferPromise( Promise, getBackend( Promise )\n\t.then( function( backend )\n\t{\n\t\t_ensureSupport( backend );\n\n\t\tvar native = backend.native;\n\t\tvar u2f = backend.u2f;\n\n\t\treturn new Promise( function( resolve, reject )\n\t\t{\n\t\t\tfunction cbNative( response )\n\t\t\t{\n\t\t\t\tif ( response.errorCode )\n\t\t\t\t\treject( makeError( \"Registration failed\", response ) );\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdelete response.errorCode;\n\t\t\t\t\tresolve( response );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction cbChrome( err, response )\n\t\t\t{\n\t\t\t\tif ( err )\n\t\t\t\t\treject( err );\n\t\t\t\telse if ( response.errorCode )\n\t\t\t\t\treject( makeError( \"Registration failed\", response ) );\n\t\t\t\telse\n\t\t\t\t\tresolve( response );\n\t\t\t}\n\n\t\t\tif ( native )\n\t\t\t{\n\t\t\t\tvar appId = registerRequests[ 0 ].appId;\n\n\t\t\t\tu2f.register(\n\t\t\t\t\tappId, registerRequests, signRequests, cbNative, timeout );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tu2f.register(\n\t\t\t\t\tregisterRequests, signRequests, cbChrome, timeout );\n\t\t\t}\n\t\t} );\n\t} ) ).promise;\n}\n\nfunction sign( signRequests, timeout )\n{\n\tvar Promise = this;\n\n\tif ( !Array.isArray( signRequests ) )\n\t\tsignRequests = [ signRequests ];\n\n\treturn deferPromise( Promise, getBackend( Promise )\n\t.then( function( backend )\n\t{\n\t\t_ensureSupport( backend );\n\n\t\tvar native = backend.native;\n\t\tvar u2f = backend.u2f;\n\n\t\treturn new Promise( function( resolve, reject )\n\t\t{\n\t\t\tfunction cbNative( response )\n\t\t\t{\n\t\t\t\tif ( response.errorCode )\n\t\t\t\t\treject( makeError( \"Sign failed\", response ) );\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdelete response.errorCode;\n\t\t\t\t\tresolve( response );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction cbChrome( err, response )\n\t\t\t{\n\t\t\t\tif ( err )\n\t\t\t\t\treject( err );\n\t\t\t\telse if ( response.errorCode )\n\t\t\t\t\treject( makeError( \"Sign failed\", response ) );\n\t\t\t\telse\n\t\t\t\t\tresolve( response );\n\t\t\t}\n\n\t\t\tif ( native )\n\t\t\t{\n\t\t\t\tvar appId = signRequests[ 0 ].appId;\n\t\t\t\tvar challenge = signRequests[ 0 ].challenge;\n\n\t\t\t\tu2f.sign( appId, challenge, signRequests, cbNative, timeout );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tu2f.sign( signRequests, cbChrome, timeout );\n\t\t\t}\n\t\t} );\n\t} ) ).promise;\n}\n\nfunction makeDefault( func )\n{\n\tAPI[ func ] = function( )\n\t{\n\t\tif ( !global.Promise )\n\t\t\t// This is very unlikely to ever happen, since browsers\n\t\t\t// supporting U2F will most likely support Promises.\n\t\t\tthrow new Error( \"The platform doesn't natively support promises\" );\n\n\t\tvar args = [ ].slice.call( arguments );\n\t\treturn API( global.Promise )[ func ].apply( null, args );\n\t};\n}\n\n// Provide default functions using the built-in Promise if available.\nmakeDefault( 'isSupported' );\nmakeDefault( 'ensureSupport' );\nmakeDefault( 'register' );\nmakeDefault( 'sign' );\n","// Copyright 2014 Google Inc. All rights reserved\n//\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file or at\n// https://developers.google.com/open-source/licenses/bsd\n\n/**\n * @fileoverview The U2F api.\n */\n\n'use strict';\n\n/** Namespace for the U2F api.\n * @type {Object}\n */\nvar u2f = u2f || {};\n\nmodule.exports = u2f; // Adaptation for u2f-api package\n\n/**\n * The U2F extension id\n * @type {string}\n * @const\n */\nu2f.EXTENSION_ID = 'kmendfapggjehodndflmmgagdbamhnfd';\n\n/**\n * Message types for messsages to/from the extension\n * @const\n * @enum {string}\n */\nu2f.MessageTypes = {\n 'U2F_REGISTER_REQUEST': 'u2f_register_request',\n 'U2F_SIGN_REQUEST': 'u2f_sign_request',\n 'U2F_REGISTER_RESPONSE': 'u2f_register_response',\n 'U2F_SIGN_RESPONSE': 'u2f_sign_response'\n};\n\n/**\n * Response status codes\n * @const\n * @enum {number}\n */\nu2f.ErrorCodes = {\n 'OK': 0,\n 'OTHER_ERROR': 1,\n 'BAD_REQUEST': 2,\n 'CONFIGURATION_UNSUPPORTED': 3,\n 'DEVICE_INELIGIBLE': 4,\n 'TIMEOUT': 5\n};\n\n/**\n * A message type for registration requests\n * @typedef {{\n * type: u2f.MessageTypes,\n * signRequests: Array.<u2f.SignRequest>,\n * registerRequests: ?Array.<u2f.RegisterRequest>,\n * timeoutSeconds: ?number,\n * requestId: ?number\n * }}\n */\nu2f.Request;\n\n/**\n * A message for registration responses\n * @typedef {{\n * type: u2f.MessageTypes,\n * responseData: (u2f.Error | u2f.RegisterResponse | u2f.SignResponse),\n * requestId: ?number\n * }}\n */\nu2f.Response;\n\n/**\n * An error object for responses\n * @typedef {{\n * errorCode: u2f.ErrorCodes,\n * errorMessage: ?string\n * }}\n */\nu2f.Error;\n\n/**\n * Data object for a single sign request.\n * @typedef {{\n * version: string,\n * challenge: string,\n * keyHandle: string,\n * appId: string\n * }}\n */\nu2f.SignRequest;\n\n/**\n * Data object for a sign response.\n * @typedef {{\n * keyHandle: string,\n * signatureData: string,\n * clientData: string\n * }}\n */\nu2f.SignResponse;\n\n/**\n * Data object for a registration request.\n * @typedef {{\n * version: string,\n * challenge: string,\n * appId: string\n * }}\n */\nu2f.RegisterRequest;\n\n/**\n * Data object for a registration response.\n * @typedef {{\n * registrationData: string,\n * clientData: string\n * }}\n */\nu2f.RegisterResponse;\n\n\n// Low level MessagePort API support\n\n/**\n * Call MessagePort disconnect\n */\nu2f.disconnect = function() {\n if (u2f.port_ && u2f.port_.port_) {\n u2f.port_.port_.disconnect();\n u2f.port_ = null;\n }\n};\n\n/**\n * Sets up a MessagePort to the U2F extension using the\n * available mechanisms.\n * @param {function((MessagePort|u2f.WrappedChromeRuntimePort_))} callback\n */\nu2f.getMessagePort = function(callback) {\n if (typeof chrome != 'undefined' && chrome.runtime) {\n // The actual message here does not matter, but we need to get a reply\n // for the callback to run. Thus, send an empty signature request\n // in order to get a failure response.\n var msg = {\n type: u2f.MessageTypes.U2F_SIGN_REQUEST,\n signRequests: []\n };\n chrome.runtime.sendMessage(u2f.EXTENSION_ID, msg, function() {\n if (!chrome.runtime.lastError) {\n // We are on a whitelisted origin and can talk directly\n // with the extension.\n u2f.getChromeRuntimePort_(callback);\n } else {\n // chrome.runtime was available, but we couldn't message\n // the extension directly, use iframe\n u2f.getIframePort_(callback);\n }\n });\n } else {\n // chrome.runtime was not available at all, which is normal\n // when this origin doesn't have access to any extensions.\n u2f.getIframePort_(callback);\n }\n};\n\n/**\n * Connects directly to the extension via chrome.runtime.connect\n * @param {function(u2f.WrappedChromeRuntimePort_)} callback\n * @private\n */\nu2f.getChromeRuntimePort_ = function(callback) {\n var port = chrome.runtime.connect(u2f.EXTENSION_ID,\n {'includeTlsChannelId': true});\n setTimeout(function() {\n callback(null, new u2f.WrappedChromeRuntimePort_(port));\n }, 0);\n};\n\n/**\n * A wrapper for chrome.runtime.Port that is compatible with MessagePort.\n * @param {Port} port\n * @constructor\n * @private\n */\nu2f.WrappedChromeRuntimePort_ = function(port) {\n this.port_ = port;\n};\n\n/**\n * Posts a message on the underlying channel.\n * @param {Object} message\n */\nu2f.WrappedChromeRuntimePort_.prototype.postMessage = function(message) {\n this.port_.postMessage(message);\n};\n\n/**\n * Emulates the HTML 5 addEventListener interface. Works only for the\n * onmessage event, which is hooked up to the chrome.runtime.Port.onMessage.\n * @param {string} eventName\n * @param {function({data: Object})} handler\n */\nu2f.WrappedChromeRuntimePort_.prototype.addEventListener =\n function(eventName, handler) {\n var name = eventName.toLowerCase();\n if (name == 'message' || name == 'onmessage') {\n this.port_.onMessage.addListener(function(message) {\n // Emulate a minimal MessageEvent object\n handler({'data': message});\n });\n } else {\n console.error('WrappedChromeRuntimePort only supports onMessage');\n }\n};\n\n/**\n * Sets up an embedded trampoline iframe, sourced from the extension.\n * @param {function(MessagePort)} callback\n * @private\n */\nu2f.getIframePort_ = function(callback) {\n // Create the iframe\n var iframeOrigin = 'chrome-extension://' + u2f.EXTENSION_ID;\n var iframe = document.createElement('iframe');\n iframe.src = iframeOrigin + '/u2f-comms.html';\n iframe.setAttribute('style', 'display:none');\n document.body.appendChild(iframe);\n\n var hasCalledBack = false;\n\n var channel = new MessageChannel();\n var ready = function(message) {\n if (message.data == 'ready') {\n channel.port1.removeEventListener('message', ready);\n if (!hasCalledBack)\n {\n hasCalledBack = true;\n callback(null, channel.port1);\n }\n } else {\n console.error('First event on iframe port was not \"ready\"');\n }\n };\n channel.port1.addEventListener('message', ready);\n channel.port1.start();\n\n iframe.addEventListener('load', function() {\n // Deliver the port to the iframe and initialize\n iframe.contentWindow.postMessage('init', iframeOrigin, [channel.port2]);\n });\n\n // Give this 200ms to initialize, after that, we treat this method as failed\n setTimeout(function() {\n if (!hasCalledBack)\n {\n hasCalledBack = true;\n callback(new Error(\"IFrame extension not supported\"));\n }\n }, 200);\n};\n\n\n// High-level JS API\n\n/**\n * Default extension response timeout in seconds.\n * @const\n */\nu2f.EXTENSION_TIMEOUT_SEC = 30;\n\n/**\n * A singleton instance for a MessagePort to the extension.\n * @type {MessagePort|u2f.WrappedChromeRuntimePort_}\n * @private\n */\nu2f.port_ = null;\n\n/**\n * Callbacks waiting for a port\n * @type {Array.<function((MessagePort|u2f.WrappedChromeRuntimePort_))>}\n * @private\n */\nu2f.waitingForPort_ = [];\n\n/**\n * A counter for requestIds.\n * @type {number}\n * @private\n */\nu2f.reqCounter_ = 0;\n\n/**\n * A map from requestIds to client callbacks\n * @type {Object.<number,(function((u2f.Error|u2f.RegisterResponse))\n * |function((u2f.Error|u2f.SignResponse)))>}\n * @private\n */\nu2f.callbackMap_ = {};\n\n/**\n * Creates or retrieves the MessagePort singleton to use.\n * @param {function((MessagePort|u2f.WrappedChromeRuntimePort_))} callback\n * @private\n */\nu2f.getPortSingleton_ = function(callback) {\n if (u2f.port_) {\n callback(null, u2f.port_);\n } else {\n if (u2f.waitingForPort_.length == 0) {\n u2f.getMessagePort(function(err, port) {\n if (!err) {\n u2f.port_ = port;\n u2f.port_.addEventListener('message',\n /** @type {function(Event)} */ (u2f.responseHandler_));\n }\n\n // Careful, here be async callbacks. Maybe.\n while (u2f.waitingForPort_.length)\n u2f.waitingForPort_.shift()(err, port);\n });\n }\n u2f.waitingForPort_.push(callback);\n }\n};\n\n/**\n * Handles response messages from the extension.\n * @param {MessageEvent.<u2f.Response>} message\n * @private\n */\nu2f.responseHandler_ = function(message) {\n var response = message.data;\n var reqId = response['requestId'];\n if (!reqId || !u2f.callbackMap_[reqId]) {\n console.error('Unknown or missing requestId in response.');\n return;\n }\n var cb = u2f.callbackMap_[reqId];\n delete u2f.callbackMap_[reqId];\n cb(null, response['responseData']);\n};\n\n/**\n * Calls the callback with true or false as first and only argument\n * @param {Function} callback\n */\nu2f.isSupported = function(callback) {\n u2f.getPortSingleton_(function(err, port) {\n callback(!err);\n });\n}\n\n/**\n * Dispatches an array of sign requests to available U2F tokens.\n * @param {Array.<u2f.SignRequest>} signRequests\n * @param {function((u2f.Error|u2f.SignResponse))} callback\n * @param {number=} opt_timeoutSeconds\n */\nu2f.sign = function(signRequests, callback, opt_timeoutSeconds) {\n u2f.getPortSingleton_(function(err, port) {\n if (err)\n return callback(err);\n\n var reqId = ++u2f.reqCounter_;\n u2f.callbackMap_[reqId] = callback;\n var req = {\n type: u2f.MessageTypes.U2F_SIGN_REQUEST,\n signRequests: signRequests,\n timeoutSeconds: (typeof opt_timeoutSeconds !== 'undefined' ?\n opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC),\n requestId: reqId\n };\n port.postMessage(req);\n });\n};\n\n/**\n * Dispatches register requests to available U2F tokens. An array of sign\n * requests identifies already registered tokens.\n * @param {Array.<u2f.RegisterRequest>} registerRequests\n * @param {Array.<u2f.SignRequest>} signRequests\n * @param {function((u2f.Error|u2f.RegisterResponse))} callback\n * @param {number=} opt_timeoutSeconds\n */\nu2f.register = function(registerRequests, signRequests,\n callback, opt_timeoutSeconds) {\n u2f.getPortSingleton_(function(err, port) {\n if (err)\n return callback(err);\n\n var reqId = ++u2f.reqCounter_;\n u2f.callbackMap_[reqId] = callback;\n var req = {\n type: u2f.MessageTypes.U2F_REGISTER_REQUEST,\n signRequests: signRequests,\n registerRequests: registerRequests,\n timeoutSeconds: (typeof opt_timeoutSeconds !== 'undefined' ?\n opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC),\n requestId: reqId\n };\n port.postMessage(req);\n });\n};\n","/** @license React v17.0.1\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n"],"sourceRoot":""}